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
14 changes: 12 additions & 2 deletions .github/workflows/ci-cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -275,8 +275,10 @@ jobs:
token: ${{ secrets.CODECOV_TOKEN }}
- name: Upload test results to Codecov
if: ${{ !cancelled() }}
uses: codecov/test-results-action@v1
uses: codecov/codecov-action@v6
with:
files: ./junit.xml
report_type: test_results
token: ${{ secrets.CODECOV_TOKEN }}

autobahn:
Expand Down Expand Up @@ -360,8 +362,10 @@ jobs:
token: ${{ secrets.CODECOV_TOKEN }}
- name: Upload test results to Codecov
if: ${{ !cancelled() }}
uses: codecov/test-results-action@v1
uses: codecov/codecov-action@v6
with:
files: ./junit.xml
report_type: test_results
token: ${{ secrets.CODECOV_TOKEN }}

benchmark:
Expand Down Expand Up @@ -627,6 +631,12 @@ jobs:
make cythonize
- name: Build wheels
uses: pypa/cibuildwheel@v3.4.1
with:
# `build-frontend = "build[uv]"` (pyproject.toml) requires uv to be
# available on the runner for Windows and macOS. Installing
# cibuildwheel with the `uv` extra bundles uv with it; Linux
# already has uv inside the manylinux/musllinux container.
extras: uv
env:
CIBW_SKIP: pp* ${{ matrix.musl == 'musllinux' && '*manylinux*' || '*musllinux*' }}
CIBW_ARCHS_MACOS: x86_64 arm64 universal2
Expand Down
5 changes: 5 additions & 0 deletions CHANGES/12588.contrib.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Added a ``CLAUDE.md`` at the repository root that imports
:file:`AGENTS.md` via Claude Code's ``@``-syntax, so the
project's LLM contributor rules load automatically when
working in Claude Code
-- by :user:`aiolibsbot`.
7 changes: 7 additions & 0 deletions CHANGES/12589.contrib.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
Restricted the ``isal`` test dependency to CPython, since
``isal`` 1.8.0 stopped publishing PyPy wheels and the source
build requires ``nasm``, which is not available on the CI
runners. The ``parametrize_zlib_backend`` fixture already
calls ``pytest.importorskip``, so PyPy continues to exercise
the ``zlib`` and ``zlib_ng`` backends with no further
changes -- by :user:`bdraco`.
6 changes: 6 additions & 0 deletions CHANGES/12592.contrib.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Fixed a flakey ``test_tcp_connector_fingerprint_ok`` by aborting
the SSL shutdown on the test's TCP connector before returning.
The graceful TLS close was occasionally outliving the test event
loop on one of the CI jobs, and the teardown ``gc.collect()``
then surfaced the still-open transport as a
``PytestUnraisableExceptionWarning`` -- by :user:`bdraco`.
5 changes: 5 additions & 0 deletions CHANGES/12595.contrib.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Switched the ``cibuildwheel`` build frontend to ``build[uv]`` so
that ``uv`` provisions every build-isolation virtual environment
in the wheel matrix, replacing the per-ABI ``pip`` resolve with a
roughly sub-second ``uv`` resolve
-- by :user:`bdraco`.
4 changes: 4 additions & 0 deletions CHANGES/12596.contrib.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Switched the test-results upload step to ``codecov/codecov-action@v6``
with ``report_type: test_results``, since
``codecov/test-results-action`` is being deprecated in favor of
``codecov-action`` -- by :user:`bdraco`.
4 changes: 4 additions & 0 deletions CHANGES/12600.contrib.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Silenced the ``DeprecationWarning`` raised by ``uvloop`` 0.22+ when it
accesses the ``asyncio.AbstractEventLoopPolicy`` alias that Python 3.14
marks for removal in 3.16, so the test suite passes against the newer
``uvloop`` release -- by :user:`bdraco`.
1 change: 1 addition & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
@AGENTS.md
1 change: 1 addition & 0 deletions docs/spelling_wordlist.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
abc
ABI
addons
aiodns
aioes
Expand Down
7 changes: 7 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,13 @@ include = [


[tool.cibuildwheel]
# `build[uv]` makes cibuildwheel use `uv` for every venv it provisions,
# both on the build side (passed to `python -m build` as `--installer=uv`)
# and when materializing the build isolation environment. uv resolves and
# installs the build requirements in roughly a second; the previous
# pip-based path took noticeably longer per ABI and ran once per matrix
# cell.
build-frontend = "build[uv]"
test-command = ""
# don't build PyPy wheels, install from source instead
skip = "pp*"
Expand Down
2 changes: 1 addition & 1 deletion requirements/constraints.txt
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ imagesize==2.0.0
# via sphinx
iniconfig==2.3.0
# via pytest
isal==1.7.2 ; python_version < "3.14"
isal==1.7.2 ; python_version < "3.14" and implementation_name == "cpython"
# via
# -r requirements/lint.in
# -r requirements/test-common.in
Expand Down
2 changes: 1 addition & 1 deletion requirements/dev.txt
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ imagesize==2.0.0
# via sphinx
iniconfig==2.3.0
# via pytest
isal==1.7.2 ; python_version < "3.14"
isal==1.7.2 ; python_version < "3.14" and implementation_name == "cpython"
# via
# -r requirements/lint.in
# -r requirements/test-common.in
Expand Down
2 changes: 1 addition & 1 deletion requirements/test-common.in
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
blockbuster
coverage
freezegun
isal; python_version < "3.14" # no wheel for 3.14
isal; python_version < "3.14" and implementation_name == "cpython" # no wheel for 3.14, no PyPy wheel for 1.8.0+
mypy; implementation_name == "cpython"
pkgconfig
proxy.py >= 2.4.4rc5
Expand Down
2 changes: 1 addition & 1 deletion requirements/test-common.txt
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ idna==3.15
# yarl
iniconfig==2.3.0
# via pytest
isal==1.8.0 ; python_version < "3.14"
isal==1.8.0 ; python_version < "3.14" and implementation_name == "cpython"
# via -r requirements/test-common.in
librt==0.11.0
# via mypy
Expand Down
2 changes: 1 addition & 1 deletion requirements/test-ft.txt
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ idna==3.15
# yarl
iniconfig==2.3.0
# via pytest
isal==1.8.0 ; python_version < "3.14"
isal==1.8.0 ; python_version < "3.14" and implementation_name == "cpython"
# via -r requirements/test-common.in
librt==0.11.0
# via mypy
Expand Down
2 changes: 1 addition & 1 deletion requirements/test.txt
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ idna==3.15
# yarl
iniconfig==2.3.0
# via pytest
isal==1.7.2 ; python_version < "3.14"
isal==1.7.2 ; python_version < "3.14" and implementation_name == "cpython"
# via -r requirements/test-common.in
librt==0.11.0
# via mypy
Expand Down
4 changes: 4 additions & 0 deletions setup.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,10 @@ filterwarnings =
ignore:datetime.*utcnow\(\) is deprecated and scheduled for removal:DeprecationWarning:freezegun.api
# Weird issue in Python 3.13+ triggered in test_multipart.py
ignore:coroutine method 'aclose' of 'BodyPartReader._decode_content_async' was never awaited:RuntimeWarning
# uvloop 0.22+ accesses the deprecated asyncio.AbstractEventLoopPolicy
# alias, which Python 3.14 marks for removal in 3.16. Drop this when
# uvloop stops touching the deprecated alias.
ignore:'asyncio.AbstractEventLoopPolicy' is deprecated:DeprecationWarning:uvloop
junit_suite_name = aiohttp_test_suite
norecursedirs = dist docs build .tox .eggs
minversion = 3.8.2
Expand Down
6 changes: 6 additions & 0 deletions tests/test_client_functional.py
Original file line number Diff line number Diff line change
Expand Up @@ -840,6 +840,12 @@ async def handler(request: web.Request) -> web.Response:
async with client.get("/") as resp:
assert resp.status == 200

# Abort the SSL shutdown explicitly so the pooled TLS transport is
# released before the test loop tears down. Otherwise a slow graceful
# close can outlive the loop, and the teardown gc.collect() finalises
# the still-open socket as an unraisable ResourceWarning.
await connector.close(abort_ssl=True)


async def test_tcp_connector_fingerprint_fail(
aiohttp_server: AiohttpServer,
Expand Down
Loading