Skip to content

Commit 7b61c20

Browse files
authored
Python 3.10 EOL October/2026 - Dropping support - conflicts with jsomschema and litellm (#4347)
1 parent 5e7c9f7 commit 7b61c20

5 files changed

Lines changed: 8 additions & 14 deletions

File tree

.github/workflows/test-only.yml

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -103,15 +103,6 @@ jobs:
103103
sys.exit(1)
104104
PYEOF
105105
106-
test-application-3-10:
107-
# Only run on push to master (including PR merges)
108-
if: github.event_name == 'push' && github.ref == 'refs/heads/master'
109-
needs: [lint-code, lint-translations, lint-template-i18n]
110-
uses: ./.github/workflows/test-stack-reusable-workflow.yml
111-
with:
112-
python-version: '3.10'
113-
114-
115106
test-application-3-11:
116107
# Always run
117108
needs: [lint-code, lint-translations, lint-template-i18n]

.ruff.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Minimum supported version
2-
target-version = "py310"
2+
target-version = "py311"
33

44
# Formatting options
55
line-length = 100

changedetectionio/tests/conftest.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ def pytest_configure(config):
202202
LiveServer uses nested functions that can't be pickled.
203203
204204
Setting 'fork' explicitly:
205-
- Maintains compatibility with Python 3.10-3.13 (where 'fork' was already default)
205+
- Maintains compatibility with Python 3.11-3.13 (where 'fork' was already default)
206206
- Fixes Python 3.14 pickling errors
207207
- Only affects Unix-like systems (Windows uses 'spawn' regardless)
208208

requirements.txt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ price-parser
137137

138138
# Lightweight MIME type detection (saves ~14MB memory vs python-magic/libmagic)
139139
# Used for detecting correct favicon type and content-type detection
140-
puremagic<2.0 # 2.x requires Python >=3.12; unpin once 3.10/3.11 support is dropped
140+
puremagic<2.0 # 2.x requires Python >=3.12; unpin once 3.11 support is dropped
141141

142142
# Scheduler - Windows seemed to miss a lot of default timezone info (even "UTC" !)
143143
tzdata
@@ -147,7 +147,10 @@ tzdata
147147
pluggy ~= 1.6
148148

149149
# LLM intent-based change evaluation (multi-provider via litellm)
150-
litellm>=1.40.0 # Uncapped: litellm now uses jsonschema<5.0,>=4.0.0, resolving earlier openapi-spec-validator conflict
150+
# Uncapped: litellm now uses jsonschema<5.0,>=4.0.0, resolving earlier openapi-spec-validator conflict.
151+
# Note litellm >=1.83.11 does `from typing import NotRequired`, which is 3.11+ (PEP 655) - that is
152+
# why 3.10 support was dropped rather than pinning everyone to the last 3.10-compatible release.
153+
litellm>=1.40.0
151154
# Used today for LLMSettings (model/LLMSettings.py); transitively pulled by litellm but pinned explicitly
152155
# so the validation/typing layer doesn't disappear if litellm drops it.
153156
pydantic>=2.0,<3.0

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ def run(self):
5757
install_requires=install_requires,
5858
cmdclass={'build_py': BuildPyCommand},
5959
license="Apache License 2.0",
60-
python_requires=">= 3.10",
60+
python_requires=">= 3.11",
6161
classifiers=['Intended Audience :: Customer Service',
6262
'Intended Audience :: Developers',
6363
'Intended Audience :: Education',

0 commit comments

Comments
 (0)