Skip to content

Commit e1fcc08

Browse files
committed
feat: add Python 3.14 support
1 parent 42e61f5 commit e1fcc08

File tree

22 files changed

+1342
-1071
lines changed

22 files changed

+1342
-1071
lines changed

.github/workflows/rw-python-tests.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111
if: ${{inputs.changed-python-modules == 'true'}}
1212
strategy:
1313
matrix:
14-
python_version: [py313, py312, py311, py310]
14+
python_version: [py314, py313, py312, py311, py310]
1515
steps:
1616
- name: Checkout
1717
uses: actions/checkout@v4
@@ -21,7 +21,7 @@ jobs:
2121
env:
2222
TEST_ENVS: ${{ matrix.python_version }}
2323
- name: Upload coverage to Codecov
24-
if: ${{ matrix.python_version == 'py313' }}
24+
if: ${{ matrix.python_version == 'py314' }}
2525
uses: codecov/codecov-action@v3
2626
with:
2727
files: ./packages/gooddata-sdk/coverage.xml,./packages/gooddata-pandas/coverage.xml,./packages/gooddata-fdw/coverage.xml,./packages/gooddata-flight-server/coverage.xml,./packages/gooddata-flexconnect/coverage.xml
@@ -31,10 +31,10 @@ jobs:
3131
steps:
3232
- name: Checkout
3333
uses: actions/checkout@v4
34-
- name: Set up python 3.13
34+
- name: Set up python 3.14
3535
uses: astral-sh/setup-uv@v6
3636
with:
37-
python-version: 3.13
37+
python-version: 3.14
3838
- name: Install dependencies
3939
run: |
4040
uv sync --only-group lint
@@ -47,7 +47,7 @@ jobs:
4747
steps:
4848
- name: Checkout
4949
uses: actions/checkout@v4
50-
- name: Set up python 3.13
50+
- name: Set up python 3.14
5151
uses: astral-sh/setup-uv@v6
5252
- name: Install dependencies
5353
run: |

.python-version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
3.13.1
1+
3.14.0

CONTRIBUTING.md

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## Getting Started
44

5-
1. Ensure you have at minimum Python 3.13 installed; Python 3.12, 3.11 and 3.10 are optional for multi-environment tests
5+
1. Ensure you have at minimum Python 3.14 installed; Python 3.13, 3.12, 3.11 and 3.10 are optional for multi-environment tests
66

