diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml index 9833b29b386..df55855d965 100644 --- a/.github/workflows/ci-cd.yml +++ b/.github/workflows/ci-cd.yml @@ -34,6 +34,13 @@ jobs: uses: actions/checkout@v3.0.2 with: submodules: true + - name: >- + Verify that `requirements/runtime-deps.in` + is in sync with `setup.cfg` + run: | + set -eEuo pipefail + make sync-direct-runtime-deps + git diff --exit-code -- requirements/runtime-deps.in - name: Setup Python uses: actions/setup-python@v4 with: @@ -50,10 +57,10 @@ jobs: python -m pip install -U pip wheel setuptools build twine - name: Install dependencies run: | - python -m pip install -r requirements/lint.txt -c requirements/constraints.txt + python -m pip install -r requirements/lint.in -c requirements/lint.txt - name: Install self run: | - python -m pip install . + python -m pip install . -c requirements/runtime-deps.txt env: AIOHTTP_NO_EXTENSIONS: 1 - name: Run linters @@ -64,7 +71,7 @@ jobs: sudo apt install libenchant-2-dev - name: Install spell checker run: | - pip install -r requirements/doc-spelling.txt -c requirements/constraints.txt + pip install -r requirements/doc-spelling.in -c requirements/doc-spelling.txt - name: Run docs spelling run: | # towncrier --yes # uncomment me after publishing a release @@ -187,7 +194,7 @@ jobs: python -m pip install -U pip wheel setuptools build twine - name: Install dependencies run: | - python -m pip install -r requirements/test.txt -c requirements/constraints.txt + python -m pip install -r requirements/test.in -c requirements/test.txt - name: Cythonize if: ${{ matrix.no-extensions == '' }} run: | @@ -275,8 +282,9 @@ jobs: run: | python -m pip install -U pip wheel setuptools build twine - name: Install cython - run: | - python -m pip install -r requirements/cython.txt -c requirements/constraints.txt + run: >- + python -m + pip install -r requirements/cython.in -c requirements/cython.txt - name: Restore llhttp generated files uses: actions/download-artifact@v3 with: @@ -337,8 +345,9 @@ jobs: run: | python -m pip install -U pip wheel setuptools build twine - name: Install cython - run: | - python -m pip install -r requirements/cython.txt -c requirements/constraints.txt + run: >- + python -m + pip install -r requirements/cython.in -c requirements/cython.txt - name: Restore llhttp generated files uses: actions/download-artifact@v3 with: @@ -374,9 +383,6 @@ jobs: uses: actions/checkout@v3.0.2 with: submodules: true - - name: Update pip, wheel, setuptools, build, twine - run: | - python -m pip install -U pip wheel setuptools build twine - name: Login run: | echo "${{ secrets.GITHUB_TOKEN }}" | gh auth login --with-token diff --git a/.github/workflows/post-dependabot.yml b/.github/workflows/post-dependabot.yml deleted file mode 100644 index 6b03881220f..00000000000 --- a/.github/workflows/post-dependabot.yml +++ /dev/null @@ -1,44 +0,0 @@ -name: Dependabot post-update -on: - pull_request_target: - action: [opened, synchronize, reopened] - branches: - - 'master' - - '[0-9].[0-9]+' - -concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number }} - cancel-in-progress: true - -jobs: - post-update: - if: ${{ github.actor == 'dependabot[bot]' }} - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3.0.2 - - name: Login - run: | - echo "${{ secrets.GITHUB_TOKEN }}" | gh auth login --with-token - - name: Checkout - run: | - gh pr checkout ${{ github.event.pull_request.number }} - - name: Setup Python - uses: actions/setup-python@v4.3.0 - - name: Cache PyPI - uses: actions/cache@v3.0.11 - with: - key: post-update - path: ~/.cache/pip - restore-keys: | - post-update- - - name: Update pip-tools - run: | - python -m pip install -U pip-tools - - name: Run pip-compile - run: | - make compile-deps - - name: Commit and push if needed - uses: stefanzweifel/git-auto-commit-action@v4 - with: - commit_message: Recompile requirements/constraints.txt diff --git a/.pip-tools.toml b/.pip-tools.toml new file mode 100644 index 00000000000..82737a2d4f6 --- /dev/null +++ b/.pip-tools.toml @@ -0,0 +1,4 @@ +[pip-tools] +allow-unsafe = true +resolver = "backtracking" +strip-extras = true diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index bb2a030e368..1abac3a1933 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -46,7 +46,7 @@ repos: ^docs/[^/]*\.svg$ - id: requirements-txt-fixer exclude: >- - ^requirements/constraints[.]txt$ + ^requirements/.*\.txt$ - id: trailing-whitespace - id: file-contents-sorter args: ['--ignore-case'] diff --git a/.readthedocs.yml b/.readthedocs.yml index 022dd5c3f53..7e9c11160e5 100644 --- a/.readthedocs.yml +++ b/.readthedocs.yml @@ -15,9 +15,11 @@ build: tools: python: "3.11" -python: - install: - - method: pip - path: . - - requirements: requirements/doc.txt + jobs: + post_create_environment: + - >- + pip install + . -c requirements/runtime-deps.txt + -r requirements/doc.in -c requirements/doc.txt + ... diff --git a/Makefile b/Makefile index 6d03e352107..1e0af017e3b 100644 --- a/Makefile +++ b/Makefile @@ -50,7 +50,7 @@ endif @python -m pip install --upgrade pip .install-cython: .update-pip $(call to-hash,requirements/cython.txt) - @python -m pip install -r requirements/cython.txt -c requirements/constraints.txt + @python -m pip install -r requirements/cython.in -c requirements/cython.txt @touch .install-cython aiohttp/_find_header.c: $(call to-hash,aiohttp/hdrs.py ./tools/gen.py) @@ -74,7 +74,7 @@ generate-llhttp: .llhttp-gen cythonize: .install-cython $(PYXS:.pyx=.c) .install-deps: .install-cython $(PYXS:.pyx=.c) $(call to-hash,$(CYS) $(REQS)) - @python -m pip install -r requirements/dev.txt -c requirements/constraints.txt + @python -m pip install -r requirements/dev.in -c requirements/dev.txt @touch .install-deps .PHONY: lint @@ -89,7 +89,7 @@ mypy: mypy .develop: .install-deps generate-llhttp $(call to-hash,$(PYS) $(CYS) $(CS)) - python -m pip install -e . -c requirements/constraints.txt + python -m pip install -e . -c requirements/runtime-deps.txt @touch .develop .PHONY: test @@ -170,15 +170,17 @@ doc: doc-spelling: @make -C docs spelling SPHINXOPTS="-W --keep-going -n -E" -.PHONY: compile-deps -compile-deps: .update-pip $(REQS) - pip-compile --no-header --allow-unsafe -q --strip-extras \ - -o requirements/constraints.txt \ - requirements/constraints.in - .PHONY: install install: .update-pip - @python -m pip install -r requirements/dev.txt -c requirements/constraints.txt + @python -m pip install -r requirements/dev.in -c requirements/dev.txt .PHONY: install-dev install-dev: .develop + +.PHONY: sync-direct-runtime-deps +sync-direct-runtime-deps: + @echo Updating 'requirements/runtime-deps.in' from 'setup.cfg'... >&2 + @echo '# Extracted from `setup.cfg` via `make sync-direct-runtime-deps`' > requirements/runtime-deps.in + @echo >> requirements/runtime-deps.in + @python -c 'from configparser import ConfigParser; from itertools import chain; from pathlib import Path; cfg = ConfigParser(); cfg.read_string(Path("setup.cfg").read_text()); print("\n".join(line.strip() for line in chain(cfg["options"].get("install_requires").splitlines(), "\n".join(cfg["options.extras_require"].values()).splitlines()) if line.strip()))' \ + >> requirements/runtime-deps.in diff --git a/requirements/base.in b/requirements/base.in new file mode 100644 index 00000000000..df67f78afde --- /dev/null +++ b/requirements/base.in @@ -0,0 +1,5 @@ +-r typing-extensions.in +-r runtime-deps.in + +gunicorn +uvloop; platform_system != "Windows" and implementation_name == "cpython" # MagicStack/uvloop#14 diff --git a/requirements/base.txt b/requirements/base.txt index 2c7629b8edc..bafc7297f43 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -1,15 +1,46 @@ --r multidict.txt --r typing-extensions.txt -# required c-ares will not build on windows -aiodns==3.0.0; sys_platform=="linux" or sys_platform=="darwin" +# +# This file is autogenerated by pip-compile with python 3.8 +# by the following command: +# +# pip-compile --allow-unsafe --output-file=requirements/base.txt --resolver=backtracking --strip-extras requirements/base.in +# +aiodns==3.0.0 ; sys_platform == "linux" or sys_platform == "darwin" + # via -r requirements/runtime-deps.in aiosignal==1.3.1 -async-generator==1.10 + # via -r requirements/runtime-deps.in async-timeout==4.0.2 + # via -r requirements/runtime-deps.in attrs==23.1.0 -Brotli==1.0.9 -cchardet==2.1.7; python_version < "3.10" # Unmaintained: aio-libs/aiohttp#6819 + # via -r requirements/runtime-deps.in +brotli==1.0.9 + # via -r requirements/runtime-deps.in +cchardet==2.1.7 ; python_version < "3.10" + # via -r requirements/runtime-deps.in +cffi==1.15.1 + # via pycares charset-normalizer==3.2.0 + # via -r requirements/runtime-deps.in frozenlist==1.4.0 + # via + # -r requirements/runtime-deps.in + # aiosignal gunicorn==21.2.0 -uvloop==0.17.0; platform_system!="Windows" and implementation_name=="cpython" and python_version<"3.9" # MagicStack/uvloop#14 + # via -r requirements/base.in +idna==3.4 + # via yarl +multidict==6.0.4 + # via + # -r requirements/runtime-deps.in + # yarl +packaging==23.1 + # via gunicorn +pycares==4.3.0 + # via aiodns +pycparser==2.21 + # via cffi +typing-extensions==4.7.1 + # via -r requirements/typing-extensions.in +uvloop==0.17.0 ; platform_system != "Windows" and implementation_name == "cpython" + # via -r requirements/base.in yarl==1.9.2 + # via -r requirements/runtime-deps.in diff --git a/requirements/broken-projects.in b/requirements/broken-projects.in new file mode 100644 index 00000000000..ec8af0724ba --- /dev/null +++ b/requirements/broken-projects.in @@ -0,0 +1,2 @@ +Pillow < 10 # https://github.com/blockdiag/sphinxcontrib-blockdiag/issues/26 +pydantic < 2 # looks like `python-on-whales` hasn't upgraded to support v2 diff --git a/requirements/constraints.in b/requirements/constraints.in index 7b166e59fa5..0d5180ddffc 100644 --- a/requirements/constraints.in +++ b/requirements/constraints.in @@ -1,4 +1,4 @@ --r cython.txt --r dev.txt --r doc-spelling.txt --r lint.txt +-r cython.in +-r dev.in +-r doc-spelling.in +-r lint.in diff --git a/requirements/constraints.txt b/requirements/constraints.txt index a08d9a903f3..a66e8598e30 100644 --- a/requirements/constraints.txt +++ b/requirements/constraints.txt @@ -1,21 +1,23 @@ +# +# This file is autogenerated by pip-compile with python 3.8 +# To update, run: +# +# pip-compile --allow-unsafe --output-file=requirements/constraints.txt --resolver=backtracking --strip-extras requirements/constraints.in +# aiodns==3.0.0 ; sys_platform == "linux" or sys_platform == "darwin" - # via -r requirements/base.txt + # via -r requirements/runtime-deps.in aiohttp-theme==0.1.6 - # via -r requirements/doc.txt + # via -r requirements/doc.in aioredis==2.0.1 - # via -r requirements/lint.txt + # via -r requirements/lint.in aiosignal==1.3.1 - # via -r requirements/base.txt + # via -r requirements/runtime-deps.in alabaster==0.7.12 # via sphinx -async-generator==1.10 - # via -r requirements/base.txt async-timeout==4.0.2 # via - # -r requirements/base.txt + # -r requirements/runtime-deps.in # aioredis -attrs==23.1.0 - # via -r requirements/base.txt babel==2.9.1 # via sphinx backports-entry-points-selectable==1.1.1 @@ -23,11 +25,11 @@ backports-entry-points-selectable==1.1.1 blockdiag==2.0.1 # via sphinxcontrib-blockdiag brotli==1.0.9 - # via - # -r requirements/base.txt - # -r requirements/test.txt + # via -r requirements/runtime-deps.in build==0.9.0 # via pip-tools +cchardet==2.1.7 ; python_version < "3.10" + # via -r requirements/runtime-deps.in certifi==2021.10.8 # via requests cffi==1.15.0 @@ -38,15 +40,16 @@ cfgv==3.3.1 # via pre-commit charset-normalizer==3.2.0 # via - # -r requirements/base.txt + # -r requirements/runtime-deps.in # requests cherry-picker==2.1.0 - # via -r requirements/dev.txt + # via -r requirements/dev.in click==8.0.3 # via # cherry-picker # click-default-group # pip-tools + # slotscheck # towncrier # typer # wait-for-it @@ -54,15 +57,14 @@ click-default-group==1.2.2 # via towncrier coverage==7.2.7 # via - # -r requirements/test.txt + # -r requirements/test.in # pytest-cov -cryptography==41.0.2 ; platform_machine != "i686" +cryptography==41.0.2 # via - # -r requirements/test.txt # pyjwt # trustme cython==3.0.0 - # via -r requirements/cython.txt + # via -r requirements/cython.in distlib==0.3.3 # via virtualenv docutils==0.20.1 @@ -72,19 +74,17 @@ exceptiongroup==1.1.2 filelock==3.3.2 # via virtualenv freezegun==1.1.0 - # via -r requirements/test.txt + # via -r requirements/test.in frozenlist==1.4.0 # via - # -r requirements/base.txt + # -r requirements/runtime-deps.in # aiosignal funcparserlib==1.0.1 - # via - # -r requirements/doc.txt - # blockdiag + # via blockdiag gidgethub==5.0.1 # via cherry-picker gunicorn==21.2.0 - # via -r requirements/base.txt + # via -r requirements/base.in identify==2.3.5 # via pre-commit idna==3.3 @@ -94,6 +94,10 @@ idna==3.3 # yarl imagesize==1.3.0 # via sphinx +importlib-metadata==6.8.0 + # via sphinx +importlib-resources==6.0.0 + # via towncrier incremental==21.3.0 # via towncrier iniconfig==1.1.1 @@ -106,12 +110,11 @@ markupsafe==2.0.1 # via jinja2 multidict==6.0.4 # via - # -r requirements/multidict.txt + # -r requirements/multidict.in + # -r requirements/runtime-deps.in # yarl mypy==1.4.1 ; implementation_name == "cpython" - # via - # -r requirements/lint.txt - # -r requirements/test.txt + # via -r requirements/lint.in mypy-extensions==1.0.0 # via mypy nodeenv==1.6.0 @@ -125,53 +128,54 @@ packaging==21.2 pep517==0.12.0 # via build pillow==9.2.0 - # via blockdiag + # via + # -c requirements/broken-projects.in + # blockdiag pip-tools==7.1.0 - # via -r requirements/dev.txt + # via -r requirements/dev.in platformdirs==2.4.0 # via virtualenv pluggy==1.0.0 # via pytest pre-commit==3.3.3 - # via -r requirements/lint.txt + # via -r requirements/lint.in proxy-py==2.4.4rc4 - # via -r requirements/test.txt + # via -r requirements/test.in pycares==4.3.0 # via aiodns pycparser==2.21 # via cffi pydantic==1.8.2 - # via python-on-whales + # via + # -c requirements/broken-projects.in + # python-on-whales pyenchant==3.2.2 # via sphinxcontrib-spelling pygments==2.15.1 - # via - # -r requirements/doc.txt - # sphinx + # via sphinx pyjwt==2.3.0 # via gidgethub pyparsing==2.4.7 # via packaging pytest==7.4.0 # via - # -r requirements/lint.txt - # -r requirements/test.txt + # -r requirements/lint.in # pytest-cov # pytest-mock pytest-cov==4.1.0 - # via -r requirements/test.txt + # via -r requirements/test.in pytest-mock==3.11.1 - # via -r requirements/test.txt + # via -r requirements/test.in python-dateutil==2.8.2 # via freezegun python-on-whales==0.63.0 - # via -r requirements/test.txt + # via -r requirements/test.in pytz==2021.3 # via babel pyyaml==6.0.1 # via pre-commit re-assert==1.1.0 - # via -r requirements/test.txt + # via -r requirements/test.in regex==2021.11.10 # via re-assert requests==2.31.0 @@ -180,23 +184,25 @@ requests==2.31.0 # python-on-whales # sphinx setuptools-git==1.2 - # via -r requirements/test.txt + # via -r requirements/test.in six==1.16.0 # via # python-dateutil # virtualenv +slotscheck==0.17.0 + # via -r requirements/lint.in snowballstemmer==2.1.0 # via sphinx sphinx==7.1.1 # via - # -r requirements/doc.txt + # -r requirements/doc.in # sphinxcontrib-blockdiag # sphinxcontrib-spelling # sphinxcontrib-towncrier sphinxcontrib-applehelp==1.0.2 # via sphinx sphinxcontrib-blockdiag==3.0.0 - # via -r requirements/doc.txt + # via -r requirements/doc.in sphinxcontrib-devhelp==1.0.2 # via sphinx sphinxcontrib-htmlhelp==2.0.0 @@ -208,9 +214,9 @@ sphinxcontrib-qthelp==1.0.3 sphinxcontrib-serializinghtml==1.1.5 # via sphinx sphinxcontrib-spelling==8.0.0 ; platform_system != "Windows" - # via -r requirements/doc-spelling.txt + # via -r requirements/doc-spelling.in sphinxcontrib-towncrier==0.3.2a0 - # via -r requirements/doc.txt + # via -r requirements/doc.in toml==0.10.2 # via cherry-picker tomli==1.2.2 @@ -221,20 +227,21 @@ tomli==1.2.2 # pep517 # pip-tools # pytest + # slotscheck # towncrier towncrier==23.6.0 # via - # -r requirements/doc.txt + # -r requirements/doc.in # sphinxcontrib-towncrier tqdm==4.62.3 # via python-on-whales trustme==1.1.0 ; platform_machine != "i686" - # via -r requirements/test.txt + # via -r requirements/test.in typer==0.6.1 # via python-on-whales typing-extensions==4.1.1 # via - # -r requirements/typing-extensions.txt + # -r requirements/typing-extensions.in # aioredis # mypy # pydantic @@ -244,17 +251,21 @@ uritemplate==4.1.1 urllib3==1.26.7 # via requests uvloop==0.17.0 ; platform_system != "Windows" - # via -r requirements/lint.txt + # via -r requirements/lint.in virtualenv==20.10.0 # via pre-commit wait-for-it==2.2.2 - # via -r requirements/test.txt + # via -r requirements/test.in webcolors==1.11.1 # via blockdiag wheel==0.37.0 # via pip-tools yarl==1.9.2 - # via -r requirements/base.txt + # via -r requirements/runtime-deps.in +zipp==3.16.2 + # via + # importlib-metadata + # importlib-resources # The following packages are considered to be unsafe in a requirements file: pip==23.2.1 diff --git a/requirements/cython.in b/requirements/cython.in new file mode 100644 index 00000000000..ee07533e17c --- /dev/null +++ b/requirements/cython.in @@ -0,0 +1,4 @@ +-r multidict.in +-r typing-extensions.in # required for parsing aiohttp/hdrs.py by tools/gen.py + +Cython diff --git a/requirements/cython.txt b/requirements/cython.txt index 3f996dbf400..66e5c632bbd 100644 --- a/requirements/cython.txt +++ b/requirements/cython.txt @@ -1,3 +1,12 @@ --r multidict.txt --r typing-extensions.txt # required for parsing aiohttp/hdrs.py by tools/gen.py +# +# This file is autogenerated by pip-compile with python 3.8 +# by the following command: +# +# pip-compile --allow-unsafe --output-file=requirements/cython.txt --resolver=backtracking --strip-extras requirements/cython.in +# cython==3.0.0 + # via -r requirements/cython.in +multidict==6.0.4 + # via -r requirements/multidict.in +typing-extensions==4.7.1 + # via -r requirements/typing-extensions.in diff --git a/requirements/dev.in b/requirements/dev.in new file mode 100644 index 00000000000..780eae45f5e --- /dev/null +++ b/requirements/dev.in @@ -0,0 +1,6 @@ +-r lint.in +-r test.in +-r doc.in + +cherry_picker +pip-tools diff --git a/requirements/dev.txt b/requirements/dev.txt index e2260f720c8..47e45ba6391 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -1,5 +1,271 @@ --r lint.txt --r test.txt --r doc.txt -cherry_picker==2.1.0 +# +# This file is autogenerated by pip-compile with python 3.8 +# To update, run: +# +# pip-compile --allow-unsafe --output-file=requirements/dev.txt --resolver=backtracking --strip-extras requirements/dev.in +# +aiodns==3.0.0 ; sys_platform == "linux" or sys_platform == "darwin" + # via -r requirements/runtime-deps.in +aiohttp-theme==0.1.6 + # via -r requirements/doc.in +aioredis==2.0.1 + # via -r requirements/lint.in +aiosignal==1.3.1 + # via -r requirements/runtime-deps.in +alabaster==0.7.13 + # via sphinx +async-timeout==4.0.2 + # via + # -r requirements/runtime-deps.in + # aioredis +attrs==23.1.0 + # via -r requirements/runtime-deps.in +babel==2.12.1 + # via sphinx +blockdiag==3.0.0 + # via sphinxcontrib-blockdiag +brotli==1.0.9 + # via -r requirements/runtime-deps.in +build==0.10.0 + # via pip-tools +cchardet==2.1.7 ; python_version < "3.10" + # via -r requirements/runtime-deps.in +certifi==2023.7.22 + # via requests +cffi==1.15.1 + # via + # cryptography + # pycares +cfgv==3.3.1 + # via pre-commit +charset-normalizer==3.2.0 + # via + # -r requirements/runtime-deps.in + # requests +cherry-picker==2.1.0 + # via -r requirements/dev.in +click==8.1.6 + # via + # cherry-picker + # click-default-group + # pip-tools + # slotscheck + # towncrier + # typer + # wait-for-it +click-default-group==1.2.2 + # via towncrier +coverage==7.2.7 + # via + # -r requirements/test.in + # pytest-cov +cryptography==41.0.3 + # via + # pyjwt + # trustme +distlib==0.3.7 + # via virtualenv +docutils==0.20.1 + # via sphinx +exceptiongroup==1.1.2 + # via pytest +filelock==3.12.2 + # via virtualenv +freezegun==1.2.2 + # via -r requirements/test.in +frozenlist==1.4.0 + # via + # -r requirements/runtime-deps.in + # aiosignal +funcparserlib==1.0.1 + # via blockdiag +gidgethub==5.3.0 + # via cherry-picker +gunicorn==21.2.0 + # via -r requirements/base.in +identify==2.5.26 + # via pre-commit +idna==3.4 + # via + # requests + # trustme + # yarl +imagesize==1.4.1 + # via sphinx +importlib-metadata==6.8.0 + # via sphinx +importlib-resources==6.0.0 + # via towncrier +incremental==22.10.0 + # via towncrier +iniconfig==2.0.0 + # via pytest +jinja2==3.1.2 + # via + # sphinx + # towncrier +markupsafe==2.1.3 + # via jinja2 +multidict==6.0.4 + # via + # -r requirements/runtime-deps.in + # yarl +mypy==1.4.1 ; implementation_name == "cpython" + # via + # -r requirements/lint.in + # -r requirements/test.in +mypy-extensions==1.0.0 + # via mypy +nodeenv==1.8.0 + # via pre-commit +packaging==23.1 + # via + # build + # gunicorn + # pytest + # sphinx +pillow==9.5.0 + # via + # -c requirements/broken-projects.in + # blockdiag pip-tools==7.1.0 + # via -r requirements/dev.in +platformdirs==3.10.0 + # via virtualenv +pluggy==1.2.0 + # via pytest +pre-commit==3.3.3 + # via -r requirements/lint.in +proxy-py==2.4.3 + # via -r requirements/test.in +pycares==4.3.0 + # via aiodns +pycparser==2.21 + # via cffi +pydantic==1.10.12 + # via + # -c requirements/broken-projects.in + # python-on-whales +pygments==2.15.1 + # via sphinx +pyjwt==2.8.0 + # via gidgethub +pyproject-hooks==1.0.0 + # via build +pytest==7.4.0 + # via + # -r requirements/lint.in + # -r requirements/test.in + # pytest-cov + # pytest-mock +pytest-cov==4.1.0 + # via -r requirements/test.in +pytest-mock==3.11.1 + # via -r requirements/test.in +python-dateutil==2.8.2 + # via freezegun +python-on-whales==0.64.0 + # via -r requirements/test.in +pytz==2023.3 + # via babel +pyyaml==6.0.1 + # via pre-commit +re-assert==1.1.0 + # via -r requirements/test.in +regex==2023.6.3 + # via re-assert +requests==2.31.0 + # via + # cherry-picker + # python-on-whales + # sphinx +setuptools-git==1.2 + # via -r requirements/test.in +six==1.16.0 + # via python-dateutil +slotscheck==0.17.0 + # via -r requirements/lint.in +snowballstemmer==2.2.0 + # via sphinx +sphinx==7.1.2 + # via + # -r requirements/doc.in + # sphinxcontrib-blockdiag + # sphinxcontrib-towncrier +sphinxcontrib-applehelp==1.0.4 + # via sphinx +sphinxcontrib-blockdiag==3.0.0 + # via -r requirements/doc.in +sphinxcontrib-devhelp==1.0.2 + # via sphinx +sphinxcontrib-htmlhelp==2.0.1 + # via sphinx +sphinxcontrib-jsmath==1.0.1 + # via sphinx +sphinxcontrib-qthelp==1.0.3 + # via sphinx +sphinxcontrib-serializinghtml==1.1.5 + # via sphinx +sphinxcontrib-towncrier==0.3.2a0 + # via -r requirements/doc.in +toml==0.10.2 + # via cherry-picker +tomli==2.0.1 + # via + # build + # coverage + # mypy + # pip-tools + # pyproject-hooks + # pytest + # slotscheck + # towncrier +towncrier==23.6.0 + # via + # -r requirements/doc.in + # sphinxcontrib-towncrier +tqdm==4.65.0 + # via python-on-whales +trustme==1.1.0 ; platform_machine != "i686" + # via -r requirements/test.in +typer==0.9.0 + # via python-on-whales +typing-extensions==4.7.1 + # via + # -r requirements/typing-extensions.in + # aioredis + # mypy + # pydantic + # python-on-whales + # typer +uritemplate==4.1.1 + # via gidgethub +urllib3==2.0.4 + # via requests +uvloop==0.17.0 ; platform_system != "Windows" and implementation_name == "cpython" + # via + # -r requirements/base.in + # -r requirements/lint.in +virtualenv==20.24.2 + # via pre-commit +wait-for-it==2.2.2 + # via -r requirements/test.in +webcolors==1.13 + # via blockdiag +wheel==0.41.0 + # via pip-tools +yarl==1.9.2 + # via -r requirements/runtime-deps.in +zipp==3.16.2 + # via + # importlib-metadata + # importlib-resources + +# The following packages are considered to be unsafe in a requirements file: +pip==23.2.1 + # via pip-tools +setuptools==68.0.0 + # via + # blockdiag + # nodeenv + # pip-tools diff --git a/requirements/doc-spelling.in b/requirements/doc-spelling.in new file mode 100644 index 00000000000..2468c2b5637 --- /dev/null +++ b/requirements/doc-spelling.in @@ -0,0 +1,3 @@ +-r doc.in + +sphinxcontrib-spelling; platform_system!="Windows" # We only use it in GitHub Actions CI/CD diff --git a/requirements/doc-spelling.txt b/requirements/doc-spelling.txt index 4f4b64425d3..f286326eb8c 100644 --- a/requirements/doc-spelling.txt +++ b/requirements/doc-spelling.txt @@ -1,2 +1,102 @@ --r doc.txt -sphinxcontrib-spelling==8.0.0; platform_system!="Windows" # We only use it in Travis CI +# +# This file is autogenerated by pip-compile with python 3.8 +# To update, run: +# +# pip-compile --allow-unsafe --output-file=requirements/doc-spelling.txt --resolver=backtracking --strip-extras requirements/doc-spelling.in +# +aiohttp-theme==0.1.6 + # via -r requirements/doc.in +alabaster==0.7.13 + # via sphinx +babel==2.12.1 + # via sphinx +blockdiag==3.0.0 + # via sphinxcontrib-blockdiag +certifi==2023.7.22 + # via requests +charset-normalizer==3.2.0 + # via requests +click==8.1.6 + # via + # click-default-group + # towncrier +click-default-group==1.2.2 + # via towncrier +docutils==0.20.1 + # via sphinx +funcparserlib==1.0.1 + # via blockdiag +idna==3.4 + # via requests +imagesize==1.4.1 + # via sphinx +importlib-metadata==6.8.0 + # via sphinx +importlib-resources==6.0.0 + # via towncrier +incremental==22.10.0 + # via towncrier +jinja2==3.1.2 + # via + # sphinx + # towncrier +markupsafe==2.1.3 + # via jinja2 +packaging==23.1 + # via sphinx +pillow==9.5.0 + # via + # -c requirements/broken-projects.in + # blockdiag +pyenchant==3.2.2 + # via sphinxcontrib-spelling +pygments==2.15.1 + # via sphinx +pytz==2023.3 + # via babel +requests==2.31.0 + # via sphinx +snowballstemmer==2.2.0 + # via sphinx +sphinx==7.1.2 + # via + # -r requirements/doc.in + # sphinxcontrib-blockdiag + # sphinxcontrib-spelling + # sphinxcontrib-towncrier +sphinxcontrib-applehelp==1.0.4 + # via sphinx +sphinxcontrib-blockdiag==3.0.0 + # via -r requirements/doc.in +sphinxcontrib-devhelp==1.0.2 + # via sphinx +sphinxcontrib-htmlhelp==2.0.1 + # via sphinx +sphinxcontrib-jsmath==1.0.1 + # via sphinx +sphinxcontrib-qthelp==1.0.3 + # via sphinx +sphinxcontrib-serializinghtml==1.1.5 + # via sphinx +sphinxcontrib-spelling==8.0.0 ; platform_system != "Windows" + # via -r requirements/doc-spelling.in +sphinxcontrib-towncrier==0.3.2a0 + # via -r requirements/doc.in +tomli==2.0.1 + # via towncrier +towncrier==23.6.0 + # via + # -r requirements/doc.in + # sphinxcontrib-towncrier +urllib3==2.0.4 + # via requests +webcolors==1.13 + # via blockdiag +zipp==3.16.2 + # via + # importlib-metadata + # importlib-resources + +# The following packages are considered to be unsafe in a requirements file: +setuptools==68.0.0 + # via blockdiag diff --git a/requirements/doc.in b/requirements/doc.in new file mode 100644 index 00000000000..1e0b6568724 --- /dev/null +++ b/requirements/doc.in @@ -0,0 +1,7 @@ +-c broken-projects.in + +aiohttp-theme +sphinx +sphinxcontrib-blockdiag +sphinxcontrib-towncrier +towncrier diff --git a/requirements/doc.txt b/requirements/doc.txt index 74b791187a6..f405fe0dee0 100644 --- a/requirements/doc.txt +++ b/requirements/doc.txt @@ -1,8 +1,97 @@ +# +# This file is autogenerated by pip-compile with python 3.8 +# To update, run: +# +# pip-compile --allow-unsafe --output-file=requirements/doc.txt --resolver=backtracking --strip-extras requirements/doc.in +# aiohttp-theme==0.1.6 -# Temp fix till updated: https://github.com/blockdiag/blockdiag/pull/148 + # via -r requirements/doc.in +alabaster==0.7.13 + # via sphinx +babel==2.12.1 + # via sphinx +blockdiag==3.0.0 + # via sphinxcontrib-blockdiag +certifi==2023.7.22 + # via requests +charset-normalizer==3.2.0 + # via requests +click==7.1.2 + # via + # click-default-group + # towncrier +click-default-group==1.2.2 + # via towncrier +docutils==0.20.1 + # via sphinx funcparserlib==1.0.1 + # via blockdiag +idna==3.4 + # via requests +imagesize==1.4.1 + # via sphinx +importlib-metadata==6.8.0 + # via sphinx +importlib-resources==6.0.0 + # via towncrier +incremental==22.10.0 + # via towncrier +jinja2==3.1.2 + # via + # sphinx + # towncrier +markupsafe==2.1.3 + # via jinja2 +packaging==23.1 + # via sphinx +pillow==9.5.0 + # via + # -c requirements/broken-projects.in + # blockdiag pygments==2.15.1 -sphinx==7.1.1 + # via sphinx +pytz==2023.3 + # via babel +requests==2.31.0 + # via sphinx +snowballstemmer==2.2.0 + # via sphinx +sphinx==7.1.2 + # via + # -r requirements/doc.in + # sphinxcontrib-blockdiag + # sphinxcontrib-towncrier +sphinxcontrib-applehelp==1.0.4 + # via sphinx sphinxcontrib-blockdiag==3.0.0 + # via -r requirements/doc.in +sphinxcontrib-devhelp==1.0.2 + # via sphinx +sphinxcontrib-htmlhelp==2.0.1 + # via sphinx +sphinxcontrib-jsmath==1.0.1 + # via sphinx +sphinxcontrib-qthelp==1.0.3 + # via sphinx +sphinxcontrib-serializinghtml==1.1.5 + # via sphinx sphinxcontrib-towncrier==0.3.2a0 + # via -r requirements/doc.in +tomli==2.0.1 + # via towncrier towncrier==23.6.0 + # via + # -r requirements/doc.in + # sphinxcontrib-towncrier +urllib3==2.0.4 + # via requests +webcolors==1.13 + # via blockdiag +zipp==3.16.2 + # via + # importlib-metadata + # importlib-resources + +# The following packages are considered to be unsafe in a requirements file: +setuptools==68.0.0 + # via blockdiag diff --git a/requirements/lint.in b/requirements/lint.in new file mode 100644 index 00000000000..34616155912 --- /dev/null +++ b/requirements/lint.in @@ -0,0 +1,8 @@ +-r typing-extensions.in + +aioredis +mypy; implementation_name == "cpython" +pre-commit +pytest +slotscheck +uvloop; platform_system != "Windows" diff --git a/requirements/lint.txt b/requirements/lint.txt index 0b52fb51ec3..c86216ee1a7 100644 --- a/requirements/lint.txt +++ b/requirements/lint.txt @@ -1,6 +1,62 @@ --r typing-extensions.txt +# +# This file is autogenerated by pip-compile with python 3.8 +# by the following command: +# +# pip-compile --allow-unsafe --output-file=requirements/lint.txt --resolver=backtracking --strip-extras requirements/lint.in +# aioredis==2.0.1 -mypy==1.4.1; implementation_name=="cpython" + # via -r requirements/lint.in +async-timeout==4.0.2 + # via aioredis +cfgv==3.3.1 + # via pre-commit +click==8.1.6 + # via slotscheck +distlib==0.3.7 + # via virtualenv +exceptiongroup==1.1.2 + # via pytest +filelock==3.12.2 + # via virtualenv +identify==2.5.26 + # via pre-commit +iniconfig==2.0.0 + # via pytest +mypy==1.4.1 ; implementation_name == "cpython" + # via -r requirements/lint.in +mypy-extensions==1.0.0 + # via mypy +nodeenv==1.8.0 + # via pre-commit +packaging==23.1 + # via pytest +platformdirs==3.10.0 + # via virtualenv +pluggy==1.2.0 + # via pytest pre-commit==3.3.3 + # via -r requirements/lint.in pytest==7.4.0 -uvloop==0.17.0; platform_system!="Windows" + # via -r requirements/lint.in +pyyaml==6.0.1 + # via pre-commit +slotscheck==0.17.0 + # via -r requirements/lint.in +tomli==2.0.1 + # via + # mypy + # pytest + # slotscheck +typing-extensions==4.7.1 + # via + # -r requirements/typing-extensions.in + # aioredis + # mypy +uvloop==0.17.0 ; platform_system != "Windows" + # via -r requirements/lint.in +virtualenv==20.24.2 + # via pre-commit + +# The following packages are considered to be unsafe in a requirements file: +setuptools==68.0.0 + # via nodeenv diff --git a/requirements/multidict.in b/requirements/multidict.in new file mode 100644 index 00000000000..afcecdff082 --- /dev/null +++ b/requirements/multidict.in @@ -0,0 +1 @@ +multidict diff --git a/requirements/multidict.txt b/requirements/multidict.txt index 08a91b3d9ef..9c4f984cd75 100644 --- a/requirements/multidict.txt +++ b/requirements/multidict.txt @@ -1 +1,8 @@ +# +# This file is autogenerated by pip-compile with python 3.8 +# by the following command: +# +# pip-compile --allow-unsafe --output-file=requirements/multidict.txt --resolver=backtracking --strip-extras requirements/multidict.in +# multidict==6.0.4 + # via -r requirements/multidict.in diff --git a/requirements/runtime-deps.in b/requirements/runtime-deps.in new file mode 100644 index 00000000000..51cff8babfc --- /dev/null +++ b/requirements/runtime-deps.in @@ -0,0 +1,12 @@ +# Extracted from `setup.cfg` via `make sync-direct-runtime-deps` + +attrs >= 17.3.0 +charset-normalizer >=2.0, < 4.0 +multidict >=4.5, < 7.0 +async-timeout >= 4.0, < 5.0 +yarl >= 1.0, < 2.0 +frozenlist >= 1.1.1 +aiosignal >= 1.1.2 +aiodns; sys_platform=="linux" or sys_platform=="darwin" +Brotli +cchardet; python_version < "3.10" diff --git a/requirements/runtime-deps.txt b/requirements/runtime-deps.txt new file mode 100644 index 00000000000..9feec9950d4 --- /dev/null +++ b/requirements/runtime-deps.txt @@ -0,0 +1,38 @@ +# +# This file is autogenerated by pip-compile with python 3.8 +# by the following command: +# +# pip-compile --allow-unsafe --output-file=requirements/runtime-deps.txt --resolver=backtracking --strip-extras requirements/runtime-deps.in +# +aiodns==3.0.0 ; sys_platform == "linux" or sys_platform == "darwin" + # via -r requirements/runtime-deps.in +aiosignal==1.3.1 + # via -r requirements/runtime-deps.in +async-timeout==4.0.2 + # via -r requirements/runtime-deps.in +attrs==23.1.0 + # via -r requirements/runtime-deps.in +brotli==1.0.9 + # via -r requirements/runtime-deps.in +cchardet==2.1.7 ; python_version < "3.10" + # via -r requirements/runtime-deps.in +cffi==1.15.1 + # via pycares +charset-normalizer==3.2.0 + # via -r requirements/runtime-deps.in +frozenlist==1.4.0 + # via + # -r requirements/runtime-deps.in + # aiosignal +idna==3.4 + # via yarl +multidict==6.0.4 + # via + # -r requirements/runtime-deps.in + # yarl +pycares==4.3.0 + # via aiodns +pycparser==2.21 + # via cffi +yarl==1.9.2 + # via -r requirements/runtime-deps.in diff --git a/requirements/test.in b/requirements/test.in new file mode 100644 index 00000000000..9e9161272bf --- /dev/null +++ b/requirements/test.in @@ -0,0 +1,15 @@ +-r base.in +-c broken-projects.in + +coverage +freezegun +mypy; implementation_name == "cpython" +proxy.py +pytest +pytest-cov +pytest-mock +python-on-whales +re-assert +setuptools-git +trustme; platform_machine != "i686" # no 32-bit wheels +wait-for-it diff --git a/requirements/test.txt b/requirements/test.txt index dfa7485b80b..e29ad963ea3 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -1,15 +1,128 @@ --r base.txt -Brotli==1.0.9 +# +# This file is autogenerated by pip-compile with python 3.8 +# by the following command: +# +# pip-compile --allow-unsafe --output-file=requirements/test.txt --resolver=backtracking --strip-extras requirements/test.in +# +aiodns==3.0.0 ; sys_platform == "linux" or sys_platform == "darwin" + # via -r requirements/runtime-deps.in +aiosignal==1.3.1 + # via -r requirements/runtime-deps.in +async-timeout==4.0.2 + # via -r requirements/runtime-deps.in +attrs==23.1.0 + # via -r requirements/runtime-deps.in +brotli==1.0.9 + # via -r requirements/runtime-deps.in +cchardet==2.1.7 ; python_version < "3.10" + # via -r requirements/runtime-deps.in +certifi==2023.7.22 + # via requests +cffi==1.15.1 + # via + # cryptography + # pycares +charset-normalizer==3.2.0 + # via + # -r requirements/runtime-deps.in + # requests +click==8.1.6 + # via + # typer + # wait-for-it coverage==7.2.7 -cryptography==41.0.2; platform_machine!="i686" # no 32-bit wheels; no python 3.9 wheels yet + # via + # -r requirements/test.in + # pytest-cov +cryptography==41.0.2 + # via trustme +exceptiongroup==1.1.2 + # via pytest freezegun==1.1.0 -mypy==1.4.1; implementation_name=="cpython" -proxy.py==2.4.4rc4 + # via -r requirements/test.in +frozenlist==1.4.0 + # via + # -r requirements/runtime-deps.in + # aiosignal +gunicorn==21.2.0 + # via -r requirements/base.in +idna==3.4 + # via + # requests + # trustme + # yarl +iniconfig==2.0.0 + # via pytest +multidict==6.0.4 + # via + # -r requirements/runtime-deps.in + # yarl +mypy==1.4.1 ; implementation_name == "cpython" + # via -r requirements/test.in +mypy-extensions==1.0.0 + # via mypy +packaging==23.1 + # via + # gunicorn + # pytest +pluggy==1.2.0 + # via pytest +proxy-py==2.4.4rc4 + # via -r requirements/test.in +pycares==4.3.0 + # via aiodns +pycparser==2.21 + # via cffi +pydantic==1.10.12 + # via + # -c requirements/broken-projects.in + # python-on-whales pytest==7.4.0 + # via + # -r requirements/test.in + # pytest-cov + # pytest-mock pytest-cov==4.1.0 + # via -r requirements/test.in pytest-mock==3.11.1 + # via -r requirements/test.in +python-dateutil==2.8.2 + # via freezegun python-on-whales==0.63.0 + # via -r requirements/test.in re-assert==1.1.0 + # via -r requirements/test.in +regex==2023.6.3 + # via re-assert +requests==2.31.0 + # via python-on-whales setuptools-git==1.2 -trustme==1.1.0; platform_machine!="i686" # no 32-bit wheels + # via -r requirements/test.in +six==1.16.0 + # via python-dateutil +tomli==2.0.1 + # via + # coverage + # mypy + # pytest +tqdm==4.65.0 + # via python-on-whales +trustme==1.1.0 ; platform_machine != "i686" + # via -r requirements/test.in +typer==0.9.0 + # via python-on-whales +typing-extensions==4.7.1 + # via + # -r requirements/typing-extensions.in + # mypy + # pydantic + # python-on-whales + # typer +urllib3==2.0.4 + # via requests +uvloop==0.17.0 ; platform_system != "Windows" and implementation_name == "cpython" + # via -r requirements/base.in wait-for-it==2.2.2 + # via -r requirements/test.in +yarl==1.9.2 + # via -r requirements/runtime-deps.in diff --git a/requirements/typing-extensions.in b/requirements/typing-extensions.in new file mode 100644 index 00000000000..5fd4f05f341 --- /dev/null +++ b/requirements/typing-extensions.in @@ -0,0 +1 @@ +typing_extensions diff --git a/requirements/typing-extensions.txt b/requirements/typing-extensions.txt index 37e36b213d3..c45af7262f7 100644 --- a/requirements/typing-extensions.txt +++ b/requirements/typing-extensions.txt @@ -1 +1,8 @@ -typing_extensions==4.1.1 +# +# This file is autogenerated by pip-compile with python 3.8 +# by the following command: +# +# pip-compile --allow-unsafe --output-file=requirements/typing-extensions.txt --resolver=backtracking --strip-extras requirements/typing-extensions.in +# +typing-extensions==4.7.1 + # via -r requirements/typing-extensions.in diff --git a/setup.cfg b/setup.cfg index 88c76c9154c..8647c380daf 100644 --- a/setup.cfg +++ b/setup.cfg @@ -50,7 +50,7 @@ install_requires = attrs >= 17.3.0 charset-normalizer >=2.0, < 4.0 multidict >=4.5, < 7.0 - async_timeout >= 4.0.0a3, < 5.0 + async-timeout >= 4.0, < 5.0 yarl >= 1.0, < 2.0 frozenlist >= 1.1.1 aiosignal >= 1.1.2 @@ -62,8 +62,10 @@ install_requires = [options.extras_require] speedups = - aiodns + # required c-ares (aiodns' backend) will not build on windows + aiodns; sys_platform=="linux" or sys_platform=="darwin" Brotli + # cchardet is unmaintained: aio-libs/aiohttp#6819 cchardet; python_version < "3.10" [options.packages.find] @@ -94,7 +96,7 @@ per-file-ignores = # flake8-requirements known-modules = proxy.py:[proxy] -requirements-file = requirements/test.txt +requirements-file = requirements/test.in requirements-max-depth = 4 [isort]