Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
3c15807
feat(api): aggregated API specs update
stainless-app[bot] Jan 2, 2026
3dc71fe
feat(api): aggregated API specs update
stainless-app[bot] Jan 6, 2026
cf8ed10
codegen metadata
stainless-app[bot] Jan 6, 2026
19103d9
feat(cloud): add support for volume snapshots
stainless-app[bot] Jan 6, 2026
60217ad
codegen metadata
stainless-app[bot] Jan 7, 2026
43225eb
feat(api): aggregated API specs update
stainless-app[bot] Jan 7, 2026
92caa3f
codegen metadata
stainless-app[bot] Jan 7, 2026
9f567f9
feat(api): aggregated API specs update
stainless-app[bot] Jan 8, 2026
b3485b6
codegen metadata
stainless-app[bot] Jan 8, 2026
e4f64fd
feat(api): aggregated API specs update
stainless-app[bot] Jan 12, 2026
667f129
feat(api): aggregated API specs update
stainless-app[bot] Jan 12, 2026
3374f91
fix(cloud)!: rename instance flavor model
stainless-app[bot] Jan 12, 2026
d2e76de
feat(api): aggregated API specs update
stainless-app[bot] Jan 13, 2026
780229b
feat(client): add support for binary request streaming
stainless-app[bot] Jan 13, 2026
fabf3fb
fix(cloud): update type for instance flavor in examples
deferred Jan 19, 2026
e5a58a3
feat(client): add support for binary request streaming
stainless-app[bot] Jan 19, 2026
3350bb9
feat(api): aggregated API specs update
stainless-app[bot] Jan 14, 2026
5e0ea7b
feat(api): aggregated API specs update
stainless-app[bot] Jan 14, 2026
31379f2
fix: use correct collection models
stainless-app[bot] Jan 15, 2026
34ed205
feat(api): aggregated API specs update
stainless-app[bot] Jan 15, 2026
8646d68
codegen metadata
stainless-app[bot] Jan 16, 2026
a407b00
chore(internal): update `actions/checkout` version
stainless-app[bot] Jan 16, 2026
c0ac9f3
codegen metadata
stainless-app[bot] Jan 19, 2026
02468c1
feat(api): aggregated API specs update
stainless-app[bot] Jan 19, 2026
823f421
fix(examples): ignore deprecated warnings for security groups
pedrodeoliveira Jan 19, 2026
9101b4f
fix(examples): ignore deprecated warnings for floating IPs
pedrodeoliveira Jan 19, 2026
3a432ea
release: 0.29.0
stainless-app[bot] Jan 19, 2026
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
6 changes: 3 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ jobs:
runs-on: ${{ github.repository == 'stainless-sdks/gcore-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
if: github.event_name == 'push' || github.event.pull_request.head.repo.fork
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6

- name: Install Rye
run: |
Expand All @@ -44,7 +44,7 @@ jobs:
id-token: write
runs-on: ${{ github.repository == 'stainless-sdks/gcore-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6

- name: Install Rye
run: |
Expand Down Expand Up @@ -81,7 +81,7 @@ jobs:
runs-on: ${{ github.repository == 'stainless-sdks/gcore-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
if: github.event_name == 'push' || github.event.pull_request.head.repo.fork
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6

- name: Install Rye
run: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/detect-breaking-changes.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
run: |
echo "FETCH_DEPTH=$(expr ${{ github.event.pull_request.commits }} + 1)" >> $GITHUB_ENV

- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
# Ensure we can check out the pull request base in the script below.
fetch-depth: ${{ env.FETCH_DEPTH }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/publish-pypi.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6

- name: Install Rye
run: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release-doctor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:
if: github.repository == 'G-Core/gcore-python' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch' || startsWith(github.head_ref, 'release-please') || github.head_ref == 'next')

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6

- name: Check release environment
run: |
Expand Down
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "0.28.0"
".": "0.29.0"
}
8 changes: 4 additions & 4 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 641
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gcore%2Fgcore-2c3abe1f1637f97f6bc750aff6eb77efc45ac2b527376541ac2af6b9626b35af.yml
openapi_spec_hash: ff74a4ccd9ec5ddb1a65963d52e709ba
config_hash: df463160c27e4de887be7c27454ac4e0
configured_endpoints: 645
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gcore%2Fgcore-3fc43b72b82321f8d4ceea9ea44d7ab14e75872dbe66e3e698e1f59ba300ec55.yml
openapi_spec_hash: 1b1043a0ef7bcf106abf14f9187f5755
config_hash: 7085751e6bd8f3fd13cfebe04bb99fed
39 changes: 39 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,44 @@
# Changelog

## 0.29.0 (2026-01-19)

Full Changelog: [v0.28.0...v0.29.0](https://github.com/G-Core/gcore-python/compare/v0.28.0...v0.29.0)

### ⚠ BREAKING CHANGES

* **cloud:** rename instance flavor model

### Features

* **api:** aggregated API specs update ([02468c1](https://github.com/G-Core/gcore-python/commit/02468c1c9e318746cd3b251f0250bdc94e1ea6c0))
* **api:** aggregated API specs update ([34ed205](https://github.com/G-Core/gcore-python/commit/34ed205d304b9fb6606629ff42c4112739a102e8))
* **api:** aggregated API specs update ([5e0ea7b](https://github.com/G-Core/gcore-python/commit/5e0ea7be815dddcaeace5af49d07d3d74dff3224))
* **api:** aggregated API specs update ([3350bb9](https://github.com/G-Core/gcore-python/commit/3350bb9ec9d12d9299b505f62e5e335deaf37421))
* **api:** aggregated API specs update ([d2e76de](https://github.com/G-Core/gcore-python/commit/d2e76de6e6e070d6253ba6ee5102cbadb9fc1ff4))
* **api:** aggregated API specs update ([667f129](https://github.com/G-Core/gcore-python/commit/667f129c821808b2f2a250a90d4fb6adb36195e9))
* **api:** aggregated API specs update ([e4f64fd](https://github.com/G-Core/gcore-python/commit/e4f64fd76cb32caa28782a171a4cf1cb4c47674d))
* **api:** aggregated API specs update ([9f567f9](https://github.com/G-Core/gcore-python/commit/9f567f9268490b9c1b403a502ddd5f5e7a617534))
* **api:** aggregated API specs update ([43225eb](https://github.com/G-Core/gcore-python/commit/43225eb53397a63c3b44c518a20e665561d1a86e))
* **api:** aggregated API specs update ([3dc71fe](https://github.com/G-Core/gcore-python/commit/3dc71fe42e2466ae8040af28c77153383609e041))
* **api:** aggregated API specs update ([3c15807](https://github.com/G-Core/gcore-python/commit/3c15807ac8fdc5c0ca42421896f829054eaa82cf))
* **client:** add support for binary request streaming ([e5a58a3](https://github.com/G-Core/gcore-python/commit/e5a58a3024caa8212a2dd9e86c78087185fc798c))
* **client:** add support for binary request streaming ([780229b](https://github.com/G-Core/gcore-python/commit/780229bb9a47ad9b822e1bd3df576a6918a177ed))
* **cloud:** add support for volume snapshots ([19103d9](https://github.com/G-Core/gcore-python/commit/19103d9b95b37e597d545052d957d2593810307c))


### Bug Fixes

* **cloud:** rename instance flavor model ([3374f91](https://github.com/G-Core/gcore-python/commit/3374f91b05a70fbc617ef2e070b8fec96e0b08b8))
* **cloud:** update type for instance flavor in examples ([fabf3fb](https://github.com/G-Core/gcore-python/commit/fabf3fb6c466d52a3df10bcf46c7cbdcf82242cf))
* **examples:** ignore deprecated warnings for floating IPs ([9101b4f](https://github.com/G-Core/gcore-python/commit/9101b4f3204029c75a0dfd8e984436883a941baf))
* **examples:** ignore deprecated warnings for security groups ([823f421](https://github.com/G-Core/gcore-python/commit/823f421a34f787b95099f1dec06b5b64cc206cf4))
* use correct collection models ([31379f2](https://github.com/G-Core/gcore-python/commit/31379f2467ba06d4a049ce786d84f0c4dbb3d7c1))


### Chores

* **internal:** update `actions/checkout` version ([a407b00](https://github.com/G-Core/gcore-python/commit/a407b00b9771801ce82d55b0edd9a85c271fa7e2))

## 0.28.0 (2025-12-30)

Full Changelog: [v0.27.0...v0.28.0](https://github.com/G-Core/gcore-python/compare/v0.27.0...v0.28.0)
Expand Down
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@
same "printed page" as the copyright notice for easier
identification within third-party archives.

Copyright 2025 Gcore
Copyright 2026 Gcore

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
Expand Down
17 changes: 16 additions & 1 deletion api.md
Original file line number Diff line number Diff line change
Expand Up @@ -957,7 +957,7 @@ Methods:
Types:

```python
from gcore.types.cloud.instances import InstanceFlavor, InstanceFlavorList
from gcore.types.cloud.instances import InstanceFlavorDetailed, InstanceFlavorList
```

Methods:
Expand Down Expand Up @@ -1165,6 +1165,21 @@ Methods:

- <code title="post /cloud/v1/dbaas/postgres/validate_pg_conf/{project_id}/{region_id}">client.cloud.databases.postgres.custom_configurations.<a href="./src/gcore/resources/cloud/databases/postgres/custom_configurations.py">validate</a>(\*, project_id, region_id, \*\*<a href="src/gcore/types/cloud/databases/postgres/custom_configuration_validate_params.py">params</a>) -> <a href="./src/gcore/types/cloud/databases/postgres/pg_conf_validation.py">PgConfValidation</a></code>

## VolumeSnapshots

Types:

```python
from gcore.types.cloud import Snapshot
```

Methods:

- <code title="post /cloud/v1/snapshots/{project_id}/{region_id}">client.cloud.volume_snapshots.<a href="./src/gcore/resources/cloud/volume_snapshots.py">create</a>(\*, project_id, region_id, \*\*<a href="src/gcore/types/cloud/volume_snapshot_create_params.py">params</a>) -> <a href="./src/gcore/types/cloud/task_id_list.py">TaskIDList</a></code>
- <code title="patch /cloud/v1/snapshots/{project_id}/{region_id}/{snapshot_id}">client.cloud.volume_snapshots.<a href="./src/gcore/resources/cloud/volume_snapshots.py">update</a>(snapshot_id, \*, project_id, region_id, \*\*<a href="src/gcore/types/cloud/volume_snapshot_update_params.py">params</a>) -> <a href="./src/gcore/types/cloud/snapshot.py">Snapshot</a></code>
- <code title="delete /cloud/v1/snapshots/{project_id}/{region_id}/{snapshot_id}">client.cloud.volume_snapshots.<a href="./src/gcore/resources/cloud/volume_snapshots.py">delete</a>(snapshot_id, \*, project_id, region_id) -> <a href="./src/gcore/types/cloud/task_id_list.py">TaskIDList</a></code>
- <code title="get /cloud/v1/snapshots/{project_id}/{region_id}/{snapshot_id}">client.cloud.volume_snapshots.<a href="./src/gcore/resources/cloud/volume_snapshots.py">get</a>(snapshot_id, \*, project_id, region_id) -> <a href="./src/gcore/types/cloud/snapshot.py">Snapshot</a></code>

# Waap

Types:
Expand Down
4 changes: 2 additions & 2 deletions examples/cloud/floating_ips.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ def get_floating_ip(*, client: Gcore, floating_ip_id: str) -> None:

def assign_floating_ip(*, client: Gcore, floating_ip_id: str, port_id: str) -> None:
print("\n=== ASSIGN FLOATING IP ===")
floating_ip = client.cloud.floating_ips.assign(
floating_ip = client.cloud.floating_ips.assign( # pyright: ignore[reportDeprecated]
floating_ip_id=floating_ip_id,
port_id=port_id,
)
Expand All @@ -70,7 +70,7 @@ def assign_floating_ip(*, client: Gcore, floating_ip_id: str, port_id: str) -> N

def unassign_floating_ip(*, client: Gcore, floating_ip_id: str) -> None:
print("\n=== UNASSIGN FLOATING IP ===")
floating_ip = client.cloud.floating_ips.unassign(floating_ip_id=floating_ip_id)
floating_ip = client.cloud.floating_ips.unassign(floating_ip_id=floating_ip_id) # pyright: ignore[reportDeprecated]
print(f"Unassigned floating IP: ID={floating_ip.id}")
print("========================")

Expand Down
4 changes: 2 additions & 2 deletions examples/cloud/floating_ips_async.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ async def get_floating_ip(*, client: AsyncGcore, floating_ip_id: str) -> None:

async def assign_floating_ip(*, client: AsyncGcore, floating_ip_id: str, port_id: str) -> None:
print("\n=== ASSIGN FLOATING IP ===")
floating_ip = await client.cloud.floating_ips.assign(
floating_ip = await client.cloud.floating_ips.assign( # pyright: ignore[reportDeprecated]
floating_ip_id=floating_ip_id,
port_id=port_id,
)
Expand All @@ -70,7 +70,7 @@ async def assign_floating_ip(*, client: AsyncGcore, floating_ip_id: str, port_id

async def unassign_floating_ip(*, client: AsyncGcore, floating_ip_id: str) -> None:
print("\n=== UNASSIGN FLOATING IP ===")
floating_ip = await client.cloud.floating_ips.unassign(floating_ip_id=floating_ip_id)
floating_ip = await client.cloud.floating_ips.unassign(floating_ip_id=floating_ip_id) # pyright: ignore[reportDeprecated]
print(f"Unassigned floating IP: ID={floating_ip.id}")
print("========================")

Expand Down
4 changes: 2 additions & 2 deletions examples/cloud/instances.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
InterfaceNewInterfaceExternalSerializerPydantic,
VolumeCreateInstanceCreateVolumeFromImageSerializer,
)
from gcore.types.cloud.instances.instance_flavor import InstanceFlavor
from gcore.types.cloud.instances.instance_flavor_detailed import InstanceFlavorDetailed


def main() -> None:
Expand Down Expand Up @@ -328,7 +328,7 @@ def delete_image(*, client: Gcore, image_id: str) -> None:
print("========================")


def _print_flavor_details(flavors: List[InstanceFlavor]) -> None:
def _print_flavor_details(flavors: List[InstanceFlavorDetailed]) -> None:
display_count = 3
if len(flavors) < display_count:
display_count = len(flavors)
Expand Down
4 changes: 2 additions & 2 deletions examples/cloud/instances_async.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
InterfaceNewInterfaceExternalSerializerPydantic,
VolumeCreateInstanceCreateVolumeFromImageSerializer,
)
from gcore.types.cloud.instances.instance_flavor import InstanceFlavor
from gcore.types.cloud.instances.instance_flavor_detailed import InstanceFlavorDetailed


async def main() -> None:
Expand Down Expand Up @@ -333,7 +333,7 @@ async def delete_image(*, client: AsyncGcore, image_id: str) -> None:
print("========================")


async def _print_flavor_details(flavors: List[InstanceFlavor]) -> None:
async def _print_flavor_details(flavors: List[InstanceFlavorDetailed]) -> None:
display_count = 3
if len(flavors) < display_count:
display_count = len(flavors)
Expand Down
4 changes: 2 additions & 2 deletions examples/cloud/security_groups.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ def main() -> None:

def create_security_group(*, client: Gcore) -> str:
print("\n=== CREATE SECURITY GROUP ===")
security_group = client.cloud.security_groups.create(security_group=SecurityGroup(name="gcore-go-example"))
security_group = client.cloud.security_groups.create(security_group=SecurityGroup(name="gcore-go-example")) # pyright: ignore[reportDeprecated]
print(f"Created security group: ID={security_group.id}, name={security_group.name}")
print("========================")
return security_group.id
Expand All @@ -57,7 +57,7 @@ def get_security_group(*, client: Gcore, security_group_id: str) -> None:

def update_security_group(*, client: Gcore, security_group_id: str) -> None:
print("\n=== UPDATE SECURITY GROUP ===")
security_group = client.cloud.security_groups.update(
security_group = client.cloud.security_groups.update( # pyright: ignore[reportDeprecated]
group_id=security_group_id,
name="gcore-go-example-updated",
)
Expand Down
4 changes: 2 additions & 2 deletions examples/cloud/security_groups_async.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ async def main() -> None:

async def create_security_group(client: AsyncGcore) -> str:
print("\n=== CREATE SECURITY GROUP ===")
security_group = await client.cloud.security_groups.create(security_group=SecurityGroup(name="gcore-go-example"))
security_group = await client.cloud.security_groups.create(security_group=SecurityGroup(name="gcore-go-example")) # pyright: ignore[reportDeprecated]
print(f"Created security group: ID={security_group.id}, name={security_group.name}")
print("========================")
return security_group.id
Expand All @@ -61,7 +61,7 @@ async def get_security_group(*, client: AsyncGcore, security_group_id: str) -> N

async def update_security_group(*, client: AsyncGcore, security_group_id: str) -> None:
print("\n=== UPDATE SECURITY GROUP ===")
security_group = await client.cloud.security_groups.update(
security_group = await client.cloud.security_groups.update( # pyright: ignore[reportDeprecated]
group_id=security_group_id,
name="gcore-go-example-updated",
)
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "gcore"
version = "0.28.0"
version = "0.29.0"
description = "The official Python library for the gcore API"
dynamic = ["readme"]
license = "Apache-2.0"
Expand Down
Loading
Loading