5.18.1

(fix): Normalize the architecture label in the structured User-Agent (emitted when include_platform_headers is enabled) so the 64-bit x86 aliases (x64, amd64, x86_64) all report as the canonical x86_64, keeping the value consistent across generators.

5.18.0

(feat): Add opt-in support for a structured User-Agent header of the form {sdkName}/{version} ({os}; {arch}) Python/{pythonVersion}, matching the Twilio helper-library shape. This is gated behind the include_platform_headers config option and is disabled by default. When enabled, the platform + runtime information is consolidated into the User-Agent header, superseding the default {package}/{version} value, and the discrete X-Fern-Runtime / X-Fern-Platform headers are no longer emitted. The platform group and runtime segment are dropped gracefully when they cannot be determined, and the header remains subject to omit_fern_headers.

5.17.1

(fix): Generated code snippets (README, OAuth token override examples) now use the custom bearer token parameter name from the API spec (e.g. api_key) instead of always using the default token.

5.17.0

(feat): Add a timeout config option as an alias for timeout_in_seconds. Both keys are in seconds and timeout_in_seconds continues to work, with timeout taking precedence when both are set.

(feat): Add a timeout key to the generated SDK’s RequestOptions as an alias for the per-request timeout_in_seconds. Both are in seconds; timeout_in_seconds keeps working, with timeout taking precedence when both are provided.

5.16.1

(fix): Emit attribute docstrings for aliased Pydantic model fields (e.g. fields renamed from camelCase wire names to snake_case) so IDEs surface the field description on hover, matching the behavior of non-aliased fields.

5.16.0

(feat): Implement transparent SSE stream auto-reconnection for resumable: true endpoints, bringing the Python SDK to parity with TypeScript and Go. When a resumable stream ends prematurely, EventSource now re-issues the original request with a Last-Event-ID header and resumes from the last dispatched event id (never a parsed-but-undispatched id, avoiding silent event loss). Reconnection is gated on a configured stream terminator, honors stream_reconnection_enabled and max_stream_reconnection_attempts (with reset-on-progress), backs off 1s by default (or the server retry: value, clamped to 30s), guards against empty reconnect bodies, and remains cancellable during the backoff delay. Supported for both sync and async clients.

5.15.2

(fix): Fix ImportError when a type uses extends to inherit from a base type that is part of a circular reference cycle (e.g. Acai extends Berry where Berry → Animal → Cat → Fruit → Acai). Python inheritance requires a top-level import of the base class, which cannot coexist with the ghost reference imports needed for circular forward-ref resolution. The generator now automatically falls back to inlining the base type’s properties instead of using Python class inheritance when it detects a circular extends chain.

5.15.1

(fix): Fix pydantic-v2 generator failing to find .gitignore.Template at runtime by copying the asIs directory into the dist bundle.

(fix): Fix pydantic-v2 WrappedAliasGenerator producing invalid Python: add missing self parameter to getter methods, use correct return type instead of hardcoded UUID, quote forward-reference return types in builder methods, and add missing return statement in builder method bodies.

5.15.0

(feat): Support resumable flag in SSE streaming endpoints. When an endpoint has x-fern-streaming.resumable: true, the generated SDK now passes resumable=True to EventSource, plumbing the flag through to the runtime for use by reconnection logic. Adds stream_reconnection_enabled and max_stream_reconnection_attempts request options for runtime control of reconnection behavior.

5.14.21

(fix): Fix pyproject.toml distribution name for github-output SDKs without a PyPI publish target to prefer config.package_name over the organization name. Also use output_mode.version instead of hardcoding 0.0.0.

5.14.20

(chore): Bump the Python SDK generator container’s base image from python:3.13.7-slim to python:3.13.14-slim to pull in CPython security fixes, clearing CVE-2025-13836, CVE-2026-3644, and CVE-2026-4224 (plus several lower-severity CPython advisories).

5.14.19

(fix): Bump aiohttp lower bound from >=3.14.0 to >=3.14.1 to fix CVE-2026-54274.

5.14.18

(fix): Fixed the generated legacy wire test conftest.py so the test suite no longer fails when no mock server is configured. The client fixtures now skip wire tests when TESTS_BASE_URL is unset (instead of issuing requests to an invalid URL), and the conftest re-declares the hook that auto-skips @pytest.mark.aiohttp tests when the optional httpx_aiohttp dependency is not installed.

5.14.17

(fix): Fix OAuth token provider to use correct parameter names from request-properties mapping for custom OAuth endpoints, and pass additional required parameters (scopes, custom properties) through the client constructor to the token provider.

(fix): Enforce required additional OAuth parameters with an explicit runtime check that raises an ApiError instead of assert, so the validation is not stripped under Python’s optimized mode (-O).

5.14.16

(fix): Fix discriminated union snippet generation to include base properties (e.g. extra, tags) inherited from the union’s base type. Also fix conftest generation to skip non-string constructor parameters like headers from os.getenv() wrapping.

5.14.15

(chore): Bump bundled @fern-api/generator-cli to 0.9.39 (Replay 0.18.0) for more reliable customization detection during regeneration.

5.14.14

(fix): Add MAX_LINE_SIZE guard (1 MiB) to SSE iter_sse/aiter_sse to prevent unbounded memory growth from non-newline-terminated streams (GHSA-7w2x-r9r4-7v8r).

5.14.13

(fix): Fix mypy errors in raw client for stream-condition endpoints by removing @contextmanager decorator and correcting overload return types.

5.14.12

(chore): Bump pip from 26.1 to 26.1.2 in the container to fix CVE-2026-8643 (directory traversal via malicious wheel entry-point names).

5.14.11

(chore): Bump aiohttp lower bound from >=3.13.4 to >=3.14.0 and tighten Python marker to >=3.10 to address CVE-2026-47265 and CVE-2026-47266.