openspeechapi 0.2.4__tar.gz → 0.2.5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/PKG-INFO +1 -1
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/__init__.py +1 -1
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/logging_config.py +16 -2
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/pyproject.toml +1 -1
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_logging.py +32 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/.dockerignore +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/.env.example +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/.github/workflows/ci.yml +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/.gitignore +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/.tmp/audio/en.aiff +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/.tmp/audio/en_16k.wav +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/.tmp/audio/en_16k_pad6.wav +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/.tmp/audio/en_long.aiff +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/.tmp/audio/en_long_16k.wav +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/.tmp/audio/en_mid.aiff +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/.tmp/audio/en_mid_16k.wav +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/.tmp/audio/zh.aiff +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/.tmp/audio/zh_16k.wav +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/.tmp/openspeech-8600.log +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/.tmp/openspeech-serve.log +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/.tmp/webui-server.log +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/.tmp/webui-server.pid +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/.tmp/wlk12101.log +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/.tmp/wlk12101.pid +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/.tmp/wlk12102.log +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/.tmp/wlk12102.pid +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/AGENTS.md +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/CLAUDE.md +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/Dockerfile +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/README.md +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/aibox-script/aibox-1.0.0-SNAPSHOT-stdout.log +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/aibox-script/aibox.2026-04-02.log +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/aibox-script/com.user.restart-jar.plist +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/aibox-script/restart-jar.sh +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/aibox-script.tar.gz +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/docker-compose.yml +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/docs/architecture/local-engine-manager.md +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/docs/architecture/logging-spec.md +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/docs/architecture/stt-engineering-optimization-guide.md +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/docs/architecture/stt-streaming-spec.md +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/docs/architecture/webui-phase-a.md +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/docs/engines/fish-speech-docker.md +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/docs/engines/fish-speech-native.md +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/docs/engines/stt-native-models.md +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/docs/superpowers/plans/2026-04-01-phase1-implementation.md +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/docs/superpowers/plans/2026-04-11-macos-native-tts-stt.md +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/docs/superpowers/specs/2026-04-01-openspeech-api-design.md +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/docs/superpowers/specs/2026-04-03-hot-lazy-loading.md +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/docs/superpowers/specs/2026-04-03-phase2-protocol-layer.md +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/docs/superpowers/specs/2026-04-03-phase3-production.md +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/docs/superpowers/specs/2026-04-11-macos-native-tts-stt-design.md +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/docs/superpowers/specs/2026-04-12-cloud-providers-webui-design.md +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/docs/superpowers/specs/2026-04-15-streaming-tts-stt-fixes-display-names.md +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/docs/superpowers/specs/2026-04-16-provider-management-engines-rename.md +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/examples/client_stt.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/examples/client_tts.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/examples/stt_simple.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/examples/tts_simple.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/__main__.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/cli.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/client/__init__.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/client/client.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/config.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/core/__init__.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/core/base.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/core/enums.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/core/models.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/core/registry.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/core/settings.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/demo.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/dispatch/__init__.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/dispatch/context.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/dispatch/dispatcher.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/dispatch/executors/__init__.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/dispatch/executors/base.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/dispatch/executors/in_process.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/dispatch/executors/remote.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/dispatch/executors/subprocess_exec.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/dispatch/fanout.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/dispatch/filters.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/dispatch/lifecycle.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/dispatch/watcher.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/engine_catalog.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/engine_registry.yaml +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/exceptions.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/factory.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/local_engines/__init__.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/local_engines/aim_resolver.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/local_engines/backends/__init__.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/local_engines/backends/docker_backend.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/local_engines/backends/native_backend.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/local_engines/base.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/local_engines/engines/__init__.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/local_engines/engines/faster_whisper.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/local_engines/engines/fish_speech.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/local_engines/engines/sherpa_onnx.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/local_engines/engines/whisper.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/local_engines/engines/whisperlivekit.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/local_engines/manager.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/local_engines/models.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/local_engines/progress.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/local_engines/registry.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/local_engines/task_store.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/local_engines/tasks.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/observe/__init__.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/observe/base.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/observe/debug.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/observe/latency.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/observe/metrics.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/observe/tracing.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/observe/usage.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/providers/__init__.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/providers/_template.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/providers/stt/__init__.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/providers/stt/alibaba.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/providers/stt/assemblyai.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/providers/stt/azure_speech.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/providers/stt/baidu.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/providers/stt/deepgram.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/providers/stt/elevenlabs.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/providers/stt/faster_whisper.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/providers/stt/google_cloud.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/providers/stt/iflytek.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/providers/stt/macos_speech.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/providers/stt/openai.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/providers/stt/sherpa_onnx.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/providers/stt/tencent.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/providers/stt/volcengine.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/providers/stt/whisper.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/providers/stt/whisperlivekit.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/providers/stt/windows_speech.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/providers/tts/__init__.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/providers/tts/alibaba.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/providers/tts/azure_speech.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/providers/tts/baidu.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/providers/tts/coqui.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/providers/tts/cosyvoice.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/providers/tts/deepgram.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/providers/tts/elevenlabs.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/providers/tts/fish_speech.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/providers/tts/google_cloud.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/providers/tts/iflytek.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/providers/tts/macos_say.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/providers/tts/minimax.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/providers/tts/openai.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/providers/tts/piper.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/providers/tts/tencent.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/providers/tts/volcengine.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/providers/tts/windows_sapi.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/server/__init__.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/server/app.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/server/auth.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/server/middleware.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/server/routes/__init__.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/server/routes/management.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/server/routes/stt.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/server/routes/tts.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/server/routes/webui.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/server/webui/app.js +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/server/webui/index.html +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/server/webui/styles.css +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/server/ws/__init__.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/server/ws/stt_stream.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/server/ws/tts_stream.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/telemetry/__init__.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/telemetry/perf.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/utils/__init__.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/utils/audio_converter.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/utils/audio_playback.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/vendor_registry.yaml +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/output/output.wav +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/output.wav +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/providers.example.yaml +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/scripts/engines/cloud/install.sh +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/scripts/engines/faster-whisper/native/install.sh +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/scripts/engines/fish-speech/native/install.sh +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/scripts/engines/macos-stt/install.sh +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/scripts/engines/macos-stt/macos_stt.swift +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/scripts/engines/macos-stt/request_auth.swift +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/scripts/engines/sherpa-onnx/native/install.sh +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/scripts/engines/sherpa-onnx/native/run_streaming_server.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/scripts/engines/whisper/native/install.sh +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/scripts/engines/whisperlivekit/native/install.sh +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/__init__.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/conftest.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/e2e/__init__.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/e2e/conftest.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/e2e/test_fanout_e2e.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/e2e/test_faster_whisper_e2e.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/e2e/test_openai_e2e.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/e2e/test_webui_e2e.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/fixtures/hello.wav +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/integration/__init__.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/integration/test_fanout_integration.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/integration/test_in_process_integration.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/integration/test_server_client.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/__init__.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_aim_resolver.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_audio_converter.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_audio_playback.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_base.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_cli.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_cli_engine.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_client.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_config.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_context.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_debug_observer.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_dispatcher.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_docker_backend_progress.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_engine_registry.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_enums.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_executor_base.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_fanout.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_filters.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_hot_reload.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_in_process.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_latency_observer.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_lifecycle.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_local_engine_task_store.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_local_engines_manager.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_metrics_observer.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_models.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_native_backend.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_observer_base.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_plugin_mechanism.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_providers/__init__.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_providers/test_cloud_providers.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_providers/test_elevenlabs_stt.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_providers/test_macos_say.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_providers/test_macos_speech.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_providers/test_openai_base_url.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_providers/test_openai_stt.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_providers/test_openai_tts.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_providers/test_sherpa_onnx_stt.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_providers/test_stt_stubs.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_providers/test_tts_stubs.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_providers/test_whisperlivekit_stt.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_registry.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_remote.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_server/__init__.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_server/test_auth.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_server/test_config_api.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_server/test_routes.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_server/test_websocket.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_subprocess.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_usage_observer.py +0 -0
- {openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_watcher.py +0 -0
|
@@ -185,10 +185,24 @@ def bind_context(
|
|
|
185
185
|
if v is not None:
|
|
186
186
|
bindings[k] = v
|
|
187
187
|
|
|
188
|
+
# NOTE: we drive logger.contextualize manually instead of using its
|
|
189
|
+
# ``with`` form so we can swallow the cleanup-time ValueError that
|
|
190
|
+
# loguru raises when bind_context wraps a ``yield`` in an async
|
|
191
|
+
# generator and that generator is closed from a different asyncio
|
|
192
|
+
# Context (e.g. the consumer task gets cancelled). The token loguru
|
|
193
|
+
# tries to reset was set in the original Context and Python forbids
|
|
194
|
+
# cross-context reset. The bindings are scoped to the closing
|
|
195
|
+
# Context anyway, so dropping the reset is harmless — Python GCs the
|
|
196
|
+
# vanishing Context's vars regardless.
|
|
197
|
+
contextualizer = logger.contextualize(**bindings)
|
|
198
|
+
contextualizer.__enter__()
|
|
188
199
|
try:
|
|
189
|
-
|
|
190
|
-
yield bindings
|
|
200
|
+
yield bindings
|
|
191
201
|
finally:
|
|
202
|
+
try:
|
|
203
|
+
contextualizer.__exit__(None, None, None)
|
|
204
|
+
except ValueError:
|
|
205
|
+
pass
|
|
192
206
|
for var, token in reversed(resets):
|
|
193
207
|
try:
|
|
194
208
|
var.reset(token)
|
|
@@ -96,6 +96,38 @@ def test_bind_context_sets_and_resets_request_id() -> None:
|
|
|
96
96
|
assert get_request_id() is None
|
|
97
97
|
|
|
98
98
|
|
|
99
|
+
def test_bind_context_aclose_from_different_asyncio_context_does_not_raise() -> None:
|
|
100
|
+
"""When bind_context wraps a yield in an async generator and the generator
|
|
101
|
+
is later closed from a different asyncio Context, loguru's
|
|
102
|
+
contextualize.__exit__ raises
|
|
103
|
+
``ValueError("<Token ...> was created in a different Context")``.
|
|
104
|
+
|
|
105
|
+
Production trace (2026-05-06): openspeechapi/dispatch/dispatcher.py
|
|
106
|
+
``_synthesize_stream`` holds bind_context across ``yield chunk``; when
|
|
107
|
+
the consumer's task is cancelled, athrow runs the finally in a new
|
|
108
|
+
Context and the unhandled ValueError pollutes the log.
|
|
109
|
+
|
|
110
|
+
bind_context must swallow that cleanup error.
|
|
111
|
+
"""
|
|
112
|
+
import asyncio
|
|
113
|
+
|
|
114
|
+
async def gen():
|
|
115
|
+
with bind_context(request_id="rid", provider="prov"):
|
|
116
|
+
for i in range(3):
|
|
117
|
+
yield i
|
|
118
|
+
|
|
119
|
+
async def driver():
|
|
120
|
+
g = gen()
|
|
121
|
+
first = await g.__anext__()
|
|
122
|
+
assert first == 0
|
|
123
|
+
# Closing from a freshly-created task puts aclose in a different
|
|
124
|
+
# asyncio Context than where bind_context was entered. This is the
|
|
125
|
+
# exact mismatch that production hit.
|
|
126
|
+
await asyncio.create_task(g.aclose())
|
|
127
|
+
|
|
128
|
+
asyncio.run(driver())
|
|
129
|
+
|
|
130
|
+
|
|
99
131
|
def test_bind_context_decorates_log_records(tmp_path: Path) -> None:
|
|
100
132
|
configure_logging(level="DEBUG", format="json", log_dir=str(tmp_path))
|
|
101
133
|
captured: list[dict] = []
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openspeechapi-0.2.4 → openspeechapi-0.2.5}/docs/architecture/stt-engineering-optimization-guide.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openspeechapi-0.2.4 → openspeechapi-0.2.5}/docs/superpowers/specs/2026-04-03-hot-lazy-loading.md
RENAMED
|
File without changes
|
|
File without changes
|
{openspeechapi-0.2.4 → openspeechapi-0.2.5}/docs/superpowers/specs/2026-04-03-phase3-production.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/dispatch/executors/subprocess_exec.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/local_engines/backends/__init__.py
RENAMED
|
File without changes
|
{openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/local_engines/backends/docker_backend.py
RENAMED
|
File without changes
|
{openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/local_engines/backends/native_backend.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/local_engines/engines/faster_whisper.py
RENAMED
|
File without changes
|
{openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/local_engines/engines/fish_speech.py
RENAMED
|
File without changes
|
{openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/local_engines/engines/sherpa_onnx.py
RENAMED
|
File without changes
|
|
File without changes
|
{openspeechapi-0.2.4 → openspeechapi-0.2.5}/openspeechapi/local_engines/engines/whisperlivekit.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openspeechapi-0.2.4 → openspeechapi-0.2.5}/scripts/engines/faster-whisper/native/install.sh
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openspeechapi-0.2.4 → openspeechapi-0.2.5}/scripts/engines/whisperlivekit/native/install.sh
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/integration/test_in_process_integration.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_providers/test_cloud_providers.py
RENAMED
|
File without changes
|
{openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_providers/test_elevenlabs_stt.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_providers/test_openai_base_url.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_providers/test_sherpa_onnx_stt.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openspeechapi-0.2.4 → openspeechapi-0.2.5}/tests/unit/test_providers/test_whisperlivekit_stt.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|