Skip to content

SMOODEV-2026: SDK auth + webhook transport use smooai-fetch (not reqwest)#61

Merged
brentrager merged 1 commit into
mainfrom
SMOODEV-2026-sdk-smooai-fetch
Jun 21, 2026
Merged

SMOODEV-2026: SDK auth + webhook transport use smooai-fetch (not reqwest)#61
brentrager merged 1 commit into
mainfrom
SMOODEV-2026-sdk-smooai-fetch

Conversation

@brentrager

Copy link
Copy Markdown
Contributor

Per Code-Conventions #29: the SDK's app-style HTTP (auth.rs M2M token mint, transport.rs webhook event delivery) now goes through smooai-fetch (retries/timeouts/circuit-breaking) instead of raw reqwest. reqwest kept only where justified: the OTLP exporter (opentelemetry-http HttpClient coupling) + reqwest_mw (the integration for reqwest users), both documented. fmt + clippy(--all-features,-D warnings) + test green. Part of SMOODEV-2026 / epic 1981.

🤖 Generated with Claude Code

…ansport (not raw reqwest)

auth.rs (M2M token mint) and transport.rs (webhook event delivery) now go
through smooai-fetch (retries/timeouts/circuit-breaking). reqwest kept only
for the OTLP exporter (opentelemetry-http HttpClient coupling) and the
reqwest_mw integration helper — documented per Code-Conventions #29.
fmt+clippy(--all-features)+test green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@changeset-bot

changeset-bot Bot commented Jun 21, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: d886cc9

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@brentrager brentrager merged commit 799e9b5 into main Jun 21, 2026
6 checks passed
@brentrager brentrager deleted the SMOODEV-2026-sdk-smooai-fetch branch June 21, 2026 01:47
brentrager added a commit that referenced this pull request Jun 21, 2026
…OTLP where feasible)

The batched webhook event delivery now goes through smooai-fetch
(retries/timeouts/circuit-breaking) instead of raw httpx. smooai-fetch is
async-only, so the transport's daemon worker thread owns a private asyncio loop
and drives fetch() via run_until_complete; the host loop is never touched. The
fetch call is injectable (fetch_fn) because smooai-fetch constructs its own
httpx.AsyncClient with no client-injection seam — tests substitute an async stub.

smooai-fetch requires Python >=3.12, so the SDK floor bumps from >=3.10 to
>=3.12 (ruff target-version py312, uv.lock drops cp310/cp311 wheels).

OTLP exporter (secondary) deferred: opentelemetry-exporter-otlp-proto-http is
coupled to a sync requests.Session and owns protobuf serialization + its own
retry loop. Backing it with async smooai-fetch would mean reimplementing that
encoding/retry surface — the same reason the Rust SDK kept reqwest for OTLP
(#61, Code-Conventions #29). Deferred cleanly rather than hacked; no
double-retry layer introduced. The OAuth token provider keeps httpx for the same
reason (it backs the OTLP path).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
brentrager added a commit that referenced this pull request Jun 21, 2026
…s Python floor to 3.12) (#64)

* SMOODEV-2026: Python observability SDK transport via smooai-fetch (+ OTLP where feasible)

The batched webhook event delivery now goes through smooai-fetch
(retries/timeouts/circuit-breaking) instead of raw httpx. smooai-fetch is
async-only, so the transport's daemon worker thread owns a private asyncio loop
and drives fetch() via run_until_complete; the host loop is never touched. The
fetch call is injectable (fetch_fn) because smooai-fetch constructs its own
httpx.AsyncClient with no client-injection seam — tests substitute an async stub.

smooai-fetch requires Python >=3.12, so the SDK floor bumps from >=3.10 to
>=3.12 (ruff target-version py312, uv.lock drops cp310/cp311 wheels).

OTLP exporter (secondary) deferred: opentelemetry-exporter-otlp-proto-http is
coupled to a sync requests.Session and owns protobuf serialization + its own
retry loop. Backing it with async smooai-fetch would mean reimplementing that
encoding/retry surface — the same reason the Rust SDK kept reqwest for OTLP
(#61, Code-Conventions #29). Deferred cleanly rather than hacked; no
double-retry layer introduced. The OAuth token provider keeps httpx for the same
reason (it backs the OTLP path).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* SMOODEV-2026: PEP 695 generic for run_with_scope (ruff UP047 under py312 floor)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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