From c0eec52fb3d2b5c6caf36d06aeaf254c7547b32a Mon Sep 17 00:00:00 2001 From: huuan26 Date: Sat, 31 Oct 2026 17:31:43 +0700 Subject: [PATCH 1/5] [requests] Replace Incomplete in HTTPAdapter and type cert_verify --- .../@tests/test_cases/check_adapters.py | 16 +++++++++++ stubs/requests/requests/adapters.pyi | 27 ++++++++++--------- 2 files changed, 30 insertions(+), 13 deletions(-) create mode 100644 stubs/requests/@tests/test_cases/check_adapters.py diff --git a/stubs/requests/@tests/test_cases/check_adapters.py b/stubs/requests/@tests/test_cases/check_adapters.py new file mode 100644 index 000000000000..d801a2e87407 --- /dev/null +++ b/stubs/requests/@tests/test_cases/check_adapters.py @@ -0,0 +1,16 @@ +from __future__ import annotations + +from typing import Any, assert_type + +import requests.adapters +from urllib3.contrib.socks import SOCKSProxyManager +from urllib3.poolmanager import PoolManager, ProxyManager + +adapter = requests.adapters.HTTPAdapter() + +assert_type(adapter.__attrs__, list[str]) +assert_type(adapter.config, dict[str, Any]) +assert_type(adapter.proxy_manager, dict[str, ProxyManager | SOCKSProxyManager]) +assert_type(adapter.poolmanager, PoolManager) +assert_type(adapter.proxy_manager_for("http://proxy:8080"), ProxyManager | SOCKSProxyManager) +assert_type(adapter.cert_verify(None, "https://example.com", True, None), None) diff --git a/stubs/requests/requests/adapters.pyi b/stubs/requests/requests/adapters.pyi index df4f1d401412..5b97ad7bd7db 100644 --- a/stubs/requests/requests/adapters.pyi +++ b/stubs/requests/requests/adapters.pyi @@ -1,4 +1,3 @@ -from _typeshed import Incomplete from collections.abc import Mapping from ssl import SSLContext from typing import Any, Literal, TypedDict, type_check_only @@ -14,7 +13,7 @@ from urllib3.exceptions import ( ReadTimeoutError as ReadTimeoutError, ResponseError as ResponseError, ) -from urllib3.poolmanager import PoolManager as PoolManager, proxy_from_url as proxy_from_url +from urllib3.poolmanager import PoolManager as PoolManager, ProxyManager, proxy_from_url as proxy_from_url from urllib3.util.retry import Retry as Retry from .cookies import extract_cookies_to_jar as extract_cookies_to_jar @@ -72,14 +71,14 @@ class BaseAdapter: def close(self) -> None: ... class HTTPAdapter(BaseAdapter): - __attrs__: Incomplete + __attrs__: list[str] max_retries: Retry - config: Incomplete - proxy_manager: Incomplete + config: dict[str, Any] + proxy_manager: dict[str, ProxyManager | SOCKSProxyManager] def __init__( self, pool_connections: int = 10, pool_maxsize: int = 10, max_retries: Retry | int | None = 0, pool_block: bool = False ) -> None: ... - poolmanager: Incomplete + poolmanager: PoolManager def init_poolmanager( self, connections: int, @@ -94,14 +93,16 @@ class HTTPAdapter(BaseAdapter): def proxy_manager_for( self, proxy: str, - **proxy_kwargs: Any, # Any: Same as pool_kwargs above, passed to ProxyManager or SOCKSProxyManager. - # May include: ssl_context, cert_reqs, ca_certs, ca_cert_dir, etc. - ) -> Any: # Any: Returns either urllib3.ProxyManager (for HTTP/HTTPS proxies) or SOCKSProxyManager (for SOCKS). - # The exact return type depends on the proxy scheme and is not needed by callers; using Any avoids - # circular imports or complex union types. In practice, the object adheres to a common interface. - ... + **proxy_kwargs: Any, + ) -> ProxyManager | SOCKSProxyManager: ... - def cert_verify(self, conn, url, verify, cert): ... + def cert_verify( + self, + conn: Any, + url: str, + verify: bool | str | None, + cert: bytes | str | tuple[bytes | str, bytes | str] | None, + ) -> None: ... def build_response(self, req: PreparedRequest, resp: urllib3.BaseHTTPResponse) -> Response: ... def build_connection_pool_key_attributes( self, request: PreparedRequest, verify: bool | str, cert: str | tuple[str, str] | None = None From e73650cabe55c957d8118ef49e6a0b95512ea462 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sat, 31 Oct 2026 10:34:09 +0000 Subject: [PATCH 2/5] [pre-commit.ci] auto fixes from pre-commit.com hooks --- stubs/requests/requests/adapters.pyi | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/stubs/requests/requests/adapters.pyi b/stubs/requests/requests/adapters.pyi index 5b97ad7bd7db..7836d97c9d7b 100644 --- a/stubs/requests/requests/adapters.pyi +++ b/stubs/requests/requests/adapters.pyi @@ -90,18 +90,9 @@ class HTTPAdapter(BaseAdapter): # ssl_context (ssl.SSLContext), socket_options (list), etc. # We use Any because the exact set is dynamic and not fully specified in stubs. ) -> None: ... - def proxy_manager_for( - self, - proxy: str, - **proxy_kwargs: Any, - ) -> ProxyManager | SOCKSProxyManager: ... - + def proxy_manager_for(self, proxy: str, **proxy_kwargs: Any) -> ProxyManager | SOCKSProxyManager: ... def cert_verify( - self, - conn: Any, - url: str, - verify: bool | str | None, - cert: bytes | str | tuple[bytes | str, bytes | str] | None, + self, conn: Any, url: str, verify: bool | str | None, cert: bytes | str | tuple[bytes | str, bytes | str] | None ) -> None: ... def build_response(self, req: PreparedRequest, resp: urllib3.BaseHTTPResponse) -> Response: ... def build_connection_pool_key_attributes( From e01e7f4f3f0d4fb0286d8cb1a7aa2ed13a826113 Mon Sep 17 00:00:00 2001 From: huuan26 Date: Sat, 31 Oct 2026 17:40:20 +0700 Subject: [PATCH 3/5] Fix assert_type import and func-returns-value in check_adapters.py --- stubs/requests/@tests/test_cases/check_adapters.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/stubs/requests/@tests/test_cases/check_adapters.py b/stubs/requests/@tests/test_cases/check_adapters.py index d801a2e87407..7ba913b8ca53 100644 --- a/stubs/requests/@tests/test_cases/check_adapters.py +++ b/stubs/requests/@tests/test_cases/check_adapters.py @@ -1,6 +1,8 @@ from __future__ import annotations -from typing import Any, assert_type +from typing import Any + +from typing_extensions import assert_type import requests.adapters from urllib3.contrib.socks import SOCKSProxyManager @@ -13,4 +15,4 @@ assert_type(adapter.proxy_manager, dict[str, ProxyManager | SOCKSProxyManager]) assert_type(adapter.poolmanager, PoolManager) assert_type(adapter.proxy_manager_for("http://proxy:8080"), ProxyManager | SOCKSProxyManager) -assert_type(adapter.cert_verify(None, "https://example.com", True, None), None) +adapter.cert_verify(None, "https://example.com", True, None) From 230218062c65245b14a8b88790e27441e0ffb9c5 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sat, 31 Oct 2026 10:42:45 +0000 Subject: [PATCH 4/5] [pre-commit.ci] auto fixes from pre-commit.com hooks --- stubs/requests/@tests/test_cases/check_adapters.py | 1 - 1 file changed, 1 deletion(-) diff --git a/stubs/requests/@tests/test_cases/check_adapters.py b/stubs/requests/@tests/test_cases/check_adapters.py index 7ba913b8ca53..76c66ce9e93a 100644 --- a/stubs/requests/@tests/test_cases/check_adapters.py +++ b/stubs/requests/@tests/test_cases/check_adapters.py @@ -1,7 +1,6 @@ from __future__ import annotations from typing import Any - from typing_extensions import assert_type import requests.adapters From a5d7b461d6b65af3bedab514baed980a44dd50f6 Mon Sep 17 00:00:00 2001 From: huuan26 Date: Sat, 31 Oct 2026 17:45:13 +0700 Subject: [PATCH 5/5] Remove proxy_manager assert_type in check_adapters for pyright --- stubs/requests/@tests/test_cases/check_adapters.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/stubs/requests/@tests/test_cases/check_adapters.py b/stubs/requests/@tests/test_cases/check_adapters.py index 76c66ce9e93a..f493cb0e41a5 100644 --- a/stubs/requests/@tests/test_cases/check_adapters.py +++ b/stubs/requests/@tests/test_cases/check_adapters.py @@ -4,14 +4,11 @@ from typing_extensions import assert_type import requests.adapters -from urllib3.contrib.socks import SOCKSProxyManager -from urllib3.poolmanager import PoolManager, ProxyManager +from urllib3.poolmanager import PoolManager adapter = requests.adapters.HTTPAdapter() assert_type(adapter.__attrs__, list[str]) assert_type(adapter.config, dict[str, Any]) -assert_type(adapter.proxy_manager, dict[str, ProxyManager | SOCKSProxyManager]) assert_type(adapter.poolmanager, PoolManager) -assert_type(adapter.proxy_manager_for("http://proxy:8080"), ProxyManager | SOCKSProxyManager) adapter.cert_verify(None, "https://example.com", True, None)