From 51caffb2070bef4e3eb0d5a537b0f769be71bbe1 Mon Sep 17 00:00:00 2001 From: Fstei Date: Wed, 9 Oct 2024 08:51:30 +0200 Subject: [PATCH] Move optional dependencies from `dev_requirements` to `pyproject.toml` --- .github/workflows/formatting.yml | 2 +- .github/workflows/python-publish.yml | 2 +- dev_requirements/requirements-coverage.in | 2 - dev_requirements/requirements-coverage.txt | 8 -- dev_requirements/requirements-formatting.in | 3 - dev_requirements/requirements-formatting.txt | 22 ----- dev_requirements/requirements-init_bo4e.in | 2 - dev_requirements/requirements-init_bo4e.txt | 96 ------------------- dev_requirements/requirements-linting.in | 2 - dev_requirements/requirements-linting.txt | 20 ---- dev_requirements/requirements-packaging.in | 3 - dev_requirements/requirements-packaging.txt | 72 -------------- dev_requirements/requirements-spell_check.in | 1 - dev_requirements/requirements-spell_check.txt | 8 -- dev_requirements/requirements-tests.in | 2 - dev_requirements/requirements-tests.txt | 14 --- dev_requirements/requirements-type_check.in | 2 - dev_requirements/requirements-type_check.txt | 12 --- pyproject.toml | 44 ++++++++- requirements.in | 11 --- requirements.txt | 28 +++--- tox.ini | 40 +++----- 22 files changed, 76 insertions(+), 320 deletions(-) delete mode 100644 dev_requirements/requirements-coverage.in delete mode 100644 dev_requirements/requirements-coverage.txt delete mode 100644 dev_requirements/requirements-formatting.in delete mode 100644 dev_requirements/requirements-formatting.txt delete mode 100644 dev_requirements/requirements-init_bo4e.in delete mode 100644 dev_requirements/requirements-init_bo4e.txt delete mode 100644 dev_requirements/requirements-linting.in delete mode 100644 dev_requirements/requirements-linting.txt delete mode 100644 dev_requirements/requirements-packaging.in delete mode 100644 dev_requirements/requirements-packaging.txt delete mode 100644 dev_requirements/requirements-spell_check.in delete mode 100644 dev_requirements/requirements-spell_check.txt delete mode 100644 dev_requirements/requirements-tests.in delete mode 100644 dev_requirements/requirements-tests.txt delete mode 100644 dev_requirements/requirements-type_check.in delete mode 100644 dev_requirements/requirements-type_check.txt delete mode 100644 requirements.in diff --git a/.github/workflows/formatting.yml b/.github/workflows/formatting.yml index 066ee1a..9a7cc79 100644 --- a/.github/workflows/formatting.yml +++ b/.github/workflows/formatting.yml @@ -18,7 +18,7 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - pip install -r dev_requirements/requirements-formatting.txt + pip install .[formatting] - name: ${{ matrix.tool }} Code Formatter run: | ${{ matrix.tool }} . --check diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml index 4c3669a..a877909 100644 --- a/.github/workflows/python-publish.yml +++ b/.github/workflows/python-publish.yml @@ -45,7 +45,7 @@ # - name: Install dependencies # run: | # python -m pip install --upgrade pip -# pip install -r dev_requirements/requirements-packaging.txt +# pip install .[test_packaging] # - name: Build a binary wheel and a source tarball # run: | # python -m build diff --git a/dev_requirements/requirements-coverage.in b/dev_requirements/requirements-coverage.in deleted file mode 100644 index d1e1a80..0000000 --- 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 cd512d0..0000000 --- a/dev_requirements/requirements-coverage.txt +++ /dev/null @@ -1,8 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.12 -# by the following command: -# -# pip-compile dev_requirements/requirements-coverage.in -# -coverage==7.6.0 - # via -r dev_requirements/requirements-coverage.in diff --git a/dev_requirements/requirements-formatting.in b/dev_requirements/requirements-formatting.in deleted file mode 100644 index 41e6b86..0000000 --- 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 d2da658..0000000 --- a/dev_requirements/requirements-formatting.txt +++ /dev/null @@ -1,22 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.12 -# by the following command: -# -# pip-compile dev_requirements/requirements-formatting.in -# -black==24.4.2 - # via -r dev_requirements/requirements-formatting.in -click==8.1.7 - # via black -colorama==0.4.6 - # via click -isort==5.13.2 - # via -r dev_requirements/requirements-formatting.in -mypy-extensions==1.0.0 - # via black -packaging==23.2 - # via black -pathspec==0.12.1 - # via black -platformdirs==4.2.0 - # via black diff --git a/dev_requirements/requirements-init_bo4e.in b/dev_requirements/requirements-init_bo4e.in deleted file mode 100644 index be2276e..0000000 --- a/dev_requirements/requirements-init_bo4e.in +++ /dev/null @@ -1,2 +0,0 @@ -BO4E-Schema-Tool -BO4E-Python-Generator == 0.0.10 diff --git a/dev_requirements/requirements-init_bo4e.txt b/dev_requirements/requirements-init_bo4e.txt deleted file mode 100644 index 64636b3..0000000 --- a/dev_requirements/requirements-init_bo4e.txt +++ /dev/null @@ -1,96 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.12 -# by the following command: -# -# pip-compile dev_requirements/requirements-init_bo4e.in -# -annotated-types==0.6.0 - # via pydantic -argcomplete==3.2.2 - # via datamodel-code-generator -black==24.4.2 - # via datamodel-code-generator -bo4e-python-generator==0.0.10 - # via -r dev_requirements/requirements-init_bo4e.in -bo4e-schema-tool==0.0.7 - # via -r dev_requirements/requirements-init_bo4e.in -certifi==2024.2.2 - # via requests -cffi==1.16.0 - # via - # cryptography - # pynacl -charset-normalizer==3.3.2 - # via requests -click==8.1.7 - # via - # black - # bo4e-python-generator - # bo4e-schema-tool -cryptography==43.0.0 - # via pyjwt -datamodel-code-generator==0.25.3 - # via bo4e-python-generator -deprecated==1.2.14 - # via pygithub -dnspython==2.5.0 - # via email-validator -email-validator==2.1.0.post1 - # via pydantic -genson==1.2.2 - # via datamodel-code-generator -idna==3.6 - # via - # email-validator - # requests -inflect==5.6.2 - # via datamodel-code-generator -isort==5.13.2 - # via datamodel-code-generator -jinja2==3.1.3 - # via datamodel-code-generator -markupsafe==2.1.5 - # via jinja2 -more-itertools==10.2.0 - # via bo4e-schema-tool -mypy-extensions==1.0.0 - # via black -packaging==23.2 - # via - # black - # datamodel-code-generator -pathspec==0.12.1 - # via black -platformdirs==4.2.0 - # via black -pycparser==2.21 - # via cffi -pydantic[email]==2.8.2 - # via - # bo4e-schema-tool - # datamodel-code-generator -pydantic-core==2.20.1 - # via pydantic -pygithub==2.2.0 - # via bo4e-schema-tool -pyjwt[crypto]==2.8.0 - # via pygithub -pynacl==1.5.0 - # via pygithub -pyyaml==6.0.1 - # via datamodel-code-generator -requests==2.31.0 - # via - # bo4e-schema-tool - # pygithub -typing-extensions==4.9.0 - # via - # pydantic - # pydantic-core - # pygithub -urllib3==2.2.0 - # via - # pygithub - # requests -wrapt==1.16.0 - # via deprecated diff --git a/dev_requirements/requirements-linting.in b/dev_requirements/requirements-linting.in deleted file mode 100644 index 787ac85..0000000 --- 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 5ebef34..0000000 --- a/dev_requirements/requirements-linting.txt +++ /dev/null @@ -1,20 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.12 -# by the following command: -# -# pip-compile dev_requirements/requirements-linting.in -# -astroid==3.2.4 - # via pylint -dill==0.3.7 - # via pylint -isort==5.13.2 - # via pylint -mccabe==0.7.0 - # via pylint -platformdirs==4.2.0 - # via pylint -pylint==3.2.6 - # via -r dev_requirements/requirements-linting.in -tomlkit==0.11.6 - # via pylint diff --git a/dev_requirements/requirements-packaging.in b/dev_requirements/requirements-packaging.in deleted file mode 100644 index 3aad7fa..0000000 --- a/dev_requirements/requirements-packaging.in +++ /dev/null @@ -1,3 +0,0 @@ -# requirements for the hatchling build ssystem -build -twine diff --git a/dev_requirements/requirements-packaging.txt b/dev_requirements/requirements-packaging.txt deleted file mode 100644 index 8d605c9..0000000 --- a/dev_requirements/requirements-packaging.txt +++ /dev/null @@ -1,72 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.12 -# by the following command: -# -# pip-compile dev_requirements/requirements-packaging.in -# -build==1.2.1 - # via -r dev_requirements/requirements-packaging.in -certifi==2024.2.2 - # via requests -cffi==1.16.0 - # via cryptography -charset-normalizer==3.3.2 - # via requests -cryptography==43.0.0 - # via secretstorage -docutils==0.20.1 - # via readme-renderer -idna==3.6 - # via requests -importlib-metadata==7.0.2 - # via twine -jaraco-classes==3.3.1 - # via keyring -jeepney==0.8.0 - # via - # keyring - # secretstorage -keyring==24.3.1 - # 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 -nh3==0.2.15 - # 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.31.0 - # 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 dev_requirements/requirements-packaging.in -urllib3==2.2.1 - # via - # requests - # twine -zipp==3.18.1 - # via importlib-metadata diff --git a/dev_requirements/requirements-spell_check.in b/dev_requirements/requirements-spell_check.in deleted file mode 100644 index e3da9e4..0000000 --- a/dev_requirements/requirements-spell_check.in +++ /dev/null @@ -1 +0,0 @@ -codespell diff --git a/dev_requirements/requirements-spell_check.txt b/dev_requirements/requirements-spell_check.txt deleted file mode 100644 index 59ef527..0000000 --- a/dev_requirements/requirements-spell_check.txt +++ /dev/null @@ -1,8 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.12 -# by the following command: -# -# pip-compile dev_requirements/requirements-spell_check.in -# -codespell==2.3.0 - # via -r dev_requirements/requirements-spell_check.in diff --git a/dev_requirements/requirements-tests.in b/dev_requirements/requirements-tests.in deleted file mode 100644 index 5497961..0000000 --- a/dev_requirements/requirements-tests.in +++ /dev/null @@ -1,2 +0,0 @@ -# specific requirements for the tox tests env -pytest diff --git a/dev_requirements/requirements-tests.txt b/dev_requirements/requirements-tests.txt deleted file mode 100644 index 0583600..0000000 --- a/dev_requirements/requirements-tests.txt +++ /dev/null @@ -1,14 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.12 -# by the following command: -# -# pip-compile dev_requirements/requirements-tests.in -# -iniconfig==2.0.0 - # via pytest -packaging==23.2 - # via pytest -pluggy==1.5.0 - # via pytest -pytest==8.3.1 - # 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 4446a91..0000000 --- a/dev_requirements/requirements-type_check.in +++ /dev/null @@ -1,2 +0,0 @@ -# specific requirements for the tox type_check environment -mypy diff --git a/dev_requirements/requirements-type_check.txt b/dev_requirements/requirements-type_check.txt deleted file mode 100644 index 5457486..0000000 --- a/dev_requirements/requirements-type_check.txt +++ /dev/null @@ -1,12 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.12 -# by the following command: -# -# pip-compile dev_requirements/requirements-type_check.in -# -mypy==1.11.0 - # via -r dev_requirements/requirements-type_check.in -mypy-extensions==1.0.0 - # via mypy -typing-extensions==4.9.0 - # via mypy diff --git a/pyproject.toml b/pyproject.toml index 96f3a27..76a30cd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,9 +16,51 @@ classifiers = [ "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12" ] -dependencies = [] # add all the dependencies from requirements.in here, too +dependencies = [ + "alembic>=1.12.0", + "colorlog", + "greenlet>=3.0.0", + "psycopg>=3.1", + "pydantic>=2.0.0", + "pyhumps", + "python-dotenv", + "SQLAlchemy>=2.0.22", + "pymysql", + "cryptography", + "sqlmodel>=0.0.14" +] # add all the dependencies from requirements.in here, too dynamic = ["readme", "version"] + +[project.optional-dependencies] +coverage = [ + "coverage==7.6.0" +] +formatting = [ + "black==24.4.2", + "isort==5.13.2" +] +init_bo4e = [ + "bo4e-python-generator==0.0.10", + "bo4e-schema-tool==0.0.7" +] +linting = [ + "pylint==3.2.6" +] +spellcheck = [ + "codespell==2.3.0" +] +test_packaging = [ + "build==1.2.1", + "twine==5.1.1" +] +tests = [ + "pytest==8.3.1" +] +type_check = [ + "mypy==1.11.0" +] + [project.urls] Changelog = "https://github.com/Hochfrequenz/bo4e-python-orm/releases" Homepage = "https://github.com/Hochfrequenz/bo4e-python-orm" diff --git a/requirements.in b/requirements.in deleted file mode 100644 index 46d11ab..0000000 --- a/requirements.in +++ /dev/null @@ -1,11 +0,0 @@ -alembic>=1.12.0 -colorlog -greenlet>=3.0.0 -psycopg>=3.1 -pydantic>=2.0.0 -pyhumps -python-dotenv -SQLAlchemy>=2.0.22 -pymysql -cryptography -sqlmodel>=0.0.14 diff --git a/requirements.txt b/requirements.txt index 6ee72ec..a9d182f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,49 +2,51 @@ # This file is autogenerated by pip-compile with Python 3.12 # by the following command: # -# pip-compile requirements.in +# pip-compile pyproject.toml # alembic==1.13.2 - # via -r requirements.in + # via borm (pyproject.toml) annotated-types==0.6.0 # via pydantic cffi==1.16.0 # via cryptography +colorama==0.4.6 + # via colorlog colorlog==6.8.2 - # via -r requirements.in + # via borm (pyproject.toml) cryptography==43.0.0 - # via -r requirements.in + # via borm (pyproject.toml) greenlet==3.0.3 # via - # -r requirements.in + # borm (pyproject.toml) # sqlalchemy mako==1.2.4 # via alembic markupsafe==2.1.5 # via mako psycopg==3.2.1 - # via -r requirements.in + # via borm (pyproject.toml) pycparser==2.21 # via cffi pydantic==2.8.2 # via - # -r requirements.in + # borm (pyproject.toml) # sqlmodel pydantic-core==2.20.1 # via pydantic pyhumps==3.8.0 - # via -r requirements.in + # via borm (pyproject.toml) pymysql==1.1.1 - # via -r requirements.in + # via borm (pyproject.toml) python-dotenv==1.0.1 - # via -r requirements.in + # via borm (pyproject.toml) sqlalchemy==2.0.31 # via - # -r requirements.in # alembic + # borm (pyproject.toml) # sqlmodel sqlmodel==0.0.21 - # via -r requirements.in + # via borm (pyproject.toml) typing-extensions==4.9.0 # via # alembic @@ -52,3 +54,5 @@ typing-extensions==4.9.0 # pydantic # pydantic-core # sqlalchemy +tzdata==2024.2 + # via psycopg diff --git a/tox.ini b/tox.ini index 09a1c65..3083c43 100644 --- a/tox.ini +++ b/tox.ini @@ -16,7 +16,7 @@ commands = python -m pip install --upgrade pip # the tests environment is called by the Github action that runs the unit tests deps = -r requirements.txt - -r dev_requirements/requirements-tests.txt + .[tests] setenv = PYTHONPATH = {toxinidir}/src commands = tox -e setup_testpostgresql @@ -27,7 +27,7 @@ allowlist_externals = # the tests environment is called by the Github action that runs the unit tests deps = -r requirements.txt - -r dev_requirements/requirements-tests.txt + .[tests] setenv = PYTHONPATH = {toxinidir}/src commands = tox -e setup_bo4e @@ -44,7 +44,7 @@ allowlist_externals = deps = {[testenv:integrationtests]deps} {[testenv:unittests]deps} - -r dev_requirements/requirements-linting.txt + .[linting] setenv = PYTHONPATH = {toxinidir}/src commands = tox -e init_bo4e @@ -58,9 +58,8 @@ allowlist_externals = # the type_check environment checks the type hints using mypy setenv = PYTHONPATH = {toxinidir}/src deps = - -r requirements.txt - -r dev_requirements/requirements-type_check.txt - -r dev_requirements/requirements-tests.txt + {[testenv:unittests]deps} + .[type_check] commands = tox -e init_bo4e mypy --show-error-codes tests @@ -73,7 +72,7 @@ allowlist_externals = setenv = PYTHONPATH = {toxinidir}/src deps = -r requirements.txt - -r dev_requirements/requirements-spell_check.txt + .[spellcheck] commands = codespell --ignore-words=domain-specific-terms.txt src/ codespell --ignore-words=domain-specific-terms.txt README.md @@ -84,7 +83,7 @@ changedir = tests deps = {[testenv:integrationtests]deps} {[testenv:unittests]deps} - -r dev_requirements/requirements-coverage.txt + .[coverage] setenv = PYTHONPATH = {toxinidir}/src commands = tox -e setup_bo4e @@ -100,7 +99,7 @@ allowlist_externals = # Setting up a postgresql database for testing changedir = src deps = - -rrequirements.txt + -r requirements.txt commands = python -m borm.db.postgresql_db.create_env_file docker-compose -f "borm/db/postgresql_db/docker-compose.yaml" up -d @@ -112,7 +111,7 @@ allowlist_externals = changedir = bo4e_schemas deps = -rrequirements.txt - -r dev_requirements/requirements-init_bo4e.txt + .[init_bo4e] commands = bost -t v202401.0.1 -o ./ bo4e-generator -i ./ -o ../src/borm/models -ot sql_model @@ -123,7 +122,7 @@ allowlist_externals = [testenv:setup_bo4e] # Setting up a postgresql database with bo4e deps = - -rrequirements.txt + -r requirements.txt commands = tox -e setup_testpostgresql tox -e init_bo4e @@ -134,7 +133,7 @@ allowlist_externals = # removing up a postgresql database for testing changedir = src/borm/db/postgresql_db deps = - -rrequirements.txt + -r requirements.txt commands = docker-compose -f "docker-compose.yaml" down -v allowlist_externals = @@ -146,7 +145,7 @@ allowlist_externals = # This environment just applies the revisions to the database (after docker-compose). changedir = src/borm/db/postgresql_db deps = - -rrequirements.txt + -r requirements.txt commands = alembic upgrade head allowlist_externals = @@ -164,28 +163,19 @@ deps = {[testenv:spell_check]deps} {[testenv:setup_testpostgresql]deps} {[testenv:remove_testpostgresql]deps} - -r dev_requirements/requirements-formatting.txt - -r dev_requirements/requirements-init_bo4e.txt + .[formatting] + .[init_bo4e] pip-tools pre-commit commands = python -m pip install --upgrade pip - pip-compile requirements.in - pip-compile dev_requirements/requirements-coverage.in - pip-compile dev_requirements/requirements-formatting.in - pip-compile dev_requirements/requirements-linting.in - pip-compile dev_requirements/requirements-packaging.in - pip-compile dev_requirements/requirements-spell_check.in - pip-compile dev_requirements/requirements-tests.in - pip-compile dev_requirements/requirements-type_check.in - pip-compile dev_requirements/requirements-init_bo4e.in pip install -r requirements.txt pre-commit install [testenv:test_packaging] skip_install = true deps = - -r dev_requirements/requirements-packaging.txt + .[test_packaging] commands = python -m build twine check dist/*