77
This repo uses [tox](https://tox.readthedocs.io/en/latest/) and by default will try to run tests against all
88
supported versions. If you have only subset of supported python interpreters installed, see
@@ -21,7 +21,7 @@
2121
source .venv/bin/activate
2222
```
2323

24-
The `make dev` command will create a new Python 3.13 virtual environment in the `.venv` directory, install all
24+
The `make dev` command will create a new Python 3.14 virtual environment in the `.venv` directory, install all
2525
third party dependencies into it and setup git hooks.
2626

2727
Additionally, if you use [direnv](https://direnv.net/) you can run `direnv allow .envrc` to enable automatic
@@ -38,6 +38,19 @@
3838
request.
3939

4040

41+
## Maintenance Tasks
42+
43+
### Adding Support for a New Python Version
44+
45+
When adding support for a new Python version:
46+
47+
1. Update all `pyproject.toml` files to include the new Python version classifier
48+
2. Update all `tox.ini` files to include the new Python version in `envlist`
49+
3. Update CI/CD workflows to test against the new Python version
50+
4. **Run `uv lock --upgrade`** to upgrade the lock file and re-resolve dependencies for all Python versions, including the newly added one
51+
52+
The lock file upgrade is crucial as it allows `uv` to pick package versions that are compatible with all supported Python versions.
53+
4154
## Coding Conventions
4255

4356
This project uses [ruff](https://github.com/astral-sh/ruff) to ensure basic code sanity and for no-nonsense, consistent formatting.

ci_tests.mk

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# (C) 2021 GoodData Corporation
2-
IN_TEST_ENVS = py313,py312,py311,py310
2+
IN_TEST_ENVS = py314,py313,py312,py311,py310
33
ifdef TEST_ENVS
44
IN_TEST_ENVS = $(TEST_ENVS)
55
endif
@@ -51,6 +51,10 @@ test-ci-py312-build: Dockerfile
5151
test-ci-py313-build: Dockerfile
5252
docker build --build-arg "PY_TAG=3.13.1-slim-bookworm" --build-arg "ENV_TAG=py313" -t python-sdk:py313 .
5353

54+
.PHONY: test-ci-py314-build
55+
test-ci-py314-build: Dockerfile
56+
docker build --build-arg "PY_TAG=3.14.0-slim-bookworm" --build-arg "ENV_TAG=py314" -t python-sdk:py314 .
57+
5458
# test-ci target triggers unit tests for each requested environment
5559
.PHONY: test-ci
5660
test-ci: $(TEST_CI_ENVS)

docs/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM python:3.12-slim AS builder
1+
FROM python:3.14-slim AS builder
22

33
RUN apt-get update && apt-get install -y git make curl
44

packages/gooddata-dbt/pyproject.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ classifiers = [
2626
"Programming Language :: Python :: 3.11",
2727
"Programming Language :: Python :: 3.12",
2828
"Programming Language :: Python :: 3.13",
29+
"Programming Language :: Python :: 3.14",
2930
"Topic :: Database",
3031
"Topic :: Scientific/Engineering",
3132
"Topic :: Software Development",
@@ -42,7 +43,7 @@ test = [
4243
]
4344
type = [
4445
"mypy~=1.11.2",
45-
"pydantic~=2.9.2"
46+
"pydantic~=2.12.0",
4647
]
4748

4849
[tool.hatch.build.targets.wheel]

packages/gooddata-dbt/tox.ini

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# (C) 2023 GoodData Corporation
22
[tox]
3-
envlist = py3{10,11,12,13}
3+
envlist = py3{10,11,12,13,14}
44

55
[testenv]
66
runner = uv-venv-lock-runner

packages/gooddata-fdw/pyproject.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ classifiers = [
3838
"Programming Language :: Python :: 3.11",
3939
"Programming Language :: Python :: 3.12",
4040
"Programming Language :: Python :: 3.13",
41+
"Programming Language :: Python :: 3.14",
4142
"Topic :: Database",
4243
"Topic :: Scientific/Engineering",
4344
"Topic :: Software Development",
@@ -60,7 +61,7 @@ test = [
6061
]
6162
type = [
6263
"mypy~=1.11.2",
63-
"pydantic~=2.9.2"
64+
"pydantic~=2.12.0",
6465
]
6566

6667
[tool.hatch.build.targets.wheel]

packages/gooddata-fdw/tox.ini

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# (C) 2021 GoodData Corporation
22
[tox]
3-
envlist = py3{10,11,12,13}
3+
envlist = py3{10,11,12,13,14}
44

55
[testenv]
66
runner = uv-venv-lock-runner
@@ -20,7 +20,7 @@ commands =
2020
mypy src/gooddata_fdw
2121

2222
[testenv:docs]
23-
basepython = python3.13
23+
basepython = python3.14
2424
skip_install = true
2525
deps =
2626
-r{toxinidir}/docs/requirements.txt

packages/gooddata-flexconnect/pyproject.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ classifiers = [
4444
"Programming Language :: Python :: 3.11",
4545
"Programming Language :: Python :: 3.12",
4646
"Programming Language :: Python :: 3.13",
47+
"Programming Language :: Python :: 3.14",
4748
"Topic :: Database",
4849
"Topic :: Scientific/Engineering",
4950
"Topic :: Software Development",
@@ -62,7 +63,7 @@ test = [
6263
]
6364
type = [
6465
"mypy~=1.11.2",
65-
"pydantic~=2.9.2"
66+
"pydantic~=2.12.0",
6667
]
6768

6869
[tool.hatch.build.targets.wheel]

0 commit comments

Comments
 (0)