Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGES/11085.misc.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Improved performance of isinstance checks by using collections.abc types instead of typing module equivalents -- by :user:`bdraco`.
4 changes: 2 additions & 2 deletions aiohttp/client_reqrep.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import sys
import traceback
import warnings
from collections.abc import Mapping as ABCMapping
from hashlib import md5, sha1, sha256
from http.cookies import CookieError, Morsel, SimpleCookie
from types import MappingProxyType, TracebackType
Expand All @@ -18,7 +19,6 @@
Iterable,
List,
Literal,
Mapping,
NamedTuple,
Optional,
Tuple,
Expand Down Expand Up @@ -1006,7 +1006,7 @@ def update_cookies(self, cookies: Optional[LooseCookies]) -> None:
c.load(self.headers.get(hdrs.COOKIE, ""))
del self.headers[hdrs.COOKIE]

if isinstance(cookies, Mapping):
if isinstance(cookies, ABCMapping):
iter_cookies = cookies.items()
else:
iter_cookies = cookies # type: ignore[assignment]
Expand Down
4 changes: 2 additions & 2 deletions aiohttp/cookiejar.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import time
import warnings
from collections import defaultdict
from collections.abc import Mapping as ABCMapping
from http.cookies import BaseCookie, Morsel, SimpleCookie
from typing import (
DefaultDict,
Expand All @@ -18,7 +19,6 @@
Iterable,
Iterator,
List,
Mapping,
Optional,
Set,
Tuple,
Expand Down Expand Up @@ -237,7 +237,7 @@ def update_cookies(self, cookies: LooseCookies, response_url: URL = URL()) -> No
# Don't accept cookies from IPs
return

if isinstance(cookies, Mapping):
if isinstance(cookies, ABCMapping):
cookies = cookies.items()

for name, cookie in cookies:
Expand Down
5 changes: 3 additions & 2 deletions aiohttp/multipart.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import uuid
import warnings
from collections import deque
from collections.abc import Mapping as ABCMapping, Sequence as ABCSequence
from types import TracebackType
from typing import (
TYPE_CHECKING,
Expand Down Expand Up @@ -957,12 +958,12 @@ def append_form(
headers: Optional[Mapping[str, str]] = None,
) -> Payload:
"""Helper to append form urlencoded part."""
assert isinstance(obj, (Sequence, Mapping))
assert isinstance(obj, (ABCSequence, ABCMapping))

if headers is None:
headers = CIMultiDict()

if isinstance(obj, Mapping):
if isinstance(obj, ABCMapping):
obj = list(obj.items())
data = urlencode(obj, doseq=True)

Expand Down
3 changes: 2 additions & 1 deletion aiohttp/payload.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import sys
import warnings
from abc import ABC, abstractmethod
from collections.abc import Iterable as ABCIterable
from itertools import chain
from typing import (
IO,
Expand Down Expand Up @@ -137,7 +138,7 @@ def register(
self._first.append((factory, type))
elif order is Order.normal:
self._normal.append((factory, type))
if isinstance(type, Iterable):
if isinstance(type, ABCIterable):
for t in type:
self._normal_lookup[t] = factory
else:
Expand Down
Loading