mirror of
https://github.com/davidhalter/typeshed.git
synced 2025-12-09 05:24:52 +08:00
Use generic NamedTuples to clean up urllib.parse (#9773)
This commit is contained in:
@@ -40,13 +40,10 @@ scheme_chars: str
|
||||
if sys.version_info < (3, 11):
|
||||
MAX_CACHE_SIZE: int
|
||||
|
||||
class _ResultMixinBase(Generic[AnyStr]):
|
||||
def geturl(self) -> AnyStr: ...
|
||||
|
||||
class _ResultMixinStr(_ResultMixinBase[str]):
|
||||
class _ResultMixinStr:
|
||||
def encode(self, encoding: str = "ascii", errors: str = "strict") -> _ResultMixinBytes: ...
|
||||
|
||||
class _ResultMixinBytes(_ResultMixinBase[bytes]):
|
||||
class _ResultMixinBytes:
|
||||
def decode(self, encoding: str = "ascii", errors: str = "strict") -> _ResultMixinStr: ...
|
||||
|
||||
class _NetlocResultMixinBase(Generic[AnyStr]):
|
||||
@@ -64,55 +61,44 @@ class _NetlocResultMixinBase(Generic[AnyStr]):
|
||||
class _NetlocResultMixinStr(_NetlocResultMixinBase[str], _ResultMixinStr): ...
|
||||
class _NetlocResultMixinBytes(_NetlocResultMixinBase[bytes], _ResultMixinBytes): ...
|
||||
|
||||
# Ideally this would be a generic fixed-length tuple,
|
||||
# but mypy doesn't support that yet: https://github.com/python/mypy/issues/685#issuecomment-992014179
|
||||
class _DefragResultBase(tuple[AnyStr, ...], Generic[AnyStr]):
|
||||
if sys.version_info >= (3, 10):
|
||||
__match_args__ = ("url", "fragment")
|
||||
@property
|
||||
def url(self) -> AnyStr: ...
|
||||
@property
|
||||
def fragment(self) -> AnyStr: ...
|
||||
class _DefragResultBase(NamedTuple, Generic[AnyStr]):
|
||||
url: AnyStr
|
||||
fragment: AnyStr
|
||||
|
||||
class _SplitResultBase(NamedTuple):
|
||||
scheme: str
|
||||
netloc: str
|
||||
path: str
|
||||
query: str
|
||||
fragment: str
|
||||
class _SplitResultBase(NamedTuple, Generic[AnyStr]):
|
||||
scheme: AnyStr
|
||||
netloc: AnyStr
|
||||
path: AnyStr
|
||||
query: AnyStr
|
||||
fragment: AnyStr
|
||||
|
||||
class _SplitResultBytesBase(NamedTuple):
|
||||
scheme: bytes
|
||||
netloc: bytes
|
||||
path: bytes
|
||||
query: bytes
|
||||
fragment: bytes
|
||||
|
||||
class _ParseResultBase(NamedTuple):
|
||||
scheme: str
|
||||
netloc: str
|
||||
path: str
|
||||
params: str
|
||||
query: str
|
||||
fragment: str
|
||||
|
||||
class _ParseResultBytesBase(NamedTuple):
|
||||
scheme: bytes
|
||||
netloc: bytes
|
||||
path: bytes
|
||||
params: bytes
|
||||
query: bytes
|
||||
fragment: bytes
|
||||
class _ParseResultBase(NamedTuple, Generic[AnyStr]):
|
||||
scheme: AnyStr
|
||||
netloc: AnyStr
|
||||
path: AnyStr
|
||||
params: AnyStr
|
||||
query: AnyStr
|
||||
fragment: AnyStr
|
||||
|
||||
# Structured result objects for string data
|
||||
class DefragResult(_DefragResultBase[str], _ResultMixinStr): ...
|
||||
class SplitResult(_SplitResultBase, _NetlocResultMixinStr): ...
|
||||
class ParseResult(_ParseResultBase, _NetlocResultMixinStr): ...
|
||||
class DefragResult(_DefragResultBase[str], _ResultMixinStr):
|
||||
def geturl(self) -> str: ...
|
||||
|
||||
class SplitResult(_SplitResultBase[str], _NetlocResultMixinStr):
|
||||
def geturl(self) -> str: ...
|
||||
|
||||
class ParseResult(_ParseResultBase[str], _NetlocResultMixinStr):
|
||||
def geturl(self) -> str: ...
|
||||
|
||||
# Structured result objects for bytes data
|
||||
class DefragResultBytes(_DefragResultBase[bytes], _ResultMixinBytes): ...
|
||||
class SplitResultBytes(_SplitResultBytesBase, _NetlocResultMixinBytes): ...
|
||||
class ParseResultBytes(_ParseResultBytesBase, _NetlocResultMixinBytes): ...
|
||||
class DefragResultBytes(_DefragResultBase[bytes], _ResultMixinBytes):
|
||||
def geturl(self) -> bytes: ...
|
||||
|
||||
class SplitResultBytes(_SplitResultBase[bytes], _NetlocResultMixinBytes):
|
||||
def geturl(self) -> bytes: ...
|
||||
|
||||
class ParseResultBytes(_ParseResultBase[bytes], _NetlocResultMixinBytes):
|
||||
def geturl(self) -> bytes: ...
|
||||
|
||||
def parse_qs(
|
||||
qs: AnyStr | None,
|
||||
|
||||
Reference in New Issue
Block a user