Skip to content

Release v0.14.0 - #51

Merged
lchoquel merged 2 commits into
mainfrom
release/v0.14.0
Sep 27, 2026
Merged

lchoquel merged 2 commits into
mainfrom
release/v0.14.0

Conversation

@lchoquel

@lchoquel lchoquel commented Sep 27, 2026 •

Copy link
Copy Markdown
Member

Release v0.14.0

Bumps version from 0.13.0 to 0.14.0. Promotes dev → main.

Changelog

Changed

  • Every route raises ApiResponseError, and a refused run says why (Breaking): the protocol routes (execute, start, validate, models, version), the run status and results reads and start_and_wait raise ApiResponseError on a non-2xx answer instead of httpx.HTTPStatusError, so a method the plane refuses to run raises an error whose message gives the reason and, on its own line, the next step (Next step: …), and whose validation_errors[0].pipe_code names the failing pipe. A caller that caught httpx.HTTPStatusError catches ApiResponseError and reads exc.status, exc.headers and exc.request_url where it read exc.response.status_code, exc.response.headers and exc.request.url; the gateway-timeout translation of execute and the bare-runner 404 translation of start are unchanged.
  • ApiResponseError is mthds's own error narrowed (Breaking): pipelex_sdk.errors.ApiResponseError now subclasses mthds.runners.api.exceptions.ApiResponseError[ValidationErrorItem], adding code, error_category and errors, so except mthds.runners.api.exceptions.ApiResponseError catches it too. It gains instance, headers and request_url; its message is the base's (API <METHOD> /v1/<endpoint> failed (<status>): <reason>, the reason falling back from detail to title to the raw body to the status text); its user_action is the mthds UserAction, kept only when the answer carries a string kind and a non-empty detail, so one missing either now reads as None; and an empty code or error_category reads as None.
  • Requires mthds 0.17.0 (Breaking): the exact pin moves from 0.16.0 to the release that adds the typed ApiResponseError this client builds on.

Fixed

  • A runner's 404 on start is no longer read as a missing run store: a 404 carrying the runner's error_type — a method_ref whose package does not exist, relayed by the hosted API without a platform code — raised RunLifecycleUnavailableError, and start_and_wait then moved the client onto blocking execute for the rest of its life. Only a 404 whose body carries neither code nor error_type now counts as a missing route; any other raises ApiResponseError, and the client keeps using the durable path.

Closes L-260927-bffd2f

🤖 Generated with Claude Code


Summary by cubic

Bumps the SDK to 0.14.0 and promotes dev → main. Every route now raises ApiResponseError, mthds's own error narrowed to this SDK, instead of httpx.HTTPStatusError, so a refused run says why and names the failing pipe.

Migration

  • Catch ApiResponseError and read exc.status, exc.headers, and exc.request_url where you read exc.response.status_code, exc.response.headers, and exc.request.url.
  • Requires mthds 0.17.0, up from 0.16.0.

Bug Fixes

  • A runner 404 on start carrying error_type no longer reads as a missing run store; only one with neither code nor error_type does.

Written for commit 08c1f5b. Summary will update on new commits.

Review in cubic

lchoquel and others added 2 commits September 27, 2026 15:34
Every route of `PipelexAPIClient` now raises a typed `ApiResponseError`
that is `mthds`'s own error narrowed to `ValidationErrorItem`, so
`start_and_wait()` or `execute()` on a method the plane refuses raises
an error whose message and fields carry the reason, the failing pipe and
the next step, instead of httpx's bare status line. The client overrides
the new `_raise_api_response_error` seam of `mthds`, reads the shared
members through `ProblemDocument`, and moves the gateway-timeout
translation of `execute` and the bare-runner 404 translation of `start`
onto the typed error, both of which the override would otherwise have
silently disabled. The branch builds on `mthds` pinned at its dev commit
and collapses onto the published 0.17.0 before it merges.

Closes L-260927-424b11

🤖 Generated with [Claude Code](https://claude.com/claude-code)

<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Every route of `PipelexAPIClient` now raises a typed `ApiResponseError`
— `mthds`'s own error narrowed to `ValidationErrorItem` — so a refused
run reports the reason, the failing pipe, and the advised next step
instead of `httpx`'s bare status line.

**Migration**

- Callers that caught `httpx.HTTPStatusError` must catch
`ApiResponseError` and read `exc.status`, `exc.headers`, and
`exc.request_url` where they previously read `exc.response.status_code`,
`exc.response.headers`, and `exc.request.url`.
- `execute`'s gateway-timeout translation and `start`'s bare-runner 404
translation now read the typed error; on `start`, a runner 404 that
carries `error_type` but no `code` is read as a refusal, and only a 404
with neither is treated as a missing run store.

**Dependencies**

- `mthds` is upgraded to the published 0.17.0.
- Tests replay the dev plane's three real refusal bodies byte for byte
from `mthds-python`, and the deferred version-handshake finding is
recorded in `wip/pr-50-review-notes.md`.

<sup>Written for commit af35911.
Summary will update on new commits.</sup>

<a
href="https://cubic.dev/pr/Pipelex/pipelex-sdk-python/pull/50?utm_source=github"
target="_blank" rel="noopener noreferrer"
data-no-image-dialog="true"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img
alt="Review in cubic"
src="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"></picture></a>

<!-- End of auto-generated description by cubic. -->

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@lchoquel
lchoquel merged commit 34c88ad into main Sep 27, 2026
20 checks passed
@lchoquel
lchoquel deleted the release/v0.14.0 branch September 27, 2026 13:53
@github-actions github-actions Bot locked and limited conversation to collaborators Sep 27, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant