Skip to content
Open
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions .github/workflows/cd.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ jobs:
- name: install uv & python
uses: astral-sh/setup-uv@v7
with:
version: "0.10.4"
python-version: "3.9"
version: "0.11.28"
python-version: "3.10"
enable-cache: "false"
- name: Push tag for each updated package
env:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,15 @@ jobs:
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14", "3.15"]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: install uv and python
uses: astral-sh/setup-uv@v7
with:
version: "0.10.4"
version: "0.11.28"
python-version: ${{ matrix.python-version }}
- name: Install
run: make install-dev
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/dependency-checker.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ jobs:
- name: install uv and python
uses: astral-sh/setup-uv@v7
with:
version: "0.10.4"
python-version: "3.9"
version: "0.11.28"
python-version: "3.10"
- name: UV Python dependency updater
env:
GH_TOKEN: ${{ secrets.RENOVATE_TOKEN }}
Expand Down
158 changes: 158 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,46 +1,204 @@
## Release (2026-MM-DD)

- `core`:
- [v0.3.0](core/CHANGELOG.md#v030)
- **Chore:** Bump minimum Python version to 3.10
- **Chore:** Update dependencies
- `alb`
- [v0.11.0](services/alb/CHANGELOG.md#v0110)
- **Chore:** Bump minimum Python version to 3.10
- **Chore:** Update dependencies
- `auditlog`
- [v0.3.0](services/auditlog/CHANGELOG.md#v030)
- **Chore:** Bump minimum Python version to 3.10
- **Chore:** Update dependencies
- `authorization`
- [v0.9.0](services/authorization/CHANGELOG.md#v090)
- **Chore:** Bump minimum Python version to 3.10
- **Chore:** Update dependencies
- `cdn`
- [v2.7.0](services/cdn/CHANGELOG.md#v270)
- **Chore:** Bump minimum Python version to 3.10
- **Chore:** Update dependencies
- `certificates`
- [v1.7.0](services/certificates/CHANGELOG.md#v170)
- **Chore:** Bump minimum Python version to 3.10
- **Chore:** Update dependencies
- `cost`
- [v0.3.0](services/cost/CHANGELOG.md#v030)
- **Chore:** Bump minimum Python version to 3.10
- **Chore:** Update dependencies
- `dns`
- [v0.7.0](services/dns/CHANGELOG.md#v070)
- **Chore:** Bump minimum Python version to 3.10
- **Chore:** Update dependencies
- `edge`
- [v0.6.0](services/edge/CHANGELOG.md#v060)
- **Chore:** Bump minimum Python version to 3.10
- **Chore:** Update dependencies
- `git`
- [v0.10.0](services/git/CHANGELOG.md#v0100)
- **Chore:** Bump minimum Python version to 3.10
- **Chore:** Update dependencies
- `iaas`
- [v1.5.0](services/iaas/CHANGELOG.md#v150)
- **Chore:** Bump minimum Python version to 3.10
- **Chore:** Update dependencies
- `intake`
- [v0.7.0](services/intake/CHANGELOG.md#v070)
- **Chore:** Bump minimum Python version to 3.10
- **Chore:** Update dependencies
- `kms`
- [v0.11.0](services/kms/CHANGELOG.md#0110)
- **Chore:** Bump minimum Python version to 3.10
- **Chore:** Update dependencies
- `lbapplication`
- [v0.5.0](services/lbapplication/CHANGELOG.md#v050)
- **Chore:** Bump minimum Python version to 3.10
- **Chore:** Update dependencies
- `loadbalancer`
- [v0.11.0](services/loadbalancer/CHANGELOG.md#v0110)
- **Chore:** Bump minimum Python version to 3.10
- **Chore:** Update dependencies
- `logme`:
- [v1.1.0](services/logme/CHANGELOG.md#v110)
- **Chore:** Bump minimum Python version to 3.10
- **Chore:** Update dependencies
- [v1.0.0](services/logme/CHANGELOG.md#v100)
- **Breaking Change:** The region is no longer specified within the client configuration. Instead, the region must be passed as a parameter to any region-specific request.
- **Deprecation:** `fluentd_tls`, `fluentd_tls_ciphers`, `fluentd_tls_max_version`, `fluentd_tls_min_version`, `fluentd_tls_version`, `opensearch_tls_ciphers`, `opensearch_tls_protocols` from `InstanceParameters` model are deprecated and will be removed 2026-12-12.
- **Feature:** Added optional `CreateCredentialsPayload`.
- `logs`
- [v0.4.0](services/logs/CHANGELOG.md#v040)
- **Chore:** Bump minimum Python version to 3.10
- **Chore:** Update dependencies
- `mariadb`:
- [v1.1.0](services/mariadb/CHANGELOG.md#v110)
- **Chore:** Bump minimum Python version to 3.10
- **Chore:** Update dependencies
- [v1.0.0](services/mariadb/CHANGELOG.md#v100)
- **Breaking Change:** The region is no longer specified within the client configuration. Instead, the region must be passed as a parameter to any region-specific request.
- **Feature:** Added optional `CreateCredentialsPayload`.
- `modelexperiements`
- [v0.2.0](services/modelexperiments/CHANGELOG.md#v020)
- **Chore:** Bump minimum Python version to 3.10
- **Chore:** Update dependencies
- [v0.1.0](services/modelexperiments/CHANGELOG.md#v010)
- **New**: API for STACKIT modelexperiments
- `modelserving`
- [v0.4.0](services/modelserving/CHANGELOG.md#040)
- **Chore:** Bump minimum Python version to 3.10
- **Chore:** Update dependencies
- `mongodbflex`:
- [v1.5.0](services/mongodbflex/CHANGELOG.md#v1.5.0)
- **Chore:** Bump minimum Python version to 3.10
- **Chore:** Update dependencies
- [v1.4.0](services/mongodbflex/CHANGELOG.md#v140)
- **Breaking change:** Introduce validators for `name`, `database` and `username`
- `objectstorage`
- [v1.5.0](services/objectstorage/CHANGELOG.md#mdv150)
- **Chore:** Bump minimum Python version to 3.10
- **Chore:** Update dependencies
- `observability`
- [v0.16.0](services/observability/CHANGELOG.md#v0160)
- **Chore:** Bump minimum Python version to 3.10
- **Chore:** Update dependencies
- `opensearch`:
- [v1.1.0](services/opensearch/CHANGELOG.md#v110)
- **Chore:** Bump minimum Python version to 3.10
- **Chore:** Update dependencies
- [v1.0.0](services/opensearch/CHANGELOG.md#v100)
- **Breaking Change:** The region is no longer specified within the client configuration. Instead, the region must be passed as a parameter to any region-specific request.
- **Deprecation:** `tls_ciphers`, `tls_protocols` from `InstanceParameters` model are deprecated and will be removed 2026-12-12.
- **Feature:** Added optional `CreateCredentialsPayload`.
- `postgresflex`
- [v1.4.0](services/postgresflex/CHANGELOG.md#v140)
- **Chore:** Bump minimum Python version to 3.10
- **Chore:** Update dependencies
- `rabbitmq`:
- [v1.1.0](services/rabbitmq/CHANGELOG.md#v110)
- **Chore:** Bump minimum Python version to 3.10
- **Chore:** Update dependencies
- [v1.0.0](services/rabbitmq/CHANGELOG.md#v100)
- **Breaking Change:** The region is no longer specified within the client configuration. Instead, the region must be passed as a parameter to any region-specific request.
- **Deprecation:** `roles`, `tls_ciphers`, `tls_protocols` from `InstanceParameters` model are deprecated and will be removed 2026-12-11.
- **Feature:** Added optional `CreateCredentialsPayload`.
- `redis`:
- [v1.1.0](services/rabbitmq/CHANGELOG.md#v110)
- **Chore:** Bump minimum Python version to 3.10
- **Chore:** Update dependencies
- [v1.0.0](services/redis/CHANGELOG.md#v100)
- **Breaking Change:** The region is no longer specified within the client configuration. Instead, the region must be passed as a parameter to any region-specific request.
- **Deprecation:** `tls_ciphers`, `tls_ciphersuites`, `tls_protocols` from `InstanceParameters` model are deprecated and will be removed 2026-12-10.
- **Feature:** Added optional `CreateCredentialsPayload`.
- `resourcemanager`
- [v0.9.0](services/resourcemanager/CHANGELOG.md#090)
- **Chore:** Bump minimum Python version to 3.10
- **Chore:** Update dependencies
- `runcommand`
- [v1.3.0](services/runcommand/CHANGELOG.md#v130)
- **Chore:** Bump minimum Python version to 3.10
- **Chore:** Update dependencies
- `scf`
- [v0.6.0](services/scf/CHANGELOG.md#v060)
- **Chore:** Bump minimum Python version to 3.10
- **Chore:** Update dependencies
- `secretsmanager`
- [v0.6.0](services/secretsmanager/CHANGELOG.md060)
- **Chore:** Bump minimum Python version to 3.10
- **Chore:** Update dependencies
- `serverbackup`
- [v1.3.0](services/serverbackup/CHANGELOG.md#v130)
- **Chore:** Bump minimum Python version to 3.10
- **Chore:** Update dependencies
- `serverupdate`
- [v1.3.0](services/serverupdate/CHANGELOG.md#v130)
- **Chore:** Bump minimum Python version to 3.10
- **Chore:** Update dependencies
- `serviceaccount`
- [v0.10.0](services/serviceaccount/CHANGELOG.md#v0100)
- **Chore:** Bump minimum Python version to 3.10
- **Chore:** Update dependencies
- `serviceenablement`
- [v1.3.0](services/serviceenablement/CHANGELOG.md#v130)
- **Chore:** Bump minimum Python version to 3.10
- **Chore:** Update dependencies
- `sfs`
- [v0.8.0](services/sfs/CHANGELOG.md#v080)
- **Chore:** Bump minimum Python version to 3.10
- **Chore:** Update dependencies
- `ske`:
- [v1.13.0](services/ske/CHANGELOG.md#v1130)
- **Chore:** Bump minimum Python version to 3.10
- **Chore:** Update dependencies
- [v1.12.0](services/ske/CHANGELOG.md#v1120)
- **Improvement:** Add regex validation of `name` attribute in model class `Cluster`
- **Feature:** New model class `Audit`
- **Feature:** Add optional attribute `audit` (type `Audit`) to model class `Cluster`
- `sqlserverflex`
- [v1.3.0](services/sqlserverflex/CHANGELOG.md#v130)
- **Chore:** Bump minimum Python version to 3.10
- **Chore:** Update dependencies
- `stackitmarketplace`
- [v1.17.0](services/stackitmarketplace/CHANGELOG.md#v1170)
- **Chore:** Bump minimum Python version to 3.10
- **Chore:** Update dependencies
- `telemetrylink`:
- [v0.3.0](services/telemetrylink/CHANGELOG.md#v030)
- **Chore:** Bump minimum Python version to 3.10
- **Chore:** Update dependencies
- [v0.2.0](services/telemetrylink/CHANGELOG.md#v020)
- **New:** v1 API version for STACKIT Telemetry Link
- `telemetryrouter`:
- [v0.4.0](services/telemetryrouter/CHANGELOG.md#v040)
- **Chore:** Bump minimum Python version to 3.10
- **Chore:** Update dependencies
- [v0.3.0](services/telemetryrouter/CHANGELOG.md#v030)
- **New:** v1 API version for STACKIT Telemetry Router
- `vpn`
- [v0.6.0](services/vpn/CHANGELOG.md#v060)
- **Chore:** Bump minimum Python version to 3.10
- **Chore:** Update dependencies

## Release (2026-13-05)
- `auditlog`:
Expand Down
4 changes: 4 additions & 0 deletions core/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## v0.3.0
- **Chore:** Bump minimum Python version to 3.10
- **Chore:** Update dependencies

## v0.2.0 (2025-06-12)
- **Feature:** Allow setting custom token endpoint url in configuration

Expand Down
19 changes: 9 additions & 10 deletions core/pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,27 +1,26 @@
[project]
name = "stackit-core"
version = "v0.2.0"
version = "v0.3.0"
description = "Core functionality for the STACKIT SDK for Python"
authors = [{ name = "STACKIT Developer Tools", email = "developer-tools@stackit.cloud" }]
requires-python = ">=3.9,<4.0"
requires-python = ">=3.10,<4.0"
readme = "README.md"
classifiers = [
"Programming Language :: Python :: 3",
"License :: OSI Approved :: Apache Software License",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3.9",
"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",
]
dependencies = [
"pyjwt>=2.9.0",
"pyjwt>=2.13.0",
"pydantic>=2.9.2",
"urllib3>=2.2.3",
"cryptography>=43.0.1",
"requests>=2.32.3",
"urllib3>=2.7.0",
"cryptography>=46.0.5",
"requests>=2.33.0",
]

[project.urls]
Expand All @@ -30,8 +29,8 @@ Issues = "https://github.com/stackitcloud/stackit-sdk-python/issues"

[dependency-groups]
dev = [
"black>=24.8.0",
"pytest>=8.3.3",
"black>=26.3.1",
"pytest>=9.1.1",
"flake8>=5.0.3 ; python_full_version < '3.12'",
"flake8>=6.0.1 ; python_full_version >= '3.12'",
"flake8-black>=0.3.6",
Expand Down Expand Up @@ -108,7 +107,7 @@ statistics = true
show-source = false
max-line-length = 120
# E203,W503 and E704 are incompatible with the formatter black
ignore = ["E203", "W503", "E704"]
ignore = ["E203", "W503", "E704", "B042"]
inline-quotes = '"'
docstring-quotes = '"""'
multiline-quotes = '"""'
Expand Down
9 changes: 5 additions & 4 deletions core/tests/core/test_auth.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
from stackit.core.authorization import Authorization
from stackit.core.configuration import Configuration


DEFAULT_EMAIL = "email"
DEFAULT_PRIVATE_KEY_PATH = "/path/to/private.key"
DEFAULT_SERVICE_ACCOUNT_TOKEN = "token"
Expand Down Expand Up @@ -272,9 +271,11 @@ def test_token_refresh_fails_after_retries(self, service_account_key_file_json):
def set_initial_token(auth):
auth.initial_token = "test-initial-token"

with patch.object(KeyAuth, "_KeyAuth__create_initial_token", new=set_initial_token), patch.object(
KeyAuth, "_KeyAuth__start_token_refresh_task", return_value=None
), patch("requests.post") as mock_post:
with (
patch.object(KeyAuth, "_KeyAuth__create_initial_token", new=set_initial_token),
patch.object(KeyAuth, "_KeyAuth__start_token_refresh_task", return_value=None),
patch("requests.post") as mock_post,
):
init_response = Mock()
init_response.raise_for_status.return_value = None
init_response.json.return_value = {
Expand Down
1 change: 0 additions & 1 deletion core/tests/core/test_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

from stackit.core.configuration import Configuration


SERVICE_ACCOUNT_EMAIL = "test@example.org"
SERVICE_ACCOUNT_TOKEN = "token"
SERVICE_ACCOUNT_KEY_PATH = "/path/to/account/key"
Expand Down
Loading
Loading