From 5e07a339c45b362a23a3968f47a3bfcab1b9d774 Mon Sep 17 00:00:00 2001 From: Evandro Myller Date: Mon, 29 Jun 2026 18:37:07 -0300 Subject: [PATCH 1/3] Drop support to Python 3.9 (EOL) --- .github/workflows/pull-request.yml | 2 +- renovate.json | 4 ++++ requirements-dev.txt | 26 ++++++++++++++++++++++++-- requirements.txt | 22 ++++++++++++++++------ setup.py | 2 +- 5 files changed, 46 insertions(+), 10 deletions(-) diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index 16fdfd8e..f37085f9 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -17,7 +17,7 @@ jobs: strategy: max-parallel: 4 matrix: - python-version: ['3.9', '3.10', '3.11', '3.12', '3.13'] + python-version: ['3.10', '3.11', '3.12', '3.13'] steps: - name: Cloning repo diff --git a/renovate.json b/renovate.json index f646ce69..a0364c35 100644 --- a/renovate.json +++ b/renovate.json @@ -3,6 +3,10 @@ "extends": ["security:only-security-updates", ":semanticCommitScopeDisabled"], "ignorePresets": [":semanticPrefixFixDepsChoreOthers"], "semanticCommitType": "deps", + "constraints": { + "python": ">=3.10" + }, + "constraintsFiltering": "strict", "git-submodules": { "enabled": true }, diff --git a/requirements-dev.txt b/requirements-dev.txt index ab2cc1e5..13b1f4a7 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -1,5 +1,5 @@ # This file was autogenerated by uv via the following command: -# uv pip compile requirements-dev.in --constraints requirements.txt -o requirements-dev.txt --python-version 3.9 +# uv pip compile requirements-dev.in --constraints requirements.txt -o requirements-dev.txt --python-version 3.10 absolufy-imports==0.3.1 # via -r requirements-dev.in annotated-types==0.7.0 @@ -18,14 +18,18 @@ click==8.1.8 # via # black # pip-tools -coverage[toml]==7.10.4 +coverage==7.10.4 # via pytest-cov datamodel-code-generator==0.33.0 # via -r requirements-dev.in +exceptiongroup==1.3.1 + # via pytest flake8==7.3.0 # via -r requirements-dev.in genson==1.3.0 # via datamodel-code-generator +importlib-metadata==9.0.0 + # via build inflect==7.5.0 # via datamodel-code-generator iniconfig==2.1.0 @@ -63,6 +67,8 @@ pathspec==0.12.1 # via # black # mypy +pip==26.1.2 + # via pip-tools pip-tools==7.5.0 # via -r requirements-dev.in platformdirs==4.3.8 @@ -110,12 +116,26 @@ pyyaml==6.0.2 # via datamodel-code-generator rich==14.1.0 # via pytest-codspeed +setuptools==82.0.1 + # via pip-tools +tomli==2.4.1 + # via + # black + # build + # coverage + # datamodel-code-generator + # mypy + # pip-tools + # pytest typeguard==4.4.4 # via inflect types-setuptools==80.9.0.20250809 # via -r requirements-dev.in typing-extensions==4.14.1 # via + # -c requirements.txt + # black + # exceptiongroup # mypy # pydantic # pydantic-core @@ -125,3 +145,5 @@ typing-inspection==0.4.1 # via pydantic wheel==0.46.2 # via pip-tools +zipp==4.1.0 + # via importlib-metadata diff --git a/requirements.txt b/requirements.txt index ebe0176b..1d5949d1 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,12 +1,22 @@ # This file was autogenerated by uv via the following command: -# uv pip compile requirements.in --constraints requirements.txt --python-version 3.9 +# uv pip compile requirements.in --constraints requirements.txt --python-version 3.10 -o requirements.txt iregexp-check==0.1.4 - # via jsonpath-rfc9535 + # via + # -c requirements.txt + # jsonpath-rfc9535 jsonpath-rfc9535==0.1.6 - # via -r requirements.in + # via + # -c requirements.txt + # -r requirements.in regex==2025.7.34 - # via jsonpath-rfc9535 + # via + # -c requirements.txt + # jsonpath-rfc9535 semver==3.0.4 - # via -r requirements.in + # via + # -c requirements.txt + # -r requirements.in typing-extensions==4.14.1 - # via -r requirements.in + # via + # -c requirements.txt + # -r requirements.in diff --git a/setup.py b/setup.py index 88a86ac7..7094acdb 100644 --- a/setup.py +++ b/setup.py @@ -12,6 +12,7 @@ description="Flag engine for the Flagsmith API.", long_description=open("README.md").read(), long_description_content_type="text/markdown", + python_requires=">=3.10", install_requires=[ "jsonpath-rfc9535>=0.1.5,<1", "semver>=3.0.4,<4", @@ -20,7 +21,6 @@ classifiers=[ "License :: OSI Approved :: BSD License", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", From 8f3d4f1618d71e31669efc159220629b8b161945 Mon Sep 17 00:00:00 2001 From: Evandro Myller Date: Mon, 29 Jun 2026 18:42:43 -0300 Subject: [PATCH 2/3] Add support to Python 3.14 --- .github/workflows/pull-request.yml | 2 +- requirements-dev.txt | 6 +++--- setup.py | 1 + 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index f37085f9..6e7c9f9a 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -17,7 +17,7 @@ jobs: strategy: max-parallel: 4 matrix: - python-version: ['3.10', '3.11', '3.12', '3.13'] + python-version: ['3.10', '3.11', '3.12', '3.13', '3.14'] steps: - name: Cloning repo diff --git a/requirements-dev.txt b/requirements-dev.txt index 13b1f4a7..1286505f 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -81,9 +81,9 @@ pycodestyle==2.14.0 # via flake8 pycparser==2.22 # via cffi -pydantic==2.11.7 +pydantic==2.13.4 # via datamodel-code-generator -pydantic-core==2.33.2 +pydantic-core==2.46.4 # via pydantic pyflakes==3.4.0 # via flake8 @@ -141,7 +141,7 @@ typing-extensions==4.14.1 # pydantic-core # typeguard # typing-inspection -typing-inspection==0.4.1 +typing-inspection==0.4.2 # via pydantic wheel==0.46.2 # via pip-tools diff --git a/setup.py b/setup.py index 7094acdb..d4e766ad 100644 --- a/setup.py +++ b/setup.py @@ -25,5 +25,6 @@ "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", ], ) From 648474ef473fba3fdb45c630eb2b295d7f48ad60 Mon Sep 17 00:00:00 2001 From: Evandro Myller Date: Mon, 29 Jun 2026 18:56:27 -0300 Subject: [PATCH 3/3] ci(renovate): constrain updates to supported Python Co-Authored-By: Claude Opus 4.8 (1M context) --- renovate.json5 | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/renovate.json5 b/renovate.json5 index a22606fe..64cbff6b 100644 --- a/renovate.json5 +++ b/renovate.json5 @@ -8,6 +8,12 @@ // `fix`/`chore`; ignore it so we keep `deps:` as the commit prefix. ignorePresets: [':semanticPrefixFixDepsChoreOthers'], semanticCommitType: 'deps', + // `constraintsFiltering: strict` filters out releases whose + // `requires-python` excludes `constraints.python`. + constraints: { + python: '>=3.10', + }, + constraintsFiltering: 'strict', 'git-submodules': { enabled: true, },