diff --git a/.github/workflows/main-check.yml b/.github/workflows/main-check.yml index 9e0a184b..3cea81ed 100644 --- a/.github/workflows/main-check.yml +++ b/.github/workflows/main-check.yml @@ -12,7 +12,7 @@ jobs: strategy: matrix: os: [ubuntu-22.04] - python: ["3.9", "3.10", "3.11"] + python: ["3.10", "3.11", "3.12"] steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/validate-pr.yml b/.github/workflows/validate-pr.yml index dfeaa73b..985d3813 100644 --- a/.github/workflows/validate-pr.yml +++ b/.github/workflows/validate-pr.yml @@ -14,7 +14,7 @@ jobs: strategy: matrix: os: [ubuntu-22.04] - python: ["3.9", "3.10", "3.11", "3.12"] + python: ["3.10", "3.11", "3.12"] steps: - uses: actions/checkout@v4 @@ -110,7 +110,7 @@ jobs: strategy: matrix: os: [ubuntu-22.04] - python: ["3.9", "3.10", "3.11", "3.12"] + python: ["3.10", "3.11", "3.12"] steps: - uses: actions/setup-python@v5 with: diff --git a/.github/workflows/windows-subprocess-check.yml b/.github/workflows/windows-subprocess-check.yml index e716a253..2c939ac5 100644 --- a/.github/workflows/windows-subprocess-check.yml +++ b/.github/workflows/windows-subprocess-check.yml @@ -10,7 +10,7 @@ jobs: strategy: matrix: os: [windows-latest] - python: ["3.9", "3.10", "3.11"] + python: ["3.10", "3.11", "3.12"] steps: - uses: actions/checkout@v4 diff --git a/changes/247.removed b/changes/247.removed new file mode 100644 index 00000000..8a3d28ca --- /dev/null +++ b/changes/247.removed @@ -0,0 +1 @@ +Drop Python 3.9 support. diff --git a/pyproject.toml b/pyproject.toml index fe761d5d..50bc55ab 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,7 +12,6 @@ path = "substrafl/__version__.py" name = "substrafl" classifiers = [ "Operating System :: OS Independent", - "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", @@ -38,7 +37,7 @@ license = { file = "LICENSE" } description = """A high-level federated learning Python library to run federated learning experiments at scale on a Substra network""" -requires-python = ">= 3.9" +requires-python = ">= 3.10" [project.optional-dependencies] dev = [ diff --git a/substrafl/remote/register/register.py b/substrafl/remote/register/register.py index dd1f51cf..f7170421 100644 --- a/substrafl/remote/register/register.py +++ b/substrafl/remote/register/register.py @@ -26,7 +26,7 @@ # minimal and maximal values of Python 3 minor versions supported # we need to store this as integer, else "3.11" < "3.9" (string comparison) -MINIMAL_PYTHON_VERSION = 9 # 3.9 +MINIMAL_PYTHON_VERSION = 10 # 3.10 MAXIMAL_PYTHON_VERSION = 12 # 3.12 _CPU_BASE_IMAGE = """ diff --git a/tests/installable_library/setup.py b/tests/installable_library/setup.py index c003a2be..3348b980 100644 --- a/tests/installable_library/setup.py +++ b/tests/installable_library/setup.py @@ -8,5 +8,5 @@ version="0.0.1", description="testlib", packages=find_packages(), - python_requires=">=3.9", + python_requires=">=3.10", ) diff --git a/tests/remote/register/test_register.py b/tests/remote/register/test_register.py index 56c2bd3c..959eb014 100644 --- a/tests/remote/register/test_register.py +++ b/tests/remote/register/test_register.py @@ -32,13 +32,13 @@ def add_function(*args): pass -@pytest.mark.parametrize("version", ["2.7", "3.7", "3.8", "3.18"]) +@pytest.mark.parametrize("version", ["2.7", "3.7", "3.8", "3.9", "3.18"]) def test_check_python_version(version): with pytest.raises(UnsupportedPythonVersionError): register._check_python_version(version) -@pytest.mark.parametrize("version", ["3.9", "3.10", "3.11", "3.12"]) +@pytest.mark.parametrize("version", ["3.10", "3.11", "3.12"]) def test_check_python_version_valid(version): """Does not raise for supported versions""" register._check_python_version(version)