urllib.parse: improve bytes handling (#9103)

This commit is contained in:
Nikita Sobolev
2022-11-11 07:47:57 +03:00
committed by GitHub
parent ec4ec33639
commit 0baadae0c9

View File

@@ -1,6 +1,6 @@
import sys
from collections.abc import Callable, Mapping, Sequence
from typing import Any, AnyStr, Generic, NamedTuple, overload
from collections.abc import Callable, Iterable, Mapping, Sequence
from typing import Any, AnyStr, Generic, NamedTuple, TypeVar, overload
if sys.version_info >= (3, 9):
from types import GenericAlias
@@ -132,14 +132,14 @@ def parse_qsl(
separator: str = ...,
) -> list[tuple[AnyStr, AnyStr]]: ...
@overload
def quote(string: str, safe: str | bytes = ..., encoding: str | None = ..., errors: str | None = ...) -> str: ...
def quote(string: str, safe: str | Iterable[int] = ..., encoding: str | None = ..., errors: str | None = ...) -> str: ...
@overload
def quote(string: bytes, safe: str | bytes = ...) -> str: ...
def quote_from_bytes(bs: bytes, safe: str | bytes = ...) -> str: ...
def quote(string: bytes | bytearray, safe: str | Iterable[int] = ...) -> str: ...
def quote_from_bytes(bs: bytes | bytearray, safe: str | Iterable[int] = ...) -> str: ...
@overload
def quote_plus(string: str, safe: str | bytes = ..., encoding: str | None = ..., errors: str | None = ...) -> str: ...
def quote_plus(string: str, safe: str | Iterable[int] = ..., encoding: str | None = ..., errors: str | None = ...) -> str: ...
@overload
def quote_plus(string: bytes, safe: str | bytes = ...) -> str: ...
def quote_plus(string: bytes | bytearray, safe: str | Iterable[int] = ...) -> str: ...
if sys.version_info >= (3, 9):
def unquote(string: str | bytes, encoding: str = ..., errors: str = ...) -> str: ...
@@ -152,24 +152,27 @@ def unquote_plus(string: str, encoding: str = ..., errors: str = ...) -> str: ..
@overload
def urldefrag(url: str) -> DefragResult: ...
@overload
def urldefrag(url: bytes | None) -> DefragResultBytes: ...
def urldefrag(url: bytes | bytearray | None) -> DefragResultBytes: ...
_Q = TypeVar("_Q", bound=str | Iterable[int])
def urlencode(
query: Mapping[Any, Any] | Mapping[Any, Sequence[Any]] | Sequence[tuple[Any, Any]] | Sequence[tuple[Any, Sequence[Any]]],
doseq: bool = ...,
safe: str | bytes = ...,
safe: _Q = ...,
encoding: str = ...,
errors: str = ...,
quote_via: Callable[[AnyStr, str | bytes, str, str], str] = ...,
quote_via: Callable[[AnyStr, _Q, str, str], str] = ...,
) -> str: ...
def urljoin(base: AnyStr, url: AnyStr | None, allow_fragments: bool = ...) -> AnyStr: ...
@overload
def urlparse(url: str, scheme: str | None = ..., allow_fragments: bool = ...) -> ParseResult: ...
@overload
def urlparse(url: bytes | None, scheme: bytes | None = ..., allow_fragments: bool = ...) -> ParseResultBytes: ...
def urlparse(url: bytes | bytearray | None, scheme: bytes | None = ..., allow_fragments: bool = ...) -> ParseResultBytes: ...
@overload
def urlsplit(url: str, scheme: str | None = ..., allow_fragments: bool = ...) -> SplitResult: ...
@overload
def urlsplit(url: bytes | None, scheme: bytes | None = ..., allow_fragments: bool = ...) -> SplitResultBytes: ...
def urlsplit(url: bytes | bytearray | None, scheme: bytes | None = ..., allow_fragments: bool = ...) -> SplitResultBytes: ...
@overload
def urlunparse(
components: tuple[AnyStr | None, AnyStr | None, AnyStr | None, AnyStr | None, AnyStr | None, AnyStr | None]