diff --git a/.github/workflows/test-only.yml b/.github/workflows/test-only.yml index f7b3def0f..1185d889c 100644 --- a/.github/workflows/test-only.yml +++ b/.github/workflows/test-only.yml @@ -103,15 +103,6 @@ jobs: sys.exit(1) PYEOF - test-application-3-10: - # Only run on push to master (including PR merges) - if: github.event_name == 'push' && github.ref == 'refs/heads/master' - needs: [lint-code, lint-translations, lint-template-i18n] - uses: ./.github/workflows/test-stack-reusable-workflow.yml - with: - python-version: '3.10' - - test-application-3-11: # Always run needs: [lint-code, lint-translations, lint-template-i18n] diff --git a/.ruff.toml b/.ruff.toml index 259be2fb4..04b7adf33 100644 --- a/.ruff.toml +++ b/.ruff.toml @@ -1,5 +1,5 @@ # Minimum supported version -target-version = "py310" +target-version = "py311" # Formatting options line-length = 100 diff --git a/changedetectionio/tests/conftest.py b/changedetectionio/tests/conftest.py index 8972ba8ed..0daa461de 100644 --- a/changedetectionio/tests/conftest.py +++ b/changedetectionio/tests/conftest.py @@ -202,7 +202,7 @@ def pytest_configure(config): LiveServer uses nested functions that can't be pickled. Setting 'fork' explicitly: - - Maintains compatibility with Python 3.10-3.13 (where 'fork' was already default) + - Maintains compatibility with Python 3.11-3.13 (where 'fork' was already default) - Fixes Python 3.14 pickling errors - Only affects Unix-like systems (Windows uses 'spawn' regardless) diff --git a/requirements.txt b/requirements.txt index 448da6c46..8921e2e75 100644 --- a/requirements.txt +++ b/requirements.txt @@ -137,7 +137,7 @@ price-parser # Lightweight MIME type detection (saves ~14MB memory vs python-magic/libmagic) # Used for detecting correct favicon type and content-type detection -puremagic<2.0 # 2.x requires Python >=3.12; unpin once 3.10/3.11 support is dropped +puremagic<2.0 # 2.x requires Python >=3.12; unpin once 3.11 support is dropped # Scheduler - Windows seemed to miss a lot of default timezone info (even "UTC" !) tzdata @@ -147,7 +147,10 @@ tzdata pluggy ~= 1.6 # LLM intent-based change evaluation (multi-provider via litellm) -litellm>=1.40.0 # Uncapped: litellm now uses jsonschema<5.0,>=4.0.0, resolving earlier openapi-spec-validator conflict +# Uncapped: litellm now uses jsonschema<5.0,>=4.0.0, resolving earlier openapi-spec-validator conflict. +# Note litellm >=1.83.11 does `from typing import NotRequired`, which is 3.11+ (PEP 655) - that is +# why 3.10 support was dropped rather than pinning everyone to the last 3.10-compatible release. +litellm>=1.40.0 # Used today for LLMSettings (model/LLMSettings.py); transitively pulled by litellm but pinned explicitly # so the validation/typing layer doesn't disappear if litellm drops it. pydantic>=2.0,<3.0 diff --git a/setup.py b/setup.py index 96dc4a086..caac094dd 100644 --- a/setup.py +++ b/setup.py @@ -57,7 +57,7 @@ setup( install_requires=install_requires, cmdclass={'build_py': BuildPyCommand}, license="Apache License 2.0", - python_requires=">= 3.10", + python_requires=">= 3.11", classifiers=['Intended Audience :: Customer Service', 'Intended Audience :: Developers', 'Intended Audience :: Education',