Skip to content

Drop Python 3.9 support #164

Description

@knopki

Summary

Raise requires-python from >=3.9 to >=3.10 and remove all python_version < '3.10' conditional dependencies and version-pinning workarounds.

Motivation

Python 3.9 reached end-of-life on 2025-10-31 (EOL ~5 years after release). It no longer receives security fixes. The major supported runtimes (3.10+) all remain active, with 3.14 out since 2025-10.
Supporting 3.9 currently imposes concrete maintenance tax on this repo:

  • 6 dependency entries in pyproject.toml are duplicated under python_version < '3.10' / >= '3.10' markers (aiohttp, pytest, sqlfluff, typing-extensions, tombi, setuptools).
  • typing-extensions is pulled in solely to backport ParamSpec / TypeAlias / PEP 604 union syntax to 3.9.
  • CI must keep a 3.9 job alive, and every new language feature decision has to gate on "does 3.9 support this?".
    Dropping 3.9 lets us:
  • Collapse the duplicated dependency lines into single constraints.
  • Remove the typing_extensions backport dependency entirely.
  • Adopt 3.10+ syntax natively: X | Y unions, match statements, ParamSpec from typing, TypeAlias, parenthesized context managers, better error messages.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions