diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 169eb84..af08c19 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -120,7 +120,6 @@ jobs: - name: Install Python dependencies run: | ./venv/bin/python -m pip install --upgrade pip - ./venv/bin/python -m pip install -r requirements-dev.txt - name: Install package manager dependencies run: | sudo apt-get update @@ -210,13 +209,12 @@ jobs: - name: Install Python dependencies run: | ./venv/bin/python -m pip install --upgrade pip - ./venv/bin/python -m pip install -r requirements-dev.txt - name: Set up dependencies run: sudo apt-get install clang-format - name: Install Package run: | - ./venv/bin/python -m pip install -e . + ./venv/bin/python -m pip install -e ".[dev]" env: PREFIX: blazingmq_artifacts PYTHON: ./venv/bin/python @@ -260,7 +258,6 @@ jobs: - name: Install Python dependencies run: | ./venv/bin/python3 -m pip install --upgrade pip - ./venv/bin/python3 -m pip install -r requirements-dev.txt - name: Setup Core Dumps config run: | sudo mkdir /cores 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 407b256..1e57470 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 e7ddb44..345ca3b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -34,6 +34,36 @@ classifiers = [ "Typing :: Typed", ] +[project.optional-dependencies] +test = [ + "mock", + "pytest", + "pkgconfig", +] +coverage = [ + "blazingmq[test]", + "pytest-cov", + "Cython>=3,<4", +] +lint = [ + "black", + "flake8", + "isort", + "mypy", + "types-enum34", +] +docs = [ + "recommonmark", + "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 cdce429..0000000 --- a/requirements-lint-docs.txt +++ /dev/null @@ -1,9 +0,0 @@ -black -flake8 -isort -mypy -recommonmark -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 5e91012..02cd559 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.14 [testenv:py314-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.14 -deps = -rrequirements-lint-docs.txt +extras = docs commands = make -C docs html {basepython} -c 'print("documentation available under file://{toxworkdir}/docs_out/index.html")'