diff --git a/aiohttp/payload.py b/aiohttp/payload.py index eab56692399..2ee8b8cb908 100644 --- a/aiohttp/payload.py +++ b/aiohttp/payload.py @@ -557,11 +557,7 @@ def size(self) -> Optional[int]: # By storing the start position, we ensure the size calculation always # returns the correct total size for any subsequent use. if self._start_position is None: - try: - self._start_position = self._value.tell() - except (OSError, AttributeError): - # Can't get position, can't determine size - return None + self._start_position = self._value.tell() # Return the total size from the start position # This ensures Content-Length is correct even after reading diff --git a/requirements/constraints.txt b/requirements/constraints.txt index 133a11b91d9..0c6854dcdcb 100644 --- a/requirements/constraints.txt +++ b/requirements/constraints.txt @@ -6,30 +6,30 @@ # aiodns==3.5.0 # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/lint.in - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/runtime-deps.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/lint.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/runtime-deps.in aiohappyeyeballs==2.6.1 - # via -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/runtime-deps.in + # via -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/runtime-deps.in aiohttp-theme==0.1.7 - # via -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/doc.in + # via -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/doc.in aiosignal==1.4.0 - # via -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/runtime-deps.in + # via -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/runtime-deps.in alabaster==1.0.0 # via sphinx annotated-types==0.7.0 # via pydantic async-timeout==5.0.1 ; python_version < "3.11" # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/runtime-deps.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/runtime-deps.in # valkey babel==2.17.0 # via sphinx blockbuster==1.5.25 # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/lint.in - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/test.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/lint.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/test.in brotli==1.1.0 ; platform_python_implementation == "CPython" - # via -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/runtime-deps.in + # via -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/runtime-deps.in build==1.2.2.post1 # via pip-tools certifi==2025.7.14 @@ -44,7 +44,7 @@ cfgv==3.4.0 charset-normalizer==3.4.2 # via requests cherry-picker==2.5.0 - # via -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/dev.in + # via -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/dev.in click==8.1.8 # via # cherry-picker @@ -54,14 +54,14 @@ click==8.1.8 # wait-for-it coverage==7.9.2 # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/test.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/test.in # pytest-cov cryptography==45.0.5 # via # pyjwt # trustme cython==3.1.2 - # via -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/cython.in + # via -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/cython.in distlib==0.3.9 # via virtualenv docutils==0.21.2 @@ -76,16 +76,16 @@ forbiddenfruit==0.1.4 # via blockbuster freezegun==1.5.3 # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/lint.in - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/test.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/lint.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/test.in frozenlist==1.7.0 # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/runtime-deps.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/runtime-deps.in # aiosignal gidgethub==5.4.0 # via cherry-picker gunicorn==23.0.0 - # via -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/base.in + # via -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/base.in identify==2.6.12 # via pre-commit idna==3.6 @@ -101,8 +101,8 @@ iniconfig==2.1.0 # via pytest isal==1.7.2 # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/lint.in - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/test.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/lint.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/test.in jinja2==3.1.6 # via # sphinx @@ -115,13 +115,13 @@ mdurl==0.1.2 # via markdown-it-py multidict==6.6.3 # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/multidict.in - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/runtime-deps.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/multidict.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/runtime-deps.in # yarl -mypy==1.16.1 ; implementation_name == "cpython" +mypy==1.17.0 ; implementation_name == "cpython" # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/lint.in - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/test.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/lint.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/test.in mypy-extensions==1.1.0 # via mypy nodeenv==1.9.1 @@ -136,9 +136,9 @@ packaging==25.0 pathspec==0.12.1 # via mypy pip-tools==7.4.1 - # via -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/dev.in + # via -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/dev.in pkgconfig==1.5.5 - # via -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/test.in + # via -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/test.in platformdirs==4.3.8 # via virtualenv pluggy==1.6.0 @@ -146,15 +146,15 @@ pluggy==1.6.0 # pytest # pytest-cov pre-commit==4.2.0 - # via -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/lint.in + # via -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/lint.in propcache==0.3.2 # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/runtime-deps.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/runtime-deps.in # yarl proxy-py==2.4.10 # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/lint.in - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/test.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/lint.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/test.in pycares==4.9.0 # via aiodns pycparser==2.22 @@ -180,30 +180,30 @@ pyproject-hooks==1.2.0 # pip-tools pytest==8.4.1 # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/lint.in - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/test.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/lint.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/test.in # pytest-codspeed # pytest-cov # pytest-mock # pytest-xdist pytest-codspeed==4.0.0 # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/lint.in - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/test.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/lint.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/test.in pytest-cov==6.2.1 - # via -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/test.in + # via -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/test.in pytest-mock==3.14.1 # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/lint.in - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/test.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/lint.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/test.in pytest-xdist==3.8.0 - # via -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/test.in + # via -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/test.in python-dateutil==2.9.0.post0 # via freezegun -python-on-whales==0.77.0 +python-on-whales==0.78.0 # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/lint.in - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/test.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/lint.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/test.in pyyaml==6.0.2 # via pre-commit requests==2.32.4 @@ -214,16 +214,16 @@ requests==2.32.4 rich==14.0.0 # via pytest-codspeed setuptools-git==1.2 - # via -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/test.in + # via -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/test.in six==1.17.0 # via python-dateutil slotscheck==0.19.1 - # via -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/lint.in + # via -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/lint.in snowballstemmer==3.0.1 # via sphinx sphinx==8.1.3 # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/doc.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/doc.in # sphinxcontrib-spelling # sphinxcontrib-towncrier sphinxcontrib-applehelp==2.0.0 @@ -239,9 +239,9 @@ sphinxcontrib-qthelp==2.0.0 sphinxcontrib-serializinghtml==2.0.0 # via sphinx sphinxcontrib-spelling==8.0.1 ; platform_system != "Windows" - # via -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/doc-spelling.in + # via -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/doc-spelling.in sphinxcontrib-towncrier==0.5.0a0 - # via -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/doc.in + # via -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/doc.in stamina==25.1.0 # via cherry-picker tenacity==9.1.2 @@ -260,12 +260,12 @@ tomli==2.2.1 # towncrier towncrier==23.11.0 # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/doc.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/doc.in # sphinxcontrib-towncrier trustme==1.2.1 ; platform_machine != "i686" # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/lint.in - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/test.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/lint.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/test.in typing-extensions==4.14.1 # via # aiosignal @@ -285,26 +285,26 @@ urllib3==2.5.0 # via requests uvloop==0.21.0 ; platform_system != "Windows" # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/base.in - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/lint.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/base.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/lint.in valkey==6.1.0 - # via -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/lint.in + # via -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/lint.in virtualenv==20.31.2 # via pre-commit wait-for-it==2.3.0 - # via -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/test.in + # via -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/test.in wheel==0.46.0 # via pip-tools yarl==1.20.1 - # via -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/runtime-deps.in + # via -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/runtime-deps.in zlib-ng==0.5.1 # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/lint.in - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/test.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/lint.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/test.in zstandard==0.23.0 ; implementation_name == "cpython" # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/lint.in - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/runtime-deps.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/lint.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/runtime-deps.in # The following packages are considered to be unsafe in a requirements file: pip==25.1.1 diff --git a/requirements/dev.txt b/requirements/dev.txt index e4028bf6d17..d74d80b1f2b 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -6,30 +6,30 @@ # aiodns==3.5.0 # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/lint.in - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/runtime-deps.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/lint.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/runtime-deps.in aiohappyeyeballs==2.6.1 - # via -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/runtime-deps.in + # via -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/runtime-deps.in aiohttp-theme==0.1.7 - # via -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/doc.in + # via -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/doc.in aiosignal==1.4.0 - # via -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/runtime-deps.in + # via -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/runtime-deps.in alabaster==1.0.0 # via sphinx annotated-types==0.7.0 # via pydantic async-timeout==5.0.1 ; python_version < "3.11" # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/runtime-deps.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/runtime-deps.in # valkey babel==2.17.0 # via sphinx blockbuster==1.5.25 # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/lint.in - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/test.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/lint.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/test.in brotli==1.1.0 ; platform_python_implementation == "CPython" - # via -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/runtime-deps.in + # via -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/runtime-deps.in build==1.2.2.post1 # via pip-tools certifi==2025.7.14 @@ -54,7 +54,7 @@ click==8.1.8 # wait-for-it coverage==7.9.2 # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/test.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/test.in # pytest-cov cryptography==45.0.5 # via @@ -74,16 +74,16 @@ forbiddenfruit==0.1.4 # via blockbuster freezegun==1.5.3 # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/lint.in - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/test.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/lint.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/test.in frozenlist==1.7.0 # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/runtime-deps.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/runtime-deps.in # aiosignal gidgethub==5.4.0 # via cherry-picker gunicorn==23.0.0 - # via -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/base.in + # via -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/base.in identify==2.6.12 # via pre-commit idna==3.6 @@ -99,8 +99,8 @@ iniconfig==2.1.0 # via pytest isal==1.7.2 # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/lint.in - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/test.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/lint.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/test.in jinja2==3.1.6 # via # sphinx @@ -113,12 +113,12 @@ mdurl==0.1.2 # via markdown-it-py multidict==6.6.3 # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/runtime-deps.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/runtime-deps.in # yarl -mypy==1.16.1 ; implementation_name == "cpython" +mypy==1.17.0 ; implementation_name == "cpython" # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/lint.in - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/test.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/lint.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/test.in mypy-extensions==1.1.0 # via mypy nodeenv==1.9.1 @@ -135,7 +135,7 @@ pathspec==0.12.1 pip-tools==7.4.1 # via -r requirements/dev.in pkgconfig==1.5.5 - # via -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/test.in + # via -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/test.in platformdirs==4.3.8 # via virtualenv pluggy==1.6.0 @@ -143,15 +143,15 @@ pluggy==1.6.0 # pytest # pytest-cov pre-commit==4.2.0 - # via -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/lint.in + # via -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/lint.in propcache==0.3.2 # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/runtime-deps.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/runtime-deps.in # yarl proxy-py==2.4.10 # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/lint.in - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/test.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/lint.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/test.in pycares==4.9.0 # via aiodns pycparser==2.22 @@ -175,30 +175,30 @@ pyproject-hooks==1.2.0 # pip-tools pytest==8.4.1 # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/lint.in - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/test.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/lint.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/test.in # pytest-codspeed # pytest-cov # pytest-mock # pytest-xdist pytest-codspeed==4.0.0 # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/lint.in - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/test.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/lint.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/test.in pytest-cov==6.2.1 - # via -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/test.in + # via -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/test.in pytest-mock==3.14.1 # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/lint.in - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/test.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/lint.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/test.in pytest-xdist==3.8.0 - # via -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/test.in + # via -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/test.in python-dateutil==2.9.0.post0 # via freezegun -python-on-whales==0.77.0 +python-on-whales==0.78.0 # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/lint.in - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/test.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/lint.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/test.in pyyaml==6.0.2 # via pre-commit requests==2.32.4 @@ -208,16 +208,16 @@ requests==2.32.4 rich==14.0.0 # via pytest-codspeed setuptools-git==1.2 - # via -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/test.in + # via -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/test.in six==1.17.0 # via python-dateutil slotscheck==0.19.1 - # via -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/lint.in + # via -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/lint.in snowballstemmer==3.0.1 # via sphinx sphinx==8.1.3 # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/doc.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/doc.in # sphinxcontrib-towncrier sphinxcontrib-applehelp==2.0.0 # via sphinx @@ -232,7 +232,7 @@ sphinxcontrib-qthelp==2.0.0 sphinxcontrib-serializinghtml==2.0.0 # via sphinx sphinxcontrib-towncrier==0.5.0a0 - # via -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/doc.in + # via -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/doc.in stamina==25.1.0 # via cherry-picker tenacity==9.1.2 @@ -251,12 +251,12 @@ tomli==2.2.1 # towncrier towncrier==23.11.0 # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/doc.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/doc.in # sphinxcontrib-towncrier trustme==1.2.1 ; platform_machine != "i686" # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/lint.in - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/test.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/lint.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/test.in typing-extensions==4.14.1 # via # aiosignal @@ -276,26 +276,26 @@ urllib3==2.5.0 # via requests uvloop==0.21.0 ; platform_system != "Windows" and implementation_name == "cpython" # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/base.in - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/lint.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/base.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/lint.in valkey==6.1.0 - # via -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/lint.in + # via -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/lint.in virtualenv==20.31.2 # via pre-commit wait-for-it==2.3.0 - # via -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/test.in + # via -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/test.in wheel==0.46.0 # via pip-tools yarl==1.20.1 - # via -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/runtime-deps.in + # via -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/runtime-deps.in zlib-ng==0.5.1 # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/lint.in - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/test.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/lint.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/test.in zstandard==0.23.0 ; platform_python_implementation == "CPython" and python_version < "3.14" # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/lint.in - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/runtime-deps.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/lint.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/runtime-deps.in # The following packages are considered to be unsafe in a requirements file: pip==25.1.1 diff --git a/requirements/lint.txt b/requirements/lint.txt index a15d242384d..70c07addc37 100644 --- a/requirements/lint.txt +++ b/requirements/lint.txt @@ -45,7 +45,7 @@ markdown-it-py==3.0.0 # via rich mdurl==0.1.2 # via markdown-it-py -mypy==1.16.1 ; implementation_name == "cpython" +mypy==1.17.0 ; implementation_name == "cpython" # via -r requirements/lint.in mypy-extensions==1.1.0 # via mypy @@ -86,7 +86,7 @@ pytest-mock==3.14.1 # via -r requirements/lint.in python-dateutil==2.9.0.post0 # via freezegun -python-on-whales==0.77.0 +python-on-whales==0.78.0 # via -r requirements/lint.in pyyaml==6.0.2 # via pre-commit diff --git a/requirements/test.txt b/requirements/test.txt index cbbc5b86401..8cc46c25d24 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -5,19 +5,19 @@ # pip-compile --allow-unsafe --output-file=requirements/test.txt --resolver=backtracking --strip-extras requirements/test.in # aiodns==3.5.0 - # via -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/runtime-deps.in + # via -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/runtime-deps.in aiohappyeyeballs==2.6.1 - # via -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/runtime-deps.in + # via -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/runtime-deps.in aiosignal==1.4.0 - # via -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/runtime-deps.in + # via -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/runtime-deps.in annotated-types==0.7.0 # via pydantic async-timeout==5.0.1 ; python_version < "3.11" - # via -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/runtime-deps.in + # via -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/runtime-deps.in blockbuster==1.5.25 # via -r requirements/test.in brotli==1.1.0 ; platform_python_implementation == "CPython" - # via -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/runtime-deps.in + # via -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/runtime-deps.in cffi==1.17.1 # via # cryptography @@ -41,10 +41,10 @@ freezegun==1.5.3 # via -r requirements/test.in frozenlist==1.7.0 # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/runtime-deps.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/runtime-deps.in # aiosignal gunicorn==23.0.0 - # via -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/base.in + # via -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/base.in idna==3.6 # via # trustme @@ -59,9 +59,9 @@ mdurl==0.1.2 # via markdown-it-py multidict==6.6.3 # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/runtime-deps.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/runtime-deps.in # yarl -mypy==1.16.1 ; implementation_name == "cpython" +mypy==1.17.0 ; implementation_name == "cpython" # via -r requirements/test.in mypy-extensions==1.1.0 # via mypy @@ -79,7 +79,7 @@ pluggy==1.6.0 # pytest-cov propcache==0.3.2 # via - # -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/runtime-deps.in + # -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/runtime-deps.in # yarl proxy-py==2.4.10 # via -r requirements/test.in @@ -112,7 +112,7 @@ pytest-xdist==3.8.0 # via -r requirements/test.in python-dateutil==2.9.0.post0 # via freezegun -python-on-whales==0.77.0 +python-on-whales==0.78.0 # via -r requirements/test.in rich==14.0.0 # via pytest-codspeed @@ -141,12 +141,12 @@ typing-extensions==4.14.1 typing-inspection==0.4.1 # via pydantic uvloop==0.21.0 ; platform_system != "Windows" and implementation_name == "cpython" - # via -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/base.in + # via -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/base.in wait-for-it==2.3.0 # via -r requirements/test.in yarl==1.20.1 - # via -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/runtime-deps.in + # via -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/runtime-deps.in zlib-ng==0.5.1 # via -r requirements/test.in zstandard==0.23.0 ; platform_python_implementation == "CPython" and python_version < "3.14" - # via -r /home/dependabot/dependabot-updater/tmp/20250715-1382-lngh7e/dependabot_20250715-1382-a7k872/requirements/runtime-deps.in + # via -r /home/dependabot/dependabot-updater/tmp/20250715-1384-v0sr9j/dependabot_20250715-1384-mw23m4/requirements/runtime-deps.in diff --git a/tests/test_client_functional.py b/tests/test_client_functional.py index d22a749dda8..e671aef180a 100644 --- a/tests/test_client_functional.py +++ b/tests/test_client_functional.py @@ -4910,7 +4910,7 @@ async def final_handler(request: web.Request) -> web.Response: client = await aiohttp_client(app) payload_data = b"buffered reader payload" - buffer = io.BufferedReader(io.BytesIO(payload_data)) # type: ignore[arg-type] + buffer = io.BufferedReader(io.BytesIO(payload_data)) payload = BufferedReaderPayload(buffer) resp = await client.post("/redirect", data=payload) @@ -5369,8 +5369,8 @@ async def test_file_upload_307_308_redirect( ) -> None: """Test that file uploads work correctly with 307/308 redirects. - This demonstrates the bug where file payloads get incorrect Content-Length - on redirect because the file position isn't reset. + This verifies that file payloads maintain correct Content-Length + on redirect by properly handling the file position. """ received_bodies: list[bytes] = [] diff --git a/tests/test_client_request.py b/tests/test_client_request.py index 1852ebb1c81..de25a53dc93 100644 --- a/tests/test_client_request.py +++ b/tests/test_client_request.py @@ -1191,7 +1191,7 @@ async def _mock_write_bytes( async def test_data_file( loop: asyncio.AbstractEventLoop, buf: bytearray, conn: mock.Mock ) -> None: - with io.BufferedReader(io.BytesIO(b"*" * 2)) as file_handle: # type: ignore[arg-type] + with io.BufferedReader(io.BytesIO(b"*" * 2)) as file_handle: req = ClientRequest( "POST", URL("http://python.org/"), @@ -1804,7 +1804,7 @@ async def test_warn_if_unclosed_payload_via_body_setter( # First set a payload that needs manual closing (autoclose=False) file_payload = payload.BufferedReaderPayload( - io.BufferedReader(io.BytesIO(b"test data")), # type: ignore[arg-type] + io.BufferedReader(io.BytesIO(b"test data")), encoding="utf-8", ) req.body = file_payload @@ -1851,7 +1851,7 @@ async def test_no_warn_for_consumed_payload_via_body_setter( # Create a payload that needs manual closing file_payload = payload.BufferedReaderPayload( - io.BufferedReader(io.BytesIO(b"test data")), # type: ignore[arg-type] + io.BufferedReader(io.BytesIO(b"test data")), encoding="utf-8", ) req.body = file_payload @@ -1881,7 +1881,7 @@ async def test_warn_if_unclosed_payload_via_update_body_from_data( # First set a payload that needs manual closing file_payload = payload.BufferedReaderPayload( - io.BufferedReader(io.BytesIO(b"initial data")), # type: ignore[arg-type] + io.BufferedReader(io.BytesIO(b"initial data")), encoding="utf-8", ) req.update_body_from_data(file_payload) @@ -1907,11 +1907,11 @@ async def test_warn_via_update_with_file_payload( req = make_request("POST", "http://python.org/") # First create a file-like object that results in BufferedReaderPayload - buffered1 = io.BufferedReader(io.BytesIO(b"file content 1")) # type: ignore[arg-type] + buffered1 = io.BufferedReader(io.BytesIO(b"file content 1")) req.update_body_from_data(buffered1) # Second update should warn about the first payload - buffered2 = io.BufferedReader(io.BytesIO(b"file content 2")) # type: ignore[arg-type] + buffered2 = io.BufferedReader(io.BytesIO(b"file content 2")) with pytest.warns( ResourceWarning, @@ -2101,7 +2101,7 @@ async def test_warn_stacklevel_points_to_user_code( # First set a payload that needs manual closing (autoclose=False) file_payload = payload.BufferedReaderPayload( - io.BufferedReader(io.BytesIO(b"test data")), # type: ignore[arg-type] + io.BufferedReader(io.BytesIO(b"test data")), encoding="utf-8", ) req.body = file_payload @@ -2139,7 +2139,7 @@ async def test_warn_stacklevel_update_body_from_data( # First set a payload that needs manual closing (autoclose=False) file_payload = payload.BufferedReaderPayload( - io.BufferedReader(io.BytesIO(b"test data")), # type: ignore[arg-type] + io.BufferedReader(io.BytesIO(b"test data")), encoding="utf-8", ) req.update_body_from_data(file_payload) diff --git a/tests/test_payload.py b/tests/test_payload.py index fb8267f21cf..aef64aaa53d 100644 --- a/tests/test_payload.py +++ b/tests/test_payload.py @@ -874,7 +874,7 @@ async def test_string_io_payload_reusability() -> None: async def test_buffered_reader_payload_reusability() -> None: """Test that BufferedReaderPayload can be written and read multiple times.""" data = b"test buffered reader payload" - buffer = io.BufferedReader(io.BytesIO(data)) # type: ignore[arg-type] + buffer = io.BufferedReader(io.BytesIO(data)) p = payload.BufferedReaderPayload(buffer) # First write_with_length @@ -1281,8 +1281,9 @@ def open_file() -> TextIO: async def test_iobase_payload_size_after_reading(tmp_path: Path) -> None: """Test that IOBasePayload.size returns correct size after file has been read. - This demonstrates the bug where size calculation doesn't account for - the current file position, causing issues with 307/308 redirects. + This verifies that size calculation properly accounts for the initial + file position, which is critical for 307/308 redirects where the same + payload instance is reused. """ # Create a test file with known content test_file = tmp_path / "test.txt" @@ -1304,14 +1305,12 @@ async def test_iobase_payload_size_after_reading(tmp_path: Path) -> None: assert len(writer.buffer) == expected_size # Second size check - should still return full file size - # but currently returns 0 because file position is at EOF - assert p.size == expected_size # This assertion fails! + assert p.size == expected_size # Attempting to write again should write the full content - # but currently writes nothing because file is at EOF writer2 = BufferWriter() await p.write(writer2) - assert len(writer2.buffer) == expected_size # This also fails! + assert len(writer2.buffer) == expected_size finally: await asyncio.to_thread(f.close) diff --git a/tests/test_web_response.py b/tests/test_web_response.py index 04008a7c579..8a47aa2f873 100644 --- a/tests/test_web_response.py +++ b/tests/test_web_response.py @@ -1106,7 +1106,7 @@ def read(self, size: int = -1) -> bytes: (io.StringIO("test"), "test"), (io.TextIOWrapper(io.BytesIO(b"test")), "test"), (io.BytesIO(b"test"), "test"), - (io.BufferedReader(io.BytesIO(b"test")), "test"), # type: ignore[arg-type] + (io.BufferedReader(io.BytesIO(b"test")), "test"), (async_iter(), None), (BodyPartReader(b"x", CIMultiDictProxy(CIMultiDict()), mock.Mock()), None), (