Skip to content

feat: (regen) diarization v2 batch GA, listen-provider dedup, think/models route fix#714

Merged
GregHolmes merged 5 commits into
mainfrom
gh/sdk-gen-2026-05-14
May 15, 2026
Merged

feat: (regen) diarization v2 batch GA, listen-provider dedup, think/models route fix#714
GregHolmes merged 5 commits into
mainfrom
gh/sdk-gen-2026-05-14

Conversation

@GregHolmes
Copy link
Copy Markdown
Contributor

@GregHolmes GregHolmes commented May 14, 2026

Summary

Fern SDK regeneration on 2026-05-14, with manual patches re-applied.

What's in this PR

  1. Generator output (commit 7b085e8, fern-api[bot]): new generated files from the spec at 0052a02. pyproject.toml bumped 7.1.17.1.2. Fern generator unchanged (5.8.3).
  2. Re-applied manual patches (commit 2179f61): 20 patched files, none became obsolete after this regen.
  3. New listen-provider compat aliases (same commit): the spec deduplicated 5 PascalCase listen-provider types into 3 top-level DeepgramListenProvider* names. To preserve backward compat over a minor version bump, 10 hand-written alias files re-export from the new names.

Patch categories re-applied

  • 4 socket clients (agent/v1, listen/v1, listen/v2, speak/v1): broad except Exception, optional control-message defaults, _sanitize_numeric_types (agent), send_configure raw shim + typing.Any response (listen/v2).
  • 6 agent-settings files: callable AgentV1SettingsAgent(...) wrapper, broadened agent union (accepts wrapper + context + agent-id string), legacy messages= validator + read-side property, legacy TypedDict shapes.
  • agent_v1settings_audio_output.container: kept as Optional[str] instead of the enum alias.
  • core/query_encoder: bool → lowercase coercion before urlencode.
  • Wire test: restored CreateKeyV1RequestOneParams alias coverage.
  • 7 package __init__.py files: legacy alias re-exports for CreateKeyV1RequestOne[Params], AgentV1HistoryContent[Params], AgentV1HistoryFunctionCalls[Params], and AgentV1SettingsAgentContextMessagesItem*[Params].

New compat aliases (listen-provider rename)

10 alias files added under src/deepgram/agent/v1/{types,requests}/, each a one-line from ....{types,requests}.deepgram_listen_provider_* import DeepgramListenProvider* re-export. All 10 added to .fernignore as permanently frozen. AGENTS.md updated. Regression tests in tests/custom/test_compat_aliases.py confirm each alias resolves to the matching DeepgramListenProvider* target.

Test plan

  • Fern regen output landed cleanly on the branch
  • All 20 .bak patches diffed against new gen; categorized via subagent (all still needed)
  • Patches re-applied; new DeepgramListenProvider* exports kept
  • 10 listen-provider compat aliases created + re-exported from 4 __init__.py files
  • .fernignore reconciled (paths swapped back, 10 new entries added)
  • All .bak files deleted
  • ruff check src clean
  • mypy src clean (801 files)
  • pytest . — 199 passed / 4 skipped (the skipped are aiohttp/client autodetect cases, not regen-related)

@GregHolmes GregHolmes requested a review from lukeocodes as a code owner May 14, 2026 08:46
@GregHolmes GregHolmes changed the title chore: SDK regeneration 2026-05-14 chore: sdk regeneration 2026-05-14 May 14, 2026
@GregHolmes GregHolmes self-assigned this May 14, 2026
Reconciles the .bak files (pre-regen manual patches) against Fern's
freshly generated output. All 20 temporarily-frozen patches still
needed; none became obsolete.

Re-applied:
- socket clients (agent/v1, listen/v1, listen/v2, speak/v1): broad
  Exception catch, optional control-message defaults; agent also gets
  _sanitize_numeric_types; listen/v2 also gets send_configure raw shim
  + typing.Any response
- agent_v1settings types/requests: callable AgentV1SettingsAgent
  wrapper, broadened agent union, legacy messages= validator + read-
  side property, legacy TypedDict shape
- agent_v1settings_audio_output: container typed as Optional[str]
- core/query_encoder: bool -> lowercase coercion before urlencode
- tests/wire/test_manage_v1_projects_keys: CreateKeyV1RequestOneParams
  alias coverage
- 7 package __init__.py files: legacy alias re-exports for
  CreateKeyV1RequestOne[Params], AgentV1HistoryContent[Params],
  AgentV1HistoryFunctionCalls[Params], and
  AgentV1SettingsAgentContextMessagesItem*[Params]

New listen-provider compat aliases (spec dedup on 2026-05-14):
The spec consolidated AgentV1SettingsAgent[Context]ListenProviderV{1,2,
V2LanguageHint} into top-level DeepgramListenProvider* types. To keep
the old public import paths working through this minor version, this
adds 10 hand-written alias files (5 types + 5 requests) that re-export
from the new DeepgramListenProvider* names, plus regression coverage
in tests/custom/test_compat_aliases.py.

