Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions .github/workflows/rw-python-tests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
if: ${{inputs.changed-python-modules == 'true'}}
strategy:
matrix:
python_version: [py313, py312, py311, py310]
python_version: [py314, py313, py312, py311, py310]
steps:
- name: Checkout
uses: actions/checkout@v4
Expand All @@ -21,7 +21,7 @@ jobs:
env:
TEST_ENVS: ${{ matrix.python_version }}
- name: Upload coverage to Codecov
if: ${{ matrix.python_version == 'py313' }}
if: ${{ matrix.python_version == 'py314' }}
uses: codecov/codecov-action@v3
with:
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
Expand All @@ -31,10 +31,10 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up python 3.13
- name: Set up python 3.14
uses: astral-sh/setup-uv@v6
with:
python-version: 3.13
python-version: 3.14
- name: Install dependencies
run: |
uv sync --only-group lint
Expand All @@ -47,7 +47,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up python 3.13
- name: Set up python 3.14
uses: astral-sh/setup-uv@v6
- name: Install dependencies
run: |
Expand Down
2 changes: 1 addition & 1 deletion .python-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.13.1
3.14.0
17 changes: 15 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

## Getting Started

1. Ensure you have at minimum Python 3.13 installed; Python 3.12, 3.11 and 3.10 are optional for multi-environment tests
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

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

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

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


## Maintenance Tasks

### Adding Support for a New Python Version

When adding support for a new Python version:

1. Update all `pyproject.toml` files to include the new Python version classifier
2. Update all `tox.ini` files to include the new Python version in `envlist`
3. Update CI/CD workflows to test against the new Python version
4. **Run `uv lock --upgrade`** to upgrade the lock file and re-resolve dependencies for all Python versions, including the newly added one

The lock file upgrade is crucial as it allows `uv` to pick package versions that are compatible with all supported Python versions.

## Coding Conventions

This project uses [ruff](https://github.com/astral-sh/ruff) to ensure basic code sanity and for no-nonsense, consistent formatting.
Expand Down
6 changes: 5 additions & 1 deletion ci_tests.mk
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# (C) 2021 GoodData Corporation
IN_TEST_ENVS = py313,py312,py311,py310
IN_TEST_ENVS = py314,py313,py312,py311,py310
ifdef TEST_ENVS
IN_TEST_ENVS = $(TEST_ENVS)
endif
Expand Down Expand Up @@ -51,6 +51,10 @@ test-ci-py312-build: Dockerfile
test-ci-py313-build: Dockerfile
docker build --build-arg "PY_TAG=3.13.1-slim-bookworm" --build-arg "ENV_TAG=py313" -t python-sdk:py313 .

.PHONY: test-ci-py314-build
test-ci-py314-build: Dockerfile
docker build --build-arg "PY_TAG=3.14.0-slim-bookworm" --build-arg "ENV_TAG=py314" -t python-sdk:py314 .

# test-ci target triggers unit tests for each requested environment
.PHONY: test-ci
test-ci: $(TEST_CI_ENVS)
Expand Down
2 changes: 1 addition & 1 deletion docs/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM python:3.12-slim AS builder
FROM python:3.14-slim AS builder

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

Expand Down
6 changes: 3 additions & 3 deletions packages/gooddata-dbt/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ name = "gooddata-dbt"
version = "1.54.0"
description = "dbt plugin for GoodData"
readme = "README.md"
license = {text = "MIT"}
license = "MIT"
authors = [
{name = "GoodData", email = "support@gooddata.com"}
]
Expand All @@ -20,11 +20,11 @@ dependencies = [
classifiers = [
"Development Status :: 4 - Beta",
"Environment :: Console",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Topic :: Database",
"Topic :: Scientific/Engineering",
"Topic :: Software Development",
Expand All @@ -41,7 +41,7 @@ test = [
]
type = [
"mypy~=1.11.2",
"pydantic~=2.9.2"
"pydantic~=2.12.0",
]

[tool.hatch.build.targets.wheel]
Expand Down
2 changes: 1 addition & 1 deletion packages/gooddata-dbt/tox.ini
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# (C) 2023 GoodData Corporation
[tox]
envlist = py3{10,11,12,13}
envlist = py3{10,11,12,13,14}

[testenv]
runner = uv-venv-lock-runner
Expand Down
6 changes: 3 additions & 3 deletions packages/gooddata-fdw/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ name = "gooddata-fdw"
version = "1.54.0"
description = "GoodData Cloud Foreign Data Wrapper For PostgreSQL"
readme = "README.md"
license = {text = "MIT"}
license = "MIT"
authors = [
{name = "GoodData", email = "support@gooddata.com"}
]
Expand Down Expand Up @@ -32,11 +32,11 @@ dependencies = [
classifiers = [
"Development Status :: 5 - Production/Stable",
"Environment :: Console",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Topic :: Database",
"Topic :: Scientific/Engineering",
"Topic :: Software Development",
Expand All @@ -59,7 +59,7 @@ test = [
]
type = [
"mypy~=1.11.2",
"pydantic~=2.9.2"
"pydantic~=2.12.0",
]

[tool.hatch.build.targets.wheel]
Expand Down
4 changes: 2 additions & 2 deletions packages/gooddata-fdw/tox.ini
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# (C) 2021 GoodData Corporation
[tox]
envlist = py3{10,11,12,13}
envlist = py3{10,11,12,13,14}

[testenv]
runner = uv-venv-lock-runner
Expand All @@ -22,7 +22,7 @@ commands =
mypy src/gooddata_fdw

[testenv:docs]
basepython = python3.13
basepython = python3.14
skip_install = true
deps =
-r{toxinidir}/docs/requirements.txt
Expand Down
6 changes: 3 additions & 3 deletions packages/gooddata-flexconnect/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ name = "gooddata-flexconnect"
version = "1.54.0"
description = "Build your own data source for GoodData Cloud and GoodData Cloud Native."
readme = "README.md"
license = {text = "MIT"}
license = "MIT"
authors = [
{name = "GoodData", email = "support@gooddata.com"}
]
Expand Down Expand Up @@ -38,11 +38,11 @@ dependencies = [
classifiers = [
"Development Status :: 4 - Beta",
"Environment :: Console",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Topic :: Database",
"Topic :: Scientific/Engineering",
"Topic :: Software Development",
Expand All @@ -61,7 +61,7 @@ test = [
]
type = [
"mypy~=1.11.2",
"pydantic~=2.9.2"
"pydantic~=2.12.0",
]

[tool.hatch.build.targets.wheel]
Expand Down
6 changes: 3 additions & 3 deletions packages/gooddata-flexconnect/tox.ini
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# (C) 2024 GoodData Corporation
[tox]
envlist = py3{10,11,12,13}
envlist = py3{10,11,12,13,14}

[testenv]
package = wheel
Expand All @@ -18,7 +18,7 @@ commands =
pytest -v --cov=src/gooddata_flexconnect --cov-report=xml tests {posargs}

[testenv:mypy]
basepython = python3.13
basepython = python3.14
skip_install = true
deps =
-e../../gooddata-api-client
Expand All @@ -29,7 +29,7 @@ commands =
mypy src/gooddata_flexconnect

[testenv:docs]
basepython = python3.13
basepython = python3.14
skip_install = true
deps =
-r{toxinidir}/docs/requirements.txt
Expand Down
6 changes: 3 additions & 3 deletions packages/gooddata-flight-server/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ name = "gooddata-flight-server"
version = "1.54.0"
description = "Flight RPC server to host custom functions"
readme = "README.md"
license = {text = "MIT"}
license = "MIT"
authors = [
{name = "GoodData", email = "support@gooddata.com"}
]
Expand Down Expand Up @@ -40,11 +40,11 @@ dependencies = [
classifiers = [
"Development Status :: 4 - Beta",
"Environment :: Console",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Topic :: Database",
"Topic :: Scientific/Engineering",
"Topic :: Software Development",
Expand All @@ -65,7 +65,7 @@ test = [
]
type = [
"mypy~=1.11.2",
"pydantic~=2.9.2"
"pydantic~=2.12.0",
]

[tool.hatch.build.targets.wheel]
Expand Down
4 changes: 2 additions & 2 deletions packages/gooddata-flight-server/tox.ini
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# (C) 2024 GoodData Corporation
[tox]
envlist = py3{10,11,12,13}
envlist = py3{10,11,12,13,14}

[testenv]
runner = uv-venv-lock-runner
Expand All @@ -22,7 +22,7 @@ commands =
mypy src/gooddata_flight_server

[testenv:docs]
basepython = python3.13
basepython = python3.14
skip_install = true
deps =
-r{toxinidir}/docs/requirements.txt
Expand Down
6 changes: 3 additions & 3 deletions packages/gooddata-pandas/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ name = "gooddata-pandas"
version = "1.54.0"
description = "GoodData Cloud to pandas"
readme = "README.md"
license = {text = "MIT"}
license = "MIT"
authors = [
{name = "GoodData", email = "support@gooddata.com"}
]
Expand Down Expand Up @@ -36,11 +36,11 @@ dependencies = [
classifiers = [
"Development Status :: 5 - Production/Stable",
"Environment :: Console",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Topic :: Database",
"Topic :: Scientific/Engineering",
"Topic :: Software Development",
Expand All @@ -65,7 +65,7 @@ test = [
]
type = [
"mypy~=1.11.2",
"pydantic~=2.9.2"
"pydantic~=2.12.0",
]

[tool.hatch.build.targets.wheel]
Expand Down
4 changes: 2 additions & 2 deletions packages/gooddata-pandas/tox.ini
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# (C) 2021 GoodData Corporation
[tox]
envlist = py3{10,11,12,13}
envlist = py3{10,11,12,13,14}

[testenv]
runner = uv-venv-lock-runner
Expand All @@ -22,7 +22,7 @@ commands =
mypy src/gooddata_pandas

[testenv:docs]
basepython = python3.13
basepython = python3.14
skip_install = true
deps =
-r{toxinidir}/docs/requirements.txt
Expand Down
4 changes: 2 additions & 2 deletions packages/gooddata-pipelines/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ name = "gooddata-pipelines"
version = "1.54.0"
description = "GoodData Cloud lifecycle automation pipelines"
authors = [{ name = "GoodData", email = "support@gooddata.com" }]
license = { text = "MIT" }
license = "MIT"
readme = "README.md"
requires-python = ">=3.10"
dependencies = [
Expand Down Expand Up @@ -37,7 +37,7 @@ test = [
]
type = [
"mypy (>=1.11.2,<2.0.0)",
"pydantic~=2.9.2",
"pydantic~=2.12.0",
]

[build-system]
Expand Down
2 changes: 1 addition & 1 deletion packages/gooddata-pipelines/tox.ini
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# (C) 2025 GoodData Corporation
[tox]
envlist = py3{10,11,12,13}
envlist = py3{10,11,12,13,14}

[testenv]
runner = uv-venv-lock-runner
Expand Down
Loading
Loading