Skip to content

[SYNPY-1910] Remove support for python 3.10 - #1464

Merged
andrewelamb merged 2 commits into
developfrom
SYNPY-1910
Oct 1, 2026
Merged

andrewelamb merged 2 commits into
developfrom
SYNPY-1910

Conversation

@andrewelamb

@andrewelamb andrewelamb commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

Problem:

  • Python 3.10 is no longer supported. The minimum supported Python version must change to 3.11. The supported range is now 3.11–3.14.
  • The package configuration, the CI matrices, and the documentation all refer to Python 3.10 as the minimum version.
  • The code imports Self from typing_extensions. Python 3.11 adds typing.Self, so this import is not necessary now.

Solution:

Package configuration

  • setup.cfg: removed the Programming Language :: Python :: 3.10 classifier. Changed python_requires from >=3.10, <3.15 to >=3.11, <3.15.
  • pyproject.toml: changed the black target-version from ['py39'] to ['py311']. The old value was already out of date.
  • pylintrc: changed py-version from 3.10 to 3.11. Pylint does not run in pre-commit or CI, but earlier PRs that dropped Python 3.8 and 3.9 also changed this value.

CI (.github/workflows/build.yml)

  • Removed 3.10 from the unit-tests and check-deploy matrices. The matrices are now ['3.11', '3.12', '3.13', '3.14'].
  • Integration tests now run on Python 3.11 and 3.14 (oldest and newest). The "minimum" version is now 3.11 in:
    • The Check for Secret availability condition.
    • The Download Failed Tests from Previous Attempt condition.
    • The run-integration-tests condition.
    • The SYNAPSE_PROFILE selection for Ubuntu, Windows and macOS. The profile names (Test*MinimumPython) did not change.
  • The deploy job now uses Python 3.11.
  • Changed the dependency cache key from -v33 to -v34, so that CI does not use old caches.

Documentation

  • README.md: the list of tested versions is now 3.11, 3.12, 3.13 and 3.14. Added: "Version 4.15.0 and later needs Python 3.11 or higher."
  • CONTRIBUTING.md: the supported versions are now >=3.11 and <=3.14. The example versions in the instructions for adding and dropping a Python version are one version later.
  • docs/tutorials/reticulate.md: the minimum Python version is now 3.11.

Code cleanup: typing.Self

  • In 18 files in synapseclient/models/ (models, mixins and protocols), removed from typing_extensions import Self and added Self to the existing from typing import ... line.
  • No typing_extensions imports are left in synapseclient/, synapseutils/ or tests/.

Test cleanup

  • tests/unit/synapseutils/unit_test_synapseutils_describe.py: removed the if sys.version_info < (3, 7, 0): branch, which could never run, and the unused import sys.

@andrewelamb
andrewelamb requested a review from a team as a code owner October 1, 2026 15:27
@andrewelamb
andrewelamb marked this pull request as draft October 1, 2026 15:27
@andrewelamb andrewelamb changed the title remove support for python 3.10 [SYNPY-1910] Remove support for python 3.10 Oct 1, 2026
@andrewelamb
andrewelamb marked this pull request as ready for review October 1, 2026 15:41
@andrewelamb
andrewelamb merged commit 195dc91 into develop Oct 1, 2026
29 checks passed
@andrewelamb
andrewelamb deleted the SYNPY-1910 branch October 1, 2026 20:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants