Skip to content

Commit 221d5a5

Browse files
authored
Merge pull request #12 from onkernel/release-please--branches--main--changes--next
release: 0.1.0-alpha.10
2 parents 50a355e + c5e3c1c commit 221d5a5

40 files changed

+1782
-1225
lines changed

.github/workflows/ci.yml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,30 @@ jobs:
3030
- name: Run lints
3131
run: ./scripts/lint
3232

33+
upload:
34+
if: github.repository == 'stainless-sdks/kernel-python'
35+
timeout-minutes: 10
36+
name: upload
37+
permissions:
38+
contents: read
39+
id-token: write
40+
runs-on: depot-ubuntu-24.04
41+
steps:
42+
- uses: actions/checkout@v4
43+
44+
- name: Get GitHub OIDC Token
45+
id: github-oidc
46+
uses: actions/github-script@v6
47+
with:
48+
script: core.setOutput('github_token', await core.getIDToken());
49+
50+
- name: Upload tarball
51+
env:
52+
URL: https://pkg.stainless.com/s
53+
AUTH: ${{ steps.github-oidc.outputs.github_token }}
54+
SHA: ${{ github.sha }}
55+
run: ./scripts/utils/upload-artifact.sh
56+
3357
test:
3458
timeout-minutes: 10
3559
name: test

.release-please-manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{
2-
".": "0.1.0-alpha.9"
2+
".": "0.1.0-alpha.10"
33
}

.stats.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
configured_endpoints: 4
2-
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-07d481d1498bf9677437b555e9ec2d843d50107faa7501e4c430a32b1f3c3343.yml
3-
openapi_spec_hash: 296f78d82afbac95fad12c5eabd71f18
4-
config_hash: 2c8351ba6611ce4a352e248405783846
1+
configured_endpoints: 5
2+
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-f40e779e2a48f5e37361f2f4a9879e5c40f2851b8033c23db69ec7b91242bf69.yml
3+
openapi_spec_hash: 2dfa146149e61363f1ec40bf9251eb7c
4+
config_hash: 2ddaa85513b6670889b1a56c905423c7

CHANGELOG.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,20 @@
11
# Changelog
22

3+
## 0.1.0-alpha.10 (2025-05-19)
4+
5+
Full Changelog: [v0.1.0-alpha.9...v0.1.0-alpha.10](https://github.com/onkernel/kernel-python-sdk/compare/v0.1.0-alpha.9...v0.1.0-alpha.10)
6+
7+
### Features
8+
9+
* **api:** update via SDK Studio ([a382570](https://github.com/onkernel/kernel-python-sdk/commit/a382570e96f3bae625cb176e746038fcdf0e8e73))
10+
11+
12+
### Chores
13+
14+
* **ci:** fix installation instructions ([c897375](https://github.com/onkernel/kernel-python-sdk/commit/c8973750a1ae58f7c8eee588bbe874862dbbb46d))
15+
* **ci:** upload sdks to package manager ([03d0f7f](https://github.com/onkernel/kernel-python-sdk/commit/03d0f7f19be9614f5a81bd5c31117febd68ec5e9))
16+
* **internal:** codegen related update ([49143bd](https://github.com/onkernel/kernel-python-sdk/commit/49143bdcb6635ae79b1c4c5fddc9017d8d81b4d7))
17+
318
## 0.1.0-alpha.9 (2025-05-14)
419

520
Full Changelog: [v0.1.0-alpha.8...v0.1.0-alpha.9](https://github.com/onkernel/kernel-python-sdk/compare/v0.1.0-alpha.8...v0.1.0-alpha.9)

README.md

Lines changed: 22 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,12 @@ client = Kernel(
3333
environment="development",
3434
)
3535

36-
response = client.apps.deploy(
37-
entrypoint_rel_path="app.py",
36+
deployment = client.apps.deployments.create(
37+
entrypoint_rel_path="main.ts",
3838
file=b"REPLACE_ME",
39-
version="REPLACE_ME",
39+
version="1.0.0",
4040
)
41-
print(response.apps)
41+
print(deployment.apps)
4242
```
4343

4444
While you can provide an `api_key` keyword argument,
@@ -63,12 +63,12 @@ client = AsyncKernel(
6363

6464

6565
async def main() -> None:
66-
response = await client.apps.deploy(
67-
entrypoint_rel_path="app.py",
66+
deployment = await client.apps.deployments.create(
67+
entrypoint_rel_path="main.ts",
6868
file=b"REPLACE_ME",
69-
version="REPLACE_ME",
69+
version="1.0.0",
7070
)
71-
print(response.apps)
71+
print(deployment.apps)
7272

7373

7474
asyncio.run(main())
@@ -95,8 +95,8 @@ from kernel import Kernel
9595

9696
client = Kernel()
9797

98-
client.apps.deploy(
99-
entrypoint_rel_path="app.py",
98+
client.apps.deployments.create(
99+
entrypoint_rel_path="src/app.py",
100100
file=Path("/path/to/file"),
101101
)
102102
```
@@ -119,10 +119,8 @@ from kernel import Kernel
119119
client = Kernel()
120120

121121
try:
122-
client.apps.deploy(
123-
entrypoint_rel_path="app.py",
124-
file=b"REPLACE_ME",
125-
version="REPLACE_ME",
122+
client.browsers.create(
123+
invocation_id="REPLACE_ME",
126124
)
127125
except kernel.APIConnectionError as e:
128126
print("The server could not be reached")
@@ -166,10 +164,8 @@ client = Kernel(
166164
)
167165

168166
# Or, configure per-request:
169-
client.with_options(max_retries=5).apps.deploy(
170-
entrypoint_rel_path="app.py",
171-
file=b"REPLACE_ME",
172-
version="REPLACE_ME",
167+
client.with_options(max_retries=5).browsers.create(
168+
invocation_id="REPLACE_ME",
173169
)
174170
```
175171

@@ -193,10 +189,8 @@ client = Kernel(
193189
)
194190

195191
# Override per-request:
196-
client.with_options(timeout=5.0).apps.deploy(
197-
entrypoint_rel_path="app.py",
198-
file=b"REPLACE_ME",
199-
version="REPLACE_ME",
192+
client.with_options(timeout=5.0).browsers.create(
193+
invocation_id="REPLACE_ME",
200194
)
201195
```
202196

@@ -238,15 +232,13 @@ The "raw" Response object can be accessed by prefixing `.with_raw_response.` to
238232
from kernel import Kernel
239233

240234
client = Kernel()
241-
response = client.apps.with_raw_response.deploy(
242-
entrypoint_rel_path="app.py",
243-
file=b"REPLACE_ME",
244-
version="REPLACE_ME",
235+
response = client.browsers.with_raw_response.create(
236+
invocation_id="REPLACE_ME",
245237
)
246238
print(response.headers.get('X-My-Header'))
247239

248-
app = response.parse() # get the object that `apps.deploy()` would have returned
249-
print(app.apps)
240+
browser = response.parse() # get the object that `browsers.create()` would have returned
241+
print(browser.session_id)
250242
```
251243

252244
These methods return an [`APIResponse`](https://github.com/onkernel/kernel-python-sdk/tree/main/src/kernel/_response.py) object.
@@ -260,10 +252,8 @@ The above interface eagerly reads the full response body when you make the reque
260252
To stream the response body, use `.with_streaming_response` instead, which requires a context manager and only reads the response body once you call `.read()`, `.text()`, `.json()`, `.iter_bytes()`, `.iter_text()`, `.iter_lines()` or `.parse()`. In the async client, these are async methods.
261253

262254
```python
263-
with client.apps.with_streaming_response.deploy(
264-
entrypoint_rel_path="app.py",
265-
file=b"REPLACE_ME",
266-
version="REPLACE_ME",
255+
with client.browsers.with_streaming_response.create(
256+
invocation_id="REPLACE_ME",
267257
) as response:
268258
print(response.headers.get("X-My-Header"))
269259

api.md

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,39 @@
11
# Apps
22

3+
## Deployments
4+
5+
Types:
6+
7+
```python
8+
from kernel.types.apps import DeploymentCreateResponse
9+
```
10+
11+
Methods:
12+
13+
- <code title="post /deploy">client.apps.deployments.<a href="./src/kernel/resources/apps/deployments.py">create</a>(\*\*<a href="src/kernel/types/apps/deployment_create_params.py">params</a>) -> <a href="./src/kernel/types/apps/deployment_create_response.py">DeploymentCreateResponse</a></code>
14+
15+
## Invocations
16+
317
Types:
418

519
```python
6-
from kernel.types import AppDeployResponse, AppInvokeResponse, AppRetrieveInvocationResponse
20+
from kernel.types.apps import InvocationCreateResponse, InvocationRetrieveResponse
721
```
822

923
Methods:
1024

11-
- <code title="post /apps/deploy">client.apps.<a href="./src/kernel/resources/apps.py">deploy</a>(\*\*<a href="src/kernel/types/app_deploy_params.py">params</a>) -> <a href="./src/kernel/types/app_deploy_response.py">AppDeployResponse</a></code>
12-
- <code title="post /apps/invoke">client.apps.<a href="./src/kernel/resources/apps.py">invoke</a>(\*\*<a href="src/kernel/types/app_invoke_params.py">params</a>) -> <a href="./src/kernel/types/app_invoke_response.py">AppInvokeResponse</a></code>
13-
- <code title="get /apps/invocations/{id}">client.apps.<a href="./src/kernel/resources/apps.py">retrieve_invocation</a>(id) -> <a href="./src/kernel/types/app_retrieve_invocation_response.py">AppRetrieveInvocationResponse</a></code>
25+
- <code title="post /invocations">client.apps.invocations.<a href="./src/kernel/resources/apps/invocations.py">create</a>(\*\*<a href="src/kernel/types/apps/invocation_create_params.py">params</a>) -> <a href="./src/kernel/types/apps/invocation_create_response.py">InvocationCreateResponse</a></code>
26+
- <code title="get /invocations/{id}">client.apps.invocations.<a href="./src/kernel/resources/apps/invocations.py">retrieve</a>(id) -> <a href="./src/kernel/types/apps/invocation_retrieve_response.py">InvocationRetrieveResponse</a></code>
1427

15-
# Browser
28+
# Browsers
1629

1730
Types:
1831

1932
```python
20-
from kernel.types import BrowserCreateSessionResponse
33+
from kernel.types import BrowserCreateResponse, BrowserRetrieveResponse
2134
```
2235

2336
Methods:
2437

25-
- <code title="post /browser">client.browser.<a href="./src/kernel/resources/browser.py">create_session</a>(\*\*<a href="src/kernel/types/browser_create_session_params.py">params</a>) -> <a href="./src/kernel/types/browser_create_session_response.py">BrowserCreateSessionResponse</a></code>
38+
- <code title="post /browsers">client.browsers.<a href="./src/kernel/resources/browsers.py">create</a>(\*\*<a href="src/kernel/types/browser_create_params.py">params</a>) -> <a href="./src/kernel/types/browser_create_response.py">BrowserCreateResponse</a></code>
39+
- <code title="get /browsers/{id}">client.browsers.<a href="./src/kernel/resources/browsers.py">retrieve</a>(id) -> <a href="./src/kernel/types/browser_retrieve_response.py">BrowserRetrieveResponse</a></code>

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "kernel"
3-
version = "0.1.0-alpha.9"
3+
version = "0.1.0-alpha.10"
44
description = "The official Python library for the kernel API"
55
dynamic = ["readme"]
66
license = "Apache-2.0"

scripts/utils/upload-artifact.sh

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#!/usr/bin/env bash
2+
set -exuo pipefail
3+
4+
RESPONSE=$(curl -X POST "$URL" \
5+
-H "Authorization: Bearer $AUTH" \
6+
-H "Content-Type: application/json")
7+
8+
SIGNED_URL=$(echo "$RESPONSE" | jq -r '.url')
9+
10+
if [[ "$SIGNED_URL" == "null" ]]; then
11+
echo -e "\033[31mFailed to get signed URL.\033[0m"
12+
exit 1
13+
fi
14+
15+
UPLOAD_RESPONSE=$(tar -cz . | curl -v -X PUT \
16+
-H "Content-Type: application/gzip" \
17+
--data-binary @- "$SIGNED_URL" 2>&1)
18+
19+
if echo "$UPLOAD_RESPONSE" | grep -q "HTTP/[0-9.]* 200"; then
20+
echo -e "\033[32mUploaded build to Stainless storage.\033[0m"
21+
echo -e "\033[32mInstallation: pip install --pre 'https://pkg.stainless.com/s/kernel-python/$SHA'\033[0m"
22+
else
23+
echo -e "\033[31mFailed to upload artifact.\033[0m"
24+
exit 1
25+
fi

src/kernel/_client.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,15 @@
2121
)
2222
from ._utils import is_given, get_async_library
2323
from ._version import __version__
24-
from .resources import apps, browser
24+
from .resources import browsers
2525
from ._streaming import Stream as Stream, AsyncStream as AsyncStream
2626
from ._exceptions import KernelError, APIStatusError
2727
from ._base_client import (
2828
DEFAULT_MAX_RETRIES,
2929
SyncAPIClient,
3030
AsyncAPIClient,
3131
)
32+
from .resources.apps import apps
3233

3334
__all__ = [
3435
"ENVIRONMENTS",
@@ -50,7 +51,7 @@
5051

5152
class Kernel(SyncAPIClient):
5253
apps: apps.AppsResource
53-
browser: browser.BrowserResource
54+
browsers: browsers.BrowsersResource
5455
with_raw_response: KernelWithRawResponse
5556
with_streaming_response: KernelWithStreamedResponse
5657

@@ -133,7 +134,7 @@ def __init__(
133134
)
134135

135136
self.apps = apps.AppsResource(self)
136-
self.browser = browser.BrowserResource(self)
137+
self.browsers = browsers.BrowsersResource(self)
137138
self.with_raw_response = KernelWithRawResponse(self)
138139
self.with_streaming_response = KernelWithStreamedResponse(self)
139140

@@ -246,7 +247,7 @@ def _make_status_error(
246247

247248
class AsyncKernel(AsyncAPIClient):
248249
apps: apps.AsyncAppsResource
249-
browser: browser.AsyncBrowserResource
250+
browsers: browsers.AsyncBrowsersResource
250251
with_raw_response: AsyncKernelWithRawResponse
251252
with_streaming_response: AsyncKernelWithStreamedResponse
252253

@@ -329,7 +330,7 @@ def __init__(
329330
)
330331

331332
self.apps = apps.AsyncAppsResource(self)
332-
self.browser = browser.AsyncBrowserResource(self)
333+
self.browsers = browsers.AsyncBrowsersResource(self)
333334
self.with_raw_response = AsyncKernelWithRawResponse(self)
334335
self.with_streaming_response = AsyncKernelWithStreamedResponse(self)
335336

@@ -443,25 +444,25 @@ def _make_status_error(
443444
class KernelWithRawResponse:
444445
def __init__(self, client: Kernel) -> None:
445446
self.apps = apps.AppsResourceWithRawResponse(client.apps)
446-
self.browser = browser.BrowserResourceWithRawResponse(client.browser)
447+
self.browsers = browsers.BrowsersResourceWithRawResponse(client.browsers)
447448

448449

449450
class AsyncKernelWithRawResponse:
450451
def __init__(self, client: AsyncKernel) -> None:
451452
self.apps = apps.AsyncAppsResourceWithRawResponse(client.apps)
452-
self.browser = browser.AsyncBrowserResourceWithRawResponse(client.browser)
453+
self.browsers = browsers.AsyncBrowsersResourceWithRawResponse(client.browsers)
453454

454455

455456
class KernelWithStreamedResponse:
456457
def __init__(self, client: Kernel) -> None:
457458
self.apps = apps.AppsResourceWithStreamingResponse(client.apps)
458-
self.browser = browser.BrowserResourceWithStreamingResponse(client.browser)
459+
self.browsers = browsers.BrowsersResourceWithStreamingResponse(client.browsers)
459460

460461

461462
class AsyncKernelWithStreamedResponse:
462463
def __init__(self, client: AsyncKernel) -> None:
463464
self.apps = apps.AsyncAppsResourceWithStreamingResponse(client.apps)
464-
self.browser = browser.AsyncBrowserResourceWithStreamingResponse(client.browser)
465+
self.browsers = browsers.AsyncBrowsersResourceWithStreamingResponse(client.browsers)
465466

466467

467468
Client = Kernel

src/kernel/_version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
22

33
__title__ = "kernel"
4-
__version__ = "0.1.0-alpha.9" # x-release-please-version
4+
__version__ = "0.1.0-alpha.10" # x-release-please-version

0 commit comments

Comments
 (0)