From 5ddf1ffc3f736e7e24b1ee102a16d9d43f2ab9ff Mon Sep 17 00:00:00 2001 From: Sergey Vasilyev Date: Fri, 25 Sep 2026 12:58:15 +0200 Subject: [PATCH] Enable Python 3.15 support Signed-off-by: Sergey Vasilyev --- .github/workflows/ci.yaml | 10 +++++----- .github/workflows/docker.yaml | 4 ++-- .github/workflows/publish.yaml | 2 +- .github/workflows/thorough.yaml | 12 ++++++------ README.md | 2 +- docker/Dockerfile | 2 +- docs/deployment.rst | 2 +- docs/docker.rst | 2 +- pyproject.toml | 1 + 9 files changed, 19 insertions(+), 18 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index d4e4c2556..47fc07429 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -20,7 +20,7 @@ jobs: with: github-token: ${{ github.token }} enable-cache: true - python-version: "3.14" + python-version: "3.15" activate-environment: true - run: uv sync --no-dev --group lint - run: pre-commit run --all-files @@ -41,12 +41,12 @@ jobs: fail-fast: false matrix: install-extras: [ "", "full-auth" ] - python-version: [ "3.11", "3.12", "3.13", "3.14" ] + python-version: [ "3.11", "3.12", "3.13", "3.14", "3.15" ] include: # Assumption: if these special setups work in one version, they work in all versions. - install-extras: "uvloop" - python-version: "3.14" - - python-version: "3.14t" + python-version: "3.15" + - python-version: "3.15t" name: Python ${{ matrix.python-version }}${{ matrix.install-extras && ' ' || '' }}${{ matrix.install-extras }} runs-on: ubuntu-26.04 timeout-minutes: 7 # usually 5 mins with coverage @@ -126,7 +126,7 @@ jobs: with: github-token: ${{ github.token }} enable-cache: true - python-version: "3.14" + python-version: "3.15" activate-environment: true - uses: nolar/setup-k3d-k3s@v1 with: diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 6a1a13aa7..7d9d37242 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -16,7 +16,7 @@ on: env: REGISTRY: ghcr.io IMAGE_NAME: ${{ github.repository }} - DEFAULT_PYTHON: "3.14" + DEFAULT_PYTHON: "3.15" DEFAULT_VARIANT: slim jobs: @@ -24,7 +24,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.14"] # all versions starting with 3.14 as the first one + python-version: ["3.14", "3.15"] # all versions starting with 3.14 as the first one variant: [slim, alpine] name: Python ${{ matrix.python-version }} ${{ matrix.variant }} runs-on: ubuntu-26.04 diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index f147e1837..93650b135 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -20,7 +20,7 @@ jobs: with: github-token: ${{ github.token }} enable-cache: true - python-version: "3.14" + python-version: "3.15" activate-environment: true - run: uv build - uses: pypa/gh-action-pypi-publish@release/v1 diff --git a/.github/workflows/thorough.yaml b/.github/workflows/thorough.yaml index 96d9e01b3..292217c7e 100644 --- a/.github/workflows/thorough.yaml +++ b/.github/workflows/thorough.yaml @@ -24,7 +24,7 @@ jobs: with: github-token: ${{ github.token }} enable-cache: true - python-version: "3.14" + python-version: "3.15" activate-environment: true - run: uv sync --no-dev --group lint - run: pre-commit run --all-files @@ -45,12 +45,12 @@ jobs: fail-fast: false matrix: install-extras: [ "", "full-auth" ] - python-version: [ "3.11", "3.12", "3.13", "3.14" ] + python-version: [ "3.11", "3.12", "3.13", "3.14", "3.15" ] include: # Assumption: if these special setups work in one version, they work in all versions. - install-extras: "uvloop" - python-version: "3.14" - - python-version: "3.14t" + python-version: "3.15" + - python-version: "3.15t" name: Python ${{ matrix.python-version }}${{ matrix.install-extras && ' ' || '' }}${{ matrix.install-extras }} runs-on: ubuntu-26.04 timeout-minutes: 7 # usually 5 mins with coverage @@ -130,7 +130,7 @@ jobs: with: github-token: ${{ github.token }} enable-cache: true - python-version: "3.14" + python-version: "3.15" activate-environment: true - uses: nolar/setup-k3d-k3s@v1 with: @@ -158,7 +158,7 @@ jobs: with: github-token: ${{ github.token }} enable-cache: true - python-version: "3.14" + python-version: "3.15" activate-environment: true - run: tools/install-minikube.sh diff --git a/README.md b/README.md index edbf5515f..2c6e1730c 100644 --- a/README.md +++ b/README.md @@ -141,7 +141,7 @@ We assume that when the operator is executed in the cluster, it must be packaged into a docker image with a CI/CD tool of your preference. ```dockerfile -FROM python:3.14 +FROM python:3.15 ADD . /src RUN pip install kopf CMD kopf run /src/handlers.py --verbose diff --git a/docker/Dockerfile b/docker/Dockerfile index c0fd38549..98ee30eb6 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,4 +1,4 @@ -ARG PYTHON_VERSION=3.14 +ARG PYTHON_VERSION=3.15 ARG VARIANT=slim # diff --git a/docs/deployment.rst b/docs/deployment.rst index 82c041dfc..ca27d8181 100644 --- a/docs/deployment.rst +++ b/docs/deployment.rst @@ -16,7 +16,7 @@ First, the operator must be packaged as a Docker image with Python 3.11 or newer :caption: Dockerfile :name: dockerfile - FROM python:3.14 + FROM python:3.15 RUN pip install kopf ADD . /src CMD kopf run /src/handlers.py --verbose diff --git a/docs/docker.rst b/docs/docker.rst index ee6ce047a..cd6a35141 100644 --- a/docs/docker.rst +++ b/docs/docker.rst @@ -271,7 +271,7 @@ installation, ensures reproducible builds, and keeps the image minimal: .. code-block:: dockerfile - FROM python:3.14 + FROM python:3.15 RUN pip install kopf COPY handler.py /src/handler.py CMD ["kopf", "run", "/src/handler.py", "--verbose"] diff --git a/pyproject.toml b/pyproject.toml index b719d6534..e635fc8e5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,6 +19,7 @@ classifiers = [ "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", + "Programming Language :: Python :: 3.15", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy",