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
ece4535
chore: update lockfile
stainless-app[bot] Dec 2, 2025
2c2fa17
chore(docs): use environment variables for authentication in code sni…
stainless-app[bot] Dec 2, 2025
b745f43
feat(api): aggregated API specs update
stainless-app[bot] Dec 3, 2025
61299ed
feat(api): aggregated API specs update
stainless-app[bot] Dec 3, 2025
143cc71
codegen metadata
stainless-app[bot] Dec 4, 2025
06e1dc3
fix!: streamline naming for create/replace models
stainless-app[bot] Dec 4, 2025
86346d4
fix(cloud)!: rename load balancer pool member methods to create/delete
stainless-app[bot] Dec 4, 2025
cb075f5
fix(cdn)!: streamline audit_logs naming
stainless-app[bot] Dec 4, 2025
d7c7261
codegen metadata
stainless-app[bot] Dec 8, 2025
c5159ef
feat(api): aggregated API specs update
stainless-app[bot] Dec 8, 2025
8b73b2a
fix(cloud): fix types in examples
deferred Dec 8, 2025
a1d51b8
feat(api): aggregated API specs update
stainless-app[bot] Dec 9, 2025
27d5cb3
codegen metadata
stainless-app[bot] Dec 8, 2025
616698d
fix(types): allow pyright to infer TypedDict types within SequenceNotStr
stainless-app[bot] Dec 8, 2025
91761cb
chore: add missing docstrings
stainless-app[bot] Dec 8, 2025
10d5846
codegen metadata
stainless-app[bot] Dec 9, 2025
a6e8476
codegen metadata
stainless-app[bot] Dec 9, 2025
7656563
feat(api): aggregated API specs update
stainless-app[bot] Dec 9, 2025
67dc79f
feat(api): aggregated API specs update
stainless-app[bot] Dec 9, 2025
145f10c
feat(dns): enable terraform code generation for gcore_dns_network_map…
stainless-app[bot] Dec 9, 2025
310c86d
fix(cloud)!: replace PUT /cloud/v1/l7policies with PATCH
stainless-app[bot] Dec 9, 2025
27c74a2
codegen metadata
stainless-app[bot] Dec 9, 2025
de29040
fix(cloud): use PATCH /cloud/v1/projects
stainless-app[bot] Dec 10, 2025
766f5aa
fix(cloud)replace load balancer L7 policy replace_and_poll() with upd…
deferred Dec 10, 2025
f2d5e27
codegen metadata
stainless-app[bot] Dec 10, 2025
d25797a
codegen metadata
stainless-app[bot] Dec 10, 2025
67fa880
release: 0.24.0
stainless-app[bot] Dec 10, 2025
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
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.23.0"
".": "0.24.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: 633
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gcore%2Fgcore-415b3e1ff98241ebe58f65df0e6ee1381f07ced3d6e9af8bbf9ff8ba25ad655d.yml
openapi_spec_hash: cbcb8f94fedaa853d6fa4763016ce6e0
config_hash: c71c5fd84e30d315500ae54ec3a83b71
configured_endpoints: 640
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gcore%2Fgcore-4079df5b80ccb3ccbdfbfab9543db244c7e236675b3ef9fd4f9b9f21e77cbb19.yml
openapi_spec_hash: 2ab81d6ee1696810acf27cfbfd559700
config_hash: 12d04b6067da5a07e6f7f104987c0360
39 changes: 39 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,44 @@
# Changelog

## 0.24.0 (2025-12-10)

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

### ⚠ BREAKING CHANGES

* **cloud:** replace PUT /cloud/v1/l7policies with PATCH
* **cdn:** streamline audit_logs naming
* **cloud:** rename load balancer pool member methods to create/delete
* streamline naming for create/replace models

### Features

