feat(python): read idempotency-key generation config from the IR#17014
feat(python): read idempotency-key generation config from the IR#17014devin-ai-integration[bot] wants to merge 5 commits into
Conversation
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
SDK Generation Benchmark ResultsComparing PR branch against median of 5 nightly run(s) on Full benchmark table (click to expand)
main (generator): generator-only time via --skip-scripts (includes Docker image build, container startup, IR parsing, and code generation — this is the same Docker-based flow customers use via |
a0b5f89 to
f474c7b
Compare
|
Runtime-tested the generated Python SDKs locally through
Key generated source# committed feature-on fixture
"Idempotency-Key": str(idempotency_key) if idempotency_key is not None else str(uuid.uuid4()),
# adversarial temporary config: header-name=X-Custom-Idem, methods=[PATCH]
"X-Custom-Idem": str(uuid.uuid4())Test session: https://app.devin.ai/sessions/e429bcae88c74ab28101b488416486f2 |
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
f474c7b to
e15a433
Compare
…ve idempotency resolver conflict in favor of main (global api.settings support) Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
|
Devin is archived and cannot be woken up. Please unarchive Devin if you want to continue using it. |
4 similar comments
|
Devin is archived and cannot be woken up. Please unarchive Devin if you want to continue using it. |
|
Devin is archived and cannot be woken up. Please unarchive Devin if you want to continue using it. |
|
Devin is archived and cannot be woken up. Please unarchive Devin if you want to continue using it. |
|
Devin is archived and cannot be woken up. Please unarchive Devin if you want to continue using it. |
…n in a core helper Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Description
Linear ticket: Refs #17018
Switches the Python SDK generator from its own
auto_generate_idempotency_keyconfig flag to the centralizedir.sdkConfig.idempotencyKeyGenerationblock published in IR SDK67.11.0.Runtime behavior is unchanged: eligible requests receive a UUIDv4 idempotency-key header, and a caller-supplied value takes precedence. Enablement, header name, and eligible HTTP methods now come from the IR rather than generator-specific config and hardcoded
POST/PUTchecks.Changes Made
sdkConfig.idempotencyKeyGenerationwhile preserving the existing UUIDv4 injection and caller-wins fallback.main; the CLI-onlyauto-generate-idempotency-keykey now reaches the generator through the IR.67.11.0and reconciled both lockfiles.configwithoutraw.config, with unit coverage.idempotency-headersand exhaustive feature-on fixtures using the kebab-case CLI key, with canonical seed metadata.featchangelog entry.Testing
@fern-api/api-workspace-commonsVitest pass.pnpm seed test --generator python-sdk --fixture idempotency-headers exhaustive:auto-generate-idempotency-key --local --skip-scriptspasses 3/3.The feature-on generated client contains:
The no-config fixture contains no UUID injection. Held for external sign-off; do not merge yet.
Link to Devin session: https://app.devin.ai/sessions/e429bcae88c74ab28101b488416486f2
Requested by: @cadesark