chore: 🐝 Update SDK - Generate 0.10.1#349
Conversation
5a2aa71 to
fb9946f
Compare
* `open_router.beta.responses.send()`: * `request` **Changed** * `response.[].data` **Changed** **Breaking**⚠️ * `open_router.images.list_model_endpoints()`: **Added** * `open_router.images.list_models()`: **Added** * `open_router.benchmarks.get_benchmarks()`: **Added** * `open_router.datasets.get_benchmarks_artificial_analysis()`: **Deleted** **Breaking**⚠️ * `open_router.datasets.get_benchmarks_design_arena()`: **Deleted** **Breaking**⚠️ * `open_router.images.generate()`: **Added** * `open_router.chat.send()`: `response` **Changed** * `open_router.embeddings.generate()`: `response.usage` **Changed** * `open_router.embeddings.list_models()`: `response.data.[].reasoning` **Added** * `open_router.models.get()`: `response.data.reasoning` **Added** * `open_router.models.list()`: `response.data.[].reasoning` **Added** * `open_router.models.list_for_user()`: `response.data.[].reasoning` **Added** * `open_router.presets.create_presets_responses()`: `request` **Changed**
3b8c4ce to
0b74cba
Compare
There was a problem hiding this comment.
Perry's Review
Re-review of the Speakeasy SDK regen 0.10.0 → 0.10.1 — the only change since my last pass at 3b8c4ce is a regenerated generation-id / pristine-hash in the lockfile plus a release-timestamp bump; the generated SDK source is byte-for-byte identical, so both of my prior findings still stand unchanged.
Verdict: 💬 Comments / questions
Details
Risk: 🟡 Medium — a public-API breaking change in a published SDK (consumer-facing semver hazard); no auth / billing / runtime-safety surface. Generated code.
CI: no pull_request checks configured on this repo's regen PRs (none reported on the head SHA).
Incremental delta since 3b8c4ce: generated-metadata churn only — a new generation-id + pristine-commit-hash in the Speakeasy lockfile, and a release-timestamp line. Zero functional source change (verified: git diff between the two SHAs touches exactly the lockfile and the releases doc). No new findings on this push.
Findings carried forward (both still open as review threads — not re-posted to avoid duplicate comments):
- 🟡 Breaking removal of the two per-source benchmark methods (the unified-benchmarks migration) is still shipping as a patch bump (0.10.0 → 0.10.1). Re-verified at head: the version module and lockfile both read 0.10.1, and 0.10.0 is already published on PyPI. A consumer pinned compatible-release or caret on 0.10.0 auto-resolves to 0.10.1 and then raises AttributeError on the removed methods. Should be at least a minor (0.11.0). See the existing thread on the version line.
- 🟡 (codex) The unknown-values fallback marker is mis-nested as a fake key inside the discriminator mapping, so the generated CapabilityDescriptor union has only three tagged variants and no catch-all — re-verified at head in the generated component. An unknown discriminator value raises in pydantic. See the existing thread on the spec file.
Codex (heavy second opinion): no additional valid findings (hit the 60s cap; partial output was a template placeholder).
Analysis lanes: all candidates discarded on verification — every security-lane hit was lockfile checksum/hash churn ("a hash changed, might be security-relevant"), and the correctness / blast-radius / test-coverage candidates all anchored to the generated SDK source that is byte-identical to the prior review (out of scope for this incremental delta).
Research: re-confirmed live against the Speakeasy versioning docs — the generator bumps off info.version + document checksum only and does not inspect added/removed operations; pre-1.0 majors auto-downgrade to minor. info.version is still 1.0.0, so the breaking removal fell through to a checksum-only patch. Re-confirmed via the PyPI version-specifiers spec that compatible-release ~=0.10.0 expands to >=0.10.0,==0.10.* and so admits 0.10.1.
Security: no concerns — secret-pattern grep over the delta is clean; the delta is generated lockfile metadata + a release timestamp, no auth / credential / streaming surface.
Test coverage: N/A — Speakeasy-generated SDK with no in-repo test suite; correctness is asserted by generation + compile.
Unresolved threads: 2 — both are my own prior suggestions (semver bump + discriminator fallback), still open and still applicable on this byte-identical regen. Not re-posted.
Scope: incremental — 0 functional new lines since prior review at 3b8c4ce (delta = lockfile + release-timestamp metadata only)
Review: tier=large · model=claude-opus-latest · score=96.8
SDK update
Versioning
Version Bump Type: [patch] - 🤖 (automated)
Tip
If updates to your OpenAPI document introduce breaking changes, be sure to update the
info.versionfield to trigger the correct version bump.Speakeasy supports manual control of SDK versioning through multiple methods.
Python SDK Changes:
open_router.beta.responses.send():requestChangedresponse.[].dataChanged Breakingopen_router.images.list_model_endpoints(): Addedopen_router.images.list_models(): Addedopen_router.benchmarks.get_benchmarks(): Addedopen_router.datasets.get_benchmarks_artificial_analysis(): Deleted Breakingopen_router.datasets.get_benchmarks_design_arena(): Deleted Breakingopen_router.images.generate(): Addedopen_router.chat.send():responseChangedopen_router.embeddings.generate():response.usageChangedopen_router.embeddings.list_models():response.data.[].reasoningAddedopen_router.models.get():response.data.reasoningAddedopen_router.models.list():response.data.[].reasoningAddedopen_router.models.list_for_user():response.data.[].reasoningAddedopen_router.presets.create_presets_responses():requestChangedOpenAPI Change Summary
PYTHON CHANGELOG
No relevant generator changes
Based on Speakeasy CLI 1.680.0
Last updated by Speakeasy workflow