Skip to content

Release v0.2.0 - #5

Merged
lchoquel merged 2 commits into
mainfrom
release/v0.2.0
Jul 2, 2026
Merged

Release v0.2.0#5
lchoquel merged 2 commits into
mainfrom
release/v0.2.0

Conversation

@lchoquel

@lchoquel lchoquel commented Jul 2, 2026

Copy link
Copy Markdown
Member

Release v0.2.0

Added

  • request_timeout_seconds constructor parameter on PipelexAPIClient — per-instance blocking-execute ceiling for the inherited protocol routes (execute, start, validate, models, version). Default 20 min.

Changed

  • BREAKING: Renamed constructor parameters/attributes to match the mthds base client and @pipelex/sdk: api_tokenapi_key, api_base_urlbase_url.
  • BREAKING: Renamed the API URL env var: PIPELEX_API_URLPIPELEX_BASE_URL (no read alias kept).
  • BREAKING: An empty base URL now raises PipelineRequestError instead of being treated as unset — presence semantics at both the argument and env layers, matching the JS SDK's ?? chain. A set-but-empty PIPELEX_BASE_URL (e.g. an unfilled CI secret) fails fast at construction.
  • BREAKING: Credential resolution is now Pipelex-only — the SDK never reads the mthds resolver (MTHDS_API_KEY / MTHDS_BASE_URL / ~/.mthds/config). Borrowing that key while ignoring its URL could send a credential configured for another runner to api.pipelex.com. Chains match the JS SDK exactly: api_key arg → PIPELEX_API_KEY → anonymous; base_url arg → PIPELEX_BASE_URLhttps://api.pipelex.com.
  • Bumped the mthds dependency from >=0.6.1 to >=0.7.1.
  • Updated docs (README.md, CLAUDE.md, docs/architecture.md) and unit tests accordingly.

Fixed

  • PipelexAPIClient() now targets the hosted API when nothing is configured, instead of leaking mthds's local bare-runner default (http://localhost:8081) through the now-removed resolver fallback.

🤖 Generated with Claude Code

https://claude.ai/code/session_014V513wLcoqKEPYtbsCApBU

lchoquel and others added 2 commits July 2, 2026 22:32
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014V513wLcoqKEPYtbsCApBU
…bump mthds to 0.7.1

- Drop the mthds resolver entirely: MTHDS_API_KEY / MTHDS_BASE_URL /
  ~/.mthds/config are never read. Resolution is api_key arg ->
  PIPELEX_API_KEY -> anonymous, and base_url arg -> PIPELEX_BASE_URL ->
  https://api.pipelex.com, matching the JS SDK's ?? chains exactly.
- Presence semantics on base_url: an explicit empty string (arg or
  set-but-empty PIPELEX_BASE_URL) now fails fast with
  PipelineRequestError instead of silently targeting the hosted default.
- Add request_timeout_seconds constructor parameter (default 20 min,
  inherited from the base ClassVar) for the blocking-execute ceiling.
- Bump mthds dependency to >=0.7.1 and re-lock.
- Update README, CLAUDE.md, docs/architecture.md, CHANGELOG, and unit
  tests to the new resolution chains.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014V513wLcoqKEPYtbsCApBU
@greptile-apps

greptile-apps Bot commented Jul 2, 2026

Copy link
Copy Markdown

Greptile Summary

This PR releases pipelex-sdk v0.2.0 with updated client configuration behavior. The main changes are:

  • Renamed client constructor parameters and attributes to api_key and base_url.
  • Switched credential resolution to Pipelex-only environment variables.
  • Added request_timeout_seconds for inherited protocol routes.
  • Updated docs, tests, package version, and the mthds dependency floor.

Confidence Score: 5/5

Safe to merge with low risk.

The breaking API and configuration changes are implemented consistently across client construction, transport usage, tests, docs, and dependency metadata. No blocking correctness or security issues were identified.

No files require special attention.

