[build-system] requires = [ "pkgconfig", # setuptools >= 67.0 required for Python 3.12+ support # Next step should be >= 77.0 for PEP 639 support # Don't bump too early to give distributors time to update # their setuptools version. "setuptools >= 67.0", ] build-backend = "setuptools.build_meta" [project] name = "aiohttp" # TODO: Update to just 'license = "..."' once setuptools is bumped to >=77 license = {text = "Apache-2.0 AND MIT"} description = "Async http client/server framework (asyncio)" readme = "README.rst" classifiers = [ "Development Status :: 5 - Production/Stable", "Framework :: AsyncIO", "Intended Audience :: Developers", "Operating System :: POSIX", "Operating System :: MacOS :: MacOS X", "Operating System :: Microsoft :: Windows", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", "Topic :: Internet :: WWW/HTTP", ] requires-python = ">= 3.9" dependencies = [ "aiohappyeyeballs >= 2.5.0", "aiosignal >= 1.4.0", "async-timeout >= 4.0, < 6.0 ; python_version < '3.11'", "attrs >= 17.3.0", "frozenlist >= 1.1.1", "multidict >=4.5, < 7.0", "propcache >= 0.2.0", "yarl >= 1.17.0, < 2.0", ] dynamic = [ "version", ] [project.optional-dependencies] speedups = [ "aiodns >= 3.3.0", "Brotli >= 1.2; platform_python_implementation == 'CPython'", "brotlicffi >= 1.2; platform_python_implementation != 'CPython'", "backports.zstd; platform_python_implementation == 'CPython' and python_version < '3.14'", ] [[project.maintainers]] name = "aiohttp team" email = "team@aiohttp.org" [project.urls] "Homepage" = "https://github.com/aio-libs/aiohttp" "Chat: Matrix" = "https://matrix.to/#/#aio-libs:matrix.org" "Chat: Matrix Space" = "https://matrix.to/#/#aio-libs-space:matrix.org" "CI: GitHub Actions" = "https://github.com/aio-libs/aiohttp/actions?query=workflow%3ACI" "Coverage: codecov" = "https://codecov.io/github/aio-libs/aiohttp" "Docs: Changelog" = "https://docs.aiohttp.org/en/stable/changes.html" "Docs: RTD" = "https://docs.aiohttp.org" "GitHub: issues" = "https://github.com/aio-libs/aiohttp/issues" "GitHub: repo" = "https://github.com/aio-libs/aiohttp" [tool.setuptools] license-files = [ # TODO: Use 'project.license-files' instead once setuptools is bumped to >=77 "LICENSE.txt", "vendor/llhttp/LICENSE", ] [tool.setuptools.dynamic] version = {attr = "aiohttp.__version__"} [tool.setuptools.packages.find] include = [ "aiohttp", "aiohttp.*", ] [tool.setuptools.exclude-package-data] "*" = ["*.c", "*.h"] [tool.towncrier] package = "aiohttp" filename = "CHANGES.rst" directory = "CHANGES/" title_format = "{version} ({project_date})" template = "CHANGES/.TEMPLATE.rst" issue_format = "{issue}" # NOTE: The types are declared because: # NOTE: - there is no mechanism to override just the value of # NOTE: `tool.towncrier.type.misc.showcontent`; # NOTE: - and, we want to declare extra non-default types for # NOTE: clarity and flexibility. [[tool.towncrier.section]] path = "" [[tool.towncrier.type]] # Something we deemed an improper undesired behavior that got corrected # in the release to match pre-agreed expectations. directory = "bugfix" name = "Bug fixes" showcontent = true [[tool.towncrier.type]] # New behaviors, public APIs. That sort of stuff. directory = "feature" name = "Features" showcontent = true [[tool.towncrier.type]] # Declarations of future API removals and breaking changes in behavior. directory = "deprecation" name = "Deprecations (removal in next major release)" showcontent = true [[tool.towncrier.type]] # When something public gets removed in a breaking way. Could be # deprecated in an earlier release. directory = "breaking" name = "Removals and backward incompatible breaking changes" showcontent = true [[tool.towncrier.type]] # Notable updates to the documentation structure or build process. directory = "doc" name = "Improved documentation" showcontent = true [[tool.towncrier.type]] # Notes for downstreams about unobvious side effects and tooling. Changes # in the test invocation considerations and runtime assumptions. directory = "packaging" name = "Packaging updates and notes for downstreams" showcontent = true [[tool.towncrier.type]] # Stuff that affects the contributor experience. e.g. Running tests, # building the docs, setting up the development environment. directory = "contrib" name = "Contributor-facing changes" showcontent = true [[tool.towncrier.type]] # Changes that are hard to assign to any of the above categories. directory = "misc" name = "Miscellaneous internal changes" showcontent = true [tool.cibuildwheel] test-command = "" # don't build PyPy wheels, install from source instead skip = "pp*" [tool.codespell] skip = '.git,*.pdf,*.svg,Makefile,CONTRIBUTORS.txt,venvs,_build' ignore-words-list = 'te,ue' [tool.slotscheck] # TODO(3.13): Remove aiohttp.helpers once https://github.com/python/cpython/pull/106771 # is available in all supported cpython versions exclude-modules = "(^aiohttp\\.helpers)"