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
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ jobs:
timeout-minutes: 10
name: lint
runs-on: ${{ github.repository == 'stainless-sdks/dedalus-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
if: github.event_name == 'push' || github.event.pull_request.head.repo.fork
if: (github.event_name == 'push' || github.event.pull_request.head.repo.fork) && (github.event_name != 'push' || github.event.head_commit.message != 'codegen metadata')
steps:
- uses: actions/checkout@v6

Expand All @@ -35,7 +35,7 @@ jobs:
run: ./scripts/lint

build:
if: github.event_name == 'push' || github.event.pull_request.head.repo.fork
if: (github.event_name == 'push' || github.event.pull_request.head.repo.fork) && (github.event_name != 'push' || github.event.head_commit.message != 'codegen metadata')
timeout-minutes: 10
name: build
permissions:
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.0.2"
".": "0.0.3"
}
6 changes: 3 additions & 3 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 27
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/dedalus-labs%2Fdedalus-a2b38be63dcddaea1a314843f9685b8e26c1f584b1696712f6a9668014afc0a7.yml
openapi_spec_hash: ba6a5b38ed5fa9d49b03b154e3b99b53
config_hash: a71704446fb82d83c7357258c182bdb5
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/dedalus-labs%2Fdedalus-7a281169c5f380aa29376e393f8c5f87d35998fecc9e1210835f1165c0bc467f.yml
openapi_spec_hash: da9a43b37a46e0d22a823085861cdd82
config_hash: 7fcee0473099fe6d9a119f37c80e53d7
15 changes: 15 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,20 @@
# Changelog

## 0.0.3 (2026-03-25)

Full Changelog: [v0.0.2...v0.0.3](https://github.com/dedalus-labs/dedalus-python/compare/v0.0.2...v0.0.3)

### Bug Fixes

* **api:** rename stream_status to watch, remove wake_if_needed from workspace methods ([453d5c3](https://github.com/dedalus-labs/dedalus-python/commit/453d5c37afde54a6b1603b2485b0100f894acfd1))
* sync uv.lock version with pyproject.toml ([45e2a3f](https://github.com/dedalus-labs/dedalus-python/commit/45e2a3fbb28cc4a3f4d8183827ec17d46113ee3e))


### Chores

* **ci:** skip lint on metadata-only changes ([d38d11a](https://github.com/dedalus-labs/dedalus-python/commit/d38d11a241f8b47dcf62ecb2933f72f70e80aca4))
* **tests:** bump steady to v0.19.7 ([ea163fc](https://github.com/dedalus-labs/dedalus-python/commit/ea163fc51951aca7687bbb7936113c1432df3a2e))

## 0.0.2 (2026-03-23)

Full Changelog: [v0.0.1...v0.0.2](https://github.com/dedalus-labs/dedalus-python/compare/v0.0.1...v0.0.2)
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ from dedalus_sdk import Dedalus

client = Dedalus()

stream = client.workspaces.stream_status(
stream = client.workspaces.watch(
workspace_id="workspace_id",
)
for workspace in stream:
Expand All @@ -141,7 +141,7 @@ from dedalus_sdk import AsyncDedalus

client = AsyncDedalus()

stream = await client.workspaces.stream_status(
stream = await client.workspaces.watch(
workspace_id="workspace_id",
)
async for workspace in stream:
Expand Down
2 changes: 1 addition & 1 deletion api.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ Methods:
- <code title="patch /v1/workspaces/{workspace_id}">client.workspaces.<a href="./src/dedalus_sdk/resources/workspaces/workspaces.py">update</a>(workspace_id, \*\*<a href="src/dedalus_sdk/types/workspace_update_params.py">params</a>) -> <a href="./src/dedalus_sdk/types/workspace.py">Workspace</a></code>
- <code title="get /v1/workspaces">client.workspaces.<a href="./src/dedalus_sdk/resources/workspaces/workspaces.py">list</a>(\*\*<a href="src/dedalus_sdk/types/workspace_list_params.py">params</a>) -> SyncCursorPage[Item]</code>
- <code title="delete /v1/workspaces/{workspace_id}">client.workspaces.<a href="./src/dedalus_sdk/resources/workspaces/workspaces.py">delete</a>(workspace_id) -> <a href="./src/dedalus_sdk/types/workspace.py">Workspace</a></code>
- <code title="get /v1/workspaces/{workspace_id}/status/stream">client.workspaces.<a href="./src/dedalus_sdk/resources/workspaces/workspaces.py">stream_status</a>(workspace_id) -> <a href="./src/dedalus_sdk/types/workspace.py">Workspace</a></code>
- <code title="get /v1/workspaces/{workspace_id}/status/stream">client.workspaces.<a href="./src/dedalus_sdk/resources/workspaces/workspaces.py">watch</a>(workspace_id) -> <a href="./src/dedalus_sdk/types/workspace.py">Workspace</a></code>

## Artifacts

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 = "dedalus-sdk"
version = "0.0.2"
version = "0.0.3"
description = "The official Python library for the Dedalus API"
dynamic = ["readme"]
license = "MIT"
Expand Down
6 changes: 3 additions & 3 deletions scripts/mock
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@ echo "==> Starting mock server with URL ${URL}"
# Run steady mock on the given spec
if [ "$1" == "--daemon" ]; then
# Pre-install the package so the download doesn't eat into the startup timeout
npm exec --package=@stdy/[email protected].6 -- steady --version
npm exec --package=@stdy/[email protected].7 -- steady --version

npm exec --package=@stdy/[email protected].6 -- steady --host 127.0.0.1 -p 4010 --validator-form-array-format=comma --validator-query-array-format=comma --validator-form-object-format=brackets --validator-query-object-format=brackets "$URL" &> .stdy.log &
npm exec --package=@stdy/[email protected].7 -- steady --host 127.0.0.1 -p 4010 --validator-form-array-format=comma --validator-query-array-format=comma --validator-form-object-format=brackets --validator-query-object-format=brackets "$URL" &> .stdy.log &

# Wait for server to come online via health endpoint (max 30s)
echo -n "Waiting for server"
Expand All @@ -48,5 +48,5 @@ if [ "$1" == "--daemon" ]; then

echo
else
npm exec --package=@stdy/[email protected].6 -- steady --host 127.0.0.1 -p 4010 --validator-form-array-format=comma --validator-query-array-format=comma --validator-form-object-format=brackets --validator-query-object-format=brackets "$URL"
npm exec --package=@stdy/[email protected].7 -- steady --host 127.0.0.1 -p 4010 --validator-form-array-format=comma --validator-query-array-format=comma --validator-form-object-format=brackets --validator-query-object-format=brackets "$URL"
fi
2 changes: 1 addition & 1 deletion scripts/test
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ elif ! steady_is_running ; then
echo -e "To run the server, pass in the path or url of your OpenAPI"
echo -e "spec to the steady command:"
echo
echo -e " \$ ${YELLOW}npm exec --package=@stdy/[email protected].6 -- steady path/to/your.openapi.yml --host 127.0.0.1 -p 4010 --validator-form-array-format=comma --validator-query-array-format=comma --validator-form-object-format=brackets --validator-query-object-format=brackets${NC}"
echo -e " \$ ${YELLOW}npm exec --package=@stdy/[email protected].7 -- steady path/to/your.openapi.yml --host 127.0.0.1 -p 4010 --validator-form-array-format=comma --validator-query-array-format=comma --validator-form-object-format=brackets --validator-query-object-format=brackets${NC}"
echo

exit 1
Expand Down
2 changes: 1 addition & 1 deletion src/dedalus_sdk/_version.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

__title__ = "dedalus_sdk"
__version__ = "0.0.2" # x-release-please-version
__version__ = "0.0.3" # x-release-please-version
4 changes: 0 additions & 4 deletions src/dedalus_sdk/resources/workspaces/executions.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,6 @@ def create(
env: Dict[str, str] | Omit = omit,
stdin: str | Omit = omit,
timeout_ms: int | Omit = omit,
wake_if_needed: bool | Omit = omit,
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
# The extra values given here take precedence over values defined on the client or passed to this method.
extra_headers: Headers | None = None,
Expand Down Expand Up @@ -89,7 +88,6 @@ def create(
"env": env,
"stdin": stdin,
"timeout_ms": timeout_ms,
"wake_if_needed": wake_if_needed,
},
execution_create_params.ExecutionCreateParams,
),
Expand Down Expand Up @@ -359,7 +357,6 @@ async def create(
env: Dict[str, str] | Omit = omit,
stdin: str | Omit = omit,
timeout_ms: int | Omit = omit,
wake_if_needed: bool | Omit = omit,
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
# The extra values given here take precedence over values defined on the client or passed to this method.
extra_headers: Headers | None = None,
Expand Down Expand Up @@ -393,7 +390,6 @@ async def create(
"env": env,
"stdin": stdin,
"timeout_ms": timeout_ms,
"wake_if_needed": wake_if_needed,
},
execution_create_params.ExecutionCreateParams,
),
Expand Down
4 changes: 0 additions & 4 deletions src/dedalus_sdk/resources/workspaces/previews.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@ def create(
*,
port: int,
protocol: Literal["http", "https"] | Omit = omit,
wake_if_needed: bool | Omit = omit,
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
# The extra values given here take precedence over values defined on the client or passed to this method.
extra_headers: Headers | None = None,
Expand Down Expand Up @@ -81,7 +80,6 @@ def create(
{
"port": port,
"protocol": protocol,
"wake_if_needed": wake_if_needed,
},
preview_create_params.PreviewCreateParams,
),
Expand Down Expand Up @@ -251,7 +249,6 @@ async def create(
*,
port: int,
protocol: Literal["http", "https"] | Omit = omit,
wake_if_needed: bool | Omit = omit,
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
# The extra values given here take precedence over values defined on the client or passed to this method.
extra_headers: Headers | None = None,
Expand Down Expand Up @@ -282,7 +279,6 @@ async def create(
{
"port": port,
"protocol": protocol,
"wake_if_needed": wake_if_needed,
},
preview_create_params.PreviewCreateParams,
),
Expand Down
18 changes: 2 additions & 16 deletions src/dedalus_sdk/resources/workspaces/ssh.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@ def create(
workspace_id: str,
*,
public_key: str,
wake_if_needed: bool | Omit = omit,
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
# The extra values given here take precedence over values defined on the client or passed to this method.
extra_headers: Headers | None = None,
Expand All @@ -74,13 +73,7 @@ def create(
raise ValueError(f"Expected a non-empty value for `workspace_id` but received {workspace_id!r}")
return self._post(
path_template("/v1/workspaces/{workspace_id}/ssh", workspace_id=workspace_id),
body=maybe_transform(
{
"public_key": public_key,
"wake_if_needed": wake_if_needed,
},
ssh_create_params.SSHCreateParams,
),
body=maybe_transform({"public_key": public_key}, ssh_create_params.SSHCreateParams),
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
Expand Down Expand Up @@ -246,7 +239,6 @@ async def create(
workspace_id: str,
*,
public_key: str,
wake_if_needed: bool | Omit = omit,
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
# The extra values given here take precedence over values defined on the client or passed to this method.
extra_headers: Headers | None = None,
Expand All @@ -273,13 +265,7 @@ async def create(
raise ValueError(f"Expected a non-empty value for `workspace_id` but received {workspace_id!r}")
return await self._post(
path_template("/v1/workspaces/{workspace_id}/ssh", workspace_id=workspace_id),
body=await async_maybe_transform(
{
"public_key": public_key,
"wake_if_needed": wake_if_needed,
},
ssh_create_params.SSHCreateParams,
),
body=await async_maybe_transform({"public_key": public_key}, ssh_create_params.SSHCreateParams),
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
Expand Down
4 changes: 0 additions & 4 deletions src/dedalus_sdk/resources/workspaces/terminals.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,6 @@ def create(
cwd: str | Omit = omit,
env: Dict[str, str] | Omit = omit,
shell: str | Omit = omit,
wake_if_needed: bool | Omit = omit,
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
# The extra values given here take precedence over values defined on the client or passed to this method.
extra_headers: Headers | None = None,
Expand Down Expand Up @@ -106,7 +105,6 @@ def create(
"cwd": cwd,
"env": env,
"shell": shell,
"wake_if_needed": wake_if_needed,
},
terminal_create_params.TerminalCreateParams,
),
Expand Down Expand Up @@ -296,7 +294,6 @@ async def create(
cwd: str | Omit = omit,
env: Dict[str, str] | Omit = omit,
shell: str | Omit = omit,
wake_if_needed: bool | Omit = omit,
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
# The extra values given here take precedence over values defined on the client or passed to this method.
extra_headers: Headers | None = None,
Expand Down Expand Up @@ -330,7 +327,6 @@ async def create(
"cwd": cwd,
"env": env,
"shell": shell,
"wake_if_needed": wake_if_needed,
},
terminal_create_params.TerminalCreateParams,
),
Expand Down
28 changes: 18 additions & 10 deletions src/dedalus_sdk/resources/workspaces/workspaces.py
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,8 @@ def create(
Args:
memory_mib: Memory in MiB.

storage_gib: Storage in GiB.

vcpu: CPU in vCPUs.

extra_headers: Send extra headers
Expand Down Expand Up @@ -211,6 +213,8 @@ def update(
Args:
memory_mib: Memory in MiB.

storage_gib: Storage in GiB.

vcpu: CPU in vCPUs.

extra_headers: Send extra headers
Expand Down Expand Up @@ -331,7 +335,7 @@ def delete(
cast_to=Workspace,
)

def stream_status(
def watch(
self,
workspace_id: str,
*,
Expand Down Expand Up @@ -433,6 +437,8 @@ async def create(
Args:
memory_mib: Memory in MiB.

storage_gib: Storage in GiB.

vcpu: CPU in vCPUs.

extra_headers: Send extra headers
Expand Down Expand Up @@ -520,6 +526,8 @@ async def update(
Args:
memory_mib: Memory in MiB.

storage_gib: Storage in GiB.

vcpu: CPU in vCPUs.

extra_headers: Send extra headers
Expand Down Expand Up @@ -640,7 +648,7 @@ async def delete(
cast_to=Workspace,
)

async def stream_status(
async def watch(
self,
workspace_id: str,
*,
Expand Down Expand Up @@ -701,8 +709,8 @@ def __init__(self, workspaces: WorkspacesResource) -> None:
self.delete = to_raw_response_wrapper(
workspaces.delete,
)
self.stream_status = to_raw_response_wrapper(
workspaces.stream_status,
self.watch = to_raw_response_wrapper(
workspaces.watch,
)

@cached_property
Expand Down Expand Up @@ -745,8 +753,8 @@ def __init__(self, workspaces: AsyncWorkspacesResource) -> None:
self.delete = async_to_raw_response_wrapper(
workspaces.delete,
)
self.stream_status = async_to_raw_response_wrapper(
workspaces.stream_status,
self.watch = async_to_raw_response_wrapper(
workspaces.watch,
)

@cached_property
Expand Down Expand Up @@ -789,8 +797,8 @@ def __init__(self, workspaces: WorkspacesResource) -> None:
self.delete = to_streamed_response_wrapper(
workspaces.delete,
)
self.stream_status = to_streamed_response_wrapper(
workspaces.stream_status,
self.watch = to_streamed_response_wrapper(
workspaces.watch,
)

@cached_property
Expand Down Expand Up @@ -833,8 +841,8 @@ def __init__(self, workspaces: AsyncWorkspacesResource) -> None:
self.delete = async_to_streamed_response_wrapper(
workspaces.delete,
)
self.stream_status = async_to_streamed_response_wrapper(
workspaces.stream_status,
self.watch = async_to_streamed_response_wrapper(
workspaces.watch,
)

@cached_property
Expand Down
2 changes: 1 addition & 1 deletion src/dedalus_sdk/types/workspace.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@


class Workspace(BaseModel):
desired_state: Literal["active", "inactive", "destroyed"]
desired_state: Literal["running", "sleeping", "destroyed"]

memory_mib: int
"""Memory in MiB."""
Expand Down
1 change: 1 addition & 0 deletions src/dedalus_sdk/types/workspace_create_params.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ class WorkspaceCreateParams(TypedDict, total=False):
"""Memory in MiB."""

storage_gib: Required[int]
"""Storage in GiB."""

vcpu: Required[float]
"""CPU in vCPUs."""
2 changes: 1 addition & 1 deletion src/dedalus_sdk/types/workspace_list.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
class Item(BaseModel):
created_at: datetime

desired_state: Literal["active", "inactive", "destroyed"]
desired_state: Literal["running", "sleeping", "destroyed"]

memory_mib: int
"""Memory in MiB."""
Expand Down
1 change: 1 addition & 0 deletions src/dedalus_sdk/types/workspace_update_params.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ class WorkspaceUpdateParams(TypedDict, total=False):
"""Memory in MiB."""

storage_gib: int
"""Storage in GiB."""

vcpu: float
"""CPU in vCPUs."""
Loading
Loading