T-Rex T-Rex Logs

What T-Rex did

  • Compared the constructor renames logs to verify the new constructor signature and keyword acceptance behavior.
  • Reviewed the pipelex environment resolution logs to confirm how PIPELEX_API_URL and PIPELEX_BASE_URL are resolved.
  • Examined the empty base URL logs to verify behavior and PipelineRequestError on head when base URL is missing.
  • Checked that MTHDS env/config influence is removed on head and credentials behave accordingly.
  • Verified the defaults flow shows unconfigured defaults becoming anonymous hosted Pipelex on head.
  • Observed timeout handling where the base lacks the constructor option while head stores and propagates per-instance timeout.
  • Reviewed dependency bump logs to confirm changes in package metadata/lock and installed method versions.

View all artifacts

T-Rex Ran code and verified through T-Rex

Important Files Changed

Filename Overview
pipelex_sdk/client.py Renames constructor arguments and attributes to api_key/base_url, removes mthds resolver fallback, validates PIPELEX_BASE_URL, and stores per-instance protocol timeout.
tests/unit/test_client_construction.py Updates construction tests for renamed attributes, Pipelex-only env handling, empty base URL validation, and request timeout overrides.
pyproject.toml Bumps the package version to 0.2.0 and raises the mthds dependency floor to >=0.7.1.
README.md Updates public configuration docs for api_key, base_url, PIPELEX_BASE_URL, Pipelex-only resolution, and request timeout behavior.
docs/architecture.md Revises architecture notes for Pipelex-only credential chains, empty base URL fail-fast semantics, and inherited protocol route timeout configuration.
uv.lock Locks pipelex-sdk at 0.2.0 and mthds at 0.7.1 consistently with pyproject.toml.

Sequence Diagram

%%{init: {'theme': 'neutral'}}%%
sequenceDiagram
participant Caller
participant Client as PipelexAPIClient
participant Env as Environment
participant API as Pipelex API / Runner

Caller->>Client: __init__(api_key?, base_url?, request_timeout_seconds?)
alt api_key argument present
    Client->>Client: use api_key argument
else no api_key argument
    Client->>Env: read PIPELEX_API_KEY
    Env-->>Client: key or anonymous empty string
end
alt base_url argument present
    Client->>Client: validate base_url argument
else PIPELEX_BASE_URL present
    Client->>Env: read PIPELEX_BASE_URL
    Client->>Client: validate env base URL
else unset
    Client->>Client: use https://api.pipelex.com
end
Caller->>Client: execute/start/validate/models/version
Client->>API: "/v1/* request with request_timeout_seconds"
API-->>Client: protocol response
Client-->>Caller: parsed result or typed error
Loading
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
sequenceDiagram
participant Caller
participant Client as PipelexAPIClient
participant Env as Environment
participant API as Pipelex API / Runner

Caller->>Client: __init__(api_key?, base_url?, request_timeout_seconds?)
alt api_key argument present
    Client->>Client: use api_key argument
else no api_key argument
    Client->>Env: read PIPELEX_API_KEY
    Env-->>Client: key or anonymous empty string
end
alt base_url argument present
    Client->>Client: validate base_url argument
else PIPELEX_BASE_URL present
    Client->>Env: read PIPELEX_BASE_URL
    Client->>Client: validate env base URL
else unset
    Client->>Client: use https://api.pipelex.com
end
Caller->>Client: execute/start/validate/models/version
Client->>API: "/v1/* request with request_timeout_seconds"
API-->>Client: protocol response
Client-->>Caller: parsed result or typed error
Loading

Reviews (1): Last reviewed commit: "feat!: Pipelex-only credential resolutio..." | Re-trigger Greptile

@lchoquel
lchoquel merged commit c5b05ef into main Jul 2, 2026
19 of 20 checks passed
@lchoquel
lchoquel deleted the release/v0.2.0 branch July 2, 2026 22:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant