This is an automated email from the ASF dual-hosted git repository.

juergbi pushed a commit to branch jbilleter/python3.14
in repository https://gitbox.apache.org/repos/asf/buildstream.git

commit d27b48e6cce5bb902377bfce427bed53bde3b01f
Author: Jürg Billeter <[email protected]>
AuthorDate: Fri Sep 19 08:58:22 2025 +0200

    Add support for Python 3.14
---
 .github/common.env                    |  4 ++--
 .github/compose/ci.docker-compose.yml |  5 +++++
 .github/workflows/ci.yml              |  1 +
 .github/workflows/release.yml         |  1 +
 setup.py                              |  1 +
 tox.ini                               | 40 +++++++++++++++++------------------
 6 files changed, 30 insertions(+), 22 deletions(-)

diff --git a/.github/common.env b/.github/common.env
index 33286021e..80e48b23a 100644
--- a/.github/common.env
+++ b/.github/common.env
@@ -1,6 +1,6 @@
 # Shared common variables
 
 CI_IMAGE_VERSION=master-2011999263
-CI_TOXENV_MAIN=py39,py310,py311,py312,py313
-CI_TOXENV_PLUGINS=py39-plugins,py310-plugins,py311-plugins,py312-plugins,py313-plugins
+CI_TOXENV_MAIN=py39,py310,py311,py312,py313,py314
+CI_TOXENV_PLUGINS=py39-plugins,py310-plugins,py311-plugins,py312-plugins,py313-plugins,py314-plugins
 CI_TOXENV_ALL="${CI_TOXENV_MAIN},${CI_TOXENV_PLUGINS}"
diff --git a/.github/compose/ci.docker-compose.yml 
b/.github/compose/ci.docker-compose.yml
index ac8548626..417b57cbc 100644
--- a/.github/compose/ci.docker-compose.yml
+++ b/.github/compose/ci.docker-compose.yml
@@ -122,3 +122,8 @@ services:
     <<: *tests-template
     image: quay.io/pypa/manylinux_2_28_x86_64
     command: .github/wheel-helpers/test-wheel-manylinux.sh cp313 
/opt/python/cp313-cp313/bin/python3
+
+  wheels-manylinux_2_28-cp314:
+    <<: *tests-template
+    image: quay.io/pypa/manylinux_2_28_x86_64
+    command: .github/wheel-helpers/test-wheel-manylinux.sh cp314 
/opt/python/cp314-cp314/bin/python3
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 7690bdef4..d4e243bc1 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -149,6 +149,7 @@ jobs:
           - wheels-manylinux_2_28-cp311
           - wheels-manylinux_2_28-cp312
           - wheels-manylinux_2_28-cp313
+          - wheels-manylinux_2_28-cp314
 
     steps:
       - uses: actions/checkout@v3
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 62c5aabe7..991c9fea2 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -91,6 +91,7 @@ jobs:
           - wheels-manylinux_2_28-cp311
           - wheels-manylinux_2_28-cp312
           - wheels-manylinux_2_28-cp313
+          - wheels-manylinux_2_28-cp314
 
     steps:
       - uses: actions/checkout@v3
diff --git a/setup.py b/setup.py
index 1e5887fec..3c6aecb95 100755
--- a/setup.py
+++ b/setup.py
@@ -327,6 +327,7 @@ setup(
         "Programming Language :: Python :: 3.11",
         "Programming Language :: Python :: 3.12",
         "Programming Language :: Python :: 3.13",
+        "Programming Language :: Python :: 3.14",
         "Topic :: Software Development :: Build Tools",
     ],
     description="A framework for modelling build pipelines in YAML",
diff --git a/tox.ini b/tox.ini
index 7042b5328..62362f64e 100644
--- a/tox.ini
+++ b/tox.ini
@@ -16,7 +16,7 @@
 # Tox global configuration
 #
 [tox]
-envlist = py{39,310,311,312,313}
+envlist = py{39,310,311,312,313,314}
 skip_missing_interpreters = true
 isolated_build = true
 
@@ -33,30 +33,30 @@ BST_PLUGINS_VERSION = 
79649529cffb695d0d22195ed9a4910c80ca6907 # 2.5.0
 [testenv]
 usedevelop =
     # This is required by Cython in order to get coverage for cython files.
-    py{39,310,311,312,313}-!nocover: True
+    py{39,310,311,312,313,314}-!nocover: True
 
 commands =
     # Running with coverage reporting enabled
-    py{39,310,311,312,313}-!plugins-!nocover: pytest --basetemp {envtmpdir} 
--cov=buildstream --cov-config .coveragerc {posargs}
+    py{39,310,311,312,313,314}-!plugins-!nocover: pytest --basetemp 
{envtmpdir} --cov=buildstream --cov-config .coveragerc {posargs}
     # Running with coverage reporting disabled
