diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 9e350e041..348ec4361 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -11,7 +11,7 @@ updates: interval: "daily" - package-ecosystem: "pip" # See documentation for possible values - directory: "/dev_requirements/" # Location of package manifests + directory: "/" # Location of package manifests schedule: interval: "weekly" # Maintain dependencies for GitHub Actions diff --git a/.github/workflows/python-publish-scheduled.yml b/.github/workflows/python-publish-scheduled.yml index e35f94be6..a024bc45d 100644 --- a/.github/workflows/python-publish-scheduled.yml +++ b/.github/workflows/python-publish-scheduled.yml @@ -106,7 +106,7 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - pip install -r dev_requirements/requirements-packaging.txt + pip install .[packaging] - name: Build wheel and source distributions run: python -m build - name: Publish distribution 📦 to PyPI diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml index 647384a74..82e78ebc5 100644 --- a/.github/workflows/python-publish.yml +++ b/.github/workflows/python-publish.yml @@ -30,7 +30,11 @@ jobs: tox -e tests check_version_tag: name: Check if the version tag is correct - runs-on: ubuntu-latest + runs-on: ${{ matrix.os }} + strategy: + matrix: + python-version: [ "3.12" ] + os: [ ubuntu-latest ] steps: - name: Check out Git repository uses: actions/checkout@v4 @@ -55,7 +59,11 @@ jobs: --gh-token ${{ secrets.GITHUB_TOKEN }} --major-bump-disallowed json_schemas: name: Generate JSON-Schemas - runs-on: ubuntu-latest + runs-on: ${{ matrix.os }} + strategy: + matrix: + python-version: [ "3.12" ] + os: [ ubuntu-latest ] needs: [tests, check_version_tag] concurrency: build-n-publish-json-schemas steps: @@ -185,7 +193,7 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - pip install -r dev_requirements/requirements-packaging.txt + pip install .[packaging] - name: Build wheel and source distributions run: python -m build - name: Publish distribution 📦 to PyPI diff --git a/dev_requirements/requirements-coverage.in b/dev_requirements/requirements-coverage.in deleted file mode 100644 index d1e1a8090..000000000 --- a/dev_requirements/requirements-coverage.in +++ /dev/null @@ -1,2 +0,0 @@ -# specific requirements for the tox coverage env -coverage diff --git a/dev_requirements/requirements-coverage.txt b/dev_requirements/requirements-coverage.txt deleted file mode 100644 index dfb8459ed..000000000 --- a/dev_requirements/requirements-coverage.txt +++ /dev/null @@ -1,9 +0,0 @@ -# SHA1:6dafbcf610e9f81897b65ee9142715ab2e793f9e -# -# This file is autogenerated by pip-compile-multi -# To update, run: -# -# pip-compile-multi -# -coverage==7.6.4 - # via -r requirements-coverage.in diff --git a/dev_requirements/requirements-formatting.in b/dev_requirements/requirements-formatting.in deleted file mode 100644 index 41e6b86a9..000000000 --- a/dev_requirements/requirements-formatting.in +++ /dev/null @@ -1,3 +0,0 @@ -# specific requirements for the formatting envs -black -isort diff --git a/dev_requirements/requirements-formatting.txt b/dev_requirements/requirements-formatting.txt deleted file mode 100644 index ca9be611a..000000000 --- a/dev_requirements/requirements-formatting.txt +++ /dev/null @@ -1,21 +0,0 @@ -# SHA1:2c7ffcd29222de3114c7f7994911f1b69d06b6b3 -# -# This file is autogenerated by pip-compile-multi -# To update, run: -# -# pip-compile-multi -# -black==24.10.0 - # via -r dev_requirements/requirements-formatting.in -click==8.1.7 - # via black -isort==5.13.2 - # via -r dev_requirements/requirements-formatting.in -mypy-extensions==1.0.0 - # via black -packaging==24.0 - # via black -pathspec==0.12.1 - # via black -platformdirs==4.2.0 - # via black diff --git a/dev_requirements/requirements-json_schemas.in b/dev_requirements/requirements-json_schemas.in deleted file mode 100644 index dca9a9096..000000000 --- a/dev_requirements/requirements-json_schemas.in +++ /dev/null @@ -1 +0,0 @@ -click diff --git a/dev_requirements/requirements-json_schemas.txt b/dev_requirements/requirements-json_schemas.txt deleted file mode 100644 index 3570e6169..000000000 --- a/dev_requirements/requirements-json_schemas.txt +++ /dev/null @@ -1,11 +0,0 @@ -# SHA1:b93ec56608fb302fea7a8019d7c0e8e7239fc033 -# -# This file is autogenerated by pip-compile-multi -# To update, run: -# -# pip-compile-multi -# -click==8.1.7 - # via -r dev_requirements\requirements-json_schemas.in -colorama==0.4.6 - # via click diff --git a/dev_requirements/requirements-linting.in b/dev_requirements/requirements-linting.in deleted file mode 100644 index 787ac85b3..000000000 --- a/dev_requirements/requirements-linting.in +++ /dev/null @@ -1,2 +0,0 @@ -# specific requirements for the tox linting env -pylint diff --git a/dev_requirements/requirements-linting.txt b/dev_requirements/requirements-linting.txt deleted file mode 100644 index ca5f84762..000000000 --- a/dev_requirements/requirements-linting.txt +++ /dev/null @@ -1,21 +0,0 @@ -# SHA1:0e15f8789b9d62fe90d1f1b0b6a7e32f13b99b19 -# -# This file is autogenerated by pip-compile-multi -# To update, run: -# -# pip-compile-multi -# -astroid==3.2.4 - # via pylint -dill==0.3.8 - # via pylint -isort==5.13.2 - # via pylint -mccabe==0.7.0 - # via pylint -platformdirs==4.2.0 - # via pylint -pylint==3.2.7 - # via -r requirements-linting.in -tomlkit==0.12.4 - # via pylint diff --git a/dev_requirements/requirements-packaging.in b/dev_requirements/requirements-packaging.in deleted file mode 100644 index 9fef06202..000000000 --- a/dev_requirements/requirements-packaging.in +++ /dev/null @@ -1,3 +0,0 @@ -# requirements for the hatchling build system -build -twine diff --git a/dev_requirements/requirements-packaging.txt b/dev_requirements/requirements-packaging.txt deleted file mode 100644 index 236a3fe40..000000000 --- a/dev_requirements/requirements-packaging.txt +++ /dev/null @@ -1,79 +0,0 @@ -# SHA1:93e4fbf2b6cce1574fe3d5315360512fa9927699 -# -# This file is autogenerated by pip-compile-multi -# To update, run: -# -# pip-compile-multi -# -build==1.2.2.post1 - # via -r requirements-packaging.in -certifi==2024.7.4 - # via requests -cffi==1.16.0 - # via cryptography -charset-normalizer==3.3.2 - # via requests -cryptography==43.0.1 - # via secretstorage -docutils==0.21.1 - # via readme-renderer -idna==3.7 - # via requests -importlib-metadata==7.1.0 - # via twine -jaraco-classes==3.4.0 - # via keyring -jaraco-context==5.3.0 - # via keyring -jaraco-functools==4.0.1 - # via keyring -jeepney==0.8.0 - # via - # keyring - # secretstorage -keyring==25.1.0 - # via twine -markdown-it-py==3.0.0 - # via rich -mdurl==0.1.2 - # via markdown-it-py -more-itertools==10.2.0 - # via - # jaraco-classes - # jaraco-functools -nh3==0.2.17 - # via readme-renderer -packaging==24.0 - # via build -pkginfo==1.10.0 - # via twine -pycparser==2.22 - # via cffi -pygments==2.17.2 - # via - # readme-renderer - # rich -pyproject-hooks==1.0.0 - # via build -readme-renderer==43.0 - # via twine -requests==2.32.3 - # via - # requests-toolbelt - # twine -requests-toolbelt==1.0.0 - # via twine -rfc3986==2.0.0 - # via twine -rich==13.7.1 - # via twine -secretstorage==3.3.3 - # via keyring -twine==5.1.1 - # via -r requirements-packaging.in -urllib3==2.2.2 - # via - # requests - # twine -zipp==3.19.1 - # via importlib-metadata diff --git a/dev_requirements/requirements-tests.in b/dev_requirements/requirements-tests.in deleted file mode 100644 index 396df84f3..000000000 --- a/dev_requirements/requirements-tests.in +++ /dev/null @@ -1,4 +0,0 @@ -# specific requirements for the tox tests env -pytest -pytest-datafiles -dictdiffer diff --git a/dev_requirements/requirements-tests.txt b/dev_requirements/requirements-tests.txt deleted file mode 100644 index b3decb3bb..000000000 --- a/dev_requirements/requirements-tests.txt +++ /dev/null @@ -1,21 +0,0 @@ -# SHA1:d8bf34f7830b949c538f22e73d2b6ebb2065a573 -# -# This file is autogenerated by pip-compile-multi -# To update, run: -# -# pip-compile-multi -# -dictdiffer==0.9.0 - # via -r dev_requirements/requirements-tests.in -iniconfig==2.0.0 - # via pytest -packaging==24.0 - # via pytest -pluggy==1.5.0 - # via pytest -pytest==8.3.3 - # via - # -r dev_requirements/requirements-tests.in - # pytest-datafiles -pytest-datafiles==3.0.0 - # via -r dev_requirements/requirements-tests.in diff --git a/dev_requirements/requirements-type_check.in b/dev_requirements/requirements-type_check.in deleted file mode 100644 index 09356ab1e..000000000 --- a/dev_requirements/requirements-type_check.in +++ /dev/null @@ -1,5 +0,0 @@ -# specific requirements for the tox type_check environment -mypy -types-requests -networkx-stubs -pytest diff --git a/dev_requirements/requirements-type_check.txt b/dev_requirements/requirements-type_check.txt deleted file mode 100644 index cd2a4b4d6..000000000 --- a/dev_requirements/requirements-type_check.txt +++ /dev/null @@ -1,29 +0,0 @@ -# SHA1:9a286c239b1bb587f83dac5fba3e8a2ebfa4029b -# -# This file is autogenerated by pip-compile-multi -# To update, run: -# -# pip-compile-multi -# -iniconfig==2.0.0 - # via pytest -mypy==1.13.0 - # via -r dev_requirements/requirements-type_check.in -mypy-extensions==1.0.0 - # via mypy -networkx==3.4.2 - # via networkx-stubs -networkx-stubs==0.0.1 - # via -r dev_requirements/requirements-type_check.in -packaging==24.0 - # via pytest -pluggy==1.5.0 - # via pytest -pytest==8.3.3 - # via -r dev_requirements/requirements-type_check.in -types-requests==2.32.0.20241016 - # via -r dev_requirements/requirements-type_check.in -typing-extensions==4.11.0 - # via mypy -urllib3==2.2.2 - # via types-requests diff --git a/pyproject.toml b/pyproject.toml index 2a0333f7b..aeb946d7a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,10 +27,47 @@ classifiers = [ "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", ] -# This list must be in synq with the ./requirements.in file! -dependencies = ["iso3166", "pydantic>=2.0.0", "pyhumps"] +dependencies = [ + "iso3166", + "pydantic>=2.0.0", + "pyhumps" +]# This list must be in synq with the ./requirements. in file! +# any dependency added here should also be added in docs/requirements.in and docs/requirements.txt respectively dynamic = ["readme", "version"] +[project.optional-dependencies] +coverage = [ + "coverage==7.6.4" +] +formatting = [ + "black==24.10.0", + "isort==5.13.2" +] +json_schema = [ + "click==8.1.7" +] +linting = [ + "pylint==3.2.7" +] +spell_check = [ + "codespell==2.3.0" +] +packaging = [ + "build==1.2.2", + "twine==5.1.1" +] +tests = [ + "dictdiffer==0.9.0", + "pytest==8.3.3", + "pytest-datafiles==3.0.0" +] +type_check = [ + "mypy==1.13.0", + "networkx-stubs==0.0.1", + "pytest==8.3.3", + "types-requests==2.32.0.20241016" +] + [project.urls] Changelog = "https://github.com/bo4e/bo4e-python/releases" Homepage = "https://github.com/bo4e/bo4e-python" diff --git a/requirements.in b/requirements.in deleted file mode 100644 index 8cb2e76d3..000000000 --- a/requirements.in +++ /dev/null @@ -1,3 +0,0 @@ -iso3166 -pydantic>=2.0.0 -pyhumps diff --git a/requirements.txt b/requirements.txt index cc5fbe406..d3bf290bc 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,18 +2,18 @@ # This file is autogenerated by pip-compile with Python 3.12 # by the following command: # -# pip-compile requirements.in +# pip-compile pyproject.toml # annotated-types==0.5.0 # via pydantic iso3166==2.1.1 - # via -r requirements.in + # via -r pyproject.toml pydantic==2.8.2 - # via -r requirements.in + # via -r pyproject.toml pydantic-core==2.20.1 # via pydantic pyhumps==3.8.0 - # via -r requirements.in + # via -r pyproject.toml typing-extensions==4.11.0 # via # pydantic diff --git a/tox.ini b/tox.ini index bfe8aaccb..d89180590 100644 --- a/tox.ini +++ b/tox.ini @@ -15,14 +15,14 @@ commands = python -m pip install --upgrade pip [testenv:tests] deps = -r requirements.txt - -r dev_requirements/requirements-tests.txt + .[tests] commands = python -m pytest --basetemp={envtmpdir} {posargs} [testenv:linting] deps = -r requirements.txt - -r dev_requirements/requirements-linting.txt + .[linting] {[testenv:docs]deps} {[testenv:generate_json_schemas]deps} commands = @@ -38,7 +38,7 @@ deps = -rrequirements.txt {[testenv:docs]deps} {[testenv:generate_json_schemas]deps} - -r dev_requirements/requirements-type_check.txt + .[type_check] commands = mypy --show-error-codes src/bo4e mypy --show-error-codes tests @@ -51,7 +51,7 @@ commands = usedevelop = True deps = {[testenv:tests]deps} - -r dev_requirements/requirements-coverage.txt + .[coverage] commands = coverage run -m pytest --basetemp={envtmpdir} {posargs} coverage html --omit .tox/*,tests/* @@ -66,14 +66,13 @@ deps = {[testenv:type_check]deps} {[testenv:coverage]deps} {[testenv:docs]deps} - -r dev_requirements/requirements-formatting.txt + .[formatting] # Replace by any tag/version: https://github.com/psf/black/tags # and change the pre-commit-config.yaml accordingly pip-tools pre-commit commands = python -m pip install --upgrade pip - pip-compile requirements.in pip install -r requirements.txt pre-commit install @@ -97,7 +96,7 @@ commands = [testenv:bo4e-from-pip] basepython = python3.10 skip_install = true -deps = -r dev_requirements/requirements-tests.txt +deps = .[tests] commands = pip install bo4e python -m pytest @@ -106,7 +105,7 @@ commands = [testenv:test_packaging] skip_install = true deps = - -r dev_requirements/requirements-packaging.txt + .[packaging] commands = python -m build twine check dist/* @@ -116,7 +115,7 @@ commands = usedevelop = True deps = -r requirements.txt - -r dev_requirements/requirements-json_schemas.txt + .[json_schemas] setenv = TARGET_VERSION = {env:TARGET_VERSION:} # This environment variable will be set inside the release workflow