Skip to content

chore(main): release 7.12.0 - #798

Merged
GregHolmes merged 3 commits into
mainfrom
release-please--branches--main--components--deepgram-sdk
Oct 2, 2026
Merged

GregHolmes merged 3 commits into
mainfrom
release-please--branches--main--components--deepgram-sdk

Conversation

@GregHolmes

@GregHolmes GregHolmes commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

🤖 I have created a release beep boop


7.12.0 (2026-10-01)

Features

  • Flux TTS controls: Add inline pause markers for Flux batch synthesis and IPA pronunciation overrides for Flux batch, Flux WebSocket, and Aura-2. Pronunciation is Early Access; pauses are Flux batch-only. See Speed, Pause, Pronunciation. (#797) (d2b5514)
  • TextBuilder migration: Emit the escaped marker syntax Flux accepts: pauses as \{pause:500ms\} and pronunciations as \{"word": "...", "pronounce": "<IPA>"\}. The 7.11.0 forms are rejected or ignored by /v2/speak, so upgrade when using TextBuilder with Flux TTS.
  • TextBuilder validation: Match Flux batch limits: pauses must be 500-3000 ms in 100 ms increments, with at most eight per request. pause(), from_ssml(), and build() now raise ValueError for malformed, out-of-range, off-grid, or mixed pause-and-pronunciation controls before sending a request the API would reject.
  • Listen v2 (Flux): Add typed Warning responses while retaining dict-style response access during the v7 transition.

Compatibility

  • Topics and Intents: Type the direct API segments response shape while retaining deprecated results facades, legacy import paths, and legacy construction throughout v7.

This PR was generated with Release Please. See documentation.

@github-actions

github-actions Bot commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

Code Coverage

Package Line Rate Branch Rate Complexity Health
src.deepgram 97% 94% 0 ✔
src.deepgram.agent 100% 100% 0 ✔
src.deepgram.agent.v1 98% 100% 0 ✔
src.deepgram.agent.v1.settings 100% 100% 0 ✔
src.deepgram.agent.v1.settings.think 100% 100% 0 ✔
src.deepgram.agent.v1.settings.think.models 97% 100% 0 ✔
src.deepgram.auth 100% 100% 0 ✔
src.deepgram.auth.v1 100% 100% 0 ✔
src.deepgram.auth.v1.tokens 97% 100% 0 ✔
src.deepgram.core 88% 81% 0 ➖
src.deepgram.errors 100% 100% 0 ✔
src.deepgram.helpers 98% 92% 0 ✔
src.deepgram.listen 100% 100% 0 ✔
src.deepgram.listen.v1 98% 93% 0 ✔
src.deepgram.listen.v1.media 97% 100% 0 ✔
src.deepgram.listen.v2 98% 93% 0 ✔
src.deepgram.manage 100% 100% 0 ✔
src.deepgram.manage.v1 100% 100% 0 ✔
src.deepgram.manage.v1.models 96% 100% 0 ✔
src.deepgram.manage.v1.projects 97% 100% 0 ✔
src.deepgram.manage.v1.projects.billing 100% 100% 0 ✔
src.deepgram.manage.v1.projects.billing.balances 96% 100% 0 ✔
src.deepgram.manage.v1.projects.billing.breakdown 97% 100% 0 ✔
src.deepgram.manage.v1.projects.billing.fields 97% 100% 0 ✔
src.deepgram.manage.v1.projects.billing.purchases 97% 100% 0 ✔
src.deepgram.manage.v1.projects.keys 96% 100% 0 ✔
src.deepgram.manage.v1.projects.members 97% 100% 0 ✔
src.deepgram.manage.v1.projects.members.invites 96% 100% 0 ✔
src.deepgram.manage.v1.projects.members.scopes 96% 100% 0 ✔
src.deepgram.manage.v1.projects.models 96% 100% 0 ✔
src.deepgram.manage.v1.projects.usage 98% 100% 0 ✔
src.deepgram.manage.v1.projects.usage.breakdown 97% 100% 0 ✔
src.deepgram.manage.v1.projects.usage.fields 97% 100% 0 ✔
src.deepgram.read 100% 100% 0 ✔
src.deepgram.read.v1 100% 100% 0 ✔
src.deepgram.read.v1.text 98% 100% 0 ✔
src.deepgram.self_hosted 100% 100% 0 ✔
src.deepgram.self_hosted.v1 100% 100% 0 ✔
src.deepgram.self_hosted.v1.distribution_credentials 96% 100% 0 ✔
src.deepgram.speak 100% 100% 0 ✔
src.deepgram.speak.v1 98% 97% 0 ✔
src.deepgram.speak.v1.audio 91% 80% 0 ✔
src.deepgram.speak.v2 98% 93% 0 ✔
src.deepgram.speak.v2.audio 100% 100% 0 ✔
src.deepgram.voice_agent 100% 100% 0 ✔
src.deepgram.voice_agent.configurations 95% 100% 0 ✔
src.deepgram.voice_agent.variables 95% 100% 0 ✔
Summary 95% (6538 / 6855) 91% (1438 / 1574) 0 ✔

Scope: hand-maintained SDK logic. Fern-generated data models (types/, requests/), package __init__.py files, version.py, and the unused core/http_sse/ scaffolding are excluded — see .coveragerc. Unscoped whole-package coverage is ~70%.

@dg-coreylweathers dg-coreylweathers left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approve, with one changelog fix to land before merge.

What this PR does. Cuts 7.12.0 from main. The release ships exactly one change, #797: Flux TTS inline pause and pronunciation markers, a typed Listen v2 Warning message, and Topics/Intents retyped to the segments shape the API returns, with the old results path kept as a deprecated facade.

What I checked.

  • Version carriers: pyproject.toml, .fern/metadata.json, the release-please manifest and the client_wrapper fallback all say 7.12.0; nothing outside CHANGELOG.md still says 7.11.0.
  • Changelog claims vs code: pause range 500–3000 ms in 100 ms steps, max 8 per request, ValueError on malformed/out-of-range/mixed controls, escaped \{pause:500ms\} output, Warning in the Listen v2 response union with response["code"] still working, segments plus the deprecated results facade. All verified at file:line.
  • Public docs match: developers.deepgram.com/docs/tts-voice-controls states pronunciation Early Access, pauses batch-only, English-only, 500–3000 ms, max 8. The publish gate from #797 has lifted.
  • Live API (prod, /v2/speak?model=flux-alexis-en): the 7.12.0 pause marker returns 200 with dg-breaks-applied: 1; the marker 7.11.0's TextBuilder emitted ({pause:1000}) returns 400 BREAK_SYNTAX_INVALID; 7.11.0's unescaped pronunciation returns audio with dg-pronunciations-applied: 0, the 7.12.0 form applies 1. So 7.12.0 does not break any request that works today; it replaces a server 400 with a local ValueError and makes pronunciation take effect.
  • Build and test: python:3.12 container, mypy src/ clean on 918 files, pytest 1069 passed / 1 skipped including the wire tests against WireMock 3.9.1. CI green on 3.10–3.13.
  • Semver: no written policy in the repo; 7.12.0 as a minor is consistent with the facade-preserving Topics/Intents retype (Java removed the wrappers and correctly shipped 0.11.0 as breaking).

Fix before merge.
The TextBuilder bullet reads as a pure addition, but 7.11.0 allowed 500–5000 ms and 50 pauses, from_ssml() rounded off-grid breaks, and the emitted marker was {pause:500}, which production now rejects. A 7.11.0 user hitting 400s today needs the changelog to tell them to upgrade. Suggested replacement for the TextBuilder bullet:

  • TextBuilder: Emit the Flux marker syntax the API accepts: pauses as \{pause:500ms\} and pronunciations as \{"word": "...", "pronounce": "<IPA>"\}. The 7.11.0 markers ({pause:500} and the unescaped pronunciation form) are rejected by /v2/speak with BREAK_SYNTAX_INVALID or ignored, so upgrade to use TextBuilder with Flux TTS. Limits now match Flux batch: pauses 500-3000 ms in 100 ms steps (was 500-5000) and at most 8 per request (was 50). pause(), from_ssml(), and build() raise ValueError for out-of-range or off-grid durations (previously rounded), for malformed markers, and for pause-plus-pronunciation combinations, instead of sending a request the API would reject.

Nits.

  • The "Release highlights" block sits above the first --- in the PR body, which Release Please treats as header; today's JS 5.14.0 and Java 0.11.0 release pages carry only the changelog section. Harmless since CHANGELOG.md has the expanded bullets; move it below the --- if it should show on the release page.
  • Any new commit to main before merge makes Release Please force-push this branch and drop the hand edits in 6c88a67. Merge first or re-apply.

The TextBuilder bullet read as a pure addition. 7.11.0 emitted
`{pause:N}` markers that /v2/speak now rejects with
BREAK_SYNTAX_INVALID, allowed 500-5000 ms and 50 pauses, and rounded
off-grid SSML breaks. Say so, so a 7.11.0 user hitting 400s knows to
upgrade and what changed.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

@dg-coreylweathers dg-coreylweathers left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approve.

What this PR does. Cuts 7.12.0 from main. The release ships exactly one change, #797: Flux TTS inline pause and pronunciation markers, a typed Listen v2 Warning message, and Topics/Intents retyped to the segments shape the API returns, with the old results path kept as a deprecated facade.

What I checked.

  • Version carriers: pyproject.toml, .fern/metadata.json, the release-please manifest and the client_wrapper fallback all say 7.12.0; nothing outside CHANGELOG.md still says 7.11.0.
  • Changelog claims vs code: pause range 500–3000 ms in 100 ms steps, max 8 per request, ValueError on malformed/out-of-range/mixed controls, escaped \{pause:500ms\} output, Warning in the Listen v2 response union with response["code"] still working, segments plus the deprecated results facade. All verified at file:line.
  • Public docs match: developers.deepgram.com/docs/tts-voice-controls states pronunciation Early Access, pauses batch-only, English-only, 500–3000 ms, max 8. The publish gate from #797 has lifted.
  • Live API (prod, /v2/speak?model=flux-alexis-en): the 7.12.0 pause marker returns 200 with dg-breaks-applied: 1; the marker 7.11.0's TextBuilder emitted ({pause:1000}) returns 400 BREAK_SYNTAX_INVALID; 7.11.0's unescaped pronunciation returns audio with dg-pronunciations-applied: 0, the 7.12.0 form applies 1. So 7.12.0 does not break any request that works today; it replaces a server 400 with a local ValueError and makes pronunciation take effect.
  • Build and test: python:3.12 container, mypy src/ clean on 918 files, pytest 1069 passed / 1 skipped including the wire tests against WireMock 3.9.1. CI green on 3.10–3.13.
  • Semver: no written policy in the repo; 7.12.0 as a minor is consistent with the facade-preserving Topics/Intents retype (Java removed the wrappers and correctly shipped 0.11.0 as breaking).

Changelog fix applied. Commit 132d460 on this branch rewrites the TextBuilder bullet so it states what changed from 7.11.0: markers moved to the API's escaped \{pause:500ms\} form (the old {pause:500} form is rejected by /v2/speak with BREAK_SYNTAX_INVALID), limits tightened to 500-3000 ms and 8 pauses (was 500-5000 and 50), and from_ssml() raises on off-grid breaks instead of rounding. A 7.11.0 user hitting 400s today can now read why and upgrade.

Nits.

  • The "Release highlights" block sits above the first --- in the PR body, which Release Please treats as header; today's JS 5.14.0 and Java 0.11.0 release pages carry only the changelog section. Harmless since CHANGELOG.md has the expanded bullets; move it below the --- if it should show on the release page.
  • Any new commit to main before merge makes Release Please force-push this branch and drop the hand edits in 6c88a67. Merge first or re-apply.

@GregHolmes
GregHolmes merged commit 5c2f3af into main Oct 2, 2026
11 checks passed
@GregHolmes
GregHolmes deleted the release-please--branches--main--components--deepgram-sdk branch October 2, 2026 09:47
@github-actions

github-actions Bot commented Oct 2, 2026

Copy link
Copy Markdown
Contributor

🤖 Created releases:

🌻

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants