From 36694cc66495ad2a8fc86565a391e41e52b9ea4e Mon Sep 17 00:00:00 2001 From: "Patrick M. Niedzielski" Date: Fri, 18 Sep 2026 16:57:26 -0400 Subject: [PATCH] wip! Move dependencies from requirements.txt to pyproject.toml --- .github/workflows/build.yaml | 15 +++------------ .github/workflows/codeql.yaml | 2 +- Makefile | 8 +++----- docs/BUILD.md | 2 +- news/77.misc.rst | 1 + pyproject.toml | 31 +++++++++++++++++++++++++++++++ requirements-dev.txt | 5 ----- requirements-lint-docs.txt | 9 --------- requirements-test-coverage.txt | 4 ---- requirements-test.txt | 3 --- tox.ini | 6 +++--- 11 files changed, 43 insertions(+), 43 deletions(-) create mode 100644 news/77.misc.rst delete mode 100644 requirements-dev.txt delete mode 100644 requirements-lint-docs.txt delete mode 100644 requirements-test-coverage.txt delete mode 100644 requirements-test.txt diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 620f312..2eb6f90 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -117,9 +117,6 @@ jobs: python-version: ${{ matrix.python-version }} activate-environment: true venv-path: venv - - name: Install Python dependencies - run: | - uv pip install -r requirements-dev.txt - name: Install package manager dependencies run: | sudo apt-get update @@ -164,8 +161,8 @@ jobs: PKG_CONFIG_PATH: /usr/lib/x86_64-linux-gnu/pkgconfig:/opt/bb/lib64/pkgconfig:./blazingmq_artifacts/lib64/pkgconfig run: | ulimit -c unlimited - make test-build \ - && make test-install PIP_INSTALL="uv pip install" \ + make test-install PIP_INSTALL="uv pip install" \ + && make test-build \ && make check - name: Print backtrace from core dump if: failure() @@ -207,15 +204,12 @@ jobs: python-version: "3.15" activate-environment: true venv-path: venv - - name: Install Python dependencies - run: | - uv pip install -r requirements-dev.txt - name: Set up dependencies run: sudo apt-get install clang-format - name: Install Package run: | - uv pip install -e . + uv pip install -e ".[dev]" env: PREFIX: blazingmq_artifacts PYTHON: ./venv/bin/python @@ -255,9 +249,6 @@ jobs: python-version: "3.15" activate-environment: true venv-path: venv - - name: Install Python dependencies - run: | - uv pip install -r requirements-dev.txt - name: Setup Core Dumps config run: | sudo mkdir /cores diff --git a/.github/workflows/codeql.yaml b/.github/workflows/codeql.yaml index 78dd2cd..c268631 100644 --- a/.github/workflows/codeql.yaml +++ b/.github/workflows/codeql.yaml @@ -156,7 +156,7 @@ jobs: - name: Install Python dependencies run: | - uv pip install -r requirements-dev.txt + uv pip install -r pyproject.toml --extra test - name: Install package manager dependencies run: | diff --git a/Makefile b/Makefile index 543effc..16763ba 100644 --- a/Makefile +++ b/Makefile @@ -38,13 +38,11 @@ install-sdist: dist .PHONY: coverage-install coverage-install: - $(ENV) CYTHON_TEST_MACROS=1 $(PIP_INSTALL) -r requirements-test-coverage.txt - $(ENV) CYTHON_TEST_MACROS=1 $(PIP_INSTALL) -e . + $(ENV) CYTHON_TEST_MACROS=1 $(PIP_INSTALL) -e ".[coverage]" .PHONY: test-install test-install: - $(ENV) CYTHON_TEST_MACROS=1 $(PIP_INSTALL) -r requirements-test.txt - $(ENV) CYTHON_TEST_MACROS=1 $(PIP_INSTALL) -e . + $(ENV) CYTHON_TEST_MACROS=1 $(PIP_INSTALL) -e ".[test]" .PHONY: build build: @@ -64,7 +62,7 @@ dist: .PHONY: doc-deps doc-deps: - $(PIP_INSTALL) -r requirements-lint-docs.txt + $(PIP_INSTALL) -e ".[docs]" .PHONY: docs docs: diff --git a/docs/BUILD.md b/docs/BUILD.md index 9c7b604..4f75904 100644 --- a/docs/BUILD.md +++ b/docs/BUILD.md @@ -67,7 +67,7 @@ Additional `make` targets are provided, such as for test coverage. Dependencies for these can be installed as follows: ```shell -python3.9 -m pip install -r requirements-dev.txt +python3.9 -m pip install -e ".[dev]" ``` And now you should be able to run `make coverage`. diff --git a/news/77.misc.rst b/news/77.misc.rst new file mode 100644 index 0000000..97753f9 --- /dev/null +++ b/news/77.misc.rst @@ -0,0 +1 @@ +Move development dependencies from ``requirements*.txt`` files into ``pyproject.toml`` optional-dependencies. diff --git a/pyproject.toml b/pyproject.toml index fa9b58d..d3a651a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -34,6 +34,37 @@ classifiers = [ "Typing :: Typed", ] +[project.optional-dependencies] +test = [ + "mock", + "pytest", + "pkgconfig", + "Cython>=3,<4", + "setuptools", +] +coverage = [ + "blazingmq[test]", + "pytest-cov", +] +lint = [ + "black", + "flake8", + "isort", + "mypy", + "types-enum34", +] +docs = [ + "myst-parser", + "Sphinx", + "sphinx_rtd_theme", + "towncrier", +] +dev = [ + "blazingmq[test,coverage,lint,docs]", + "tox", + "setuptools", +] + [tool.setuptools] packages = ["blazingmq"] package-dir = {"" = "src"} diff --git a/requirements-dev.txt b/requirements-dev.txt deleted file mode 100644 index 43da4bf..0000000 --- a/requirements-dev.txt +++ /dev/null @@ -1,5 +0,0 @@ --r requirements-lint-docs.txt --r requirements-test.txt --r requirements-test-coverage.txt -tox -setuptools diff --git a/requirements-lint-docs.txt b/requirements-lint-docs.txt deleted file mode 100644 index b0851fb..0000000 --- a/requirements-lint-docs.txt +++ /dev/null @@ -1,9 +0,0 @@ -black -flake8 -isort -mypy -myst-parser -Sphinx -sphinx_rtd_theme -towncrier -types-enum34 diff --git a/requirements-test-coverage.txt b/requirements-test-coverage.txt deleted file mode 100644 index 811296f..0000000 --- a/requirements-test-coverage.txt +++ /dev/null @@ -1,4 +0,0 @@ --r requirements-test.txt -pytest-cov -Cython >= 0.29, <3; python_version < "3.8" -Cython >=3, <4; python_version >= "3.8" diff --git a/requirements-test.txt b/requirements-test.txt deleted file mode 100644 index 7fd0094..0000000 --- a/requirements-test.txt +++ /dev/null @@ -1,3 +0,0 @@ -mock -pytest -pkgconfig diff --git a/tox.ini b/tox.ini index 76a6f31..f6196cf 100644 --- a/tox.ini +++ b/tox.ini @@ -18,7 +18,7 @@ whitelist_externals = make deps = pip>=19.0.3 - -rrequirements-test.txt +extras = test commands = {basepython} -c 'import sys; print("\n".join(sys.path))' @@ -37,7 +37,7 @@ basepython = python3.15 [testenv:py315-cov] usedevelop = True commands = {[testenv]commands_cov} -deps = -rrequirements-test-coverage.txt +extras = coverage [testenv:lint] description = Run lint checker on Python files @@ -71,6 +71,6 @@ commands = {basepython} -m black --check --verbose src tests [testenv:docs] description = Generate library documentation basepython = python3.15 -deps = -rrequirements-lint-docs.txt +extras = docs commands = make -C docs html {basepython} -c 'print("documentation available under file://{toxworkdir}/docs_out/index.html")'