From 403d02aa2b489277c64b536be020c7adbca16b52 Mon Sep 17 00:00:00 2001 From: fern-api <115122769+fern-api[bot]@users.noreply.github.com> Date: Thu, 31 Oct 2024 16:51:40 +0000 Subject: [PATCH] SDK regeneration --- .../definition/empathic-voice/__package__.yml | 301 +++++++++++++++++- .../definition/empathic-voice/chatGroups.yml | 48 +-- .mock/definition/empathic-voice/chats.yml | 38 +-- poetry.lock | 255 ++++++++------- pyproject.toml | 2 +- reference.md | 37 ++- src/hume/empathic_voice/__init__.py | 16 + src/hume/empathic_voice/chat_groups/client.py | 32 +- src/hume/empathic_voice/chats/client.py | 27 +- src/hume/empathic_voice/configs/client.py | 4 + src/hume/empathic_voice/types/__init__.py | 18 ++ .../types/posted_language_model.py | 3 +- .../posted_language_model_model_resource.py | 35 ++ .../types/posted_timeout_specs.py | 4 +- .../types/posted_timeout_specs_inactivity.py | 2 +- .../posted_timeout_specs_max_duration.py | 2 +- src/hume/empathic_voice/types/posted_voice.py | 7 +- .../types/posted_voice_provider.py | 5 + .../types/return_chat_audio_reconstruction.py | 67 ++++ ...return_chat_audio_reconstruction_status.py | 7 + ..._chat_group_paged_audio_reconstructions.py | 71 +++++ ...io_reconstructions_pagination_direction.py | 5 + .../types/return_language_model.py | 3 +- .../return_language_model_model_resource.py | 35 ++ .../types/return_timeout_specs.py | 4 +- src/hume/empathic_voice/types/return_voice.py | 7 +- .../types/return_voice_provider.py | 5 + tests/empathic_voice/test_chat_groups.py | 70 ++-- tests/empathic_voice/test_chats.py | 63 +--- tests/empathic_voice/test_configs.py | 8 +- 30 files changed, 863 insertions(+), 318 deletions(-) create mode 100644 src/hume/empathic_voice/types/posted_language_model_model_resource.py create mode 100644 src/hume/empathic_voice/types/posted_voice_provider.py create mode 100644 src/hume/empathic_voice/types/return_chat_audio_reconstruction.py create mode 100644 src/hume/empathic_voice/types/return_chat_audio_reconstruction_status.py create mode 100644 src/hume/empathic_voice/types/return_chat_group_paged_audio_reconstructions.py create mode 100644 src/hume/empathic_voice/types/return_chat_group_paged_audio_reconstructions_pagination_direction.py create mode 100644 src/hume/empathic_voice/types/return_language_model_model_resource.py create mode 100644 src/hume/empathic_voice/types/return_voice_provider.py diff --git a/.mock/definition/empathic-voice/__package__.yml b/.mock/definition/empathic-voice/__package__.yml index a967a3cd..1499fe2a 100644 --- a/.mock/definition/empathic-voice/__package__.yml +++ b/.mock/definition/empathic-voice/__package__.yml @@ -648,6 +648,62 @@ types: docs: The provider of the supplemental language model. source: openapi: stenographer-openapi.json + PostedLanguageModelModelResource: + enum: + - value: claude-3-5-sonnet-latest + name: Claude35SonnetLatest + - value: claude-3-5-sonnet-20240620 + name: Claude35Sonnet20240620 + - value: claude-3-opus-20240229 + name: Claude3Opus20240229 + - value: claude-3-sonnet-20240229 + name: Claude3Sonnet20240229 + - value: claude-3-haiku-20240307 + name: Claude3Haiku20240307 + - value: claude-2.1 + name: Claude21 + - value: claude-instant-1.2 + name: ClaudeInstant12 + - value: gemini-1.5-pro + name: Gemini15Pro + - value: gemini-1.5-flash + name: Gemini15Flash + - value: gemini-1.5-pro-002 + name: Gemini15Pro002 + - value: gemini-1.5-flash-002 + name: Gemini15Flash002 + - value: gpt-4-turbo-preview + name: Gpt4TurboPreview + - value: gpt-3.5-turbo-0125 + name: Gpt35Turbo0125 + - value: gpt-3.5-turbo + name: Gpt35Turbo + - value: gpt-4o + name: Gpt4O + - value: gpt-4o-mini + name: Gpt4OMini + - value: gemma-7b-it + name: Gemma7BIt + - value: llama3-8b-8192 + name: Llama38B8192 + - value: llama3-70b-8192 + name: Llama370B8192 + - value: llama-3.1-70b-versatile + name: Llama3170BVersatile + - value: llama-3.1-8b-instant + name: Llama318BInstant + - value: accounts/fireworks/models/mixtral-8x7b-instruct + name: AccountsFireworksModelsMixtral8X7BInstruct + - value: accounts/fireworks/models/llama-v3p1-405b-instruct + name: AccountsFireworksModelsLlamaV3P1405BInstruct + - value: accounts/fireworks/models/llama-v3p1-70b-instruct + name: AccountsFireworksModelsLlamaV3P170BInstruct + - value: accounts/fireworks/models/llama-v3p1-8b-instruct + name: AccountsFireworksModelsLlamaV3P18BInstruct + - ellm + docs: String that specifies the language model to use with `model_provider`. + source: + openapi: stenographer-openapi.json PostedLanguageModel: docs: A LanguageModel to be posted to the server properties: @@ -655,7 +711,7 @@ types: type: optional docs: The provider of the supplemental language model. model_resource: - type: optional + type: optional docs: String that specifies the language model to use with `model_provider`. temperature: type: optional @@ -686,7 +742,8 @@ types: seconds (10 minutes). - Accepts a minimum value of 1 second and a maximum value of 1,800 seconds. + Accepts a minimum value of 30 seconds and a maximum value of 1,800 + seconds. properties: enabled: type: boolean @@ -712,7 +769,8 @@ types: seconds (30 minutes). - Accepts a minimum value of 1 second and a maximum value of 1,800 seconds. + Accepts a minimum value of 30 seconds and a maximum value of 1,800 + seconds. properties: enabled: type: boolean @@ -749,7 +807,7 @@ types: is 600 seconds (10 minutes). - Accepts a minimum value of 1 second and a maximum value of 1,800 + Accepts a minimum value of 30 seconds and a maximum value of 1,800 seconds. max_duration: type: optional @@ -759,7 +817,7 @@ types: is 1,800 seconds (30 minutes). - Accepts a minimum value of 1 second and a maximum value of 1,800 + Accepts a minimum value of 30 seconds and a maximum value of 1,800 seconds. source: openapi: stenographer-openapi.json @@ -784,14 +842,23 @@ types: of the Tool. Each update to the Tool increments its version number. source: openapi: stenographer-openapi.json + PostedVoiceProvider: + enum: + - HUME_AI + - CUSTOM_VOICE + docs: >- + The provider of the voice to use. Supported values are `HUME_AI` and + `CUSTOM_VOICE`. + source: + openapi: stenographer-openapi.json PostedVoice: docs: A Voice specification posted to the server properties: provider: - type: literal<"HUME_AI"> + type: PostedVoiceProvider docs: >- - The provider of the voice to use. Currently, only `HUME_AI` is - supported as the voice provider. + The provider of the voice to use. Supported values are `HUME_AI` and + `CUSTOM_VOICE`. name: type: optional docs: >- @@ -999,6 +1066,62 @@ types: docs: The provider of the supplemental language model. source: openapi: stenographer-openapi.json + ReturnLanguageModelModelResource: + enum: + - value: claude-3-5-sonnet-latest + name: Claude35SonnetLatest + - value: claude-3-5-sonnet-20240620 + name: Claude35Sonnet20240620 + - value: claude-3-opus-20240229 + name: Claude3Opus20240229 + - value: claude-3-sonnet-20240229 + name: Claude3Sonnet20240229 + - value: claude-3-haiku-20240307 + name: Claude3Haiku20240307 + - value: claude-2.1 + name: Claude21 + - value: claude-instant-1.2 + name: ClaudeInstant12 + - value: gemini-1.5-pro + name: Gemini15Pro + - value: gemini-1.5-flash + name: Gemini15Flash + - value: gemini-1.5-pro-002 + name: Gemini15Pro002 + - value: gemini-1.5-flash-002 + name: Gemini15Flash002 + - value: gpt-4-turbo-preview + name: Gpt4TurboPreview + - value: gpt-3.5-turbo-0125 + name: Gpt35Turbo0125 + - value: gpt-3.5-turbo + name: Gpt35Turbo + - value: gpt-4o + name: Gpt4O + - value: gpt-4o-mini + name: Gpt4OMini + - value: gemma-7b-it + name: Gemma7BIt + - value: llama3-8b-8192 + name: Llama38B8192 + - value: llama3-70b-8192 + name: Llama370B8192 + - value: llama-3.1-70b-versatile + name: Llama3170BVersatile + - value: llama-3.1-8b-instant + name: Llama318BInstant + - value: accounts/fireworks/models/mixtral-8x7b-instruct + name: AccountsFireworksModelsMixtral8X7BInstruct + - value: accounts/fireworks/models/llama-v3p1-405b-instruct + name: AccountsFireworksModelsLlamaV3P1405BInstruct + - value: accounts/fireworks/models/llama-v3p1-70b-instruct + name: AccountsFireworksModelsLlamaV3P170BInstruct + - value: accounts/fireworks/models/llama-v3p1-8b-instruct + name: AccountsFireworksModelsLlamaV3P18BInstruct + - ellm + docs: String that specifies the language model to use with `model_provider`. + source: + openapi: stenographer-openapi.json ReturnLanguageModel: docs: A specific LanguageModel properties: @@ -1006,7 +1129,7 @@ types: type: optional docs: The provider of the supplemental language model. model_resource: - type: optional + type: optional docs: String that specifies the language model to use with `model_provider`. temperature: type: optional @@ -1057,7 +1180,7 @@ types: is 600 seconds (10 minutes). - Accepts a minimum value of 1 second and a maximum value of 1,800 + Accepts a minimum value of 30 seconds and a maximum value of 1,800 seconds. max_duration: type: ReturnTimeoutSpec @@ -1067,18 +1190,27 @@ types: is 1,800 seconds (30 minutes). - Accepts a minimum value of 1 second and a maximum value of 1,800 + Accepts a minimum value of 30 seconds and a maximum value of 1,800 seconds. source: openapi: stenographer-openapi.json + ReturnVoiceProvider: + enum: + - HUME_AI + - CUSTOM_VOICE + docs: >- + The provider of the voice to use. Supported values are `HUME_AI` and + `CUSTOM_VOICE`. + source: + openapi: stenographer-openapi.json ReturnVoice: docs: A specific voice specification properties: provider: - type: literal<"HUME_AI"> + type: ReturnVoiceProvider docs: >- - The provider of the voice to use. Currently, only `HUME_AI` is - supported as the voice provider. + The provider of the voice to use. Supported values are `HUME_AI` and + `CUSTOM_VOICE`. name: type: optional docs: >- @@ -1632,6 +1764,83 @@ types: config: optional source: openapi: stenographer-openapi.json + ReturnChatAudioReconstructionStatus: + enum: + - QUEUED + - IN_PROGRESS + - COMPLETE + - ERROR + - CANCELLED + docs: >- + Indicates the current state of the audio reconstruction job. There are + five possible statuses: + + + - `QUEUED`: The reconstruction job is waiting to be processed. + + + - `IN_PROGRESS`: The reconstruction is currently being processed. + + + - `COMPLETE`: The audio reconstruction is finished and ready for download. + + + - `ERROR`: An error occurred during the reconstruction process. + + + - `CANCELED`: The reconstruction job has been canceled. + source: + openapi: stenographer-openapi.json + ReturnChatAudioReconstruction: + docs: >- + List of chat audio reconstructions returned for the specified page number + and page size. + properties: + id: + type: string + docs: Identifier for the chat. Formatted as a UUID. + user_id: + type: string + docs: Identifier for the user that owns this chat. Formatted as a UUID. + status: + type: ReturnChatAudioReconstructionStatus + docs: >- + Indicates the current state of the audio reconstruction job. There are + five possible statuses: + + + - `QUEUED`: The reconstruction job is waiting to be processed. + + + - `IN_PROGRESS`: The reconstruction is currently being processed. + + + - `COMPLETE`: The audio reconstruction is finished and ready for + download. + + + - `ERROR`: An error occurred during the reconstruction process. + + + - `CANCELED`: The reconstruction job has been canceled. + filename: + type: optional + docs: Name of the chat audio reconstruction file. + modified_at: + type: optional + docs: >- + The timestamp of the most recent status change for this audio + reconstruction, formatted milliseconds since the Unix epoch. + signed_audio_url: + type: optional + docs: Signed URL used to download the chat audio reconstruction file. + signed_url_expiration_timestamp_millis: + type: optional + docs: >- + The timestamp when the signed URL will expire, formatted as a Unix + epoch milliseconds. + source: + openapi: stenographer-openapi.json ReturnActiveChatCount: docs: A description of current chat chat sessions for a user properties: @@ -1891,6 +2100,70 @@ types: type: list source: openapi: stenographer-openapi.json + ReturnChatGroupPagedAudioReconstructionsPaginationDirection: + enum: + - ASC + - DESC + docs: >- + Indicates the order in which the paginated results are presented, based on + their creation date. + + + It shows `ASC` for ascending order (chronological, with the oldest records + first) or `DESC` for descending order (reverse-chronological, with the + newest records first). This value corresponds to the `ascending_order` + query parameter used in the request. + source: + openapi: stenographer-openapi.json + ReturnChatGroupPagedAudioReconstructions: + docs: A paginated list of chat reconstructions for a particular chatgroup + properties: + id: + type: string + docs: Identifier for the chat group. Formatted as a UUID. + user_id: + type: string + docs: Identifier for the user that owns this chat. Formatted as a UUID. + num_chats: + type: integer + docs: Total number of chats in this chatgroup + page_number: + type: integer + docs: >- + The page number of the returned list. + + + This value corresponds to the `page_number` parameter specified in the + request. Pagination uses zero-based indexing. + page_size: + type: integer + docs: >- + The maximum number of items returned per page. + + + This value corresponds to the `page_size` parameter specified in the + request. + total_pages: + type: integer + docs: The total number of pages in the collection. + pagination_direction: + type: ReturnChatGroupPagedAudioReconstructionsPaginationDirection + docs: >- + Indicates the order in which the paginated results are presented, + based on their creation date. + + + It shows `ASC` for ascending order (chronological, with the oldest + records first) or `DESC` for descending order (reverse-chronological, + with the newest records first). This value corresponds to the + `ascending_order` query parameter used in the request. + audio_reconstructions_page: + docs: >- + List of chat audio reconstructions returned for the specified page + number and page size. + type: list + source: + openapi: stenographer-openapi.json PostedPromptSpec: docs: A Prompt associated with this Config. properties: diff --git a/.mock/definition/empathic-voice/chatGroups.yml b/.mock/definition/empathic-voice/chatGroups.yml index 81454a0e..1e71a6a4 100644 --- a/.mock/definition/empathic-voice/chatGroups.yml +++ b/.mock/definition/empathic-voice/chatGroups.yml @@ -526,6 +526,10 @@ service: path: /v0/evi/chat_groups/{id}/audio method: GET auth: true + docs: >- + Fetches a paginated list of audio for each **Chat** within the specified + **Chat Group**. For more details, see our guide on audio reconstruction + [here](/docs/empathic-voice-interface-evi/faq#can-i-access-the-audio-of-previous-conversations-with-evi). path-parameters: id: type: string @@ -563,35 +567,33 @@ service: true. response: docs: Success - type: root.ReturnChatPagedEvents + type: root.ReturnChatGroupPagedAudioReconstructions errors: - root.BadRequestError examples: - path-parameters: - id: id + id: 369846cf-6ad5-404d-905e-a8acb5cdfc78 + query-parameters: + page_number: 0 + page_size: 10 + ascending_order: true response: body: - id: id - chat_group_id: chat_group_id - status: ACTIVE - start_timestamp: 1000000 - end_timestamp: 1000000 - pagination_direction: ASC - events_page: - - id: id - chat_id: chat_id - timestamp: 1000000 - role: USER - type: SYSTEM_PROMPT - message_text: message_text - emotion_features: emotion_features - metadata: metadata - metadata: metadata - page_number: 1 - page_size: 1 + id: 369846cf-6ad5-404d-905e-a8acb5cdfc78 + user_id: e6235940-cfda-3988-9147-ff531627cf42 + num_chats: 1 + page_number: 0 + page_size: 10 total_pages: 1 - config: - id: id - version: 1 + pagination_direction: ASC + audio_reconstructions_page: + - id: 470a49f6-1dec-4afe-8b61-035d3b2d63b0 + user_id: e6235940-cfda-3988-9147-ff531627cf42 + status: COMPLETE + filename: >- + e6235940-cfda-3988-9147-ff531627cf42/470a49f6-1dec-4afe-8b61-035d3b2d63b0/reconstructed_audio.mp4 + modified_at: 1729875432555 + signed_audio_url: https://storage.googleapis.com/...etc. + signed_url_expiration_timestamp_millis: 1730232816964 source: openapi: stenographer-openapi.json diff --git a/.mock/definition/empathic-voice/chats.yml b/.mock/definition/empathic-voice/chats.yml index 800d80f6..ea22eb90 100644 --- a/.mock/definition/empathic-voice/chats.yml +++ b/.mock/definition/empathic-voice/chats.yml @@ -459,6 +459,10 @@ service: path: /v0/evi/chats/{id}/audio method: GET auth: true + docs: >- + Fetches the audio of a previous **Chat**. For more details, see our + guide on audio reconstruction + [here](/docs/empathic-voice-interface-evi/faq#can-i-access-the-audio-of-previous-conversations-with-evi). path-parameters: id: type: string @@ -466,35 +470,21 @@ service: display-name: Get chat audio response: docs: Success - type: root.ReturnChatPagedEvents + type: root.ReturnChatAudioReconstruction errors: - root.BadRequestError examples: - path-parameters: - id: id + id: 470a49f6-1dec-4afe-8b61-035d3b2d63b0 response: body: - id: id - chat_group_id: chat_group_id - status: ACTIVE - start_timestamp: 1000000 - end_timestamp: 1000000 - pagination_direction: ASC - events_page: - - id: id - chat_id: chat_id - timestamp: 1000000 - role: USER - type: SYSTEM_PROMPT - message_text: message_text - emotion_features: emotion_features - metadata: metadata - metadata: metadata - page_number: 1 - page_size: 1 - total_pages: 1 - config: - id: id - version: 1 + id: 470a49f6-1dec-4afe-8b61-035d3b2d63b0 + user_id: e6235940-cfda-3988-9147-ff531627cf42 + status: COMPLETE + filename: >- + e6235940-cfda-3988-9147-ff531627cf42/470a49f6-1dec-4afe-8b61-035d3b2d63b0/reconstructed_audio.mp4 + modified_at: 1729875432555 + signed_audio_url: https://storage.googleapis.com/...etc. + signed_url_expiration_timestamp_millis: 1730232816964 source: openapi: stenographer-openapi.json diff --git a/poetry.lock b/poetry.lock index 4231d894..9929e899 100644 --- a/poetry.lock +++ b/poetry.lock @@ -238,21 +238,20 @@ lxml = ["lxml"] [[package]] name = "bleach" -version = "6.1.0" +version = "6.2.0" description = "An easy safelist-based HTML-sanitizing tool." optional = true -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "bleach-6.1.0-py3-none-any.whl", hash = "sha256:3225f354cfc436b9789c66c4ee030194bee0568fbf9cbdad3bc8b5c26c5f12b6"}, - {file = "bleach-6.1.0.tar.gz", hash = "sha256:0a31f1837963c41d46bbf1331b8778e1308ea0791db03cc4e7357b97cf42a8fe"}, + {file = "bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e"}, + {file = "bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f"}, ] [package.dependencies] -six = ">=1.9.0" webencodings = "*" [package.extras] -css = ["tinycss2 (>=1.1.0,<1.3)"] +css = ["tinycss2 (>=1.1.0,<1.5)"] [[package]] name = "certifi" @@ -1227,13 +1226,13 @@ test = ["jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-jupyter[server] (> [[package]] name = "jupyterlab" -version = "4.2.5" +version = "4.3.0" description = "JupyterLab computational environment" optional = true python-versions = ">=3.8" files = [ - {file = "jupyterlab-4.2.5-py3-none-any.whl", hash = "sha256:73b6e0775d41a9fee7ee756c80f58a6bed4040869ccc21411dc559818874d321"}, - {file = "jupyterlab-4.2.5.tar.gz", hash = "sha256:ae7f3a1b8cb88b4f55009ce79fa7c06f99d70cd63601ee4aa91815d054f46f75"}, + {file = "jupyterlab-4.3.0-py3-none-any.whl", hash = "sha256:f67e1095ad61ae04349024f0b40345062ab108a0c6998d9810fec6a3c1a70cd5"}, + {file = "jupyterlab-4.3.0.tar.gz", hash = "sha256:7c6835cbf8df0af0ec8a39332e85ff11693fb9a468205343b4fc0bfbc74817e5"}, ] [package.dependencies] @@ -1254,9 +1253,9 @@ tornado = ">=6.2.0" traitlets = "*" [package.extras] -dev = ["build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.3.5)"] -docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-jupyter", "sphinx (>=1.8,<7.3.0)", "sphinx-copybutton"] -docs-screenshots = ["altair (==5.3.0)", "ipython (==8.16.1)", "ipywidgets (==8.1.2)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.1.post2)", "matplotlib (==3.8.3)", "nbconvert (>=7.0.0)", "pandas (==2.2.1)", "scipy (==1.12.0)", "vega-datasets (==0.9.0)"] +dev = ["build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.6.9)"] +docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-jupyter", "sphinx (>=1.8,<8.1.0)", "sphinx-copybutton"] +docs-screenshots = ["altair (==5.4.1)", "ipython (==8.16.1)", "ipywidgets (==8.1.5)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.2.post3)", "matplotlib (==3.9.2)", "nbconvert (>=7.0.0)", "pandas (==2.2.3)", "scipy (==1.14.1)", "vega-datasets (==0.9.0)"] test = ["coverage", "pytest (>=7.0)", "pytest-check-links (>=0.7)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter (>=0.5.3)", "pytest-timeout", "pytest-tornasync", "requests", "requests-cache", "virtualenv"] upgrade-extension = ["copier (>=9,<10)", "jinja2-time (<0.3)", "pydantic (<3.0)", "pyyaml-include (<3.0)", "tomli-w (<2.0)"] @@ -1611,26 +1610,26 @@ files = [ [[package]] name = "notebook" -version = "7.2.2" +version = "7.0.7" description = "Jupyter Notebook - A web-based notebook environment for interactive computing" optional = true python-versions = ">=3.8" files = [ - {file = "notebook-7.2.2-py3-none-any.whl", hash = "sha256:c89264081f671bc02eec0ed470a627ed791b9156cad9285226b31611d3e9fe1c"}, - {file = "notebook-7.2.2.tar.gz", hash = "sha256:2ef07d4220421623ad3fe88118d687bc0450055570cdd160814a59cf3a1c516e"}, + {file = "notebook-7.0.7-py3-none-any.whl", hash = "sha256:289b606d7e173f75a18beb1406ef411b43f97f7a9c55ba03efa3622905a62346"}, + {file = "notebook-7.0.7.tar.gz", hash = "sha256:3bcff00c17b3ac142ef5f436d50637d936b274cfa0b41f6ac0175363de9b4e09"}, ] [package.dependencies] jupyter-server = ">=2.4.0,<3" -jupyterlab = ">=4.2.0,<4.3" -jupyterlab-server = ">=2.27.1,<3" +jupyterlab = ">=4.0.2,<5" +jupyterlab-server = ">=2.22.1,<3" notebook-shim = ">=0.2,<0.3" tornado = ">=6.2.0" [package.extras] dev = ["hatch", "pre-commit"] docs = ["myst-parser", "nbsphinx", "pydata-sphinx-theme", "sphinx (>=1.3.6)", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] -test = ["importlib-resources (>=5.0)", "ipykernel", "jupyter-server[test] (>=2.4.0,<3)", "jupyterlab-server[test] (>=2.27.1,<3)", "nbval", "pytest (>=7.0)", "pytest-console-scripts", "pytest-timeout", "pytest-tornasync", "requests"] +test = ["importlib-resources (>=5.0)", "ipykernel", "jupyter-server[test] (>=2.4.0,<3)", "jupyterlab-server[test] (>=2.22.1,<3)", "nbval", "pytest (>=7.0)", "pytest-console-scripts", "pytest-timeout", "pytest-tornasync", "requests"] [[package]] name = "notebook-shim" @@ -2416,114 +2415,114 @@ files = [ [[package]] name = "rpds-py" -version = "0.20.0" +version = "0.20.1" description = "Python bindings to Rust's persistent data structures (rpds)" optional = false python-versions = ">=3.8" files = [ - {file = "rpds_py-0.20.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3ad0fda1635f8439cde85c700f964b23ed5fc2d28016b32b9ee5fe30da5c84e2"}, - {file = "rpds_py-0.20.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9bb4a0d90fdb03437c109a17eade42dfbf6190408f29b2744114d11586611d6f"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6377e647bbfd0a0b159fe557f2c6c602c159fc752fa316572f012fc0bf67150"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb851b7df9dda52dc1415ebee12362047ce771fc36914586b2e9fcbd7d293b3e"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1e0f80b739e5a8f54837be5d5c924483996b603d5502bfff79bf33da06164ee2"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5a8c94dad2e45324fc74dce25e1645d4d14df9a4e54a30fa0ae8bad9a63928e3"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8e604fe73ba048c06085beaf51147eaec7df856824bfe7b98657cf436623daf"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:df3de6b7726b52966edf29663e57306b23ef775faf0ac01a3e9f4012a24a4140"}, - {file = "rpds_py-0.20.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cf258ede5bc22a45c8e726b29835b9303c285ab46fc7c3a4cc770736b5304c9f"}, - {file = "rpds_py-0.20.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:55fea87029cded5df854ca7e192ec7bdb7ecd1d9a3f63d5c4eb09148acf4a7ce"}, - {file = "rpds_py-0.20.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ae94bd0b2f02c28e199e9bc51485d0c5601f58780636185660f86bf80c89af94"}, - {file = "rpds_py-0.20.0-cp310-none-win32.whl", hash = "sha256:28527c685f237c05445efec62426d285e47a58fb05ba0090a4340b73ecda6dee"}, - {file = "rpds_py-0.20.0-cp310-none-win_amd64.whl", hash = "sha256:238a2d5b1cad28cdc6ed15faf93a998336eb041c4e440dd7f902528b8891b399"}, - {file = "rpds_py-0.20.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:ac2f4f7a98934c2ed6505aead07b979e6f999389f16b714448fb39bbaa86a489"}, - {file = "rpds_py-0.20.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:220002c1b846db9afd83371d08d239fdc865e8f8c5795bbaec20916a76db3318"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d7919548df3f25374a1f5d01fbcd38dacab338ef5f33e044744b5c36729c8db"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:758406267907b3781beee0f0edfe4a179fbd97c0be2e9b1154d7f0a1279cf8e5"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3d61339e9f84a3f0767b1995adfb171a0d00a1185192718a17af6e124728e0f5"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1259c7b3705ac0a0bd38197565a5d603218591d3f6cee6e614e380b6ba61c6f6"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c1dc0f53856b9cc9a0ccca0a7cc61d3d20a7088201c0937f3f4048c1718a209"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7e60cb630f674a31f0368ed32b2a6b4331b8350d67de53c0359992444b116dd3"}, - {file = "rpds_py-0.20.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:dbe982f38565bb50cb7fb061ebf762c2f254ca3d8c20d4006878766e84266272"}, - {file = "rpds_py-0.20.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:514b3293b64187172bc77c8fb0cdae26981618021053b30d8371c3a902d4d5ad"}, - {file = "rpds_py-0.20.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d0a26ffe9d4dd35e4dfdd1e71f46401cff0181c75ac174711ccff0459135fa58"}, - {file = "rpds_py-0.20.0-cp311-none-win32.whl", hash = "sha256:89c19a494bf3ad08c1da49445cc5d13d8fefc265f48ee7e7556839acdacf69d0"}, - {file = "rpds_py-0.20.0-cp311-none-win_amd64.whl", hash = "sha256:c638144ce971df84650d3ed0096e2ae7af8e62ecbbb7b201c8935c370df00a2c"}, - {file = "rpds_py-0.20.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a84ab91cbe7aab97f7446652d0ed37d35b68a465aeef8fc41932a9d7eee2c1a6"}, - {file = "rpds_py-0.20.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:56e27147a5a4c2c21633ff8475d185734c0e4befd1c989b5b95a5d0db699b21b"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2580b0c34583b85efec8c5c5ec9edf2dfe817330cc882ee972ae650e7b5ef739"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b80d4a7900cf6b66bb9cee5c352b2d708e29e5a37fe9bf784fa97fc11504bf6c"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:50eccbf054e62a7b2209b28dc7a22d6254860209d6753e6b78cfaeb0075d7bee"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:49a8063ea4296b3a7e81a5dfb8f7b2d73f0b1c20c2af401fb0cdf22e14711a96"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea438162a9fcbee3ecf36c23e6c68237479f89f962f82dae83dc15feeceb37e4"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:18d7585c463087bddcfa74c2ba267339f14f2515158ac4db30b1f9cbdb62c8ef"}, - {file = "rpds_py-0.20.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d4c7d1a051eeb39f5c9547e82ea27cbcc28338482242e3e0b7768033cb083821"}, - {file = "rpds_py-0.20.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e4df1e3b3bec320790f699890d41c59d250f6beda159ea3c44c3f5bac1976940"}, - {file = "rpds_py-0.20.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2cf126d33a91ee6eedc7f3197b53e87a2acdac63602c0f03a02dd69e4b138174"}, - {file = "rpds_py-0.20.0-cp312-none-win32.whl", hash = "sha256:8bc7690f7caee50b04a79bf017a8d020c1f48c2a1077ffe172abec59870f1139"}, - {file = "rpds_py-0.20.0-cp312-none-win_amd64.whl", hash = "sha256:0e13e6952ef264c40587d510ad676a988df19adea20444c2b295e536457bc585"}, - {file = "rpds_py-0.20.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:aa9a0521aeca7d4941499a73ad7d4f8ffa3d1affc50b9ea11d992cd7eff18a29"}, - {file = "rpds_py-0.20.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4a1f1d51eccb7e6c32ae89243cb352389228ea62f89cd80823ea7dd1b98e0b91"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a86a9b96070674fc88b6f9f71a97d2c1d3e5165574615d1f9168ecba4cecb24"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6c8ef2ebf76df43f5750b46851ed1cdf8f109d7787ca40035fe19fbdc1acc5a7"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b74b25f024b421d5859d156750ea9a65651793d51b76a2e9238c05c9d5f203a9"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57eb94a8c16ab08fef6404301c38318e2c5a32216bf5de453e2714c964c125c8"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1940dae14e715e2e02dfd5b0f64a52e8374a517a1e531ad9412319dc3ac7879"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d20277fd62e1b992a50c43f13fbe13277a31f8c9f70d59759c88f644d66c619f"}, - {file = "rpds_py-0.20.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:06db23d43f26478303e954c34c75182356ca9aa7797d22c5345b16871ab9c45c"}, - {file = "rpds_py-0.20.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b2a5db5397d82fa847e4c624b0c98fe59d2d9b7cf0ce6de09e4d2e80f8f5b3f2"}, - {file = "rpds_py-0.20.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5a35df9f5548fd79cb2f52d27182108c3e6641a4feb0f39067911bf2adaa3e57"}, - {file = "rpds_py-0.20.0-cp313-none-win32.whl", hash = "sha256:fd2d84f40633bc475ef2d5490b9c19543fbf18596dcb1b291e3a12ea5d722f7a"}, - {file = "rpds_py-0.20.0-cp313-none-win_amd64.whl", hash = "sha256:9bc2d153989e3216b0559251b0c260cfd168ec78b1fac33dd485750a228db5a2"}, - {file = "rpds_py-0.20.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:f2fbf7db2012d4876fb0d66b5b9ba6591197b0f165db8d99371d976546472a24"}, - {file = "rpds_py-0.20.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1e5f3cd7397c8f86c8cc72d5a791071431c108edd79872cdd96e00abd8497d29"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce9845054c13696f7af7f2b353e6b4f676dab1b4b215d7fe5e05c6f8bb06f965"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c3e130fd0ec56cb76eb49ef52faead8ff09d13f4527e9b0c400307ff72b408e1"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4b16aa0107ecb512b568244ef461f27697164d9a68d8b35090e9b0c1c8b27752"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa7f429242aae2947246587d2964fad750b79e8c233a2367f71b554e9447949c"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af0fc424a5842a11e28956e69395fbbeab2c97c42253169d87e90aac2886d751"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b8c00a3b1e70c1d3891f0db1b05292747f0dbcfb49c43f9244d04c70fbc40eb8"}, - {file = "rpds_py-0.20.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:40ce74fc86ee4645d0a225498d091d8bc61f39b709ebef8204cb8b5a464d3c0e"}, - {file = "rpds_py-0.20.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:4fe84294c7019456e56d93e8ababdad5a329cd25975be749c3f5f558abb48253"}, - {file = "rpds_py-0.20.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:338ca4539aad4ce70a656e5187a3a31c5204f261aef9f6ab50e50bcdffaf050a"}, - {file = "rpds_py-0.20.0-cp38-none-win32.whl", hash = "sha256:54b43a2b07db18314669092bb2de584524d1ef414588780261e31e85846c26a5"}, - {file = "rpds_py-0.20.0-cp38-none-win_amd64.whl", hash = "sha256:a1862d2d7ce1674cffa6d186d53ca95c6e17ed2b06b3f4c476173565c862d232"}, - {file = "rpds_py-0.20.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:3fde368e9140312b6e8b6c09fb9f8c8c2f00999d1823403ae90cc00480221b22"}, - {file = "rpds_py-0.20.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9824fb430c9cf9af743cf7aaf6707bf14323fb51ee74425c380f4c846ea70789"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:11ef6ce74616342888b69878d45e9f779b95d4bd48b382a229fe624a409b72c5"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c52d3f2f82b763a24ef52f5d24358553e8403ce05f893b5347098014f2d9eff2"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d35cef91e59ebbeaa45214861874bc6f19eb35de96db73e467a8358d701a96c"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d72278a30111e5b5525c1dd96120d9e958464316f55adb030433ea905866f4de"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4c29cbbba378759ac5786730d1c3cb4ec6f8ababf5c42a9ce303dc4b3d08cda"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6632f2d04f15d1bd6fe0eedd3b86d9061b836ddca4c03d5cf5c7e9e6b7c14580"}, - {file = "rpds_py-0.20.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:d0b67d87bb45ed1cd020e8fbf2307d449b68abc45402fe1a4ac9e46c3c8b192b"}, - {file = "rpds_py-0.20.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ec31a99ca63bf3cd7f1a5ac9fe95c5e2d060d3c768a09bc1d16e235840861420"}, - {file = "rpds_py-0.20.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:22e6c9976e38f4d8c4a63bd8a8edac5307dffd3ee7e6026d97f3cc3a2dc02a0b"}, - {file = "rpds_py-0.20.0-cp39-none-win32.whl", hash = "sha256:569b3ea770c2717b730b61998b6c54996adee3cef69fc28d444f3e7920313cf7"}, - {file = "rpds_py-0.20.0-cp39-none-win_amd64.whl", hash = "sha256:e6900ecdd50ce0facf703f7a00df12374b74bbc8ad9fe0f6559947fb20f82364"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:617c7357272c67696fd052811e352ac54ed1d9b49ab370261a80d3b6ce385045"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9426133526f69fcaba6e42146b4e12d6bc6c839b8b555097020e2b78ce908dcc"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:deb62214c42a261cb3eb04d474f7155279c1a8a8c30ac89b7dcb1721d92c3c02"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fcaeb7b57f1a1e071ebd748984359fef83ecb026325b9d4ca847c95bc7311c92"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d454b8749b4bd70dd0a79f428731ee263fa6995f83ccb8bada706e8d1d3ff89d"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d807dc2051abe041b6649681dce568f8e10668e3c1c6543ebae58f2d7e617855"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3c20f0ddeb6e29126d45f89206b8291352b8c5b44384e78a6499d68b52ae511"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b7f19250ceef892adf27f0399b9e5afad019288e9be756d6919cb58892129f51"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:4f1ed4749a08379555cebf4650453f14452eaa9c43d0a95c49db50c18b7da075"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:dcedf0b42bcb4cfff4101d7771a10532415a6106062f005ab97d1d0ab5681c60"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:39ed0d010457a78f54090fafb5d108501b5aa5604cc22408fc1c0c77eac14344"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:bb273176be34a746bdac0b0d7e4e2c467323d13640b736c4c477881a3220a989"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f918a1a130a6dfe1d7fe0f105064141342e7dd1611f2e6a21cd2f5c8cb1cfb3e"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:f60012a73aa396be721558caa3a6fd49b3dd0033d1675c6d59c4502e870fcf0c"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d2b1ad682a3dfda2a4e8ad8572f3100f95fad98cb99faf37ff0ddfe9cbf9d03"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:614fdafe9f5f19c63ea02817fa4861c606a59a604a77c8cdef5aa01d28b97921"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fa518bcd7600c584bf42e6617ee8132869e877db2f76bcdc281ec6a4113a53ab"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f0475242f447cc6cb8a9dd486d68b2ef7fbee84427124c232bff5f63b1fe11e5"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f90a4cd061914a60bd51c68bcb4357086991bd0bb93d8aa66a6da7701370708f"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:def7400461c3a3f26e49078302e1c1b38f6752342c77e3cf72ce91ca69fb1bc1"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:65794e4048ee837494aea3c21a28ad5fc080994dfba5b036cf84de37f7ad5074"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:faefcc78f53a88f3076b7f8be0a8f8d35133a3ecf7f3770895c25f8813460f08"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:5b4f105deeffa28bbcdff6c49b34e74903139afa690e35d2d9e3c2c2fba18cec"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fdfc3a892927458d98f3d55428ae46b921d1f7543b89382fdb483f5640daaec8"}, - {file = "rpds_py-0.20.0.tar.gz", hash = "sha256:d72a210824facfdaf8768cf2d7ca25a042c30320b3020de2fa04640920d4e121"}, + {file = "rpds_py-0.20.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:a649dfd735fff086e8a9d0503a9f0c7d01b7912a333c7ae77e1515c08c146dad"}, + {file = "rpds_py-0.20.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f16bc1334853e91ddaaa1217045dd7be166170beec337576818461268a3de67f"}, + {file = "rpds_py-0.20.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14511a539afee6f9ab492b543060c7491c99924314977a55c98bfa2ee29ce78c"}, + {file = "rpds_py-0.20.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3ccb8ac2d3c71cda472b75af42818981bdacf48d2e21c36331b50b4f16930163"}, + {file = "rpds_py-0.20.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c142b88039b92e7e0cb2552e8967077e3179b22359e945574f5e2764c3953dcf"}, + {file = "rpds_py-0.20.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f19169781dddae7478a32301b499b2858bc52fc45a112955e798ee307e294977"}, + {file = "rpds_py-0.20.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13c56de6518e14b9bf6edde23c4c39dac5b48dcf04160ea7bce8fca8397cdf86"}, + {file = "rpds_py-0.20.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:925d176a549f4832c6f69fa6026071294ab5910e82a0fe6c6228fce17b0706bd"}, + {file = "rpds_py-0.20.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:78f0b6877bfce7a3d1ff150391354a410c55d3cdce386f862926a4958ad5ab7e"}, + {file = "rpds_py-0.20.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3dd645e2b0dcb0fd05bf58e2e54c13875847687d0b71941ad2e757e5d89d4356"}, + {file = "rpds_py-0.20.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:4f676e21db2f8c72ff0936f895271e7a700aa1f8d31b40e4e43442ba94973899"}, + {file = "rpds_py-0.20.1-cp310-none-win32.whl", hash = "sha256:648386ddd1e19b4a6abab69139b002bc49ebf065b596119f8f37c38e9ecee8ff"}, + {file = "rpds_py-0.20.1-cp310-none-win_amd64.whl", hash = "sha256:d9ecb51120de61e4604650666d1f2b68444d46ae18fd492245a08f53ad2b7711"}, + {file = "rpds_py-0.20.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:762703bdd2b30983c1d9e62b4c88664df4a8a4d5ec0e9253b0231171f18f6d75"}, + {file = "rpds_py-0.20.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0b581f47257a9fce535c4567782a8976002d6b8afa2c39ff616edf87cbeff712"}, + {file = "rpds_py-0.20.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:842c19a6ce894493563c3bd00d81d5100e8e57d70209e84d5491940fdb8b9e3a"}, + {file = "rpds_py-0.20.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42cbde7789f5c0bcd6816cb29808e36c01b960fb5d29f11e052215aa85497c93"}, + {file = "rpds_py-0.20.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6c8e9340ce5a52f95fa7d3b552b35c7e8f3874d74a03a8a69279fd5fca5dc751"}, + {file = "rpds_py-0.20.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ba6f89cac95c0900d932c9efb7f0fb6ca47f6687feec41abcb1bd5e2bd45535"}, + {file = "rpds_py-0.20.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a916087371afd9648e1962e67403c53f9c49ca47b9680adbeef79da3a7811b0"}, + {file = "rpds_py-0.20.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:200a23239781f46149e6a415f1e870c5ef1e712939fe8fa63035cd053ac2638e"}, + {file = "rpds_py-0.20.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:58b1d5dd591973d426cbb2da5e27ba0339209832b2f3315928c9790e13f159e8"}, + {file = "rpds_py-0.20.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:6b73c67850ca7cae0f6c56f71e356d7e9fa25958d3e18a64927c2d930859b8e4"}, + {file = "rpds_py-0.20.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d8761c3c891cc51e90bc9926d6d2f59b27beaf86c74622c8979380a29cc23ac3"}, + {file = "rpds_py-0.20.1-cp311-none-win32.whl", hash = "sha256:cd945871335a639275eee904caef90041568ce3b42f402c6959b460d25ae8732"}, + {file = "rpds_py-0.20.1-cp311-none-win_amd64.whl", hash = "sha256:7e21b7031e17c6b0e445f42ccc77f79a97e2687023c5746bfb7a9e45e0921b84"}, + {file = "rpds_py-0.20.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:36785be22066966a27348444b40389f8444671630063edfb1a2eb04318721e17"}, + {file = "rpds_py-0.20.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:142c0a5124d9bd0e2976089484af5c74f47bd3298f2ed651ef54ea728d2ea42c"}, + {file = "rpds_py-0.20.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dbddc10776ca7ebf2a299c41a4dde8ea0d8e3547bfd731cb87af2e8f5bf8962d"}, + {file = "rpds_py-0.20.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:15a842bb369e00295392e7ce192de9dcbf136954614124a667f9f9f17d6a216f"}, + {file = "rpds_py-0.20.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:be5ef2f1fc586a7372bfc355986226484e06d1dc4f9402539872c8bb99e34b01"}, + {file = "rpds_py-0.20.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbcf360c9e3399b056a238523146ea77eeb2a596ce263b8814c900263e46031a"}, + {file = "rpds_py-0.20.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ecd27a66740ffd621d20b9a2f2b5ee4129a56e27bfb9458a3bcc2e45794c96cb"}, + {file = "rpds_py-0.20.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d0b937b2a1988f184a3e9e577adaa8aede21ec0b38320d6009e02bd026db04fa"}, + {file = "rpds_py-0.20.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6889469bfdc1eddf489729b471303739bf04555bb151fe8875931f8564309afc"}, + {file = "rpds_py-0.20.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:19b73643c802f4eaf13d97f7855d0fb527fbc92ab7013c4ad0e13a6ae0ed23bd"}, + {file = "rpds_py-0.20.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3c6afcf2338e7f374e8edc765c79fbcb4061d02b15dd5f8f314a4af2bdc7feb5"}, + {file = "rpds_py-0.20.1-cp312-none-win32.whl", hash = "sha256:dc73505153798c6f74854aba69cc75953888cf9866465196889c7cdd351e720c"}, + {file = "rpds_py-0.20.1-cp312-none-win_amd64.whl", hash = "sha256:8bbe951244a838a51289ee53a6bae3a07f26d4e179b96fc7ddd3301caf0518eb"}, + {file = "rpds_py-0.20.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:6ca91093a4a8da4afae7fe6a222c3b53ee4eef433ebfee4d54978a103435159e"}, + {file = "rpds_py-0.20.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b9c2fe36d1f758b28121bef29ed1dee9b7a2453e997528e7d1ac99b94892527c"}, + {file = "rpds_py-0.20.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f009c69bc8c53db5dfab72ac760895dc1f2bc1b62ab7408b253c8d1ec52459fc"}, + {file = "rpds_py-0.20.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6740a3e8d43a32629bb9b009017ea5b9e713b7210ba48ac8d4cb6d99d86c8ee8"}, + {file = "rpds_py-0.20.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:32b922e13d4c0080d03e7b62991ad7f5007d9cd74e239c4b16bc85ae8b70252d"}, + {file = "rpds_py-0.20.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe00a9057d100e69b4ae4a094203a708d65b0f345ed546fdef86498bf5390982"}, + {file = "rpds_py-0.20.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49fe9b04b6fa685bd39237d45fad89ba19e9163a1ccaa16611a812e682913496"}, + {file = "rpds_py-0.20.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:aa7ac11e294304e615b43f8c441fee5d40094275ed7311f3420d805fde9b07b4"}, + {file = "rpds_py-0.20.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6aa97af1558a9bef4025f8f5d8c60d712e0a3b13a2fe875511defc6ee77a1ab7"}, + {file = "rpds_py-0.20.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:483b29f6f7ffa6af845107d4efe2e3fa8fb2693de8657bc1849f674296ff6a5a"}, + {file = "rpds_py-0.20.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:37fe0f12aebb6a0e3e17bb4cd356b1286d2d18d2e93b2d39fe647138458b4bcb"}, + {file = "rpds_py-0.20.1-cp313-none-win32.whl", hash = "sha256:a624cc00ef2158e04188df5e3016385b9353638139a06fb77057b3498f794782"}, + {file = "rpds_py-0.20.1-cp313-none-win_amd64.whl", hash = "sha256:b71b8666eeea69d6363248822078c075bac6ed135faa9216aa85f295ff009b1e"}, + {file = "rpds_py-0.20.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:5b48e790e0355865197ad0aca8cde3d8ede347831e1959e158369eb3493d2191"}, + {file = "rpds_py-0.20.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3e310838a5801795207c66c73ea903deda321e6146d6f282e85fa7e3e4854804"}, + {file = "rpds_py-0.20.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2249280b870e6a42c0d972339e9cc22ee98730a99cd7f2f727549af80dd5a963"}, + {file = "rpds_py-0.20.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e79059d67bea28b53d255c1437b25391653263f0e69cd7dec170d778fdbca95e"}, + {file = "rpds_py-0.20.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2b431c777c9653e569986ecf69ff4a5dba281cded16043d348bf9ba505486f36"}, + {file = "rpds_py-0.20.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:da584ff96ec95e97925174eb8237e32f626e7a1a97888cdd27ee2f1f24dd0ad8"}, + {file = "rpds_py-0.20.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02a0629ec053fc013808a85178524e3cb63a61dbc35b22499870194a63578fb9"}, + {file = "rpds_py-0.20.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fbf15aff64a163db29a91ed0868af181d6f68ec1a3a7d5afcfe4501252840bad"}, + {file = "rpds_py-0.20.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:07924c1b938798797d60c6308fa8ad3b3f0201802f82e4a2c41bb3fafb44cc28"}, + {file = "rpds_py-0.20.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:4a5a844f68776a7715ecb30843b453f07ac89bad393431efbf7accca3ef599c1"}, + {file = "rpds_py-0.20.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:518d2ca43c358929bf08f9079b617f1c2ca6e8848f83c1225c88caeac46e6cbc"}, + {file = "rpds_py-0.20.1-cp38-none-win32.whl", hash = "sha256:3aea7eed3e55119635a74bbeb80b35e776bafccb70d97e8ff838816c124539f1"}, + {file = "rpds_py-0.20.1-cp38-none-win_amd64.whl", hash = "sha256:7dca7081e9a0c3b6490a145593f6fe3173a94197f2cb9891183ef75e9d64c425"}, + {file = "rpds_py-0.20.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:b41b6321805c472f66990c2849e152aff7bc359eb92f781e3f606609eac877ad"}, + {file = "rpds_py-0.20.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0a90c373ea2975519b58dece25853dbcb9779b05cc46b4819cb1917e3b3215b6"}, + {file = "rpds_py-0.20.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:16d4477bcb9fbbd7b5b0e4a5d9b493e42026c0bf1f06f723a9353f5153e75d30"}, + {file = "rpds_py-0.20.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:84b8382a90539910b53a6307f7c35697bc7e6ffb25d9c1d4e998a13e842a5e83"}, + {file = "rpds_py-0.20.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4888e117dd41b9d34194d9e31631af70d3d526efc363085e3089ab1a62c32ed1"}, + {file = "rpds_py-0.20.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5265505b3d61a0f56618c9b941dc54dc334dc6e660f1592d112cd103d914a6db"}, + {file = "rpds_py-0.20.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e75ba609dba23f2c95b776efb9dd3f0b78a76a151e96f96cc5b6b1b0004de66f"}, + {file = "rpds_py-0.20.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1791ff70bc975b098fe6ecf04356a10e9e2bd7dc21fa7351c1742fdeb9b4966f"}, + {file = "rpds_py-0.20.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:d126b52e4a473d40232ec2052a8b232270ed1f8c9571aaf33f73a14cc298c24f"}, + {file = "rpds_py-0.20.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:c14937af98c4cc362a1d4374806204dd51b1e12dded1ae30645c298e5a5c4cb1"}, + {file = "rpds_py-0.20.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:3d089d0b88996df627693639d123c8158cff41c0651f646cd8fd292c7da90eaf"}, + {file = "rpds_py-0.20.1-cp39-none-win32.whl", hash = "sha256:653647b8838cf83b2e7e6a0364f49af96deec64d2a6578324db58380cff82aca"}, + {file = "rpds_py-0.20.1-cp39-none-win_amd64.whl", hash = "sha256:fa41a64ac5b08b292906e248549ab48b69c5428f3987b09689ab2441f267d04d"}, + {file = "rpds_py-0.20.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7a07ced2b22f0cf0b55a6a510078174c31b6d8544f3bc00c2bcee52b3d613f74"}, + {file = "rpds_py-0.20.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:68cb0a499f2c4a088fd2f521453e22ed3527154136a855c62e148b7883b99f9a"}, + {file = "rpds_py-0.20.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fa3060d885657abc549b2a0f8e1b79699290e5d83845141717c6c90c2df38311"}, + {file = "rpds_py-0.20.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:95f3b65d2392e1c5cec27cff08fdc0080270d5a1a4b2ea1d51d5f4a2620ff08d"}, + {file = "rpds_py-0.20.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2cc3712a4b0b76a1d45a9302dd2f53ff339614b1c29603a911318f2357b04dd2"}, + {file = "rpds_py-0.20.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5d4eea0761e37485c9b81400437adb11c40e13ef513375bbd6973e34100aeb06"}, + {file = "rpds_py-0.20.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f5179583d7a6cdb981151dd349786cbc318bab54963a192692d945dd3f6435d"}, + {file = "rpds_py-0.20.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2fbb0ffc754490aff6dabbf28064be47f0f9ca0b9755976f945214965b3ace7e"}, + {file = "rpds_py-0.20.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:a94e52537a0e0a85429eda9e49f272ada715506d3b2431f64b8a3e34eb5f3e75"}, + {file = "rpds_py-0.20.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:92b68b79c0da2a980b1c4197e56ac3dd0c8a149b4603747c4378914a68706979"}, + {file = "rpds_py-0.20.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:93da1d3db08a827eda74356f9f58884adb254e59b6664f64cc04cdff2cc19b0d"}, + {file = "rpds_py-0.20.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:754bbed1a4ca48479e9d4182a561d001bbf81543876cdded6f695ec3d465846b"}, + {file = "rpds_py-0.20.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ca449520e7484534a2a44faf629362cae62b660601432d04c482283c47eaebab"}, + {file = "rpds_py-0.20.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:9c4cb04a16b0f199a8c9bf807269b2f63b7b5b11425e4a6bd44bd6961d28282c"}, + {file = "rpds_py-0.20.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb63804105143c7e24cee7db89e37cb3f3941f8e80c4379a0b355c52a52b6780"}, + {file = "rpds_py-0.20.1-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:55cd1fa4ecfa6d9f14fbd97ac24803e6f73e897c738f771a9fe038f2f11ff07c"}, + {file = "rpds_py-0.20.1-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0f8f741b6292c86059ed175d80eefa80997125b7c478fb8769fd9ac8943a16c0"}, + {file = "rpds_py-0.20.1-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fc212779bf8411667234b3cdd34d53de6c2b8b8b958e1e12cb473a5f367c338"}, + {file = "rpds_py-0.20.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ad56edabcdb428c2e33bbf24f255fe2b43253b7d13a2cdbf05de955217313e6"}, + {file = "rpds_py-0.20.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0a3a1e9ee9728b2c1734f65d6a1d376c6f2f6fdcc13bb007a08cc4b1ff576dc5"}, + {file = "rpds_py-0.20.1-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:e13de156137b7095442b288e72f33503a469aa1980ed856b43c353ac86390519"}, + {file = "rpds_py-0.20.1-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:07f59760ef99f31422c49038964b31c4dfcfeb5d2384ebfc71058a7c9adae2d2"}, + {file = "rpds_py-0.20.1-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:59240685e7da61fb78f65a9f07f8108e36a83317c53f7b276b4175dc44151684"}, + {file = "rpds_py-0.20.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:83cba698cfb3c2c5a7c3c6bac12fe6c6a51aae69513726be6411076185a8b24a"}, + {file = "rpds_py-0.20.1.tar.gz", hash = "sha256:e1791c4aabd117653530dccd24108fa03cc6baf21f58b950d0a73c3b3b29a350"}, ] [[package]] @@ -2582,23 +2581,23 @@ win32 = ["pywin32"] [[package]] name = "setuptools" -version = "75.2.0" +version = "75.3.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = true python-versions = ">=3.8" files = [ - {file = "setuptools-75.2.0-py3-none-any.whl", hash = "sha256:a7fcb66f68b4d9e8e66b42f9876150a3371558f98fa32222ffaa5bced76406f8"}, - {file = "setuptools-75.2.0.tar.gz", hash = "sha256:753bb6ebf1f465a1912e19ed1d41f403a79173a9acf66a42e7e6aec45c3c16ec"}, + {file = "setuptools-75.3.0-py3-none-any.whl", hash = "sha256:f2504966861356aa38616760c0f66568e535562374995367b4e69c7143cf6bcd"}, + {file = "setuptools-75.3.0.tar.gz", hash = "sha256:fba5dd4d766e97be1b1681d98712680ae8f2f26d7881245f2ce9e40714f1a686"}, ] [package.extras] check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.5.2)"] -core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.collections", "jaraco.functools", "jaraco.text (>=3.7)", "more-itertools", "more-itertools (>=8.8)", "packaging", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] +core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.collections", "jaraco.functools", "jaraco.text (>=3.7)", "more-itertools", "more-itertools (>=8.8)", "packaging", "packaging (>=24)", "platformdirs (>=4.2.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] enabler = ["pytest-enabler (>=2.2)"] -test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] -type = ["importlib-metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (==1.11.*)", "pytest-mypy"] +test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test (>=5.5)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] +type = ["importlib-metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (==1.12.*)", "pytest-mypy"] [[package]] name = "simpleaudio" diff --git a/pyproject.toml b/pyproject.toml index eb7b5bec..9357d1a0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "hume" -version = "0.7.3" +version = "0.7.4" description = "A Python SDK for Hume AI" readme = "README.md" authors = [] diff --git a/reference.md b/reference.md index d84b76a9..2d88fe9b 100644 --- a/reference.md +++ b/reference.md @@ -2753,6 +2753,7 @@ client.empathic_voice.configs.create_config( ), evi_version="2", voice=PostedVoice( + provider="HUME_AI", name="SAMPLE VOICE", ), language_model=PostedLanguageModel( @@ -3053,6 +3054,7 @@ client.empathic_voice.configs.create_config_version( version=0, ), voice=PostedVoice( + provider="HUME_AI", name="ITO", ), language_model=PostedLanguageModel( @@ -3840,6 +3842,20 @@ This parameter uses zero-based indexing. For example, setting `page_number` to 0
+#### 📝 Description + +
+
+ +
+
+ +Fetches the audio of a previous **Chat**. For more details, see our guide on audio reconstruction [here](/docs/empathic-voice-interface-evi/faq#can-i-access-the-audio-of-previous-conversations-with-evi). +
+
+
+
+ #### 🔌 Usage
@@ -3855,7 +3871,7 @@ client = HumeClient( api_key="YOUR_API_KEY", ) client.empathic_voice.chats.get_audio( - id="id", + id="470a49f6-1dec-4afe-8b61-035d3b2d63b0", ) ``` @@ -4216,6 +4232,20 @@ This parameter uses zero-based indexing. For example, setting `page_number` to 0
+#### 📝 Description + +
+
+ +
+
+ +Fetches a paginated list of audio for each **Chat** within the specified **Chat Group**. For more details, see our guide on audio reconstruction [here](/docs/empathic-voice-interface-evi/faq#can-i-access-the-audio-of-previous-conversations-with-evi). +
+
+
+
+ #### 🔌 Usage
@@ -4231,7 +4261,10 @@ client = HumeClient( api_key="YOUR_API_KEY", ) client.empathic_voice.chat_groups.get_audio( - id="id", + id="369846cf-6ad5-404d-905e-a8acb5cdfc78", + page_number=0, + page_size=10, + ascending_order=True, ) ``` diff --git a/src/hume/empathic_voice/__init__.py b/src/hume/empathic_voice/__init__.py index 14992525..87f308f4 100644 --- a/src/hume/empathic_voice/__init__.py +++ b/src/hume/empathic_voice/__init__.py @@ -35,6 +35,7 @@ PostedEventMessageSpecs, PostedLanguageModel, PostedLanguageModelModelProvider, + PostedLanguageModelModelResource, PostedPromptSpec, PostedTimeoutSpec, PostedTimeoutSpecs, @@ -42,6 +43,7 @@ PostedTimeoutSpecsMaxDuration, PostedUserDefinedToolSpec, PostedVoice, + PostedVoiceProvider, ProsodyInference, ResumeAssistantMessage, ReturnActiveChatCount, @@ -49,10 +51,14 @@ ReturnBuiltinTool, ReturnBuiltinToolToolType, ReturnChat, + ReturnChatAudioReconstruction, + ReturnChatAudioReconstructionStatus, ReturnChatEvent, ReturnChatEventRole, ReturnChatEventType, ReturnChatGroup, + ReturnChatGroupPagedAudioReconstructions, + ReturnChatGroupPagedAudioReconstructionsPaginationDirection, ReturnChatGroupPagedChats, ReturnChatGroupPagedChatsPaginationDirection, ReturnChatGroupPagedEvents, @@ -71,6 +77,7 @@ ReturnEventMessageSpecs, ReturnLanguageModel, ReturnLanguageModelModelProvider, + ReturnLanguageModelModelResource, ReturnPagedChatGroups, ReturnPagedChatGroupsPaginationDirection, ReturnPagedChats, @@ -87,6 +94,7 @@ ReturnUserDefinedToolToolType, ReturnUserDefinedToolVersionType, ReturnVoice, + ReturnVoiceProvider, Role, SessionSettings, TextInput, @@ -144,6 +152,7 @@ "PostedEventMessageSpecs", "PostedLanguageModel", "PostedLanguageModelModelProvider", + "PostedLanguageModelModelResource", "PostedPromptSpec", "PostedTimeoutSpec", "PostedTimeoutSpecs", @@ -151,6 +160,7 @@ "PostedTimeoutSpecsMaxDuration", "PostedUserDefinedToolSpec", "PostedVoice", + "PostedVoiceProvider", "ProsodyInference", "PublishEvent", "ResumeAssistantMessage", @@ -159,10 +169,14 @@ "ReturnBuiltinTool", "ReturnBuiltinToolToolType", "ReturnChat", + "ReturnChatAudioReconstruction", + "ReturnChatAudioReconstructionStatus", "ReturnChatEvent", "ReturnChatEventRole", "ReturnChatEventType", "ReturnChatGroup", + "ReturnChatGroupPagedAudioReconstructions", + "ReturnChatGroupPagedAudioReconstructionsPaginationDirection", "ReturnChatGroupPagedChats", "ReturnChatGroupPagedChatsPaginationDirection", "ReturnChatGroupPagedEvents", @@ -181,6 +195,7 @@ "ReturnEventMessageSpecs", "ReturnLanguageModel", "ReturnLanguageModelModelProvider", + "ReturnLanguageModelModelResource", "ReturnPagedChatGroups", "ReturnPagedChatGroupsPaginationDirection", "ReturnPagedChats", @@ -197,6 +212,7 @@ "ReturnUserDefinedToolToolType", "ReturnUserDefinedToolVersionType", "ReturnVoice", + "ReturnVoiceProvider", "Role", "SessionSettings", "SubscribeEvent", diff --git a/src/hume/empathic_voice/chat_groups/client.py b/src/hume/empathic_voice/chat_groups/client.py index 3cf2e4d5..3da38c1a 100644 --- a/src/hume/empathic_voice/chat_groups/client.py +++ b/src/hume/empathic_voice/chat_groups/client.py @@ -12,7 +12,7 @@ from ..types.return_chat_group_paged_chats import ReturnChatGroupPagedChats from ...core.jsonable_encoder import jsonable_encoder from ..types.return_chat_group_paged_events import ReturnChatGroupPagedEvents -from ..types.return_chat_paged_events import ReturnChatPagedEvents +from ..types.return_chat_group_paged_audio_reconstructions import ReturnChatGroupPagedAudioReconstructions from ...core.client_wrapper import AsyncClientWrapper @@ -289,8 +289,10 @@ def get_audio( page_size: typing.Optional[int] = None, ascending_order: typing.Optional[bool] = None, request_options: typing.Optional[RequestOptions] = None, - ) -> ReturnChatPagedEvents: + ) -> ReturnChatGroupPagedAudioReconstructions: """ + Fetches a paginated list of audio for each **Chat** within the specified **Chat Group**. For more details, see our guide on audio reconstruction [here](/docs/empathic-voice-interface-evi/faq#can-i-access-the-audio-of-previous-conversations-with-evi). + Parameters ---------- id : str @@ -314,7 +316,7 @@ def get_audio( Returns ------- - ReturnChatPagedEvents + ReturnChatGroupPagedAudioReconstructions Success Examples @@ -325,7 +327,10 @@ def get_audio( api_key="YOUR_API_KEY", ) client.empathic_voice.chat_groups.get_audio( - id="id", + id="369846cf-6ad5-404d-905e-a8acb5cdfc78", + page_number=0, + page_size=10, + ascending_order=True, ) """ _response = self._client_wrapper.httpx_client.request( @@ -341,9 +346,9 @@ def get_audio( try: if 200 <= _response.status_code < 300: return typing.cast( - ReturnChatPagedEvents, + ReturnChatGroupPagedAudioReconstructions, parse_obj_as( - type_=ReturnChatPagedEvents, # type: ignore + type_=ReturnChatGroupPagedAudioReconstructions, # type: ignore object_=_response.json(), ), ) @@ -660,8 +665,10 @@ async def get_audio( page_size: typing.Optional[int] = None, ascending_order: typing.Optional[bool] = None, request_options: typing.Optional[RequestOptions] = None, - ) -> ReturnChatPagedEvents: + ) -> ReturnChatGroupPagedAudioReconstructions: """ + Fetches a paginated list of audio for each **Chat** within the specified **Chat Group**. For more details, see our guide on audio reconstruction [here](/docs/empathic-voice-interface-evi/faq#can-i-access-the-audio-of-previous-conversations-with-evi). + Parameters ---------- id : str @@ -685,7 +692,7 @@ async def get_audio( Returns ------- - ReturnChatPagedEvents + ReturnChatGroupPagedAudioReconstructions Success Examples @@ -701,7 +708,10 @@ async def get_audio( async def main() -> None: await client.empathic_voice.chat_groups.get_audio( - id="id", + id="369846cf-6ad5-404d-905e-a8acb5cdfc78", + page_number=0, + page_size=10, + ascending_order=True, ) @@ -720,9 +730,9 @@ async def main() -> None: try: if 200 <= _response.status_code < 300: return typing.cast( - ReturnChatPagedEvents, + ReturnChatGroupPagedAudioReconstructions, parse_obj_as( - type_=ReturnChatPagedEvents, # type: ignore + type_=ReturnChatGroupPagedAudioReconstructions, # type: ignore object_=_response.json(), ), ) diff --git a/src/hume/empathic_voice/chats/client.py b/src/hume/empathic_voice/chats/client.py index a51ef390..92b49b2f 100644 --- a/src/hume/empathic_voice/chats/client.py +++ b/src/hume/empathic_voice/chats/client.py @@ -14,6 +14,7 @@ from ..types.return_chat_event import ReturnChatEvent from ...core.jsonable_encoder import jsonable_encoder from ..types.return_chat_paged_events import ReturnChatPagedEvents +from ..types.return_chat_audio_reconstruction import ReturnChatAudioReconstruction from ...core.client_wrapper import AsyncClientWrapper from ...core.pagination import AsyncPager @@ -220,8 +221,12 @@ def list_chat_events( raise ApiError(status_code=_response.status_code, body=_response.text) raise ApiError(status_code=_response.status_code, body=_response_json) - def get_audio(self, id: str, *, request_options: typing.Optional[RequestOptions] = None) -> ReturnChatPagedEvents: + def get_audio( + self, id: str, *, request_options: typing.Optional[RequestOptions] = None + ) -> ReturnChatAudioReconstruction: """ + Fetches the audio of a previous **Chat**. For more details, see our guide on audio reconstruction [here](/docs/empathic-voice-interface-evi/faq#can-i-access-the-audio-of-previous-conversations-with-evi). + Parameters ---------- id : str @@ -232,7 +237,7 @@ def get_audio(self, id: str, *, request_options: typing.Optional[RequestOptions] Returns ------- - ReturnChatPagedEvents + ReturnChatAudioReconstruction Success Examples @@ -243,7 +248,7 @@ def get_audio(self, id: str, *, request_options: typing.Optional[RequestOptions] api_key="YOUR_API_KEY", ) client.empathic_voice.chats.get_audio( - id="id", + id="470a49f6-1dec-4afe-8b61-035d3b2d63b0", ) """ _response = self._client_wrapper.httpx_client.request( @@ -254,9 +259,9 @@ def get_audio(self, id: str, *, request_options: typing.Optional[RequestOptions] try: if 200 <= _response.status_code < 300: return typing.cast( - ReturnChatPagedEvents, + ReturnChatAudioReconstruction, parse_obj_as( - type_=ReturnChatPagedEvents, # type: ignore + type_=ReturnChatAudioReconstruction, # type: ignore object_=_response.json(), ), ) @@ -496,8 +501,10 @@ async def main() -> None: async def get_audio( self, id: str, *, request_options: typing.Optional[RequestOptions] = None - ) -> ReturnChatPagedEvents: + ) -> ReturnChatAudioReconstruction: """ + Fetches the audio of a previous **Chat**. For more details, see our guide on audio reconstruction [here](/docs/empathic-voice-interface-evi/faq#can-i-access-the-audio-of-previous-conversations-with-evi). + Parameters ---------- id : str @@ -508,7 +515,7 @@ async def get_audio( Returns ------- - ReturnChatPagedEvents + ReturnChatAudioReconstruction Success Examples @@ -524,7 +531,7 @@ async def get_audio( async def main() -> None: await client.empathic_voice.chats.get_audio( - id="id", + id="470a49f6-1dec-4afe-8b61-035d3b2d63b0", ) @@ -538,9 +545,9 @@ async def main() -> None: try: if 200 <= _response.status_code < 300: return typing.cast( - ReturnChatPagedEvents, + ReturnChatAudioReconstruction, parse_obj_as( - type_=ReturnChatPagedEvents, # type: ignore + type_=ReturnChatAudioReconstruction, # type: ignore object_=_response.json(), ), ) diff --git a/src/hume/empathic_voice/configs/client.py b/src/hume/empathic_voice/configs/client.py index 04b29052..b09577ec 100644 --- a/src/hume/empathic_voice/configs/client.py +++ b/src/hume/empathic_voice/configs/client.py @@ -204,6 +204,7 @@ def create_config( ), evi_version="2", voice=PostedVoice( + provider="HUME_AI", name="SAMPLE VOICE", ), language_model=PostedLanguageModel( @@ -464,6 +465,7 @@ def create_config_version( version=0, ), voice=PostedVoice( + provider="HUME_AI", name="ITO", ), language_model=PostedLanguageModel( @@ -1070,6 +1072,7 @@ async def main() -> None: ), evi_version="2", voice=PostedVoice( + provider="HUME_AI", name="SAMPLE VOICE", ), language_model=PostedLanguageModel( @@ -1346,6 +1349,7 @@ async def main() -> None: version=0, ), voice=PostedVoice( + provider="HUME_AI", name="ITO", ), language_model=PostedLanguageModel( diff --git a/src/hume/empathic_voice/types/__init__.py b/src/hume/empathic_voice/types/__init__.py index 94bf2b47..f88e8212 100644 --- a/src/hume/empathic_voice/types/__init__.py +++ b/src/hume/empathic_voice/types/__init__.py @@ -34,6 +34,7 @@ from .posted_event_message_specs import PostedEventMessageSpecs from .posted_language_model import PostedLanguageModel from .posted_language_model_model_provider import PostedLanguageModelModelProvider +from .posted_language_model_model_resource import PostedLanguageModelModelResource from .posted_prompt_spec import PostedPromptSpec from .posted_timeout_spec import PostedTimeoutSpec from .posted_timeout_specs import PostedTimeoutSpecs @@ -41,6 +42,7 @@ from .posted_timeout_specs_max_duration import PostedTimeoutSpecsMaxDuration from .posted_user_defined_tool_spec import PostedUserDefinedToolSpec from .posted_voice import PostedVoice +from .posted_voice_provider import PostedVoiceProvider from .prosody_inference import ProsodyInference from .resume_assistant_message import ResumeAssistantMessage from .return_active_chat_count import ReturnActiveChatCount @@ -48,10 +50,16 @@ from .return_builtin_tool import ReturnBuiltinTool from .return_builtin_tool_tool_type import ReturnBuiltinToolToolType from .return_chat import ReturnChat +from .return_chat_audio_reconstruction import ReturnChatAudioReconstruction +from .return_chat_audio_reconstruction_status import ReturnChatAudioReconstructionStatus from .return_chat_event import ReturnChatEvent from .return_chat_event_role import ReturnChatEventRole from .return_chat_event_type import ReturnChatEventType from .return_chat_group import ReturnChatGroup +from .return_chat_group_paged_audio_reconstructions import ReturnChatGroupPagedAudioReconstructions +from .return_chat_group_paged_audio_reconstructions_pagination_direction import ( + ReturnChatGroupPagedAudioReconstructionsPaginationDirection, +) from .return_chat_group_paged_chats import ReturnChatGroupPagedChats from .return_chat_group_paged_chats_pagination_direction import ReturnChatGroupPagedChatsPaginationDirection from .return_chat_group_paged_events import ReturnChatGroupPagedEvents @@ -70,6 +78,7 @@ from .return_event_message_specs import ReturnEventMessageSpecs from .return_language_model import ReturnLanguageModel from .return_language_model_model_provider import ReturnLanguageModelModelProvider +from .return_language_model_model_resource import ReturnLanguageModelModelResource from .return_paged_chat_groups import ReturnPagedChatGroups from .return_paged_chat_groups_pagination_direction import ReturnPagedChatGroupsPaginationDirection from .return_paged_chats import ReturnPagedChats @@ -86,6 +95,7 @@ from .return_user_defined_tool_tool_type import ReturnUserDefinedToolToolType from .return_user_defined_tool_version_type import ReturnUserDefinedToolVersionType from .return_voice import ReturnVoice +from .return_voice_provider import ReturnVoiceProvider from .role import Role from .session_settings import SessionSettings from .text_input import TextInput @@ -138,6 +148,7 @@ "PostedEventMessageSpecs", "PostedLanguageModel", "PostedLanguageModelModelProvider", + "PostedLanguageModelModelResource", "PostedPromptSpec", "PostedTimeoutSpec", "PostedTimeoutSpecs", @@ -145,6 +156,7 @@ "PostedTimeoutSpecsMaxDuration", "PostedUserDefinedToolSpec", "PostedVoice", + "PostedVoiceProvider", "ProsodyInference", "ResumeAssistantMessage", "ReturnActiveChatCount", @@ -152,10 +164,14 @@ "ReturnBuiltinTool", "ReturnBuiltinToolToolType", "ReturnChat", + "ReturnChatAudioReconstruction", + "ReturnChatAudioReconstructionStatus", "ReturnChatEvent", "ReturnChatEventRole", "ReturnChatEventType", "ReturnChatGroup", + "ReturnChatGroupPagedAudioReconstructions", + "ReturnChatGroupPagedAudioReconstructionsPaginationDirection", "ReturnChatGroupPagedChats", "ReturnChatGroupPagedChatsPaginationDirection", "ReturnChatGroupPagedEvents", @@ -174,6 +190,7 @@ "ReturnEventMessageSpecs", "ReturnLanguageModel", "ReturnLanguageModelModelProvider", + "ReturnLanguageModelModelResource", "ReturnPagedChatGroups", "ReturnPagedChatGroupsPaginationDirection", "ReturnPagedChats", @@ -190,6 +207,7 @@ "ReturnUserDefinedToolToolType", "ReturnUserDefinedToolVersionType", "ReturnVoice", + "ReturnVoiceProvider", "Role", "SessionSettings", "TextInput", diff --git a/src/hume/empathic_voice/types/posted_language_model.py b/src/hume/empathic_voice/types/posted_language_model.py index b9d61c46..ecc3a7a0 100644 --- a/src/hume/empathic_voice/types/posted_language_model.py +++ b/src/hume/empathic_voice/types/posted_language_model.py @@ -4,6 +4,7 @@ import typing from .posted_language_model_model_provider import PostedLanguageModelModelProvider import pydantic +from .posted_language_model_model_resource import PostedLanguageModelModelResource from ...core.pydantic_utilities import IS_PYDANTIC_V2 @@ -17,7 +18,7 @@ class PostedLanguageModel(UniversalBaseModel): The provider of the supplemental language model. """ - model_resource: typing.Optional[str] = pydantic.Field(default=None) + model_resource: typing.Optional[PostedLanguageModelModelResource] = pydantic.Field(default=None) """ String that specifies the language model to use with `model_provider`. """ diff --git a/src/hume/empathic_voice/types/posted_language_model_model_resource.py b/src/hume/empathic_voice/types/posted_language_model_model_resource.py new file mode 100644 index 00000000..f917685d --- /dev/null +++ b/src/hume/empathic_voice/types/posted_language_model_model_resource.py @@ -0,0 +1,35 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +PostedLanguageModelModelResource = typing.Union[ + typing.Literal[ + "claude-3-5-sonnet-latest", + "claude-3-5-sonnet-20240620", + "claude-3-opus-20240229", + "claude-3-sonnet-20240229", + "claude-3-haiku-20240307", + "claude-2.1", + "claude-instant-1.2", + "gemini-1.5-pro", + "gemini-1.5-flash", + "gemini-1.5-pro-002", + "gemini-1.5-flash-002", + "gpt-4-turbo-preview", + "gpt-3.5-turbo-0125", + "gpt-3.5-turbo", + "gpt-4o", + "gpt-4o-mini", + "gemma-7b-it", + "llama3-8b-8192", + "llama3-70b-8192", + "llama-3.1-70b-versatile", + "llama-3.1-8b-instant", + "accounts/fireworks/models/mixtral-8x7b-instruct", + "accounts/fireworks/models/llama-v3p1-405b-instruct", + "accounts/fireworks/models/llama-v3p1-70b-instruct", + "accounts/fireworks/models/llama-v3p1-8b-instruct", + "ellm", + ], + typing.Any, +] diff --git a/src/hume/empathic_voice/types/posted_timeout_specs.py b/src/hume/empathic_voice/types/posted_timeout_specs.py index aae5bb24..ce06e5d6 100644 --- a/src/hume/empathic_voice/types/posted_timeout_specs.py +++ b/src/hume/empathic_voice/types/posted_timeout_specs.py @@ -19,14 +19,14 @@ class PostedTimeoutSpecs(UniversalBaseModel): """ Specifies the duration of user inactivity (in seconds) after which the EVI WebSocket connection will be automatically disconnected. Default is 600 seconds (10 minutes). - Accepts a minimum value of 1 second and a maximum value of 1,800 seconds. + Accepts a minimum value of 30 seconds and a maximum value of 1,800 seconds. """ max_duration: typing.Optional[PostedTimeoutSpecsMaxDuration] = pydantic.Field(default=None) """ Specifies the maximum allowed duration (in seconds) for an EVI WebSocket connection before it is automatically disconnected. Default is 1,800 seconds (30 minutes). - Accepts a minimum value of 1 second and a maximum value of 1,800 seconds. + Accepts a minimum value of 30 seconds and a maximum value of 1,800 seconds. """ if IS_PYDANTIC_V2: diff --git a/src/hume/empathic_voice/types/posted_timeout_specs_inactivity.py b/src/hume/empathic_voice/types/posted_timeout_specs_inactivity.py index 2c558663..33385869 100644 --- a/src/hume/empathic_voice/types/posted_timeout_specs_inactivity.py +++ b/src/hume/empathic_voice/types/posted_timeout_specs_inactivity.py @@ -10,7 +10,7 @@ class PostedTimeoutSpecsInactivity(UniversalBaseModel): """ Specifies the duration of user inactivity (in seconds) after which the EVI WebSocket connection will be automatically disconnected. Default is 600 seconds (10 minutes). - Accepts a minimum value of 1 second and a maximum value of 1,800 seconds. + Accepts a minimum value of 30 seconds and a maximum value of 1,800 seconds. """ enabled: bool = pydantic.Field() diff --git a/src/hume/empathic_voice/types/posted_timeout_specs_max_duration.py b/src/hume/empathic_voice/types/posted_timeout_specs_max_duration.py index 50f8ed0b..3d9e41f9 100644 --- a/src/hume/empathic_voice/types/posted_timeout_specs_max_duration.py +++ b/src/hume/empathic_voice/types/posted_timeout_specs_max_duration.py @@ -10,7 +10,7 @@ class PostedTimeoutSpecsMaxDuration(UniversalBaseModel): """ Specifies the maximum allowed duration (in seconds) for an EVI WebSocket connection before it is automatically disconnected. Default is 1,800 seconds (30 minutes). - Accepts a minimum value of 1 second and a maximum value of 1,800 seconds. + Accepts a minimum value of 30 seconds and a maximum value of 1,800 seconds. """ enabled: bool = pydantic.Field() diff --git a/src/hume/empathic_voice/types/posted_voice.py b/src/hume/empathic_voice/types/posted_voice.py index 9d48eebf..603047bc 100644 --- a/src/hume/empathic_voice/types/posted_voice.py +++ b/src/hume/empathic_voice/types/posted_voice.py @@ -1,8 +1,9 @@ # This file was auto-generated by Fern from our API Definition. from ...core.pydantic_utilities import UniversalBaseModel -import typing +from .posted_voice_provider import PostedVoiceProvider import pydantic +import typing from .posted_custom_voice import PostedCustomVoice from ...core.pydantic_utilities import IS_PYDANTIC_V2 @@ -12,9 +13,9 @@ class PostedVoice(UniversalBaseModel): A Voice specification posted to the server """ - provider: typing.Literal["HUME_AI"] = pydantic.Field(default="HUME_AI") + provider: PostedVoiceProvider = pydantic.Field() """ - The provider of the voice to use. Currently, only `HUME_AI` is supported as the voice provider. + The provider of the voice to use. Supported values are `HUME_AI` and `CUSTOM_VOICE`. """ name: typing.Optional[str] = pydantic.Field(default=None) diff --git a/src/hume/empathic_voice/types/posted_voice_provider.py b/src/hume/empathic_voice/types/posted_voice_provider.py new file mode 100644 index 00000000..e3895de1 --- /dev/null +++ b/src/hume/empathic_voice/types/posted_voice_provider.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +PostedVoiceProvider = typing.Union[typing.Literal["HUME_AI", "CUSTOM_VOICE"], typing.Any] diff --git a/src/hume/empathic_voice/types/return_chat_audio_reconstruction.py b/src/hume/empathic_voice/types/return_chat_audio_reconstruction.py new file mode 100644 index 00000000..b12a2ba0 --- /dev/null +++ b/src/hume/empathic_voice/types/return_chat_audio_reconstruction.py @@ -0,0 +1,67 @@ +# This file was auto-generated by Fern from our API Definition. + +from ...core.pydantic_utilities import UniversalBaseModel +import pydantic +from .return_chat_audio_reconstruction_status import ReturnChatAudioReconstructionStatus +import typing +from ...core.pydantic_utilities import IS_PYDANTIC_V2 + + +class ReturnChatAudioReconstruction(UniversalBaseModel): + """ + List of chat audio reconstructions returned for the specified page number and page size. + """ + + id: str = pydantic.Field() + """ + Identifier for the chat. Formatted as a UUID. + """ + + user_id: str = pydantic.Field() + """ + Identifier for the user that owns this chat. Formatted as a UUID. + """ + + status: ReturnChatAudioReconstructionStatus = pydantic.Field() + """ + Indicates the current state of the audio reconstruction job. There are five possible statuses: + + - `QUEUED`: The reconstruction job is waiting to be processed. + + - `IN_PROGRESS`: The reconstruction is currently being processed. + + - `COMPLETE`: The audio reconstruction is finished and ready for download. + + - `ERROR`: An error occurred during the reconstruction process. + + - `CANCELED`: The reconstruction job has been canceled. + """ + + filename: typing.Optional[str] = pydantic.Field(default=None) + """ + Name of the chat audio reconstruction file. + """ + + modified_at: typing.Optional[int] = pydantic.Field(default=None) + """ + The timestamp of the most recent status change for this audio reconstruction, formatted milliseconds since the Unix epoch. + """ + + signed_audio_url: typing.Optional[str] = pydantic.Field(default=None) + """ + Signed URL used to download the chat audio reconstruction file. + """ + + signed_url_expiration_timestamp_millis: typing.Optional[int] = pydantic.Field(default=None) + """ + The timestamp when the signed URL will expire, formatted as a Unix epoch milliseconds. + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/hume/empathic_voice/types/return_chat_audio_reconstruction_status.py b/src/hume/empathic_voice/types/return_chat_audio_reconstruction_status.py new file mode 100644 index 00000000..7609906c --- /dev/null +++ b/src/hume/empathic_voice/types/return_chat_audio_reconstruction_status.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +ReturnChatAudioReconstructionStatus = typing.Union[ + typing.Literal["QUEUED", "IN_PROGRESS", "COMPLETE", "ERROR", "CANCELLED"], typing.Any +] diff --git a/src/hume/empathic_voice/types/return_chat_group_paged_audio_reconstructions.py b/src/hume/empathic_voice/types/return_chat_group_paged_audio_reconstructions.py new file mode 100644 index 00000000..fb746d79 --- /dev/null +++ b/src/hume/empathic_voice/types/return_chat_group_paged_audio_reconstructions.py @@ -0,0 +1,71 @@ +# This file was auto-generated by Fern from our API Definition. + +from ...core.pydantic_utilities import UniversalBaseModel +import pydantic +from .return_chat_group_paged_audio_reconstructions_pagination_direction import ( + ReturnChatGroupPagedAudioReconstructionsPaginationDirection, +) +import typing +from .return_chat_audio_reconstruction import ReturnChatAudioReconstruction +from ...core.pydantic_utilities import IS_PYDANTIC_V2 + + +class ReturnChatGroupPagedAudioReconstructions(UniversalBaseModel): + """ + A paginated list of chat reconstructions for a particular chatgroup + """ + + id: str = pydantic.Field() + """ + Identifier for the chat group. Formatted as a UUID. + """ + + user_id: str = pydantic.Field() + """ + Identifier for the user that owns this chat. Formatted as a UUID. + """ + + num_chats: int = pydantic.Field() + """ + Total number of chats in this chatgroup + """ + + page_number: int = pydantic.Field() + """ + The page number of the returned list. + + This value corresponds to the `page_number` parameter specified in the request. Pagination uses zero-based indexing. + """ + + page_size: int = pydantic.Field() + """ + The maximum number of items returned per page. + + This value corresponds to the `page_size` parameter specified in the request. + """ + + total_pages: int = pydantic.Field() + """ + The total number of pages in the collection. + """ + + pagination_direction: ReturnChatGroupPagedAudioReconstructionsPaginationDirection = pydantic.Field() + """ + Indicates the order in which the paginated results are presented, based on their creation date. + + It shows `ASC` for ascending order (chronological, with the oldest records first) or `DESC` for descending order (reverse-chronological, with the newest records first). This value corresponds to the `ascending_order` query parameter used in the request. + """ + + audio_reconstructions_page: typing.List[ReturnChatAudioReconstruction] = pydantic.Field() + """ + List of chat audio reconstructions returned for the specified page number and page size. + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/hume/empathic_voice/types/return_chat_group_paged_audio_reconstructions_pagination_direction.py b/src/hume/empathic_voice/types/return_chat_group_paged_audio_reconstructions_pagination_direction.py new file mode 100644 index 00000000..4fbd5e97 --- /dev/null +++ b/src/hume/empathic_voice/types/return_chat_group_paged_audio_reconstructions_pagination_direction.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +ReturnChatGroupPagedAudioReconstructionsPaginationDirection = typing.Union[typing.Literal["ASC", "DESC"], typing.Any] diff --git a/src/hume/empathic_voice/types/return_language_model.py b/src/hume/empathic_voice/types/return_language_model.py index b5f337c6..f0a3cb66 100644 --- a/src/hume/empathic_voice/types/return_language_model.py +++ b/src/hume/empathic_voice/types/return_language_model.py @@ -4,6 +4,7 @@ import typing from .return_language_model_model_provider import ReturnLanguageModelModelProvider import pydantic +from .return_language_model_model_resource import ReturnLanguageModelModelResource from ...core.pydantic_utilities import IS_PYDANTIC_V2 @@ -17,7 +18,7 @@ class ReturnLanguageModel(UniversalBaseModel): The provider of the supplemental language model. """ - model_resource: typing.Optional[str] = pydantic.Field(default=None) + model_resource: typing.Optional[ReturnLanguageModelModelResource] = pydantic.Field(default=None) """ String that specifies the language model to use with `model_provider`. """ diff --git a/src/hume/empathic_voice/types/return_language_model_model_resource.py b/src/hume/empathic_voice/types/return_language_model_model_resource.py new file mode 100644 index 00000000..2d9bc0ed --- /dev/null +++ b/src/hume/empathic_voice/types/return_language_model_model_resource.py @@ -0,0 +1,35 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +ReturnLanguageModelModelResource = typing.Union[ + typing.Literal[ + "claude-3-5-sonnet-latest", + "claude-3-5-sonnet-20240620", + "claude-3-opus-20240229", + "claude-3-sonnet-20240229", + "claude-3-haiku-20240307", + "claude-2.1", + "claude-instant-1.2", + "gemini-1.5-pro", + "gemini-1.5-flash", + "gemini-1.5-pro-002", + "gemini-1.5-flash-002", + "gpt-4-turbo-preview", + "gpt-3.5-turbo-0125", + "gpt-3.5-turbo", + "gpt-4o", + "gpt-4o-mini", + "gemma-7b-it", + "llama3-8b-8192", + "llama3-70b-8192", + "llama-3.1-70b-versatile", + "llama-3.1-8b-instant", + "accounts/fireworks/models/mixtral-8x7b-instruct", + "accounts/fireworks/models/llama-v3p1-405b-instruct", + "accounts/fireworks/models/llama-v3p1-70b-instruct", + "accounts/fireworks/models/llama-v3p1-8b-instruct", + "ellm", + ], + typing.Any, +] diff --git a/src/hume/empathic_voice/types/return_timeout_specs.py b/src/hume/empathic_voice/types/return_timeout_specs.py index a698f1b7..2763ed86 100644 --- a/src/hume/empathic_voice/types/return_timeout_specs.py +++ b/src/hume/empathic_voice/types/return_timeout_specs.py @@ -18,14 +18,14 @@ class ReturnTimeoutSpecs(UniversalBaseModel): """ Specifies the duration of user inactivity (in seconds) after which the EVI WebSocket connection will be automatically disconnected. Default is 600 seconds (10 minutes). - Accepts a minimum value of 1 second and a maximum value of 1,800 seconds. + Accepts a minimum value of 30 seconds and a maximum value of 1,800 seconds. """ max_duration: ReturnTimeoutSpec = pydantic.Field() """ Specifies the maximum allowed duration (in seconds) for an EVI WebSocket connection before it is automatically disconnected. Default is 1,800 seconds (30 minutes). - Accepts a minimum value of 1 second and a maximum value of 1,800 seconds. + Accepts a minimum value of 30 seconds and a maximum value of 1,800 seconds. """ if IS_PYDANTIC_V2: diff --git a/src/hume/empathic_voice/types/return_voice.py b/src/hume/empathic_voice/types/return_voice.py index aa1ef685..9079ec0c 100644 --- a/src/hume/empathic_voice/types/return_voice.py +++ b/src/hume/empathic_voice/types/return_voice.py @@ -1,8 +1,9 @@ # This file was auto-generated by Fern from our API Definition. from ...core.pydantic_utilities import UniversalBaseModel -import typing +from .return_voice_provider import ReturnVoiceProvider import pydantic +import typing from .return_custom_voice import ReturnCustomVoice from ...core.pydantic_utilities import IS_PYDANTIC_V2 @@ -12,9 +13,9 @@ class ReturnVoice(UniversalBaseModel): A specific voice specification """ - provider: typing.Literal["HUME_AI"] = pydantic.Field(default="HUME_AI") + provider: ReturnVoiceProvider = pydantic.Field() """ - The provider of the voice to use. Currently, only `HUME_AI` is supported as the voice provider. + The provider of the voice to use. Supported values are `HUME_AI` and `CUSTOM_VOICE`. """ name: typing.Optional[str] = pydantic.Field(default=None) diff --git a/src/hume/empathic_voice/types/return_voice_provider.py b/src/hume/empathic_voice/types/return_voice_provider.py new file mode 100644 index 00000000..e68946df --- /dev/null +++ b/src/hume/empathic_voice/types/return_voice_provider.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +ReturnVoiceProvider = typing.Union[typing.Literal["HUME_AI", "CUSTOM_VOICE"], typing.Any] diff --git a/tests/empathic_voice/test_chat_groups.py b/tests/empathic_voice/test_chat_groups.py index 9b0d1e4c..38efb36b 100644 --- a/tests/empathic_voice/test_chat_groups.py +++ b/tests/empathic_voice/test_chat_groups.py @@ -205,60 +205,54 @@ async def test_list_chat_group_events(client: HumeClient, async_client: AsyncHum async def test_get_audio(client: HumeClient, async_client: AsyncHumeClient) -> None: expected_response: typing.Any = { - "id": "id", - "chat_group_id": "chat_group_id", - "status": "ACTIVE", - "start_timestamp": 1000000, - "end_timestamp": 1000000, + "id": "369846cf-6ad5-404d-905e-a8acb5cdfc78", + "user_id": "e6235940-cfda-3988-9147-ff531627cf42", + "num_chats": 1, + "page_number": 0, + "page_size": 10, + "total_pages": 1, "pagination_direction": "ASC", - "events_page": [ + "audio_reconstructions_page": [ { - "id": "id", - "chat_id": "chat_id", - "timestamp": 1000000, - "role": "USER", - "type": "SYSTEM_PROMPT", - "message_text": "message_text", - "emotion_features": "emotion_features", - "metadata": "metadata", + "id": "470a49f6-1dec-4afe-8b61-035d3b2d63b0", + "user_id": "e6235940-cfda-3988-9147-ff531627cf42", + "status": "COMPLETE", + "filename": "e6235940-cfda-3988-9147-ff531627cf42/470a49f6-1dec-4afe-8b61-035d3b2d63b0/reconstructed_audio.mp4", + "modified_at": 1729875432555, + "signed_audio_url": "https://storage.googleapis.com/...etc.", + "signed_url_expiration_timestamp_millis": 1730232816964, } ], - "metadata": "metadata", - "page_number": 1, - "page_size": 1, - "total_pages": 1, - "config": {"id": "id", "version": 1}, } expected_types: typing.Any = { "id": None, - "chat_group_id": None, - "status": None, - "start_timestamp": None, - "end_timestamp": None, + "user_id": None, + "num_chats": "integer", + "page_number": "integer", + "page_size": "integer", + "total_pages": "integer", "pagination_direction": None, - "events_page": ( + "audio_reconstructions_page": ( "list", { 0: { "id": None, - "chat_id": None, - "timestamp": None, - "role": None, - "type": None, - "message_text": None, - "emotion_features": None, - "metadata": None, + "user_id": None, + "status": None, + "filename": None, + "modified_at": None, + "signed_audio_url": None, + "signed_url_expiration_timestamp_millis": None, } }, ), - "metadata": None, - "page_number": "integer", - "page_size": "integer", - "total_pages": "integer", - "config": {"id": None, "version": "integer"}, } - response = client.empathic_voice.chat_groups.get_audio(id="id") + response = client.empathic_voice.chat_groups.get_audio( + id="369846cf-6ad5-404d-905e-a8acb5cdfc78", page_number=0, page_size=10, ascending_order=True + ) validate_response(response, expected_response, expected_types) - async_response = await async_client.empathic_voice.chat_groups.get_audio(id="id") + async_response = await async_client.empathic_voice.chat_groups.get_audio( + id="369846cf-6ad5-404d-905e-a8acb5cdfc78", page_number=0, page_size=10, ascending_order=True + ) validate_response(async_response, expected_response, expected_types) diff --git a/tests/empathic_voice/test_chats.py b/tests/empathic_voice/test_chats.py index 98f8d98d..d22894bf 100644 --- a/tests/empathic_voice/test_chats.py +++ b/tests/empathic_voice/test_chats.py @@ -8,60 +8,25 @@ async def test_get_audio(client: HumeClient, async_client: AsyncHumeClient) -> None: expected_response: typing.Any = { - "id": "id", - "chat_group_id": "chat_group_id", - "status": "ACTIVE", - "start_timestamp": 1000000, - "end_timestamp": 1000000, - "pagination_direction": "ASC", - "events_page": [ - { - "id": "id", - "chat_id": "chat_id", - "timestamp": 1000000, - "role": "USER", - "type": "SYSTEM_PROMPT", - "message_text": "message_text", - "emotion_features": "emotion_features", - "metadata": "metadata", - } - ], - "metadata": "metadata", - "page_number": 1, - "page_size": 1, - "total_pages": 1, - "config": {"id": "id", "version": 1}, + "id": "470a49f6-1dec-4afe-8b61-035d3b2d63b0", + "user_id": "e6235940-cfda-3988-9147-ff531627cf42", + "status": "COMPLETE", + "filename": "e6235940-cfda-3988-9147-ff531627cf42/470a49f6-1dec-4afe-8b61-035d3b2d63b0/reconstructed_audio.mp4", + "modified_at": 1729875432555, + "signed_audio_url": "https://storage.googleapis.com/...etc.", + "signed_url_expiration_timestamp_millis": 1730232816964, } expected_types: typing.Any = { "id": None, - "chat_group_id": None, + "user_id": None, "status": None, - "start_timestamp": None, - "end_timestamp": None, - "pagination_direction": None, - "events_page": ( - "list", - { - 0: { - "id": None, - "chat_id": None, - "timestamp": None, - "role": None, - "type": None, - "message_text": None, - "emotion_features": None, - "metadata": None, - } - }, - ), - "metadata": None, - "page_number": "integer", - "page_size": "integer", - "total_pages": "integer", - "config": {"id": None, "version": "integer"}, + "filename": None, + "modified_at": None, + "signed_audio_url": None, + "signed_url_expiration_timestamp_millis": None, } - response = client.empathic_voice.chats.get_audio(id="id") + response = client.empathic_voice.chats.get_audio(id="470a49f6-1dec-4afe-8b61-035d3b2d63b0") validate_response(response, expected_response, expected_types) - async_response = await async_client.empathic_voice.chats.get_audio(id="id") + async_response = await async_client.empathic_voice.chats.get_audio(id="470a49f6-1dec-4afe-8b61-035d3b2d63b0") validate_response(async_response, expected_response, expected_types) diff --git a/tests/empathic_voice/test_configs.py b/tests/empathic_voice/test_configs.py index ce2c9158..33e9e947 100644 --- a/tests/empathic_voice/test_configs.py +++ b/tests/empathic_voice/test_configs.py @@ -282,7 +282,7 @@ async def test_create_config(client: HumeClient, async_client: AsyncHumeClient) name="Weather Assistant Config", prompt=PostedConfigPromptSpec(id="af699d45-2985-42cc-91b9-af9e5da3bac5", version=0), evi_version="2", - voice=PostedVoice(name="SAMPLE VOICE"), + voice=PostedVoice(provider="HUME_AI", name="SAMPLE VOICE"), language_model=PostedLanguageModel( model_provider="ANTHROPIC", model_resource="claude-3-5-sonnet-20240620", temperature=1.0 ), @@ -298,7 +298,7 @@ async def test_create_config(client: HumeClient, async_client: AsyncHumeClient) name="Weather Assistant Config", prompt=PostedConfigPromptSpec(id="af699d45-2985-42cc-91b9-af9e5da3bac5", version=0), evi_version="2", - voice=PostedVoice(name="SAMPLE VOICE"), + voice=PostedVoice(provider="HUME_AI", name="SAMPLE VOICE"), language_model=PostedLanguageModel( model_provider="ANTHROPIC", model_resource="claude-3-5-sonnet-20240620", temperature=1.0 ), @@ -584,7 +584,7 @@ async def test_create_config_version(client: HumeClient, async_client: AsyncHume version_description="This is an updated version of the Weather Assistant Config.", evi_version="2", prompt=PostedConfigPromptSpec(id="af699d45-2985-42cc-91b9-af9e5da3bac5", version=0), - voice=PostedVoice(name="ITO"), + voice=PostedVoice(provider="HUME_AI", name="ITO"), language_model=PostedLanguageModel( model_provider="ANTHROPIC", model_resource="claude-3-5-sonnet-20240620", temperature=1.0 ), @@ -602,7 +602,7 @@ async def test_create_config_version(client: HumeClient, async_client: AsyncHume version_description="This is an updated version of the Weather Assistant Config.", evi_version="2", prompt=PostedConfigPromptSpec(id="af699d45-2985-42cc-91b9-af9e5da3bac5", version=0), - voice=PostedVoice(name="ITO"), + voice=PostedVoice(provider="HUME_AI", name="ITO"), language_model=PostedLanguageModel( model_provider="ANTHROPIC", model_resource="claude-3-5-sonnet-20240620", temperature=1.0 ),