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
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
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
20 changes: 10 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,8 @@ statistics = true
show-source = false
max-line-length = 120
# E203,W503 and E704 are incompatible with the formatter black
ignore = ["E203", "W503", "E704"]
# fixing B042 in upstream exceptions.mustache would be a breaking change
ignore = ["E203", "W503", "E704", "B042"]
Comment thread
SerseusWasTaken marked this conversation as resolved.
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