diff --git a/CHANGES/7819.feature b/CHANGES/7819.feature new file mode 100644 index 00000000000..6ff263abeb8 --- /dev/null +++ b/CHANGES/7819.feature @@ -0,0 +1 @@ +Skip filtering ``CookieJar`` when the jar is empty or all cookies have expired. diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt index 557440d52aa..931d5c5b9aa 100644 --- a/CONTRIBUTORS.txt +++ b/CONTRIBUTORS.txt @@ -273,6 +273,7 @@ Required Field Robert Lu Robert Nikolich Roman Podoliaka +Rong Zhang Samir Akarioh Samuel Colvin Sean Hunt diff --git a/aiohttp/cookiejar.py b/aiohttp/cookiejar.py index 86563274aa1..4fc3ec97e1f 100644 --- a/aiohttp/cookiejar.py +++ b/aiohttp/cookiejar.py @@ -236,11 +236,17 @@ def filter_cookies( self, request_url: URL = URL() ) -> Union["BaseCookie[str]", "SimpleCookie[str]"]: """Returns this jar's cookies filtered by their attributes.""" - self._do_expiration() - request_url = URL(request_url) filtered: Union["SimpleCookie[str]", "BaseCookie[str]"] = ( SimpleCookie() if self._quote_cookie else BaseCookie() ) + if not self._cookies: + # Skip do_expiration() if there are no cookies. + return filtered + self._do_expiration() + if not self._cookies: + # Skip rest of function if no non-expired cookies. + return filtered + request_url = URL(request_url) hostname = request_url.raw_host or "" request_origin = URL() with contextlib.suppress(ValueError):