The Fix
Removed non SPDX-license description from setup.cfg to comply with PEP 639.
Based on closed aio-libs/aiohttp issue #10662 · PR/commit linked
Production note: Most teams hit this during upgrades or environment changes. Roll out with a canary and smoke critical endpoints (health, OpenAPI/docs) before 100%.
@@ -0,0 +1 @@
@@ -0,0 +1 @@
+Removed non SPDX-license description from ``setup.cfg`` -- by :user:`devanshu-ziphq`.
diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt
index 7c36b570e87..89eb3ae621a 100644
$ python -m pip show aiohttp
Name: aiohttp
Version: 3.11.15
Summary: Async http client/server framework (asyncio)
Home-page: https://github.com/aio-libs/aiohttp
Author:
Author-email:
License: Apache-2.0
Location: /usr/lib/pypy3.10/site-packages
Requires: aiohappyeyeballs, aiosignal, async-timeout, attrs, frozenlist, multidict, propcache, yarl
Required-by: aiohttp-cors, aiohttp_socks, pytest-aiohttp
Re-run the minimal reproduction on your broken version, then apply the fix and re-run.
Option A — Apply the official fix\nRemoved non SPDX-license description from setup.cfg to comply with PEP 639.\nWhen NOT to use: This fix should not be applied if license classifiers are required for compliance.\n\n
Why This Fix Works in Production
- Trigger: ```python-traceback
- Mechanism: Removed non SPDX-license description from setup.cfg to comply with PEP 639.
- If left unfixed, the same config can fail only in production (env differences), causing startup failures or partial feature outages.
Why This Breaks in Prod
- Shows up under Python 3.10.16 in real deployments (not just unit tests).
- Production symptom (often without a traceback): ```python-traceback
Proof / Evidence
- GitHub issue: #10662
- Fix PR: https://github.com/aio-libs/aiohttp/pull/10881
- Reproduced locally: No (not executed)
- Last verified: 2026-02-09
- Confidence: 0.70
- Did this fix it?: Yes (upstream fix exists)
- Own content ratio: 0.55
Discussion
High-signal excerpts from the issue thread (symptoms, repros, edge-cases).
“It's probably a PEP 639 thing. Thanks for reporting!”
“fixed via https://github.com/aio-libs/aiohttp/pull/10881”
Failure Signature (Search String)
- ```python-traceback
- Requires: aiohappyeyeballs, aiosignal, async-timeout, attrs, frozenlist, multidict, propcache, yarl
Copy-friendly signature
Failure Signature
-----------------
```python-traceback
Requires: aiohappyeyeballs, aiosignal, async-timeout, attrs, frozenlist, multidict, propcache, yarl
Error Message
Signature-only (no traceback captured)
Error Message
-------------
```python-traceback
Requires: aiohappyeyeballs, aiosignal, async-timeout, attrs, frozenlist, multidict, propcache, yarl
Minimal Reproduction
$ python -m pip show aiohttp
Name: aiohttp
Version: 3.11.15
Summary: Async http client/server framework (asyncio)
Home-page: https://github.com/aio-libs/aiohttp
Author:
Author-email:
License: Apache-2.0
Location: /usr/lib/pypy3.10/site-packages
Requires: aiohappyeyeballs, aiosignal, async-timeout, attrs, frozenlist, multidict, propcache, yarl
Required-by: aiohttp-cors, aiohttp_socks, pytest-aiohttp
Environment
- Python: 3.10.16
What Broke
Warnings during wheel building can lead to confusion and hinder deployment.
Fix Options (Details)
Option A — Apply the official fix
Removed non SPDX-license description from setup.cfg to comply with PEP 639.
Fix reference: https://github.com/aio-libs/aiohttp/pull/10881
Last verified: 2026-02-09. Validate in your environment.
When NOT to Use This Fix
- This fix should not be applied if license classifiers are required for compliance.
Verify Fix
Re-run the minimal reproduction on your broken version, then apply the fix and re-run.
Did This Fix Work in Your Case?
Quick signal helps us prioritize which fixes to verify and improve.
Prevention
- Make timeouts explicit and test them (unit + integration) to avoid silent behavior changes.
- Instrument retries (attempt count + reason) and alert on spikes to catch dependency slowdowns.
Related Issues
No related fixes found.
Sources
We don’t republish the full GitHub discussion text. Use the links above for context.