From 17af04701211874e46b14636893054ca748bb451 Mon Sep 17 00:00:00 2001 From: Sam Bull Date: Thu, 25 Apr 2024 23:14:13 +0100 Subject: [PATCH] Drop old Mypy ignores (#8365) (#8383) (cherry picked from commit d26f16ce02be6b20bcd1087416878cb878d6fbc4) --- .mypy.ini | 9 ------- aiohttp/abc.py | 2 +- aiohttp/connector.py | 2 +- aiohttp/resolver.py | 9 +++---- examples/fake_server.py | 4 +-- requirements/lint.in | 2 ++ requirements/lint.txt | 48 ++++++++++++++++++++++++++++++++- tests/autobahn/test_autobahn.py | 3 ++- tests/test_resolver.py | 9 +------ 9 files changed, 60 insertions(+), 28 deletions(-) diff --git a/.mypy.ini b/.mypy.ini index 86b5c86f34..f1e6c5361b 100644 --- a/.mypy.ini +++ b/.mypy.ini @@ -26,12 +26,6 @@ warn_return_any = True disallow_untyped_calls = False disallow_untyped_defs = False -[mypy-aiodns] -ignore_missing_imports = True - -[mypy-asynctest] -ignore_missing_imports = True - [mypy-brotli] ignore_missing_imports = True @@ -40,6 +34,3 @@ ignore_missing_imports = True [mypy-gunicorn.*] ignore_missing_imports = True - -[mypy-python_on_whales] -ignore_missing_imports = True diff --git a/aiohttp/abc.py b/aiohttp/abc.py index b6c0514a61..d9e7725eab 100644 --- a/aiohttp/abc.py +++ b/aiohttp/abc.py @@ -148,7 +148,7 @@ class AbstractResolver(ABC): @abstractmethod async def resolve( - self, host: str, port: int = 0, family: int = socket.AF_INET + self, host: str, port: int = 0, family: socket.AddressFamily = socket.AF_INET ) -> List[ResolveResult]: """Return IP address for given hostname""" diff --git a/aiohttp/connector.py b/aiohttp/connector.py index 6e84aa45bb..8dac891383 100644 --- a/aiohttp/connector.py +++ b/aiohttp/connector.py @@ -766,7 +766,7 @@ def __init__( fingerprint: Optional[bytes] = None, use_dns_cache: bool = True, ttl_dns_cache: Optional[int] = 10, - family: int = 0, + family: socket.AddressFamily = socket.AddressFamily.AF_UNSPEC, ssl_context: Optional[SSLContext] = None, ssl: Union[bool, Fingerprint, SSLContext] = True, local_addr: Optional[Tuple[str, int]] = None, diff --git a/aiohttp/resolver.py b/aiohttp/resolver.py index ad502c5e5c..2ac204a4e3 100644 --- a/aiohttp/resolver.py +++ b/aiohttp/resolver.py @@ -13,7 +13,7 @@ # aiodns_default = hasattr(aiodns.DNSResolver, 'getaddrinfo') except ImportError: # pragma: no cover - aiodns = None + aiodns = None # type: ignore[assignment] aiodns_default = False @@ -33,7 +33,7 @@ def __init__(self, loop: Optional[asyncio.AbstractEventLoop] = None) -> None: self._loop = get_running_loop(loop) async def resolve( - self, host: str, port: int = 0, family: int = socket.AF_INET + self, host: str, port: int = 0, family: socket.AddressFamily = socket.AF_INET ) -> List[ResolveResult]: infos = await self._loop.getaddrinfo( host, @@ -92,15 +92,14 @@ def __init__( if aiodns is None: raise RuntimeError("Resolver requires aiodns library") - self._loop = get_running_loop(loop) - self._resolver = aiodns.DNSResolver(*args, loop=loop, **kwargs) + self._resolver = aiodns.DNSResolver(*args, **kwargs) if not hasattr(self._resolver, "gethostbyname"): # aiodns 1.1 is not available, fallback to DNSResolver.query self.resolve = self._resolve_with_query # type: ignore async def resolve( - self, host: str, port: int = 0, family: int = socket.AF_INET + self, host: str, port: int = 0, family: socket.AddressFamily = socket.AF_INET ) -> List[ResolveResult]: try: resp = await self._resolver.getaddrinfo( diff --git a/examples/fake_server.py b/examples/fake_server.py index 4f796d4238..2cfe3ed710 100755 --- a/examples/fake_server.py +++ b/examples/fake_server.py @@ -3,7 +3,7 @@ import pathlib import socket import ssl -from typing import List, Union +from typing import List import aiohttp from aiohttp import web @@ -24,7 +24,7 @@ async def resolve( self, host: str, port: int = 0, - family: Union[socket.AddressFamily, int] = socket.AF_INET, + family: socket.AddressFamily = socket.AF_INET, ) -> List[ResolveResult]: fake_port = self._fakes.get(host) if fake_port is not None: diff --git a/requirements/lint.in b/requirements/lint.in index f1f16a99aa..98910e21f0 100644 --- a/requirements/lint.in +++ b/requirements/lint.in @@ -1,6 +1,8 @@ +aiodns aioredis mypy; implementation_name == "cpython" pre-commit pytest +python-on-whales slotscheck uvloop; platform_system != "Windows" diff --git a/requirements/lint.txt b/requirements/lint.txt index cc097f74df..8867d523df 100644 --- a/requirements/lint.txt +++ b/requirements/lint.txt @@ -4,14 +4,26 @@ # # pip-compile --allow-unsafe --output-file=requirements/lint.txt --resolver=backtracking --strip-extras requirements/lint.in # +aiodns==3.2.0 + # via -r requirements/lint.in aioredis==2.0.1 # via -r requirements/lint.in +annotated-types==0.6.0 + # via pydantic async-timeout==4.0.3 # via aioredis +certifi==2024.2.2 + # via requests +cffi==1.16.0 + # via pycares cfgv==3.3.1 # via pre-commit +charset-normalizer==3.3.2 + # via requests click==8.1.6 - # via slotscheck + # via + # slotscheck + # typer distlib==0.3.7 # via virtualenv exceptiongroup==1.1.2 @@ -20,8 +32,14 @@ filelock==3.12.2 # via virtualenv identify==2.5.26 # via pre-commit +idna==3.7 + # via requests iniconfig==2.0.0 # via pytest +markdown-it-py==3.0.0 + # via rich +mdurl==0.1.2 + # via markdown-it-py mypy==1.10.0 ; implementation_name == "cpython" # via -r requirements/lint.in mypy-extensions==1.0.0 @@ -36,10 +54,28 @@ pluggy==1.4.0 # via pytest pre-commit==3.5.0 # via -r requirements/lint.in +pycares==4.4.0 + # via aiodns +pycparser==2.22 + # via cffi +pydantic==2.7.1 + # via python-on-whales +pydantic-core==2.18.2 + # via pydantic +pygments==2.17.2 + # via rich pytest==8.1.1 # via -r requirements/lint.in +python-on-whales==0.70.1 + # via -r requirements/lint.in pyyaml==6.0.1 # via pre-commit +requests==2.31.0 + # via python-on-whales +rich==13.7.1 + # via typer +shellingham==1.5.4 + # via typer slotscheck==0.19.0 # via -r requirements/lint.in tomli==2.0.1 @@ -47,10 +83,20 @@ tomli==2.0.1 # mypy # pytest # slotscheck +tqdm==4.66.2 + # via python-on-whales +typer==0.12.3 + # via python-on-whales typing-extensions==4.11.0 # via # aioredis # mypy + # pydantic + # pydantic-core + # python-on-whales + # typer +urllib3==2.2.1 + # via requests uvloop==0.19.0 ; platform_system != "Windows" # via -r requirements/lint.in virtualenv==20.24.2 diff --git a/tests/autobahn/test_autobahn.py b/tests/autobahn/test_autobahn.py index f30f6afd69..651183d5f9 100644 --- a/tests/autobahn/test_autobahn.py +++ b/tests/autobahn/test_autobahn.py @@ -73,7 +73,8 @@ def test_client(report_dir: Path, request: Any) -> None: print("Stopping client and server") client.terminate() client.wait() - autobahn_container.stop() + # https://github.com/gabrieldemarmiesse/python-on-whales/pull/580 + autobahn_container.stop() # type: ignore[union-attr] failed_messages = get_failed_tests(f"{report_dir}/clients", "aiohttp") diff --git a/tests/test_resolver.py b/tests/test_resolver.py index 2650ccadd6..fe1902180d 100644 --- a/tests/test_resolver.py +++ b/tests/test_resolver.py @@ -20,7 +20,7 @@ getaddrinfo: Any = hasattr(aiodns.DNSResolver, "getaddrinfo") except ImportError: - aiodns = None + aiodns = None # type: ignore[assignment] getaddrinfo = False @@ -295,13 +295,6 @@ async def test_default_loop_for_threaded_resolver(loop) -> None: assert resolver._loop is loop -@pytest.mark.skipif(aiodns is None, reason="aiodns required") -async def test_default_loop_for_async_resolver(loop) -> None: - asyncio.set_event_loop(loop) - resolver = AsyncResolver() - assert resolver._loop is loop - - @pytest.mark.skipif(not getaddrinfo, reason="aiodns >=3.2.0 required") async def test_async_resolver_ipv6_positive_lookup(loop: Any) -> None: with patch("aiodns.DNSResolver") as mock: