From b1e21b728cf2f4fa7d857f46f80f7a3a9b9d2a89 Mon Sep 17 00:00:00 2001 From: Preocts Date: Fri, 30 May 2025 20:15:19 -0400 Subject: [PATCH 1/3] Remove constraint line from requirement files --- requirements/constraints.txt | 5 +++-- requirements/requirements-dev.txt | 1 - requirements/requirements-test.txt | 1 - requirements/requirements.txt | 1 - 4 files changed, 3 insertions(+), 5 deletions(-) diff --git a/requirements/constraints.txt b/requirements/constraints.txt index ad74fee..938ee4b 100644 --- a/requirements/constraints.txt +++ b/requirements/constraints.txt @@ -2,7 +2,7 @@ # This file is autogenerated by pip-compile with Python 3.12 # by the following command: # -# pip-compile --no-annotate --no-emit-index-url --output-file=./requirements/constraints.txt requirements/requirements-dev.txt requirements/requirements-test.txt requirements/requirements.txt +# pip-compile --no-annotate --no-emit-index-url --output-file=./requirements/constraints.txt --strip-extras requirements/requirements-dev.txt requirements/requirements-test.txt requirements/requirements.txt # black==25.1.0 certifi==2025.4.26 @@ -16,7 +16,7 @@ idna==3.10 iniconfig==2.1.0 isort==6.0.1 mccabe==0.7.0 -mypy==1.15.0 +mypy==1.16.0 mypy-extensions==1.1.0 packaging==25.0 pathspec==0.12.1 @@ -27,5 +27,6 @@ pyflakes==3.3.2 pytest==8.3.5 pytest-randomly==3.16.0 requests==2.32.3 +types-requests==2.32.0.20250515 typing-extensions==4.13.2 urllib3==2.4.0 diff --git a/requirements/requirements-dev.txt b/requirements/requirements-dev.txt index 2c27647..fc39ace 100644 --- a/requirements/requirements-dev.txt +++ b/requirements/requirements-dev.txt @@ -1,5 +1,4 @@ # Development Requirements - linting, formatting, etc. ---constraint ./constraints.txt # Linting flake8 diff --git a/requirements/requirements-test.txt b/requirements/requirements-test.txt index b01a13f..04472fe 100644 --- a/requirements/requirements-test.txt +++ b/requirements/requirements-test.txt @@ -1,5 +1,4 @@ # Testing Requirements ---constraint ./constraints.txt pytest pytest-randomly diff --git a/requirements/requirements.txt b/requirements/requirements.txt index a0d3e12..2e95c63 100644 --- a/requirements/requirements.txt +++ b/requirements/requirements.txt @@ -1,4 +1,3 @@ # Core Dependencies ---constraint ./constraints.txt requests From 9e40640a511f497f4d13ae53d6fc62c4874dfb2a Mon Sep 17 00:00:00 2001 From: Preocts Date: Fri, 30 May 2025 20:15:44 -0400 Subject: [PATCH 2/3] Add dynamic links to requirement files --- pyproject.toml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index b710fb9..9ec8035 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,5 +1,5 @@ [build-system] -requires = ["setuptools>=64"] +requires = [ "setuptools>=64" ] build-backend = "setuptools.build_meta" [project] @@ -20,6 +20,14 @@ classifiers = [ "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: Implementation :: CPython", ] +dynamic = [ "dependencies", "optional-dependencies" ] + +[tool.setuptools.dynamic.dependencies] +file = [ "requirements/requirements.txt" ] + +[tool.setuptools.dynamic.optional-dependencies] +dev = { file = [ "requirements/requirements-dev.txt" ] } +test = { file = [ "requirements/requirements-test.txt" ] } [project.urls] homepage = "https://github.com/[ORG NAME]/[REPO NAME]" From cc543ec9206f59500abb866aa57d6fd45e29df13 Mon Sep 17 00:00:00 2001 From: Preocts Date: Fri, 30 May 2025 20:16:29 -0400 Subject: [PATCH 3/3] Use contraint file when installing dependencies --- noxfile.py | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/noxfile.py b/noxfile.py index 885d5bc..def8658 100644 --- a/noxfile.py +++ b/noxfile.py @@ -53,11 +53,12 @@ def dev(session: nox.Session) -> None: session.run("python", "-m", "venv", VENV_PATH, "--upgrade-deps") python = partial(session.run, f"{venv_path}/python", "-m") + contraint = ("--constraint", f"{REQUIREMENTS_PATH}/constraints.txt") - requirement_files = get_requirement_files() - for requirement_file in requirement_files: - python("pip", "install", "-r", requirement_file, external=True) - python("pip", "install", "--editable", ".", external=True) + for requirement_file in get_requirement_files(): + python("pip", "install", "-r", requirement_file, *contraint, external=True) + + python("pip", "install", "--editable", ".", *contraint, external=True) python("pip", "install", "pre-commit", external=True) session.run(f"{venv_path}/pre-commit", "install", external=True) @@ -71,9 +72,9 @@ def run_tests_with_coverage(session: nox.Session) -> None: """Run pytest with coverage, outputs console report and json.""" print_standard_logs(session) - session.install(".") - session.install("-r", f"{REQUIREMENTS_PATH}/requirements.txt") - session.install("-r", f"{REQUIREMENTS_PATH}/requirements-test.txt") + contraint = ("--constraint", f"{REQUIREMENTS_PATH}/constraints.txt") + + session.install(".[test]", *contraint) coverage = partial(session.run, "python", "-m", "coverage") @@ -92,7 +93,9 @@ def coverage_combine(session: nox.Session) -> None: """CI: Combine parallel-mode coverage files and produce reports.""" print_standard_logs(session) - session.install("-r", f"{REQUIREMENTS_PATH}/requirements-test.txt") + contraint = ("--constraint", f"{REQUIREMENTS_PATH}/constraints.txt") + + session.install("-r", f"{REQUIREMENTS_PATH}/requirements-test.txt", *contraint) coverage = partial(session.run, "python", "-m", "coverage") coverage("combine") @@ -105,9 +108,8 @@ def run_linters_and_formatters(session: nox.Session) -> None: """Run code formatters, linters, and type checking against all files.""" print_standard_logs(session) - session.install(".") - session.install("-r", f"{REQUIREMENTS_PATH}/requirements.txt") - session.install("-r", f"{REQUIREMENTS_PATH}/requirements-dev.txt") + contraint = ("--constraint", f"{REQUIREMENTS_PATH}/constraints.txt") + session.install(".[dev]", *contraint) python = partial(session.run, "python", "-m") @@ -143,16 +145,15 @@ def update_deps(session: nox.Session) -> None: """Process requirement*.txt files, updating only additions/removals.""" print_standard_logs(session) - requirement_files = get_requirement_files() - session.install("pip-tools") session.run( "pip-compile", + "--strip-extras", "--no-annotate", "--no-emit-index-url", "--output-file", f"{REQUIREMENTS_PATH}/constraints.txt", - *requirement_files, + *get_requirement_files(), ) @@ -161,17 +162,16 @@ def upgrade_deps(session: nox.Session) -> None: """Process requirement*.txt files and upgrade all libraries as possible.""" print_standard_logs(session) - requirement_files = get_requirement_files() - session.install("pip-tools") session.run( "pip-compile", + "--strip-extras", "--no-annotate", "--no-emit-index-url", "--upgrade", "--output-file", f"{REQUIREMENTS_PATH}/constraints.txt", - *requirement_files, + *get_requirement_files(), )