diff --git a/CHANGELOG.md b/CHANGELOG.md index 6ce86d6..ad11246 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,15 +7,26 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Added + +- Added NVIDIA SageMaker STT and TTS service options: + - `NvidiaSageMakerSTTService` + - `NvidiaSageMakerTTSService` + ### Changed +- Bumped the generated server template minimum Python version from 3.10 to + 3.11. + - Bumped client template dependencies: - `@pipecat-ai/client-js` to 1.8.0 across the vanilla-js-vite, react-vite, and react-nextjs templates. - `@pipecat-ai/client-react` to 1.4.0 across the react-vite and react-nextjs templates. - - `@pipecat-ai/voice-ui-kit` to 0.10.0 in the react-vite and react-nextjs + - `@pipecat-ai/voice-ui-kit` to 0.11.0 in the react-vite and react-nextjs templates. + - `"@pipecat-ai/small-webrtc-transport"` to 1.10.1 across the vanilla-js-vite, + react-vite, and react-nextjs templates. ## [1.1.0] - 2026-04-29 diff --git a/pyproject.toml b/pyproject.toml index 0e04115..b5bc375 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -15,10 +15,10 @@ classifiers = [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", "Topic :: Software Development :: Code Generators", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Multimedia :: Sound/Audio", @@ -30,7 +30,7 @@ dependencies = [ "jinja2>=3.1.0,<4", "questionary>=2.0.0,<3", "ruff>=0.12.1,<1", - "pipecatcloud>=0.4.4" + "pipecatcloud>=0.7.1" ] [project.urls] @@ -52,7 +52,7 @@ dev = [ "pre-commit~=4.5.1", "build~=1.4.0", # Pipecat with all service extras for auto-generating imports and configs - "pipecat-ai[aic,anthropic,assemblyai,asyncai,aws,aws-nova-sonic,azure,camb,cartesia,cerebras,daily,deepseek,deepgram,elevenlabs,fal,fireworks,fish,gladia,google,gradium,groq,heygen,hume,inworld,kokoro,lmnt,mistral,moondream,neuphonic,novita,nvidia,openai,openrouter,perplexity,piper,qwen,resembleai,rime,sagemaker,sambanova,sarvam,silero,simli,smallest,soniox,speechmatics,tavus,together,ultravox,webrtc,websocket,xai]==1.1.0", + "pipecat-ai[aic,anthropic,assemblyai,asyncai,aws,aws-nova-sonic,azure,camb,cartesia,cerebras,daily,deepseek,deepgram,elevenlabs,fal,fireworks,fish,gladia,google,gradium,groq,heygen,hume,inworld,kokoro,lmnt,mistral,moondream,neuphonic,novita,nvidia,openai,openrouter,perplexity,piper,qwen,resembleai,rime,sagemaker,sambanova,sarvam,silero,simli,smallest,soniox,speechmatics,tavus,together,ultravox,webrtc,websocket,xai]==1.2.0", "tomli>=2.0.0; python_version<'3.11'", # TOML parsing for tests "setuptools~=78.1.1", "setuptools_scm~=8.3.1", diff --git a/src/pipecat_cli/registry/_configs.py b/src/pipecat_cli/registry/_configs.py index 64258c6..88ca86d 100644 --- a/src/pipecat_cli/registry/_configs.py +++ b/src/pipecat_cli/registry/_configs.py @@ -70,6 +70,12 @@ "groq_stt": 'GroqSTTService(api_key=os.getenv("GROQ_API_KEY"))', "mistral_stt": 'MistralSTTService(api_key=os.getenv("MISTRAL_API_KEY"))', "nvidia_stt": 'NvidiaSTTService(api_key=os.getenv("NVIDIA_API_KEY"))', + "nvidia_sagemaker_stt": ( + "NvidiaSageMakerSTTService(\n" + ' endpoint_name=os.getenv("NVIDIA_SAGEMAKER_STT_ENDPOINT_NAME"),\n' + ' region=os.getenv("NVIDIA_SAGEMAKER_STT_REGION")\n' + " )\n" + ), "openai_stt": 'OpenAISTTService(api_key=os.getenv("OPENAI_API_KEY"))', "openai_realtime_stt": 'OpenAIRealtimeSTTService(api_key=os.getenv("OPENAI_API_KEY"))', "sarvam_stt": ( @@ -463,6 +469,15 @@ " ),\n" " )\n" ), + "nvidia_sagemaker_tts": ( + "NvidiaSageMakerTTSService(\n" + ' endpoint_name=os.getenv("NVIDIA_SAGEMAKER_TTS_ENDPOINT_NAME"),\n' + ' region=os.getenv("NVIDIA_SAGEMAKER_TTS_REGION"),\n' + " settings=NvidiaSageMakerTTSService.Settings(\n" + ' voice=os.getenv("NVIDIA_SAGEMAKER_TTS_VOICE_ID"),\n' + " ),\n" + " )\n" + ), "openai_tts": ( "OpenAITTSService(\n" ' api_key=os.getenv("OPENAI_API_KEY"),\n' diff --git a/src/pipecat_cli/registry/_imports.py b/src/pipecat_cli/registry/_imports.py index 7444622..44fe19c 100644 --- a/src/pipecat_cli/registry/_imports.py +++ b/src/pipecat_cli/registry/_imports.py @@ -92,6 +92,9 @@ "groq_stt": ["from pipecat.services.groq.stt import GroqSTTService"], "mistral_stt": ["from pipecat.services.mistral.stt import MistralSTTService"], "nvidia_stt": ["from pipecat.services.nvidia.stt import NvidiaSTTService"], + "nvidia_sagemaker_stt": [ + "from pipecat.services.nvidia.sagemaker.stt import NvidiaSageMakerSTTService" + ], "openai_stt": ["from pipecat.services.openai.stt import OpenAISTTService"], "openai_realtime_stt": ["from pipecat.services.openai.stt import OpenAIRealtimeSTTService"], "sarvam_stt": ["from pipecat.services.sarvam.stt import SarvamSTTService"], @@ -148,6 +151,9 @@ "mistral_tts": ["from pipecat.services.mistral.tts import MistralTTSService"], "neuphonic_tts": ["from pipecat.services.neuphonic.tts import NeuphonicTTSService"], "nvidia_tts": ["from pipecat.services.nvidia.tts import NvidiaTTSService"], + "nvidia_sagemaker_tts": [ + "from pipecat.services.nvidia.sagemaker.tts import NvidiaSageMakerTTSService" + ], "openai_tts": ["from pipecat.services.openai.tts import OpenAITTSService"], "piper_tts": ["from pipecat.services.piper.tts import PiperTTSService"], "resemble_tts": ["from pipecat.services.resembleai.tts import ResembleAITTSService"], diff --git a/src/pipecat_cli/registry/service_metadata.py b/src/pipecat_cli/registry/service_metadata.py index f5c9248..f228a2e 100644 --- a/src/pipecat_cli/registry/service_metadata.py +++ b/src/pipecat_cli/registry/service_metadata.py @@ -391,6 +391,14 @@ class ServiceRegistry: env_prefix="NVIDIA", include_params=["api_key"], ), + ServiceDefinition( + value="nvidia_sagemaker_stt", + label="NVIDIA SageMaker", + package="pipecat-ai[nvidia,sagemaker]", + class_name=["NvidiaSageMakerSTTService"], + env_prefix="NVIDIA_SAGEMAKER_STT", + include_params=["endpoint_name", "region"], + ), ServiceDefinition( value="openai_stt", label="OpenAI (Whisper)", @@ -845,6 +853,15 @@ class ServiceRegistry: include_params=["api_key"], settings_params=["voice"], ), + ServiceDefinition( + value="nvidia_sagemaker_tts", + label="NVIDIA SageMaker", + package="pipecat-ai[nvidia,sagemaker]", + class_name=["NvidiaSageMakerTTSService"], + env_prefix="NVIDIA_SAGEMAKER_TTS", + include_params=["endpoint_name", "region"], + settings_params=["voice"], + ), ServiceDefinition( value="openai_tts", label="OpenAI TTS", diff --git a/src/pipecat_cli/templates/client/react-nextjs/package.json.jinja2 b/src/pipecat_cli/templates/client/react-nextjs/package.json.jinja2 index 22987ac..67f406d 100644 --- a/src/pipecat_cli/templates/client/react-nextjs/package.json.jinja2 +++ b/src/pipecat_cli/templates/client/react-nextjs/package.json.jinja2 @@ -13,12 +13,12 @@ "@pipecat-ai/client-react": "^1.4.0", {%- for transport in transports %} {%- if transport.value == 'daily' %} - "@pipecat-ai/daily-transport": "^1.6.1", + "@pipecat-ai/daily-transport": "^1.6.3", {%- elif transport.value == 'smallwebrtc' %} - "@pipecat-ai/small-webrtc-transport": "^1.10.0", + "@pipecat-ai/small-webrtc-transport": "^1.10.1", {%- endif %} {%- endfor %} - "@pipecat-ai/voice-ui-kit": "^0.10.0", + "@pipecat-ai/voice-ui-kit": "^0.11.0", "next": "^16", "react": "^19", "react-dom": "^19" diff --git a/src/pipecat_cli/templates/client/react-vite/package.json.jinja2 b/src/pipecat_cli/templates/client/react-vite/package.json.jinja2 index 76f395b..2c5a737 100644 --- a/src/pipecat_cli/templates/client/react-vite/package.json.jinja2 +++ b/src/pipecat_cli/templates/client/react-vite/package.json.jinja2 @@ -14,12 +14,12 @@ "@pipecat-ai/client-react": "^1.4.0", {%- for transport in transports %} {%- if transport.value == 'daily' %} - "@pipecat-ai/daily-transport": "^1.6.1", + "@pipecat-ai/daily-transport": "^1.6.3", {%- elif transport.value == 'smallwebrtc' %} - "@pipecat-ai/small-webrtc-transport": "^1.10.0", + "@pipecat-ai/small-webrtc-transport": "^1.10.1", {%- endif %} {%- endfor %} - "@pipecat-ai/voice-ui-kit": "^0.10.0", + "@pipecat-ai/voice-ui-kit": "^0.11.0", "react": "^19", "react-dom": "^19" }, diff --git a/src/pipecat_cli/templates/client/vanilla-js-vite/package.json.jinja2 b/src/pipecat_cli/templates/client/vanilla-js-vite/package.json.jinja2 index afe3730..38eb2d1 100644 --- a/src/pipecat_cli/templates/client/vanilla-js-vite/package.json.jinja2 +++ b/src/pipecat_cli/templates/client/vanilla-js-vite/package.json.jinja2 @@ -12,9 +12,9 @@ "@pipecat-ai/client-js": "^1.8.0" {%- for transport in transports -%} {%- if transport.value == 'daily' %}, - "@pipecat-ai/daily-transport": "^1.6.1" + "@pipecat-ai/daily-transport": "^1.6.3" {%- elif transport.value == 'smallwebrtc' %}, - "@pipecat-ai/small-webrtc-transport": "^1.10.0" + "@pipecat-ai/small-webrtc-transport": "^1.10.1" {%- endif %} {%- endfor %} }, diff --git a/src/pipecat_cli/templates/server/env.example.jinja2 b/src/pipecat_cli/templates/server/env.example.jinja2 index 0bf7719..4d41832 100644 --- a/src/pipecat_cli/templates/server/env.example.jinja2 +++ b/src/pipecat_cli/templates/server/env.example.jinja2 @@ -197,6 +197,19 @@ GROQ_VOICE_ID= # "autumn" NVIDIA_API_KEY= NVIDIA_MODEL= +{% endif %} +{% if stt_service == 'nvidia_sagemaker_stt' %} +# NVIDIA SageMaker (STT) +NVIDIA_SAGEMAKER_STT_ENDPOINT_NAME= +NVIDIA_SAGEMAKER_STT_REGION= + +{% endif %} +{% if tts_service == 'nvidia_sagemaker_tts' %} +# NVIDIA SageMaker (TTS) +NVIDIA_SAGEMAKER_TTS_ENDPOINT_NAME= +NVIDIA_SAGEMAKER_TTS_REGION= +NVIDIA_SAGEMAKER_TTS_VOICE_ID= # "Magpie-Multilingual.EN-US.Isabella" + {% endif %} {% if stt_service == 'openai_stt' or stt_service == 'openai_realtime_stt' or llm_service == 'openai_llm' or llm_service == 'openai_responses_llm' or tts_service == 'openai_tts' or realtime_service == 'openai_realtime' %} # OpenAI (STT/LLM/TTS/Realtime) @@ -427,4 +440,4 @@ TAVUS_REPLICA_ID= SIMLI_API_KEY= SIMLI_FACE_ID= # optional -{% endif %} \ No newline at end of file +{% endif %} diff --git a/src/pipecat_cli/templates/server/pyproject.toml.jinja2 b/src/pipecat_cli/templates/server/pyproject.toml.jinja2 index cdba9b0..a503670 100644 --- a/src/pipecat_cli/templates/server/pyproject.toml.jinja2 +++ b/src/pipecat_cli/templates/server/pyproject.toml.jinja2 @@ -2,7 +2,7 @@ name = "{{ project_name }}" version = "0.1.0" description = "Voice AI bot built with Pipecat" -requires-python = ">=3.10" +requires-python = ">=3.11" dependencies = [ "{{ pipecat_dependency }}", {% if deploy_to_cloud %} diff --git a/uv.lock b/uv.lock index 9a24d2a..da93c34 100644 --- a/uv.lock +++ b/uv.lock @@ -2641,9 +2641,12 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "grpcio" }, { name = "grpcio-tools" }, + { name = "protobuf" }, { name = "websockets" }, ] wheels = [ + { url = "https://files.pythonhosted.org/packages/2e/f9/85f0bf863deed9078f3a25938a9f06206f98bcc39a6541a48cc97143db10/nvidia_riva_client-2.25.1-1-py3-none-any.whl", hash = "sha256:bde1232a8de3fe1561cccf49d3d0e6fe06190b1f0df4ad0ba118b9f5ae5a06aa", size = 55383, upload-time = "2026-04-30T10:27:58.381Z" }, + { url = "https://files.pythonhosted.org/packages/27/c6/eb4acc0cb884c06109ea123d1c7dbb28974c9dddd73a624b1765a89e023e/nvidia_riva_client-2.25.1-2-py3-none-any.whl", hash = "sha256:5657680ab238b5930c07ce9a4a50d642524f25bff4099c1f818baaa8baad94fe", size = 55462, upload-time = "2026-05-06T12:30:02.948Z" }, { url = "https://files.pythonhosted.org/packages/08/3b/b267af66a49c2e80e673b85ccd5484059b141be8031e4a4bb84ea4bcf31f/nvidia_riva_client-2.25.1-py3-none-any.whl", hash = "sha256:07c48c9cc7f3ca04cd988ad6d2205b0bcf3f6f25bb97d76b397e87cc696acc9f", size = 55371, upload-time = "2026-03-25T13:05:57.425Z" }, ] @@ -2919,7 +2922,7 @@ wheels = [ [[package]] name = "pipecat-ai" -version = "1.1.0" +version = "1.2.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "aiofiles" }, @@ -2942,9 +2945,9 @@ dependencies = [ { name = "transformers" }, { name = "wait-for2", marker = "python_full_version < '3.12'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/37/01/e83db0b7e51b13c76579f04ad16167231db1dea9726e43b182ca7324c8c4/pipecat_ai-1.1.0.tar.gz", hash = "sha256:abcb1eda51aac81ed0f236c49581e3ff6afa3d7e1fbce9022645d45b905446a1", size = 11049587, upload-time = "2026-04-27T21:03:48.777Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e2/42/bfed0fc7b74c18ce44728cec8160ba083970b531fe18606f6506670aa299/pipecat_ai-1.2.0.tar.gz", hash = "sha256:9ee206218678fd4422c5a4c6f653fa0e01880d31e51912b536748e8444f8c44d", size = 11119514, upload-time = "2026-05-14T21:49:30.1Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/88/cf/3fa12ae09e891f5485a0f3cf15aa307049a358d9d4d06e1378c04340fc1f/pipecat_ai-1.1.0-py3-none-any.whl", hash = "sha256:74e576a9434477c11f352ca22ad804c5fd52b49b5c3ff6e7f06615f1f8f24573", size = 10711531, upload-time = "2026-04-27T21:03:45.931Z" }, + { url = "https://files.pythonhosted.org/packages/e1/86/74cdda99ba30016be81acba3e1310ee2482010265d11182f1684cea6f6f8/pipecat_ai-1.2.0-py3-none-any.whl", hash = "sha256:a4e2d556dbe79fddb96d47832c5a172c8b1d38cba4acf9cc4a02e539a7100a0d", size = 10770141, upload-time = "2026-05-14T21:49:26.635Z" }, ] [package.optional-dependencies] @@ -3121,7 +3124,7 @@ dev = [ requires-dist = [ { name = "jinja2", specifier = ">=3.1.0,<4" }, { name = "pipecat-ai-tail", marker = "extra == 'tail'", specifier = ">=0.0.5" }, - { name = "pipecatcloud", specifier = ">=0.4.4" }, + { name = "pipecatcloud", specifier = ">=0.7.1" }, { name = "questionary", specifier = ">=2.0.0,<3" }, { name = "rich", specifier = ">=13.0.0,<14" }, { name = "ruff", specifier = ">=0.12.1,<1" }, @@ -3132,7 +3135,7 @@ provides-extras = ["tail"] [package.metadata.requires-dev] dev = [ { name = "build", specifier = "~=1.4.0" }, - { name = "pipecat-ai", extras = ["aic", "anthropic", "assemblyai", "asyncai", "aws", "aws-nova-sonic", "azure", "camb", "cartesia", "cerebras", "daily", "deepseek", "deepgram", "elevenlabs", "fal", "fireworks", "fish", "gladia", "google", "gradium", "groq", "heygen", "hume", "inworld", "kokoro", "lmnt", "mistral", "moondream", "neuphonic", "novita", "nvidia", "openai", "openrouter", "perplexity", "piper", "qwen", "resembleai", "rime", "sagemaker", "sambanova", "sarvam", "silero", "simli", "smallest", "soniox", "speechmatics", "tavus", "together", "ultravox", "webrtc", "websocket", "xai"], specifier = "==1.1.0" }, + { name = "pipecat-ai", extras = ["aic", "anthropic", "assemblyai", "asyncai", "aws", "aws-nova-sonic", "azure", "camb", "cartesia", "cerebras", "daily", "deepseek", "deepgram", "elevenlabs", "fal", "fireworks", "fish", "gladia", "google", "gradium", "groq", "heygen", "hume", "inworld", "kokoro", "lmnt", "mistral", "moondream", "neuphonic", "novita", "nvidia", "openai", "openrouter", "perplexity", "piper", "qwen", "resembleai", "rime", "sagemaker", "sambanova", "sarvam", "silero", "simli", "smallest", "soniox", "speechmatics", "tavus", "together", "ultravox", "webrtc", "websocket", "xai"], specifier = "==1.2.0" }, { name = "pre-commit", specifier = "~=4.5.1" }, { name = "pytest", specifier = ">=9.0.0,<10" }, { name = "pytest-cov", specifier = "~=7.0.0" }, @@ -3159,7 +3162,7 @@ wheels = [ [[package]] name = "pipecatcloud" -version = "0.6.0" +version = "0.7.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "aiohttp" }, @@ -3172,9 +3175,9 @@ dependencies = [ { name = "typer" }, { name = "uvicorn" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/19/5b/2c2fcc3bee0123977c973152bbefa46785c2409818ab31873ed8c71f2c8b/pipecatcloud-0.6.0.tar.gz", hash = "sha256:9e9d01f638da23c0a9fb203591a5df0d95d7b52f3b27799024fc323b28905087", size = 257104, upload-time = "2026-04-22T13:33:59.443Z" } +sdist = { url = "https://files.pythonhosted.org/packages/7a/02/04303b83b45315bba144e52684425c65ba909d1a271626639d28022f4053/pipecatcloud-0.7.1.tar.gz", hash = "sha256:d906348ddea1c069682e6991ca068e1599c9ef9c2f4323fb67f09af8ce303eb6", size = 262044, upload-time = "2026-05-14T15:56:48.583Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/49/5f/cb3b89f08fc56ed0fc99866eafe12d33618f74865115ccc65deda5f3fd19/pipecatcloud-0.6.0-py3-none-any.whl", hash = "sha256:2b21cc1e0273b71c2442d0fa6703511f6d24485f76cc5bc512f65d96b9ec5500", size = 78460, upload-time = "2026-04-22T13:33:57.958Z" }, + { url = "https://files.pythonhosted.org/packages/ba/18/1fa2848fc9b24d7fdfad66b8a7c0e83222d0213c997cc7d95178098aef3d/pipecatcloud-0.7.1-py3-none-any.whl", hash = "sha256:c8ce282d9f34f6d6e8db59a461ec72ed78b74217f2ca09c5381ad2db4fdcbb46", size = 79155, upload-time = "2026-05-14T15:56:46.903Z" }, ] [[package]] @@ -3362,17 +3365,17 @@ wheels = [ [[package]] name = "protobuf" -version = "6.33.6" +version = "6.33.5" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/66/70/e908e9c5e52ef7c3a6c7902c9dfbb34c7e29c25d2f81ade3856445fd5c94/protobuf-6.33.6.tar.gz", hash = "sha256:a6768d25248312c297558af96a9f9c929e8c4cee0659cb07e780731095f38135", size = 444531, upload-time = "2026-03-18T19:05:00.988Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ba/25/7c72c307aafc96fa87062aa6291d9f7c94836e43214d43722e86037aac02/protobuf-6.33.5.tar.gz", hash = "sha256:6ddcac2a081f8b7b9642c09406bc6a4290128fce5f471cddd165960bb9119e5c", size = 444465, upload-time = "2026-01-29T21:51:33.494Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fc/9f/2f509339e89cfa6f6a4c4ff50438db9ca488dec341f7e454adad60150b00/protobuf-6.33.6-cp310-abi3-win32.whl", hash = "sha256:7d29d9b65f8afef196f8334e80d6bc1d5d4adedb449971fefd3723824e6e77d3", size = 425739, upload-time = "2026-03-18T19:04:48.373Z" }, - { url = "https://files.pythonhosted.org/packages/76/5d/683efcd4798e0030c1bab27374fd13a89f7c2515fb1f3123efdfaa5eab57/protobuf-6.33.6-cp310-abi3-win_amd64.whl", hash = "sha256:0cd27b587afca21b7cfa59a74dcbd48a50f0a6400cfb59391340ad729d91d326", size = 437089, upload-time = "2026-03-18T19:04:50.381Z" }, - { url = "https://files.pythonhosted.org/packages/5c/01/a3c3ed5cd186f39e7880f8303cc51385a198a81469d53d0fdecf1f64d929/protobuf-6.33.6-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:9720e6961b251bde64edfdab7d500725a2af5280f3f4c87e57c0208376aa8c3a", size = 427737, upload-time = "2026-03-18T19:04:51.866Z" }, - { url = "https://files.pythonhosted.org/packages/ee/90/b3c01fdec7d2f627b3a6884243ba328c1217ed2d978def5c12dc50d328a3/protobuf-6.33.6-cp39-abi3-manylinux2014_aarch64.whl", hash = "sha256:e2afbae9b8e1825e3529f88d514754e094278bb95eadc0e199751cdd9a2e82a2", size = 324610, upload-time = "2026-03-18T19:04:53.096Z" }, - { url = "https://files.pythonhosted.org/packages/9b/ca/25afc144934014700c52e05103c2421997482d561f3101ff352e1292fb81/protobuf-6.33.6-cp39-abi3-manylinux2014_s390x.whl", hash = "sha256:c96c37eec15086b79762ed265d59ab204dabc53056e3443e702d2681f4b39ce3", size = 339381, upload-time = "2026-03-18T19:04:54.616Z" }, - { url = "https://files.pythonhosted.org/packages/16/92/d1e32e3e0d894fe00b15ce28ad4944ab692713f2e7f0a99787405e43533a/protobuf-6.33.6-cp39-abi3-manylinux2014_x86_64.whl", hash = "sha256:e9db7e292e0ab79dd108d7f1a94fe31601ce1ee3f7b79e0692043423020b0593", size = 323436, upload-time = "2026-03-18T19:04:55.768Z" }, - { url = "https://files.pythonhosted.org/packages/c4/72/02445137af02769918a93807b2b7890047c32bfb9f90371cbc12688819eb/protobuf-6.33.6-py3-none-any.whl", hash = "sha256:77179e006c476e69bf8e8ce866640091ec42e1beb80b213c3900006ecfba6901", size = 170656, upload-time = "2026-03-18T19:04:59.826Z" }, + { url = "https://files.pythonhosted.org/packages/b1/79/af92d0a8369732b027e6d6084251dd8e782c685c72da161bd4a2e00fbabb/protobuf-6.33.5-cp310-abi3-win32.whl", hash = "sha256:d71b040839446bac0f4d162e758bea99c8251161dae9d0983a3b88dee345153b", size = 425769, upload-time = "2026-01-29T21:51:21.751Z" }, + { url = "https://files.pythonhosted.org/packages/55/75/bb9bc917d10e9ee13dee8607eb9ab963b7cf8be607c46e7862c748aa2af7/protobuf-6.33.5-cp310-abi3-win_amd64.whl", hash = "sha256:3093804752167bcab3998bec9f1048baae6e29505adaf1afd14a37bddede533c", size = 437118, upload-time = "2026-01-29T21:51:24.022Z" }, + { url = "https://files.pythonhosted.org/packages/a2/6b/e48dfc1191bc5b52950246275bf4089773e91cb5ba3592621723cdddca62/protobuf-6.33.5-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:a5cb85982d95d906df1e2210e58f8e4f1e3cdc088e52c921a041f9c9a0386de5", size = 427766, upload-time = "2026-01-29T21:51:25.413Z" }, + { url = "https://files.pythonhosted.org/packages/4e/b1/c79468184310de09d75095ed1314b839eb2f72df71097db9d1404a1b2717/protobuf-6.33.5-cp39-abi3-manylinux2014_aarch64.whl", hash = "sha256:9b71e0281f36f179d00cbcb119cb19dec4d14a81393e5ea220f64b286173e190", size = 324638, upload-time = "2026-01-29T21:51:26.423Z" }, + { url = "https://files.pythonhosted.org/packages/c5/f5/65d838092fd01c44d16037953fd4c2cc851e783de9b8f02b27ec4ffd906f/protobuf-6.33.5-cp39-abi3-manylinux2014_s390x.whl", hash = "sha256:8afa18e1d6d20af15b417e728e9f60f3aa108ee76f23c3b2c07a2c3b546d3afd", size = 339411, upload-time = "2026-01-29T21:51:27.446Z" }, + { url = "https://files.pythonhosted.org/packages/9b/53/a9443aa3ca9ba8724fdfa02dd1887c1bcd8e89556b715cfbacca6b63dbec/protobuf-6.33.5-cp39-abi3-manylinux2014_x86_64.whl", hash = "sha256:cbf16ba3350fb7b889fca858fb215967792dc125b35c7976ca4818bee3521cf0", size = 323465, upload-time = "2026-01-29T21:51:28.925Z" }, + { url = "https://files.pythonhosted.org/packages/57/bf/2086963c69bdac3d7cff1cc7ff79b8ce5ea0bec6797a017e1be338a46248/protobuf-6.33.5-py3-none-any.whl", hash = "sha256:69915a973dd0f60f31a08b8318b73eab2bd6a392c79184b3612226b0a3f8ec02", size = 170687, upload-time = "2026-01-29T21:51:32.557Z" }, ] [[package]]