From 359f77d4f6ea722d02c3731e9581456c6386e188 Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Tue, 23 Jul 2024 15:46:47 +0100 Subject: [PATCH] Clean up URL signature. (#3245) --- httpx/_api.py | 20 ++++++++++---------- httpx/_client.py | 49 ++++++++++++++++++++++++------------------------ httpx/_config.py | 4 ++-- httpx/_types.py | 6 ++---- httpx/_urls.py | 4 ++-- 5 files changed, 40 insertions(+), 43 deletions(-) diff --git a/httpx/_api.py b/httpx/_api.py index 3dd943b378..4e98b60694 100644 --- a/httpx/_api.py +++ b/httpx/_api.py @@ -18,9 +18,9 @@ RequestData, RequestFiles, TimeoutTypes, - URLTypes, VerifyTypes, ) +from ._urls import URL __all__ = [ "delete", @@ -37,7 +37,7 @@ def request( method: str, - url: URLTypes, + url: URL | str, *, params: QueryParamTypes | None = None, content: RequestContent | None = None, @@ -132,7 +132,7 @@ def request( @contextmanager def stream( method: str, - url: URLTypes, + url: URL | str, *, params: QueryParamTypes | None = None, content: RequestContent | None = None, @@ -185,7 +185,7 @@ def stream( def get( - url: URLTypes, + url: URL | str, *, params: QueryParamTypes | None = None, headers: HeaderTypes | None = None, @@ -225,7 +225,7 @@ def get( def options( - url: URLTypes, + url: URL | str, *, params: QueryParamTypes | None = None, headers: HeaderTypes | None = None, @@ -265,7 +265,7 @@ def options( def head( - url: URLTypes, + url: URL | str, *, params: QueryParamTypes | None = None, headers: HeaderTypes | None = None, @@ -305,7 +305,7 @@ def head( def post( - url: URLTypes, + url: URL | str, *, content: RequestContent | None = None, data: RequestData | None = None, @@ -350,7 +350,7 @@ def post( def put( - url: URLTypes, + url: URL | str, *, content: RequestContent | None = None, data: RequestData | None = None, @@ -395,7 +395,7 @@ def put( def patch( - url: URLTypes, + url: URL | str, *, content: RequestContent | None = None, data: RequestData | None = None, @@ -440,7 +440,7 @@ def patch( def delete( - url: URLTypes, + url: URL | str, *, params: QueryParamTypes | None = None, headers: HeaderTypes | None = None, diff --git a/httpx/_client.py b/httpx/_client.py index d95877e8be..26610f6e87 100644 --- a/httpx/_client.py +++ b/httpx/_client.py @@ -46,7 +46,6 @@ RequestFiles, SyncByteStream, TimeoutTypes, - URLTypes, VerifyTypes, ) from ._urls import URL, QueryParams @@ -172,7 +171,7 @@ def __init__( follow_redirects: bool = False, max_redirects: int = DEFAULT_MAX_REDIRECTS, event_hooks: None | (typing.Mapping[str, list[EventHook]]) = None, - base_url: URLTypes = "", + base_url: URL | str = "", trust_env: bool = True, default_encoding: str | typing.Callable[[bytes], str] = "utf-8", ) -> None: @@ -273,7 +272,7 @@ def base_url(self) -> URL: return self._base_url @base_url.setter - def base_url(self, url: URLTypes) -> None: + def base_url(self, url: URL | str) -> None: self._base_url = self._enforce_trailing_slash(URL(url)) @property @@ -321,7 +320,7 @@ def params(self, params: QueryParamTypes) -> None: def build_request( self, method: str, - url: URLTypes, + url: URL | str, *, content: RequestContent | None = None, data: RequestData | None = None, @@ -369,7 +368,7 @@ def build_request( extensions=extensions, ) - def _merge_url(self, url: URLTypes) -> URL: + def _merge_url(self, url: URL | str) -> URL: """ Merge a URL argument together with any 'base_url' on the client, to create the URL used for the outgoing request. @@ -645,7 +644,7 @@ def __init__( limits: Limits = DEFAULT_LIMITS, max_redirects: int = DEFAULT_MAX_REDIRECTS, event_hooks: None | (typing.Mapping[str, list[EventHook]]) = None, - base_url: URLTypes = "", + base_url: URL | str = "", transport: BaseTransport | None = None, app: typing.Callable[..., typing.Any] | None = None, trust_env: bool = True, @@ -784,7 +783,7 @@ def _transport_for_url(self, url: URL) -> BaseTransport: def request( self, method: str, - url: URLTypes, + url: URL | str, *, content: RequestContent | None = None, data: RequestData | None = None, @@ -841,7 +840,7 @@ def request( def stream( self, method: str, - url: URLTypes, + url: URL | str, *, content: RequestContent | None = None, data: RequestData | None = None, @@ -1049,7 +1048,7 @@ def _send_single_request(self, request: Request) -> Response: def get( self, - url: URLTypes, + url: URL | str, *, params: QueryParamTypes | None = None, headers: HeaderTypes | None = None, @@ -1078,7 +1077,7 @@ def get( def options( self, - url: URLTypes, + url: URL | str, *, params: QueryParamTypes | None = None, headers: HeaderTypes | None = None, @@ -1107,7 +1106,7 @@ def options( def head( self, - url: URLTypes, + url: URL | str, *, params: QueryParamTypes | None = None, headers: HeaderTypes | None = None, @@ -1136,7 +1135,7 @@ def head( def post( self, - url: URLTypes, + url: URL | str, *, content: RequestContent | None = None, data: RequestData | None = None, @@ -1173,7 +1172,7 @@ def post( def put( self, - url: URLTypes, + url: URL | str, *, content: RequestContent | None = None, data: RequestData | None = None, @@ -1210,7 +1209,7 @@ def put( def patch( self, - url: URLTypes, + url: URL | str, *, content: RequestContent | None = None, data: RequestData | None = None, @@ -1247,7 +1246,7 @@ def patch( def delete( self, - url: URLTypes, + url: URL | str, *, params: QueryParamTypes | None = None, headers: HeaderTypes | None = None, @@ -1392,7 +1391,7 @@ def __init__( limits: Limits = DEFAULT_LIMITS, max_redirects: int = DEFAULT_MAX_REDIRECTS, event_hooks: None | (typing.Mapping[str, list[EventHook]]) = None, - base_url: URLTypes = "", + base_url: URL | str = "", transport: AsyncBaseTransport | None = None, app: typing.Callable[..., typing.Any] | None = None, trust_env: bool = True, @@ -1531,7 +1530,7 @@ def _transport_for_url(self, url: URL) -> AsyncBaseTransport: async def request( self, method: str, - url: URLTypes, + url: URL | str, *, content: RequestContent | None = None, data: RequestData | None = None, @@ -1589,7 +1588,7 @@ async def request( async def stream( self, method: str, - url: URLTypes, + url: URL | str, *, content: RequestContent | None = None, data: RequestData | None = None, @@ -1797,7 +1796,7 @@ async def _send_single_request(self, request: Request) -> Response: async def get( self, - url: URLTypes, + url: URL | str, *, params: QueryParamTypes | None = None, headers: HeaderTypes | None = None, @@ -1826,7 +1825,7 @@ async def get( async def options( self, - url: URLTypes, + url: URL | str, *, params: QueryParamTypes | None = None, headers: HeaderTypes | None = None, @@ -1855,7 +1854,7 @@ async def options( async def head( self, - url: URLTypes, + url: URL | str, *, params: QueryParamTypes | None = None, headers: HeaderTypes | None = None, @@ -1884,7 +1883,7 @@ async def head( async def post( self, - url: URLTypes, + url: URL | str, *, content: RequestContent | None = None, data: RequestData | None = None, @@ -1921,7 +1920,7 @@ async def post( async def put( self, - url: URLTypes, + url: URL | str, *, content: RequestContent | None = None, data: RequestData | None = None, @@ -1958,7 +1957,7 @@ async def put( async def patch( self, - url: URLTypes, + url: URL | str, *, content: RequestContent | None = None, data: RequestData | None = None, @@ -1995,7 +1994,7 @@ async def patch( async def delete( self, - url: URLTypes, + url: URL | str, *, params: QueryParamTypes | None = None, headers: HeaderTypes | None = None, diff --git a/httpx/_config.py b/httpx/_config.py index 6662ea8067..1b12911faf 100644 --- a/httpx/_config.py +++ b/httpx/_config.py @@ -10,7 +10,7 @@ from ._compat import set_minimum_tls_version_1_2 from ._models import Headers -from ._types import CertTypes, HeaderTypes, TimeoutTypes, URLTypes, VerifyTypes +from ._types import CertTypes, HeaderTypes, TimeoutTypes, VerifyTypes from ._urls import URL from ._utils import get_ca_bundle_from_env @@ -325,7 +325,7 @@ def __repr__(self) -> str: class Proxy: def __init__( self, - url: URLTypes, + url: URL | str, *, ssl_context: ssl.SSLContext | None = None, auth: tuple[str, str] | None = None, diff --git a/httpx/_types.py b/httpx/_types.py index b7b0518c35..7d959dcb54 100644 --- a/httpx/_types.py +++ b/httpx/_types.py @@ -43,8 +43,6 @@ ], ) -URLTypes = Union["URL", str] - QueryParamTypes = Union[ "QueryParams", Mapping[str, Union[PrimitiveData, Sequence[PrimitiveData]]], @@ -78,8 +76,8 @@ Tuple[Optional[float], Optional[float], Optional[float], Optional[float]], "Timeout", ] -ProxyTypes = Union[URLTypes, "Proxy"] -ProxiesTypes = Union[ProxyTypes, Dict[URLTypes, Union[None, ProxyTypes]]] +ProxyTypes = Union["URL", str, "Proxy"] +ProxiesTypes = Union[ProxyTypes, Dict[Union["URL", str], Union[None, ProxyTypes]]] AuthTypes = Union[ Tuple[Union[str, bytes], Union[str, bytes]], diff --git a/httpx/_urls.py b/httpx/_urls.py index f9f68a9955..ec4ea6b399 100644 --- a/httpx/_urls.py +++ b/httpx/_urls.py @@ -5,7 +5,7 @@ import idna -from ._types import QueryParamTypes, RawURL, URLTypes +from ._types import QueryParamTypes, RawURL from ._urlparse import urlencode, urlparse from ._utils import primitive_value_to_str @@ -367,7 +367,7 @@ def copy_remove_param(self, key: str) -> URL: def copy_merge_params(self, params: QueryParamTypes) -> URL: return self.copy_with(params=self.params.merge(params)) - def join(self, url: URLTypes) -> URL: + def join(self, url: URL | str) -> URL: """ Return an absolute URL, using this URL as the base.