* **api:** aggregated API specs update ([67dc79f](https://github.com/G-Core/gcore-python/commit/67dc79fea2b041b24b212a02e927ccbd243e4522))
* **api:** aggregated API specs update ([7656563](https://github.com/G-Core/gcore-python/commit/7656563fc5dd17e35f6818812ca099251cdda258))
* **api:** aggregated API specs update ([a1d51b8](https://github.com/G-Core/gcore-python/commit/a1d51b8ff11dc70e5f8f534cb45e87e1eba2cc14))
* **api:** aggregated API specs update ([c5159ef](https://github.com/G-Core/gcore-python/commit/c5159efb03e551f71ed83f7efd3a9b73f5017d1d))
* **api:** aggregated API specs update ([61299ed](https://github.com/G-Core/gcore-python/commit/61299edb52f077ab1cd4ac198b3ce59283fe779c))
* **api:** aggregated API specs update ([b745f43](https://github.com/G-Core/gcore-python/commit/b745f43a066be1d41dd690c0e767d60e495c4a6c))
* **dns:** enable terraform code generation for gcore_dns_network_mapping ([145f10c](https://github.com/G-Core/gcore-python/commit/145f10ce4125be5a97ec6f092e4056ff78b2f3b1))


### Bug Fixes

* **cdn:** streamline audit_logs naming ([cb075f5](https://github.com/G-Core/gcore-python/commit/cb075f51ee3bda135fbeb9eae1957ad0cda1c22a))
* **cloud:** fix types in examples ([8b73b2a](https://github.com/G-Core/gcore-python/commit/8b73b2ae7a25cd187f5eeeb8e264c8ea6b22aaa1))
* **cloud:** rename load balancer pool member methods to create/delete ([86346d4](https://github.com/G-Core/gcore-python/commit/86346d4fd0f464f120dd0ed6c1e7fb2b0107a625))
* **cloud:** replace PUT /cloud/v1/l7policies with PATCH ([310c86d](https://github.com/G-Core/gcore-python/commit/310c86dfebff83232844a7bed4b8c8094f0f38a6))
* **cloud:** use PATCH /cloud/v1/projects ([de29040](https://github.com/G-Core/gcore-python/commit/de29040774e27e8fd6ea552d6f47ca60a1992976))
* streamline naming for create/replace models ([06e1dc3](https://github.com/G-Core/gcore-python/commit/06e1dc32499533ad16b88458164ec5a9ea385cc5))
* **types:** allow pyright to infer TypedDict types within SequenceNotStr ([616698d](https://github.com/G-Core/gcore-python/commit/616698d4f75cd79685904b3ff5cf7a4057525332))


### Chores

* add missing docstrings ([91761cb](https://github.com/G-Core/gcore-python/commit/91761cb4af0ee9824166a9b4eb966f981547d9ec))
* **docs:** use environment variables for authentication in code snippets ([2c2fa17](https://github.com/G-Core/gcore-python/commit/2c2fa1790799aab90409f65669bcb7f48659a7cb))
* update lockfile ([ece4535](https://github.com/G-Core/gcore-python/commit/ece45355779bfa9a8d3c68783cd3512236f83f96))

## 0.23.0 (2025-12-01)

Full Changelog: [v0.22.0...v0.23.0](https://github.com/G-Core/gcore-python/compare/v0.22.0...v0.23.0)
Expand Down
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,14 +84,15 @@ pip install gcore[aiohttp]
Then you can enable it by instantiating the client with `http_client=DefaultAioHttpClient()`:

```python
import os
import asyncio
from gcore import DefaultAioHttpClient
from gcore import AsyncGcore


async def main() -> None:
async with AsyncGcore(
api_key="My API Key",
api_key=os.environ.get("GCORE_API_KEY"), # This is the default and can be omitted
http_client=DefaultAioHttpClient(),
) as client:
project = await client.cloud.projects.create(
Expand Down
52 changes: 38 additions & 14 deletions api.md

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions examples/cloud/ssh_keys.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from gcore import Gcore
from gcore.pagination import SyncOffsetPage
from gcore.types.cloud import SSHKey, SSHKeyCreated
from gcore.types.cloud import SSHKey, SSHKeyCreate


def main() -> None:
Expand All @@ -25,7 +25,7 @@ def main() -> None:
delete_ssh_key(client=gcore, ssh_key_id=ssh_key.id)


def create_ssh_key(*, client: Gcore) -> SSHKeyCreated:
def create_ssh_key(*, client: Gcore) -> SSHKeyCreate:
print("\n=== CREATE SSH KEY ===")
ssh_key = client.cloud.ssh_keys.create(name="gcore-go-example")
print(f"Created SSH key: ID={ssh_key.id}, name={ssh_key.name}")
Expand Down
4 changes: 2 additions & 2 deletions examples/cloud/ssh_keys_async.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

from gcore import AsyncGcore
from gcore.pagination import AsyncOffsetPage
from gcore.types.cloud import SSHKey, SSHKeyCreated
from gcore.types.cloud import SSHKey, SSHKeyCreate


async def main() -> None:
Expand All @@ -27,7 +27,7 @@ async def main() -> None:
await delete_ssh_key(client=gcore, ssh_key_id=ssh_key.id)


async def create_ssh_key(*, client: AsyncGcore) -> SSHKeyCreated:
async def create_ssh_key(*, client: AsyncGcore) -> SSHKeyCreate:
print("\n=== CREATE SSH KEY ===")
ssh_key = await client.cloud.ssh_keys.create(name="gcore-go-example")
print(f"Created SSH key: ID={ssh_key.id}, name={ssh_key.name}")
Expand Down
16 changes: 9 additions & 7 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,20 +1,22 @@
[project]
name = "gcore"
version = "0.23.0"
version = "0.24.0"
description = "The official Python library for the gcore API"
dynamic = ["readme"]
license = "Apache-2.0"
authors = [
{ name = "Gcore", email = "support@gcore.com" },
]

dependencies = [
"httpx>=0.23.0, <1",
"pydantic>=1.9.0, <3",
"typing-extensions>=4.10, <5",
"anyio>=3.5.0, <5",
"distro>=1.7.0, <2",
"sniffio",
"httpx>=0.23.0, <1",
"pydantic>=1.9.0, <3",
"typing-extensions>=4.10, <5",
"anyio>=3.5.0, <5",
"distro>=1.7.0, <2",
"sniffio",
]

requires-python = ">= 3.9"
classifiers = [
"Typing :: Typed",
Expand Down
108 changes: 60 additions & 48 deletions requirements-dev.lock
Original file line number Diff line number Diff line change
Expand Up @@ -12,45 +12,50 @@
-e file:.
aiohappyeyeballs==2.6.1
# via aiohttp
aiohttp==3.12.8
aiohttp==3.13.2
# via gcore
# via httpx-aiohttp
aiosignal==1.3.2
aiosignal==1.4.0
# via aiohttp
annotated-types==0.6.0
annotated-types==0.7.0
# via pydantic
anyio==4.4.0
anyio==4.12.0
# via gcore
# via httpx
argcomplete==3.1.2
argcomplete==3.6.3
# via nox
async-timeout==5.0.1
# via aiohttp
attrs==25.3.0
attrs==25.4.0
# via aiohttp
certifi==2023.7.22
# via nox
backports-asyncio-runner==1.2.0
# via pytest-asyncio
certifi==2025.11.12
# via httpcore
# via httpx
colorama==0.4.6
# via griffe
colorlog==6.7.0
colorlog==6.10.1
# via nox
dependency-groups==1.3.1
# via nox
dirty-equals==0.6.0
distlib==0.3.7
dirty-equals==0.11
distlib==0.4.0
# via virtualenv
distro==1.8.0
distro==1.9.0
# via gcore
exceptiongroup==1.2.2
exceptiongroup==1.3.1
# via anyio
# via pytest
execnet==2.1.1
execnet==2.1.2
# via pytest-xdist
filelock==3.12.4
filelock==3.19.1
# via virtualenv
frozenlist==1.6.2
frozenlist==1.8.0
# via aiohttp
# via aiosignal
griffe==1.13.0
griffe==1.14.0
h11==0.16.0
# via httpcore
httpcore==1.0.9
Expand All @@ -61,83 +66,90 @@ httpx==0.28.1
# via respx
httpx-aiohttp==0.1.9
# via gcore
idna==3.4
humanize==4.13.0
# via nox
idna==3.11
# via anyio
# via httpx
# via yarl
importlib-metadata==7.0.0
iniconfig==2.0.0
importlib-metadata==8.7.0
iniconfig==2.1.0
# via pytest
markdown-it-py==3.0.0
# via rich
mdurl==0.1.2
# via markdown-it-py
multidict==6.4.4
multidict==6.7.0
# via aiohttp
# via yarl
mypy==1.17.0
mypy-extensions==1.0.0
mypy-extensions==1.1.0
# via mypy
nodeenv==1.8.0
nodeenv==1.9.1
# via pyright
nox==2023.4.22
packaging==23.2
nox==2025.11.12
packaging==25.0
# via dependency-groups
# via nox
# via pytest
pathspec==0.12.1
# via mypy
platformdirs==3.11.0
platformdirs==4.4.0
# via virtualenv
pluggy==1.5.0
pluggy==1.6.0
# via pytest
propcache==0.3.1
propcache==0.4.1
# via aiohttp
# via yarl
pydantic==2.11.9
pydantic==2.12.5
# via gcore
pydantic-core==2.33.2
pydantic-core==2.41.5
# via pydantic
pygments==2.18.0
pygments==2.19.2
# via pytest
# via rich
pyright==1.1.399
pytest==8.3.3
pytest==8.4.2
# via pytest-asyncio
# via pytest-xdist
pytest-asyncio==0.24.0
pytest-xdist==3.7.0
python-dateutil==2.8.2
pytest-asyncio==1.2.0
pytest-xdist==3.8.0
python-dateutil==2.9.0.post0
# via time-machine
python-dotenv==1.1.1
pytz==2023.3.post1
# via dirty-equals
respx==0.22.0
rich==13.7.1
ruff==0.9.4
setuptools==68.2.2
# via nodeenv
six==1.16.0
rich==14.2.0
ruff==0.14.7
six==1.17.0
# via python-dateutil
sniffio==1.3.0
# via anyio
sniffio==1.3.1
# via gcore
time-machine==2.9.0
tomli==2.0.2
time-machine==2.19.0
tomli==2.3.0
# via dependency-groups
# via mypy
# via nox
# via pytest
typing-extensions==4.12.2
typing-extensions==4.15.0
# via aiosignal
# via anyio
# via exceptiongroup
# via gcore
# via multidict
# via mypy
# via pydantic
# via pydantic-core
# via pyright
# via pytest-asyncio
# via typing-inspection
typing-inspection==0.4.1
# via virtualenv
typing-inspection==0.4.2
# via pydantic
virtualenv==20.24.5
virtualenv==20.35.4
# via nox
yarl==1.20.0
yarl==1.22.0
# via aiohttp
zipp==3.17.0
zipp==3.23.0
# via importlib-metadata
Loading
Loading