From 14818095f9beb99e6057f25772f357e30ca58f1a Mon Sep 17 00:00:00 2001 From: fsaraviara Date: Fri, 17 Oct 2025 16:05:44 +0100 Subject: [PATCH] Add Python 3.14 support to build pipeline - Add Python 3.14 to all build matrices (Linux, Windows, macOS) - Add support for both cp314 (regular) and cp314t (free-threading) versions - Existing protobuf/gRPC compatibility logic already covers Python 3.14 - Following the same pattern as Python 3.13 support addition - update the cibuildwheel docker image in github settings so it includes new 3.14 --- .github/workflows/build.yml | 8 ++++---- .github/workflows/build_steps.yml | 5 +++-- README.md | 2 +- docs/mkdocs/docs/index.md | 2 +- environment-dev.yml | 2 +- setup.cfg | 2 +- 6 files changed, 11 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8e1191196df..dc5f3205288 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -127,7 +127,7 @@ jobs: uses: ./.github/workflows/cibw_docker_image.yml permissions: {packages: write} with: - cibuildwheel_ver: "3.1.3" + cibuildwheel_ver: "3.2.1" force_update: false run_linting_checks: @@ -297,7 +297,7 @@ jobs: fail-fast: false matrix: # For storage runs that are not full matrix will have only one Python version - python3: ${{fromJson( !inputs.run_full_matrix_of_persistent_tests && (needs.storage_type.outputs.storage != 'no') && '[11]' || '[8, 9, 10, 11, 12, 13]')}} + python3: ${{fromJson( !inputs.run_full_matrix_of_persistent_tests && (needs.storage_type.outputs.storage != 'no') && '[11]' || '[8, 9, 10, 11, 12, 13, 14]')}} include: - python_deps_ids: [""] matrix_override: ${{fromJson(needs.common_config.outputs.linux_matrix)}} @@ -365,7 +365,7 @@ jobs: fail-fast: false matrix: # For storage runs that are not full matrix will have only one Python version - python3: ${{fromJson( !inputs.run_full_matrix_of_persistent_tests && (needs.storage_type.outputs.storage != 'no') && '[11]' || '[8, 9, 10, 11, 12, 13]')}} + python3: ${{fromJson( !inputs.run_full_matrix_of_persistent_tests && (needs.storage_type.outputs.storage != 'no') && '[11]' || '[8, 9, 10, 11, 12, 13, 14]')}} include: - matrix_override: ${{fromJson(needs.common_config.outputs.windows_matrix)}} name: 3.${{matrix.python3}} Windows @@ -458,7 +458,7 @@ jobs: strategy: fail-fast: false matrix: - python3: ${{ fromJson( !inputs.run_full_matrix_of_persistent_tests && (needs.storage_type.outputs.storage != 'no') && '[11]' || '[8, 9, 10, 11]' ) }} + python3: ${{ fromJson( !inputs.run_full_matrix_of_persistent_tests && (needs.storage_type.outputs.storage != 'no') && '[11]' || '[8, 9, 10, 11, 12, 13, 14]' ) }} include: - python_deps_ids: [""] matrix_override: ${{fromJson(needs.common_config.outputs.macos_matrix)}} diff --git a/.github/workflows/build_steps.yml b/.github/workflows/build_steps.yml index 56019eea768..1ae49c29e16 100644 --- a/.github/workflows/build_steps.yml +++ b/.github/workflows/build_steps.yml @@ -338,9 +338,11 @@ jobs: - name: Select Python (Linux) if: matrix.os == 'linux' run: | - #there are cp313 and cp313t + #there are cp313 and cp313t, cp314 and cp314t if [[ "${{env.python_impl_name}}" == "cp313" ]]; then echo /opt/python/cp313-cp313/bin >> $GITHUB_PATH; + elif [[ "${{env.python_impl_name}}" == "cp314" ]]; then + echo /opt/python/cp314-cp314/bin >> $GITHUB_PATH; else echo /opt/python/${{env.python_impl_name}}*/bin >> $GITHUB_PATH; fi @@ -494,4 +496,3 @@ jobs: name: pytest-${{env.distinguishing_name}} path: | ${{runner.temp}}/*test* - diff --git a/README.md b/README.md index 1d92ba68134..5ea2d8c32e5 100644 --- a/README.md +++ b/README.md @@ -45,7 +45,7 @@ ArcticDB is designed from the outset to be resilient; there is no single point o ### Prebuilt binary availability -| | PyPI (Python 3.8 - 3.13) | conda-forge (Python 3.9 - 3.13) | +| | PyPI (Python 3.8 - 3.14) | conda-forge (Python 3.9 - 3.14) | | --------------------- | - | - | | Linux (Intel/AMD) | ✔️ | ✔️ | | Windows (Intel/AMD) | ✔️ | ➖ | diff --git a/docs/mkdocs/docs/index.md b/docs/mkdocs/docs/index.md index 1f2d15da07f..383d56e270f 100644 --- a/docs/mkdocs/docs/index.md +++ b/docs/mkdocs/docs/index.md @@ -32,7 +32,7 @@ This section will cover installation, setup and basic usage. More details on bas ### Installation -ArcticDB supports Python 3.8 - 3.13. +ArcticDB supports Python 3.8 - 3.14. To install, simply run: diff --git a/environment-dev.yml b/environment-dev.yml index ba4334201eb..6f34dbf6200 100644 --- a/environment-dev.yml +++ b/environment-dev.yml @@ -59,7 +59,7 @@ dependencies: # Build dependencies for tests - libarrow # Python dependences - - python >=3.12,<3.14 + - python >=3.12,<3.15 - packaging - numpy - pandas diff --git a/setup.cfg b/setup.cfg index 86b1b673f7f..6e872383520 100644 --- a/setup.cfg +++ b/setup.cfg @@ -128,7 +128,7 @@ Testing = azure-storage-blob azure-identity coverage - asv; platform_system == 'Linux' or python_version < '3.13' + asv; platform_system == 'Linux' or python_version < '3.15' virtualenv pymongo trustme