.fernignore is restored to the pre-prepare state (.bak paths swapped
back to originals) and extended with the 10 new alias entries.
AGENTS.md documents the new permanently frozen entries. All .bak files
are deleted.

Verification: ruff src clean, mypy clean (801 files), pytest 199 passed.
Reverts Fern's pyproject.toml bump (7.1.1 -> 7.1.2) and the matching
User-Agent / X-Fern-SDK-Version bumps in client_wrapper.py. Both files
are listed in .github/release-please-config.json's extra-files, so
they're release-please's responsibility, not Fern's. Letting Fern bump
them here just creates phantom intermediate versions that release-please
overwrites on the next release.

Note: client_wrapper.py on main is at "7.0.1" (stale; release-please's
generic extra-file matcher isn't catching this file). This PR resets it
to "7.1.1" to match the manifest and the actual released version.
@GregHolmes GregHolmes changed the title chore: sdk regeneration 2026-05-14 feat: sdk regeneration 2026-05-14 May 14, 2026
@GregHolmes GregHolmes changed the title feat: sdk regeneration 2026-05-14 feat: (regen) diarization v2 batch GA, listen-provider dedup, think/models route fix May 14, 2026
@GregHolmes GregHolmes merged commit 9d9a43d into main May 15, 2026
12 checks passed
@GregHolmes GregHolmes deleted the gh/sdk-gen-2026-05-14 branch May 15, 2026 14:17
GregHolmes pushed a commit that referenced this pull request May 19, 2026
🤖 I have created a release *beep* *boop*

## 7.2.0 — what's in this release

This release bundles two Fern SDK regenerations (2026-05-14 and
2026-05-15) plus the manual patches re-applied on top of each.

See the full changelog:
[`v7.1.1...v7.2.0`](v7.1.1...v7.2.0).

### Features

**Diarization v2 batch GA — #714**
- Listen-provider rename: spec deduplicated 5 PascalCase types into 3
canonical top-level names
[`DeepgramListenProviderV1`](https://github.com/deepgram/deepgram-python-sdk/blob/main/src/deepgram/types/deepgram_listen_provider_v1.py),
[`DeepgramListenProviderV2`](https://github.com/deepgram/deepgram-python-sdk/blob/main/src/deepgram/types/deepgram_listen_provider_v2.py),
[`DeepgramListenProviderV2LanguageHint`](https://github.com/deepgram/deepgram-python-sdk/blob/main/src/deepgram/types/deepgram_listen_provider_v2language_hint.py)
(plus matching TypedDicts under
[`src/deepgram/requests/`](https://github.com/deepgram/deepgram-python-sdk/tree/main/src/deepgram/requests)).
- 10 hand-written compat alias files preserve the old names — re-exports
under
[`src/deepgram/agent/v1/types/`](https://github.com/deepgram/deepgram-python-sdk/tree/main/src/deepgram/agent/v1/types)
and
[`src/deepgram/agent/v1/requests/`](https://github.com/deepgram/deepgram-python-sdk/tree/main/src/deepgram/agent/v1/requests)
for both
[`AgentV1SettingsAgentContextListenProvider{V1,V2,V2LanguageHint}`](https://github.com/deepgram/deepgram-python-sdk/blob/main/src/deepgram/agent/v1/types/agent_v1settings_agent_context_listen_provider.py)
and
[`AgentV1SettingsAgentListenProvider{V1,V2}`](https://github.com/deepgram/deepgram-python-sdk/blob/main/src/deepgram/agent/v1/types/agent_v1settings_agent_listen_provider.py),
so the rename is fully backward-compatible. All 10 added to
`.fernignore` as permanently frozen; regression coverage in
[`tests/custom/test_compat_aliases.py`](https://github.com/deepgram/deepgram-python-sdk/blob/main/tests/custom/test_compat_aliases.py).

### Bug fixes

**think/models routed to `agent_rest` — #715**
-
[`agent/v1/settings/think/models/raw_client.py`](https://github.com/deepgram/deepgram-python-sdk/blob/main/src/deepgram/agent/v1/settings/think/models/raw_client.py)
now resolves the base URL via `environment.agent_rest`.
-
[`DeepgramClientEnvironment`](https://github.com/deepgram/deepgram-python-sdk/blob/main/src/deepgram/environment.py)
reshape supports this:
[`DeepgramClientEnvironment.AGENT`](https://github.com/deepgram/deepgram-python-sdk/blob/main/src/deepgram/environment.py)
was dropped and a new `agent_rest` kwarg was added to
[`DeepgramClientEnvironment.__init__`](https://github.com/deepgram/deepgram-python-sdk/blob/main/src/deepgram/environment.py).
This is corrective rather than breaking — the old `.AGENT` env routed
REST traffic to the wrong host, so
[`agent.v1.settings.think.models.list()`](https://github.com/deepgram/deepgram-python-sdk/blob/main/src/deepgram/agent/v1/settings/think/models/raw_client.py)
and any other caller of that endpoint was already broken. Callers
building a custom environment should pass the new `agent_rest=` slot.

### Patches preserved through regen

Both regens re-applied 20 hand-maintained patches (still listed in
`.fernignore`). No patches dropped this cycle.

**Socket clients** — broad `except Exception` for custom transports,
optional `message=` defaults on control sends:
-
[`agent/v1/socket_client.py`](https://github.com/deepgram/deepgram-python-sdk/blob/main/src/deepgram/agent/v1/socket_client.py)
— also restored `_sanitize_numeric_types` (float→int sanitizer).
-
[`listen/v1/socket_client.py`](https://github.com/deepgram/deepgram-python-sdk/blob/main/src/deepgram/listen/v1/socket_client.py).
-
[`listen/v2/socket_client.py`](https://github.com/deepgram/deepgram-python-sdk/blob/main/src/deepgram/listen/v2/socket_client.py)
— also kept `send_configure` as a raw `typing.Any` shim and `typing.Any`
in the response Union (generator now emits
`ListenV2Configure`/`ListenV2ConfigureSuccess` but we don't yet have
evidence the new typed models are wire-correct).
-
[`speak/v1/socket_client.py`](https://github.com/deepgram/deepgram-python-sdk/blob/main/src/deepgram/speak/v1/socket_client.py).

**Agent settings** — callable
[`AgentV1SettingsAgent(...)`](https://github.com/deepgram/deepgram-python-sdk/blob/main/src/deepgram/agent/v1/types/agent_v1settings.py)
wrapper (generator now emits a `Union[AgentV1SettingsAgentContext, str]`
alias, which would break callable usage), broadened
[`AgentV1Settings.agent`](https://github.com/deepgram/deepgram-python-sdk/blob/main/src/deepgram/agent/v1/types/agent_v1settings.py)
union (accepts wrapper + context + agent-id string), legacy `messages=`
validator + read-side property, legacy TypedDict shapes in
[`agent/v1/requests/agent_v1settings.py`](https://github.com/deepgram/deepgram-python-sdk/blob/main/src/deepgram/agent/v1/requests/agent_v1settings.py).
[`agent_v1settings_audio_output.container`](https://github.com/deepgram/deepgram-python-sdk/blob/main/src/deepgram/agent/v1/types/agent_v1settings_audio_output.py)
kept as `Optional[str]` instead of the regenerated
`AgentV1SettingsAudioOutputContainer` enum.

**Misc** —
[`core/query_encoder.py`](https://github.com/deepgram/deepgram-python-sdk/blob/main/src/deepgram/core/query_encoder.py)
bool → lowercase coercion before `urlencode`; wire test
[`tests/wire/test_manage_v1_projects_keys.py`](https://github.com/deepgram/deepgram-python-sdk/blob/main/tests/wire/test_manage_v1_projects_keys.py)
restored `CreateKeyV1RequestOneParams` alias coverage; 7 package
`__init__.py` files restored compat re-exports for
`CreateKeyV1RequestOne(+Params)`, `AgentV1HistoryContent(+Params)`,
`AgentV1HistoryFunctionCalls(+Params)`,
`AgentV1SettingsAgentContextMessagesItem*(+Params)`.

### Near miss (from #715)
Initial review classified
[`agent/v1/types/agent_v1settings.py`](https://github.com/deepgram/deepgram-python-sdk/blob/main/src/deepgram/agent/v1/types/agent_v1settings.py)
and
[`agent/v1/requests/agent_v1settings.py`](https://github.com/deepgram/deepgram-python-sdk/blob/main/src/deepgram/agent/v1/requests/agent_v1settings.py)
as droppable (the new generator declares `agent: AgentV1SettingsAgent`
and `AgentV1SettingsAgent` is now itself
`Union[AgentV1SettingsAgentContext, str]`, structurally equivalent).
Pytest caught the issue: because we patch `AgentV1SettingsAgent` back to
a class for callable backward compat, the bare `agent:
AgentV1SettingsAgent` field rejects string values. Both patches restored
to broaden to `Union[AgentV1SettingsAgent, AgentV1SettingsAgentContext,
str]`.
[`tests/custom/test_compat_aliases.py`](https://github.com/deepgram/deepgram-python-sdk/blob/main/tests/custom/test_compat_aliases.py)
covers this regression.

### Validation
- `uv run pytest -q` — 199 passed / 4 skipped (aiohttp/client autodetect
cases, not regen-related).
- `uv run mypy src` — clean (801 files).
- `uv run ruff check src` — clean (the 57 pre-existing errors live in
`tests/manual/`, untouched by regen).

### Cross-SDK reference
The `agent_rest` env fix has equivalents in deepgram/deepgram-js-sdk#499
and deepgram/deepgram-java-sdk#59. The JS SDK additionally needed a
`src/Client.ts` patch because `client.fetch()` passthrough started
defaulting to `agentRest` instead of `base`. Python has no equivalent
passthrough in the hand-maintained
[`client.py`](https://github.com/deepgram/deepgram-python-sdk/blob/main/src/deepgram/client.py),
so no analogous patch was required here.

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.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.

2 participants