Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
986fdba
chore(internal): update pydantic dependency
stainless-app[bot] Dec 5, 2025
84fa3bc
codegen metadata
stainless-app[bot] Sep 17, 2025
efa6bd7
chore(types): change optional parameter type from NotGiven to Omit
stainless-app[bot] Sep 18, 2025
3fd8de4
chore: do not install brew dependencies in ./scripts/bootstrap by def…
stainless-app[bot] Sep 19, 2025
98e718f
chore(internal): detect missing future annotations with ruff
stainless-app[bot] Oct 10, 2025
0581279
chore: bump `httpx-aiohttp` version to 0.1.9
stainless-app[bot] Oct 17, 2025
597eb34
fix(client): close streams without requiring full consumption
stainless-app[bot] Oct 29, 2025
2316010
chore(internal/tests): avoid race condition with implicit client cleanup
stainless-app[bot] Oct 30, 2025
ca7ec34
chore(internal): grammar fix (it's -> its)
stainless-app[bot] Nov 3, 2025
86cbb78
chore(package): drop Python 3.8 support
stainless-app[bot] Nov 10, 2025
11cab3b
fix: compat with Python 3.14
stainless-app[bot] Nov 10, 2025
d878bc6
fix(compat): update signatures of `model_dump` and `model_dump_json` …
stainless-app[bot] Nov 11, 2025
3487a7b
chore(internal): codegen related update
stainless-app[bot] Nov 21, 2025
8e1d967
fix: ensure streams are always closed
stainless-app[bot] Nov 27, 2025
620927e
chore(deps): mypy 1.18.1 has a regression, pin to 1.17
stainless-app[bot] Dec 5, 2025
545bd86
chore: update lockfile
stainless-app[bot] Dec 5, 2025
6435a45
chore(docs): use environment variables for authentication in code sni…
stainless-app[bot] Dec 2, 2025
7194917
release: 0.4.1
stainless-app[bot] Dec 5, 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.4.0"
".": "0.4.1"
}
2 changes: 1 addition & 1 deletion .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 119
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-ca9a49ac7fbb63f55611fd7cd48a22a3ff8b38a797125c8513e891d9b7345550.yml
openapi_spec_hash: fd6ffbdfaefcc555e61ca1c565e05214
config_hash: 6e0a070326b83dc6e5544baae3d14bbb
config_hash: 7fb76543ceafd4a116473f647f8d63b1
27 changes: 27 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,32 @@
# Changelog

## 0.4.1 (2025-12-05)

Full Changelog: [v0.4.0...v0.4.1](https://github.com/gitpod-io/gitpod-sdk-python/compare/v0.4.0...v0.4.1)

### Bug Fixes

* **client:** close streams without requiring full consumption ([597eb34](https://github.com/gitpod-io/gitpod-sdk-python/commit/597eb34a2f9f94a0ac4b6a8efd626ee253c7266f))
* compat with Python 3.14 ([11cab3b](https://github.com/gitpod-io/gitpod-sdk-python/commit/11cab3b8afc2dcd7c64b38fead6ffbad805a6f1c))
* **compat:** update signatures of `model_dump` and `model_dump_json` for Pydantic v1 ([d878bc6](https://github.com/gitpod-io/gitpod-sdk-python/commit/d878bc6a71bb2ac8e074019bee3db915d98a2312))
* ensure streams are always closed ([8e1d967](https://github.com/gitpod-io/gitpod-sdk-python/commit/8e1d96725dd7a77bd1abe0625824537eedc5b387))


### Chores

* bump `httpx-aiohttp` version to 0.1.9 ([0581279](https://github.com/gitpod-io/gitpod-sdk-python/commit/0581279f1c20a01fd1b741fc56a5d66b724a8f66))
* **deps:** mypy 1.18.1 has a regression, pin to 1.17 ([620927e](https://github.com/gitpod-io/gitpod-sdk-python/commit/620927e38e8e968a7ee25cc4696be83b71b63dcc))
* do not install brew dependencies in ./scripts/bootstrap by default ([3fd8de4](https://github.com/gitpod-io/gitpod-sdk-python/commit/3fd8de42107e3941274833b72c4d17d3829dc6b9))
* **docs:** use environment variables for authentication in code snippets ([6435a45](https://github.com/gitpod-io/gitpod-sdk-python/commit/6435a4573f2c72303e813a55f6d30fc041afd80b))
* **internal/tests:** avoid race condition with implicit client cleanup ([2316010](https://github.com/gitpod-io/gitpod-sdk-python/commit/23160102a1df2cbcc7c9b4ab60f64860fca75af5))
* **internal:** codegen related update ([3487a7b](https://github.com/gitpod-io/gitpod-sdk-python/commit/3487a7b28a7fd3949d9cb898fc67939ec6ef8c1a))
* **internal:** detect missing future annotations with ruff ([98e718f](https://github.com/gitpod-io/gitpod-sdk-python/commit/98e718fd584a66b1cf64cf37baf4904935833b6c))
* **internal:** grammar fix (it's -> its) ([ca7ec34](https://github.com/gitpod-io/gitpod-sdk-python/commit/ca7ec34adc07a3f66da8ca64398a218bf2fed68c))
* **internal:** update pydantic dependency ([986fdba](https://github.com/gitpod-io/gitpod-sdk-python/commit/986fdbaf9c668a21f87ab6b1368fb1f9b4dca9fc))
* **package:** drop Python 3.8 support ([86cbb78](https://github.com/gitpod-io/gitpod-sdk-python/commit/86cbb785d19b2286fdb0dc4c92d621b395a1c94b))
* **types:** change optional parameter type from NotGiven to Omit ([efa6bd7](https://github.com/gitpod-io/gitpod-sdk-python/commit/efa6bd70aed63ff891300fc1529575c76a18f104))
* update lockfile ([545bd86](https://github.com/gitpod-io/gitpod-sdk-python/commit/545bd8611860dc3a554ac238fbb8cae1fc471d6f))

## 0.4.0 (2025-12-05)

Full Changelog: [v0.3.0...v0.4.0](https://github.com/gitpod-io/gitpod-sdk-python/compare/v0.3.0...v0.4.0)
Expand Down
7 changes: 4 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<!-- prettier-ignore -->
[![PyPI version](https://img.shields.io/pypi/v/gitpod-sdk.svg?label=pypi%20(stable))](https://pypi.org/project/gitpod-sdk/)

The Gitpod Python library provides convenient access to the Gitpod REST API from any Python 3.8+
The Gitpod Python library provides convenient access to the Gitpod REST API from any Python 3.9+
application. The library includes type definitions for all request params and response fields,
and offers both synchronous and asynchronous clients powered by [httpx](https://github.com/encode/httpx).

Expand Down Expand Up @@ -79,14 +79,15 @@ pip install gitpod-sdk[aiohttp]
Then you can enable it by instantiating the client with `http_client=DefaultAioHttpClient()`:

```python
import os
import asyncio
from gitpod import DefaultAioHttpClient
from gitpod import AsyncGitpod


async def main() -> None:
async with AsyncGitpod(
bearer_token="My Bearer Token",
bearer_token=os.environ.get("GITPOD_API_KEY"), # This is the default and can be omitted
http_client=DefaultAioHttpClient(),
) as client:
response = await client.identity.get_authenticated_identity()
Expand Down Expand Up @@ -434,7 +435,7 @@ print(gitpod.__version__)

## Requirements

Python 3.8 or higher.
Python 3.9 or higher.

## Contributing

Expand Down
30 changes: 18 additions & 12 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,30 +1,32 @@
[project]
name = "gitpod-sdk"
version = "0.4.0"
version = "0.4.1"
description = "The official Python library for the gitpod API"
dynamic = ["readme"]
license = "Apache-2.0"
authors = [
{ name = "Gitpod", email = "[email protected]" },
]

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.8"

requires-python = ">= 3.9"
classifiers = [
"Typing :: Typed",
"Intended Audience :: Developers",
"Programming Language :: Python :: 3.8",
"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",
"Operating System :: OS Independent",
"Operating System :: POSIX",
"Operating System :: MacOS",
Expand All @@ -39,14 +41,14 @@ Homepage = "https://github.com/gitpod-io/gitpod-sdk-python"
Repository = "https://github.com/gitpod-io/gitpod-sdk-python"

[project.optional-dependencies]
aiohttp = ["aiohttp", "httpx_aiohttp>=0.1.8"]
aiohttp = ["aiohttp", "httpx_aiohttp>=0.1.9"]

[tool.rye]
managed = true
# version pins are in requirements-dev.lock
dev-dependencies = [
"pyright==1.1.399",
"mypy",
"mypy==1.17",
"respx",
"pytest",
"pytest-asyncio",
Expand Down Expand Up @@ -144,7 +146,7 @@ filterwarnings = [
# there are a couple of flags that are still disabled by
# default in strict mode as they are experimental and niche.
typeCheckingMode = "strict"
pythonVersion = "3.8"
pythonVersion = "3.9"

exclude = [
"_dev",
Expand Down Expand Up @@ -227,6 +229,8 @@ select = [
"B",
# remove unused imports
"F401",
# check for missing future annotations
"FA102",
# bare except statements
"E722",
# unused arguments
Expand All @@ -249,6 +253,8 @@ unfixable = [
"T203",
]

extend-safe-fixes = ["FA102"]

[tool.ruff.lint.flake8-tidy-imports.banned-api]
"functools.lru_cache".msg = "This function does not retain type information for the wrapped function's arguments; The `lru_cache` function from `_utils` should be used instead"

Expand Down
93 changes: 51 additions & 42 deletions requirements-dev.lock
Original file line number Diff line number Diff line change
Expand Up @@ -12,23 +12,23 @@
-e file:.
aiohappyeyeballs==2.6.1
# via aiohttp
aiohttp==3.12.8
aiohttp==3.13.2
# via gitpod-sdk
# 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
anthropic==0.45.2
anyio==4.4.0
# via anthropic
# via gitpod-sdk
# 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
bcrypt==4.2.1
# via paramiko
Expand All @@ -49,14 +49,14 @@ distlib==0.3.7
distro==1.8.0
# via anthropic
# via gitpod-sdk
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
h11==0.16.0
Expand All @@ -68,90 +68,99 @@ httpx==0.28.1
# via gitpod-sdk
# via httpx-aiohttp
# via respx
httpx-aiohttp==0.1.8
httpx-aiohttp==0.1.9
# via gitpod-sdk
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
jiter==0.8.2
# via anthropic
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.14.1
mypy-extensions==1.0.0
mypy==1.17.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
paramiko==3.5.1
platformdirs==3.11.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
# via anthropic
pycparser==2.22
# via cffi
pydantic==2.10.3
# via anthropic
# via gitpod-sdk
pydantic-core==2.27.1
pydantic-core==2.33.2
# via pydantic
pygments==2.18.0
pygments==2.19.2
# via pytest
# via rich
pynacl==1.5.0
# via paramiko
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
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 anthropic
# via anyio
# via gitpod-sdk
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
types-paramiko==3.5.0.20240928
typing-extensions==4.12.2
# via anthropic
# via anyio
# via exceptiongroup
# via gitpod-sdk
# via multidict
# via mypy
# via pydantic
# via pydantic-core
# via pyright
virtualenv==20.24.5
# via pytest-asyncio
# via typing-inspection
# via virtualenv
typing-inspection==0.4.2
# via pydantic
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