-    py{39,310,311,312,313}-!plugins-nocover: pytest --basetemp {envtmpdir} 
{posargs}
+    py{39,310,311,312,313,314}-!plugins-nocover: pytest --basetemp {envtmpdir} 
{posargs}
     # Running external plugins tests with coverage reporting enabled
-    py{39,310,311,312,313}-plugins-!nocover: pytest --basetemp {envtmpdir} 
--cov=buildstream --cov-config .coveragerc --plugins {posargs}
+    py{39,310,311,312,313,314}-plugins-!nocover: pytest --basetemp {envtmpdir} 
--cov=buildstream --cov-config .coveragerc --plugins {posargs}
     # Running external plugins tests with coverage disabled
-    py{39,310,311,312,313}-plugins-nocover: pytest --basetemp {envtmpdir} 
--plugins {posargs}
+    py{39,310,311,312,313,314}-plugins-nocover: pytest --basetemp {envtmpdir} 
--plugins {posargs}
 commands_post:
-    py{39,310,311,312,313}-!nocover: mkdir -p .coverage-reports
-    py{39,310,311,312,313}-!nocover: mv {envtmpdir}/.coverage 
{toxinidir}/.coverage-reports/.coverage.{env:COVERAGE_PREFIX:}{envname}
+    py{39,310,311,312,313,314}-!nocover: mkdir -p .coverage-reports
+    py{39,310,311,312,313,314}-!nocover: mv {envtmpdir}/.coverage 
{toxinidir}/.coverage-reports/.coverage.{env:COVERAGE_PREFIX:}{envname}
 deps =
-    py{39,310,311,312,313}: -rrequirements/requirements.txt
-    py{39,310,311,312,313}: -rrequirements/dev-requirements.txt
-    py{39,310,311,312,313}: 
git+https://github.com/apache/buildstream-plugins.git@{env:BST_PLUGINS_VERSION:{[config]BST_PLUGINS_VERSION}}
+    py{39,310,311,312,313,314}: -rrequirements/requirements.txt
+    py{39,310,311,312,313,314}: -rrequirements/dev-requirements.txt
+    py{39,310,311,312,313,314}: 
git+https://github.com/apache/buildstream-plugins.git@{env:BST_PLUGINS_VERSION:{[config]BST_PLUGINS_VERSION}}
 
     # Install local sample plugins for testing pip plugin origins
-    py{39,310,311,312,313}: {toxinidir}/tests/plugins/sample-plugins
+    py{39,310,311,312,313,314}: {toxinidir}/tests/plugins/sample-plugins
 
     # Install external plugins for plugin tests
-    py{39,310,311,312,313}-plugins: 
git+https://gitlab.com/buildstream/buildstream-plugins-community.git@{env:BST_PLUGINS_COMMUNITY_VERSION:{[config]BST_PLUGINS_COMMUNITY_VERSION}}#egg=bst_plugins_community[deb]
+    py{39,310,311,312,313,314}-plugins: 
git+https://gitlab.com/buildstream/buildstream-plugins-community.git@{env:BST_PLUGINS_COMMUNITY_VERSION:{[config]BST_PLUGINS_COMMUNITY_VERSION}}#egg=bst_plugins_community[deb]
 
     # Only require coverage and pytest-cov when using it
     !nocover: -rrequirements/cov-requirements.txt
@@ -84,18 +84,18 @@ passenv =
 # These keys are not inherited by any other sections
 #
 setenv =
-    py{39,310,311,312,313}: COVERAGE_FILE = {envtmpdir}/.coverage
-    py{39,310,311,312,313}: BST_TEST_HOME = {envtmpdir}
-    py{39,310,311,312,313}: BST_TEST_XDG_CACHE_HOME = {envtmpdir}/cache
-    py{39,310,311,312,313}: BST_TEST_XDG_CONFIG_HOME = {envtmpdir}/config
-    py{39,310,311,312,313}: BST_TEST_XDG_DATA_HOME = {envtmpdir}/share
+    py{39,310,311,312,313,314}: COVERAGE_FILE = {envtmpdir}/.coverage
+    py{39,310,311,312,313,314}: BST_TEST_HOME = {envtmpdir}
+    py{39,310,311,312,313,314}: BST_TEST_XDG_CACHE_HOME = {envtmpdir}/cache
+    py{39,310,311,312,313,314}: BST_TEST_XDG_CONFIG_HOME = {envtmpdir}/config
+    py{39,310,311,312,313,314}: BST_TEST_XDG_DATA_HOME = {envtmpdir}/share
 
     # This is required to get coverage for Cython
-    py{39,310,311,312,313}-!nocover: BST_CYTHON_TRACE = 1
+    py{39,310,311,312,313,314}-!nocover: BST_CYTHON_TRACE = 1
     randomized: PYTEST_ADDOPTS="--random-order-bucket=global"
 
 allowlist_externals =
-    py{39,310,311,312,313}:
+    py{39,310,311,312,313,314}:
         mv
         mkdir
 

Reply via email to