mirror of
https://github.com/davidhalter/typeshed.git
synced 2025-12-09 21:46:42 +08:00
Reverts https://github.com/python/typeshed/pull/8465 Fixes https://github.com/python/typeshed/issues/10424 Closes https://github.com/python/typeshed/pull/10425 https://github.com/python/typeshed/pull/8465 caused regressions: see https://github.com/python/typeshed/issues/10424 and https://github.com/python/mypy/issues/13800. Since it didn't fix any known problems (just some stylistic nits that we had), let's just revert the PR.
200 lines
6.9 KiB
Python
200 lines
6.9 KiB
Python
import sys
|
|
from collections.abc import Container, Iterable, Iterator
|
|
from typing import Any, Generic, SupportsInt, TypeVar, overload
|
|
from typing_extensions import Literal, Self, TypeAlias
|
|
|
|
# Undocumented length constants
|
|
IPV4LENGTH: Literal[32]
|
|
IPV6LENGTH: Literal[128]
|
|
|
|
_A = TypeVar("_A", IPv4Address, IPv6Address)
|
|
_N = TypeVar("_N", IPv4Network, IPv6Network)
|
|
|
|
_RawIPAddress: TypeAlias = int | str | bytes | IPv4Address | IPv6Address
|
|
_RawNetworkPart: TypeAlias = IPv4Network | IPv6Network | IPv4Interface | IPv6Interface
|
|
|
|
def ip_address(address: _RawIPAddress) -> IPv4Address | IPv6Address: ...
|
|
def ip_network(
|
|
address: _RawIPAddress | _RawNetworkPart | tuple[_RawIPAddress] | tuple[_RawIPAddress, int], strict: bool = True
|
|
) -> IPv4Network | IPv6Network: ...
|
|
def ip_interface(
|
|
address: _RawIPAddress | _RawNetworkPart | tuple[_RawIPAddress] | tuple[_RawIPAddress, int]
|
|
) -> IPv4Interface | IPv6Interface: ...
|
|
|
|
class _IPAddressBase:
|
|
@property
|
|
def compressed(self) -> str: ...
|
|
@property
|
|
def exploded(self) -> str: ...
|
|
@property
|
|
def reverse_pointer(self) -> str: ...
|
|
@property
|
|
def version(self) -> int: ...
|
|
|
|
class _BaseAddress(_IPAddressBase, SupportsInt):
|
|
def __init__(self, address: object) -> None: ...
|
|
def __add__(self, other: int) -> Self: ...
|
|
def __hash__(self) -> int: ...
|
|
def __int__(self) -> int: ...
|
|
def __sub__(self, other: int) -> Self: ...
|
|
if sys.version_info >= (3, 9):
|
|
def __format__(self, fmt: str) -> str: ...
|
|
|
|
def __eq__(self, other: object) -> bool: ...
|
|
def __lt__(self, other: Self) -> bool: ...
|
|
if sys.version_info >= (3, 11):
|
|
def __ge__(self, other: Self) -> bool: ...
|
|
def __gt__(self, other: Self) -> bool: ...
|
|
def __le__(self, other: Self) -> bool: ...
|
|
else:
|
|
def __ge__(self, other: Self, NotImplemented: Any = ...) -> bool: ...
|
|
def __gt__(self, other: Self, NotImplemented: Any = ...) -> bool: ...
|
|
def __le__(self, other: Self, NotImplemented: Any = ...) -> bool: ...
|
|
|
|
@property
|
|
def is_global(self) -> bool: ...
|
|
@property
|
|
def is_link_local(self) -> bool: ...
|
|
@property
|
|
def is_loopback(self) -> bool: ...
|
|
@property
|
|
def is_multicast(self) -> bool: ...
|
|
@property
|
|
def is_private(self) -> bool: ...
|
|
@property
|
|
def is_reserved(self) -> bool: ...
|
|
@property
|
|
def is_unspecified(self) -> bool: ...
|
|
@property
|
|
def max_prefixlen(self) -> int: ...
|
|
@property
|
|
def packed(self) -> bytes: ...
|
|
|
|
class _BaseNetwork(_IPAddressBase, Container[_A], Iterable[_A], Generic[_A]):
|
|
network_address: _A
|
|
netmask: _A
|
|
def __init__(self, address: object, strict: bool = ...) -> None: ...
|
|
def __contains__(self, other: Any) -> bool: ...
|
|
def __getitem__(self, n: int) -> _A: ...
|
|
def __iter__(self) -> Iterator[_A]: ...
|
|
def __eq__(self, other: object) -> bool: ...
|
|
def __lt__(self, other: Self) -> bool: ...
|
|
if sys.version_info >= (3, 11):
|
|
def __ge__(self, other: Self) -> bool: ...
|
|
def __gt__(self, other: Self) -> bool: ...
|
|
def __le__(self, other: Self) -> bool: ...
|
|
else:
|
|
def __ge__(self, other: Self, NotImplemented: Any = ...) -> bool: ...
|
|
def __gt__(self, other: Self, NotImplemented: Any = ...) -> bool: ...
|
|
def __le__(self, other: Self, NotImplemented: Any = ...) -> bool: ...
|
|
|
|
def address_exclude(self, other: Self) -> Iterator[Self]: ...
|
|
@property
|
|
def broadcast_address(self) -> _A: ...
|
|
def compare_networks(self, other: Self) -> int: ...
|
|
def hosts(self) -> Iterator[_A]: ...
|
|
@property
|
|
def is_global(self) -> bool: ...
|
|
@property
|
|
def is_link_local(self) -> bool: ...
|
|
@property
|
|
def is_loopback(self) -> bool: ...
|
|
@property
|
|
def is_multicast(self) -> bool: ...
|
|
@property
|
|
def is_private(self) -> bool: ...
|
|
@property
|
|
def is_reserved(self) -> bool: ...
|
|
@property
|
|
def is_unspecified(self) -> bool: ...
|
|
@property
|
|
def max_prefixlen(self) -> int: ...
|
|
@property
|
|
def num_addresses(self) -> int: ...
|
|
def overlaps(self, other: _BaseNetwork[IPv4Address] | _BaseNetwork[IPv6Address]) -> bool: ...
|
|
@property
|
|
def prefixlen(self) -> int: ...
|
|
def subnet_of(self, other: Self) -> bool: ...
|
|
def supernet_of(self, other: Self) -> bool: ...
|
|
def subnets(self, prefixlen_diff: int = 1, new_prefix: int | None = None) -> Iterator[Self]: ...
|
|
def supernet(self, prefixlen_diff: int = 1, new_prefix: int | None = None) -> Self: ...
|
|
@property
|
|
def with_hostmask(self) -> str: ...
|
|
@property
|
|
def with_netmask(self) -> str: ...
|
|
@property
|
|
def with_prefixlen(self) -> str: ...
|
|
@property
|
|
def hostmask(self) -> _A: ...
|
|
|
|
class _BaseInterface(_BaseAddress, Generic[_A, _N]):
|
|
hostmask: _A
|
|
netmask: _A
|
|
network: _N
|
|
@property
|
|
def ip(self) -> _A: ...
|
|
@property
|
|
def with_hostmask(self) -> str: ...
|
|
@property
|
|
def with_netmask(self) -> str: ...
|
|
@property
|
|
def with_prefixlen(self) -> str: ...
|
|
|
|
class _BaseV4:
|
|
@property
|
|
def version(self) -> Literal[4]: ...
|
|
@property
|
|
def max_prefixlen(self) -> Literal[32]: ...
|
|
|
|
class IPv4Address(_BaseV4, _BaseAddress): ...
|
|
class IPv4Network(_BaseV4, _BaseNetwork[IPv4Address]): ...
|
|
class IPv4Interface(IPv4Address, _BaseInterface[IPv4Address, IPv4Network]): ...
|
|
|
|
class _BaseV6:
|
|
@property
|
|
def version(self) -> Literal[6]: ...
|
|
@property
|
|
def max_prefixlen(self) -> Literal[128]: ...
|
|
|
|
class IPv6Address(_BaseV6, _BaseAddress):
|
|
@property
|
|
def ipv4_mapped(self) -> IPv4Address | None: ...
|
|
@property
|
|
def is_site_local(self) -> bool: ...
|
|
@property
|
|
def sixtofour(self) -> IPv4Address | None: ...
|
|
@property
|
|
def teredo(self) -> tuple[IPv4Address, IPv4Address] | None: ...
|
|
if sys.version_info >= (3, 9):
|
|
@property
|
|
def scope_id(self) -> str | None: ...
|
|
|
|
class IPv6Network(_BaseV6, _BaseNetwork[IPv6Address]):
|
|
@property
|
|
def is_site_local(self) -> bool: ...
|
|
|
|
class IPv6Interface(IPv6Address, _BaseInterface[IPv6Address, IPv6Network]): ...
|
|
|
|
def v4_int_to_packed(address: int) -> bytes: ...
|
|
def v6_int_to_packed(address: int) -> bytes: ...
|
|
|
|
# Third overload is technically incorrect, but convenient when first and last are return values of ip_address()
|
|
@overload
|
|
def summarize_address_range(first: IPv4Address, last: IPv4Address) -> Iterator[IPv4Network]: ...
|
|
@overload
|
|
def summarize_address_range(first: IPv6Address, last: IPv6Address) -> Iterator[IPv6Network]: ...
|
|
@overload
|
|
def summarize_address_range(
|
|
first: IPv4Address | IPv6Address, last: IPv4Address | IPv6Address
|
|
) -> Iterator[IPv4Network] | Iterator[IPv6Network]: ...
|
|
def collapse_addresses(addresses: Iterable[_N]) -> Iterator[_N]: ...
|
|
@overload
|
|
def get_mixed_type_key(obj: _A) -> tuple[int, _A]: ...
|
|
@overload
|
|
def get_mixed_type_key(obj: IPv4Network) -> tuple[int, IPv4Address, IPv4Address]: ...
|
|
@overload
|
|
def get_mixed_type_key(obj: IPv6Network) -> tuple[int, IPv6Address, IPv6Address]: ...
|
|
|
|
class AddressValueError(ValueError): ...
|
|
class NetmaskValueError(ValueError): ...
|