diff --git a/.github/workflows/lint-integrations-service-pr.yml b/.github/workflows/lint-integrations-service-pr.yml new file mode 100644 index 000000000..7d2f8c566 --- /dev/null +++ b/.github/workflows/lint-integrations-service-pr.yml @@ -0,0 +1,57 @@ +name: Lint integrations-service +run-name: ${{ github.actor }} is linting the code + +on: + pull_request: + paths: + - 'integrations-service/**' + push: + paths: + - 'integrations-service/**' + +jobs: + Lint-And-Format: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-python@v5 + with: + python-version: "3.12" + + - name: Install and configure Poetry + uses: snok/install-poetry@v1 + + - name: Configure Poetry to use .venv + run: | + cd integrations-service + poetry config virtualenvs.in-project true + + - name: Cache Poetry virtualenv + uses: actions/cache@v4 + with: + path: integrations-service/.venv + key: ${{ runner.os }}-integrations-service-poetry-${{ hashFiles('integrations-service/poetry.lock') }} + restore-keys: | + ${{ runner.os }}-integrations-service-poetry- + + - name: Install dependencies + run: | + cd integrations-service + poetry install + + - name: Lint and format + run: | + cd integrations-service + poetry run poe format + poetry run poe lint + + - uses: stefanzweifel/git-auto-commit-action@v4 + with: + commit_message: "refactor: Lint integrations-service (CI)" + branch: ${{ github.head_ref }} + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} \ No newline at end of file diff --git a/.github/workflows/test-integrations-service-pr.yml b/.github/workflows/test-integrations-service-pr.yml new file mode 100644 index 000000000..118e8a13c --- /dev/null +++ b/.github/workflows/test-integrations-service-pr.yml @@ -0,0 +1,50 @@ +name: Test integrations-service +run-name: ${{ github.actor }} is testing the code + +on: + pull_request: + paths: + - 'integrations-service/**' + push: + paths: + - 'integrations-service/**' + +jobs: + Test: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-python@v5 + with: + python-version: "3.12" + + - name: Install and configure Poetry + uses: snok/install-poetry@v1 + + - name: Configure Poetry to use .venv + run: | + cd integrations-service + poetry config virtualenvs.in-project true + + - name: Cache Poetry virtualenv + uses: actions/cache@v4 + with: + path: integrations-service/.venv + key: ${{ runner.os }}-integrations-service-poetry-${{ hashFiles('integrations-service/poetry.lock') }} + restore-keys: | + ${{ runner.os }}-integrations-service-poetry- + + - name: Install dependencies + run: | + cd integrations-service + poetry install + + - name: Run tests + run: | + cd integrations-service + poetry run poe test + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} diff --git a/agents-api/agents_api/activities/execute_integration.py b/agents-api/agents_api/activities/execute_integration.py index 70f7009d1..ae44fd2b9 100644 --- a/agents-api/agents_api/activities/execute_integration.py +++ b/agents-api/agents_api/activities/execute_integration.py @@ -3,7 +3,7 @@ from beartype import beartype from temporalio import activity -from ..autogen.openapi_model import IntegrationDef +from ..autogen.openapi_model import BaseIntegrationDef from ..clients import integrations from ..common.protocol.tasks import StepContext from ..common.storage_handler import auto_blob_store @@ -16,7 +16,7 @@ async def execute_integration( context: StepContext, tool_name: str, - integration: IntegrationDef, + integration: BaseIntegrationDef, arguments: dict[str, Any], setup: dict[str, Any] = {}, ) -> Any: diff --git a/agents-api/agents_api/autogen/Agents.py b/agents-api/agents_api/autogen/Agents.py index 14ede0252..5dab2c7b2 100644 --- a/agents-api/agents_api/autogen/Agents.py +++ b/agents-api/agents_api/autogen/Agents.py @@ -28,11 +28,10 @@ class Agent(BaseModel): name: Annotated[ str, Field( - "", max_length=120, pattern="^[\\p{L}\\p{Nl}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]+[\\p{ID_Start}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]*$", ), - ] + ] = "" """ Name of the agent """ @@ -66,11 +65,10 @@ class CreateAgentRequest(BaseModel): name: Annotated[ str, Field( - "", max_length=120, pattern="^[\\p{L}\\p{Nl}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]+[\\p{ID_Start}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]*$", ), - ] + ] = "" """ Name of the agent """ @@ -101,11 +99,10 @@ class CreateOrUpdateAgentRequest(CreateAgentRequest): name: Annotated[ str, Field( - "", max_length=120, pattern="^[\\p{L}\\p{Nl}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]+[\\p{ID_Start}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]*$", ), - ] + ] = "" """ Name of the agent """ @@ -139,11 +136,10 @@ class PatchAgentRequest(BaseModel): name: Annotated[ str, Field( - "", max_length=120, pattern="^[\\p{L}\\p{Nl}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]+[\\p{ID_Start}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]*$", ), - ] + ] = "" """ Name of the agent """ @@ -177,11 +173,10 @@ class UpdateAgentRequest(BaseModel): name: Annotated[ str, Field( - "", max_length=120, pattern="^[\\p{L}\\p{Nl}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]+[\\p{ID_Start}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]*$", ), - ] + ] = "" """ Name of the agent """ diff --git a/agents-api/agents_api/autogen/Chat.py b/agents-api/agents_api/autogen/Chat.py index 601bf3dc7..882997dfa 100644 --- a/agents-api/agents_api/autogen/Chat.py +++ b/agents-api/agents_api/autogen/Chat.py @@ -10,7 +10,14 @@ from .Common import LogitBias from .Docs import DocReference -from .Tools import ChosenToolCall, NamedToolChoice, Tool +from .Tools import ( + ChosenBash20241022, + ChosenComputer20241022, + ChosenFunctionCall, + ChosenTextEditor20241022, + NamedToolChoice, + Tool, +) class BaseChatOutput(BaseModel): @@ -36,11 +43,13 @@ class BaseChatResponse(BaseModel): """ Usage statistics for the completion request """ - jobs: Annotated[list[UUID], Field([], json_schema_extra={"readOnly": True})] + jobs: Annotated[list[UUID], Field(json_schema_extra={"readOnly": True})] = [] """ Background job IDs that may have been spawned from this interaction. """ - docs: Annotated[list[DocReference], Field([], json_schema_extra={"readOnly": True})] + docs: Annotated[ + list[DocReference], Field(json_schema_extra={"readOnly": True}) + ] = [] """ Documents referenced for this request (for citation purposes). """ @@ -114,20 +123,20 @@ class CompetionUsage(BaseModel): populate_by_name=True, ) completion_tokens: Annotated[ - int | None, Field(None, json_schema_extra={"readOnly": True}) - ] + int | None, Field(json_schema_extra={"readOnly": True}) + ] = None """ Number of tokens in the generated completion """ prompt_tokens: Annotated[ - int | None, Field(None, json_schema_extra={"readOnly": True}) - ] + int | None, Field(json_schema_extra={"readOnly": True}) + ] = None """ Number of tokens in the prompt """ - total_tokens: Annotated[ - int | None, Field(None, json_schema_extra={"readOnly": True}) - ] + total_tokens: Annotated[int | None, Field(json_schema_extra={"readOnly": True})] = ( + None + ) """ Total number of tokens used in the request (prompt + completion) """ @@ -186,7 +195,7 @@ class Delta(BaseModel): """ Name """ - continue_: Annotated[StrictBool | None, Field(None, alias="continue")] + continue_: Annotated[StrictBool | None, Field(alias="continue")] = None """ Whether to continue this message or return a new one """ @@ -244,7 +253,7 @@ class Message(BaseModel): """ Name """ - continue_: Annotated[StrictBool | None, Field(None, alias="continue")] + continue_: Annotated[StrictBool | None, Field(alias="continue")] = None """ Whether to continue this message or return a new one """ @@ -285,18 +294,25 @@ class MessageModel(BaseModel): Name """ tool_calls: Annotated[ - list[ChosenToolCall] | None, Field([], json_schema_extra={"readOnly": True}) - ] + list[ + ChosenFunctionCall + | ChosenComputer20241022 + | ChosenTextEditor20241022 + | ChosenBash20241022 + ] + | None, + Field(json_schema_extra={"readOnly": True}), + ] = [] """ Tool calls generated by the model. """ created_at: Annotated[ - AwareDatetime | None, Field(None, json_schema_extra={"readOnly": True}) - ] + AwareDatetime | None, Field(json_schema_extra={"readOnly": True}) + ] = None """ When this resource was created as UTC date-time """ - id: Annotated[UUID | None, Field(None, json_schema_extra={"readOnly": True})] + id: Annotated[UUID | None, Field(json_schema_extra={"readOnly": True})] = None class MultipleChatOutput(BaseChatOutput): @@ -316,19 +332,19 @@ class OpenAISettings(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - frequency_penalty: Annotated[float | None, Field(None, ge=-2.0, le=2.0)] + frequency_penalty: Annotated[float | None, Field(ge=-2.0, le=2.0)] = None """ Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim. """ - presence_penalty: Annotated[float | None, Field(None, ge=-2.0, le=2.0)] + presence_penalty: Annotated[float | None, Field(ge=-2.0, le=2.0)] = None """ Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim. """ - temperature: Annotated[float | None, Field(None, ge=0.0, le=5.0)] + temperature: Annotated[float | None, Field(ge=0.0, le=5.0)] = None """ What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. """ - top_p: Annotated[float | None, Field(None, ge=0.0, le=1.0)] + top_p: Annotated[float | None, Field(ge=0.0, le=1.0)] = None """ Defaults to 1 An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered. We generally recommend altering this or temperature but not both. """ @@ -386,7 +402,7 @@ class ChatInput(ChatInputData): model_config = ConfigDict( populate_by_name=True, ) - remember: Annotated[StrictBool, Field(False, json_schema_extra={"readOnly": True})] + remember: Annotated[StrictBool, Field(json_schema_extra={"readOnly": True})] = False """ DISABLED: Whether this interaction should form new memories or not (will be enabled in a future release) """ @@ -401,11 +417,10 @@ class ChatInput(ChatInputData): model: Annotated[ str | None, Field( - None, max_length=120, pattern="^[\\p{L}\\p{Nl}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]+[\\p{ID_Start}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]*$", ), - ] + ] = None """ Identifier of the model to be used """ @@ -413,15 +428,15 @@ class ChatInput(ChatInputData): """ Indicates if the server should stream the response as it's generated """ - stop: Annotated[list[str], Field([], max_length=4)] + stop: Annotated[list[str], Field(max_length=4)] = [] """ Up to 4 sequences where the API will stop generating further tokens. """ - seed: Annotated[int | None, Field(None, ge=-1, le=1000)] + seed: Annotated[int | None, Field(ge=-1, le=1000)] = None """ If specified, the system will make a best effort to sample deterministically for that particular seed value """ - max_tokens: Annotated[int | None, Field(None, ge=1)] + max_tokens: Annotated[int | None, Field(ge=1)] = None """ The maximum number of tokens to generate in the chat completion """ @@ -439,31 +454,31 @@ class ChatInput(ChatInputData): """ Agent ID of the agent to use for this interaction. (Only applicable for multi-agent sessions) """ - repetition_penalty: Annotated[float | None, Field(None, ge=0.0, le=2.0)] + repetition_penalty: Annotated[float | None, Field(ge=0.0, le=2.0)] = None """ Number between 0 and 2.0. 1.0 is neutral and values larger than that penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim. """ - length_penalty: Annotated[float | None, Field(None, ge=0.0, le=2.0)] + length_penalty: Annotated[float | None, Field(ge=0.0, le=2.0)] = None """ Number between 0 and 2.0. 1.0 is neutral and values larger than that penalize number of tokens generated. """ - min_p: Annotated[float | None, Field(None, ge=0.0, le=1.0)] + min_p: Annotated[float | None, Field(ge=0.0, le=1.0)] = None """ Minimum probability compared to leading token to be considered """ - frequency_penalty: Annotated[float | None, Field(None, ge=-2.0, le=2.0)] + frequency_penalty: Annotated[float | None, Field(ge=-2.0, le=2.0)] = None """ Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim. """ - presence_penalty: Annotated[float | None, Field(None, ge=-2.0, le=2.0)] + presence_penalty: Annotated[float | None, Field(ge=-2.0, le=2.0)] = None """ Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim. """ - temperature: Annotated[float | None, Field(None, ge=0.0, le=5.0)] + temperature: Annotated[float | None, Field(ge=0.0, le=5.0)] = None """ What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. """ - top_p: Annotated[float | None, Field(None, ge=0.0, le=1.0)] + top_p: Annotated[float | None, Field(ge=0.0, le=1.0)] = None """ Defaults to 1 An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered. We generally recommend altering this or temperature but not both. """ @@ -477,15 +492,15 @@ class DefaultChatSettings(OpenAISettings): model_config = ConfigDict( populate_by_name=True, ) - repetition_penalty: Annotated[float | None, Field(None, ge=0.0, le=2.0)] + repetition_penalty: Annotated[float | None, Field(ge=0.0, le=2.0)] = None """ Number between 0 and 2.0. 1.0 is neutral and values larger than that penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim. """ - length_penalty: Annotated[float | None, Field(None, ge=0.0, le=2.0)] + length_penalty: Annotated[float | None, Field(ge=0.0, le=2.0)] = None """ Number between 0 and 2.0. 1.0 is neutral and values larger than that penalize number of tokens generated. """ - min_p: Annotated[float | None, Field(None, ge=0.0, le=1.0)] + min_p: Annotated[float | None, Field(ge=0.0, le=1.0)] = None """ Minimum probability compared to leading token to be considered """ @@ -498,11 +513,10 @@ class ChatSettings(DefaultChatSettings): model: Annotated[ str | None, Field( - None, max_length=120, pattern="^[\\p{L}\\p{Nl}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]+[\\p{ID_Start}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]*$", ), - ] + ] = None """ Identifier of the model to be used """ @@ -510,15 +524,15 @@ class ChatSettings(DefaultChatSettings): """ Indicates if the server should stream the response as it's generated """ - stop: Annotated[list[str], Field([], max_length=4)] + stop: Annotated[list[str], Field(max_length=4)] = [] """ Up to 4 sequences where the API will stop generating further tokens. """ - seed: Annotated[int | None, Field(None, ge=-1, le=1000)] + seed: Annotated[int | None, Field(ge=-1, le=1000)] = None """ If specified, the system will make a best effort to sample deterministically for that particular seed value """ - max_tokens: Annotated[int | None, Field(None, ge=1)] + max_tokens: Annotated[int | None, Field(ge=1)] = None """ The maximum number of tokens to generate in the chat completion """ diff --git a/agents-api/agents_api/autogen/Common.py b/agents-api/agents_api/autogen/Common.py index 177214a5f..888865ab7 100644 --- a/agents-api/agents_api/autogen/Common.py +++ b/agents-api/agents_api/autogen/Common.py @@ -68,7 +68,7 @@ class ResourceCreatedResponse(BaseModel): """ When this resource was created as UTC date-time """ - jobs: Annotated[list[UUID], Field([], json_schema_extra={"readOnly": True})] + jobs: Annotated[list[UUID], Field(json_schema_extra={"readOnly": True})] = [] """ IDs (if any) of jobs created as part of this request """ @@ -86,7 +86,7 @@ class ResourceDeletedResponse(BaseModel): """ When this resource was deleted as UTC date-time """ - jobs: Annotated[list[UUID], Field([], json_schema_extra={"readOnly": True})] + jobs: Annotated[list[UUID], Field(json_schema_extra={"readOnly": True})] = [] """ IDs (if any) of jobs created as part of this request """ @@ -104,7 +104,7 @@ class ResourceUpdatedResponse(BaseModel): """ When this resource was updated as UTC date-time """ - jobs: Annotated[list[UUID], Field([], json_schema_extra={"readOnly": True})] + jobs: Annotated[list[UUID], Field(json_schema_extra={"readOnly": True})] = [] """ IDs (if any) of jobs created as part of this request """ diff --git a/agents-api/agents_api/autogen/Docs.py b/agents-api/agents_api/autogen/Docs.py index 61210abbe..ab206b2f0 100644 --- a/agents-api/agents_api/autogen/Docs.py +++ b/agents-api/agents_api/autogen/Docs.py @@ -13,7 +13,7 @@ class BaseDocSearchRequest(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - limit: Annotated[int, Field(10, ge=1, le=50)] + limit: Annotated[int, Field(ge=1, le=50)] = 10 lang: Literal["en-US"] = "en-US" """ The language to be used for text-only search. Support for other languages coming soon. @@ -68,8 +68,8 @@ class Doc(BaseModel): """ embeddings: Annotated[ list[float] | list[list[float]] | None, - Field(None, json_schema_extra={"readOnly": True}), - ] + Field(json_schema_extra={"readOnly": True}), + ] = None """ Embeddings for the document """ @@ -128,11 +128,11 @@ class HybridDocSearchRequest(BaseDocSearchRequest): model_config = ConfigDict( populate_by_name=True, ) - confidence: Annotated[float, Field(0.5, ge=0.0, le=1.0)] + confidence: Annotated[float, Field(ge=0.0, le=1.0)] = 0.5 """ The confidence cutoff level """ - alpha: Annotated[float, Field(0.75, ge=0.0, le=1.0)] + alpha: Annotated[float, Field(ge=0.0, le=1.0)] = 0.75 """ The weight to apply to BM25 vs Vector search results. 0 => pure BM25; 1 => pure vector; """ @@ -197,7 +197,7 @@ class VectorDocSearchRequest(BaseDocSearchRequest): model_config = ConfigDict( populate_by_name=True, ) - confidence: Annotated[float, Field(0.5, ge=0.0, le=1.0)] + confidence: Annotated[float, Field(ge=0.0, le=1.0)] = 0.5 """ The confidence cutoff level """ diff --git a/agents-api/agents_api/autogen/Entries.py b/agents-api/agents_api/autogen/Entries.py index 530209320..6e5d297c2 100644 --- a/agents-api/agents_api/autogen/Entries.py +++ b/agents-api/agents_api/autogen/Entries.py @@ -8,7 +8,14 @@ from pydantic import AwareDatetime, BaseModel, ConfigDict, Field, RootModel -from .Tools import ChosenToolCall, Tool, ToolResponse +from .Tools import ( + ChosenBash20241022, + ChosenComputer20241022, + ChosenFunctionCall, + ChosenTextEditor20241022, + Tool, + ToolResponse, +) class BaseEntry(BaseModel): @@ -31,11 +38,21 @@ class BaseEntry(BaseModel): content: ( list[Content | ContentModel] | Tool - | ChosenToolCall + | ChosenFunctionCall + | ChosenComputer20241022 + | ChosenTextEditor20241022 + | ChosenBash20241022 | str | ToolResponse | list[ - list[Content | ContentModel] | Tool | ChosenToolCall | str | ToolResponse + list[Content | ContentModel] + | Tool + | ChosenFunctionCall + | ChosenComputer20241022 + | ChosenTextEditor20241022 + | ChosenBash20241022 + | str + | ToolResponse ] ) source: Literal[ diff --git a/agents-api/agents_api/autogen/Jobs.py b/agents-api/agents_api/autogen/Jobs.py index fc231d6e5..b17cd9317 100644 --- a/agents-api/agents_api/autogen/Jobs.py +++ b/agents-api/agents_api/autogen/Jobs.py @@ -25,11 +25,10 @@ class JobStatus(BaseModel): name: Annotated[ str, Field( - "", max_length=120, pattern="^[\\p{L}\\p{Nl}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]+[\\p{ID_Start}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]*$", ), - ] + ] = "" """ Name of the job """ @@ -41,7 +40,7 @@ class JobStatus(BaseModel): """ Whether this Job supports progress updates """ - progress: Annotated[float, Field(0, ge=0.0, le=100.0)] + progress: Annotated[float, Field(ge=0.0, le=100.0)] = 0 """ Progress percentage """ diff --git a/agents-api/agents_api/autogen/Sessions.py b/agents-api/agents_api/autogen/Sessions.py index 6869e3ef1..1f13639fc 100644 --- a/agents-api/agents_api/autogen/Sessions.py +++ b/agents-api/agents_api/autogen/Sessions.py @@ -101,7 +101,7 @@ class Session(BaseModel): """ A specific situation that sets the background for this session """ - summary: Annotated[str | None, Field(None, json_schema_extra={"readOnly": True})] + summary: Annotated[str | None, Field(json_schema_extra={"readOnly": True})] = None """ Summary (null at the beginning) - generated automatically after every interaction """ diff --git a/agents-api/agents_api/autogen/Tasks.py b/agents-api/agents_api/autogen/Tasks.py index fdbfc5811..0712d1fb7 100644 --- a/agents-api/agents_api/autogen/Tasks.py +++ b/agents-api/agents_api/autogen/Tasks.py @@ -153,9 +153,9 @@ class ErrorWorkflowStep(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - kind_: Annotated[ - Literal["error"], Field("error", json_schema_extra={"readOnly": True}) - ] + kind_: Annotated[Literal["error"], Field(json_schema_extra={"readOnly": True})] = ( + "error" + ) """ The kind of step """ @@ -170,8 +170,8 @@ class EvaluateStep(BaseModel): populate_by_name=True, ) kind_: Annotated[ - Literal["evaluate"], Field("evaluate", json_schema_extra={"readOnly": True}) - ] + Literal["evaluate"], Field(json_schema_extra={"readOnly": True}) + ] = "evaluate" """ The kind of step """ @@ -234,8 +234,8 @@ class ForeachStep(BaseModel): populate_by_name=True, ) kind_: Annotated[ - Literal["foreach"], Field("foreach", json_schema_extra={"readOnly": True}) - ] + Literal["foreach"], Field(json_schema_extra={"readOnly": True}) + ] = "foreach" """ The kind of step """ @@ -263,7 +263,9 @@ class GetStep(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - kind_: Annotated[Literal["get"], Field("get", json_schema_extra={"readOnly": True})] + kind_: Annotated[Literal["get"], Field(json_schema_extra={"readOnly": True})] = ( + "get" + ) """ The kind of step """ @@ -278,8 +280,8 @@ class IfElseWorkflowStep(BaseModel): populate_by_name=True, ) kind_: Annotated[ - Literal["if_else"], Field("if_else", json_schema_extra={"readOnly": True}) - ] + Literal["if_else"], Field(json_schema_extra={"readOnly": True}) + ] = "if_else" """ The kind of step """ @@ -316,8 +318,8 @@ class IfElseWorkflowStep(BaseModel): | ErrorWorkflowStep | WaitForInputStep | None, - Field(None, alias="else"), - ] + Field(alias="else"), + ] = None """ The steps to run if the condition is false """ @@ -364,8 +366,8 @@ class IfElseWorkflowStepUpdateItem(BaseModel): | ErrorWorkflowStep | WaitForInputStep | None, - Field(None, alias="else"), - ] + Field(alias="else"), + ] = None """ The steps to run if the condition is false """ @@ -393,7 +395,9 @@ class LogStep(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - kind_: Annotated[Literal["log"], Field("log", json_schema_extra={"readOnly": True})] + kind_: Annotated[Literal["log"], Field(json_schema_extra={"readOnly": True})] = ( + "log" + ) """ The kind of step """ @@ -408,8 +412,8 @@ class Main(BaseModel): populate_by_name=True, ) kind_: Annotated[ - Literal["map_reduce"], Field("map_reduce", json_schema_extra={"readOnly": True}) - ] + Literal["map_reduce"], Field(json_schema_extra={"readOnly": True}) + ] = "map_reduce" """ The kind of step """ @@ -439,7 +443,7 @@ class Main(BaseModel): """ The initial value of the reduce expression """ - parallelism: Annotated[int | None, Field(None, ge=1, le=100)] + parallelism: Annotated[int | None, Field(ge=1, le=100)] = None """ Whether to run the reduce expression in parallel and how many items to run in each batch """ @@ -479,7 +483,7 @@ class MainModel(BaseModel): """ The initial value of the reduce expression """ - parallelism: Annotated[int | None, Field(None, ge=1, le=100)] + parallelism: Annotated[int | None, Field(ge=1, le=100)] = None """ Whether to run the reduce expression in parallel and how many items to run in each batch """ @@ -490,8 +494,8 @@ class ParallelStep(BaseModel): populate_by_name=True, ) kind_: Annotated[ - Literal["parallel"], Field("parallel", json_schema_extra={"readOnly": True}) - ] + Literal["parallel"], Field(json_schema_extra={"readOnly": True}) + ] = "parallel" """ The kind of step """ @@ -566,8 +570,8 @@ class PatchTaskRequest(BaseModel): | MainModel ] | None, - Field(None, min_length=1), - ] + Field(min_length=1), + ] = None """ The entrypoint of the task. """ @@ -610,7 +614,7 @@ class PromptItem(BaseModel): """ Name """ - continue_: Annotated[StrictBool | None, Field(None, alias="continue")] + continue_: Annotated[StrictBool | None, Field(alias="continue")] = None """ Whether to continue this message or return a new one """ @@ -620,9 +624,9 @@ class PromptStep(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - kind_: Annotated[ - Literal["prompt"], Field("prompt", json_schema_extra={"readOnly": True}) - ] + kind_: Annotated[Literal["prompt"], Field(json_schema_extra={"readOnly": True})] = ( + "prompt" + ) """ The kind of step """ @@ -702,9 +706,9 @@ class ReturnStep(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - kind_: Annotated[ - Literal["return"], Field("return", json_schema_extra={"readOnly": True}) - ] + kind_: Annotated[Literal["return"], Field(json_schema_extra={"readOnly": True})] = ( + "return" + ) """ The kind of step """ @@ -718,7 +722,9 @@ class SetStep(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - kind_: Annotated[Literal["set"], Field("set", json_schema_extra={"readOnly": True})] + kind_: Annotated[Literal["set"], Field(json_schema_extra={"readOnly": True})] = ( + "set" + ) """ The kind of step """ @@ -732,19 +738,19 @@ class SleepFor(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - seconds: Annotated[int, Field(0, ge=0, le=60)] + seconds: Annotated[int, Field(ge=0, le=60)] = 0 """ The number of seconds to sleep for """ - minutes: Annotated[int, Field(0, ge=0, le=60)] + minutes: Annotated[int, Field(ge=0, le=60)] = 0 """ The number of minutes to sleep for """ - hours: Annotated[int, Field(0, ge=0, le=24)] + hours: Annotated[int, Field(ge=0, le=24)] = 0 """ The number of hours to sleep for """ - days: Annotated[int, Field(0, ge=0, le=30)] + days: Annotated[int, Field(ge=0, le=30)] = 0 """ The number of days to sleep for """ @@ -754,9 +760,9 @@ class SleepStep(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - kind_: Annotated[ - Literal["sleep"], Field("sleep", json_schema_extra={"readOnly": True}) - ] + kind_: Annotated[Literal["sleep"], Field(json_schema_extra={"readOnly": True})] = ( + "sleep" + ) """ The kind of step """ @@ -770,9 +776,9 @@ class SwitchStep(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - kind_: Annotated[ - Literal["switch"], Field("switch", json_schema_extra={"readOnly": True}) - ] + kind_: Annotated[Literal["switch"], Field(json_schema_extra={"readOnly": True})] = ( + "switch" + ) """ The kind of step """ @@ -858,7 +864,9 @@ class TaskTool(CreateToolRequest): model_config = ConfigDict( populate_by_name=True, ) - inherited: Annotated[StrictBool, Field(False, json_schema_extra={"readOnly": True})] + inherited: Annotated[StrictBool, Field(json_schema_extra={"readOnly": True})] = ( + False + ) """ Read-only: Whether the tool was inherited or not. Only applies within tasks. """ @@ -869,8 +877,8 @@ class ToolCallStep(BaseModel): populate_by_name=True, ) kind_: Annotated[ - Literal["tool_call"], Field("tool_call", json_schema_extra={"readOnly": True}) - ] + Literal["tool_call"], Field(json_schema_extra={"readOnly": True}) + ] = "tool_call" """ The kind of step """ @@ -914,7 +922,7 @@ class ToolRefByName(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - name: Annotated[str | None, Field(None, max_length=40, pattern="^[^\\W0-9]\\w*$")] + name: Annotated[str | None, Field(max_length=40, pattern="^[^\\W0-9]\\w*$")] = None """ Valid python identifier names """ @@ -993,9 +1001,8 @@ class WaitForInputStep(BaseModel): populate_by_name=True, ) kind_: Annotated[ - Literal["wait_for_input"], - Field("wait_for_input", json_schema_extra={"readOnly": True}), - ] + Literal["wait_for_input"], Field(json_schema_extra={"readOnly": True}) + ] = "wait_for_input" """ The kind of step """ @@ -1009,9 +1016,9 @@ class YieldStep(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - kind_: Annotated[ - Literal["yield"], Field("yield", json_schema_extra={"readOnly": True}) - ] + kind_: Annotated[Literal["yield"], Field(json_schema_extra={"readOnly": True})] = ( + "yield" + ) """ The kind of step """ diff --git a/agents-api/agents_api/autogen/Tools.py b/agents-api/agents_api/autogen/Tools.py index 2b6010b1c..dffe08e88 100644 --- a/agents-api/agents_api/autogen/Tools.py +++ b/agents-api/agents_api/autogen/Tools.py @@ -6,7 +6,15 @@ from typing import Annotated, Any, Literal from uuid import UUID -from pydantic import AnyUrl, AwareDatetime, BaseModel, ConfigDict, Field, StrictBool +from pydantic import ( + AnyUrl, + AwareDatetime, + BaseModel, + ConfigDict, + Field, + RootModel, + StrictBool, +) class ApiCallDef(BaseModel): @@ -39,7 +47,7 @@ class ApiCallDef(BaseModel): """ The data to send as form data """ - json_: Annotated[dict[str, Any] | None, Field(None, alias="json")] + json_: Annotated[dict[str, Any] | None, Field(alias="json")] = None """ JSON body to send with the request """ @@ -102,7 +110,7 @@ class ApiCallDefUpdate(BaseModel): """ The data to send as form data """ - json_: Annotated[dict[str, Any] | None, Field(None, alias="json")] + json_: Annotated[dict[str, Any] | None, Field(alias="json")] = None """ JSON body to send with the request """ @@ -124,7 +132,7 @@ class ApiCallDefUpdate(BaseModel): """ -class ChosenToolCall(BaseModel): +class BaseChosenToolCall(BaseModel): """ The response tool value generated by the model """ @@ -132,17 +140,1086 @@ class ChosenToolCall(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - type: Literal["function", "integration", "system", "api_call"] + type: Literal[ + "function", + "integration", + "system", + "api_call", + "computer_20241022", + "text_editor_20241022", + "bash_20241022", + ] """ Whether this tool is a `function`, `api_call`, `system` etc. (Only `function` tool supported right now) """ function: FunctionCallOption | None = None - id: Annotated[UUID, Field(json_schema_extra={"readOnly": True})] + integration: Any | None = None + system: Any | None = None + api_call: Any | None = None + computer_20241022: ChosenComputer20241022 | None = None + """ + (Alpha) Anthropic new tools + """ + text_editor_20241022: ChosenTextEditor20241022 | None = None + bash_20241022: ChosenBash20241022 | None = None + id: Annotated[UUID | None, Field(json_schema_extra={"readOnly": True})] = None + + +class BaseIntegrationDef(BaseModel): + """ + Integration definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + provider: Literal[ + "dummy", "weather", "wikipedia", "spider", "brave", "browserbase", "email" + ] + """ + The provider of the integration + """ + method: str | None = None + """ + The specific method of the integration to call + """ + setup: Any | None = None + """ + The setup parameters the integration accepts + """ + arguments: Any | None = None + """ + The arguments to pre-apply to the integration call + """ + + +class BaseIntegrationDefUpdate(BaseModel): + """ + Integration definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + provider: ( + Literal[ + "dummy", "weather", "wikipedia", "spider", "brave", "browserbase", "email" + ] + | None + ) = None + """ + The provider of the integration + """ + method: str | None = None + """ + The specific method of the integration to call + """ + setup: Any | None = None + """ + The setup parameters the integration accepts + """ + arguments: Any | None = None + """ + The arguments to pre-apply to the integration call + """ + + +class Bash20241022Def(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + type: Literal["bash_20241022"] = "bash_20241022" + name: str = "bash" + + +class Bash20241022DefUpdate(Bash20241022Def): + pass + + +class BraveIntegrationDef(BaseIntegrationDef): + """ + Brave integration definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + provider: Literal["brave"] = "brave" + """ + The provider must be "brave" + """ + method: str | None = None + """ + The specific method of the integration to call + """ + setup: BraveSearchSetup | None = None + """ + The setup parameters for Brave + """ + arguments: BraveSearchArguments | None = None + """ + The arguments for Brave Search + """ + + +class BraveIntegrationDefUpdate(BaseIntegrationDefUpdate): + """ + Brave integration definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + provider: Literal["brave"] = "brave" + """ + The provider must be "brave" + """ + method: str | None = None + """ + The specific method of the integration to call + """ + setup: BraveSearchSetupUpdate | None = None + """ + The setup parameters for Brave + """ + arguments: BraveSearchArgumentsUpdate | None = None + """ + The arguments for Brave Search + """ + + +class BraveSearchArguments(BaseModel): + """ + Arguments for Brave Search + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + query: str + """ + The search query for searching with Brave + """ + + +class BraveSearchArgumentsUpdate(BaseModel): + """ + Arguments for Brave Search + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + query: str | None = None + """ + The search query for searching with Brave + """ + + +class BraveSearchSetup(BaseModel): + """ + Integration definition for Brave Search + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + api_key: str + """ + The api key for Brave Search + """ + + +class BraveSearchSetupUpdate(BaseModel): + """ + Integration definition for Brave Search + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + api_key: str | None = None + """ + The api key for Brave Search + """ + + +class BrowserbaseCreateSessionArguments(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + project_id: Annotated[str, Field(alias="projectId")] + """ + The Project ID. Can be found in Settings. + """ + extension_id: Annotated[str | None, Field(alias="extensionId")] = None + """ + The uploaded Extension ID. See Upload Extension. + """ + browser_settings: Annotated[ + dict[str, Any] | None, Field(alias="browserSettings") + ] = None + """ + Browser settings + """ + timeout: int | None = None + """ + Duration in seconds after which the session will automatically end. Defaults to the Project's defaultTimeout. + """ + keep_alive: Annotated[StrictBool | None, Field(alias="keepAlive")] = None + """ + Set to true to keep the session alive even after disconnections. This is available on the Startup plan only. + """ + proxies: StrictBool | list[dict[str, Any]] | None = None + """ + Proxy configuration. Can be true for default proxy, or an array of proxy configurations. + """ + + +class BrowserbaseCreateSessionArgumentsUpdate(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + project_id: Annotated[str | None, Field(alias="projectId")] = None + """ + The Project ID. Can be found in Settings. + """ + extension_id: Annotated[str | None, Field(alias="extensionId")] = None + """ + The uploaded Extension ID. See Upload Extension. + """ + browser_settings: Annotated[ + dict[str, Any] | None, Field(alias="browserSettings") + ] = None + """ + Browser settings + """ + timeout: int | None = None + """ + Duration in seconds after which the session will automatically end. Defaults to the Project's defaultTimeout. + """ + keep_alive: Annotated[StrictBool | None, Field(alias="keepAlive")] = None + """ + Set to true to keep the session alive even after disconnections. This is available on the Startup plan only. + """ + proxies: StrictBool | list[dict[str, Any]] | None = None + """ + Proxy configuration. Can be true for default proxy, or an array of proxy configurations. + """ + + +class BrowserbaseGetSessionArguments(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + id: str + + +class BrowserbaseGetSessionArgumentsUpdate(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + id: str | None = None + + +class BrowserbaseGetSessionLiveUrlsArguments(BrowserbaseGetSessionArguments): + pass + + +class BrowserbaseGetSessionLiveUrlsArgumentsUpdate( + BrowserbaseGetSessionArgumentsUpdate +): + pass + + +class BrowserbaseListSessionsArguments(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + status: Literal["RUNNING", "ERROR", "TIMED_OUT", "COMPLETED"] | None = None + """ + The status of the sessions to list (Available options: RUNNING, ERROR, TIMED_OUT, COMPLETED) + """ + + +class BrowserbaseSetup(BaseModel): + """ + The setup parameters for the browserbase integration + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + api_key: str + """ + API key for the browserbase integration + """ + + +class BrowserbaseSetupUpdate(BaseModel): + """ + The setup parameters for the browserbase integration + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + api_key: str | None = None + """ + API key for the browserbase integration + """ + + +class BrowserbaseUpdateSessionArguments(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + id: str + status: Literal["REQUEST_RELEASE"] = "REQUEST_RELEASE" + + +class BrowserbaseUpdateSessionArgumentsUpdate(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + id: str | None = None + status: Literal["REQUEST_RELEASE"] | None = None + + +class ChosenBash20241022(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + command: str | None = None + """ + The bash command to run + """ + restart: StrictBool = False + """ + Whether to restart the tool + """ + + +class ChosenComputer20241022(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + action: Literal[ + "key", + "type", + "cursor_position", + "mouse_move", + "left_click", + "right_click", + "middle_click", + "double_click", + "screenshot", + ] + """ + The action to perform + """ + text: str | None = None + """ + The text to type + """ + coordinate: list[int] | None = None + """ + The (x, y) pixel coordinate to move the cursor to + """ + + +class ChosenFunctionCall(BaseChosenToolCall): + model_config = ConfigDict( + populate_by_name=True, + ) + type: Literal["function"] = "function" + function: FunctionCallOption + """ + The function to call + """ + + +class ChosenTextEditor20241022(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + command: Literal["str_replace", "insert", "view", "undo_edit"] + """ + The command to run + """ + path: str + """ + The path to the file + """ + file_text: str | None = None + """ + The content of the file to be created + """ + insert_line: int | None = None + """ + The line to insert the new string after + """ + new_str: str | None = None + """ + The new string to insert + """ + old_str: str | None = None + """ + The string in the file to replace + """ + view_range: list[int] | None = None + """ + The line range to view + """ + + +class Computer20241022Def(BaseModel): + """ + Anthropic new tools + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + type: Literal["computer_20241022"] = "computer_20241022" + name: str = "computer" + display_width_px: Annotated[int, Field(ge=600)] = 1024 + """ + The display width in pixels + """ + display_height_px: Annotated[int, Field(ge=400)] = 768 + """ + The display height in pixels + """ + display_number: Annotated[int, Field(ge=1, le=10)] = 1 + """ + The display number to use + """ + + +class Computer20241022DefUpdate(Computer20241022Def): + """ + Anthropic new tools + """ + + +class CreateToolRequest(BaseModel): + """ + Payload for creating a tool + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + name: Annotated[str, Field(max_length=40, pattern="^[^\\W0-9]\\w*$")] + """ + Name of the tool (must be unique for this agent and a valid python identifier string ) + """ + description: str | None = None + """ + Description of the tool + """ + function: FunctionDef | None = None + """ + The function to call + """ + integration: ( + DummyIntegrationDef + | BraveIntegrationDef + | EmailIntegrationDef + | SpiderIntegrationDef + | WikipediaIntegrationDef + | WeatherIntegrationDef + | BrowserbaseContextIntegrationDef + | BrowserbaseListSessionsIntegrationDef + | BrowserbaseCreateSessionIntegrationDef + | BrowserbaseGetSessionIntegrationDef + | BrowserbaseUpdateSessionIntegrationDef + | BrowserbaseGetSessionLiveUrlsIntegrationDef + | None + ) = None + """ + The integration to call + """ + system: SystemDef | None = None + """ + The system to call + """ + api_call: ApiCallDef | None = None + """ + The API call to make + """ + computer_20241022: Computer20241022Def | None = None + """ + (Alpha) Anthropic new tools + """ + text_editor_20241022: TextEditor20241022Def | None = None + bash_20241022: Bash20241022Def | None = None + + +class DummyIntegrationDef(BaseIntegrationDef): + model_config = ConfigDict( + populate_by_name=True, + ) + provider: Literal["dummy"] = "dummy" + + +class DummyIntegrationDefUpdate(BaseIntegrationDefUpdate): + model_config = ConfigDict( + populate_by_name=True, + ) + provider: Literal["dummy"] = "dummy" + + +class EmailArguments(BaseModel): + """ + Arguments for Email sending + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + to: str + """ + The email address to send the email to + """ + from_: Annotated[str, Field(alias="from")] + """ + The email address to send the email from + """ + subject: str + """ + The subject of the email + """ + body: str + """ + The body of the email + """ + + +class EmailArgumentsUpdate(BaseModel): + """ + Arguments for Email sending + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + to: str | None = None + """ + The email address to send the email to + """ + from_: Annotated[str | None, Field(alias="from")] = None + """ + The email address to send the email from + """ + subject: str | None = None + """ + The subject of the email + """ + body: str | None = None + """ + The body of the email + """ + + +class EmailIntegrationDef(BaseIntegrationDef): + """ + Email integration definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + provider: Literal["email"] = "email" + """ + The provider must be "email" + """ + method: str | None = None + """ + The specific method of the integration to call + """ + setup: EmailSetup | None = None + """ + The setup parameters for Email + """ + arguments: EmailArguments | None = None + """ + The arguments for Email sending + """ + + +class EmailIntegrationDefUpdate(BaseIntegrationDefUpdate): + """ + Email integration definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + provider: Literal["email"] = "email" + """ + The provider must be "email" + """ + method: str | None = None + """ + The specific method of the integration to call + """ + setup: EmailSetupUpdate | None = None + """ + The setup parameters for Email + """ + arguments: EmailArgumentsUpdate | None = None + """ + The arguments for Email sending + """ + + +class EmailSetup(BaseModel): + """ + Setup parameters for Email integration + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + host: str + """ + The host of the email server + """ + port: int + """ + The port of the email server + """ + user: str + """ + The username of the email server + """ + password: str + """ + The password of the email server + """ + + +class EmailSetupUpdate(BaseModel): + """ + Setup parameters for Email integration + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + host: str | None = None + """ + The host of the email server + """ + port: int | None = None + """ + The port of the email server + """ + user: str | None = None + """ + The username of the email server + """ + password: str | None = None + """ + The password of the email server + """ + + +class FunctionCallOption(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + name: str + """ + The name of the function + """ + + +class FunctionDef(BaseModel): + """ + Function definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + name: Any | None = None + """ + DO NOT USE: This will be overriden by the tool name. Here only for compatibility reasons. + """ + description: Any | None = None + """ + DO NOT USE: This will be overriden by the tool description. Here only for compatibility reasons. + """ + parameters: dict[str, Any] | None = None + """ + The parameters the function accepts + """ + + +class NamedToolChoice(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + function: FunctionCallOption | None = None + + +class PatchToolRequest(BaseModel): + """ + Payload for patching a tool + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + name: Annotated[str | None, Field(max_length=40, pattern="^[^\\W0-9]\\w*$")] = None + """ + Name of the tool (must be unique for this agent and a valid python identifier string ) + """ + description: str | None = None + """ + Description of the tool + """ + function: FunctionDef | None = None + """ + The function to call + """ + integration: ( + DummyIntegrationDefUpdate + | BraveIntegrationDefUpdate + | EmailIntegrationDefUpdate + | SpiderIntegrationDefUpdate + | WikipediaIntegrationDefUpdate + | WeatherIntegrationDefUpdate + | BrowserbaseContextIntegrationDefUpdate + | BrowserbaseListSessionsIntegrationDefUpdate + | BrowserbaseCreateSessionIntegrationDefUpdate + | BrowserbaseGetSessionIntegrationDefUpdate + | BrowserbaseUpdateSessionIntegrationDefUpdate + | BrowserbaseGetSessionLiveUrlsIntegrationDefUpdate + | None + ) = None + """ + The integration to call + """ + system: SystemDefUpdate | None = None + """ + The system to call + """ + api_call: ApiCallDefUpdate | None = None + """ + The API call to make + """ + computer_20241022: Computer20241022DefUpdate | None = None + """ + (Alpha) Anthropic new tools + """ + text_editor_20241022: TextEditor20241022DefUpdate | None = None + bash_20241022: Bash20241022DefUpdate | None = None + + +class SpiderFetchArguments(BaseModel): + """ + Arguments for Spider integration + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + url: AnyUrl + """ + The URL to fetch data from + """ + mode: Literal["scrape"] = "scrape" + """ + The type of crawler to use + """ + params: dict[str, Any] | None = None + """ + Additional parameters for the Spider API + """ + + +class SpiderFetchArgumentsUpdate(BaseModel): + """ + Arguments for Spider integration + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + url: AnyUrl | None = None + """ + The URL to fetch data from + """ + mode: Literal["scrape"] = "scrape" + """ + The type of crawler to use + """ + params: dict[str, Any] | None = None + """ + Additional parameters for the Spider API + """ + + +class SpiderIntegrationDef(BaseIntegrationDef): + """ + Spider integration definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + provider: Literal["spider"] = "spider" + """ + The provider must be "spider" + """ + method: str | None = None + """ + The specific method of the integration to call + """ + setup: SpiderSetup | None = None + """ + The setup parameters for Spider + """ + arguments: SpiderFetchArguments | None = None + """ + The arguments for Spider + """ + + +class SpiderIntegrationDefUpdate(BaseIntegrationDefUpdate): + """ + Spider integration definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + provider: Literal["spider"] = "spider" + """ + The provider must be "spider" + """ + method: str | None = None + """ + The specific method of the integration to call + """ + setup: SpiderSetupUpdate | None = None + """ + The setup parameters for Spider + """ + arguments: SpiderFetchArgumentsUpdate | None = None + """ + The arguments for Spider + """ + + +class SpiderSetup(BaseModel): + """ + Setup parameters for Spider integration + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + spider_api_key: str + """ + The API key for Spider + """ + + +class SpiderSetupUpdate(BaseModel): + """ + Setup parameters for Spider integration + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + spider_api_key: str | None = None + """ + The API key for Spider + """ + + +class SystemDef(BaseModel): + """ + System definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + resource: Literal["agent", "user", "task", "execution", "doc", "session", "job"] + """ + Resource is the name of the resource to use + """ + operation: Literal[ + "create", + "update", + "patch", + "create_or_update", + "embed", + "change_status", + "search", + "chat", + "history", + "delete", + "get", + "list", + ] + """ + Operation is the name of the operation to perform + """ + resource_id: UUID | None = None + """ + Resource id (if applicable) + """ + subresource: Literal["tool", "doc", "execution", "transition"] | None = None + """ + Sub-resource type (if applicable) + """ + arguments: dict[str, Any] | None = None + """ + The arguments to pre-apply to the system call + """ + + +class SystemDefUpdate(BaseModel): + """ + System definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + resource: ( + Literal["agent", "user", "task", "execution", "doc", "session", "job"] | None + ) = None + """ + Resource is the name of the resource to use + """ + operation: ( + Literal[ + "create", + "update", + "patch", + "create_or_update", + "embed", + "change_status", + "search", + "chat", + "history", + "delete", + "get", + "list", + ] + | None + ) = None + """ + Operation is the name of the operation to perform + """ + resource_id: UUID | None = None + """ + Resource id (if applicable) + """ + subresource: Literal["tool", "doc", "execution", "transition"] | None = None + """ + Sub-resource type (if applicable) + """ + arguments: dict[str, Any] | None = None + """ + The arguments to pre-apply to the system call + """ + + +class TextEditor20241022Def(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + type: Literal["text_editor_20241022"] = "text_editor_20241022" + name: str = "str_replace_editor" + + +class TextEditor20241022DefUpdate(TextEditor20241022Def): + pass + + +class Tool(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + name: Annotated[str, Field(max_length=40, pattern="^[^\\W0-9]\\w*$")] + """ + Name of the tool (must be unique for this agent and a valid python identifier string ) + """ + description: str | None = None + """ + Description of the tool + """ + function: FunctionDef | None = None + """ + The function to call + """ + integration: ( + DummyIntegrationDef + | BraveIntegrationDef + | EmailIntegrationDef + | SpiderIntegrationDef + | WikipediaIntegrationDef + | WeatherIntegrationDef + | BrowserbaseContextIntegrationDef + | BrowserbaseListSessionsIntegrationDef + | BrowserbaseCreateSessionIntegrationDef + | BrowserbaseGetSessionIntegrationDef + | BrowserbaseUpdateSessionIntegrationDef + | BrowserbaseGetSessionLiveUrlsIntegrationDef + | None + ) = None + """ + The integration to call + """ + system: SystemDef | None = None + """ + The system to call + """ + api_call: ApiCallDef | None = None + """ + The API call to make + """ + computer_20241022: Computer20241022Def | None = None + """ + (Alpha) Anthropic new tools + """ + text_editor_20241022: TextEditor20241022Def | None = None + bash_20241022: Bash20241022Def | None = None + created_at: Annotated[AwareDatetime, Field(json_schema_extra={"readOnly": True})] + """ + When this resource was created as UTC date-time + """ + updated_at: Annotated[AwareDatetime, Field(json_schema_extra={"readOnly": True})] + """ + When this resource was updated as UTC date-time + """ + id: Annotated[UUID, Field(json_schema_extra={"readOnly": True})] + + +class ToolResponse(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + id: UUID + output: dict[str, Any] + """ + The output of the tool + """ -class CreateToolRequest(BaseModel): +class UpdateToolRequest(BaseModel): """ - Payload for creating a tool + Payload for updating a tool """ model_config = ConfigDict( @@ -160,7 +1237,21 @@ class CreateToolRequest(BaseModel): """ The function to call """ - integration: IntegrationDef | None = None + integration: ( + DummyIntegrationDef + | BraveIntegrationDef + | EmailIntegrationDef + | SpiderIntegrationDef + | WikipediaIntegrationDef + | WeatherIntegrationDef + | BrowserbaseContextIntegrationDef + | BrowserbaseListSessionsIntegrationDef + | BrowserbaseCreateSessionIntegrationDef + | BrowserbaseGetSessionIntegrationDef + | BrowserbaseUpdateSessionIntegrationDef + | BrowserbaseGetSessionLiveUrlsIntegrationDef + | None + ) = None """ The integration to call """ @@ -172,339 +1263,443 @@ class CreateToolRequest(BaseModel): """ The API call to make """ + computer_20241022: Computer20241022Def | None = None + """ + (Alpha) Anthropic new tools + """ + text_editor_20241022: TextEditor20241022Def | None = None + bash_20241022: Bash20241022Def | None = None -class FunctionCallOption(BaseModel): +class WeatherGetArguments(BaseModel): + """ + Arguments for Weather + """ + model_config = ConfigDict( populate_by_name=True, ) - name: str + location: str """ - The name of the function + The location for which to fetch weather data """ -class FunctionDef(BaseModel): +class WeatherGetArgumentsUpdate(BaseModel): """ - Function definition + Arguments for Weather """ model_config = ConfigDict( populate_by_name=True, ) - name: Any | None = None - """ - DO NOT USE: This will be overriden by the tool name. Here only for compatibility reasons. - """ - description: Any | None = None - """ - DO NOT USE: This will be overriden by the tool description. Here only for compatibility reasons. + location: str | None = None """ - parameters: dict[str, Any] | None = None - """ - The parameters the function accepts + The location for which to fetch weather data """ -class IntegrationDef(BaseModel): +class WeatherIntegrationDef(BaseIntegrationDef): """ - Integration definition + Weather integration definition """ model_config = ConfigDict( populate_by_name=True, ) - provider: ( - Literal[ - "dummy", - "hacker_news", - "weather", - "wikipedia", - "spider", - "brave", - "browserbase", - "email", - ] - | str - ) + provider: Literal["weather"] = "weather" """ - The provider of the integration + The provider must be "weather" """ method: str | None = None """ The specific method of the integration to call """ - setup: dict[str, Any] | None = None + setup: WeatherSetup | None = None """ - The setup parameters the integration accepts + The setup parameters for Weather """ - arguments: dict[str, Any] | None = None + arguments: WeatherGetArguments | None = None """ - The arguments to pre-apply to the integration call + The arguments for Weather """ -class IntegrationDefUpdate(BaseModel): +class WeatherIntegrationDefUpdate(BaseIntegrationDefUpdate): """ - Integration definition + Weather integration definition """ model_config = ConfigDict( populate_by_name=True, ) - provider: ( - Literal[ - "dummy", - "hacker_news", - "weather", - "wikipedia", - "spider", - "brave", - "browserbase", - "email", - ] - | str - | None - ) = None + provider: Literal["weather"] = "weather" """ - The provider of the integration + The provider must be "weather" """ method: str | None = None """ The specific method of the integration to call """ - setup: dict[str, Any] | None = None + setup: WeatherSetupUpdate | None = None """ - The setup parameters the integration accepts + The setup parameters for Weather """ - arguments: dict[str, Any] | None = None + arguments: WeatherGetArgumentsUpdate | None = None """ - The arguments to pre-apply to the integration call + The arguments for Weather """ -class NamedToolChoice(BaseModel): +class WeatherSetup(BaseModel): + """ + Integration definition for Weather + """ + model_config = ConfigDict( populate_by_name=True, ) - function: FunctionCallOption | None = None + openweathermap_api_key: str + """ + The api key for OpenWeatherMap + """ -class PatchToolRequest(BaseModel): +class WeatherSetupUpdate(BaseModel): """ - Payload for patching a tool + Integration definition for Weather """ model_config = ConfigDict( populate_by_name=True, ) - name: Annotated[str | None, Field(None, max_length=40, pattern="^[^\\W0-9]\\w*$")] + openweathermap_api_key: str | None = None """ - Name of the tool (must be unique for this agent and a valid python identifier string ) + The api key for OpenWeatherMap """ - description: str | None = None + + +class WikipediaIntegrationDef(BaseIntegrationDef): """ - Description of the tool + Wikipedia integration definition """ - function: FunctionDef | None = None + + model_config = ConfigDict( + populate_by_name=True, + ) + provider: Literal["wikipedia"] = "wikipedia" """ - The function to call + The provider must be "wikipedia" """ - integration: IntegrationDefUpdate | None = None + method: str | None = None """ - The integration to call + The specific method of the integration to call """ - system: SystemDefUpdate | None = None + setup: Any | None = None """ - The system to call + The setup parameters for Wikipedia """ - api_call: ApiCallDefUpdate | None = None + arguments: WikipediaSearchArguments | None = None """ - The API call to make + The arguments for Wikipedia Search """ -class SystemDef(BaseModel): +class WikipediaIntegrationDefUpdate(BaseIntegrationDefUpdate): """ - System definition + Wikipedia integration definition """ model_config = ConfigDict( populate_by_name=True, ) - resource: Literal["agent", "user", "task", "execution", "doc", "session", "job"] + provider: Literal["wikipedia"] = "wikipedia" """ - Resource is the name of the resource to use + The provider must be "wikipedia" """ - operation: Literal[ - "create", - "update", - "patch", - "create_or_update", - "embed", - "change_status", - "search", - "chat", - "history", - "delete", - "get", - "list", - ] + method: str | None = None """ - Operation is the name of the operation to perform + The specific method of the integration to call """ - resource_id: UUID | None = None + setup: Any | None = None """ - Resource id (if applicable) + The setup parameters for Wikipedia """ - subresource: Literal["tool", "doc", "execution", "transition"] | None = None + arguments: WikipediaSearchArgumentsUpdate | None = None """ - Sub-resource type (if applicable) + The arguments for Wikipedia Search """ - arguments: dict[str, Any] | None = None + + +class WikipediaSearchArguments(BaseModel): """ - The arguments to pre-apply to the system call + Arguments for Wikipedia Search + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + query: str + """ + The search query string + """ + load_max_docs: Annotated[int, Field(ge=1, le=10)] = 2 + """ + Maximum number of documents to load """ -class SystemDefUpdate(BaseModel): +class WikipediaSearchArgumentsUpdate(BaseModel): """ - System definition + Arguments for Wikipedia Search """ model_config = ConfigDict( populate_by_name=True, ) - resource: ( - Literal["agent", "user", "task", "execution", "doc", "session", "job"] | None - ) = None + query: str | None = None """ - Resource is the name of the resource to use + The search query string """ - operation: ( + load_max_docs: Annotated[int, Field(ge=1, le=10)] = 2 + """ + Maximum number of documents to load + """ + + +class BaseBrowserbaseIntegrationDef(BaseIntegrationDef): + """ + The base definition for a browserbase integration + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + provider: Literal["browserbase"] = "browserbase" + setup: BrowserbaseSetup | None = None + method: ( Literal[ - "create", - "update", - "patch", - "create_or_update", - "embed", - "change_status", - "search", - "chat", - "history", - "delete", - "get", - "list", + "get_live_urls", + "list_sessions", + "create_session", + "get_session", + "update_session", + "create_context", + "upload_extension", + "get_extension", + "delete_extension", + "create_session_uploads", + "get_session_downloads", + "get_logs", + "get_recordings", ] | None ) = None + arguments: Any | None = None + + +class BaseBrowserbaseIntegrationDefUpdate(BaseIntegrationDefUpdate): """ - Operation is the name of the operation to perform + The base definition for a browserbase integration """ - resource_id: UUID | None = None + + model_config = ConfigDict( + populate_by_name=True, + ) + provider: Literal["browserbase"] = "browserbase" + setup: BrowserbaseSetupUpdate | None = None + method: ( + Literal[ + "get_live_urls", + "list_sessions", + "create_session", + "get_session", + "update_session", + "create_context", + "upload_extension", + "get_extension", + "delete_extension", + "create_session_uploads", + "get_session_downloads", + "get_logs", + "get_recordings", + ] + | None + ) = None + arguments: Any | None = None + + +class BrowserbaseContextIntegrationDef(BaseBrowserbaseIntegrationDef): """ - Resource id (if applicable) + browserbase context provider """ - subresource: Literal["tool", "doc", "execution", "transition"] | None = None + + model_config = ConfigDict( + populate_by_name=True, + ) + method: Literal["create_context"] = "create_context" """ - Sub-resource type (if applicable) + The specific method of the integration to call """ - arguments: dict[str, Any] | None = None + arguments: Any | None = None """ - The arguments to pre-apply to the system call + The arguments for the method """ -class Tool(BaseModel): +class BrowserbaseContextIntegrationDefUpdate(BaseBrowserbaseIntegrationDefUpdate): + """ + browserbase context provider + """ + model_config = ConfigDict( populate_by_name=True, ) - name: Annotated[str, Field(max_length=40, pattern="^[^\\W0-9]\\w*$")] + method: Literal["create_context"] = "create_context" """ - Name of the tool (must be unique for this agent and a valid python identifier string ) + The specific method of the integration to call """ - description: str | None = None + arguments: Any | None = None """ - Description of the tool + The arguments for the method """ - function: FunctionDef | None = None + + +class BrowserbaseCreateSessionIntegrationDef(BaseBrowserbaseIntegrationDef): """ - The function to call + browserbase create session integration definition """ - integration: IntegrationDef | None = None + + model_config = ConfigDict( + populate_by_name=True, + ) + method: Literal["create_session"] = "create_session" + arguments: BrowserbaseCreateSessionArguments """ - The integration to call + The arguments for the method """ - system: SystemDef | None = None + + +class BrowserbaseCreateSessionIntegrationDefUpdate(BaseBrowserbaseIntegrationDefUpdate): """ - The system to call + browserbase create session integration definition """ - api_call: ApiCallDef | None = None + + model_config = ConfigDict( + populate_by_name=True, + ) + method: Literal["create_session"] = "create_session" + arguments: BrowserbaseCreateSessionArgumentsUpdate | None = None """ - The API call to make + The arguments for the method """ - created_at: Annotated[AwareDatetime, Field(json_schema_extra={"readOnly": True})] + + +class BrowserbaseGetSessionIntegrationDef(BaseBrowserbaseIntegrationDef): """ - When this resource was created as UTC date-time + browserbase get session integration definition """ - updated_at: Annotated[AwareDatetime, Field(json_schema_extra={"readOnly": True})] + + model_config = ConfigDict( + populate_by_name=True, + ) + method: Literal["get_session"] = "get_session" + arguments: BrowserbaseGetSessionArguments + + +class BrowserbaseGetSessionIntegrationDefUpdate(BaseBrowserbaseIntegrationDefUpdate): """ - When this resource was updated as UTC date-time + browserbase get session integration definition """ - id: Annotated[UUID, Field(json_schema_extra={"readOnly": True})] - -class ToolResponse(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - id: UUID - output: dict[str, Any] + method: Literal["get_session"] = "get_session" + arguments: BrowserbaseGetSessionArgumentsUpdate | None = None + + +class BrowserbaseGetSessionLiveUrlsIntegrationDef(BaseBrowserbaseIntegrationDef): """ - The output of the tool + browserbase get session live urls integration definition """ + model_config = ConfigDict( + populate_by_name=True, + ) + method: Literal["get_live_urls"] = "get_live_urls" + arguments: BrowserbaseGetSessionLiveUrlsArguments + -class UpdateToolRequest(BaseModel): +class BrowserbaseGetSessionLiveUrlsIntegrationDefUpdate( + BaseBrowserbaseIntegrationDefUpdate +): """ - Payload for updating a tool + browserbase get session live urls integration definition """ model_config = ConfigDict( populate_by_name=True, ) - name: Annotated[str, Field(max_length=40, pattern="^[^\\W0-9]\\w*$")] + method: Literal["get_live_urls"] = "get_live_urls" + arguments: BrowserbaseGetSessionLiveUrlsArgumentsUpdate | None = None + + +class BrowserbaseListSessionsIntegrationDef(BaseBrowserbaseIntegrationDef): """ - Name of the tool (must be unique for this agent and a valid python identifier string ) + browserbase list sessions integration definition """ - description: str | None = None + + model_config = ConfigDict( + populate_by_name=True, + ) + method: Literal["list_sessions"] = "list_sessions" """ - Description of the tool + The specific method of the integration to call """ - function: FunctionDef | None = None + arguments: BrowserbaseListSessionsArguments | None = None """ - The function to call + The arguments for the method """ - integration: IntegrationDef | None = None + + +class BrowserbaseListSessionsIntegrationDefUpdate(BaseBrowserbaseIntegrationDefUpdate): """ - The integration to call + browserbase list sessions integration definition """ - system: SystemDef | None = None + + model_config = ConfigDict( + populate_by_name=True, + ) + method: Literal["list_sessions"] = "list_sessions" """ - The system to call + The specific method of the integration to call """ - api_call: ApiCallDef | None = None + arguments: BrowserbaseListSessionsArguments | None = None """ - The API call to make + The arguments for the method """ -class ChosenFunctionCall(ChosenToolCall): +class BrowserbaseUpdateSessionIntegrationDef(BaseBrowserbaseIntegrationDef): + """ + browserbase update session integration definition + """ + model_config = ConfigDict( populate_by_name=True, ) - type: Literal["function"] = "function" - function: FunctionCallOption + method: Literal["update_session"] = "update_session" + arguments: BrowserbaseUpdateSessionArguments + + +class BrowserbaseUpdateSessionIntegrationDefUpdate(BaseBrowserbaseIntegrationDefUpdate): """ - The function to call + browserbase update session integration definition """ + + model_config = ConfigDict( + populate_by_name=True, + ) + method: Literal["update_session"] = "update_session" + arguments: BrowserbaseUpdateSessionArgumentsUpdate | None = None diff --git a/agents-api/agents_api/autogen/Users.py b/agents-api/agents_api/autogen/Users.py index 76af9bbdd..720e21846 100644 --- a/agents-api/agents_api/autogen/Users.py +++ b/agents-api/agents_api/autogen/Users.py @@ -21,11 +21,10 @@ class CreateUserRequest(BaseModel): name: Annotated[ str, Field( - "", max_length=120, pattern="^[\\p{L}\\p{Nl}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]+[\\p{ID_Start}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]*$", ), - ] + ] = "" """ Name of the user """ @@ -47,11 +46,10 @@ class PatchUserRequest(BaseModel): name: Annotated[ str, Field( - "", max_length=120, pattern="^[\\p{L}\\p{Nl}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]+[\\p{ID_Start}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]*$", ), - ] + ] = "" """ Name of the user """ @@ -73,11 +71,10 @@ class UpdateUserRequest(BaseModel): name: Annotated[ str, Field( - "", max_length=120, pattern="^[\\p{L}\\p{Nl}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]+[\\p{ID_Start}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]*$", ), - ] + ] = "" """ Name of the user """ @@ -104,11 +101,10 @@ class User(BaseModel): name: Annotated[ str, Field( - "", max_length=120, pattern="^[\\p{L}\\p{Nl}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]+[\\p{ID_Start}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]*$", ), - ] + ] = "" """ Name of the user """ diff --git a/agents-api/agents_api/autogen/openapi_model.py b/agents-api/agents_api/autogen/openapi_model.py index fd06f38a8..2e84c818a 100644 --- a/agents-api/agents_api/autogen/openapi_model.py +++ b/agents-api/agents_api/autogen/openapi_model.py @@ -76,6 +76,14 @@ class InputChatMLMessage(Message): pass +IntegrationDef = ( + BraveIntegrationDef + | EmailIntegrationDef + | SpiderIntegrationDef + | WikipediaIntegrationDef + | WeatherIntegrationDef +) + # Patches # ------- @@ -312,13 +320,13 @@ def validate_subworkflows(self): ChatMLContent = ( list[ChatMLTextContentPart | ChatMLImageContentPart] | Tool - | ChosenToolCall + | BaseChosenToolCall | str | ToolResponse | list[ list[ChatMLTextContentPart | ChatMLImageContentPart] | Tool - | ChosenToolCall + | BaseChosenToolCall | str | ToolResponse ] diff --git a/agents-api/agents_api/common/exceptions/tasks.py b/agents-api/agents_api/common/exceptions/tasks.py index 86fbaa65d..1f14e2e85 100644 --- a/agents-api/agents_api/common/exceptions/tasks.py +++ b/agents-api/agents_api/common/exceptions/tasks.py @@ -1,7 +1,12 @@ """ -This module defines non-retryable error types and provides a function to check -if a given error is non-retryable. These are used in conjunction with custom -Temporal interceptors to prevent unnecessary retries of certain error types. +🎯 Error Handling: The Art of Knowing When to Try Again + +This module is like a bouncer at an error club - it decides which errors get a +second chance and which ones are permanently banned. Some errors are just having +a bad day (like network timeouts), while others are fundamentally problematic +(like trying to divide by zero... seriously, who does that?). + +Remember: To err is human, to retry divine... but only if it makes sense! """ import asyncio @@ -19,21 +24,20 @@ import requests import temporalio.exceptions -### FIXME: This should be the opposite. We should retry on only known errors - -# List of error types that should not be retried +# 🚫 The "No Second Chances" Club - errors that we won't retry +# Because sometimes, no means no! NON_RETRYABLE_ERROR_TYPES = ( - # Temporal-specific errors + # Temporal-specific errors (when time itself says no) temporalio.exceptions.WorkflowAlreadyStartedError, temporalio.exceptions.TerminatedError, temporalio.exceptions.CancelledError, # - # Built-in Python exceptions + # Built-in Python exceptions (the classics that never go out of style) TypeError, AssertionError, SyntaxError, ValueError, - ZeroDivisionError, + ZeroDivisionError, # Because dividing by zero is still not cool IndexError, AttributeError, LookupError, @@ -42,29 +46,28 @@ KeyError, NameError, NotImplementedError, - RecursionError, + RecursionError, # When your code goes down the rabbit hole too deep RuntimeError, StopIteration, StopAsyncIteration, - IndentationError, + IndentationError, # Spaces vs tabs: the eternal debate TabError, # - # Unicode-related errors + # Unicode-related errors (when characters misbehave) UnicodeError, UnicodeEncodeError, UnicodeDecodeError, UnicodeTranslateError, # - # HTTP and API-related errors - fastapi.exceptions.HTTPException, + # HTTP and API-related errors (when the web says "nope") fastapi.exceptions.RequestValidationError, # - # Asynchronous programming errors + # Asynchronous programming errors (async/await gone wrong) asyncio.CancelledError, asyncio.InvalidStateError, GeneratorExit, # - # Third-party library exceptions + # Third-party library exceptions (when other people's code says no) jinja2.exceptions.TemplateSyntaxError, jinja2.exceptions.TemplateNotFound, jsonschema.exceptions.ValidationError, @@ -72,12 +75,12 @@ requests.exceptions.InvalidURL, requests.exceptions.MissingSchema, # - # Box exceptions + # Box exceptions (when your box is broken) box.exceptions.BoxKeyError, box.exceptions.BoxTypeError, box.exceptions.BoxValueError, # - # Beartype exceptions + # Beartype exceptions (when your types are unbearable) beartype.roar.BeartypeException, beartype.roar.BeartypeDecorException, beartype.roar.BeartypeDecorHintException, @@ -92,42 +95,93 @@ beartype.roar.BeartypeDecorHintParamDefaultViolation, beartype.roar.BeartypeDoorHintViolation, # - # LiteLLM exceptions + # LiteLLM exceptions (when AI has a bad day) litellm.exceptions.NotFoundError, litellm.exceptions.InvalidRequestError, litellm.exceptions.AuthenticationError, litellm.exceptions.ServiceUnavailableError, litellm.exceptions.OpenAIError, - litellm.exceptions.APIError, +) + +# 🔄 The "Try Again" Club - errors that deserve another shot +# Because everyone deserves a second chance... or third... or fourth... +RETRYABLE_ERROR_TYPES = ( + # LiteLLM exceptions (when AI needs a coffee break) + litellm.exceptions.RateLimitError, + litellm.exceptions.APIError, # Added to retry on "APIError: OpenAIException - Connection error" + # + # HTTP/Network related errors (internet having a bad hair day) + requests.exceptions.ConnectionError, + requests.exceptions.Timeout, + requests.exceptions.ConnectTimeout, + requests.exceptions.ReadTimeout, + httpx.ConnectError, + httpx.ConnectTimeout, + httpx.ReadTimeout, + httpx.WriteTimeout, + httpx.PoolTimeout, + # + # Standard library errors that are typically transient (like a bad mood) + ConnectionError, + TimeoutError, + OSError, # Covers many IO-related errors that may be transient + IOError, + # + # Database/storage related (when the database needs a nap) + asyncio.TimeoutError, +) + +# HTTP status codes that say "maybe try again later?" +RETRYABLE_HTTP_STATUS_CODES = ( + 408, # Request Timeout (server needs a coffee break) + 429, # Too Many Requests (slow down, speedster!) + 503, # Service Unavailable (server is having a moment) + 504, # Gateway Timeout (the internet took a detour) ) -### FIXME: This should be the opposite. So `is_retryable_error` instead of `is_non_retryable_error` -def is_non_retryable_error(error: BaseException) -> bool: +def is_retryable_error(error: BaseException) -> bool: """ - Determines if the given error is non-retryable. + The Great Error Judge: Decides if an error deserves another chance at life. - This function checks if the error is an instance of any of the error types - defined in NON_RETRYABLE_ERROR_TYPES. + Think of this function as a very understanding but firm teacher - some mistakes + get a do-over, others are learning opportunities (aka failures). Args: - error (Exception): The error to check. + error (Exception): The error that's pleading its case Returns: - bool: True if the error is non-retryable, False otherwise. + bool: True if the error gets another shot, False if it's game over """ + # First, check if it's in the "permanently banned" list if isinstance(error, NON_RETRYABLE_ERROR_TYPES): + return False + + # Check if it's in the "VIP retry club" + if isinstance(error, RETRYABLE_ERROR_TYPES): return True - # Check for specific HTTP errors (status code == 429) + # Special handling for HTTP errors (because they're special snowflakes) + if isinstance(error, fastapi.exceptions.HTTPException): + if error.status_code in RETRYABLE_HTTP_STATUS_CODES: + return True + + if isinstance(error, httpx.HTTPStatusError): + if error.response.status_code in RETRYABLE_HTTP_STATUS_CODES: + return True + + # If we don't know this error, we play it safe and don't retry + # (stranger danger!) + return False + + # Check for specific HTTP errors that should be retried + if isinstance(error, fastapi.exceptions.HTTPException): + if error.status_code in RETRYABLE_HTTP_STATUS_CODES: + return True + if isinstance(error, httpx.HTTPStatusError): - if error.response.status_code in ( - 408, - 429, - 503, - 504, - ): # pytype: disable=attribute-error - return False + if error.response.status_code in RETRYABLE_HTTP_STATUS_CODES: + return True # If we don't know about the error, we should not retry - return True + return False diff --git a/agents-api/agents_api/common/interceptors.py b/agents-api/agents_api/common/interceptors.py index 408005da5..40600a818 100644 --- a/agents-api/agents_api/common/interceptors.py +++ b/agents-api/agents_api/common/interceptors.py @@ -23,7 +23,7 @@ ReadOnlyContextError, ) -from .exceptions.tasks import is_non_retryable_error +from .exceptions.tasks import is_retryable_error class CustomActivityInterceptor(ActivityInboundInterceptor): @@ -36,77 +36,94 @@ class CustomActivityInterceptor(ActivityInboundInterceptor): """ async def execute_activity(self, input: ExecuteActivityInput): + """ + 🎭 The Activity Whisperer: Handles activity execution with style and grace + + This is like a safety net for your activities - catching errors and deciding + their fate with the wisdom of a fortune cookie. + """ try: return await super().execute_activity(input) except ( - ContinueAsNewError, - ReadOnlyContextError, - NondeterminismError, - RPCError, - CompleteAsyncError, - TemporalError, - FailureError, - ApplicationError, + ContinueAsNewError, # When you need a fresh start + ReadOnlyContextError, # When someone tries to write in a museum + NondeterminismError, # When chaos theory kicks in + RPCError, # When computers can't talk to each other + CompleteAsyncError, # When async goes wrong + TemporalError, # When time itself rebels + FailureError, # When failure is not an option, but happens anyway + ApplicationError, # When the app says "nope" ): raise except BaseException as e: - if is_non_retryable_error(e): + if not is_retryable_error(e): + # If it's not retryable, we wrap it in a nice bow (ApplicationError) + # and mark it as non-retryable to prevent further attempts raise ApplicationError( str(e), type=type(e).__name__, non_retryable=True, ) + # For retryable errors, we'll let Temporal retry with backoff + # Default retry policy ensures at least 2 retries raise class CustomWorkflowInterceptor(WorkflowInboundInterceptor): """ - Custom interceptor for Temporal workflows. + 🎪 The Workflow Circus Ringmaster - This interceptor catches exceptions during workflow execution and - raises them as non-retryable ApplicationErrors if they are identified - as non-retryable errors. + This interceptor is like a circus ringmaster - keeping all the workflow acts + running smoothly and catching any lions (errors) that escape their cages. """ async def execute_workflow(self, input: ExecuteWorkflowInput): + """ + 🎪 The Main Event: Workflow Execution Extravaganza! + + Watch as we gracefully handle errors like a trapeze artist catching their partner! + """ try: return await super().execute_workflow(input) except ( - ContinueAsNewError, - ReadOnlyContextError, - NondeterminismError, - RPCError, - CompleteAsyncError, - TemporalError, - FailureError, - ApplicationError, + ContinueAsNewError, # The show must go on! + ReadOnlyContextError, # No touching, please! + NondeterminismError, # When butterflies cause hurricanes + RPCError, # Lost in translation + CompleteAsyncError, # Async said "bye" too soon + TemporalError, # Time is relative, errors are absolute + FailureError, # Task failed successfully + ApplicationError, # App.exe has stopped working ): raise except BaseException as e: - if is_non_retryable_error(e): + if not is_retryable_error(e): + # Pack the error in a nice box with a "do not retry" sticker raise ApplicationError( str(e), type=type(e).__name__, non_retryable=True, ) + # Let it retry - everyone deserves a second (or third) chance! raise class CustomInterceptor(Interceptor): """ - Custom Interceptor that combines both activity and workflow interceptors. + 🎭 The Grand Interceptor: Master of Ceremonies - This class is responsible for creating and returning the custom - interceptors for both activities and workflows. + This is like the backstage manager of a theater - making sure both the + activity actors and workflow directors have their interceptor costumes on. """ def intercept_activity( self, next: ActivityInboundInterceptor ) -> ActivityInboundInterceptor: """ - Creates and returns a CustomActivityInterceptor. + 🎬 Activity Interceptor Factory: Where the magic begins! - This method is called by Temporal to intercept activity executions. + Creating custom activity interceptors faster than a caffeinated barista + makes espresso shots. """ return CustomActivityInterceptor(super().intercept_activity(next)) @@ -114,8 +131,9 @@ def workflow_interceptor_class( self, input: WorkflowInterceptorClassInput ) -> Optional[Type[WorkflowInboundInterceptor]]: """ - Returns the CustomWorkflowInterceptor class. + 🎪 Workflow Interceptor Class Selector - This method is called by Temporal to get the workflow interceptor class. + Like a matchmaker for workflows and their interceptors - a match made in + exception handling heaven! """ return CustomWorkflowInterceptor diff --git a/agents-api/agents_api/models/utils.py b/agents-api/agents_api/models/utils.py index d618f97b6..ef38f9baf 100644 --- a/agents-api/agents_api/models/utils.py +++ b/agents-api/agents_api/models/utils.py @@ -202,6 +202,21 @@ def cozo_query_dec(func: Callable[P, tuple[str | list[Any], dict]]): from pprint import pprint + from tenacity import ( + retry, + retry_if_exception, + stop_after_attempt, + wait_exponential, + ) + + def is_resource_busy(e: Exception) -> bool: + return isinstance(e, HTTPException) and e.status_code == 429 + + @retry( + stop=stop_after_attempt(2), + wait=wait_exponential(multiplier=1, min=4, max=10), + retry=retry_if_exception(is_resource_busy), + ) @wraps(func) def wrapper(*args: P.args, client=None, **kwargs: P.kwargs) -> pd.DataFrame: queries, variables = func(*args, **kwargs) diff --git a/agents-api/agents_api/workflows/task_execution/__init__.py b/agents-api/agents_api/workflows/task_execution/__init__.py index 294f5d9f3..313dd93c1 100644 --- a/agents-api/agents_api/workflows/task_execution/__init__.py +++ b/agents-api/agents_api/workflows/task_execution/__init__.py @@ -18,13 +18,13 @@ from ...activities.sync_items_remote import load_inputs_remote, save_inputs_remote from ...autogen.openapi_model import ( ApiCallDef, + BaseIntegrationDef, ErrorWorkflowStep, EvaluateStep, ForeachDo, ForeachStep, GetStep, IfElseWorkflowStep, - IntegrationDef, LogStep, MapReduceStep, ParallelStep, @@ -462,7 +462,7 @@ async def run( if integration_spec is None: raise ApplicationError(f"Integration {tool_name} not found") - integration = IntegrationDef( + integration = BaseIntegrationDef( provider=integration_spec.spec["provider"], setup=integration_spec.spec["setup"], method=integration_spec.spec["method"], diff --git a/agents-api/notebooks/04-remove-messages.ipynb b/agents-api/notebooks/04-remove-messages.ipynb deleted file mode 100644 index e69de29bb..000000000 diff --git a/agents-api/poetry.lock b/agents-api/poetry.lock index 16bd06fa2..3b4feb1f0 100644 --- a/agents-api/poetry.lock +++ b/agents-api/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. [[package]] name = "aiohappyeyeballs" @@ -415,21 +415,20 @@ uvloop = ["uvloop (>=0.15.2)"] [[package]] name = "bleach" -version = "6.1.0" +version = "6.2.0" description = "An easy safelist-based HTML-sanitizing tool." optional = false -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 = "blis" @@ -474,17 +473,17 @@ numpy = ">=2.0.0,<3.0.0" [[package]] name = "boto3" -version = "1.35.44" +version = "1.35.51" description = "The AWS SDK for Python" optional = false python-versions = ">=3.8" files = [ - {file = "boto3-1.35.44-py3-none-any.whl", hash = "sha256:18416d07b41e6094101a44f8b881047dcec6b846dad0b9f83b9bbf2f0cd93d07"}, - {file = "boto3-1.35.44.tar.gz", hash = "sha256:7f8e8a252458d584d8cf7877c372c4f74ec103356eedf43d2dd9e479f47f3639"}, + {file = "boto3-1.35.51-py3-none-any.whl", hash = "sha256:c922f6a18958af9d8af0489d6d8503b517029d8159b26aa4859a8294561c72e9"}, + {file = "boto3-1.35.51.tar.gz", hash = "sha256:a57c6c7012ecb40c43e565a6f7a891f39efa990ff933eab63cd456f7501c2731"}, ] [package.dependencies] -botocore = ">=1.35.44,<1.36.0" +botocore = ">=1.35.51,<1.36.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.10.0,<0.11.0" @@ -493,13 +492,13 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.35.44" +version = "1.35.51" description = "Low-level, data-driven core of boto 3." optional = false python-versions = ">=3.8" files = [ - {file = "botocore-1.35.44-py3-none-any.whl", hash = "sha256:55388e80624401d017a9a2b8109afd94814f7e666b53e28fce51375cfa8d9326"}, - {file = "botocore-1.35.44.tar.gz", hash = "sha256:1fcd97b966ad8a88de4106fe1bd3bbd6d8dadabe99bbd4a6aadcf11cb6c66b39"}, + {file = "botocore-1.35.51-py3-none-any.whl", hash = "sha256:4d65b00111bd12b98e9f920ecab602cf619cc6a6d0be6e5dd53f517e4b92901c"}, + {file = "botocore-1.35.51.tar.gz", hash = "sha256:a9b3d1da76b3e896ad74605c01d88f596324a3337393d4bfbfa0d6c35822ca9c"}, ] [package.dependencies] @@ -924,13 +923,13 @@ files = [ [[package]] name = "datamodel-code-generator" -version = "0.25.9" +version = "0.26.2" description = "Datamodel Code Generator" optional = false -python-versions = "<4.0,>=3.7" +python-versions = "<4.0,>=3.8" files = [ - {file = "datamodel_code_generator-0.25.9-py3-none-any.whl", hash = "sha256:9e0324233123d6e39a35bc0004771956935889a974aacfd7a0651de11d2219a9"}, - {file = "datamodel_code_generator-0.25.9.tar.gz", hash = "sha256:65ca9807d8edbd88a7f7931c10f4bc1c08bd9bbc5bb0508418a2b6a16590eb65"}, + {file = "datamodel_code_generator-0.26.2-py3-none-any.whl", hash = "sha256:f62576a27c9083f2b22cf8c97ed79a394155f131db3e3bf55cd72893f48c5d80"}, + {file = "datamodel_code_generator-0.26.2.tar.gz", hash = "sha256:03c153434d5a308e31fb4528c0199015054570642ccda8cd2f2cb3cc2c497622"}, ] [package.dependencies] @@ -1179,99 +1178,114 @@ files = [ [[package]] name = "frozenlist" -version = "1.4.1" +version = "1.5.0" description = "A list-like structure which implements collections.abc.MutableSequence" optional = false python-versions = ">=3.8" files = [ - {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f9aa1878d1083b276b0196f2dfbe00c9b7e752475ed3b682025ff20c1c1f51ac"}, - {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:29acab3f66f0f24674b7dc4736477bcd4bc3ad4b896f5f45379a67bce8b96868"}, - {file = "frozenlist-1.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:74fb4bee6880b529a0c6560885fce4dc95936920f9f20f53d99a213f7bf66776"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:590344787a90ae57d62511dd7c736ed56b428f04cd8c161fcc5e7232c130c69a"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:068b63f23b17df8569b7fdca5517edef76171cf3897eb68beb01341131fbd2ad"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c849d495bf5154cd8da18a9eb15db127d4dba2968d88831aff6f0331ea9bd4c"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9750cc7fe1ae3b1611bb8cfc3f9ec11d532244235d75901fb6b8e42ce9229dfe"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9b2de4cf0cdd5bd2dee4c4f63a653c61d2408055ab77b151c1957f221cabf2a"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0633c8d5337cb5c77acbccc6357ac49a1770b8c487e5b3505c57b949b4b82e98"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:27657df69e8801be6c3638054e202a135c7f299267f1a55ed3a598934f6c0d75"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:f9a3ea26252bd92f570600098783d1371354d89d5f6b7dfd87359d669f2109b5"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:4f57dab5fe3407b6c0c1cc907ac98e8a189f9e418f3b6e54d65a718aaafe3950"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e02a0e11cf6597299b9f3bbd3f93d79217cb90cfd1411aec33848b13f5c656cc"}, - {file = "frozenlist-1.4.1-cp310-cp310-win32.whl", hash = "sha256:a828c57f00f729620a442881cc60e57cfcec6842ba38e1b19fd3e47ac0ff8dc1"}, - {file = "frozenlist-1.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:f56e2333dda1fe0f909e7cc59f021eba0d2307bc6f012a1ccf2beca6ba362439"}, - {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a0cb6f11204443f27a1628b0e460f37fb30f624be6051d490fa7d7e26d4af3d0"}, - {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b46c8ae3a8f1f41a0d2ef350c0b6e65822d80772fe46b653ab6b6274f61d4a49"}, - {file = "frozenlist-1.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fde5bd59ab5357e3853313127f4d3565fc7dad314a74d7b5d43c22c6a5ed2ced"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:722e1124aec435320ae01ee3ac7bec11a5d47f25d0ed6328f2273d287bc3abb0"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2471c201b70d58a0f0c1f91261542a03d9a5e088ed3dc6c160d614c01649c106"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c757a9dd70d72b076d6f68efdbb9bc943665ae954dad2801b874c8c69e185068"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f146e0911cb2f1da549fc58fc7bcd2b836a44b79ef871980d605ec392ff6b0d2"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9c515e7914626b2a2e1e311794b4c35720a0be87af52b79ff8e1429fc25f19"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c302220494f5c1ebeb0912ea782bcd5e2f8308037b3c7553fad0e48ebad6ad82"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:442acde1e068288a4ba7acfe05f5f343e19fac87bfc96d89eb886b0363e977ec"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:1b280e6507ea8a4fa0c0a7150b4e526a8d113989e28eaaef946cc77ffd7efc0a"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:fe1a06da377e3a1062ae5fe0926e12b84eceb8a50b350ddca72dc85015873f74"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:db9e724bebd621d9beca794f2a4ff1d26eed5965b004a97f1f1685a173b869c2"}, - {file = "frozenlist-1.4.1-cp311-cp311-win32.whl", hash = "sha256:e774d53b1a477a67838a904131c4b0eef6b3d8a651f8b138b04f748fccfefe17"}, - {file = "frozenlist-1.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:fb3c2db03683b5767dedb5769b8a40ebb47d6f7f45b1b3e3b4b51ec8ad9d9825"}, - {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:1979bc0aeb89b33b588c51c54ab0161791149f2461ea7c7c946d95d5f93b56ae"}, - {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cc7b01b3754ea68a62bd77ce6020afaffb44a590c2289089289363472d13aedb"}, - {file = "frozenlist-1.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c9c92be9fd329ac801cc420e08452b70e7aeab94ea4233a4804f0915c14eba9b"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c3894db91f5a489fc8fa6a9991820f368f0b3cbdb9cd8849547ccfab3392d86"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba60bb19387e13597fb059f32cd4d59445d7b18b69a745b8f8e5db0346f33480"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8aefbba5f69d42246543407ed2461db31006b0f76c4e32dfd6f42215a2c41d09"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780d3a35680ced9ce682fbcf4cb9c2bad3136eeff760ab33707b71db84664e3a"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9acbb16f06fe7f52f441bb6f413ebae6c37baa6ef9edd49cdd567216da8600cd"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:23b701e65c7b36e4bf15546a89279bd4d8675faabc287d06bbcfac7d3c33e1e6"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3e0153a805a98f5ada7e09826255ba99fb4f7524bb81bf6b47fb702666484ae1"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:dd9b1baec094d91bf36ec729445f7769d0d0cf6b64d04d86e45baf89e2b9059b"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:1a4471094e146b6790f61b98616ab8e44f72661879cc63fa1049d13ef711e71e"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5667ed53d68d91920defdf4035d1cdaa3c3121dc0b113255124bcfada1cfa1b8"}, - {file = "frozenlist-1.4.1-cp312-cp312-win32.whl", hash = "sha256:beee944ae828747fd7cb216a70f120767fc9f4f00bacae8543c14a6831673f89"}, - {file = "frozenlist-1.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:64536573d0a2cb6e625cf309984e2d873979709f2cf22839bf2d61790b448ad5"}, - {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:20b51fa3f588ff2fe658663db52a41a4f7aa6c04f6201449c6c7c476bd255c0d"}, - {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:410478a0c562d1a5bcc2f7ea448359fcb050ed48b3c6f6f4f18c313a9bdb1826"}, - {file = "frozenlist-1.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c6321c9efe29975232da3bd0af0ad216800a47e93d763ce64f291917a381b8eb"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48f6a4533887e189dae092f1cf981f2e3885175f7a0f33c91fb5b7b682b6bab6"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6eb73fa5426ea69ee0e012fb59cdc76a15b1283d6e32e4f8dc4482ec67d1194d"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fbeb989b5cc29e8daf7f976b421c220f1b8c731cbf22b9130d8815418ea45887"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:32453c1de775c889eb4e22f1197fe3bdfe457d16476ea407472b9442e6295f7a"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:693945278a31f2086d9bf3df0fe8254bbeaef1fe71e1351c3bd730aa7d31c41b"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:1d0ce09d36d53bbbe566fe296965b23b961764c0bcf3ce2fa45f463745c04701"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:3a670dc61eb0d0eb7080890c13de3066790f9049b47b0de04007090807c776b0"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:dca69045298ce5c11fd539682cff879cc1e664c245d1c64da929813e54241d11"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a06339f38e9ed3a64e4c4e43aec7f59084033647f908e4259d279a52d3757d09"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b7f2f9f912dca3934c1baec2e4585a674ef16fe00218d833856408c48d5beee7"}, - {file = "frozenlist-1.4.1-cp38-cp38-win32.whl", hash = "sha256:e7004be74cbb7d9f34553a5ce5fb08be14fb33bc86f332fb71cbe5216362a497"}, - {file = "frozenlist-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:5a7d70357e7cee13f470c7883a063aae5fe209a493c57d86eb7f5a6f910fae09"}, - {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bfa4a17e17ce9abf47a74ae02f32d014c5e9404b6d9ac7f729e01562bbee601e"}, - {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b7e3ed87d4138356775346e6845cccbe66cd9e207f3cd11d2f0b9fd13681359d"}, - {file = "frozenlist-1.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c99169d4ff810155ca50b4da3b075cbde79752443117d89429595c2e8e37fed8"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edb678da49d9f72c9f6c609fbe41a5dfb9a9282f9e6a2253d5a91e0fc382d7c0"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6db4667b187a6742b33afbbaf05a7bc551ffcf1ced0000a571aedbb4aa42fc7b"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55fdc093b5a3cb41d420884cdaf37a1e74c3c37a31f46e66286d9145d2063bd0"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82e8211d69a4f4bc360ea22cd6555f8e61a1bd211d1d5d39d3d228b48c83a897"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89aa2c2eeb20957be2d950b85974b30a01a762f3308cd02bb15e1ad632e22dc7"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d3e0c25a2350080e9319724dede4f31f43a6c9779be48021a7f4ebde8b2d742"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7268252af60904bf52c26173cbadc3a071cece75f873705419c8681f24d3edea"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:0c250a29735d4f15321007fb02865f0e6b6a41a6b88f1f523ca1596ab5f50bd5"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:96ec70beabbd3b10e8bfe52616a13561e58fe84c0101dd031dc78f250d5128b9"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:23b2d7679b73fe0e5a4560b672a39f98dfc6f60df63823b0a9970525325b95f6"}, - {file = "frozenlist-1.4.1-cp39-cp39-win32.whl", hash = "sha256:a7496bfe1da7fb1a4e1cc23bb67c58fab69311cc7d32b5a99c2007b4b2a0e932"}, - {file = "frozenlist-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:e6a20a581f9ce92d389a8c7d7c3dd47c81fd5d6e655c8dddf341e14aa48659d0"}, - {file = "frozenlist-1.4.1-py3-none-any.whl", hash = "sha256:04ced3e6a46b4cfffe20f9ae482818e34eba9b5fb0ce4056e4cc9b6e212d09b7"}, - {file = "frozenlist-1.4.1.tar.gz", hash = "sha256:c037a86e8513059a2613aaba4d817bb90b9d9b6b69aace3ce9c877e8c8ed402b"}, + {file = "frozenlist-1.5.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:5b6a66c18b5b9dd261ca98dffcb826a525334b2f29e7caa54e182255c5f6a65a"}, + {file = "frozenlist-1.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d1b3eb7b05ea246510b43a7e53ed1653e55c2121019a97e60cad7efb881a97bb"}, + {file = "frozenlist-1.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:15538c0cbf0e4fa11d1e3a71f823524b0c46299aed6e10ebb4c2089abd8c3bec"}, + {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e79225373c317ff1e35f210dd5f1344ff31066ba8067c307ab60254cd3a78ad5"}, + {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9272fa73ca71266702c4c3e2d4a28553ea03418e591e377a03b8e3659d94fa76"}, + {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:498524025a5b8ba81695761d78c8dd7382ac0b052f34e66939c42df860b8ff17"}, + {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:92b5278ed9d50fe610185ecd23c55d8b307d75ca18e94c0e7de328089ac5dcba"}, + {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f3c8c1dacd037df16e85227bac13cca58c30da836c6f936ba1df0c05d046d8d"}, + {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f2ac49a9bedb996086057b75bf93538240538c6d9b38e57c82d51f75a73409d2"}, + {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e66cc454f97053b79c2ab09c17fbe3c825ea6b4de20baf1be28919460dd7877f"}, + {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:5a3ba5f9a0dfed20337d3e966dc359784c9f96503674c2faf015f7fe8e96798c"}, + {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:6321899477db90bdeb9299ac3627a6a53c7399c8cd58d25da094007402b039ab"}, + {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:76e4753701248476e6286f2ef492af900ea67d9706a0155335a40ea21bf3b2f5"}, + {file = "frozenlist-1.5.0-cp310-cp310-win32.whl", hash = "sha256:977701c081c0241d0955c9586ffdd9ce44f7a7795df39b9151cd9a6fd0ce4cfb"}, + {file = "frozenlist-1.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:189f03b53e64144f90990d29a27ec4f7997d91ed3d01b51fa39d2dbe77540fd4"}, + {file = "frozenlist-1.5.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:fd74520371c3c4175142d02a976aee0b4cb4a7cc912a60586ffd8d5929979b30"}, + {file = "frozenlist-1.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2f3f7a0fbc219fb4455264cae4d9f01ad41ae6ee8524500f381de64ffaa077d5"}, + {file = "frozenlist-1.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f47c9c9028f55a04ac254346e92977bf0f166c483c74b4232bee19a6697e4778"}, + {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0996c66760924da6e88922756d99b47512a71cfd45215f3570bf1e0b694c206a"}, + {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a2fe128eb4edeabe11896cb6af88fca5346059f6c8d807e3b910069f39157869"}, + {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1a8ea951bbb6cacd492e3948b8da8c502a3f814f5d20935aae74b5df2b19cf3d"}, + {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:de537c11e4aa01d37db0d403b57bd6f0546e71a82347a97c6a9f0dcc532b3a45"}, + {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c2623347b933fcb9095841f1cc5d4ff0b278addd743e0e966cb3d460278840d"}, + {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cee6798eaf8b1416ef6909b06f7dc04b60755206bddc599f52232606e18179d3"}, + {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f5f9da7f5dbc00a604fe74aa02ae7c98bcede8a3b8b9666f9f86fc13993bc71a"}, + {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:90646abbc7a5d5c7c19461d2e3eeb76eb0b204919e6ece342feb6032c9325ae9"}, + {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:bdac3c7d9b705d253b2ce370fde941836a5f8b3c5c2b8fd70940a3ea3af7f4f2"}, + {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:03d33c2ddbc1816237a67f66336616416e2bbb6beb306e5f890f2eb22b959cdf"}, + {file = "frozenlist-1.5.0-cp311-cp311-win32.whl", hash = "sha256:237f6b23ee0f44066219dae14c70ae38a63f0440ce6750f868ee08775073f942"}, + {file = "frozenlist-1.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:0cc974cc93d32c42e7b0f6cf242a6bd941c57c61b618e78b6c0a96cb72788c1d"}, + {file = "frozenlist-1.5.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:31115ba75889723431aa9a4e77d5f398f5cf976eea3bdf61749731f62d4a4a21"}, + {file = "frozenlist-1.5.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7437601c4d89d070eac8323f121fcf25f88674627505334654fd027b091db09d"}, + {file = "frozenlist-1.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7948140d9f8ece1745be806f2bfdf390127cf1a763b925c4a805c603df5e697e"}, + {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feeb64bc9bcc6b45c6311c9e9b99406660a9c05ca8a5b30d14a78555088b0b3a"}, + {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:683173d371daad49cffb8309779e886e59c2f369430ad28fe715f66d08d4ab1a"}, + {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7d57d8f702221405a9d9b40f9da8ac2e4a1a8b5285aac6100f3393675f0a85ee"}, + {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30c72000fbcc35b129cb09956836c7d7abf78ab5416595e4857d1cae8d6251a6"}, + {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:000a77d6034fbad9b6bb880f7ec073027908f1b40254b5d6f26210d2dab1240e"}, + {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5d7f5a50342475962eb18b740f3beecc685a15b52c91f7d975257e13e029eca9"}, + {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:87f724d055eb4785d9be84e9ebf0f24e392ddfad00b3fe036e43f489fafc9039"}, + {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:6e9080bb2fb195a046e5177f10d9d82b8a204c0736a97a153c2466127de87784"}, + {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9b93d7aaa36c966fa42efcaf716e6b3900438632a626fb09c049f6a2f09fc631"}, + {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:52ef692a4bc60a6dd57f507429636c2af8b6046db8b31b18dac02cbc8f507f7f"}, + {file = "frozenlist-1.5.0-cp312-cp312-win32.whl", hash = "sha256:29d94c256679247b33a3dc96cce0f93cbc69c23bf75ff715919332fdbb6a32b8"}, + {file = "frozenlist-1.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:8969190d709e7c48ea386db202d708eb94bdb29207a1f269bab1196ce0dcca1f"}, + {file = "frozenlist-1.5.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:7a1a048f9215c90973402e26c01d1cff8a209e1f1b53f72b95c13db61b00f953"}, + {file = "frozenlist-1.5.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:dd47a5181ce5fcb463b5d9e17ecfdb02b678cca31280639255ce9d0e5aa67af0"}, + {file = "frozenlist-1.5.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1431d60b36d15cda188ea222033eec8e0eab488f39a272461f2e6d9e1a8e63c2"}, + {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6482a5851f5d72767fbd0e507e80737f9c8646ae7fd303def99bfe813f76cf7f"}, + {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:44c49271a937625619e862baacbd037a7ef86dd1ee215afc298a417ff3270608"}, + {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:12f78f98c2f1c2429d42e6a485f433722b0061d5c0b0139efa64f396efb5886b"}, + {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ce3aa154c452d2467487765e3adc730a8c153af77ad84096bc19ce19a2400840"}, + {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b7dc0c4338e6b8b091e8faf0db3168a37101943e687f373dce00959583f7439"}, + {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:45e0896250900b5aa25180f9aec243e84e92ac84bd4a74d9ad4138ef3f5c97de"}, + {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:561eb1c9579d495fddb6da8959fd2a1fca2c6d060d4113f5844b433fc02f2641"}, + {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:df6e2f325bfee1f49f81aaac97d2aa757c7646534a06f8f577ce184afe2f0a9e"}, + {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:140228863501b44b809fb39ec56b5d4071f4d0aa6d216c19cbb08b8c5a7eadb9"}, + {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7707a25d6a77f5d27ea7dc7d1fc608aa0a478193823f88511ef5e6b8a48f9d03"}, + {file = "frozenlist-1.5.0-cp313-cp313-win32.whl", hash = "sha256:31a9ac2b38ab9b5a8933b693db4939764ad3f299fcaa931a3e605bc3460e693c"}, + {file = "frozenlist-1.5.0-cp313-cp313-win_amd64.whl", hash = "sha256:11aabdd62b8b9c4b84081a3c246506d1cddd2dd93ff0ad53ede5defec7886b28"}, + {file = "frozenlist-1.5.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:dd94994fc91a6177bfaafd7d9fd951bc8689b0a98168aa26b5f543868548d3ca"}, + {file = "frozenlist-1.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2d0da8bbec082bf6bf18345b180958775363588678f64998c2b7609e34719b10"}, + {file = "frozenlist-1.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:73f2e31ea8dd7df61a359b731716018c2be196e5bb3b74ddba107f694fbd7604"}, + {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:828afae9f17e6de596825cf4228ff28fbdf6065974e5ac1410cecc22f699d2b3"}, + {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f1577515d35ed5649d52ab4319db757bb881ce3b2b796d7283e6634d99ace307"}, + {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2150cc6305a2c2ab33299453e2968611dacb970d2283a14955923062c8d00b10"}, + {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a72b7a6e3cd2725eff67cd64c8f13335ee18fc3c7befc05aed043d24c7b9ccb9"}, + {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c16d2fa63e0800723139137d667e1056bee1a1cf7965153d2d104b62855e9b99"}, + {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:17dcc32fc7bda7ce5875435003220a457bcfa34ab7924a49a1c19f55b6ee185c"}, + {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:97160e245ea33d8609cd2b8fd997c850b56db147a304a262abc2b3be021a9171"}, + {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:f1e6540b7fa044eee0bb5111ada694cf3dc15f2b0347ca125ee9ca984d5e9e6e"}, + {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:91d6c171862df0a6c61479d9724f22efb6109111017c87567cfeb7b5d1449fdf"}, + {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c1fac3e2ace2eb1052e9f7c7db480818371134410e1f5c55d65e8f3ac6d1407e"}, + {file = "frozenlist-1.5.0-cp38-cp38-win32.whl", hash = "sha256:b97f7b575ab4a8af9b7bc1d2ef7f29d3afee2226bd03ca3875c16451ad5a7723"}, + {file = "frozenlist-1.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:374ca2dabdccad8e2a76d40b1d037f5bd16824933bf7bcea3e59c891fd4a0923"}, + {file = "frozenlist-1.5.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9bbcdfaf4af7ce002694a4e10a0159d5a8d20056a12b05b45cea944a4953f972"}, + {file = "frozenlist-1.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1893f948bf6681733aaccf36c5232c231e3b5166d607c5fa77773611df6dc336"}, + {file = "frozenlist-1.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2b5e23253bb709ef57a8e95e6ae48daa9ac5f265637529e4ce6b003a37b2621f"}, + {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f253985bb515ecd89629db13cb58d702035ecd8cfbca7d7a7e29a0e6d39af5f"}, + {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:04a5c6babd5e8fb7d3c871dc8b321166b80e41b637c31a995ed844a6139942b6"}, + {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9fe0f1c29ba24ba6ff6abf688cb0b7cf1efab6b6aa6adc55441773c252f7411"}, + {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:226d72559fa19babe2ccd920273e767c96a49b9d3d38badd7c91a0fdeda8ea08"}, + {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15b731db116ab3aedec558573c1a5eec78822b32292fe4f2f0345b7f697745c2"}, + {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:366d8f93e3edfe5a918c874702f78faac300209a4d5bf38352b2c1bdc07a766d"}, + {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:1b96af8c582b94d381a1c1f51ffaedeb77c821c690ea5f01da3d70a487dd0a9b"}, + {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:c03eff4a41bd4e38415cbed054bbaff4a075b093e2394b6915dca34a40d1e38b"}, + {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:50cf5e7ee9b98f22bdecbabf3800ae78ddcc26e4a435515fc72d97903e8488e0"}, + {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1e76bfbc72353269c44e0bc2cfe171900fbf7f722ad74c9a7b638052afe6a00c"}, + {file = "frozenlist-1.5.0-cp39-cp39-win32.whl", hash = "sha256:666534d15ba8f0fda3f53969117383d5dc021266b3c1a42c9ec4855e4b58b9d3"}, + {file = "frozenlist-1.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:5c28f4b5dbef8a0d8aad0d4de24d1e9e981728628afaf4ea0792f5d0939372f0"}, + {file = "frozenlist-1.5.0-py3-none-any.whl", hash = "sha256:d994863bba198a4a518b467bb971c56e1db3f180a25c6cf7bb1949c267f748c3"}, + {file = "frozenlist-1.5.0.tar.gz", hash = "sha256:81d5af29e61b9c8348e876d442253723928dce6433e0e76cd925cd83f1b4b817"}, ] [[package]] name = "fsspec" -version = "2024.9.0" +version = "2024.10.0" description = "File-system specification" optional = false python-versions = ">=3.8" files = [ - {file = "fsspec-2024.9.0-py3-none-any.whl", hash = "sha256:a0947d552d8a6efa72cc2c730b12c41d043509156966cca4fb157b0f2a0c574b"}, - {file = "fsspec-2024.9.0.tar.gz", hash = "sha256:4b0afb90c2f21832df142f292649035d80b421f60a9e1c027802e5a0da2b04e8"}, + {file = "fsspec-2024.10.0-py3-none-any.whl", hash = "sha256:03b9a6785766a4de40368b88906366755e2819e758b83705c88cd7cb5fe81871"}, + {file = "fsspec-2024.10.0.tar.gz", hash = "sha256:eda2d8a4116d4f2429db8550f2457da57279247dd930bb12f821b58391359493"}, ] [package.extras] @@ -1453,13 +1467,13 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "huggingface-hub" -version = "0.26.0" +version = "0.26.2" description = "Client library to download and publish models, datasets and other repos on the huggingface.co hub" optional = false python-versions = ">=3.8.0" files = [ - {file = "huggingface_hub-0.26.0-py3-none-any.whl", hash = "sha256:e43b8f36042b2103b48dea822535e08f5f089c4aa7013a067fca7b4ebf7f85a3"}, - {file = "huggingface_hub-0.26.0.tar.gz", hash = "sha256:524fe9281b015b76aa73ff1a83bf1cbe8cab851c9ac5ae5fcd2a25d5173ce629"}, + {file = "huggingface_hub-0.26.2-py3-none-any.whl", hash = "sha256:98c2a5a8e786c7b2cb6fdeb2740893cba4d53e312572ed3d8afafda65b128c46"}, + {file = "huggingface_hub-0.26.2.tar.gz", hash = "sha256:b100d853465d965733964d123939ba287da60a547087783ddff8a323f340332b"}, ] [package.dependencies] @@ -1597,13 +1611,13 @@ test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio [[package]] name = "ipython" -version = "8.28.0" +version = "8.29.0" description = "IPython: Productive Interactive Computing" optional = false python-versions = ">=3.10" files = [ - {file = "ipython-8.28.0-py3-none-any.whl", hash = "sha256:530ef1e7bb693724d3cdc37287c80b07ad9b25986c007a53aa1857272dac3f35"}, - {file = "ipython-8.28.0.tar.gz", hash = "sha256:0d0d15ca1e01faeb868ef56bc7ee5a0de5bd66885735682e8a322ae289a13d1a"}, + {file = "ipython-8.29.0-py3-none-any.whl", hash = "sha256:0188a1bd83267192123ccea7f4a8ed0a78910535dbaa3f37671dca76ebd429c8"}, + {file = "ipython-8.29.0.tar.gz", hash = "sha256:40b60e15b22591450eef73e40a027cf77bd652e757523eebc5bd7c7c498290eb"}, ] [package.dependencies] @@ -1889,13 +1903,13 @@ referencing = ">=0.31.0" [[package]] name = "julep" -version = "1.18.0" +version = "1.24.0" description = "The official Python library for the julep API" optional = false python-versions = ">=3.7" files = [ - {file = "julep-1.18.0-py3-none-any.whl", hash = "sha256:6eabb83a1f411cafa0faa674552137881fb56ff4257bfbf7c8a0f077b1d329db"}, - {file = "julep-1.18.0.tar.gz", hash = "sha256:d4dab1ef2052529fc373e0165a8c09051ad160a40494452a39a9fe3eef233844"}, + {file = "julep-1.24.0-py3-none-any.whl", hash = "sha256:6f9b12fcb5bda6bb6f390463e803b8bfbdbb46a05b581f8e74ceace7522a70e5"}, + {file = "julep-1.24.0.tar.gz", hash = "sha256:89e461af7c65b0a53c91ad40accee1d1d5204a932a482be0135e6b6f6496b41e"}, ] [package.dependencies] @@ -2208,13 +2222,13 @@ dev = ["Sphinx (>=5.1.1)", "black (==24.8.0)", "build (>=0.10.0)", "coverage[tom [[package]] name = "litellm" -version = "1.49.7" +version = "1.51.1" description = "Library to easily interface with LLM API providers" optional = false python-versions = "!=2.7.*,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,!=3.7.*,>=3.8" files = [ - {file = "litellm-1.49.7-py3-none-any.whl", hash = "sha256:30f0c5b1b0a1466ae29006f3d3b29dd8a3836387375cc2efbde9a5d76bc92673"}, - {file = "litellm-1.49.7.tar.gz", hash = "sha256:9442b5c0922580ce3d536030247800c0112c64c0f123aad1a4a87872e51f0e09"}, + {file = "litellm-1.51.1-py3-none-any.whl", hash = "sha256:1a389ca5b8ddd7a98d97ad229118d8323caeaaf9c1c5b79b1072edc2a18e773d"}, + {file = "litellm-1.51.1.tar.gz", hash = "sha256:ef9019bdd8bbad927e49696a300d03ea00b86721ebe7b62621c923f728e50d18"}, ] [package.dependencies] @@ -2223,7 +2237,7 @@ click = "*" importlib-metadata = ">=6.8.0" jinja2 = ">=3.1.2,<4.0.0" jsonschema = ">=4.22.0,<5.0.0" -openai = ">=1.51.0" +openai = ">=1.52.0" pydantic = ">=2.0.0,<3.0.0" python-dotenv = ">=0.2.0" requests = ">=2.31.0,<3.0.0" @@ -2896,13 +2910,13 @@ files = [ [[package]] name = "networkx" -version = "3.4.1" +version = "3.4.2" description = "Python package for creating and manipulating graphs and networks" optional = false python-versions = ">=3.10" files = [ - {file = "networkx-3.4.1-py3-none-any.whl", hash = "sha256:e30a87b48c9a6a7cc220e732bffefaee585bdb166d13377734446ce1a0620eed"}, - {file = "networkx-3.4.1.tar.gz", hash = "sha256:f9df45e85b78f5bd010993e897b4f1fdb242c11e015b101bd951e5c0e29982d8"}, + {file = "networkx-3.4.2-py3-none-any.whl", hash = "sha256:df5d4365b724cf81b8c6a7312509d0c22386097011ad1abe274afd5e9d3bbc5f"}, + {file = "networkx-3.4.2.tar.gz", hash = "sha256:307c3669428c5362aab27c8a1260aa8f47c4e91d3891f48be0141738d8d053e1"}, ] [package.extras] @@ -3013,13 +3027,13 @@ files = [ [[package]] name = "openai" -version = "1.52.0" +version = "1.52.2" description = "The official Python library for the openai API" optional = false python-versions = ">=3.7.1" files = [ - {file = "openai-1.52.0-py3-none-any.whl", hash = "sha256:0c249f20920183b0a2ca4f7dba7b0452df3ecd0fa7985eb1d91ad884bc3ced9c"}, - {file = "openai-1.52.0.tar.gz", hash = "sha256:95c65a5f77559641ab8f3e4c3a050804f7b51d278870e2ec1f7444080bfe565a"}, + {file = "openai-1.52.2-py3-none-any.whl", hash = "sha256:57e9e37bc407f39bb6ec3a27d7e8fb9728b2779936daa1fcf95df17d3edfaccc"}, + {file = "openai-1.52.2.tar.gz", hash = "sha256:87b7d0f69d85f5641678d414b7ee3082363647a5c66a462ed7f3ccb59582da0d"}, ] [package.dependencies] @@ -3459,22 +3473,22 @@ files = [ [[package]] name = "protobuf" -version = "5.28.2" +version = "5.28.3" description = "" optional = false python-versions = ">=3.8" files = [ - {file = "protobuf-5.28.2-cp310-abi3-win32.whl", hash = "sha256:eeea10f3dc0ac7e6b4933d32db20662902b4ab81bf28df12218aa389e9c2102d"}, - {file = "protobuf-5.28.2-cp310-abi3-win_amd64.whl", hash = "sha256:2c69461a7fcc8e24be697624c09a839976d82ae75062b11a0972e41fd2cd9132"}, - {file = "protobuf-5.28.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:a8b9403fc70764b08d2f593ce44f1d2920c5077bf7d311fefec999f8c40f78b7"}, - {file = "protobuf-5.28.2-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:35cfcb15f213449af7ff6198d6eb5f739c37d7e4f1c09b5d0641babf2cc0c68f"}, - {file = "protobuf-5.28.2-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:5e8a95246d581eef20471b5d5ba010d55f66740942b95ba9b872d918c459452f"}, - {file = "protobuf-5.28.2-cp38-cp38-win32.whl", hash = "sha256:87317e9bcda04a32f2ee82089a204d3a2f0d3c8aeed16568c7daf4756e4f1fe0"}, - {file = "protobuf-5.28.2-cp38-cp38-win_amd64.whl", hash = "sha256:c0ea0123dac3399a2eeb1a1443d82b7afc9ff40241433296769f7da42d142ec3"}, - {file = "protobuf-5.28.2-cp39-cp39-win32.whl", hash = "sha256:ca53faf29896c526863366a52a8f4d88e69cd04ec9571ed6082fa117fac3ab36"}, - {file = "protobuf-5.28.2-cp39-cp39-win_amd64.whl", hash = "sha256:8ddc60bf374785fb7cb12510b267f59067fa10087325b8e1855b898a0d81d276"}, - {file = "protobuf-5.28.2-py3-none-any.whl", hash = "sha256:52235802093bd8a2811abbe8bf0ab9c5f54cca0a751fdd3f6ac2a21438bffece"}, - {file = "protobuf-5.28.2.tar.gz", hash = "sha256:59379674ff119717404f7454647913787034f03fe7049cbef1d74a97bb4593f0"}, + {file = "protobuf-5.28.3-cp310-abi3-win32.whl", hash = "sha256:0c4eec6f987338617072592b97943fdbe30d019c56126493111cf24344c1cc24"}, + {file = "protobuf-5.28.3-cp310-abi3-win_amd64.whl", hash = "sha256:91fba8f445723fcf400fdbe9ca796b19d3b1242cd873907979b9ed71e4afe868"}, + {file = "protobuf-5.28.3-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:a3f6857551e53ce35e60b403b8a27b0295f7d6eb63d10484f12bc6879c715687"}, + {file = "protobuf-5.28.3-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:3fa2de6b8b29d12c61911505d893afe7320ce7ccba4df913e2971461fa36d584"}, + {file = "protobuf-5.28.3-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:712319fbdddb46f21abb66cd33cb9e491a5763b2febd8f228251add221981135"}, + {file = "protobuf-5.28.3-cp38-cp38-win32.whl", hash = "sha256:3e6101d095dfd119513cde7259aa703d16c6bbdfae2554dfe5cfdbe94e32d548"}, + {file = "protobuf-5.28.3-cp38-cp38-win_amd64.whl", hash = "sha256:27b246b3723692bf1068d5734ddaf2fccc2cdd6e0c9b47fe099244d80200593b"}, + {file = "protobuf-5.28.3-cp39-cp39-win32.whl", hash = "sha256:135658402f71bbd49500322c0f736145731b16fc79dc8f367ab544a17eab4535"}, + {file = "protobuf-5.28.3-cp39-cp39-win_amd64.whl", hash = "sha256:70585a70fc2dd4818c51287ceef5bdba6387f88a578c86d47bb34669b5552c36"}, + {file = "protobuf-5.28.3-py3-none-any.whl", hash = "sha256:cee1757663fa32a1ee673434fcf3bf24dd54763c79690201208bafec62f19eed"}, + {file = "protobuf-5.28.3.tar.gz", hash = "sha256:64badbc49180a5e401f373f9ce7ab1d18b63f7dd4a9cdc43c92b9f0b481cef7b"}, ] [[package]] @@ -4119,99 +4133,99 @@ cffi = {version = "*", markers = "implementation_name == \"pypy\""} [[package]] name = "rapidfuzz" -version = "3.10.0" +version = "3.10.1" description = "rapid fuzzy string matching" optional = false python-versions = ">=3.9" files = [ - {file = "rapidfuzz-3.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:884453860de029380dded8f3c1918af2d8eb5adf8010261645c7e5c88c2b5428"}, - {file = "rapidfuzz-3.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:718c9bd369288aca5fa929df6dbf66fdbe9768d90940a940c0b5cdc96ade4309"}, - {file = "rapidfuzz-3.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a68e3724b7dab761c01816aaa64b0903734d999d5589daf97c14ef5cc0629a8e"}, - {file = "rapidfuzz-3.10.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1af60988d47534246d9525f77288fdd9de652608a4842815d9018570b959acc6"}, - {file = "rapidfuzz-3.10.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3084161fc3e963056232ef8d937449a2943852e07101f5a136c8f3cfa4119217"}, - {file = "rapidfuzz-3.10.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6cd67d3d017296d98ff505529104299f78433e4b8af31b55003d901a62bbebe9"}, - {file = "rapidfuzz-3.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b11a127ac590fc991e8a02c2d7e1ac86e8141c92f78546f18b5c904064a0552c"}, - {file = "rapidfuzz-3.10.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:aadce42147fc09dcef1afa892485311e824c050352e1aa6e47f56b9b27af4cf0"}, - {file = "rapidfuzz-3.10.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:b54853c2371bf0e38d67da379519deb6fbe70055efb32f6607081641af3dc752"}, - {file = "rapidfuzz-3.10.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:ce19887268e90ee81a3957eef5e46a70ecc000713796639f83828b950343f49e"}, - {file = "rapidfuzz-3.10.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:f39a2a5ded23b9b9194ec45740dce57177b80f86c6d8eba953d3ff1a25c97766"}, - {file = "rapidfuzz-3.10.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0ec338d5f4ad8d9339a88a08db5c23e7f7a52c2b2a10510c48a0cef1fb3f0ddc"}, - {file = "rapidfuzz-3.10.0-cp310-cp310-win32.whl", hash = "sha256:56fd15ea8f4c948864fa5ebd9261c67cf7b89a1c517a0caef4df75446a7af18c"}, - {file = "rapidfuzz-3.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:43dfc5e733808962a822ff6d9c29f3039a3cfb3620706f5953e17cfe4496724c"}, - {file = "rapidfuzz-3.10.0-cp310-cp310-win_arm64.whl", hash = "sha256:ae7966f205b5a7fde93b44ca8fed37c1c8539328d7f179b1197de34eceaceb5f"}, - {file = "rapidfuzz-3.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:bb0013795b40db5cf361e6f21ee7cda09627cf294977149b50e217d7fe9a2f03"}, - {file = "rapidfuzz-3.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:69ef5b363afff7150a1fbe788007e307b9802a2eb6ad92ed51ab94e6ad2674c6"}, - {file = "rapidfuzz-3.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c582c46b1bb0b19f1a5f4c1312f1b640c21d78c371a6615c34025b16ee56369b"}, - {file = "rapidfuzz-3.10.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:288f6f6e7410cacb115fb851f3f18bf0e4231eb3f6cb5bd1cec0e7b25c4d039d"}, - {file = "rapidfuzz-3.10.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9e29a13d2fd9be3e7d8c26c7ef4ba60b5bc7efbc9dbdf24454c7e9ebba31768"}, - {file = "rapidfuzz-3.10.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea2da0459b951ee461bd4e02b8904890bd1c4263999d291c5cd01e6620177ad4"}, - {file = "rapidfuzz-3.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:457827ba82261aa2ae6ac06a46d0043ab12ba7216b82d87ae1434ec0f29736d6"}, - {file = "rapidfuzz-3.10.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5d350864269d56f51ab81ab750c9259ae5cad3152c0680baef143dcec92206a1"}, - {file = "rapidfuzz-3.10.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:a9b8f51e08c3f983d857c3889930af9ddecc768453822076683664772d87e374"}, - {file = "rapidfuzz-3.10.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:7f3a6aa6e70fc27e4ff5c479f13cc9fc26a56347610f5f8b50396a0d344c5f55"}, - {file = "rapidfuzz-3.10.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:803f255f10d63420979b1909ef976e7d30dec42025c9b067fc1d2040cc365a7e"}, - {file = "rapidfuzz-3.10.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2026651761bf83a0f31495cc0f70840d5c0d54388f41316e3f9cb51bd85e49a5"}, - {file = "rapidfuzz-3.10.0-cp311-cp311-win32.whl", hash = "sha256:4df75b3ebbb8cfdb9bf8b213b168620b88fd92d0c16a8bc9f9234630b282db59"}, - {file = "rapidfuzz-3.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:f9f0bbfb6787b97c51516f3ccf97737d504db5d239ad44527673b81f598b84ab"}, - {file = "rapidfuzz-3.10.0-cp311-cp311-win_arm64.whl", hash = "sha256:10fdad800441b9c97d471a937ba7d42625f1b530db05e572f1cb7d401d95c893"}, - {file = "rapidfuzz-3.10.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7dc87073ba3a40dd65591a2100aa71602107443bf10770579ff9c8a3242edb94"}, - {file = "rapidfuzz-3.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a425a0a868cf8e9c6e93e1cda4b758cdfd314bb9a4fc916c5742c934e3613480"}, - {file = "rapidfuzz-3.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a86d5d1d75e61df060c1e56596b6b0a4422a929dff19cc3dbfd5eee762c86b61"}, - {file = "rapidfuzz-3.10.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:34f213d59219a9c3ca14e94a825f585811a68ac56b4118b4dc388b5b14afc108"}, - {file = "rapidfuzz-3.10.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:96ad46f5f56f70fab2be9e5f3165a21be58d633b90bf6e67fc52a856695e4bcf"}, - {file = "rapidfuzz-3.10.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9178277f72d144a6c7704d7ae7fa15b7b86f0f0796f0e1049c7b4ef748a662ef"}, - {file = "rapidfuzz-3.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76a35e9e19a7c883c422ffa378e9a04bc98cb3b29648c5831596401298ee51e6"}, - {file = "rapidfuzz-3.10.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8a6405d34c394c65e4f73a1d300c001f304f08e529d2ed6413b46ee3037956eb"}, - {file = "rapidfuzz-3.10.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:bd393683129f446a75d8634306aed7e377627098a1286ff3af2a4f1736742820"}, - {file = "rapidfuzz-3.10.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:b0445fa9880ead81f5a7d0efc0b9c977a947d8052c43519aceeaf56eabaf6843"}, - {file = "rapidfuzz-3.10.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:c50bc308fa29767ed8f53a8d33b7633a9e14718ced038ed89d41b886e301da32"}, - {file = "rapidfuzz-3.10.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e89605afebbd2d4b045bccfdc12a14b16fe8ccbae05f64b4b4c64a97dad1c891"}, - {file = "rapidfuzz-3.10.0-cp312-cp312-win32.whl", hash = "sha256:2db9187f3acf3cd33424ecdbaad75414c298ecd1513470df7bda885dcb68cc15"}, - {file = "rapidfuzz-3.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:50e3d0c72ea15391ba9531ead7f2068a67c5b18a6a365fef3127583aaadd1725"}, - {file = "rapidfuzz-3.10.0-cp312-cp312-win_arm64.whl", hash = "sha256:9eac95b4278bd53115903d89118a2c908398ee8bdfd977ae844f1bd2b02b917c"}, - {file = "rapidfuzz-3.10.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:fe5231e8afd069c742ac5b4f96344a0fe4aff52df8e53ef87faebf77f827822c"}, - {file = "rapidfuzz-3.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:886882367dbc985f5736356105798f2ae6e794e671fc605476cbe2e73838a9bb"}, - {file = "rapidfuzz-3.10.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b33e13e537e3afd1627d421a142a12bbbe601543558a391a6fae593356842f6e"}, - {file = "rapidfuzz-3.10.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:094c26116d55bf9c53abd840d08422f20da78ec4c4723e5024322321caedca48"}, - {file = "rapidfuzz-3.10.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:545fc04f2d592e4350f59deb0818886c1b444ffba3bec535b4fbb97191aaf769"}, - {file = "rapidfuzz-3.10.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:916a6abf3632e592b937c3d04c00a6efadd8fd30539cdcd4e6e4d92be7ca5d90"}, - {file = "rapidfuzz-3.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb6ec40cef63b1922083d33bfef2f91fc0b0bc07b5b09bfee0b0f1717d558292"}, - {file = "rapidfuzz-3.10.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c77a7330dd15c7eb5fd3631dc646fc96327f98db8181138766bd14d3e905f0ba"}, - {file = "rapidfuzz-3.10.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:949b5e9eeaa4ecb4c7e9c2a4689dddce60929dd1ff9c76a889cdbabe8bbf2171"}, - {file = "rapidfuzz-3.10.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:b5363932a5aab67010ae1a6205c567d1ef256fb333bc23c27582481606be480c"}, - {file = "rapidfuzz-3.10.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:5dd6eec15b13329abe66cc241b484002ecb0e17d694491c944a22410a6a9e5e2"}, - {file = "rapidfuzz-3.10.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:79e7f98525b60b3c14524e0a4e1fedf7654657b6e02eb25f1be897ab097706f3"}, - {file = "rapidfuzz-3.10.0-cp313-cp313-win32.whl", hash = "sha256:d29d1b9857c65f8cb3a29270732e1591b9bacf89de9d13fa764f79f07d8f1fd2"}, - {file = "rapidfuzz-3.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:fa9720e56663cc3649d62b4b5f3145e94b8f5611e8a8e1b46507777249d46aad"}, - {file = "rapidfuzz-3.10.0-cp313-cp313-win_arm64.whl", hash = "sha256:eda4c661e68dddd56c8fbfe1ca35e40dd2afd973f7ebb1605f4d151edc63dff8"}, - {file = "rapidfuzz-3.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:cffbc50e0767396ed483900900dd58ce4351bc0d40e64bced8694bd41864cc71"}, - {file = "rapidfuzz-3.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c038b9939da3035afb6cb2f465f18163e8f070aba0482923ecff9443def67178"}, - {file = "rapidfuzz-3.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca366c2e2a54e2f663f4529b189fdeb6e14d419b1c78b754ec1744f3c01070d4"}, - {file = "rapidfuzz-3.10.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c4c82b1689b23b1b5e6a603164ed2be41b6f6de292a698b98ba2381e889eb9d"}, - {file = "rapidfuzz-3.10.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:98f6ebe28831a482981ecfeedc8237047878424ad0c1add2c7f366ba44a20452"}, - {file = "rapidfuzz-3.10.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4bd1a7676ee2a4c8e2f7f2550bece994f9f89e58afb96088964145a83af7408b"}, - {file = "rapidfuzz-3.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec9139baa3f85b65adc700eafa03ed04995ca8533dd56c924f0e458ffec044ab"}, - {file = "rapidfuzz-3.10.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:26de93e6495078b6af4c4d93a42ca067b16cc0e95699526c82ab7d1025b4d3bf"}, - {file = "rapidfuzz-3.10.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:f3a0bda83c18195c361b5500377d0767749f128564ca95b42c8849fd475bb327"}, - {file = "rapidfuzz-3.10.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:63e4c175cbce8c3adc22dca5e6154588ae673f6c55374d156f3dac732c88d7de"}, - {file = "rapidfuzz-3.10.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:4dd3d8443970eaa02ab5ae45ce584b061f2799cd9f7e875190e2617440c1f9d4"}, - {file = "rapidfuzz-3.10.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e5ddb2388610799fc46abe389600625058f2a73867e63e20107c5ad5ffa57c47"}, - {file = "rapidfuzz-3.10.0-cp39-cp39-win32.whl", hash = "sha256:2e9be5d05cd960914024412b5406fb75a82f8562f45912ff86255acbfdbfb78e"}, - {file = "rapidfuzz-3.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:47aca565a39c9a6067927871973ca827023e8b65ba6c5747f4c228c8d7ddc04f"}, - {file = "rapidfuzz-3.10.0-cp39-cp39-win_arm64.whl", hash = "sha256:b0732343cdc4273b5921268026dd7266f75466eb21873cb7635a200d9d9c3fac"}, - {file = "rapidfuzz-3.10.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:f744b5eb1469bf92dd143d36570d2bdbbdc88fe5cb0b5405e53dd34f479cbd8a"}, - {file = "rapidfuzz-3.10.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b67cc21a14327a0eb0f47bc3d7e59ec08031c7c55220ece672f9476e7a8068d3"}, - {file = "rapidfuzz-3.10.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2fe5783676f0afba4a522c80b15e99dbf4e393c149ab610308a8ef1f04c6bcc8"}, - {file = "rapidfuzz-3.10.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d4688862f957c8629d557d084f20b2d803f8738b6c4066802a0b1cc472e088d9"}, - {file = "rapidfuzz-3.10.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20bd153aacc244e4c907d772c703fea82754c4db14f8aa64d75ff81b7b8ab92d"}, - {file = "rapidfuzz-3.10.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:50484d563f8bfa723c74c944b0bb15b9e054db9c889348c8c307abcbee75ab92"}, - {file = "rapidfuzz-3.10.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5897242d455461f2c5b82d7397b29341fd11e85bf3608a522177071044784ee8"}, - {file = "rapidfuzz-3.10.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:116c71a81e046ba56551d8ab68067ca7034d94b617545316d460a452c5c3c289"}, - {file = "rapidfuzz-3.10.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0a547e4350d1fa32624d3eab51eff8cf329f4cae110b4ea0402486b1da8be40"}, - {file = "rapidfuzz-3.10.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:399b9b79ccfcf50ca3bad7692bc098bb8eade88d7d5e15773b7f866c91156d0c"}, - {file = "rapidfuzz-3.10.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7947a425d1be3e744707ee58c6cb318b93a56e08f080722dcc0347e0b7a1bb9a"}, - {file = "rapidfuzz-3.10.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:94c48b4a2a4b1d22246f48e2b11cae01ec7d23f0c9123f8bb822839ad79d0a88"}, - {file = "rapidfuzz-3.10.0.tar.gz", hash = "sha256:6b62af27e65bb39276a66533655a2fa3c60a487b03935721c45b7809527979be"}, + {file = "rapidfuzz-3.10.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f17d9f21bf2f2f785d74f7b0d407805468b4c173fa3e52c86ec94436b338e74a"}, + {file = "rapidfuzz-3.10.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b31f358a70efc143909fb3d75ac6cd3c139cd41339aa8f2a3a0ead8315731f2b"}, + {file = "rapidfuzz-3.10.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f4f43f2204b56a61448ec2dd061e26fd344c404da99fb19f3458200c5874ba2"}, + {file = "rapidfuzz-3.10.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9d81bf186a453a2757472133b24915768abc7c3964194406ed93e170e16c21cb"}, + {file = "rapidfuzz-3.10.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3611c8f45379a12063d70075c75134f2a8bd2e4e9b8a7995112ddae95ca1c982"}, + {file = "rapidfuzz-3.10.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3c3b537b97ac30da4b73930fa8a4fe2f79c6d1c10ad535c5c09726612cd6bed9"}, + {file = "rapidfuzz-3.10.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:231ef1ec9cf7b59809ce3301006500b9d564ddb324635f4ea8f16b3e2a1780da"}, + {file = "rapidfuzz-3.10.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ed4f3adc1294834955b7e74edd3c6bd1aad5831c007f2d91ea839e76461a5879"}, + {file = "rapidfuzz-3.10.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:7b6015da2e707bf632a71772a2dbf0703cff6525732c005ad24987fe86e8ec32"}, + {file = "rapidfuzz-3.10.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:1b35a118d61d6f008e8e3fb3a77674d10806a8972c7b8be433d6598df4d60b01"}, + {file = "rapidfuzz-3.10.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:bc308d79a7e877226f36bdf4e149e3ed398d8277c140be5c1fd892ec41739e6d"}, + {file = "rapidfuzz-3.10.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f017dbfecc172e2d0c37cf9e3d519179d71a7f16094b57430dffc496a098aa17"}, + {file = "rapidfuzz-3.10.1-cp310-cp310-win32.whl", hash = "sha256:36c0e1483e21f918d0f2f26799fe5ac91c7b0c34220b73007301c4f831a9c4c7"}, + {file = "rapidfuzz-3.10.1-cp310-cp310-win_amd64.whl", hash = "sha256:10746c1d4c8cd8881c28a87fd7ba0c9c102346dfe7ff1b0d021cdf093e9adbff"}, + {file = "rapidfuzz-3.10.1-cp310-cp310-win_arm64.whl", hash = "sha256:dfa64b89dcb906835e275187569e51aa9d546a444489e97aaf2cc84011565fbe"}, + {file = "rapidfuzz-3.10.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:92958ae075c87fef393f835ed02d4fe8d5ee2059a0934c6c447ea3417dfbf0e8"}, + {file = "rapidfuzz-3.10.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ba7521e072c53e33c384e78615d0718e645cab3c366ecd3cc8cb732befd94967"}, + {file = "rapidfuzz-3.10.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:00d02cbd75d283c287471b5b3738b3e05c9096150f93f2d2dfa10b3d700f2db9"}, + {file = "rapidfuzz-3.10.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:efa1582a397da038e2f2576c9cd49b842f56fde37d84a6b0200ffebc08d82350"}, + {file = "rapidfuzz-3.10.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f12912acee1f506f974f58de9fdc2e62eea5667377a7e9156de53241c05fdba8"}, + {file = "rapidfuzz-3.10.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:666d5d8b17becc3f53447bcb2b6b33ce6c2df78792495d1fa82b2924cd48701a"}, + {file = "rapidfuzz-3.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26f71582c0d62445067ee338ddad99b655a8f4e4ed517a90dcbfbb7d19310474"}, + {file = "rapidfuzz-3.10.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8a2ef08b27167bcff230ffbfeedd4c4fa6353563d6aaa015d725dd3632fc3de7"}, + {file = "rapidfuzz-3.10.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:365e4fc1a2b95082c890f5e98489b894e6bf8c338c6ac89bb6523c2ca6e9f086"}, + {file = "rapidfuzz-3.10.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:1996feb7a61609fa842e6b5e0c549983222ffdedaf29644cc67e479902846dfe"}, + {file = "rapidfuzz-3.10.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:cf654702f144beaa093103841a2ea6910d617d0bb3fccb1d1fd63c54dde2cd49"}, + {file = "rapidfuzz-3.10.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ec108bf25de674781d0a9a935030ba090c78d49def3d60f8724f3fc1e8e75024"}, + {file = "rapidfuzz-3.10.1-cp311-cp311-win32.whl", hash = "sha256:031f8b367e5d92f7a1e27f7322012f3c321c3110137b43cc3bf678505583ef48"}, + {file = "rapidfuzz-3.10.1-cp311-cp311-win_amd64.whl", hash = "sha256:f98f36c6a1bb9a6c8bbec99ad87c8c0e364f34761739b5ea9adf7b48129ae8cf"}, + {file = "rapidfuzz-3.10.1-cp311-cp311-win_arm64.whl", hash = "sha256:f1da2028cb4e41be55ee797a82d6c1cf589442504244249dfeb32efc608edee7"}, + {file = "rapidfuzz-3.10.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:1340b56340896bede246f612b6ecf685f661a56aabef3d2512481bfe23ac5835"}, + {file = "rapidfuzz-3.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2316515169b7b5a453f0ce3adbc46c42aa332cae9f2edb668e24d1fc92b2f2bb"}, + {file = "rapidfuzz-3.10.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e06fe6a12241ec1b72c0566c6b28cda714d61965d86569595ad24793d1ab259"}, + {file = "rapidfuzz-3.10.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d99c1cd9443b19164ec185a7d752f4b4db19c066c136f028991a480720472e23"}, + {file = "rapidfuzz-3.10.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a1d9aa156ed52d3446388ba4c2f335e312191d1ca9d1f5762ee983cf23e4ecf6"}, + {file = "rapidfuzz-3.10.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:54bcf4efaaee8e015822be0c2c28214815f4f6b4f70d8362cfecbd58a71188ac"}, + {file = "rapidfuzz-3.10.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0c955e32afdbfdf6e9ee663d24afb25210152d98c26d22d399712d29a9b976b"}, + {file = "rapidfuzz-3.10.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:191633722203f5b7717efcb73a14f76f3b124877d0608c070b827c5226d0b972"}, + {file = "rapidfuzz-3.10.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:195baad28057ec9609e40385991004e470af9ef87401e24ebe72c064431524ab"}, + {file = "rapidfuzz-3.10.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:0fff4a6b87c07366662b62ae994ffbeadc472e72f725923f94b72a3db49f4671"}, + {file = "rapidfuzz-3.10.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:4ffed25f9fdc0b287f30a98467493d1e1ce5b583f6317f70ec0263b3c97dbba6"}, + {file = "rapidfuzz-3.10.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d02cf8e5af89a9ac8f53c438ddff6d773f62c25c6619b29db96f4aae248177c0"}, + {file = "rapidfuzz-3.10.1-cp312-cp312-win32.whl", hash = "sha256:f3bb81d4fe6a5d20650f8c0afcc8f6e1941f6fecdb434f11b874c42467baded0"}, + {file = "rapidfuzz-3.10.1-cp312-cp312-win_amd64.whl", hash = "sha256:aaf83e9170cb1338922ae42d320699dccbbdca8ffed07faeb0b9257822c26e24"}, + {file = "rapidfuzz-3.10.1-cp312-cp312-win_arm64.whl", hash = "sha256:c5da802a0d085ad81b0f62828fb55557996c497b2d0b551bbdfeafd6d447892f"}, + {file = "rapidfuzz-3.10.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:fc22d69a1c9cccd560a5c434c0371b2df0f47c309c635a01a913e03bbf183710"}, + {file = "rapidfuzz-3.10.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:38b0dac2c8e057562b8f0d8ae5b663d2d6a28c5ab624de5b73cef9abb6129a24"}, + {file = "rapidfuzz-3.10.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fde3bbb14e92ce8fcb5c2edfff72e474d0080cadda1c97785bf4822f037a309"}, + {file = "rapidfuzz-3.10.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9141fb0592e55f98fe9ac0f3ce883199b9c13e262e0bf40c5b18cdf926109d16"}, + {file = "rapidfuzz-3.10.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:237bec5dd1bfc9b40bbd786cd27949ef0c0eb5fab5eb491904c6b5df59d39d3c"}, + {file = "rapidfuzz-3.10.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18123168cba156ab5794ea6de66db50f21bb3c66ae748d03316e71b27d907b95"}, + {file = "rapidfuzz-3.10.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b75fe506c8e02769cc47f5ab21ce3e09b6211d3edaa8f8f27331cb6988779be"}, + {file = "rapidfuzz-3.10.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9da82aa4b46973aaf9e03bb4c3d6977004648c8638febfc0f9d237e865761270"}, + {file = "rapidfuzz-3.10.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:c34c022d5ad564f1a5a57a4a89793bd70d7bad428150fb8ff2760b223407cdcf"}, + {file = "rapidfuzz-3.10.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:1e96c84d6c2a0ca94e15acb5399118fff669f4306beb98a6d8ec6f5dccab4412"}, + {file = "rapidfuzz-3.10.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:e8e154b84a311263e1aca86818c962e1fa9eefdd643d1d5d197fcd2738f88cb9"}, + {file = "rapidfuzz-3.10.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:335fee93188f8cd585552bb8057228ce0111bd227fa81bfd40b7df6b75def8ab"}, + {file = "rapidfuzz-3.10.1-cp313-cp313-win32.whl", hash = "sha256:6729b856166a9e95c278410f73683957ea6100c8a9d0a8dbe434c49663689255"}, + {file = "rapidfuzz-3.10.1-cp313-cp313-win_amd64.whl", hash = "sha256:0e06d99ad1ad97cb2ef7f51ec6b1fedd74a3a700e4949353871cf331d07b382a"}, + {file = "rapidfuzz-3.10.1-cp313-cp313-win_arm64.whl", hash = "sha256:8d1b7082104d596a3eb012e0549b2634ed15015b569f48879701e9d8db959dbb"}, + {file = "rapidfuzz-3.10.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:779027d3307e1a2b1dc0c03c34df87a470a368a1a0840a9d2908baf2d4067956"}, + {file = "rapidfuzz-3.10.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:440b5608ab12650d0390128d6858bc839ae77ffe5edf0b33a1551f2fa9860651"}, + {file = "rapidfuzz-3.10.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82cac41a411e07a6f3dc80dfbd33f6be70ea0abd72e99c59310819d09f07d945"}, + {file = "rapidfuzz-3.10.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:958473c9f0bca250590200fd520b75be0dbdbc4a7327dc87a55b6d7dc8d68552"}, + {file = "rapidfuzz-3.10.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9ef60dfa73749ef91cb6073be1a3e135f4846ec809cc115f3cbfc6fe283a5584"}, + {file = "rapidfuzz-3.10.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7fbac18f2c19fc983838a60611e67e3262e36859994c26f2ee85bb268de2355"}, + {file = "rapidfuzz-3.10.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a0d519ff39db887cd73f4e297922786d548f5c05d6b51f4e6754f452a7f4296"}, + {file = "rapidfuzz-3.10.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:bebb7bc6aeb91cc57e4881b222484c26759ca865794187217c9dcea6c33adae6"}, + {file = "rapidfuzz-3.10.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:fe07f8b9c3bb5c5ad1d2c66884253e03800f4189a60eb6acd6119ebaf3eb9894"}, + {file = "rapidfuzz-3.10.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:bfa48a4a2d45a41457f0840c48e579db157a927f4e97acf6e20df8fc521c79de"}, + {file = "rapidfuzz-3.10.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:2cf44d01bfe8ee605b7eaeecbc2b9ca64fc55765f17b304b40ed8995f69d7716"}, + {file = "rapidfuzz-3.10.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1e6bbca9246d9eedaa1c84e04a7f555493ba324d52ae4d9f3d9ddd1b740dcd87"}, + {file = "rapidfuzz-3.10.1-cp39-cp39-win32.whl", hash = "sha256:567f88180f2c1423b4fe3f3ad6e6310fc97b85bdba574801548597287fc07028"}, + {file = "rapidfuzz-3.10.1-cp39-cp39-win_amd64.whl", hash = "sha256:6b2cd7c29d6ecdf0b780deb587198f13213ac01c430ada6913452fd0c40190fc"}, + {file = "rapidfuzz-3.10.1-cp39-cp39-win_arm64.whl", hash = "sha256:9f912d459e46607ce276128f52bea21ebc3e9a5ccf4cccfef30dd5bddcf47be8"}, + {file = "rapidfuzz-3.10.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:ac4452f182243cfab30ba4668ef2de101effaedc30f9faabb06a095a8c90fd16"}, + {file = "rapidfuzz-3.10.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:565c2bd4f7d23c32834652b27b51dd711814ab614b4e12add8476be4e20d1cf5"}, + {file = "rapidfuzz-3.10.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:187d9747149321607be4ccd6f9f366730078bed806178ec3eeb31d05545e9e8f"}, + {file = "rapidfuzz-3.10.1-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:616290fb9a8fa87e48cb0326d26f98d4e29f17c3b762c2d586f2b35c1fd2034b"}, + {file = "rapidfuzz-3.10.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:073a5b107e17ebd264198b78614c0206fa438cce749692af5bc5f8f484883f50"}, + {file = "rapidfuzz-3.10.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:39c4983e2e2ccb9732f3ac7d81617088822f4a12291d416b09b8a1eadebb3e29"}, + {file = "rapidfuzz-3.10.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:ac7adee6bcf0c6fee495d877edad1540a7e0f5fc208da03ccb64734b43522d7a"}, + {file = "rapidfuzz-3.10.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:425f4ac80b22153d391ee3f94bc854668a0c6c129f05cf2eaf5ee74474ddb69e"}, + {file = "rapidfuzz-3.10.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:65a2fa13e8a219f9b5dcb9e74abe3ced5838a7327e629f426d333dfc8c5a6e66"}, + {file = "rapidfuzz-3.10.1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:75561f3df9a906aaa23787e9992b228b1ab69007932dc42070f747103e177ba8"}, + {file = "rapidfuzz-3.10.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:edd062490537e97ca125bc6c7f2b7331c2b73d21dc304615afe61ad1691e15d5"}, + {file = "rapidfuzz-3.10.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:cfcc8feccf63245a22dfdd16e222f1a39771a44b870beb748117a0e09cbb4a62"}, + {file = "rapidfuzz-3.10.1.tar.gz", hash = "sha256:5a15546d847a915b3f42dc79ef9b0c78b998b4e2c53b252e7166284066585979"}, ] [package.extras] @@ -4383,13 +4397,13 @@ files = [ [[package]] name = "rich" -version = "13.9.2" +version = "13.9.3" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" optional = false python-versions = ">=3.8.0" files = [ - {file = "rich-13.9.2-py3-none-any.whl", hash = "sha256:8c82a3d3f8dcfe9e734771313e606b39d8247bb6b826e196f4914b333b743cf1"}, - {file = "rich-13.9.2.tar.gz", hash = "sha256:51a2c62057461aaf7152b4d611168f93a9fc73068f8ded2790f29fe2b5366d0c"}, + {file = "rich-13.9.3-py3-none-any.whl", hash = "sha256:9836f5096eb2172c9e77df411c1b009bace4193d6a481d534fea75ebba758283"}, + {file = "rich-13.9.3.tar.gz", hash = "sha256:bc1e01b899537598cf02579d2b9f4a415104d3fc439313a7a2c165d76557a08e"}, ] [package.dependencies] @@ -4531,61 +4545,52 @@ jinja2 = ["ruamel.yaml.jinja2 (>=0.2)"] [[package]] name = "ruamel-yaml-clib" -version = "0.2.8" +version = "0.2.12" description = "C version of reader, parser and emitter for ruamel.yaml derived from libyaml" optional = false -python-versions = ">=3.6" +python-versions = ">=3.9" files = [ - {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b42169467c42b692c19cf539c38d4602069d8c1505e97b86387fcf7afb766e1d"}, - {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:07238db9cbdf8fc1e9de2489a4f68474e70dffcb32232db7c08fa61ca0c7c462"}, - {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:fff3573c2db359f091e1589c3d7c5fc2f86f5bdb6f24252c2d8e539d4e45f412"}, - {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-manylinux_2_24_aarch64.whl", hash = "sha256:aa2267c6a303eb483de8d02db2871afb5c5fc15618d894300b88958f729ad74f"}, - {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:840f0c7f194986a63d2c2465ca63af8ccbbc90ab1c6001b1978f05119b5e7334"}, - {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:024cfe1fc7c7f4e1aff4a81e718109e13409767e4f871443cbff3dba3578203d"}, - {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-win32.whl", hash = "sha256:c69212f63169ec1cfc9bb44723bf2917cbbd8f6191a00ef3410f5a7fe300722d"}, - {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-win_amd64.whl", hash = "sha256:cabddb8d8ead485e255fe80429f833172b4cadf99274db39abc080e068cbcc31"}, - {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:bef08cd86169d9eafb3ccb0a39edb11d8e25f3dae2b28f5c52fd997521133069"}, - {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:b16420e621d26fdfa949a8b4b47ade8810c56002f5389970db4ddda51dbff248"}, - {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:25c515e350e5b739842fc3228d662413ef28f295791af5e5110b543cf0b57d9b"}, - {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-manylinux_2_24_aarch64.whl", hash = "sha256:1707814f0d9791df063f8c19bb51b0d1278b8e9a2353abbb676c2f685dee6afe"}, - {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:46d378daaac94f454b3a0e3d8d78cafd78a026b1d71443f4966c696b48a6d899"}, - {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:09b055c05697b38ecacb7ac50bdab2240bfca1a0c4872b0fd309bb07dc9aa3a9"}, - {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-win32.whl", hash = "sha256:53a300ed9cea38cf5a2a9b069058137c2ca1ce658a874b79baceb8f892f915a7"}, - {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-win_amd64.whl", hash = "sha256:c2a72e9109ea74e511e29032f3b670835f8a59bbdc9ce692c5b4ed91ccf1eedb"}, - {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:ebc06178e8821efc9692ea7544aa5644217358490145629914d8020042c24aa1"}, - {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:edaef1c1200c4b4cb914583150dcaa3bc30e592e907c01117c08b13a07255ec2"}, - {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d176b57452ab5b7028ac47e7b3cf644bcfdc8cacfecf7e71759f7f51a59e5c92"}, - {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-manylinux_2_24_aarch64.whl", hash = "sha256:1dc67314e7e1086c9fdf2680b7b6c2be1c0d8e3a8279f2e993ca2a7545fecf62"}, - {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3213ece08ea033eb159ac52ae052a4899b56ecc124bb80020d9bbceeb50258e9"}, - {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:aab7fd643f71d7946f2ee58cc88c9b7bfc97debd71dcc93e03e2d174628e7e2d"}, - {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-win32.whl", hash = "sha256:5c365d91c88390c8d0a8545df0b5857172824b1c604e867161e6b3d59a827eaa"}, - {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-win_amd64.whl", hash = "sha256:1758ce7d8e1a29d23de54a16ae867abd370f01b5a69e1a3ba75223eaa3ca1a1b"}, - {file = "ruamel.yaml.clib-0.2.8-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a5aa27bad2bb83670b71683aae140a1f52b0857a2deff56ad3f6c13a017a26ed"}, - {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c58ecd827313af6864893e7af0a3bb85fd529f862b6adbefe14643947cfe2942"}, - {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-macosx_12_0_arm64.whl", hash = "sha256:f481f16baec5290e45aebdc2a5168ebc6d35189ae6fea7a58787613a25f6e875"}, - {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-manylinux_2_24_aarch64.whl", hash = "sha256:77159f5d5b5c14f7c34073862a6b7d34944075d9f93e681638f6d753606c6ce6"}, - {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7f67a1ee819dc4562d444bbafb135832b0b909f81cc90f7aa00260968c9ca1b3"}, - {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:4ecbf9c3e19f9562c7fdd462e8d18dd902a47ca046a2e64dba80699f0b6c09b7"}, - {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:87ea5ff66d8064301a154b3933ae406b0863402a799b16e4a1d24d9fbbcbe0d3"}, - {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-win32.whl", hash = "sha256:75e1ed13e1f9de23c5607fe6bd1aeaae21e523b32d83bb33918245361e9cc51b"}, - {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-win_amd64.whl", hash = "sha256:3f215c5daf6a9d7bbed4a0a4f760f3113b10e82ff4c5c44bec20a68c8014f675"}, - {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1b617618914cb00bf5c34d4357c37aa15183fa229b24767259657746c9077615"}, - {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:a6a9ffd280b71ad062eae53ac1659ad86a17f59a0fdc7699fd9be40525153337"}, - {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-manylinux_2_24_aarch64.whl", hash = "sha256:305889baa4043a09e5b76f8e2a51d4ffba44259f6b4c72dec8ca56207d9c6fe1"}, - {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:700e4ebb569e59e16a976857c8798aee258dceac7c7d6b50cab63e080058df91"}, - {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:e2b4c44b60eadec492926a7270abb100ef9f72798e18743939bdbf037aab8c28"}, - {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e79e5db08739731b0ce4850bed599235d601701d5694c36570a99a0c5ca41a9d"}, - {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-win32.whl", hash = "sha256:955eae71ac26c1ab35924203fda6220f84dce57d6d7884f189743e2abe3a9fbe"}, - {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-win_amd64.whl", hash = "sha256:56f4252222c067b4ce51ae12cbac231bce32aee1d33fbfc9d17e5b8d6966c312"}, - {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:03d1162b6d1df1caa3a4bd27aa51ce17c9afc2046c31b0ad60a0a96ec22f8001"}, - {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:bba64af9fa9cebe325a62fa398760f5c7206b215201b0ec825005f1b18b9bccf"}, - {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-manylinux_2_24_aarch64.whl", hash = "sha256:a1a45e0bb052edf6a1d3a93baef85319733a888363938e1fc9924cb00c8df24c"}, - {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:da09ad1c359a728e112d60116f626cc9f29730ff3e0e7db72b9a2dbc2e4beed5"}, - {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:184565012b60405d93838167f425713180b949e9d8dd0bbc7b49f074407c5a8b"}, - {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a75879bacf2c987c003368cf14bed0ffe99e8e85acfa6c0bfffc21a090f16880"}, - {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-win32.whl", hash = "sha256:84b554931e932c46f94ab306913ad7e11bba988104c5cff26d90d03f68258cd5"}, - {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-win_amd64.whl", hash = "sha256:25ac8c08322002b06fa1d49d1646181f0b2c72f5cbc15a85e80b4c30a544bb15"}, - {file = "ruamel.yaml.clib-0.2.8.tar.gz", hash = "sha256:beb2e0404003de9a4cab9753a8805a8fe9320ee6673136ed7f04255fe60bb512"}, + {file = "ruamel.yaml.clib-0.2.12-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:11f891336688faf5156a36293a9c362bdc7c88f03a8a027c2c1d8e0bcde998e5"}, + {file = "ruamel.yaml.clib-0.2.12-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:a606ef75a60ecf3d924613892cc603b154178ee25abb3055db5062da811fd969"}, + {file = "ruamel.yaml.clib-0.2.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd5415dded15c3822597455bc02bcd66e81ef8b7a48cb71a33628fc9fdde39df"}, + {file = "ruamel.yaml.clib-0.2.12-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f66efbc1caa63c088dead1c4170d148eabc9b80d95fb75b6c92ac0aad2437d76"}, + {file = "ruamel.yaml.clib-0.2.12-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:22353049ba4181685023b25b5b51a574bce33e7f51c759371a7422dcae5402a6"}, + {file = "ruamel.yaml.clib-0.2.12-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:932205970b9f9991b34f55136be327501903f7c66830e9760a8ffb15b07f05cd"}, + {file = "ruamel.yaml.clib-0.2.12-cp310-cp310-win32.whl", hash = "sha256:3eac5a91891ceb88138c113f9db04f3cebdae277f5d44eaa3651a4f573e6a5da"}, + {file = "ruamel.yaml.clib-0.2.12-cp310-cp310-win_amd64.whl", hash = "sha256:ab007f2f5a87bd08ab1499bdf96f3d5c6ad4dcfa364884cb4549aa0154b13a28"}, + {file = "ruamel.yaml.clib-0.2.12-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:4a6679521a58256a90b0d89e03992c15144c5f3858f40d7c18886023d7943db6"}, + {file = "ruamel.yaml.clib-0.2.12-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:d84318609196d6bd6da0edfa25cedfbabd8dbde5140a0a23af29ad4b8f91fb1e"}, + {file = "ruamel.yaml.clib-0.2.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb43a269eb827806502c7c8efb7ae7e9e9d0573257a46e8e952f4d4caba4f31e"}, + {file = "ruamel.yaml.clib-0.2.12-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:811ea1594b8a0fb466172c384267a4e5e367298af6b228931f273b111f17ef52"}, + {file = "ruamel.yaml.clib-0.2.12-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:cf12567a7b565cbf65d438dec6cfbe2917d3c1bdddfce84a9930b7d35ea59642"}, + {file = "ruamel.yaml.clib-0.2.12-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7dd5adc8b930b12c8fc5b99e2d535a09889941aa0d0bd06f4749e9a9397c71d2"}, + {file = "ruamel.yaml.clib-0.2.12-cp311-cp311-win32.whl", hash = "sha256:bd0a08f0bab19093c54e18a14a10b4322e1eacc5217056f3c063bd2f59853ce4"}, + {file = "ruamel.yaml.clib-0.2.12-cp311-cp311-win_amd64.whl", hash = "sha256:a274fb2cb086c7a3dea4322ec27f4cb5cc4b6298adb583ab0e211a4682f241eb"}, + {file = "ruamel.yaml.clib-0.2.12-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:20b0f8dc160ba83b6dcc0e256846e1a02d044e13f7ea74a3d1d56ede4e48c632"}, + {file = "ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:943f32bc9dedb3abff9879edc134901df92cfce2c3d5c9348f172f62eb2d771d"}, + {file = "ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95c3829bb364fdb8e0332c9931ecf57d9be3519241323c5274bd82f709cebc0c"}, + {file = "ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:749c16fcc4a2b09f28843cda5a193e0283e47454b63ec4b81eaa2242f50e4ccd"}, + {file = "ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bf165fef1f223beae7333275156ab2022cffe255dcc51c27f066b4370da81e31"}, + {file = "ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:32621c177bbf782ca5a18ba4d7af0f1082a3f6e517ac2a18b3974d4edf349680"}, + {file = "ruamel.yaml.clib-0.2.12-cp312-cp312-win32.whl", hash = "sha256:e8c4ebfcfd57177b572e2040777b8abc537cdef58a2120e830124946aa9b42c5"}, + {file = "ruamel.yaml.clib-0.2.12-cp312-cp312-win_amd64.whl", hash = "sha256:0467c5965282c62203273b838ae77c0d29d7638c8a4e3a1c8bdd3602c10904e4"}, + {file = "ruamel.yaml.clib-0.2.12-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:4c8c5d82f50bb53986a5e02d1b3092b03622c02c2eb78e29bec33fd9593bae1a"}, + {file = "ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux2014_aarch64.whl", hash = "sha256:e7e3736715fbf53e9be2a79eb4db68e4ed857017344d697e8b9749444ae57475"}, + {file = "ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b7e75b4965e1d4690e93021adfcecccbca7d61c7bddd8e22406ef2ff20d74ef"}, + {file = "ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96777d473c05ee3e5e3c3e999f5d23c6f4ec5b0c38c098b3a5229085f74236c6"}, + {file = "ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:3bc2a80e6420ca8b7d3590791e2dfc709c88ab9152c00eeb511c9875ce5778bf"}, + {file = "ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e188d2699864c11c36cdfdada94d781fd5d6b0071cd9c427bceb08ad3d7c70e1"}, + {file = "ruamel.yaml.clib-0.2.12-cp313-cp313-win32.whl", hash = "sha256:6442cb36270b3afb1b4951f060eccca1ce49f3d087ca1ca4563a6eb479cb3de6"}, + {file = "ruamel.yaml.clib-0.2.12-cp313-cp313-win_amd64.whl", hash = "sha256:e5b8daf27af0b90da7bb903a876477a9e6d7270be6146906b276605997c7e9a3"}, + {file = "ruamel.yaml.clib-0.2.12-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:fc4b630cd3fa2cf7fce38afa91d7cfe844a9f75d7f0f36393fa98815e911d987"}, + {file = "ruamel.yaml.clib-0.2.12-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:bc5f1e1c28e966d61d2519f2a3d451ba989f9ea0f2307de7bc45baa526de9e45"}, + {file = "ruamel.yaml.clib-0.2.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a0e060aace4c24dcaf71023bbd7d42674e3b230f7e7b97317baf1e953e5b519"}, + {file = "ruamel.yaml.clib-0.2.12-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e2f1c3765db32be59d18ab3953f43ab62a761327aafc1594a2a1fbe038b8b8a7"}, + {file = "ruamel.yaml.clib-0.2.12-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:d85252669dc32f98ebcd5d36768f5d4faeaeaa2d655ac0473be490ecdae3c285"}, + {file = "ruamel.yaml.clib-0.2.12-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e143ada795c341b56de9418c58d028989093ee611aa27ffb9b7f609c00d813ed"}, + {file = "ruamel.yaml.clib-0.2.12-cp39-cp39-win32.whl", hash = "sha256:beffaed67936fbbeffd10966a4eb53c402fafd3d6833770516bf7314bc6ffa12"}, + {file = "ruamel.yaml.clib-0.2.12-cp39-cp39-win_amd64.whl", hash = "sha256:040ae85536960525ea62868b642bdb0c2cc6021c9f9d507810c0c604e66f5a7b"}, + {file = "ruamel.yaml.clib-0.2.12.tar.gz", hash = "sha256:6c8fbb13ec503f99a91901ab46e0b07ae7941cd527393187039aec586fdfd36f"}, ] [[package]] @@ -4714,23 +4719,23 @@ tornado = ["tornado (>=6)"] [[package]] name = "setuptools" -version = "75.2.0" +version = "75.3.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false 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 = "shellingham" @@ -4756,110 +4761,110 @@ files = [ [[package]] name = "simsimd" -version = "5.9.4" +version = "5.9.6" description = "Portable mixed-precision BLAS-like vector math library for x86 and ARM" optional = false python-versions = "*" files = [ - {file = "simsimd-5.9.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:9aa3bb197bea5bf92ff7cbb33d4b5eea10f37d5122599142555eb556714ee542"}, - {file = "simsimd-5.9.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2e580b93b82fa60b6c54aabfe7cfac7a4e5bdee4556a99c77cf51f8a35849ad9"}, - {file = "simsimd-5.9.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:604b3d2622b37713a7adcfd7e2d0d432968ba988ec7bcd9ed3f631eacfc9be0e"}, - {file = "simsimd-5.9.4-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fc20c854bba8c9b6f1bcae41f46c8ff81402d80bba4658226c45f254d97d393b"}, - {file = "simsimd-5.9.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7d8c493ebbba65bd8305f2d5d7046b520bf39d020720700b23162eb8ba47b040"}, - {file = "simsimd-5.9.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7ba24d583542bfea4d7b70eafdd528d774486df3667101f280b5d6c89e848a32"}, - {file = "simsimd-5.9.4-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:e45e095fef614a73b66c24b96f7c93de33c8d62ce756d9b2dc0c181c8ee57ca7"}, - {file = "simsimd-5.9.4-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:b6a68f3c549d7c9bad134c39dd0186ee43943ace80f20e1f433b4a0e85af6158"}, - {file = "simsimd-5.9.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:6559e437f4351664d46e51ca9e692850c7102e301431e78a2580ffc1f5693c22"}, - {file = "simsimd-5.9.4-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:070b50f3beee90ec842392b8fb888247987053235bebf046b160e2491c315699"}, - {file = "simsimd-5.9.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:1d275e9ab98e652b5f9d50ef0a8191dd6a7cd15a900afc477ecd8d9267efa416"}, - {file = "simsimd-5.9.4-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:148a4a698d694aa5c27cdf48cc15bd7ed7c3fc62b85d1e69ccd5171955112cf5"}, - {file = "simsimd-5.9.4-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8b6697b66144273203696c5b9f8af475da9a1967b048de931c8238426edb6d47"}, - {file = "simsimd-5.9.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9b0f1ff1cf35e84a52a506ab23d1ed3800dbfe9ceb4f3c2f9e88627abcbf01fe"}, - {file = "simsimd-5.9.4-cp310-cp310-win32.whl", hash = "sha256:5244a0409121d4caf13d1eb2dd017ae5106a92119368a7e67e5860c443faec23"}, - {file = "simsimd-5.9.4-cp310-cp310-win_amd64.whl", hash = "sha256:e57b292964db34521d3803d6eae8f51fca5e1c76d1c16bd28aa50102c0ce93aa"}, - {file = "simsimd-5.9.4-cp310-cp310-win_arm64.whl", hash = "sha256:f335d91cae89f633b44469128dfe7f4b2c7cdbe4f46538eecb59019dd538f067"}, - {file = "simsimd-5.9.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6d4cc3bdf78380ebd7eb4da45b83b80f5c5b5ae0538de36574f7fa36069466e5"}, - {file = "simsimd-5.9.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fc707a98ea34c51c7982145b830548a4af3902efec7bb0b42a4fc650f3567d46"}, - {file = "simsimd-5.9.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f4a4a0c472fff6c631af0d8b43b1e99e5ec8c8b9e3bfb7ac7d0e4fada0efa25b"}, - {file = "simsimd-5.9.4-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:088d06f8c4afb8cb7e7f174774253f8d970c68db92a06de6007f24ea7c98886e"}, - {file = "simsimd-5.9.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:689523f10440bb4f9c9c18618e5fa57516747b5c4b0786401c197604f9ae9e1e"}, - {file = "simsimd-5.9.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3af1c689e5cc520d583648d796cbf839329b96e1d476bef2cbb9812c095fa6b1"}, - {file = "simsimd-5.9.4-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:f155926c01c22684da74cf63290b72fa8b8e01d04ae07e95c080900b35c48896"}, - {file = "simsimd-5.9.4-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d292270207d564f8071b07301cce4c3b1c88c28141ac2839e30c415686ec66d6"}, - {file = "simsimd-5.9.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3f55a79f049a6d468540b313e6c5bf3e741e9b1de931aeb278372d2ff29f35ca"}, - {file = "simsimd-5.9.4-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:6bef5a36743bf9d6f6976c0e7e889a6b44773d944d70b15223f69786ea5e2364"}, - {file = "simsimd-5.9.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:702b18ee287d734c746bf8977040cd89873e19331dff31000e928c0409f93042"}, - {file = "simsimd-5.9.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:ae7139168667c3f8ca89fbba2af3df9250dc6f49ad40272c3bbb5924304b3d84"}, - {file = "simsimd-5.9.4-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:2d63f37571baaea25fce9fa4973ff307e88969c7ef04717361d99cb844308c98"}, - {file = "simsimd-5.9.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4dd2a95c7ffbc04e6cd0833985b80ac8fa8b040f3b619616b542e931b83313b3"}, - {file = "simsimd-5.9.4-cp311-cp311-win32.whl", hash = "sha256:5b89e5536cc357cc4fb08839467b5b63ab3671c564e52bca463e7615852cc0ad"}, - {file = "simsimd-5.9.4-cp311-cp311-win_amd64.whl", hash = "sha256:52cb4e52f248b84db641bd92d6a5f16fd1c085ab194e8f003a65a69d52905b5e"}, - {file = "simsimd-5.9.4-cp311-cp311-win_arm64.whl", hash = "sha256:e418f756a2eebcadf983c24dbf4f68b0c9200aafddad864022ed15c1b2feaf85"}, - {file = "simsimd-5.9.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:20041c10750feb69d6d62ed6010e6357ccec7cb8e1eb97a8d2518c23965d1a1b"}, - {file = "simsimd-5.9.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:83813b3e325fcb69c81c2b2cdb08fc0e1b78479eea3b134b07e6cf216c9b954d"}, - {file = "simsimd-5.9.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:704138b45d54ae95db6ec7b239b6fc410c93f28af9e0a1e31469225c26aa59a8"}, - {file = "simsimd-5.9.4-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7be7482084d836d90384b818a37299591569811351548348b4d60c1d90cee4a"}, - {file = "simsimd-5.9.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:afef7ec944dfb27c997d26e6c4bf3f76b2d211f2e644765025fbaeb108cef609"}, - {file = "simsimd-5.9.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cc0412d6b238bba6be3719361d04b22a3e98e9b7cd0e24d5e810f7643db79513"}, - {file = "simsimd-5.9.4-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:94422a3c723303b79a0ab75cb64ab07e3d9d9f3e376b1eda7a0ffd9de75f32a7"}, - {file = "simsimd-5.9.4-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:7072ba69894e212756f1ff2304d89972c2d49d7cb524426abdac6551c5d29a07"}, - {file = "simsimd-5.9.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1820794cf0070b67579a7868b63f209d3de6ad5e23beabe84f6f1d97d2eee9ff"}, - {file = "simsimd-5.9.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:08820f1380696adb04709d6e59ab89dd1402419eb894f3d6742bf13f52c3d532"}, - {file = "simsimd-5.9.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:c7894bb8d476cbe6bd216dac86be2d39b589a5f69306e4d30df1d49cc55da83e"}, - {file = "simsimd-5.9.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7ab6ba0bb0616ac8103ff51f580aeece31967ecc481000ca3e4b119ce4981bdc"}, - {file = "simsimd-5.9.4-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:988b116ca7664615b8af80ef8c7d50e5aee8239792af84c7a0236cbfb506b8f0"}, - {file = "simsimd-5.9.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:761c30ee3f250013ba6c0a98ae043c3df372593acefd9a88d205a50104613860"}, - {file = "simsimd-5.9.4-cp312-cp312-win32.whl", hash = "sha256:ebe8b0fe9fe68b95f7068cc533a00a6bace8390d6fa69757524b52ce3e94d3a8"}, - {file = "simsimd-5.9.4-cp312-cp312-win_amd64.whl", hash = "sha256:99fa8a36faa904382e23b4f5c92410809ea73cc6977bdab6db7aa263c03af45c"}, - {file = "simsimd-5.9.4-cp312-cp312-win_arm64.whl", hash = "sha256:e740219884f3a602726ecd88e58afcdc1a5d475e9eb5c5780d90e120a91599b2"}, - {file = "simsimd-5.9.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6ddb59bbd3060b2c266274a62279da8f49766e2e89a690d0b0f26b7dc384c171"}, - {file = "simsimd-5.9.4-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cfbaeb368186628f3b028308f5e7e76a4508eb3ff6ec5dcd378f9502a0068a99"}, - {file = "simsimd-5.9.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1bba3e2740fe17117ea06314c8c8b2e0ce2802d24b9c3d609feaddbd18b45ea3"}, - {file = "simsimd-5.9.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e19db5973c8ab88462d366eba1a3355986963e154cf404cd997c5bfd61f545b7"}, - {file = "simsimd-5.9.4-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:0206b4a5941e9cf3fe6c13cdb368810bceecfbd925699a039cfaa0186bf880f0"}, - {file = "simsimd-5.9.4-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:8dccd6843294ed5af3b3b3f1e105af79913537caf13fb66bf0286c8edc37cabc"}, - {file = "simsimd-5.9.4-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:95da968cf47c28ede55c1117182227c3feaae14e69236a93f88ac4ebf0164dbb"}, - {file = "simsimd-5.9.4-cp37-cp37m-musllinux_1_2_armv7l.whl", hash = "sha256:dff91aedba35410c956c0f58bc7fac3dbb857c2de0da7fe7462922767f1f752d"}, - {file = "simsimd-5.9.4-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:eefba8563e819f9498cdb99d0955547d34c743404b9b6e77324f5996ba6fac69"}, - {file = "simsimd-5.9.4-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:1854d7bd381cd784f0eba401d3c7a473f215907c69ceba37ff33d849c906c294"}, - {file = "simsimd-5.9.4-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:77d00679f537127f3ae81a5be8cec59e2dd646b4f038962a5e51c6b5fc8ff638"}, - {file = "simsimd-5.9.4-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:2f891052a796b329a1b9524b291e46ed27d3c15263e28af1beb71709b3dcdbde"}, - {file = "simsimd-5.9.4-cp37-cp37m-win32.whl", hash = "sha256:bd576d41b4c34f982950d12e0e44cd1c3a036e68ef64a502bd77575f1e9cb133"}, - {file = "simsimd-5.9.4-cp37-cp37m-win_amd64.whl", hash = "sha256:b049767596826931f603f7dd7078deb4df6e5f5c72e781f120b9e39d29da1d7c"}, - {file = "simsimd-5.9.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e52a9ffca8d369d6896b17ef146510dd245bb75183d4cd9853c5b798bcc54cd6"}, - {file = "simsimd-5.9.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0d072d0447ea391862e1f4b73fa252e05a50a5b521a054f038e5176ee226d6c9"}, - {file = "simsimd-5.9.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a60b8b082d395a33f2598689f9becd6d76a7c99ce6265cfdac9770e78074129d"}, - {file = "simsimd-5.9.4-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9f4c33ea0d63669d4f0274490fe3d8a1bfc38e63fffbdb2cc278413ec7cb2fa8"}, - {file = "simsimd-5.9.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:64babccde5c772cb70e1bc181350c7410a09a3b74d8d4c75a80c9b3c58f23fac"}, - {file = "simsimd-5.9.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1bedd64a05d15f1484c51d301508036f8b273bf27853c3ab46bb48ab5c8866c0"}, - {file = "simsimd-5.9.4-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:d0c544f904ee49c1b09ae57243eb5b65322cbcafd97f90d1387a701abb7992fe"}, - {file = "simsimd-5.9.4-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:af30676f5e4fbbc019d01ffe81a2f13408fb06ac00093b609dfa290cbed2c49b"}, - {file = "simsimd-5.9.4-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ba40d83fc876f340a8e3dea63300c312e79969b708ac0821e97cdb32ada63fb1"}, - {file = "simsimd-5.9.4-cp38-cp38-musllinux_1_2_armv7l.whl", hash = "sha256:522451990de7c9882ff725ddd07e97908bcb1b9717b8cf4d91863d756538a9a0"}, - {file = "simsimd-5.9.4-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:336005c695576a3d075a8d2850bb7aacdaabff972580c7a6a34bd99ea7c81328"}, - {file = "simsimd-5.9.4-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:ff2ab1cff5a830ec98400d39c6781e3897556702bf8b92ba10d58d292498103c"}, - {file = "simsimd-5.9.4-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:81ad083a65d6a4db620d8c0c70b40301d56338e49cc60ed76f3e13df1ce85a91"}, - {file = "simsimd-5.9.4-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:1c2064e42534ad094cc22c0e052d4bac364e29937d52ff6fda0560b81db7ac9d"}, - {file = "simsimd-5.9.4-cp38-cp38-win32.whl", hash = "sha256:06f32e34440240a491abad5859f46a316811664d117364e71fa392151a17b7b5"}, - {file = "simsimd-5.9.4-cp38-cp38-win_amd64.whl", hash = "sha256:ecc47cb003fc59fb25806500b70555d5aafaee02f8b1f827e290b455eaed60f3"}, - {file = "simsimd-5.9.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:19d3fb232401509b07a544fdb3d2e58f9d2f40ece682af75295f2ef2eaa9da83"}, - {file = "simsimd-5.9.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:02537903ba4a06e0bc5a918aaeb01cf482de3d2e3b56be594307e7b79db22e52"}, - {file = "simsimd-5.9.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4d243ad10f9a3785971953c0a1580fddd507150baa65efd9ccd794a3e4922792"}, - {file = "simsimd-5.9.4-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b2d737e8bbe39ffd56ba9628b84567c63dd8b659e66c397fd80e3f63222a150d"}, - {file = "simsimd-5.9.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e64c5893b8ac5ca8ff3b109b7715f4e3653b5d3993281c3ceea3acb9e041011e"}, - {file = "simsimd-5.9.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:342affe60887f546edad4e2788d6fb9208b81f35f465f84045ab779846847731"}, - {file = "simsimd-5.9.4-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:808df09687e2cb8844b74539ca807a7aa3e1475ed030e5214bf1038bdfabdc9d"}, - {file = "simsimd-5.9.4-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:8abd16873080c0fade2057cf371d02aa73e04cc1d1f5c16169dcd8a9cdbdadbc"}, - {file = "simsimd-5.9.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:a6b575b7d6a74cef9e87a3f3901fd7147891bdce130d655ff498eadb9b3d49bb"}, - {file = "simsimd-5.9.4-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:d3fac32be9f6cb4b989a5c6ca79852f3731286a2ef2b65128350d7218cb84258"}, - {file = "simsimd-5.9.4-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ea76107e145e3317c7f72a906a80e4714b07ecaeb69f1b2e373e31db0c85be1e"}, - {file = "simsimd-5.9.4-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:0fa47f8b255f7c02ec2d22a58a1300026ae4e875791cd2696f1201ac3da00e93"}, - {file = "simsimd-5.9.4-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:e5e1961a04a2365b4d5cfdab8463729aa8765e49f3c59cd098fdffce8402c15e"}, - {file = "simsimd-5.9.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:89fd6e3a4453b6068e6ca43801c407fc8d5320ef6eda654ca2b470986f423855"}, - {file = "simsimd-5.9.4-cp39-cp39-win32.whl", hash = "sha256:3c60915dfbf21a7c68e409dc159a29c3a74adbdecd1961d89206fc8d86ac9000"}, - {file = "simsimd-5.9.4-cp39-cp39-win_amd64.whl", hash = "sha256:32d484a86aef01aa17bbde89d690319fe204399eab0120b719b7aefaea1f7a45"}, - {file = "simsimd-5.9.4-cp39-cp39-win_arm64.whl", hash = "sha256:def1b28b4520dc304f29ab1dd8cd5d16dd6f7ee0aec1a15e3e9a3dca736cd7dd"}, - {file = "simsimd-5.9.4.tar.gz", hash = "sha256:f75115884854e4576130031636288294ff7045ec9812482d6a01f4f32702482b"}, + {file = "simsimd-5.9.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4432c7b9a601788052b1ee9a5f7c0013cc2b2a9a6415b535d9ab137c320a79a7"}, + {file = "simsimd-5.9.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d2e4d9fc4a42e0a48942cdd0958c241c2d5227f1366d1b3454310c9a86d2c424"}, + {file = "simsimd-5.9.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b2ea0e6134606aee3b0a2eb4b522b2f7cb2ee9187d7b2c13ccf438e2939f93e0"}, + {file = "simsimd-5.9.6-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d889bb5ec60c0b80cffa849be2eb3933ff4cc81f743c32c8965054817b55fe08"}, + {file = "simsimd-5.9.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05d4768fcfb107296a15be4c64884d0f73b040af1b025d0fc78e5d2f8162735f"}, + {file = "simsimd-5.9.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:002f54f319b7bfde4ddf6a7f0ba1b5f1b6f14bd64166ccb6fb1c723e326badb2"}, + {file = "simsimd-5.9.6-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:25c2ffe16562fa13cb69e5a2ca8b206a0d320399a7833a90c73dcedb2b6c10ac"}, + {file = "simsimd-5.9.6-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:53dcecfe4fe5a352b29db18b2f85d3c078b29ec99ab483e8690f5ab97b38ea5c"}, + {file = "simsimd-5.9.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:851c5ed7017a728dc44d1000f10f5e7051c56ea641d1fe808a09dae8d891960b"}, + {file = "simsimd-5.9.6-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:387b87917784a5b1628258e7c723ecdc1234e1cf5b4bfec9f7f07574bf3e527f"}, + {file = "simsimd-5.9.6-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:4423a36c86e7ae90cb30e897eab556f8dfa1471351e9627adc8f5391fb45362b"}, + {file = "simsimd-5.9.6-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:bbfcbbc673513962a8efbcb0cb573f759d051933a395a10fb6039e823a4e3a16"}, + {file = "simsimd-5.9.6-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:cf2ba110a5e6e63e57de88a74602d6226fb27bff2f6c996a93c302ed462f910c"}, + {file = "simsimd-5.9.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3e52f026d30893de2d26530523a9c2b064a644db80c70c245cea90c8cecda78b"}, + {file = "simsimd-5.9.6-cp310-cp310-win32.whl", hash = "sha256:184dad8cabd35ae3ddc04dcd9d0c4af27adc6010e4d7d036617f5365b0d628b2"}, + {file = "simsimd-5.9.6-cp310-cp310-win_amd64.whl", hash = "sha256:c024e47f4b00595126ab4022e76d95d0bf0abfade863df5997f3d28130635f9b"}, + {file = "simsimd-5.9.6-cp310-cp310-win_arm64.whl", hash = "sha256:5f69fd85d72b9cc541ef61102780530b722c2e9a5140625d0af1e636f8fca1d2"}, + {file = "simsimd-5.9.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:02740cf56c09c1043238e448598ab25ae663f7b83e889ef26d9aa1e20bc6c9ef"}, + {file = "simsimd-5.9.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:976e020484514cb678ad6f92c331b7a9193762e92e67759fcf8e5be92e5b10a0"}, + {file = "simsimd-5.9.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d13666f446b26c667394f98e3041c8540c481deefb3b7e9043b1f2a38c693eaf"}, + {file = "simsimd-5.9.6-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6efc57354b0263697155b8b2311c87800b03b46479235c21b54bb01a2d8d50da"}, + {file = "simsimd-5.9.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0c8b2521b9453f6229c7a782b366f57d564264703efc8f8a9c8b0991ef741159"}, + {file = "simsimd-5.9.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0c7385f0ae0c2f9e07b48ce390755d96210221fdc537ba980356a0dd70288bb"}, + {file = "simsimd-5.9.6-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:e82e3634378c3fa3f6ad26d24d67e60e7fe77643aed1abad8470a2584370c989"}, + {file = "simsimd-5.9.6-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:606406de94e4bc280774a5f83a20bb67650e607fc8032566cdcea8ac3ba2abbf"}, + {file = "simsimd-5.9.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3c3db99fd49c89e8ab4fa65db09bccf118546e252f9ad6813e0f84f5d1d15dde"}, + {file = "simsimd-5.9.6-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:7ced4595715d5cdce81ba44e2e1346a53c0e36277139349049c04436d48af566"}, + {file = "simsimd-5.9.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:93a3c475585a5b730c00cd7ff3fa2e45fe08223d742482c99a266cf111785927"}, + {file = "simsimd-5.9.6-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:0b47e702f6810649932bfb0cd674467d8e1aa226e511a0658ae8ea404194ffe5"}, + {file = "simsimd-5.9.6-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:a1f2e3fca15e125b3440eb348f4c1abc3f8bd2ce1d4736b01928148acb3a031d"}, + {file = "simsimd-5.9.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:66ee8f1781da68196ae512be1f654b82dff6161a3eda5560bb44abc3778a45f6"}, + {file = "simsimd-5.9.6-cp311-cp311-win32.whl", hash = "sha256:610bfe102eed34e4d26d446449fef334f82137f55cd7ca8259043eae191d05e4"}, + {file = "simsimd-5.9.6-cp311-cp311-win_amd64.whl", hash = "sha256:46f08f40750c1330ef4afd07f8b87de123547727f442ff3ac21e5f623011cf07"}, + {file = "simsimd-5.9.6-cp311-cp311-win_arm64.whl", hash = "sha256:b48bf646161fd05bc632481d4eee15538707d6fa0e328fdf24823c8b64b8ce80"}, + {file = "simsimd-5.9.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:a5d7f9078e39e5a927d5e3cab07f6c0ccc2fe760c689347ffc6d24bcfdcc0803"}, + {file = "simsimd-5.9.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:eb4987691535a4946d07a63bf8d74cc6a6414824f21f22c142d72bdba88addf2"}, + {file = "simsimd-5.9.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e058f1f7c22de20278232351f0cb9fa18dcf9b840b4cc3728608122a57e6a88c"}, + {file = "simsimd-5.9.6-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:966fd1b822ed59d653aba00b3abe0bdc7ee4985d9a42cdf913c11c168fe3c824"}, + {file = "simsimd-5.9.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:069931ccf5618f92fd585b0c2674c7d3998a90dca618b88e66ded37fc6cf9f39"}, + {file = "simsimd-5.9.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9550615478c78926c4edeade8097d8d041692e93655162555c9f95f0973b4277"}, + {file = "simsimd-5.9.6-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:881c9f626e8c5fcefbdb13c7930e6283e883eebd690e0f29b75da3a262448e5f"}, + {file = "simsimd-5.9.6-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:97e05e242c98e89ecab37709449245b8b3168e1f770b842e7787fd25827a14f9"}, + {file = "simsimd-5.9.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6f0ea19351deef79057dbef0e41bd75f7efc2e1b51ca6c7b0232d0785f57f4f8"}, + {file = "simsimd-5.9.6-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:61affffa06a2982c415f780fcbd2caccf8ece4f09e2b038c2745e34580fbff48"}, + {file = "simsimd-5.9.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:310974a3aeaa13b6b9569e1c093c5b9fdf63dcd73baf74cb21217f91b7a92f1b"}, + {file = "simsimd-5.9.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:f9ab52b64efc53d44948d08ef771beb7588d8566aa06297cfdc60a1c557ed0e9"}, + {file = "simsimd-5.9.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:63e3fb12bf0be6968977bc3c38caca0021dc4be5253d51baadf5244ea67b17b2"}, + {file = "simsimd-5.9.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:cb1507c772ad2d53f5bd65d004fce9f6f8a54684152dc556ce3fcb0d8a722fc2"}, + {file = "simsimd-5.9.6-cp312-cp312-win32.whl", hash = "sha256:de441a6f4f657d6527f77e8427a950e7896d425eb85742977386270e6632faaf"}, + {file = "simsimd-5.9.6-cp312-cp312-win_amd64.whl", hash = "sha256:d1e9af596dfbd194156f5b95d7987614b5a4a46e802909eaf1a082cd272ff8cc"}, + {file = "simsimd-5.9.6-cp312-cp312-win_arm64.whl", hash = "sha256:d6f9cd377428b099be5b1ff58900ee33befc91dd04a5f8110b5f179bf82bcb68"}, + {file = "simsimd-5.9.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c05cd027f8b67c424205a9e32f31ef935e163ab71d3ba3ee5c8c041f67e69cbb"}, + {file = "simsimd-5.9.6-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1757e6cee1c8287ee25b357a9bb0ecdbe52a34ef2ae58b3bbdc9d2ef4ed2eda9"}, + {file = "simsimd-5.9.6-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:74c47139a72fe53d4e8d3637670d0b033486914dae4f329c20c74c0b6a38c856"}, + {file = "simsimd-5.9.6-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3ff86aa85c63940e0d2d44f4938b77734339752061f3f34516579ed487ca3242"}, + {file = "simsimd-5.9.6-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:20bd07913c835858846d6d73181d53e2ddecce2dcca43c61f550428b7a7325b3"}, + {file = "simsimd-5.9.6-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:d603f87bfdb5432169996a4e9c569546127638f4348d415df4acd3050bececca"}, + {file = "simsimd-5.9.6-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:5c3a99ceb6f80af1e4f05aef76b4ce5bd0faceb8e819fdaf90b8a8a68431795f"}, + {file = "simsimd-5.9.6-cp37-cp37m-musllinux_1_2_armv7l.whl", hash = "sha256:35f73b78fab14436ecc9aecb6c6ea17ad25a86a3f84edc62852b159760ca6dfe"}, + {file = "simsimd-5.9.6-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:61bf1e5704df01217307c0d47480b78d04c28647eeb8f404101a0659f7a1e6b0"}, + {file = "simsimd-5.9.6-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:ca601e68f5ca0ac8100b09907b0ade60681988f0fbfee470c35bac61e2bba78d"}, + {file = "simsimd-5.9.6-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:17c450275383bbe3a990a629b3c3b256ca9b7859855164993498b1a02f67d500"}, + {file = "simsimd-5.9.6-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:6f41942c7f4f5d122b51615c2f80108702f2db2e1b1f2a312adecd8623bc3dd2"}, + {file = "simsimd-5.9.6-cp37-cp37m-win32.whl", hash = "sha256:f8f8712ccd8ecafd81faf0e25ac36b86dd1c6df59a8c5a3fe2013b2a287e84f0"}, + {file = "simsimd-5.9.6-cp37-cp37m-win_amd64.whl", hash = "sha256:c081b851a843860780720a94621294d19ee04a079f8f33dc1e161d6b9865df80"}, + {file = "simsimd-5.9.6-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2574b8452d1a58ae309802a04ca36d82f7a812836cf38c111db65bb15ceb80e5"}, + {file = "simsimd-5.9.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c325632d4a529ac641c3b1839c8439c6d5cd3f701aabe863ec8a21ab2860b371"}, + {file = "simsimd-5.9.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f62428e420578ee8c69ba4039bd0f6bba7ae6562382843c174c3864a861ab3b3"}, + {file = "simsimd-5.9.6-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e367dd65a7239dad97fa3fa583c3c8cb0be8bd1ba1f619f16260a4acf71b4962"}, + {file = "simsimd-5.9.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3e8410032cf42c3ded62993b62c8ac2db4e68f94a84be671f6208cc3d4e22d04"}, + {file = "simsimd-5.9.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3cf641d7c97887eef991d1a07c25c055d2d7fea2aea126c05cc563a0ca5a560d"}, + {file = "simsimd-5.9.6-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:c7188705cab31956353e53aaf9b67f15a6b3a3eb2b8f9206bfb3b73c04c29e83"}, + {file = "simsimd-5.9.6-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:e9e69959cc9f5c7dea7743a34ae2e3daeec3b8a865c0acee7b1d8576222118eb"}, + {file = "simsimd-5.9.6-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:3b8217ee30256124a9fb2844df8a12227ea98cd253d0ceb8e27ab66f7de09fb4"}, + {file = "simsimd-5.9.6-cp38-cp38-musllinux_1_2_armv7l.whl", hash = "sha256:cd6aa5de5ddf68d19eb645bf18de197d9e23c393b9c9e6e8c91c715eef4a9702"}, + {file = "simsimd-5.9.6-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:f8c6309619125a9c75e6fec8578a8933d36ae4d665782fa20d0e06415cf9b8ff"}, + {file = "simsimd-5.9.6-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:69c41d2a11c028628b7e42661a7d039d2819c19438c16ba08ca417edee509901"}, + {file = "simsimd-5.9.6-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:12671235ddd13148bc990d81bb249a7f19193d092e1fdec6debbbfa12516ef8d"}, + {file = "simsimd-5.9.6-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:abf8451f63d67c5f5a5740d3346fe2ac8ab58190b5d2a21d70a94afaea0a21cc"}, + {file = "simsimd-5.9.6-cp38-cp38-win32.whl", hash = "sha256:cb2ad408760716fa0f7ece4d944a5e9f45efc43608bf337971a29701318715f5"}, + {file = "simsimd-5.9.6-cp38-cp38-win_amd64.whl", hash = "sha256:a2980c2aafa0cbde46ace8ce8b5d62fda8e2ee80d444cc21b628982bfe15e816"}, + {file = "simsimd-5.9.6-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e56d5f69784d157aa900709da8e39cee5a813a2465e78565cdc316256d149735"}, + {file = "simsimd-5.9.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0b4b26bbaaae52e1ac6ce51cc211f7d3abdd2e920b4da8b5d965c9c66a3f8a16"}, + {file = "simsimd-5.9.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b75ca873f82c954c3151a922c9d59b29b4f141f63e1d06bede4ad11e0d834a93"}, + {file = "simsimd-5.9.6-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e35746fca29b792b65f6f6f63d748a110689dd9e62ac44d66f22e8c512a22efc"}, + {file = "simsimd-5.9.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d6822c0eda44944f740982d6a472a8bf8d0ba1914b7ba3eb8bebcde5336968c7"}, + {file = "simsimd-5.9.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:252793c0cd6ff80049ff5fdda4b40305b0adecbfb87e7bc3c05c374675a3a1f6"}, + {file = "simsimd-5.9.6-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:dc67b043af1b23c06cda8c23faab300fdbcecc1baca5910036b9ddc74c31b225"}, + {file = "simsimd-5.9.6-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:f72abe2e3148bd1f40a22d2e9a21ef272af2b252dd400e2da3526e3c8330e4bf"}, + {file = "simsimd-5.9.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:fac7efa579314afcc98877dd581bc9ca6ef488a4293fcc3b721ea3e9f831ffc3"}, + {file = "simsimd-5.9.6-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:90d696be38fa0f7bfd613d5fd856b6c164f4ca5016a6d892fcd44c4b01dfb182"}, + {file = "simsimd-5.9.6-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:bccc84de9748703977150810553e0b12b022a8d9ae1e45f1b901dfa96eeedf55"}, + {file = "simsimd-5.9.6-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:f3b97dd0803f00e27c107e2d844f324219876ecb8b4def5c5aead5213c2c3249"}, + {file = "simsimd-5.9.6-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:49dbbc1d86e70cf6241653a1d0b5becad521a6b50f7baf1f9372a5669dd9b05a"}, + {file = "simsimd-5.9.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:43ff7b1307643f1161cfece6f276828406106d1d71aedcfbe1c355c39f17f3f2"}, + {file = "simsimd-5.9.6-cp39-cp39-win32.whl", hash = "sha256:f85eed79d40243e93742311e4d8d63e13e34671aba1e2354adc363bdf04ce34d"}, + {file = "simsimd-5.9.6-cp39-cp39-win_amd64.whl", hash = "sha256:8b760cb610bbc043c46ac4cf83b5a087ccefda26b20e3e744ee44eab9e5dabf1"}, + {file = "simsimd-5.9.6-cp39-cp39-win_arm64.whl", hash = "sha256:6fc38b1d2a634acbcb5e51decdd617a646bd8884ca5a5926c6b200a6bea30397"}, + {file = "simsimd-5.9.6.tar.gz", hash = "sha256:878e40bc280949e61a4061c7cb8bff85919429236cc6666115d1558b3ebf6e65"}, ] [[package]] @@ -5347,13 +5352,13 @@ blobfile = ["blobfile (>=2)"] [[package]] name = "tinycss2" -version = "1.3.0" +version = "1.4.0" description = "A tiny CSS parser" optional = false python-versions = ">=3.8" files = [ - {file = "tinycss2-1.3.0-py3-none-any.whl", hash = "sha256:54a8dbdffb334d536851be0226030e9505965bb2f30f21a4a82c55fb2a80fae7"}, - {file = "tinycss2-1.3.0.tar.gz", hash = "sha256:152f9acabd296a8375fbca5b84c961ff95971fcfc32e79550c8df8e29118c54d"}, + {file = "tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289"}, + {file = "tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7"}, ] [package.dependencies] @@ -5524,13 +5529,13 @@ files = [ [[package]] name = "tqdm" -version = "4.66.5" +version = "4.66.6" description = "Fast, Extensible Progress Meter" optional = false python-versions = ">=3.7" files = [ - {file = "tqdm-4.66.5-py3-none-any.whl", hash = "sha256:90279a3770753eafc9194a0364852159802111925aa30eb3f9d85b0e805ac7cd"}, - {file = "tqdm-4.66.5.tar.gz", hash = "sha256:e1020aef2e5096702d8a025ac7d16b1577279c9d63f8375b63083e9a5f0fcbad"}, + {file = "tqdm-4.66.6-py3-none-any.whl", hash = "sha256:223e8b5359c2efc4b30555531f09e9f2f3589bcd7fdd389271191031b49b7a63"}, + {file = "tqdm-4.66.6.tar.gz", hash = "sha256:4bdd694238bef1485ce839d67967ab50af8f9272aab687c0d7702a01da0be090"}, ] [package.dependencies] @@ -5576,13 +5581,13 @@ typing-extensions = ">=3.7.4.3" [[package]] name = "types-protobuf" -version = "5.28.0.20240924" +version = "5.28.3.20241029" description = "Typing stubs for protobuf" optional = false python-versions = ">=3.8" files = [ - {file = "types-protobuf-5.28.0.20240924.tar.gz", hash = "sha256:d181af8a256e5a91ce8d5adb53496e880efd9144c7d54483e3653332b60296f0"}, - {file = "types_protobuf-5.28.0.20240924-py3-none-any.whl", hash = "sha256:5cecf612ccdefb7dc95f7a51fb502902f20fc2e6681cd500184aaa1b3931d6a7"}, + {file = "types-protobuf-5.28.3.20241029.tar.gz", hash = "sha256:58e6c547601102e0601e3ad95ad326f85c27cda41dc9bd8c5f29ad2f3b6c6967"}, + {file = "types_protobuf-5.28.3.20241029-py3-none-any.whl", hash = "sha256:7536ea95a7f0a19710a5e0520dd096c985333ae49b7c5eb29e1367703096f17a"}, ] [[package]] @@ -6063,93 +6068,93 @@ files = [ [[package]] name = "yarl" -version = "1.15.5" +version = "1.17.0" description = "Yet another URL library" optional = false python-versions = ">=3.9" files = [ - {file = "yarl-1.15.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b6c57972a406ea0f61e3f28f2b3a780fb71fbe1d82d267afe5a2f889a83ee7e7"}, - {file = "yarl-1.15.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5c3ac5bdcc1375c8ee52784adf94edbce37c471dd2100a117cfef56fe8dbc2b4"}, - {file = "yarl-1.15.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:68d21d0563d82aaf46163eac529adac301b20be3181b8a2811f7bd5615466055"}, - {file = "yarl-1.15.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a7d317fb80bc17ed4b34a9aad8b80cef34bea0993654f3e8566daf323def7ef9"}, - {file = "yarl-1.15.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ed9c72d5361cfd5af5ccadffa8f8077f4929640e1f938aa0f4b92c5a24996ac5"}, - {file = "yarl-1.15.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bb707859218e8335447b210f41a755e7b1367c33e87add884128bba144694a7f"}, - {file = "yarl-1.15.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6563394492c96cb57f4dff0c69c63d2b28b5469c59c66f35a1e6451583cd0ab4"}, - {file = "yarl-1.15.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9c2d1109c8d92059314cc34dd8f0a31f74b720dc140744923ed7ca228bf9b491"}, - {file = "yarl-1.15.5-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8fc727f0fb388debc771eaa7091c092bd2e8b6b4741b73354b8efadcf96d6031"}, - {file = "yarl-1.15.5-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:94189746c5ad62e1014a16298130e696fe593d031d442ef135fb7787b7a1f820"}, - {file = "yarl-1.15.5-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:b06d8b05d0fafef204d635a4711283ddbf19c7c0facdc61b4b775f6e47e2d4be"}, - {file = "yarl-1.15.5-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:de6917946dc6bc237d4b354e38aa13a232e0c7948fdbdb160edee3862e9d735f"}, - {file = "yarl-1.15.5-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:34816f1d833433a16c4832562a050b0a60eac53dcb71b2032e6ebff82d74b6a7"}, - {file = "yarl-1.15.5-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:19e2a4b2935f95fad0949f420514c5d862f5f18058fbbfd8854f496a97d9fd87"}, - {file = "yarl-1.15.5-cp310-cp310-win32.whl", hash = "sha256:30ca64521f1a96b72886dd9e8652f16eab11891b4572dcfcfc1ad6d6ccb27abd"}, - {file = "yarl-1.15.5-cp310-cp310-win_amd64.whl", hash = "sha256:86648c53b10c53db8b967a75fb41e0c89dbec7398f6525e34af2b6c456bb0ac0"}, - {file = "yarl-1.15.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e652aa9f8dfa808bc5b2da4d1f4e286cf1d640570fdfa72ffc0c1d16ba114651"}, - {file = "yarl-1.15.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:21050b6cd569980fe20ceeab4baeb900d3f7247270475e42bafe117416a5496c"}, - {file = "yarl-1.15.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:18940191ec9a83bbfe63eea61c3e9d12474bb910d5613bce8fa46e84a80b75b2"}, - {file = "yarl-1.15.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a082dc948045606f62dca0228ab24f13737180b253378d6443f5b2b9ef8beefe"}, - {file = "yarl-1.15.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0a843e692f9d5402b3455653f4607dc521de2385f01c5cad7ba4a87c46e2ea8d"}, - {file = "yarl-1.15.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5093a453176a4fad4f9c3006f507cf300546190bb3e27944275a37cfd6323a65"}, - {file = "yarl-1.15.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2597a589859b94d0a5e2f5d30fee95081867926e57cb751f8b44a7dd92da4e79"}, - {file = "yarl-1.15.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f5a1ca6eaabfe62718b87eac06d9a47b30cf92ffa065fee9196d3ecd24a3cf1"}, - {file = "yarl-1.15.5-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:4ac83b307cc4b8907345b52994055c6c3c2601ceb6fcb94c5ed6a93c6b4e8257"}, - {file = "yarl-1.15.5-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:325e2beb2cd8654b276e7686a3cd203628dd3fe32d5c616e632bc35a2901fb16"}, - {file = "yarl-1.15.5-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:75d04ba8ed335042328086e643e01165e0c24598216f72da709b375930ae3bdb"}, - {file = "yarl-1.15.5-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:7abd7d15aedb3961a967cc65f8144dbbca42e3626a21c5f4f29919cf43eeafb9"}, - {file = "yarl-1.15.5-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:294c742a273f44511f14b03a9e06b66094dcdf4bbb75a5e23fead548fd5310ae"}, - {file = "yarl-1.15.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:63d46606b20f80a6476f1044bab78e1a69c2e0747f174583e2f12fc70bad2170"}, - {file = "yarl-1.15.5-cp311-cp311-win32.whl", hash = "sha256:b1217102a455e3ac9ac293081093f21f0183e978c7692171ff669fee5296fa28"}, - {file = "yarl-1.15.5-cp311-cp311-win_amd64.whl", hash = "sha256:5848500b6a01497560969e8c3a7eb1b2570853c74a0ca6f67ebaf6064106c49b"}, - {file = "yarl-1.15.5-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d3309ee667f2d9c7ac9ecf44620d6b274bfdd8065b8c5019ff6795dd887b8fed"}, - {file = "yarl-1.15.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:96ce879799fee124d241ea3b84448378f638e290c49493d00b706f3fd57ec22b"}, - {file = "yarl-1.15.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c884dfa56b050f718ea3cbbfd972e29a6f07f63a7449b10d9a20d64f7eec92e2"}, - {file = "yarl-1.15.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0327081978fe186c3390dd4f73f95f825d0bb9c74967e22c2a1a87735974d8f5"}, - {file = "yarl-1.15.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:524b3bb7dff320e305bc979c65eddc0342548c56ea9241502f907853fe53c408"}, - {file = "yarl-1.15.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fd56de8b645421ff09c993fdb0ee9c5a3b50d290a8f55793b500d99b34d0c1ce"}, - {file = "yarl-1.15.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c166ad987265bb343be58cdf4fbc4478cc1d81f2246d2be9a15f94393b269faa"}, - {file = "yarl-1.15.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d56980374a10c74255fcea6ebcfb0aeca7166d212ee9fd7e823ddef35fb62ad0"}, - {file = "yarl-1.15.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:cbf36099a9b407e1456dbf55844743a98603fcba32d2a46fb3a698d926facf1b"}, - {file = "yarl-1.15.5-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:d7fa4b033e2f267e37aabcc36949fa89f9f1716a723395912147f9cf3fb437c7"}, - {file = "yarl-1.15.5-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:bb129f77ddaea2d8e6e00417b8d907448de3407af4eddacca0a515574ad71493"}, - {file = "yarl-1.15.5-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:68e837b3edfcd037f9706157e7cb8efda832de6248c7d9e893e2638356dfae5d"}, - {file = "yarl-1.15.5-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5b8af4165e097ff84d9bbb97bb4f4d7f71b9c1c9565a2d0e27d93e5f92dae220"}, - {file = "yarl-1.15.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:70d074d5a96e0954fe6db81ff356f4361397da1cda3f7c127fc0902f671a087e"}, - {file = "yarl-1.15.5-cp312-cp312-win32.whl", hash = "sha256:362da97ad4360e4ef1dd24ccdd3bceb18332da7f40026a42f49b7edd686e31c3"}, - {file = "yarl-1.15.5-cp312-cp312-win_amd64.whl", hash = "sha256:9aa054d97033beac9cb9b19b7c0b8784b85b12cd17879087ca6bffba57884e02"}, - {file = "yarl-1.15.5-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:5fadcf532fd9f6cbad71485ef8c2462dd9a91d3efc72ca01eb0970792c92552a"}, - {file = "yarl-1.15.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8b7dd6983c81523f9de0ae6334c3b7a3cb33283936e0525f80c4f713f54a9bb6"}, - {file = "yarl-1.15.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:fcfd663dc88465ebe41c7c938bdc91c4b01cda96a0d64bf38fd66c1877323771"}, - {file = "yarl-1.15.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd529e637cd23204bd82072f6637cff7af2516ad2c132e8f3342cbc84871f7d1"}, - {file = "yarl-1.15.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b30f13fac56598474071a4f1ecd66c78fdaf2f8619042d7ca135f72dbb348cf"}, - {file = "yarl-1.15.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:44088ec0be82fba118ed29b6b429f80bf295297727adae4c257ac297e01e8bcd"}, - {file = "yarl-1.15.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:607683991bab8607e5158cd290dd8fdaa613442aeab802fe1c237d3a3eee7358"}, - {file = "yarl-1.15.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:da48cdff56b01ea4282a6d04b83b07a2088351a4a3ff7aacc1e7e9b6b04b90b9"}, - {file = "yarl-1.15.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9162ea117ce8bad8ebc95b7376b4135988acd888d2cf4702f8281e3c11f8b81f"}, - {file = "yarl-1.15.5-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:e8aa19c39cb20bfb16f0266df175a6004943122cf20707fbf0cacc21f6468a25"}, - {file = "yarl-1.15.5-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:5d6be369488d503c8edc14e2f63d71ab2a607041ad216a8ad444fa18e8dea792"}, - {file = "yarl-1.15.5-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:6e2c674cfe4c03ad7a4d536b1f808221f0d11a360486b4b032d2557c0bd633ad"}, - {file = "yarl-1.15.5-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:041bafaa82b77fd4ec2826d42a55461ec86d999adf7ed9644eef7e8a9febb366"}, - {file = "yarl-1.15.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:2eeb9ba53c055740cd282ae9d34eb7970d65e73a46f15adec4b0c1b0f2e55cc2"}, - {file = "yarl-1.15.5-cp313-cp313-win32.whl", hash = "sha256:73143dd279e641543da52c55652ad7b4c7c5f79e797f124f58f04cc060f14271"}, - {file = "yarl-1.15.5-cp313-cp313-win_amd64.whl", hash = "sha256:94ab1185900f43760d5487c8e49f5f1a66f864e36092f282f1813597479b9dfa"}, - {file = "yarl-1.15.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:6b3d2767bd64c62909ea33525b954ba05c8f9726bfdf2141d175da4e344f19ae"}, - {file = "yarl-1.15.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:44359c52af9c383e5107f3b6301446fc8269599721fa42fafb2afb5f31a42dcb"}, - {file = "yarl-1.15.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6493da9ba5c551978c679ab04856c2cf8f79c316e8ec8c503460a135705edc3b"}, - {file = "yarl-1.15.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a6b6e95bc621c11cf9ff21012173337e789f2461ebc3b4e5bf65c74ef69adb8"}, - {file = "yarl-1.15.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7983290ede3aaa2c9620879530849532529b4dcbf5b12a0b6a91163a773eadb9"}, - {file = "yarl-1.15.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:07a4b53abe85813c538b9cdbb02909ebe3734e3af466a587df516e960d500cc8"}, - {file = "yarl-1.15.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5882faa2a6e684f65ee44f18c701768749a950cbd5e72db452fc07805f6bdec0"}, - {file = "yarl-1.15.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e27861251d9c094f641d39a8a78dd2371fb9a252ea2f689d1ad353a31d46a0bc"}, - {file = "yarl-1.15.5-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:8669a110f655c9eb22f16fb68a7d4942020aeaa09f1def584a80183e3e89953c"}, - {file = "yarl-1.15.5-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:10bfe0bef4cf5ea0383886beda004071faadedf2647048b9f876664284c5b60d"}, - {file = "yarl-1.15.5-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:f7de0d4b6b4d8a77e422eb54d765255c0ec6883ee03b8fd537101633948619d7"}, - {file = "yarl-1.15.5-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:00bb3a559d7bd006a5302ecd7e409916939106a8cdbe31f4eb5e5b9ffcca57ea"}, - {file = "yarl-1.15.5-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:06ec070a2d71415f90dbe9d70af3158e7da97a128519dba2d1581156ee27fb92"}, - {file = "yarl-1.15.5-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b997a806846c00d1f41d6a251803732837771b2091bead7566f68820e317bfe7"}, - {file = "yarl-1.15.5-cp39-cp39-win32.whl", hash = "sha256:7825506fbee4055265528ec3532a8197ff26fc53d4978917a4c8ddbb4c1667d7"}, - {file = "yarl-1.15.5-cp39-cp39-win_amd64.whl", hash = "sha256:71730658be0b5de7c570a9795d7404c577b2313c1db370407092c66f70e04ccb"}, - {file = "yarl-1.15.5-py3-none-any.whl", hash = "sha256:625f31d6650829fba4030b4e7bdb2d69e41510dddfa29a1da27076c199521757"}, - {file = "yarl-1.15.5.tar.gz", hash = "sha256:8249147ee81c1cf4d1dc6f26ba28a1b9d92751529f83c308ad02164bb93abd0d"}, + {file = "yarl-1.17.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2d8715edfe12eee6f27f32a3655f38d6c7410deb482158c0b7d4b7fad5d07628"}, + {file = "yarl-1.17.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1803bf2a7a782e02db746d8bd18f2384801bc1d108723840b25e065b116ad726"}, + {file = "yarl-1.17.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e66589110e20c2951221a938fa200c7aa134a8bdf4e4dc97e6b21539ff026d4"}, + {file = "yarl-1.17.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7069d411cfccf868e812497e0ec4acb7c7bf8d684e93caa6c872f1e6f5d1664d"}, + {file = "yarl-1.17.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cbf70ba16118db3e4b0da69dcde9d4d4095d383c32a15530564c283fa38a7c52"}, + {file = "yarl-1.17.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0bc53cc349675b32ead83339a8de79eaf13b88f2669c09d4962322bb0f064cbc"}, + {file = "yarl-1.17.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6aa18a402d1c80193ce97c8729871f17fd3e822037fbd7d9b719864018df746"}, + {file = "yarl-1.17.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d89c5bc701861cfab357aa0cd039bc905fe919997b8c312b4b0c358619c38d4d"}, + {file = "yarl-1.17.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b728bdf38ca58f2da1d583e4af4ba7d4cd1a58b31a363a3137a8159395e7ecc7"}, + {file = "yarl-1.17.0-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:5542e57dc15d5473da5a39fbde14684b0cc4301412ee53cbab677925e8497c11"}, + {file = "yarl-1.17.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e564b57e5009fb150cb513804d7e9e9912fee2e48835638f4f47977f88b4a39c"}, + {file = "yarl-1.17.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:eb3c4cff524b4c1c1dba3a6da905edb1dfd2baf6f55f18a58914bbb2d26b59e1"}, + {file = "yarl-1.17.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:05e13f389038842da930d439fbed63bdce3f7644902714cb68cf527c971af804"}, + {file = "yarl-1.17.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:153c38ee2b4abba136385af4467459c62d50f2a3f4bde38c7b99d43a20c143ef"}, + {file = "yarl-1.17.0-cp310-cp310-win32.whl", hash = "sha256:4065b4259d1ae6f70fd9708ffd61e1c9c27516f5b4fae273c41028afcbe3a094"}, + {file = "yarl-1.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:abf366391a02a8335c5c26163b5fe6f514cc1d79e74d8bf3ffab13572282368e"}, + {file = "yarl-1.17.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:19a4fe0279626c6295c5b0c8c2bb7228319d2e985883621a6e87b344062d8135"}, + {file = "yarl-1.17.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cadd0113f4db3c6b56868d6a19ca6286f5ccfa7bc08c27982cf92e5ed31b489a"}, + {file = "yarl-1.17.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:60d6693eef43215b1ccfb1df3f6eae8db30a9ff1e7989fb6b2a6f0b468930ee8"}, + {file = "yarl-1.17.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bb8bf3843e1fa8cf3fe77813c512818e57368afab7ebe9ef02446fe1a10b492"}, + {file = "yarl-1.17.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d2a5b35fd1d8d90443e061d0c8669ac7600eec5c14c4a51f619e9e105b136715"}, + {file = "yarl-1.17.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c5bf17b32f392df20ab5c3a69d37b26d10efaa018b4f4e5643c7520d8eee7ac7"}, + {file = "yarl-1.17.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48f51b529b958cd06e78158ff297a8bf57b4021243c179ee03695b5dbf9cb6e1"}, + {file = "yarl-1.17.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5fcaa06bf788e19f913d315d9c99a69e196a40277dc2c23741a1d08c93f4d430"}, + {file = "yarl-1.17.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:32f3ee19ff0f18a7a522d44e869e1ebc8218ad3ae4ebb7020445f59b4bbe5897"}, + {file = "yarl-1.17.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:a4fb69a81ae2ec2b609574ae35420cf5647d227e4d0475c16aa861dd24e840b0"}, + {file = "yarl-1.17.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:7bacc8b77670322132a1b2522c50a1f62991e2f95591977455fd9a398b4e678d"}, + {file = "yarl-1.17.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:437bf6eb47a2d20baaf7f6739895cb049e56896a5ffdea61a4b25da781966e8b"}, + {file = "yarl-1.17.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:30534a03c87484092080e3b6e789140bd277e40f453358900ad1f0f2e61fc8ec"}, + {file = "yarl-1.17.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b30df4ff98703649915144be6f0df3b16fd4870ac38a09c56d5d9e54ff2d5f96"}, + {file = "yarl-1.17.0-cp311-cp311-win32.whl", hash = "sha256:263b487246858e874ab53e148e2a9a0de8465341b607678106829a81d81418c6"}, + {file = "yarl-1.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:07055a9e8b647a362e7d4810fe99d8f98421575e7d2eede32e008c89a65a17bd"}, + {file = "yarl-1.17.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:84095ab25ba69a8fa3fb4936e14df631b8a71193fe18bd38be7ecbe34d0f5512"}, + {file = "yarl-1.17.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:02608fb3f6df87039212fc746017455ccc2a5fc96555ee247c45d1e9f21f1d7b"}, + {file = "yarl-1.17.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:13468d291fe8c12162b7cf2cdb406fe85881c53c9e03053ecb8c5d3523822cd9"}, + {file = "yarl-1.17.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8da3f8f368fb7e2f052fded06d5672260c50b5472c956a5f1bd7bf474ae504ab"}, + {file = "yarl-1.17.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ec0507ab6523980bed050137007c76883d941b519aca0e26d4c1ec1f297dd646"}, + {file = "yarl-1.17.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08fc76df7fd8360e9ff30e6ccc3ee85b8dbd6ed5d3a295e6ec62bcae7601b932"}, + {file = "yarl-1.17.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d522f390686acb6bab2b917dd9ca06740c5080cd2eaa5aef8827b97e967319d"}, + {file = "yarl-1.17.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:147c527a80bb45b3dcd6e63401af8ac574125d8d120e6afe9901049286ff64ef"}, + {file = "yarl-1.17.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:24cf43bcd17a0a1f72284e47774f9c60e0bf0d2484d5851f4ddf24ded49f33c6"}, + {file = "yarl-1.17.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:c28a44b9e0fba49c3857360e7ad1473fc18bc7f6659ca08ed4f4f2b9a52c75fa"}, + {file = "yarl-1.17.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:350cacb2d589bc07d230eb995d88fcc646caad50a71ed2d86df533a465a4e6e1"}, + {file = "yarl-1.17.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:fd1ab1373274dea1c6448aee420d7b38af163b5c4732057cd7ee9f5454efc8b1"}, + {file = "yarl-1.17.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:4934e0f96dadc567edc76d9c08181633c89c908ab5a3b8f698560124167d9488"}, + {file = "yarl-1.17.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8d0a278170d75c88e435a1ce76557af6758bfebc338435b2eba959df2552163e"}, + {file = "yarl-1.17.0-cp312-cp312-win32.whl", hash = "sha256:61584f33196575a08785bb56db6b453682c88f009cd9c6f338a10f6737ce419f"}, + {file = "yarl-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:9987a439ad33a7712bd5bbd073f09ad10d38640425fa498ecc99d8aa064f8fc4"}, + {file = "yarl-1.17.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8deda7b8eb15a52db94c2014acdc7bdd14cb59ec4b82ac65d2ad16dc234a109e"}, + {file = "yarl-1.17.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:56294218b348dcbd3d7fce0ffd79dd0b6c356cb2a813a1181af730b7c40de9e7"}, + {file = "yarl-1.17.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1fab91292f51c884b290ebec0b309a64a5318860ccda0c4940e740425a67b6b7"}, + {file = "yarl-1.17.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cf93fa61ff4d9c7d40482ce1a2c9916ca435e34a1b8451e17f295781ccc034f"}, + {file = "yarl-1.17.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:261be774a0d71908c8830c33bacc89eef15c198433a8cc73767c10eeeb35a7d0"}, + {file = "yarl-1.17.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:deec9693b67f6af856a733b8a3e465553ef09e5e8ead792f52c25b699b8f9e6e"}, + {file = "yarl-1.17.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c804b07622ba50a765ca7fb8145512836ab65956de01307541def869e4a456c9"}, + {file = "yarl-1.17.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d013a7c9574e98c14831a8f22d27277688ec3b2741d0188ac01a910b009987a"}, + {file = "yarl-1.17.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e2cfcba719bd494c7413dcf0caafb51772dec168c7c946e094f710d6aa70494e"}, + {file = "yarl-1.17.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:c068aba9fc5b94dfae8ea1cedcbf3041cd4c64644021362ffb750f79837e881f"}, + {file = "yarl-1.17.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:3616df510ffac0df3c9fa851a40b76087c6c89cbcea2de33a835fc80f9faac24"}, + {file = "yarl-1.17.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:755d6176b442fba9928a4df787591a6a3d62d4969f05c406cad83d296c5d4e05"}, + {file = "yarl-1.17.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:c18f6e708d1cf9ff5b1af026e697ac73bea9cb70ee26a2b045b112548579bed2"}, + {file = "yarl-1.17.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5b937c216b6dee8b858c6afea958de03c5ff28406257d22b55c24962a2baf6fd"}, + {file = "yarl-1.17.0-cp313-cp313-win32.whl", hash = "sha256:d0131b14cb545c1a7bd98f4565a3e9bdf25a1bd65c83fc156ee5d8a8499ec4a3"}, + {file = "yarl-1.17.0-cp313-cp313-win_amd64.whl", hash = "sha256:01c96efa4313c01329e88b7e9e9e1b2fc671580270ddefdd41129fa8d0db7696"}, + {file = "yarl-1.17.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0d44f67e193f0a7acdf552ecb4d1956a3a276c68e7952471add9f93093d1c30d"}, + {file = "yarl-1.17.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:16ea0aa5f890cdcb7ae700dffa0397ed6c280840f637cd07bffcbe4b8d68b985"}, + {file = "yarl-1.17.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cf5469dc7dcfa65edf5cc3a6add9f84c5529c6b556729b098e81a09a92e60e51"}, + {file = "yarl-1.17.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e662bf2f6e90b73cf2095f844e2bc1fda39826472a2aa1959258c3f2a8500a2f"}, + {file = "yarl-1.17.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8260e88f1446904ba20b558fa8ce5d0ab9102747238e82343e46d056d7304d7e"}, + {file = "yarl-1.17.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5dc16477a4a2c71e64c5d3d15d7ae3d3a6bb1e8b955288a9f73c60d2a391282f"}, + {file = "yarl-1.17.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46027e326cecd55e5950184ec9d86c803f4f6fe4ba6af9944a0e537d643cdbe0"}, + {file = "yarl-1.17.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fc95e46c92a2b6f22e70afe07e34dbc03a4acd07d820204a6938798b16f4014f"}, + {file = "yarl-1.17.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:16ca76c7ac9515320cd09d6cc083d8d13d1803f6ebe212b06ea2505fd66ecff8"}, + {file = "yarl-1.17.0-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:eb1a5b97388f2613f9305d78a3473cdf8d80c7034e554d8199d96dcf80c62ac4"}, + {file = "yarl-1.17.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:41fd5498975418cdc34944060b8fbeec0d48b2741068077222564bea68daf5a6"}, + {file = "yarl-1.17.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:146ca582ed04a5664ad04b0e0603934281eaab5c0115a5a46cce0b3c061a56a1"}, + {file = "yarl-1.17.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:6abb8c06107dbec97481b2392dafc41aac091a5d162edf6ed7d624fe7da0587a"}, + {file = "yarl-1.17.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:4d14be4613dd4f96c25feb4bd8c0d8ce0f529ab0ae555a17df5789e69d8ec0c5"}, + {file = "yarl-1.17.0-cp39-cp39-win32.whl", hash = "sha256:174d6a6cad1068f7850702aad0c7b1bca03bcac199ca6026f84531335dfc2646"}, + {file = "yarl-1.17.0-cp39-cp39-win_amd64.whl", hash = "sha256:6af417ca2c7349b101d3fd557ad96b4cd439fdb6ab0d288e3f64a068eea394d0"}, + {file = "yarl-1.17.0-py3-none-any.whl", hash = "sha256:62dd42bb0e49423f4dd58836a04fcf09c80237836796025211bbe913f1524993"}, + {file = "yarl-1.17.0.tar.gz", hash = "sha256:d3f13583f378930377e02002b4085a3d025b00402d5a80911726d43a67911cd9"}, ] [package.dependencies] @@ -6179,4 +6184,4 @@ type = ["pytest-mypy"] [metadata] lock-version = "2.0" python-versions = ">=3.12,<3.13" -content-hash = "6dc27fc07258f0d3ca7f08926e98428e56764dfd86decb02dfc4b413ab1520e5" +content-hash = "bffaa9402a963867166458e09cb25cbb322b0b0a5cdcc287b6c2c23bc968e4e6" diff --git a/agents-api/pyproject.toml b/agents-api/pyproject.toml index 0a3832937..396061b34 100644 --- a/agents-api/pyproject.toml +++ b/agents-api/pyproject.toml @@ -52,7 +52,7 @@ simsimd = "^5.9.4" [tool.poetry.group.dev.dependencies] ipython = "^8.26.0" ruff = "^0.5.5" -datamodel-code-generator = "^0.25.9" +datamodel-code-generator = "^0.26.2" cozo-migrate = "^0.2.0" poethepoet = "^0.25.1" pytype = ">=2024.10.11" @@ -106,8 +106,11 @@ datamodel-codegen \ --use-exact-imports \ --use-standard-collections \ --use-non-positive-negative-number-constrained-types \ - --target-python-version 3.11 \ + --target-python-version 3.12 \ + --treat-dot-as-module \ + --use-title-as-name \ --collapse-root-models \ + --output-datetime-class AwareDatetime \ --openapi-scopes schemas \ --keep-model-order \ --disable-timestamp""" diff --git a/agents-api/pytype.toml b/agents-api/pytype.toml index b591601cc..e3995a98e 100644 --- a/agents-api/pytype.toml +++ b/agents-api/pytype.toml @@ -8,7 +8,9 @@ exclude = [ # Space-separated list of files or directories to process. inputs = [ - '.', + 'agents_api', + 'migrations', + 'tests', ] # Keep going past errors to analyze as many files as possible. diff --git a/agents-api/tests/test_docs_routes.py b/agents-api/tests/test_docs_routes.py index d61bfbcb7..ef33cb9f8 100644 --- a/agents-api/tests/test_docs_routes.py +++ b/agents-api/tests/test_docs_routes.py @@ -1,3 +1,5 @@ +import asyncio + from ward import test from tests.fixtures import ( @@ -135,6 +137,7 @@ def _(make_request=make_request, agent=test_agent): # TODO: Fix this test. It fails sometimes and sometimes not. @test("route: search agent docs") async def _(make_request=make_request, agent=test_agent, doc=test_doc): + await asyncio.sleep(0.5) search_params = dict( text=doc.content[0], limit=1, @@ -155,7 +158,8 @@ async def _(make_request=make_request, agent=test_agent, doc=test_doc): @test("route: search user docs") -def _(make_request=make_request, user=test_user, doc=test_user_doc): +async def _(make_request=make_request, user=test_user, doc=test_user_doc): + await asyncio.sleep(0.5) search_params = dict( text=doc.content[0], limit=1, diff --git a/agents-api/tests/test_execution_workflow.py b/agents-api/tests/test_execution_workflow.py index 7ed4492d3..d41aa4a6d 100644 --- a/agents-api/tests/test_execution_workflow.py +++ b/agents-api/tests/test_execution_workflow.py @@ -615,7 +615,7 @@ async def _( result_coroutine = handle.result() task = asyncio.create_task(result_coroutine) try: - await asyncio.wait_for(task, timeout=3) + await asyncio.wait_for(task, timeout=10) except BaseException: task.cancel() diff --git a/integrations-service/docker-compose.yml b/integrations-service/docker-compose.yml index a4ea78369..2496e7c10 100644 --- a/integrations-service/docker-compose.yml +++ b/integrations-service/docker-compose.yml @@ -8,12 +8,13 @@ x--shared-environment: &shared-environment services: integrations: image: julepai/integrations:${TAG:-dev} + build: . + environment: <<: *shared-environment - - build: . + ports: - - "${INTEGRATIONS_SERVICE_PORT}:${INTEGRATIONS_SERVICE_PORT}" + - "${INTEGRATIONS_SERVICE_PORT:-8000}:${INTEGRATIONS_SERVICE_PORT:-8000}" # map host to container port develop: watch: @@ -25,4 +26,4 @@ services: - action: rebuild path: poetry.lock - action: rebuild - path: Dockerfile \ No newline at end of file + path: Dockerfile diff --git a/integrations-service/integrations/__main__.py b/integrations-service/integrations/__main__.py new file mode 100644 index 000000000..e420f4b81 --- /dev/null +++ b/integrations-service/integrations/__main__.py @@ -0,0 +1,4 @@ +from .web import main + +if __name__ == "__main__": + main() diff --git a/integrations-service/integrations/autogen/Agents.py b/integrations-service/integrations/autogen/Agents.py new file mode 100644 index 000000000..5dab2c7b2 --- /dev/null +++ b/integrations-service/integrations/autogen/Agents.py @@ -0,0 +1,198 @@ +# generated by datamodel-codegen: +# filename: openapi-1.0.0.yaml + +from __future__ import annotations + +from typing import Annotated, Any +from uuid import UUID + +from pydantic import AwareDatetime, BaseModel, ConfigDict, Field + +from .Chat import DefaultChatSettings + + +class Agent(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + id: Annotated[UUID, Field(json_schema_extra={"readOnly": True})] + metadata: dict[str, Any] | None = None + created_at: Annotated[AwareDatetime, Field(json_schema_extra={"readOnly": True})] + """ + When this resource was created as UTC date-time + """ + updated_at: Annotated[AwareDatetime, Field(json_schema_extra={"readOnly": True})] + """ + When this resource was updated as UTC date-time + """ + name: Annotated[ + str, + Field( + max_length=120, + pattern="^[\\p{L}\\p{Nl}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]+[\\p{ID_Start}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]*$", + ), + ] = "" + """ + Name of the agent + """ + about: str = "" + """ + About the agent + """ + model: str = "" + """ + Model name to use (gpt-4-turbo, gemini-nano etc) + """ + instructions: str | list[str] = [] + """ + Instructions for the agent + """ + default_settings: DefaultChatSettings | None = None + """ + Default settings for all sessions created by this agent + """ + + +class CreateAgentRequest(BaseModel): + """ + Payload for creating a agent (and associated documents) + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + metadata: dict[str, Any] | None = None + name: Annotated[ + str, + Field( + max_length=120, + pattern="^[\\p{L}\\p{Nl}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]+[\\p{ID_Start}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]*$", + ), + ] = "" + """ + Name of the agent + """ + about: str = "" + """ + About the agent + """ + model: str = "" + """ + Model name to use (gpt-4-turbo, gemini-nano etc) + """ + instructions: str | list[str] = [] + """ + Instructions for the agent + """ + default_settings: DefaultChatSettings | None = None + """ + Default settings for all sessions created by this agent + """ + + +class CreateOrUpdateAgentRequest(CreateAgentRequest): + model_config = ConfigDict( + populate_by_name=True, + ) + id: UUID + metadata: dict[str, Any] | None = None + name: Annotated[ + str, + Field( + max_length=120, + pattern="^[\\p{L}\\p{Nl}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]+[\\p{ID_Start}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]*$", + ), + ] = "" + """ + Name of the agent + """ + about: str = "" + """ + About the agent + """ + model: str = "" + """ + Model name to use (gpt-4-turbo, gemini-nano etc) + """ + instructions: str | list[str] = [] + """ + Instructions for the agent + """ + default_settings: DefaultChatSettings | None = None + """ + Default settings for all sessions created by this agent + """ + + +class PatchAgentRequest(BaseModel): + """ + Payload for patching a agent + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + metadata: dict[str, Any] | None = None + name: Annotated[ + str, + Field( + max_length=120, + pattern="^[\\p{L}\\p{Nl}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]+[\\p{ID_Start}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]*$", + ), + ] = "" + """ + Name of the agent + """ + about: str = "" + """ + About the agent + """ + model: str = "" + """ + Model name to use (gpt-4-turbo, gemini-nano etc) + """ + instructions: str | list[str] = [] + """ + Instructions for the agent + """ + default_settings: DefaultChatSettings | None = None + """ + Default settings for all sessions created by this agent + """ + + +class UpdateAgentRequest(BaseModel): + """ + Payload for updating a agent + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + metadata: dict[str, Any] | None = None + name: Annotated[ + str, + Field( + max_length=120, + pattern="^[\\p{L}\\p{Nl}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]+[\\p{ID_Start}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]*$", + ), + ] = "" + """ + Name of the agent + """ + about: str = "" + """ + About the agent + """ + model: str = "" + """ + Model name to use (gpt-4-turbo, gemini-nano etc) + """ + instructions: str | list[str] = [] + """ + Instructions for the agent + """ + default_settings: DefaultChatSettings | None = None + """ + Default settings for all sessions created by this agent + """ diff --git a/integrations-service/integrations/autogen/Chat.py b/integrations-service/integrations/autogen/Chat.py new file mode 100644 index 000000000..882997dfa --- /dev/null +++ b/integrations-service/integrations/autogen/Chat.py @@ -0,0 +1,552 @@ +# generated by datamodel-codegen: +# filename: openapi-1.0.0.yaml + +from __future__ import annotations + +from typing import Annotated, Any, Literal +from uuid import UUID + +from pydantic import AwareDatetime, BaseModel, ConfigDict, Field, StrictBool + +from .Common import LogitBias +from .Docs import DocReference +from .Tools import ( + ChosenBash20241022, + ChosenComputer20241022, + ChosenFunctionCall, + ChosenTextEditor20241022, + NamedToolChoice, + Tool, +) + + +class BaseChatOutput(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + index: int + finish_reason: Literal["stop", "length", "content_filter", "tool_calls"] = "stop" + """ + The reason the model stopped generating tokens + """ + logprobs: LogProbResponse | None = None + """ + The log probabilities of tokens + """ + + +class BaseChatResponse(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + usage: CompetionUsage | None = None + """ + Usage statistics for the completion request + """ + jobs: Annotated[list[UUID], Field(json_schema_extra={"readOnly": True})] = [] + """ + Background job IDs that may have been spawned from this interaction. + """ + docs: Annotated[ + list[DocReference], Field(json_schema_extra={"readOnly": True}) + ] = [] + """ + Documents referenced for this request (for citation purposes). + """ + created_at: Annotated[AwareDatetime, Field(json_schema_extra={"readOnly": True})] + """ + When this resource was created as UTC date-time + """ + id: Annotated[UUID, Field(json_schema_extra={"readOnly": True})] + + +class BaseTokenLogProb(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + token: str + logprob: float + """ + The log probability of the token + """ + bytes: list[int] | None = None + + +class ChatInputData(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + messages: Annotated[list[Message], Field(min_length=1)] + """ + A list of new input messages comprising the conversation so far. + """ + tools: list[Tool] = [] + """ + (Advanced) List of tools that are provided in addition to agent's default set of tools. + """ + tool_choice: Literal["auto", "none"] | NamedToolChoice | None = None + """ + Can be one of existing tools given to the agent earlier or the ones provided in this request. + """ + + +class ChatOutputChunk(BaseChatOutput): + """ + Streaming chat completion output + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + delta: Delta + """ + The message generated by the model + """ + + +class ChunkChatResponse(BaseChatResponse): + model_config = ConfigDict( + populate_by_name=True, + ) + choices: list[ChatOutputChunk] + """ + The deltas generated by the model + """ + + +class CompetionUsage(BaseModel): + """ + Usage statistics for the completion request + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + completion_tokens: Annotated[ + int | None, Field(json_schema_extra={"readOnly": True}) + ] = None + """ + Number of tokens in the generated completion + """ + prompt_tokens: Annotated[ + int | None, Field(json_schema_extra={"readOnly": True}) + ] = None + """ + Number of tokens in the prompt + """ + total_tokens: Annotated[int | None, Field(json_schema_extra={"readOnly": True})] = ( + None + ) + """ + Total number of tokens used in the request (prompt + completion) + """ + + +class Content(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + text: str + type: Literal["text"] = "text" + """ + The type (fixed to 'text') + """ + + +class ContentModel(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + image_url: ImageUrl + """ + The image URL + """ + type: Literal["image_url"] = "image_url" + """ + The type (fixed to 'image_url') + """ + + +class Delta(BaseModel): + """ + The message generated by the model + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + role: Literal[ + "user", + "assistant", + "system", + "function", + "function_response", + "function_call", + "auto", + ] + """ + The role of the message + """ + content: str | list[str] | list[Content | ContentModel] + """ + The content parts of the message + """ + name: str | None = None + """ + Name + """ + continue_: Annotated[StrictBool | None, Field(alias="continue")] = None + """ + Whether to continue this message or return a new one + """ + + +class ImageUrl(BaseModel): + """ + The image URL + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + url: str + """ + Image URL or base64 data url (e.g. `data:image/jpeg;base64,`) + """ + detail: Literal["low", "high", "auto"] = "auto" + """ + The detail level of the image + """ + + +class LogProbResponse(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + content: Annotated[list[TokenLogProb] | None, Field(...)] + """ + The log probabilities of the tokens + """ + + +class Message(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + role: Literal[ + "user", + "assistant", + "system", + "function", + "function_response", + "function_call", + "auto", + ] + """ + The role of the message + """ + content: str | list[str] | list[Content | ContentModel] + """ + The content parts of the message + """ + name: str | None = None + """ + Name + """ + continue_: Annotated[StrictBool | None, Field(alias="continue")] = None + """ + Whether to continue this message or return a new one + """ + + +class MessageChatResponse(BaseChatResponse): + model_config = ConfigDict( + populate_by_name=True, + ) + choices: list[SingleChatOutput | MultipleChatOutput] + """ + The deltas generated by the model + """ + + +class MessageModel(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + role: Literal[ + "user", + "assistant", + "system", + "function", + "function_response", + "function_call", + "auto", + ] + """ + The role of the message + """ + content: str | list[str] | list[Content | ContentModel] + """ + The content parts of the message + """ + name: str | None = None + """ + Name + """ + tool_calls: Annotated[ + list[ + ChosenFunctionCall + | ChosenComputer20241022 + | ChosenTextEditor20241022 + | ChosenBash20241022 + ] + | None, + Field(json_schema_extra={"readOnly": True}), + ] = [] + """ + Tool calls generated by the model. + """ + created_at: Annotated[ + AwareDatetime | None, Field(json_schema_extra={"readOnly": True}) + ] = None + """ + When this resource was created as UTC date-time + """ + id: Annotated[UUID | None, Field(json_schema_extra={"readOnly": True})] = None + + +class MultipleChatOutput(BaseChatOutput): + """ + The output returned by the model. Note that, depending on the model provider, they might return more than one message. + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + messages: Annotated[ + list[MessageModel], Field(json_schema_extra={"readOnly": True}, min_length=1) + ] + + +class OpenAISettings(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + frequency_penalty: Annotated[float | None, Field(ge=-2.0, le=2.0)] = None + """ + Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim. + """ + presence_penalty: Annotated[float | None, Field(ge=-2.0, le=2.0)] = None + """ + Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim. + """ + temperature: Annotated[float | None, Field(ge=0.0, le=5.0)] = None + """ + What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. + """ + top_p: Annotated[float | None, Field(ge=0.0, le=1.0)] = None + """ + Defaults to 1 An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered. We generally recommend altering this or temperature but not both. + """ + + +class SchemaCompletionResponseFormat(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + type: Literal["json_schema"] = "json_schema" + """ + The format of the response + """ + json_schema: dict[str, Any] + """ + The schema of the response + """ + + +class SimpleCompletionResponseFormat(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + type: Literal["text", "json_object"] = "text" + """ + The format of the response + """ + + +class SingleChatOutput(BaseChatOutput): + """ + The output returned by the model. Note that, depending on the model provider, they might return more than one message. + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + message: MessageModel + + +class TokenLogProb(BaseTokenLogProb): + model_config = ConfigDict( + populate_by_name=True, + ) + top_logprobs: Annotated[ + list[BaseTokenLogProb], + Field(json_schema_extra={"readOnly": True}, min_length=1), + ] + """ + The log probabilities of the tokens + """ + + +class ChatInput(ChatInputData): + model_config = ConfigDict( + populate_by_name=True, + ) + remember: Annotated[StrictBool, Field(json_schema_extra={"readOnly": True})] = False + """ + DISABLED: Whether this interaction should form new memories or not (will be enabled in a future release) + """ + recall: StrictBool = True + """ + Whether previous memories and docs should be recalled or not + """ + save: StrictBool = True + """ + Whether this interaction should be stored in the session history or not + """ + model: Annotated[ + str | None, + Field( + max_length=120, + pattern="^[\\p{L}\\p{Nl}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]+[\\p{ID_Start}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]*$", + ), + ] = None + """ + Identifier of the model to be used + """ + stream: StrictBool = False + """ + Indicates if the server should stream the response as it's generated + """ + stop: Annotated[list[str], Field(max_length=4)] = [] + """ + Up to 4 sequences where the API will stop generating further tokens. + """ + seed: Annotated[int | None, Field(ge=-1, le=1000)] = None + """ + If specified, the system will make a best effort to sample deterministically for that particular seed value + """ + max_tokens: Annotated[int | None, Field(ge=1)] = None + """ + The maximum number of tokens to generate in the chat completion + """ + logit_bias: dict[str, LogitBias] | None = None + """ + Modify the likelihood of specified tokens appearing in the completion + """ + response_format: ( + SimpleCompletionResponseFormat | SchemaCompletionResponseFormat | None + ) = None + """ + Response format (set to `json_object` to restrict output to JSON) + """ + agent: UUID | None = None + """ + Agent ID of the agent to use for this interaction. (Only applicable for multi-agent sessions) + """ + repetition_penalty: Annotated[float | None, Field(ge=0.0, le=2.0)] = None + """ + Number between 0 and 2.0. 1.0 is neutral and values larger than that penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim. + """ + length_penalty: Annotated[float | None, Field(ge=0.0, le=2.0)] = None + """ + Number between 0 and 2.0. 1.0 is neutral and values larger than that penalize number of tokens generated. + """ + min_p: Annotated[float | None, Field(ge=0.0, le=1.0)] = None + """ + Minimum probability compared to leading token to be considered + """ + frequency_penalty: Annotated[float | None, Field(ge=-2.0, le=2.0)] = None + """ + Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim. + """ + presence_penalty: Annotated[float | None, Field(ge=-2.0, le=2.0)] = None + """ + Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim. + """ + temperature: Annotated[float | None, Field(ge=0.0, le=5.0)] = None + """ + What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. + """ + top_p: Annotated[float | None, Field(ge=0.0, le=1.0)] = None + """ + Defaults to 1 An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered. We generally recommend altering this or temperature but not both. + """ + + +class DefaultChatSettings(OpenAISettings): + """ + Default settings for the chat session (also used by the agent) + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + repetition_penalty: Annotated[float | None, Field(ge=0.0, le=2.0)] = None + """ + Number between 0 and 2.0. 1.0 is neutral and values larger than that penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim. + """ + length_penalty: Annotated[float | None, Field(ge=0.0, le=2.0)] = None + """ + Number between 0 and 2.0. 1.0 is neutral and values larger than that penalize number of tokens generated. + """ + min_p: Annotated[float | None, Field(ge=0.0, le=1.0)] = None + """ + Minimum probability compared to leading token to be considered + """ + + +class ChatSettings(DefaultChatSettings): + model_config = ConfigDict( + populate_by_name=True, + ) + model: Annotated[ + str | None, + Field( + max_length=120, + pattern="^[\\p{L}\\p{Nl}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]+[\\p{ID_Start}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]*$", + ), + ] = None + """ + Identifier of the model to be used + """ + stream: StrictBool = False + """ + Indicates if the server should stream the response as it's generated + """ + stop: Annotated[list[str], Field(max_length=4)] = [] + """ + Up to 4 sequences where the API will stop generating further tokens. + """ + seed: Annotated[int | None, Field(ge=-1, le=1000)] = None + """ + If specified, the system will make a best effort to sample deterministically for that particular seed value + """ + max_tokens: Annotated[int | None, Field(ge=1)] = None + """ + The maximum number of tokens to generate in the chat completion + """ + logit_bias: dict[str, LogitBias] | None = None + """ + Modify the likelihood of specified tokens appearing in the completion + """ + response_format: ( + SimpleCompletionResponseFormat | SchemaCompletionResponseFormat | None + ) = None + """ + Response format (set to `json_object` to restrict output to JSON) + """ + agent: UUID | None = None + """ + Agent ID of the agent to use for this interaction. (Only applicable for multi-agent sessions) + """ diff --git a/integrations-service/integrations/autogen/Common.py b/integrations-service/integrations/autogen/Common.py new file mode 100644 index 000000000..888865ab7 --- /dev/null +++ b/integrations-service/integrations/autogen/Common.py @@ -0,0 +1,117 @@ +# generated by datamodel-codegen: +# filename: openapi-1.0.0.yaml + +from __future__ import annotations + +from typing import Annotated +from uuid import UUID + +from pydantic import AwareDatetime, BaseModel, ConfigDict, Field, RootModel + + +class JinjaTemplate(RootModel[str]): + model_config = ConfigDict( + populate_by_name=True, + ) + root: str + """ + A valid jinja template. + """ + + +class Limit(RootModel[int]): + model_config = ConfigDict( + populate_by_name=True, + ) + root: Annotated[int, Field(ge=1, lt=1000)] + """ + Limit the number of results + """ + + +class LogitBias(RootModel[float]): + model_config = ConfigDict( + populate_by_name=True, + ) + root: Annotated[float, Field(ge=-100.0, le=100.0)] + + +class Offset(RootModel[int]): + model_config = ConfigDict( + populate_by_name=True, + ) + root: Annotated[int, Field(ge=0)] + """ + Offset to apply to the results + """ + + +class PyExpression(RootModel[str]): + model_config = ConfigDict( + populate_by_name=True, + ) + root: str + """ + A simple python expression compatible with SimpleEval. + """ + + +class ResourceCreatedResponse(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + id: UUID + """ + ID of created resource + """ + created_at: Annotated[AwareDatetime, Field(json_schema_extra={"readOnly": True})] + """ + When this resource was created as UTC date-time + """ + jobs: Annotated[list[UUID], Field(json_schema_extra={"readOnly": True})] = [] + """ + IDs (if any) of jobs created as part of this request + """ + + +class ResourceDeletedResponse(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + id: UUID + """ + ID of deleted resource + """ + deleted_at: Annotated[AwareDatetime, Field(json_schema_extra={"readOnly": True})] + """ + When this resource was deleted as UTC date-time + """ + jobs: Annotated[list[UUID], Field(json_schema_extra={"readOnly": True})] = [] + """ + IDs (if any) of jobs created as part of this request + """ + + +class ResourceUpdatedResponse(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + id: UUID + """ + ID of updated resource + """ + updated_at: Annotated[AwareDatetime, Field(json_schema_extra={"readOnly": True})] + """ + When this resource was updated as UTC date-time + """ + jobs: Annotated[list[UUID], Field(json_schema_extra={"readOnly": True})] = [] + """ + IDs (if any) of jobs created as part of this request + """ + + +class Uuid(RootModel[UUID]): + model_config = ConfigDict( + populate_by_name=True, + ) + root: UUID diff --git a/integrations-service/integrations/autogen/Docs.py b/integrations-service/integrations/autogen/Docs.py new file mode 100644 index 000000000..14990652f --- /dev/null +++ b/integrations-service/integrations/autogen/Docs.py @@ -0,0 +1,202 @@ +# generated by datamodel-codegen: +# filename: openapi-1.0.0.yaml + +from __future__ import annotations + +from typing import Annotated, Any, Literal +from uuid import UUID + +from pydantic import AwareDatetime, BaseModel, ConfigDict, Field, StrictBool + + +class BaseDocSearchRequest(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + limit: Annotated[int, Field(ge=1, le=50)] = 10 + lang: Literal["en-US"] = "en-US" + """ + The language to be used for text-only search. Support for other languages coming soon. + """ + metadata_filter: dict[str, float | str | StrictBool | None] = {} + + +class CreateDocRequest(BaseModel): + """ + Payload for creating a doc + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + metadata: dict[str, Any] | None = None + title: Annotated[str, Field(max_length=800)] + """ + Title describing what this document contains + """ + content: str | list[str] + """ + Contents of the document + """ + embed_instruction: str | None = None + """ + Instruction for the embedding model. + """ + + +class Doc(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + id: Annotated[UUID, Field(json_schema_extra={"readOnly": True})] + metadata: dict[str, Any] | None = None + created_at: Annotated[AwareDatetime, Field(json_schema_extra={"readOnly": True})] + """ + When this resource was created as UTC date-time + """ + title: Annotated[str, Field(max_length=800)] + """ + Title describing what this document contains + """ + content: str | list[str] + """ + Contents of the document + """ + embeddings: Annotated[ + list[float] | list[list[float]] | None, + Field(json_schema_extra={"readOnly": True}), + ] = None + """ + Embeddings for the document + """ + + +class DocOwner(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + id: UUID + role: Literal["user", "agent"] + + +class DocReference(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + owner: DocOwner + """ + The owner of this document. + """ + id: Annotated[UUID, Field(json_schema_extra={"readOnly": True})] + """ + ID of the document + """ + title: str | None = None + snippets: Annotated[list[Snippet], Field(min_length=1)] + distance: float | None = None + + +class DocSearchResponse(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + docs: list[DocReference] + """ + The documents that were found + """ + time: Annotated[float, Field(gt=0.0)] + """ + The time taken to search in seconds + """ + + +class EmbedQueryResponse(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + vectors: list[list[float]] + """ + The embedded vectors + """ + + +class HybridDocSearchRequest(BaseDocSearchRequest): + model_config = ConfigDict( + populate_by_name=True, + ) + confidence: Annotated[float, Field(ge=0.0, le=1.0)] = 0.5 + """ + The confidence cutoff level + """ + alpha: Annotated[float, Field(ge=0.0, le=1.0)] = 0.75 + """ + The weight to apply to BM25 vs Vector search results. 0 => pure BM25; 1 => pure vector; + """ + text: str + """ + Text to use in the search. In `hybrid` search mode, either `text` or both `text` and `vector` fields are required. + """ + vector: list[float] + """ + Vector to use in the search. Must be the same dimensions as the embedding model or else an error will be thrown. + """ + + +class MultipleEmbedQueryRequest(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + text: Annotated[list[str], Field(max_length=100, min_length=1)] + """ + Texts to embed + """ + embed_instruction: str = "" + """ + Instruction for the embedding model. + """ + + +class SingleEmbedQueryRequest(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + text: str + """ + Text to embed + """ + embed_instruction: str = "" + """ + Instruction for the embedding model. + """ + + +class Snippet(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + index: int + content: str + + +class TextOnlyDocSearchRequest(BaseDocSearchRequest): + model_config = ConfigDict( + populate_by_name=True, + ) + text: str + """ + Text to use in the search. + """ + + +class VectorDocSearchRequest(BaseDocSearchRequest): + model_config = ConfigDict( + populate_by_name=True, + ) + confidence: Annotated[float, Field(ge=0.0, le=1.0)] = 0.5 + """ + The confidence cutoff level + """ + vector: list[float] + """ + Vector to use in the search. Must be the same dimensions as the embedding model or else an error will be thrown. + """ diff --git a/integrations-service/integrations/autogen/Entries.py b/integrations-service/integrations/autogen/Entries.py new file mode 100644 index 000000000..6e5d297c2 --- /dev/null +++ b/integrations-service/integrations/autogen/Entries.py @@ -0,0 +1,182 @@ +# generated by datamodel-codegen: +# filename: openapi-1.0.0.yaml + +from __future__ import annotations + +from typing import Annotated, Literal +from uuid import UUID + +from pydantic import AwareDatetime, BaseModel, ConfigDict, Field, RootModel + +from .Tools import ( + ChosenBash20241022, + ChosenComputer20241022, + ChosenFunctionCall, + ChosenTextEditor20241022, + Tool, + ToolResponse, +) + + +class BaseEntry(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + role: Literal[ + "user", + "assistant", + "system", + "function", + "function_response", + "function_call", + "auto", + ] + """ + ChatML role (system|assistant|user|function_call|function|function_response|auto) + """ + name: str | None = None + content: ( + list[Content | ContentModel] + | Tool + | ChosenFunctionCall + | ChosenComputer20241022 + | ChosenTextEditor20241022 + | ChosenBash20241022 + | str + | ToolResponse + | list[ + list[Content | ContentModel] + | Tool + | ChosenFunctionCall + | ChosenComputer20241022 + | ChosenTextEditor20241022 + | ChosenBash20241022 + | str + | ToolResponse + ] + ) + source: Literal[ + "api_request", "api_response", "tool_response", "internal", "summarizer", "meta" + ] + tokenizer: str + token_count: int + timestamp: Annotated[float, Field(ge=0.0)] + """ + This is the time that this event refers to. + """ + + +class ChatMLRole( + RootModel[ + Literal[ + "user", + "assistant", + "system", + "function", + "function_response", + "function_call", + "auto", + ] + ] +): + model_config = ConfigDict( + populate_by_name=True, + ) + root: Literal[ + "user", + "assistant", + "system", + "function", + "function_response", + "function_call", + "auto", + ] + """ + ChatML role (system|assistant|user|function_call|function|function_response|auto) + """ + + +class Content(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + text: str + type: Literal["text"] = "text" + """ + The type (fixed to 'text') + """ + + +class ContentModel(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + image_url: ImageUrl + """ + The image URL + """ + type: Literal["image_url"] = "image_url" + """ + The type (fixed to 'image_url') + """ + + +class Entry(BaseEntry): + model_config = ConfigDict( + populate_by_name=True, + ) + created_at: Annotated[AwareDatetime, Field(json_schema_extra={"readOnly": True})] + """ + When this resource was created as UTC date-time + """ + id: Annotated[UUID, Field(json_schema_extra={"readOnly": True})] + + +class History(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + entries: list[Entry] + relations: list[Relation] + session_id: Annotated[UUID, Field(json_schema_extra={"readOnly": True})] + created_at: Annotated[AwareDatetime, Field(json_schema_extra={"readOnly": True})] + """ + When this resource was created as UTC date-time + """ + + +class ImageDetail(RootModel[Literal["low", "high", "auto"]]): + model_config = ConfigDict( + populate_by_name=True, + ) + root: Literal["low", "high", "auto"] + """ + Image detail level + """ + + +class ImageUrl(BaseModel): + """ + The image URL + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + url: str + """ + Image URL or base64 data url (e.g. `data:image/jpeg;base64,`) + """ + detail: Literal["low", "high", "auto"] = "auto" + """ + The detail level of the image + """ + + +class Relation(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + head: UUID + relation: str + tail: UUID diff --git a/integrations-service/integrations/autogen/Executions.py b/integrations-service/integrations/autogen/Executions.py new file mode 100644 index 000000000..5ccc57e83 --- /dev/null +++ b/integrations-service/integrations/autogen/Executions.py @@ -0,0 +1,188 @@ +# generated by datamodel-codegen: +# filename: openapi-1.0.0.yaml + +from __future__ import annotations + +from typing import Annotated, Any, Literal +from uuid import UUID + +from pydantic import AwareDatetime, BaseModel, ConfigDict, Field + + +class CreateExecutionRequest(BaseModel): + """ + Payload for creating an execution + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + input: dict[str, Any] + """ + The input to the execution + """ + output: Any | None = None + """ + The output of the execution if it succeeded + """ + error: str | None = None + """ + The error of the execution if it failed + """ + metadata: dict[str, Any] | None = None + + +class Execution(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + task_id: Annotated[UUID, Field(json_schema_extra={"readOnly": True})] + """ + The ID of the task that the execution is running + """ + status: Annotated[ + Literal[ + "queued", + "starting", + "running", + "awaiting_input", + "succeeded", + "failed", + "cancelled", + ], + Field(json_schema_extra={"readOnly": True}), + ] + """ + The status of the execution + """ + input: dict[str, Any] + """ + The input to the execution + """ + output: Any | None = None + """ + The output of the execution if it succeeded + """ + error: str | None = None + """ + The error of the execution if it failed + """ + created_at: Annotated[AwareDatetime, Field(json_schema_extra={"readOnly": True})] + """ + When this resource was created as UTC date-time + """ + updated_at: Annotated[AwareDatetime, Field(json_schema_extra={"readOnly": True})] + """ + When this resource was updated as UTC date-time + """ + metadata: dict[str, Any] | None = None + id: Annotated[UUID, Field(json_schema_extra={"readOnly": True})] + + +class TaskTokenResumeExecutionRequest(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + status: Literal["running"] = "running" + input: dict[str, Any] | None = None + """ + The input to resume the execution with + """ + + +class TransitionEvent(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + type: Annotated[ + Literal[ + "init", + "init_branch", + "finish", + "finish_branch", + "wait", + "resume", + "error", + "step", + "cancelled", + ], + Field(json_schema_extra={"readOnly": True}), + ] + output: Annotated[Any, Field(json_schema_extra={"readOnly": True})] + created_at: Annotated[AwareDatetime, Field(json_schema_extra={"readOnly": True})] + """ + When this resource was created as UTC date-time + """ + updated_at: Annotated[AwareDatetime, Field(json_schema_extra={"readOnly": True})] + """ + When this resource was updated as UTC date-time + """ + + +class TransitionTarget(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + workflow: Annotated[ + str, + Field( + max_length=120, + pattern="^[\\p{L}\\p{Nl}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]+[\\p{ID_Start}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]*$", + ), + ] + """ + For Unicode character safety + See: https://unicode.org/reports/tr31/ + See: https://www.unicode.org/reports/tr39/#Identifier_Characters + """ + step: int + + +class UpdateExecutionRequest(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + status: Literal[ + "queued", + "starting", + "running", + "awaiting_input", + "succeeded", + "failed", + "cancelled", + ] + + +class ResumeExecutionRequest(UpdateExecutionRequest): + model_config = ConfigDict( + populate_by_name=True, + ) + status: Literal["running"] = "running" + input: dict[str, Any] | None = None + """ + The input to resume the execution with + """ + + +class StopExecutionRequest(UpdateExecutionRequest): + model_config = ConfigDict( + populate_by_name=True, + ) + status: Literal["cancelled"] = "cancelled" + reason: str | None = None + """ + The reason for stopping the execution + """ + + +class Transition(TransitionEvent): + model_config = ConfigDict( + populate_by_name=True, + ) + execution_id: Annotated[UUID, Field(json_schema_extra={"readOnly": True})] + current: Annotated[TransitionTarget, Field(json_schema_extra={"readOnly": True})] + next: Annotated[ + TransitionTarget | None, Field(json_schema_extra={"readOnly": True}) + ] + id: Annotated[UUID, Field(json_schema_extra={"readOnly": True})] + metadata: dict[str, Any] | None = None diff --git a/integrations-service/integrations/autogen/Jobs.py b/integrations-service/integrations/autogen/Jobs.py new file mode 100644 index 000000000..b17cd9317 --- /dev/null +++ b/integrations-service/integrations/autogen/Jobs.py @@ -0,0 +1,58 @@ +# generated by datamodel-codegen: +# filename: openapi-1.0.0.yaml + +from __future__ import annotations + +from typing import Annotated, Literal +from uuid import UUID + +from pydantic import AwareDatetime, BaseModel, ConfigDict, Field, StrictBool + + +class JobStatus(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + id: Annotated[UUID, Field(json_schema_extra={"readOnly": True})] + created_at: Annotated[AwareDatetime, Field(json_schema_extra={"readOnly": True})] + """ + When this resource was created as UTC date-time + """ + updated_at: Annotated[AwareDatetime, Field(json_schema_extra={"readOnly": True})] + """ + When this resource was updated as UTC date-time + """ + name: Annotated[ + str, + Field( + max_length=120, + pattern="^[\\p{L}\\p{Nl}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]+[\\p{ID_Start}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]*$", + ), + ] = "" + """ + Name of the job + """ + reason: str = "" + """ + Reason for the current state of the job + """ + has_progress: StrictBool = False + """ + Whether this Job supports progress updates + """ + progress: Annotated[float, Field(ge=0.0, le=100.0)] = 0 + """ + Progress percentage + """ + state: Literal[ + "pending", + "in_progress", + "retrying", + "succeeded", + "aborted", + "failed", + "unknown", + ] = "pending" + """ + Current state of the job + """ diff --git a/integrations-service/integrations/autogen/Sessions.py b/integrations-service/integrations/autogen/Sessions.py new file mode 100644 index 000000000..1f13639fc --- /dev/null +++ b/integrations-service/integrations/autogen/Sessions.py @@ -0,0 +1,270 @@ +# generated by datamodel-codegen: +# filename: openapi-1.0.0.yaml + +from __future__ import annotations + +from typing import Annotated, Any, Literal +from uuid import UUID + +from pydantic import AwareDatetime, BaseModel, ConfigDict, Field, StrictBool + + +class CreateSessionRequest(BaseModel): + """ + Payload for creating a session + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + user: UUID | None = None + """ + User ID of user associated with this session + """ + users: list[UUID] | None = None + agent: UUID | None = None + """ + Agent ID of agent associated with this session + """ + agents: list[UUID] | None = None + situation: str = '{%- if agent.name -%}\nYou are {{agent.name}}.{{" "}}\n{%- endif -%}\n\n{%- if agent.about -%}\nAbout you: {{agent.about}}.{{" "}}\n{%- endif -%}\n\n{%- if user -%}\nYou are talking to a user\n {%- if user.name -%}{{" "}} and their name is {{user.name}}\n {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\n {%- endif -%}\n{%- endif -%}\n\n{{"\n\n"}}\n\n{%- if agent.instructions -%}\nInstructions:{{"\n"}}\n {%- if agent.instructions is string -%}\n {{agent.instructions}}{{"\n"}}\n {%- else -%}\n {%- for instruction in agent.instructions -%}\n - {{instruction}}{{"\n"}}\n {%- endfor -%}\n {%- endif -%}\n {{"\n"}}\n{%- endif -%}\n\n{%- if tools -%}\nTools:{{"\n"}}\n {%- for tool in tools -%}\n {%- if tool.type == "function" -%}\n - {{tool.function.name}}\n {%- if tool.function.description -%}: {{tool.function.description}}{%- endif -%}{{"\n"}}\n {%- else -%}\n - {{ 0/0 }} {# Error: Other tool types aren\'t supported yet. #}\n {%- endif -%}\n {%- endfor -%}\n{{"\n\n"}}\n{%- endif -%}\n\n{%- if docs -%}\nRelevant documents:{{"\n"}}\n {%- for doc in docs -%}\n {{doc.title}}{{"\n"}}\n {%- if doc.content is string -%}\n {{doc.content}}{{"\n"}}\n {%- else -%}\n {%- for snippet in doc.content -%}\n {{snippet}}{{"\n"}}\n {%- endfor -%}\n {%- endif -%}\n {{"---"}}\n {%- endfor -%}\n{%- endif -%}' + """ + A specific situation that sets the background for this session + """ + render_templates: StrictBool = True + """ + Render system and assistant message content as jinja templates + """ + token_budget: int | None = None + """ + Threshold value for the adaptive context functionality + """ + context_overflow: Literal["truncate", "adaptive"] | None = None + """ + Action to start on context window overflow + """ + forward_tool_results: StrictBool | None = None + """ + Whether to forward the tool results to the model when available. + "true" => always forward + "false" => never forward + null => forward if applicable (default) + + If a tool call is made, the tool's output will be sent back to the model as the model's input. + If a tool call is not made, the model's output will be returned as is. + """ + metadata: dict[str, Any] | None = None + + +class PatchSessionRequest(BaseModel): + """ + Payload for patching a session + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + situation: str = '{%- if agent.name -%}\nYou are {{agent.name}}.{{" "}}\n{%- endif -%}\n\n{%- if agent.about -%}\nAbout you: {{agent.about}}.{{" "}}\n{%- endif -%}\n\n{%- if user -%}\nYou are talking to a user\n {%- if user.name -%}{{" "}} and their name is {{user.name}}\n {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\n {%- endif -%}\n{%- endif -%}\n\n{{"\n\n"}}\n\n{%- if agent.instructions -%}\nInstructions:{{"\n"}}\n {%- if agent.instructions is string -%}\n {{agent.instructions}}{{"\n"}}\n {%- else -%}\n {%- for instruction in agent.instructions -%}\n - {{instruction}}{{"\n"}}\n {%- endfor -%}\n {%- endif -%}\n {{"\n"}}\n{%- endif -%}\n\n{%- if tools -%}\nTools:{{"\n"}}\n {%- for tool in tools -%}\n {%- if tool.type == "function" -%}\n - {{tool.function.name}}\n {%- if tool.function.description -%}: {{tool.function.description}}{%- endif -%}{{"\n"}}\n {%- else -%}\n - {{ 0/0 }} {# Error: Other tool types aren\'t supported yet. #}\n {%- endif -%}\n {%- endfor -%}\n{{"\n\n"}}\n{%- endif -%}\n\n{%- if docs -%}\nRelevant documents:{{"\n"}}\n {%- for doc in docs -%}\n {{doc.title}}{{"\n"}}\n {%- if doc.content is string -%}\n {{doc.content}}{{"\n"}}\n {%- else -%}\n {%- for snippet in doc.content -%}\n {{snippet}}{{"\n"}}\n {%- endfor -%}\n {%- endif -%}\n {{"---"}}\n {%- endfor -%}\n{%- endif -%}' + """ + A specific situation that sets the background for this session + """ + render_templates: StrictBool = True + """ + Render system and assistant message content as jinja templates + """ + token_budget: int | None = None + """ + Threshold value for the adaptive context functionality + """ + context_overflow: Literal["truncate", "adaptive"] | None = None + """ + Action to start on context window overflow + """ + forward_tool_results: StrictBool | None = None + """ + Whether to forward the tool results to the model when available. + "true" => always forward + "false" => never forward + null => forward if applicable (default) + + If a tool call is made, the tool's output will be sent back to the model as the model's input. + If a tool call is not made, the model's output will be returned as is. + """ + metadata: dict[str, Any] | None = None + + +class Session(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + situation: str = '{%- if agent.name -%}\nYou are {{agent.name}}.{{" "}}\n{%- endif -%}\n\n{%- if agent.about -%}\nAbout you: {{agent.about}}.{{" "}}\n{%- endif -%}\n\n{%- if user -%}\nYou are talking to a user\n {%- if user.name -%}{{" "}} and their name is {{user.name}}\n {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\n {%- endif -%}\n{%- endif -%}\n\n{{"\n\n"}}\n\n{%- if agent.instructions -%}\nInstructions:{{"\n"}}\n {%- if agent.instructions is string -%}\n {{agent.instructions}}{{"\n"}}\n {%- else -%}\n {%- for instruction in agent.instructions -%}\n - {{instruction}}{{"\n"}}\n {%- endfor -%}\n {%- endif -%}\n {{"\n"}}\n{%- endif -%}\n\n{%- if tools -%}\nTools:{{"\n"}}\n {%- for tool in tools -%}\n {%- if tool.type == "function" -%}\n - {{tool.function.name}}\n {%- if tool.function.description -%}: {{tool.function.description}}{%- endif -%}{{"\n"}}\n {%- else -%}\n - {{ 0/0 }} {# Error: Other tool types aren\'t supported yet. #}\n {%- endif -%}\n {%- endfor -%}\n{{"\n\n"}}\n{%- endif -%}\n\n{%- if docs -%}\nRelevant documents:{{"\n"}}\n {%- for doc in docs -%}\n {{doc.title}}{{"\n"}}\n {%- if doc.content is string -%}\n {{doc.content}}{{"\n"}}\n {%- else -%}\n {%- for snippet in doc.content -%}\n {{snippet}}{{"\n"}}\n {%- endfor -%}\n {%- endif -%}\n {{"---"}}\n {%- endfor -%}\n{%- endif -%}' + """ + A specific situation that sets the background for this session + """ + summary: Annotated[str | None, Field(json_schema_extra={"readOnly": True})] = None + """ + Summary (null at the beginning) - generated automatically after every interaction + """ + render_templates: StrictBool = True + """ + Render system and assistant message content as jinja templates + """ + token_budget: int | None = None + """ + Threshold value for the adaptive context functionality + """ + context_overflow: Literal["truncate", "adaptive"] | None = None + """ + Action to start on context window overflow + """ + forward_tool_results: StrictBool | None = None + """ + Whether to forward the tool results to the model when available. + "true" => always forward + "false" => never forward + null => forward if applicable (default) + + If a tool call is made, the tool's output will be sent back to the model as the model's input. + If a tool call is not made, the model's output will be returned as is. + """ + id: Annotated[UUID, Field(json_schema_extra={"readOnly": True})] + metadata: dict[str, Any] | None = None + created_at: Annotated[AwareDatetime, Field(json_schema_extra={"readOnly": True})] + """ + When this resource was created as UTC date-time + """ + updated_at: Annotated[AwareDatetime, Field(json_schema_extra={"readOnly": True})] + """ + When this resource was updated as UTC date-time + """ + kind: str | None = None + """ + Discriminator property for Session. + """ + + +class SingleAgentMultiUserSession(Session): + model_config = ConfigDict( + populate_by_name=True, + ) + agent: UUID + users: Annotated[list[UUID], Field(min_length=2)] + + +class SingleAgentNoUserSession(Session): + model_config = ConfigDict( + populate_by_name=True, + ) + agent: UUID + + +class SingleAgentSingleUserSession(Session): + model_config = ConfigDict( + populate_by_name=True, + ) + agent: UUID + user: UUID + + +class UpdateSessionRequest(BaseModel): + """ + Payload for updating a session + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + situation: str = '{%- if agent.name -%}\nYou are {{agent.name}}.{{" "}}\n{%- endif -%}\n\n{%- if agent.about -%}\nAbout you: {{agent.about}}.{{" "}}\n{%- endif -%}\n\n{%- if user -%}\nYou are talking to a user\n {%- if user.name -%}{{" "}} and their name is {{user.name}}\n {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\n {%- endif -%}\n{%- endif -%}\n\n{{"\n\n"}}\n\n{%- if agent.instructions -%}\nInstructions:{{"\n"}}\n {%- if agent.instructions is string -%}\n {{agent.instructions}}{{"\n"}}\n {%- else -%}\n {%- for instruction in agent.instructions -%}\n - {{instruction}}{{"\n"}}\n {%- endfor -%}\n {%- endif -%}\n {{"\n"}}\n{%- endif -%}\n\n{%- if tools -%}\nTools:{{"\n"}}\n {%- for tool in tools -%}\n {%- if tool.type == "function" -%}\n - {{tool.function.name}}\n {%- if tool.function.description -%}: {{tool.function.description}}{%- endif -%}{{"\n"}}\n {%- else -%}\n - {{ 0/0 }} {# Error: Other tool types aren\'t supported yet. #}\n {%- endif -%}\n {%- endfor -%}\n{{"\n\n"}}\n{%- endif -%}\n\n{%- if docs -%}\nRelevant documents:{{"\n"}}\n {%- for doc in docs -%}\n {{doc.title}}{{"\n"}}\n {%- if doc.content is string -%}\n {{doc.content}}{{"\n"}}\n {%- else -%}\n {%- for snippet in doc.content -%}\n {{snippet}}{{"\n"}}\n {%- endfor -%}\n {%- endif -%}\n {{"---"}}\n {%- endfor -%}\n{%- endif -%}' + """ + A specific situation that sets the background for this session + """ + render_templates: StrictBool = True + """ + Render system and assistant message content as jinja templates + """ + token_budget: int | None = None + """ + Threshold value for the adaptive context functionality + """ + context_overflow: Literal["truncate", "adaptive"] | None = None + """ + Action to start on context window overflow + """ + forward_tool_results: StrictBool | None = None + """ + Whether to forward the tool results to the model when available. + "true" => always forward + "false" => never forward + null => forward if applicable (default) + + If a tool call is made, the tool's output will be sent back to the model as the model's input. + If a tool call is not made, the model's output will be returned as is. + """ + metadata: dict[str, Any] | None = None + + +class CreateOrUpdateSessionRequest(CreateSessionRequest): + model_config = ConfigDict( + populate_by_name=True, + ) + id: UUID + user: UUID | None = None + """ + User ID of user associated with this session + """ + users: list[UUID] | None = None + agent: UUID | None = None + """ + Agent ID of agent associated with this session + """ + agents: list[UUID] | None = None + situation: str = '{%- if agent.name -%}\nYou are {{agent.name}}.{{" "}}\n{%- endif -%}\n\n{%- if agent.about -%}\nAbout you: {{agent.about}}.{{" "}}\n{%- endif -%}\n\n{%- if user -%}\nYou are talking to a user\n {%- if user.name -%}{{" "}} and their name is {{user.name}}\n {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\n {%- endif -%}\n{%- endif -%}\n\n{{"\n\n"}}\n\n{%- if agent.instructions -%}\nInstructions:{{"\n"}}\n {%- if agent.instructions is string -%}\n {{agent.instructions}}{{"\n"}}\n {%- else -%}\n {%- for instruction in agent.instructions -%}\n - {{instruction}}{{"\n"}}\n {%- endfor -%}\n {%- endif -%}\n {{"\n"}}\n{%- endif -%}\n\n{%- if tools -%}\nTools:{{"\n"}}\n {%- for tool in tools -%}\n {%- if tool.type == "function" -%}\n - {{tool.function.name}}\n {%- if tool.function.description -%}: {{tool.function.description}}{%- endif -%}{{"\n"}}\n {%- else -%}\n - {{ 0/0 }} {# Error: Other tool types aren\'t supported yet. #}\n {%- endif -%}\n {%- endfor -%}\n{{"\n\n"}}\n{%- endif -%}\n\n{%- if docs -%}\nRelevant documents:{{"\n"}}\n {%- for doc in docs -%}\n {{doc.title}}{{"\n"}}\n {%- if doc.content is string -%}\n {{doc.content}}{{"\n"}}\n {%- else -%}\n {%- for snippet in doc.content -%}\n {{snippet}}{{"\n"}}\n {%- endfor -%}\n {%- endif -%}\n {{"---"}}\n {%- endfor -%}\n{%- endif -%}' + """ + A specific situation that sets the background for this session + """ + render_templates: StrictBool = True + """ + Render system and assistant message content as jinja templates + """ + token_budget: int | None = None + """ + Threshold value for the adaptive context functionality + """ + context_overflow: Literal["truncate", "adaptive"] | None = None + """ + Action to start on context window overflow + """ + forward_tool_results: StrictBool | None = None + """ + Whether to forward the tool results to the model when available. + "true" => always forward + "false" => never forward + null => forward if applicable (default) + + If a tool call is made, the tool's output will be sent back to the model as the model's input. + If a tool call is not made, the model's output will be returned as is. + """ + metadata: dict[str, Any] | None = None + + +class MultiAgentMultiUserSession(Session): + model_config = ConfigDict( + populate_by_name=True, + ) + agents: Annotated[list[UUID], Field(min_length=2)] + users: Annotated[list[UUID], Field(min_length=2)] + + +class MultiAgentNoUserSession(Session): + model_config = ConfigDict( + populate_by_name=True, + ) + agents: Annotated[list[UUID], Field(min_length=2)] + + +class MultiAgentSingleUserSession(Session): + model_config = ConfigDict( + populate_by_name=True, + ) + agents: Annotated[list[UUID], Field(min_length=2)] + user: UUID diff --git a/integrations-service/integrations/autogen/Tasks.py b/integrations-service/integrations/autogen/Tasks.py new file mode 100644 index 000000000..0712d1fb7 --- /dev/null +++ b/integrations-service/integrations/autogen/Tasks.py @@ -0,0 +1,1033 @@ +# generated by datamodel-codegen: +# filename: openapi-1.0.0.yaml + +from __future__ import annotations + +from typing import Annotated, Any, Literal +from uuid import UUID + +from pydantic import AwareDatetime, BaseModel, ConfigDict, Field, StrictBool + +from .Chat import ChatSettings +from .Tools import CreateToolRequest, NamedToolChoice + + +class CaseThen(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + case: Literal["_"] | str + """ + The condition to evaluate + """ + then: ( + EvaluateStep + | ToolCallStep + | PromptStep + | GetStep + | SetStep + | LogStep + | YieldStep + | ReturnStep + | SleepStep + | ErrorWorkflowStep + | WaitForInputStep + ) + """ + The steps to run if the condition is true + """ + + +class CaseThenUpdateItem(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + case: Literal["_"] | str + """ + The condition to evaluate + """ + then: ( + EvaluateStep + | ToolCallStep + | PromptStepUpdateItem + | GetStep + | SetStep + | LogStep + | YieldStep + | ReturnStep + | SleepStep + | ErrorWorkflowStep + | WaitForInputStep + ) + """ + The steps to run if the condition is true + """ + + +class Content(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + text: str + """ + A valid jinja template. + """ + type: Literal["text"] = "text" + """ + The type (fixed to 'text') + """ + + +class ContentModel(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + image_url: ImageUrl + """ + The image URL + """ + type: Literal["image_url"] = "image_url" + """ + The type (fixed to 'image_url') + """ + + +class ContentModel1(Content): + pass + + +class ContentModel2(ContentModel): + pass + + +class CreateTaskRequest(BaseModel): + """ + Payload for creating a task + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + name: str + description: str = "" + main: Annotated[ + list[ + EvaluateStep + | ToolCallStep + | PromptStep + | GetStep + | SetStep + | LogStep + | YieldStep + | ReturnStep + | SleepStep + | ErrorWorkflowStep + | WaitForInputStep + | IfElseWorkflowStep + | SwitchStep + | ForeachStep + | ParallelStep + | Main + ], + Field(min_length=1), + ] + """ + The entrypoint of the task. + """ + input_schema: dict[str, Any] | None = None + """ + The schema for the input to the task. `null` means all inputs are valid. + """ + tools: list[TaskTool] = [] + """ + Tools defined specifically for this task not included in the Agent itself. + """ + inherit_tools: StrictBool = True + """ + Whether to inherit tools from the parent agent or not. Defaults to true. + """ + metadata: dict[str, Any] | None = None + + +class ErrorWorkflowStep(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + kind_: Annotated[Literal["error"], Field(json_schema_extra={"readOnly": True})] = ( + "error" + ) + """ + The kind of step + """ + error: str + """ + The error message + """ + + +class EvaluateStep(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + kind_: Annotated[ + Literal["evaluate"], Field(json_schema_extra={"readOnly": True}) + ] = "evaluate" + """ + The kind of step + """ + evaluate: dict[str, str] + """ + The expression to evaluate + """ + + +class ForeachDo(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + in_: Annotated[str, Field(alias="in")] + """ + The variable to iterate over. + VALIDATION: Should NOT return more than 1000 elements. + """ + do: ( + WaitForInputStep + | EvaluateStep + | ToolCallStep + | PromptStep + | GetStep + | SetStep + | LogStep + | YieldStep + ) + """ + The steps to run for each iteration + """ + + +class ForeachDoUpdateItem(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + in_: Annotated[str, Field(alias="in")] + """ + The variable to iterate over. + VALIDATION: Should NOT return more than 1000 elements. + """ + do: ( + WaitForInputStep + | EvaluateStep + | ToolCallStep + | PromptStepUpdateItem + | GetStep + | SetStep + | LogStep + | YieldStep + ) + """ + The steps to run for each iteration + """ + + +class ForeachStep(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + kind_: Annotated[ + Literal["foreach"], Field(json_schema_extra={"readOnly": True}) + ] = "foreach" + """ + The kind of step + """ + foreach: ForeachDo + """ + The steps to run for each iteration + """ + + +class ForeachStepUpdateItem(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + kind_: str | None = None + """ + Discriminator property for BaseWorkflowStep. + """ + foreach: ForeachDoUpdateItem + """ + The steps to run for each iteration + """ + + +class GetStep(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + kind_: Annotated[Literal["get"], Field(json_schema_extra={"readOnly": True})] = ( + "get" + ) + """ + The kind of step + """ + get: str + """ + The key to get + """ + + +class IfElseWorkflowStep(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + kind_: Annotated[ + Literal["if_else"], Field(json_schema_extra={"readOnly": True}) + ] = "if_else" + """ + The kind of step + """ + if_: Annotated[str, Field(alias="if")] + """ + The condition to evaluate + """ + then: ( + EvaluateStep + | ToolCallStep + | PromptStep + | GetStep + | SetStep + | LogStep + | YieldStep + | ReturnStep + | SleepStep + | ErrorWorkflowStep + | WaitForInputStep + ) + """ + The steps to run if the condition is true + """ + else_: Annotated[ + EvaluateStep + | ToolCallStep + | PromptStep + | GetStep + | SetStep + | LogStep + | YieldStep + | ReturnStep + | SleepStep + | ErrorWorkflowStep + | WaitForInputStep + | None, + Field(alias="else"), + ] = None + """ + The steps to run if the condition is false + """ + + +class IfElseWorkflowStepUpdateItem(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + kind_: str | None = None + """ + Discriminator property for BaseWorkflowStep. + """ + if_: Annotated[str, Field(alias="if")] + """ + The condition to evaluate + """ + then: ( + EvaluateStep + | ToolCallStep + | PromptStepUpdateItem + | GetStep + | SetStep + | LogStep + | YieldStep + | ReturnStep + | SleepStep + | ErrorWorkflowStep + | WaitForInputStep + ) + """ + The steps to run if the condition is true + """ + else_: Annotated[ + EvaluateStep + | ToolCallStep + | PromptStepUpdateItem + | GetStep + | SetStep + | LogStep + | YieldStep + | ReturnStep + | SleepStep + | ErrorWorkflowStep + | WaitForInputStep + | None, + Field(alias="else"), + ] = None + """ + The steps to run if the condition is false + """ + + +class ImageUrl(BaseModel): + """ + The image URL + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + url: str + """ + Image URL or base64 data url (e.g. `data:image/jpeg;base64,`) + """ + detail: Literal["low", "high", "auto"] = "auto" + """ + The detail level of the image + """ + + +class LogStep(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + kind_: Annotated[Literal["log"], Field(json_schema_extra={"readOnly": True})] = ( + "log" + ) + """ + The kind of step + """ + log: str + """ + The value to log + """ + + +class Main(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + kind_: Annotated[ + Literal["map_reduce"], Field(json_schema_extra={"readOnly": True}) + ] = "map_reduce" + """ + The kind of step + """ + over: str + """ + The variable to iterate over + """ + map: ( + EvaluateStep + | ToolCallStep + | PromptStep + | GetStep + | SetStep + | LogStep + | YieldStep + ) + """ + The steps to run for each iteration + """ + reduce: str | None = None + """ + The expression to reduce the results. + If not provided, the results are collected and returned as a list. + A special parameter named `results` is the accumulator and `_` is the current value. + """ + initial: Any = [] + """ + The initial value of the reduce expression + """ + parallelism: Annotated[int | None, Field(ge=1, le=100)] = None + """ + Whether to run the reduce expression in parallel and how many items to run in each batch + """ + + +class MainModel(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + kind_: str | None = None + """ + Discriminator property for BaseWorkflowStep. + """ + over: str + """ + The variable to iterate over + """ + map: ( + EvaluateStep + | ToolCallStep + | PromptStepUpdateItem + | GetStep + | SetStep + | LogStep + | YieldStep + ) + """ + The steps to run for each iteration + """ + reduce: str | None = None + """ + The expression to reduce the results. + If not provided, the results are collected and returned as a list. + A special parameter named `results` is the accumulator and `_` is the current value. + """ + initial: Any = [] + """ + The initial value of the reduce expression + """ + parallelism: Annotated[int | None, Field(ge=1, le=100)] = None + """ + Whether to run the reduce expression in parallel and how many items to run in each batch + """ + + +class ParallelStep(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + kind_: Annotated[ + Literal["parallel"], Field(json_schema_extra={"readOnly": True}) + ] = "parallel" + """ + The kind of step + """ + parallel: Annotated[ + list[ + EvaluateStep + | ToolCallStep + | PromptStep + | GetStep + | SetStep + | LogStep + | YieldStep + ], + Field(max_length=100), + ] + """ + The steps to run in parallel. Max concurrency will depend on the platform. + """ + + +class ParallelStepUpdateItem(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + kind_: str | None = None + """ + Discriminator property for BaseWorkflowStep. + """ + parallel: Annotated[ + list[ + EvaluateStep + | ToolCallStep + | PromptStepUpdateItem + | GetStep + | SetStep + | LogStep + | YieldStep + ], + Field(max_length=100), + ] + """ + The steps to run in parallel. Max concurrency will depend on the platform. + """ + + +class PatchTaskRequest(BaseModel): + """ + Payload for patching a task + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + description: str = "" + main: Annotated[ + list[ + EvaluateStep + | ToolCallStep + | PromptStepUpdateItem + | GetStep + | SetStep + | LogStep + | YieldStep + | ReturnStep + | SleepStep + | ErrorWorkflowStep + | WaitForInputStep + | IfElseWorkflowStepUpdateItem + | SwitchStepUpdateItem + | ForeachStepUpdateItem + | ParallelStepUpdateItem + | MainModel + ] + | None, + Field(min_length=1), + ] = None + """ + The entrypoint of the task. + """ + input_schema: dict[str, Any] | None = None + """ + The schema for the input to the task. `null` means all inputs are valid. + """ + tools: list[TaskTool] = [] + """ + Tools defined specifically for this task not included in the Agent itself. + """ + inherit_tools: StrictBool = True + """ + Whether to inherit tools from the parent agent or not. Defaults to true. + """ + metadata: dict[str, Any] | None = None + + +class PromptItem(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + role: Literal[ + "user", + "assistant", + "system", + "function", + "function_response", + "function_call", + "auto", + ] + """ + The role of the message + """ + content: list[str] | list[Content | ContentModel] | str + """ + The content parts of the message + """ + name: str | None = None + """ + Name + """ + continue_: Annotated[StrictBool | None, Field(alias="continue")] = None + """ + Whether to continue this message or return a new one + """ + + +class PromptStep(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + kind_: Annotated[Literal["prompt"], Field(json_schema_extra={"readOnly": True})] = ( + "prompt" + ) + """ + The kind of step + """ + prompt: list[PromptItem] | str + """ + The prompt to run + """ + tools: Literal["all"] | list[ToolRef | CreateToolRequest] = [] + """ + The tools to use for the prompt + """ + tool_choice: Literal["auto", "none"] | NamedToolChoice | None = None + """ + The tool choice for the prompt + """ + settings: ChatSettings | None = None + """ + Settings for the prompt + """ + unwrap: StrictBool = False + """ + Whether to unwrap the output of the prompt step, equivalent to `response.choices[0].message.content` + """ + forward_tool_results: StrictBool | None = None + """ + Whether to forward the tool results to the model when available. + "true" => always forward + "false" => never forward + null => forward if applicable (default) + + If a tool call is made, the tool's output will be used as the model's input. + If a tool call is not made, the model's output will be used as the next step's input. + """ + + +class PromptStepUpdateItem(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + kind_: str | None = None + """ + Discriminator property for BaseWorkflowStep. + """ + prompt: list[PromptItem] | str + """ + The prompt to run + """ + tools: Literal["all"] | list[ToolRefUpdateItem | CreateToolRequest] = [] + """ + The tools to use for the prompt + """ + tool_choice: Literal["auto", "none"] | NamedToolChoice | None = None + """ + The tool choice for the prompt + """ + settings: ChatSettings | None = None + """ + Settings for the prompt + """ + unwrap: StrictBool = False + """ + Whether to unwrap the output of the prompt step, equivalent to `response.choices[0].message.content` + """ + forward_tool_results: StrictBool | None = None + """ + Whether to forward the tool results to the model when available. + "true" => always forward + "false" => never forward + null => forward if applicable (default) + + If a tool call is made, the tool's output will be used as the model's input. + If a tool call is not made, the model's output will be used as the next step's input. + """ + + +class ReturnStep(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + kind_: Annotated[Literal["return"], Field(json_schema_extra={"readOnly": True})] = ( + "return" + ) + """ + The kind of step + """ + return_: Annotated[dict[str, str], Field(alias="return")] + """ + The value to return + """ + + +class SetStep(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + kind_: Annotated[Literal["set"], Field(json_schema_extra={"readOnly": True})] = ( + "set" + ) + """ + The kind of step + """ + set: dict[str, str] + """ + The value to set + """ + + +class SleepFor(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + seconds: Annotated[int, Field(ge=0, le=60)] = 0 + """ + The number of seconds to sleep for + """ + minutes: Annotated[int, Field(ge=0, le=60)] = 0 + """ + The number of minutes to sleep for + """ + hours: Annotated[int, Field(ge=0, le=24)] = 0 + """ + The number of hours to sleep for + """ + days: Annotated[int, Field(ge=0, le=30)] = 0 + """ + The number of days to sleep for + """ + + +class SleepStep(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + kind_: Annotated[Literal["sleep"], Field(json_schema_extra={"readOnly": True})] = ( + "sleep" + ) + """ + The kind of step + """ + sleep: SleepFor + """ + The duration to sleep for (max 31 days) + """ + + +class SwitchStep(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + kind_: Annotated[Literal["switch"], Field(json_schema_extra={"readOnly": True})] = ( + "switch" + ) + """ + The kind of step + """ + switch: Annotated[list[CaseThen], Field(min_length=1)] + """ + The cond tree + """ + + +class SwitchStepUpdateItem(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + kind_: str | None = None + """ + Discriminator property for BaseWorkflowStep. + """ + switch: Annotated[list[CaseThenUpdateItem], Field(min_length=1)] + """ + The cond tree + """ + + +class Task(BaseModel): + """ + Object describing a Task + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + name: str + description: str = "" + main: Annotated[ + list[ + EvaluateStep + | ToolCallStep + | PromptStep + | GetStep + | SetStep + | LogStep + | YieldStep + | ReturnStep + | SleepStep + | ErrorWorkflowStep + | WaitForInputStep + | IfElseWorkflowStep + | SwitchStep + | ForeachStep + | ParallelStep + | Main + ], + Field(min_length=1), + ] + """ + The entrypoint of the task. + """ + input_schema: dict[str, Any] | None = None + """ + The schema for the input to the task. `null` means all inputs are valid. + """ + tools: list[TaskTool] = [] + """ + Tools defined specifically for this task not included in the Agent itself. + """ + inherit_tools: StrictBool = True + """ + Whether to inherit tools from the parent agent or not. Defaults to true. + """ + id: Annotated[UUID, Field(json_schema_extra={"readOnly": True})] + created_at: Annotated[AwareDatetime, Field(json_schema_extra={"readOnly": True})] + """ + When this resource was created as UTC date-time + """ + updated_at: Annotated[AwareDatetime, Field(json_schema_extra={"readOnly": True})] + """ + When this resource was updated as UTC date-time + """ + metadata: dict[str, Any] | None = None + + +class TaskTool(CreateToolRequest): + model_config = ConfigDict( + populate_by_name=True, + ) + inherited: Annotated[StrictBool, Field(json_schema_extra={"readOnly": True})] = ( + False + ) + """ + Read-only: Whether the tool was inherited or not. Only applies within tasks. + """ + + +class ToolCallStep(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + kind_: Annotated[ + Literal["tool_call"], Field(json_schema_extra={"readOnly": True}) + ] = "tool_call" + """ + The kind of step + """ + tool: Annotated[str, Field(max_length=40, pattern="^[^\\W0-9]\\w*$")] + """ + The tool to run + """ + arguments: dict[str, dict[str, str] | str] | Literal["_"] = "_" + """ + The input parameters for the tool (defaults to last step output) + """ + + +class ToolRef(BaseModel): + """ + Reference to a tool + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + ref: ToolRefById | ToolRefByName + + +class ToolRefById(BaseModel): + """ + Reference to a tool by id + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + id: UUID | None = None + + +class ToolRefByName(BaseModel): + """ + Reference to a tool by name + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + name: Annotated[str | None, Field(max_length=40, pattern="^[^\\W0-9]\\w*$")] = None + """ + Valid python identifier names + """ + + +class ToolRefUpdateItem(BaseModel): + """ + Reference to a tool + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + + +class UpdateTaskRequest(BaseModel): + """ + Payload for updating a task + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + description: str = "" + main: Annotated[ + list[ + EvaluateStep + | ToolCallStep + | PromptStep + | GetStep + | SetStep + | LogStep + | YieldStep + | ReturnStep + | SleepStep + | ErrorWorkflowStep + | WaitForInputStep + | IfElseWorkflowStep + | SwitchStep + | ForeachStep + | ParallelStep + | Main + ], + Field(min_length=1), + ] + """ + The entrypoint of the task. + """ + input_schema: dict[str, Any] | None = None + """ + The schema for the input to the task. `null` means all inputs are valid. + """ + tools: list[TaskTool] = [] + """ + Tools defined specifically for this task not included in the Agent itself. + """ + inherit_tools: StrictBool = True + """ + Whether to inherit tools from the parent agent or not. Defaults to true. + """ + metadata: dict[str, Any] | None = None + + +class WaitForInputInfo(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + info: dict[str, str] + """ + Any additional info or data + """ + + +class WaitForInputStep(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + kind_: Annotated[ + Literal["wait_for_input"], Field(json_schema_extra={"readOnly": True}) + ] = "wait_for_input" + """ + The kind of step + """ + wait_for_input: WaitForInputInfo + """ + Any additional info or data + """ + + +class YieldStep(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + kind_: Annotated[Literal["yield"], Field(json_schema_extra={"readOnly": True})] = ( + "yield" + ) + """ + The kind of step + """ + workflow: str + """ + The subworkflow to run. + VALIDATION: Should resolve to a defined subworkflow. + """ + arguments: dict[str, str] | Literal["_"] = "_" + """ + The input parameters for the subworkflow (defaults to last step output) + """ diff --git a/integrations-service/integrations/autogen/Tools.py b/integrations-service/integrations/autogen/Tools.py new file mode 100644 index 000000000..dffe08e88 --- /dev/null +++ b/integrations-service/integrations/autogen/Tools.py @@ -0,0 +1,1705 @@ +# generated by datamodel-codegen: +# filename: openapi-1.0.0.yaml + +from __future__ import annotations + +from typing import Annotated, Any, Literal +from uuid import UUID + +from pydantic import ( + AnyUrl, + AwareDatetime, + BaseModel, + ConfigDict, + Field, + RootModel, + StrictBool, +) + + +class ApiCallDef(BaseModel): + """ + API call definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + method: Literal[ + "GET", "POST", "PUT", "DELETE", "PATCH", "HEAD", "OPTIONS", "CONNECT", "TRACE" + ] + """ + The HTTP method to use + """ + url: AnyUrl + """ + The URL to call + """ + headers: dict[str, str] | None = None + """ + The headers to send with the request + """ + content: str | None = None + """ + The content as base64 to send with the request + """ + data: dict[str, Any] | None = None + """ + The data to send as form data + """ + json_: Annotated[dict[str, Any] | None, Field(alias="json")] = None + """ + JSON body to send with the request + """ + cookies: dict[str, str] | None = None + """ + Cookies + """ + params: str | dict[str, Any] | None = None + """ + The parameters to send with the request + """ + follow_redirects: StrictBool | None = None + """ + Follow redirects + """ + timeout: int | None = None + """ + The timeout for the request + """ + + +class ApiCallDefUpdate(BaseModel): + """ + API call definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + method: ( + Literal[ + "GET", + "POST", + "PUT", + "DELETE", + "PATCH", + "HEAD", + "OPTIONS", + "CONNECT", + "TRACE", + ] + | None + ) = None + """ + The HTTP method to use + """ + url: AnyUrl | None = None + """ + The URL to call + """ + headers: dict[str, str] | None = None + """ + The headers to send with the request + """ + content: str | None = None + """ + The content as base64 to send with the request + """ + data: dict[str, Any] | None = None + """ + The data to send as form data + """ + json_: Annotated[dict[str, Any] | None, Field(alias="json")] = None + """ + JSON body to send with the request + """ + cookies: dict[str, str] | None = None + """ + Cookies + """ + params: str | dict[str, Any] | None = None + """ + The parameters to send with the request + """ + follow_redirects: StrictBool | None = None + """ + Follow redirects + """ + timeout: int | None = None + """ + The timeout for the request + """ + + +class BaseChosenToolCall(BaseModel): + """ + The response tool value generated by the model + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + type: Literal[ + "function", + "integration", + "system", + "api_call", + "computer_20241022", + "text_editor_20241022", + "bash_20241022", + ] + """ + Whether this tool is a `function`, `api_call`, `system` etc. (Only `function` tool supported right now) + """ + function: FunctionCallOption | None = None + integration: Any | None = None + system: Any | None = None + api_call: Any | None = None + computer_20241022: ChosenComputer20241022 | None = None + """ + (Alpha) Anthropic new tools + """ + text_editor_20241022: ChosenTextEditor20241022 | None = None + bash_20241022: ChosenBash20241022 | None = None + id: Annotated[UUID | None, Field(json_schema_extra={"readOnly": True})] = None + + +class BaseIntegrationDef(BaseModel): + """ + Integration definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + provider: Literal[ + "dummy", "weather", "wikipedia", "spider", "brave", "browserbase", "email" + ] + """ + The provider of the integration + """ + method: str | None = None + """ + The specific method of the integration to call + """ + setup: Any | None = None + """ + The setup parameters the integration accepts + """ + arguments: Any | None = None + """ + The arguments to pre-apply to the integration call + """ + + +class BaseIntegrationDefUpdate(BaseModel): + """ + Integration definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + provider: ( + Literal[ + "dummy", "weather", "wikipedia", "spider", "brave", "browserbase", "email" + ] + | None + ) = None + """ + The provider of the integration + """ + method: str | None = None + """ + The specific method of the integration to call + """ + setup: Any | None = None + """ + The setup parameters the integration accepts + """ + arguments: Any | None = None + """ + The arguments to pre-apply to the integration call + """ + + +class Bash20241022Def(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + type: Literal["bash_20241022"] = "bash_20241022" + name: str = "bash" + + +class Bash20241022DefUpdate(Bash20241022Def): + pass + + +class BraveIntegrationDef(BaseIntegrationDef): + """ + Brave integration definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + provider: Literal["brave"] = "brave" + """ + The provider must be "brave" + """ + method: str | None = None + """ + The specific method of the integration to call + """ + setup: BraveSearchSetup | None = None + """ + The setup parameters for Brave + """ + arguments: BraveSearchArguments | None = None + """ + The arguments for Brave Search + """ + + +class BraveIntegrationDefUpdate(BaseIntegrationDefUpdate): + """ + Brave integration definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + provider: Literal["brave"] = "brave" + """ + The provider must be "brave" + """ + method: str | None = None + """ + The specific method of the integration to call + """ + setup: BraveSearchSetupUpdate | None = None + """ + The setup parameters for Brave + """ + arguments: BraveSearchArgumentsUpdate | None = None + """ + The arguments for Brave Search + """ + + +class BraveSearchArguments(BaseModel): + """ + Arguments for Brave Search + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + query: str + """ + The search query for searching with Brave + """ + + +class BraveSearchArgumentsUpdate(BaseModel): + """ + Arguments for Brave Search + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + query: str | None = None + """ + The search query for searching with Brave + """ + + +class BraveSearchSetup(BaseModel): + """ + Integration definition for Brave Search + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + api_key: str + """ + The api key for Brave Search + """ + + +class BraveSearchSetupUpdate(BaseModel): + """ + Integration definition for Brave Search + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + api_key: str | None = None + """ + The api key for Brave Search + """ + + +class BrowserbaseCreateSessionArguments(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + project_id: Annotated[str, Field(alias="projectId")] + """ + The Project ID. Can be found in Settings. + """ + extension_id: Annotated[str | None, Field(alias="extensionId")] = None + """ + The uploaded Extension ID. See Upload Extension. + """ + browser_settings: Annotated[ + dict[str, Any] | None, Field(alias="browserSettings") + ] = None + """ + Browser settings + """ + timeout: int | None = None + """ + Duration in seconds after which the session will automatically end. Defaults to the Project's defaultTimeout. + """ + keep_alive: Annotated[StrictBool | None, Field(alias="keepAlive")] = None + """ + Set to true to keep the session alive even after disconnections. This is available on the Startup plan only. + """ + proxies: StrictBool | list[dict[str, Any]] | None = None + """ + Proxy configuration. Can be true for default proxy, or an array of proxy configurations. + """ + + +class BrowserbaseCreateSessionArgumentsUpdate(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + project_id: Annotated[str | None, Field(alias="projectId")] = None + """ + The Project ID. Can be found in Settings. + """ + extension_id: Annotated[str | None, Field(alias="extensionId")] = None + """ + The uploaded Extension ID. See Upload Extension. + """ + browser_settings: Annotated[ + dict[str, Any] | None, Field(alias="browserSettings") + ] = None + """ + Browser settings + """ + timeout: int | None = None + """ + Duration in seconds after which the session will automatically end. Defaults to the Project's defaultTimeout. + """ + keep_alive: Annotated[StrictBool | None, Field(alias="keepAlive")] = None + """ + Set to true to keep the session alive even after disconnections. This is available on the Startup plan only. + """ + proxies: StrictBool | list[dict[str, Any]] | None = None + """ + Proxy configuration. Can be true for default proxy, or an array of proxy configurations. + """ + + +class BrowserbaseGetSessionArguments(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + id: str + + +class BrowserbaseGetSessionArgumentsUpdate(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + id: str | None = None + + +class BrowserbaseGetSessionLiveUrlsArguments(BrowserbaseGetSessionArguments): + pass + + +class BrowserbaseGetSessionLiveUrlsArgumentsUpdate( + BrowserbaseGetSessionArgumentsUpdate +): + pass + + +class BrowserbaseListSessionsArguments(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + status: Literal["RUNNING", "ERROR", "TIMED_OUT", "COMPLETED"] | None = None + """ + The status of the sessions to list (Available options: RUNNING, ERROR, TIMED_OUT, COMPLETED) + """ + + +class BrowserbaseSetup(BaseModel): + """ + The setup parameters for the browserbase integration + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + api_key: str + """ + API key for the browserbase integration + """ + + +class BrowserbaseSetupUpdate(BaseModel): + """ + The setup parameters for the browserbase integration + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + api_key: str | None = None + """ + API key for the browserbase integration + """ + + +class BrowserbaseUpdateSessionArguments(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + id: str + status: Literal["REQUEST_RELEASE"] = "REQUEST_RELEASE" + + +class BrowserbaseUpdateSessionArgumentsUpdate(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + id: str | None = None + status: Literal["REQUEST_RELEASE"] | None = None + + +class ChosenBash20241022(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + command: str | None = None + """ + The bash command to run + """ + restart: StrictBool = False + """ + Whether to restart the tool + """ + + +class ChosenComputer20241022(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + action: Literal[ + "key", + "type", + "cursor_position", + "mouse_move", + "left_click", + "right_click", + "middle_click", + "double_click", + "screenshot", + ] + """ + The action to perform + """ + text: str | None = None + """ + The text to type + """ + coordinate: list[int] | None = None + """ + The (x, y) pixel coordinate to move the cursor to + """ + + +class ChosenFunctionCall(BaseChosenToolCall): + model_config = ConfigDict( + populate_by_name=True, + ) + type: Literal["function"] = "function" + function: FunctionCallOption + """ + The function to call + """ + + +class ChosenTextEditor20241022(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + command: Literal["str_replace", "insert", "view", "undo_edit"] + """ + The command to run + """ + path: str + """ + The path to the file + """ + file_text: str | None = None + """ + The content of the file to be created + """ + insert_line: int | None = None + """ + The line to insert the new string after + """ + new_str: str | None = None + """ + The new string to insert + """ + old_str: str | None = None + """ + The string in the file to replace + """ + view_range: list[int] | None = None + """ + The line range to view + """ + + +class Computer20241022Def(BaseModel): + """ + Anthropic new tools + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + type: Literal["computer_20241022"] = "computer_20241022" + name: str = "computer" + display_width_px: Annotated[int, Field(ge=600)] = 1024 + """ + The display width in pixels + """ + display_height_px: Annotated[int, Field(ge=400)] = 768 + """ + The display height in pixels + """ + display_number: Annotated[int, Field(ge=1, le=10)] = 1 + """ + The display number to use + """ + + +class Computer20241022DefUpdate(Computer20241022Def): + """ + Anthropic new tools + """ + + +class CreateToolRequest(BaseModel): + """ + Payload for creating a tool + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + name: Annotated[str, Field(max_length=40, pattern="^[^\\W0-9]\\w*$")] + """ + Name of the tool (must be unique for this agent and a valid python identifier string ) + """ + description: str | None = None + """ + Description of the tool + """ + function: FunctionDef | None = None + """ + The function to call + """ + integration: ( + DummyIntegrationDef + | BraveIntegrationDef + | EmailIntegrationDef + | SpiderIntegrationDef + | WikipediaIntegrationDef + | WeatherIntegrationDef + | BrowserbaseContextIntegrationDef + | BrowserbaseListSessionsIntegrationDef + | BrowserbaseCreateSessionIntegrationDef + | BrowserbaseGetSessionIntegrationDef + | BrowserbaseUpdateSessionIntegrationDef + | BrowserbaseGetSessionLiveUrlsIntegrationDef + | None + ) = None + """ + The integration to call + """ + system: SystemDef | None = None + """ + The system to call + """ + api_call: ApiCallDef | None = None + """ + The API call to make + """ + computer_20241022: Computer20241022Def | None = None + """ + (Alpha) Anthropic new tools + """ + text_editor_20241022: TextEditor20241022Def | None = None + bash_20241022: Bash20241022Def | None = None + + +class DummyIntegrationDef(BaseIntegrationDef): + model_config = ConfigDict( + populate_by_name=True, + ) + provider: Literal["dummy"] = "dummy" + + +class DummyIntegrationDefUpdate(BaseIntegrationDefUpdate): + model_config = ConfigDict( + populate_by_name=True, + ) + provider: Literal["dummy"] = "dummy" + + +class EmailArguments(BaseModel): + """ + Arguments for Email sending + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + to: str + """ + The email address to send the email to + """ + from_: Annotated[str, Field(alias="from")] + """ + The email address to send the email from + """ + subject: str + """ + The subject of the email + """ + body: str + """ + The body of the email + """ + + +class EmailArgumentsUpdate(BaseModel): + """ + Arguments for Email sending + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + to: str | None = None + """ + The email address to send the email to + """ + from_: Annotated[str | None, Field(alias="from")] = None + """ + The email address to send the email from + """ + subject: str | None = None + """ + The subject of the email + """ + body: str | None = None + """ + The body of the email + """ + + +class EmailIntegrationDef(BaseIntegrationDef): + """ + Email integration definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + provider: Literal["email"] = "email" + """ + The provider must be "email" + """ + method: str | None = None + """ + The specific method of the integration to call + """ + setup: EmailSetup | None = None + """ + The setup parameters for Email + """ + arguments: EmailArguments | None = None + """ + The arguments for Email sending + """ + + +class EmailIntegrationDefUpdate(BaseIntegrationDefUpdate): + """ + Email integration definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + provider: Literal["email"] = "email" + """ + The provider must be "email" + """ + method: str | None = None + """ + The specific method of the integration to call + """ + setup: EmailSetupUpdate | None = None + """ + The setup parameters for Email + """ + arguments: EmailArgumentsUpdate | None = None + """ + The arguments for Email sending + """ + + +class EmailSetup(BaseModel): + """ + Setup parameters for Email integration + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + host: str + """ + The host of the email server + """ + port: int + """ + The port of the email server + """ + user: str + """ + The username of the email server + """ + password: str + """ + The password of the email server + """ + + +class EmailSetupUpdate(BaseModel): + """ + Setup parameters for Email integration + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + host: str | None = None + """ + The host of the email server + """ + port: int | None = None + """ + The port of the email server + """ + user: str | None = None + """ + The username of the email server + """ + password: str | None = None + """ + The password of the email server + """ + + +class FunctionCallOption(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + name: str + """ + The name of the function + """ + + +class FunctionDef(BaseModel): + """ + Function definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + name: Any | None = None + """ + DO NOT USE: This will be overriden by the tool name. Here only for compatibility reasons. + """ + description: Any | None = None + """ + DO NOT USE: This will be overriden by the tool description. Here only for compatibility reasons. + """ + parameters: dict[str, Any] | None = None + """ + The parameters the function accepts + """ + + +class NamedToolChoice(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + function: FunctionCallOption | None = None + + +class PatchToolRequest(BaseModel): + """ + Payload for patching a tool + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + name: Annotated[str | None, Field(max_length=40, pattern="^[^\\W0-9]\\w*$")] = None + """ + Name of the tool (must be unique for this agent and a valid python identifier string ) + """ + description: str | None = None + """ + Description of the tool + """ + function: FunctionDef | None = None + """ + The function to call + """ + integration: ( + DummyIntegrationDefUpdate + | BraveIntegrationDefUpdate + | EmailIntegrationDefUpdate + | SpiderIntegrationDefUpdate + | WikipediaIntegrationDefUpdate + | WeatherIntegrationDefUpdate + | BrowserbaseContextIntegrationDefUpdate + | BrowserbaseListSessionsIntegrationDefUpdate + | BrowserbaseCreateSessionIntegrationDefUpdate + | BrowserbaseGetSessionIntegrationDefUpdate + | BrowserbaseUpdateSessionIntegrationDefUpdate + | BrowserbaseGetSessionLiveUrlsIntegrationDefUpdate + | None + ) = None + """ + The integration to call + """ + system: SystemDefUpdate | None = None + """ + The system to call + """ + api_call: ApiCallDefUpdate | None = None + """ + The API call to make + """ + computer_20241022: Computer20241022DefUpdate | None = None + """ + (Alpha) Anthropic new tools + """ + text_editor_20241022: TextEditor20241022DefUpdate | None = None + bash_20241022: Bash20241022DefUpdate | None = None + + +class SpiderFetchArguments(BaseModel): + """ + Arguments for Spider integration + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + url: AnyUrl + """ + The URL to fetch data from + """ + mode: Literal["scrape"] = "scrape" + """ + The type of crawler to use + """ + params: dict[str, Any] | None = None + """ + Additional parameters for the Spider API + """ + + +class SpiderFetchArgumentsUpdate(BaseModel): + """ + Arguments for Spider integration + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + url: AnyUrl | None = None + """ + The URL to fetch data from + """ + mode: Literal["scrape"] = "scrape" + """ + The type of crawler to use + """ + params: dict[str, Any] | None = None + """ + Additional parameters for the Spider API + """ + + +class SpiderIntegrationDef(BaseIntegrationDef): + """ + Spider integration definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + provider: Literal["spider"] = "spider" + """ + The provider must be "spider" + """ + method: str | None = None + """ + The specific method of the integration to call + """ + setup: SpiderSetup | None = None + """ + The setup parameters for Spider + """ + arguments: SpiderFetchArguments | None = None + """ + The arguments for Spider + """ + + +class SpiderIntegrationDefUpdate(BaseIntegrationDefUpdate): + """ + Spider integration definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + provider: Literal["spider"] = "spider" + """ + The provider must be "spider" + """ + method: str | None = None + """ + The specific method of the integration to call + """ + setup: SpiderSetupUpdate | None = None + """ + The setup parameters for Spider + """ + arguments: SpiderFetchArgumentsUpdate | None = None + """ + The arguments for Spider + """ + + +class SpiderSetup(BaseModel): + """ + Setup parameters for Spider integration + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + spider_api_key: str + """ + The API key for Spider + """ + + +class SpiderSetupUpdate(BaseModel): + """ + Setup parameters for Spider integration + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + spider_api_key: str | None = None + """ + The API key for Spider + """ + + +class SystemDef(BaseModel): + """ + System definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + resource: Literal["agent", "user", "task", "execution", "doc", "session", "job"] + """ + Resource is the name of the resource to use + """ + operation: Literal[ + "create", + "update", + "patch", + "create_or_update", + "embed", + "change_status", + "search", + "chat", + "history", + "delete", + "get", + "list", + ] + """ + Operation is the name of the operation to perform + """ + resource_id: UUID | None = None + """ + Resource id (if applicable) + """ + subresource: Literal["tool", "doc", "execution", "transition"] | None = None + """ + Sub-resource type (if applicable) + """ + arguments: dict[str, Any] | None = None + """ + The arguments to pre-apply to the system call + """ + + +class SystemDefUpdate(BaseModel): + """ + System definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + resource: ( + Literal["agent", "user", "task", "execution", "doc", "session", "job"] | None + ) = None + """ + Resource is the name of the resource to use + """ + operation: ( + Literal[ + "create", + "update", + "patch", + "create_or_update", + "embed", + "change_status", + "search", + "chat", + "history", + "delete", + "get", + "list", + ] + | None + ) = None + """ + Operation is the name of the operation to perform + """ + resource_id: UUID | None = None + """ + Resource id (if applicable) + """ + subresource: Literal["tool", "doc", "execution", "transition"] | None = None + """ + Sub-resource type (if applicable) + """ + arguments: dict[str, Any] | None = None + """ + The arguments to pre-apply to the system call + """ + + +class TextEditor20241022Def(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + type: Literal["text_editor_20241022"] = "text_editor_20241022" + name: str = "str_replace_editor" + + +class TextEditor20241022DefUpdate(TextEditor20241022Def): + pass + + +class Tool(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + name: Annotated[str, Field(max_length=40, pattern="^[^\\W0-9]\\w*$")] + """ + Name of the tool (must be unique for this agent and a valid python identifier string ) + """ + description: str | None = None + """ + Description of the tool + """ + function: FunctionDef | None = None + """ + The function to call + """ + integration: ( + DummyIntegrationDef + | BraveIntegrationDef + | EmailIntegrationDef + | SpiderIntegrationDef + | WikipediaIntegrationDef + | WeatherIntegrationDef + | BrowserbaseContextIntegrationDef + | BrowserbaseListSessionsIntegrationDef + | BrowserbaseCreateSessionIntegrationDef + | BrowserbaseGetSessionIntegrationDef + | BrowserbaseUpdateSessionIntegrationDef + | BrowserbaseGetSessionLiveUrlsIntegrationDef + | None + ) = None + """ + The integration to call + """ + system: SystemDef | None = None + """ + The system to call + """ + api_call: ApiCallDef | None = None + """ + The API call to make + """ + computer_20241022: Computer20241022Def | None = None + """ + (Alpha) Anthropic new tools + """ + text_editor_20241022: TextEditor20241022Def | None = None + bash_20241022: Bash20241022Def | None = None + created_at: Annotated[AwareDatetime, Field(json_schema_extra={"readOnly": True})] + """ + When this resource was created as UTC date-time + """ + updated_at: Annotated[AwareDatetime, Field(json_schema_extra={"readOnly": True})] + """ + When this resource was updated as UTC date-time + """ + id: Annotated[UUID, Field(json_schema_extra={"readOnly": True})] + + +class ToolResponse(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + id: UUID + output: dict[str, Any] + """ + The output of the tool + """ + + +class UpdateToolRequest(BaseModel): + """ + Payload for updating a tool + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + name: Annotated[str, Field(max_length=40, pattern="^[^\\W0-9]\\w*$")] + """ + Name of the tool (must be unique for this agent and a valid python identifier string ) + """ + description: str | None = None + """ + Description of the tool + """ + function: FunctionDef | None = None + """ + The function to call + """ + integration: ( + DummyIntegrationDef + | BraveIntegrationDef + | EmailIntegrationDef + | SpiderIntegrationDef + | WikipediaIntegrationDef + | WeatherIntegrationDef + | BrowserbaseContextIntegrationDef + | BrowserbaseListSessionsIntegrationDef + | BrowserbaseCreateSessionIntegrationDef + | BrowserbaseGetSessionIntegrationDef + | BrowserbaseUpdateSessionIntegrationDef + | BrowserbaseGetSessionLiveUrlsIntegrationDef + | None + ) = None + """ + The integration to call + """ + system: SystemDef | None = None + """ + The system to call + """ + api_call: ApiCallDef | None = None + """ + The API call to make + """ + computer_20241022: Computer20241022Def | None = None + """ + (Alpha) Anthropic new tools + """ + text_editor_20241022: TextEditor20241022Def | None = None + bash_20241022: Bash20241022Def | None = None + + +class WeatherGetArguments(BaseModel): + """ + Arguments for Weather + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + location: str + """ + The location for which to fetch weather data + """ + + +class WeatherGetArgumentsUpdate(BaseModel): + """ + Arguments for Weather + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + location: str | None = None + """ + The location for which to fetch weather data + """ + + +class WeatherIntegrationDef(BaseIntegrationDef): + """ + Weather integration definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + provider: Literal["weather"] = "weather" + """ + The provider must be "weather" + """ + method: str | None = None + """ + The specific method of the integration to call + """ + setup: WeatherSetup | None = None + """ + The setup parameters for Weather + """ + arguments: WeatherGetArguments | None = None + """ + The arguments for Weather + """ + + +class WeatherIntegrationDefUpdate(BaseIntegrationDefUpdate): + """ + Weather integration definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + provider: Literal["weather"] = "weather" + """ + The provider must be "weather" + """ + method: str | None = None + """ + The specific method of the integration to call + """ + setup: WeatherSetupUpdate | None = None + """ + The setup parameters for Weather + """ + arguments: WeatherGetArgumentsUpdate | None = None + """ + The arguments for Weather + """ + + +class WeatherSetup(BaseModel): + """ + Integration definition for Weather + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + openweathermap_api_key: str + """ + The api key for OpenWeatherMap + """ + + +class WeatherSetupUpdate(BaseModel): + """ + Integration definition for Weather + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + openweathermap_api_key: str | None = None + """ + The api key for OpenWeatherMap + """ + + +class WikipediaIntegrationDef(BaseIntegrationDef): + """ + Wikipedia integration definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + provider: Literal["wikipedia"] = "wikipedia" + """ + The provider must be "wikipedia" + """ + method: str | None = None + """ + The specific method of the integration to call + """ + setup: Any | None = None + """ + The setup parameters for Wikipedia + """ + arguments: WikipediaSearchArguments | None = None + """ + The arguments for Wikipedia Search + """ + + +class WikipediaIntegrationDefUpdate(BaseIntegrationDefUpdate): + """ + Wikipedia integration definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + provider: Literal["wikipedia"] = "wikipedia" + """ + The provider must be "wikipedia" + """ + method: str | None = None + """ + The specific method of the integration to call + """ + setup: Any | None = None + """ + The setup parameters for Wikipedia + """ + arguments: WikipediaSearchArgumentsUpdate | None = None + """ + The arguments for Wikipedia Search + """ + + +class WikipediaSearchArguments(BaseModel): + """ + Arguments for Wikipedia Search + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + query: str + """ + The search query string + """ + load_max_docs: Annotated[int, Field(ge=1, le=10)] = 2 + """ + Maximum number of documents to load + """ + + +class WikipediaSearchArgumentsUpdate(BaseModel): + """ + Arguments for Wikipedia Search + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + query: str | None = None + """ + The search query string + """ + load_max_docs: Annotated[int, Field(ge=1, le=10)] = 2 + """ + Maximum number of documents to load + """ + + +class BaseBrowserbaseIntegrationDef(BaseIntegrationDef): + """ + The base definition for a browserbase integration + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + provider: Literal["browserbase"] = "browserbase" + setup: BrowserbaseSetup | None = None + method: ( + Literal[ + "get_live_urls", + "list_sessions", + "create_session", + "get_session", + "update_session", + "create_context", + "upload_extension", + "get_extension", + "delete_extension", + "create_session_uploads", + "get_session_downloads", + "get_logs", + "get_recordings", + ] + | None + ) = None + arguments: Any | None = None + + +class BaseBrowserbaseIntegrationDefUpdate(BaseIntegrationDefUpdate): + """ + The base definition for a browserbase integration + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + provider: Literal["browserbase"] = "browserbase" + setup: BrowserbaseSetupUpdate | None = None + method: ( + Literal[ + "get_live_urls", + "list_sessions", + "create_session", + "get_session", + "update_session", + "create_context", + "upload_extension", + "get_extension", + "delete_extension", + "create_session_uploads", + "get_session_downloads", + "get_logs", + "get_recordings", + ] + | None + ) = None + arguments: Any | None = None + + +class BrowserbaseContextIntegrationDef(BaseBrowserbaseIntegrationDef): + """ + browserbase context provider + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + method: Literal["create_context"] = "create_context" + """ + The specific method of the integration to call + """ + arguments: Any | None = None + """ + The arguments for the method + """ + + +class BrowserbaseContextIntegrationDefUpdate(BaseBrowserbaseIntegrationDefUpdate): + """ + browserbase context provider + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + method: Literal["create_context"] = "create_context" + """ + The specific method of the integration to call + """ + arguments: Any | None = None + """ + The arguments for the method + """ + + +class BrowserbaseCreateSessionIntegrationDef(BaseBrowserbaseIntegrationDef): + """ + browserbase create session integration definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + method: Literal["create_session"] = "create_session" + arguments: BrowserbaseCreateSessionArguments + """ + The arguments for the method + """ + + +class BrowserbaseCreateSessionIntegrationDefUpdate(BaseBrowserbaseIntegrationDefUpdate): + """ + browserbase create session integration definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + method: Literal["create_session"] = "create_session" + arguments: BrowserbaseCreateSessionArgumentsUpdate | None = None + """ + The arguments for the method + """ + + +class BrowserbaseGetSessionIntegrationDef(BaseBrowserbaseIntegrationDef): + """ + browserbase get session integration definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + method: Literal["get_session"] = "get_session" + arguments: BrowserbaseGetSessionArguments + + +class BrowserbaseGetSessionIntegrationDefUpdate(BaseBrowserbaseIntegrationDefUpdate): + """ + browserbase get session integration definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + method: Literal["get_session"] = "get_session" + arguments: BrowserbaseGetSessionArgumentsUpdate | None = None + + +class BrowserbaseGetSessionLiveUrlsIntegrationDef(BaseBrowserbaseIntegrationDef): + """ + browserbase get session live urls integration definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + method: Literal["get_live_urls"] = "get_live_urls" + arguments: BrowserbaseGetSessionLiveUrlsArguments + + +class BrowserbaseGetSessionLiveUrlsIntegrationDefUpdate( + BaseBrowserbaseIntegrationDefUpdate +): + """ + browserbase get session live urls integration definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + method: Literal["get_live_urls"] = "get_live_urls" + arguments: BrowserbaseGetSessionLiveUrlsArgumentsUpdate | None = None + + +class BrowserbaseListSessionsIntegrationDef(BaseBrowserbaseIntegrationDef): + """ + browserbase list sessions integration definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + method: Literal["list_sessions"] = "list_sessions" + """ + The specific method of the integration to call + """ + arguments: BrowserbaseListSessionsArguments | None = None + """ + The arguments for the method + """ + + +class BrowserbaseListSessionsIntegrationDefUpdate(BaseBrowserbaseIntegrationDefUpdate): + """ + browserbase list sessions integration definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + method: Literal["list_sessions"] = "list_sessions" + """ + The specific method of the integration to call + """ + arguments: BrowserbaseListSessionsArguments | None = None + """ + The arguments for the method + """ + + +class BrowserbaseUpdateSessionIntegrationDef(BaseBrowserbaseIntegrationDef): + """ + browserbase update session integration definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + method: Literal["update_session"] = "update_session" + arguments: BrowserbaseUpdateSessionArguments + + +class BrowserbaseUpdateSessionIntegrationDefUpdate(BaseBrowserbaseIntegrationDefUpdate): + """ + browserbase update session integration definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + method: Literal["update_session"] = "update_session" + arguments: BrowserbaseUpdateSessionArgumentsUpdate | None = None diff --git a/integrations-service/integrations/autogen/Users.py b/integrations-service/integrations/autogen/Users.py new file mode 100644 index 000000000..720e21846 --- /dev/null +++ b/integrations-service/integrations/autogen/Users.py @@ -0,0 +1,121 @@ +# generated by datamodel-codegen: +# filename: openapi-1.0.0.yaml + +from __future__ import annotations + +from typing import Annotated, Any +from uuid import UUID + +from pydantic import AwareDatetime, BaseModel, ConfigDict, Field + + +class CreateUserRequest(BaseModel): + """ + Payload for creating a user (and associated documents) + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + metadata: dict[str, Any] | None = None + name: Annotated[ + str, + Field( + max_length=120, + pattern="^[\\p{L}\\p{Nl}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]+[\\p{ID_Start}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]*$", + ), + ] = "" + """ + Name of the user + """ + about: str = "" + """ + About the user + """ + + +class PatchUserRequest(BaseModel): + """ + Payload for patching a user + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + metadata: dict[str, Any] | None = None + name: Annotated[ + str, + Field( + max_length=120, + pattern="^[\\p{L}\\p{Nl}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]+[\\p{ID_Start}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]*$", + ), + ] = "" + """ + Name of the user + """ + about: str = "" + """ + About the user + """ + + +class UpdateUserRequest(BaseModel): + """ + Payload for updating a user + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + metadata: dict[str, Any] | None = None + name: Annotated[ + str, + Field( + max_length=120, + pattern="^[\\p{L}\\p{Nl}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]+[\\p{ID_Start}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]*$", + ), + ] = "" + """ + Name of the user + """ + about: str = "" + """ + About the user + """ + + +class User(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + id: Annotated[UUID, Field(json_schema_extra={"readOnly": True})] + metadata: dict[str, Any] | None = None + created_at: Annotated[AwareDatetime, Field(json_schema_extra={"readOnly": True})] + """ + When this resource was created as UTC date-time + """ + updated_at: Annotated[AwareDatetime, Field(json_schema_extra={"readOnly": True})] + """ + When this resource was updated as UTC date-time + """ + name: Annotated[ + str, + Field( + max_length=120, + pattern="^[\\p{L}\\p{Nl}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]+[\\p{ID_Start}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]*$", + ), + ] = "" + """ + Name of the user + """ + about: str = "" + """ + About the user + """ + + +class CreateOrUpdateUserRequest(CreateUserRequest): + model_config = ConfigDict( + populate_by_name=True, + ) + id: UUID diff --git a/integrations-service/integrations/autogen/__init__.py b/integrations-service/integrations/autogen/__init__.py new file mode 100644 index 000000000..3d9935180 --- /dev/null +++ b/integrations-service/integrations/autogen/__init__.py @@ -0,0 +1,2 @@ +# generated by datamodel-codegen: +# filename: openapi-1.0.0.yaml diff --git a/integrations-service/integrations/models/__init__.py b/integrations-service/integrations/models/__init__.py index 902a4a044..817f37554 100644 --- a/integrations-service/integrations/models/__init__.py +++ b/integrations-service/integrations/models/__init__.py @@ -1,19 +1,17 @@ from .base_models import ( - BaseArguments, - BaseOutput, - BaseProvider, - BaseProviderMethod, - BaseSetup, - ProviderInfo, + BaseOutput as BaseOutput, ) -from .brave import BraveSearchArguments, BraveSearchOutput, BraveSearchSetup -from .browserbase import ( - BrowserBaseLoadArguments, - BrowserBaseLoadOutput, - BrowserBaseSetup, +from .base_models import ( + BaseProvider as BaseProvider, +) +from .base_models import ( + BaseProviderMethod as BaseProviderMethod, +) +from .base_models import ( + ProviderInfo as ProviderInfo, ) -from .email import EmailArguments, EmailOutput, EmailSetup -from .hacker_news import HackerNewsFetchArguments, HackerNewsFetchOutput -from .spider import SpiderFetchArguments, SpiderFetchOutput, SpiderSetup -from .weather import WeatherGetArguments, WeatherGetOutput, WeatherSetup -from .wikipedia import WikipediaSearchArguments, WikipediaSearchOutput +from .brave import BraveSearchOutput as BraveSearchOutput +from .email import EmailOutput as EmailOutput +from .spider import SpiderFetchOutput as SpiderFetchOutput +from .weather import WeatherGetOutput as WeatherGetOutput +from .wikipedia import WikipediaSearchOutput as WikipediaSearchOutput diff --git a/integrations-service/integrations/models/base_models.py b/integrations-service/integrations/models/base_models.py index 55b614a2a..6d43f67b2 100644 --- a/integrations-service/integrations/models/base_models.py +++ b/integrations-service/integrations/models/base_models.py @@ -6,12 +6,6 @@ IdentifierName = Annotated[str, Field(max_length=40, pattern="^[^\\W0-9]\\w*$")] -class BaseSetup(BaseModel): ... - - -class BaseArguments(BaseModel): ... - - class BaseOutput(BaseModel): ... @@ -25,12 +19,12 @@ class ProviderInfo(BaseModel): class BaseProviderMethod(BaseModel): method: IdentifierName description: str - arguments: type[BaseArguments] + arguments: type[BaseModel] output: type[BaseOutput] class BaseProvider(BaseModel): provider: IdentifierName - setup: type[BaseSetup] | None + setup: type[BaseModel] | None methods: list[BaseProviderMethod] info: ProviderInfo diff --git a/integrations-service/integrations/models/brave.py b/integrations-service/integrations/models/brave.py index bbf3ca077..204fe709f 100644 --- a/integrations-service/integrations/models/brave.py +++ b/integrations-service/integrations/models/brave.py @@ -1,18 +1,6 @@ from pydantic import Field -from .base_models import ( - BaseArguments, - BaseOutput, - BaseSetup, -) - - -class BraveSearchSetup(BaseSetup): - api_key: str = Field(..., description="The api key for Brave Search") - - -class BraveSearchArguments(BaseArguments): - query: str = Field(..., description="The search query for searching with Brave") +from .base_models import BaseOutput class BraveSearchOutput(BaseOutput): diff --git a/integrations-service/integrations/models/browserbase.py b/integrations-service/integrations/models/browserbase.py deleted file mode 100644 index fdc585090..000000000 --- a/integrations-service/integrations/models/browserbase.py +++ /dev/null @@ -1,29 +0,0 @@ -from typing import List, Optional - -from langchain_core.documents import Document -from pydantic import Field -from pydantic_core import Url - -from .base_models import ( - BaseArguments, - BaseOutput, - BaseSetup, -) - - -class BrowserBaseSetup(BaseSetup): - api_key: str = Field(..., description="The api key for BrowserBase") - project_id: str = Field(..., description="The project id for BrowserBase") - session_id: Optional[str] = Field( - None, description="The session id for BrowserBase" - ) - - -class BrowserBaseLoadArguments(BaseArguments): - urls: List[Url] = Field(..., description="The urls for loading with BrowserBase") - - -class BrowserBaseLoadOutput(BaseOutput): - documents: List[Document] = Field( - ..., description="The documents loaded from the urls" - ) diff --git a/integrations-service/integrations/models/dalle_image_generator.py b/integrations-service/integrations/models/dalle_image_generator.py deleted file mode 100644 index 36a3e45b2..000000000 --- a/integrations-service/integrations/models/dalle_image_generator.py +++ /dev/null @@ -1,9 +0,0 @@ -from pydantic import BaseModel, Field - - -class DalleImageGeneratorSetup(BaseModel): - api_key: str = Field(str, description="The API key for DALL-E") - - -class DalleImageGeneratorArguments(BaseModel): - prompt: str = Field(str, description="The image generation prompt") diff --git a/integrations-service/integrations/models/duckduckgo_search.py b/integrations-service/integrations/models/duckduckgo_search.py deleted file mode 100644 index 109b58d22..000000000 --- a/integrations-service/integrations/models/duckduckgo_search.py +++ /dev/null @@ -1,5 +0,0 @@ -from pydantic import BaseModel, Field - - -class DuckDuckGoSearchExecutionArguments(BaseModel): - query: str = Field(..., description="The search query string") diff --git a/integrations-service/integrations/models/email.py b/integrations-service/integrations/models/email.py index 11943968d..a53b00eff 100644 --- a/integrations-service/integrations/models/email.py +++ b/integrations-service/integrations/models/email.py @@ -1,26 +1,6 @@ -from pydantic import EmailStr, Field +from pydantic import Field -from .base_models import ( - BaseArguments, - BaseOutput, - BaseSetup, -) - - -class EmailSetup(BaseSetup): - host: str = Field(..., description="The host of the email server") - port: int = Field(..., description="The port of the email server") - user: str = Field(..., description="The username of the email server") - password: str = Field(..., description="The password of the email server") - - -class EmailArguments(BaseArguments): - to: EmailStr = Field(..., description="The email address to send the email to") - from_: EmailStr = Field( - ..., alias="from", description="The email address to send the email from" - ) - subject: str = Field(..., description="The subject of the email") - body: str = Field(..., description="The body of the email") +from .base_models import BaseOutput class EmailOutput(BaseOutput): diff --git a/integrations-service/integrations/models/execution.py b/integrations-service/integrations/models/execution.py index db1ef801f..72b897734 100644 --- a/integrations-service/integrations/models/execution.py +++ b/integrations-service/integrations/models/execution.py @@ -2,44 +2,44 @@ from pydantic import BaseModel -from .brave import BraveSearchArguments, BraveSearchOutput, BraveSearchSetup -from .browserbase import ( - BrowserBaseLoadArguments, - BrowserBaseLoadOutput, - BrowserBaseSetup, +from ..autogen.Tools import ( + BraveSearchArguments, + BraveSearchSetup, + EmailArguments, + EmailSetup, + SpiderFetchArguments, + SpiderSetup, + WeatherGetArguments, + WeatherSetup, + WikipediaSearchArguments, ) -from .email import EmailArguments, EmailOutput, EmailSetup -from .hacker_news import HackerNewsFetchArguments, HackerNewsFetchOutput -from .spider import SpiderFetchArguments, SpiderFetchOutput, SpiderSetup -from .weather import WeatherGetArguments, WeatherGetOutput, WeatherSetup -from .wikipedia import WikipediaSearchArguments, WikipediaSearchOutput +from .brave import BraveSearchOutput +from .email import EmailOutput +from .spider import SpiderFetchOutput +from .weather import WeatherGetOutput +from .wikipedia import WikipediaSearchOutput ExecutionSetup = Union[ EmailSetup, SpiderSetup, WeatherSetup, BraveSearchSetup, - BrowserBaseSetup, ] ExecutionArguments = Union[ SpiderFetchArguments, WeatherGetArguments, EmailArguments, - HackerNewsFetchArguments, WikipediaSearchArguments, BraveSearchArguments, - BrowserBaseLoadArguments, ] ExecutionResponse = Union[ SpiderFetchOutput, WeatherGetOutput, EmailOutput, - HackerNewsFetchOutput, WikipediaSearchOutput, BraveSearchOutput, - BrowserBaseLoadOutput, ] diff --git a/integrations-service/integrations/models/hacker_news.py b/integrations-service/integrations/models/hacker_news.py deleted file mode 100644 index 1d0b92a23..000000000 --- a/integrations-service/integrations/models/hacker_news.py +++ /dev/null @@ -1,15 +0,0 @@ -from langchain_core.documents import Document -from pydantic import Field -from pydantic_core import Url - -from .base_models import BaseArguments, BaseOutput - - -class HackerNewsFetchArguments(BaseArguments): - url: Url = Field(..., description="The URL of the Hacker News thread to fetch") - - -class HackerNewsFetchOutput(BaseOutput): - documents: list[Document] = Field( - ..., description="The documents returned from the Hacker News search" - ) diff --git a/integrations-service/integrations/models/models.py b/integrations-service/integrations/models/models.py index 84eb1417a..8d0119e53 100644 --- a/integrations-service/integrations/models/models.py +++ b/integrations-service/integrations/models/models.py @@ -1,40 +1,7 @@ -from typing import Literal, Union +from typing import Literal from pydantic import BaseModel -from .dalle_image_generator import ( - DalleImageGeneratorArguments, - DalleImageGeneratorSetup, -) -from .duckduckgo_search import DuckDuckGoSearchExecutionArguments -from .hacker_news import HackerNewsExecutionArguments -from .weather import WeatherExecutionArguments, WeatherExecutionSetup -from .wikipedia import WikipediaExecutionArguments - -ExecuteIntegrationArguments = Union[ - WikipediaExecutionArguments, - DuckDuckGoSearchExecutionArguments, - DalleImageGeneratorArguments, - WeatherExecutionArguments, - HackerNewsExecutionArguments, -] - -ExecuteIntegrationSetup = Union[ - DalleImageGeneratorSetup, - WeatherExecutionSetup, -] - - -class IntegrationExecutionRequest(BaseModel): - setup: ExecuteIntegrationSetup | None = None - """ - The setup parameters the integration accepts (such as API keys) - """ - arguments: ExecuteIntegrationArguments - """ - The arguments to pass to the integration - """ - class IntegrationExecutionResponse(BaseModel): result: str @@ -47,9 +14,6 @@ class IntegrationDef(BaseModel): provider: ( Literal[ "dummy", - "dalle_image_generator", - "duckduckgo_search", - "hacker_news", "weather", "wikipedia", "twitter", diff --git a/integrations-service/integrations/models/request.py b/integrations-service/integrations/models/request.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/integrations-service/integrations/models/spider.py b/integrations-service/integrations/models/spider.py index d72eba656..989e8411f 100644 --- a/integrations-service/integrations/models/spider.py +++ b/integrations-service/integrations/models/spider.py @@ -1,18 +1,7 @@ from langchain_core.documents import Document from pydantic import Field -from pydantic_core import Url -from .base_models import BaseArguments, BaseOutput, BaseSetup - - -class SpiderSetup(BaseSetup): - spider_api_key: str = Field(..., description="The request for which to fetch data") - - -class SpiderFetchArguments(BaseArguments): - url: Url = Field(..., description="The url for which to fetch data") - mode: str = Field("scrape", description="The type of crawlers") - params: dict | None = Field(None, description="The parameters for the Spider API") +from .base_models import BaseOutput class SpiderFetchOutput(BaseOutput): diff --git a/integrations-service/integrations/models/weather.py b/integrations-service/integrations/models/weather.py index 47cd0d8e3..1204d45b8 100644 --- a/integrations-service/integrations/models/weather.py +++ b/integrations-service/integrations/models/weather.py @@ -1,22 +1,6 @@ from pydantic import Field -from .base_models import ( - BaseArguments, - BaseOutput, - BaseSetup, -) - - -class WeatherSetup(BaseSetup): - openweathermap_api_key: str = Field( - ..., description="The api key for OpenWeatherMap" - ) - - -class WeatherGetArguments(BaseArguments): - location: str = Field( - ..., description="The location for which to fetch weather data" - ) +from .base_models import BaseOutput class WeatherGetOutput(BaseOutput): diff --git a/integrations-service/integrations/models/wikipedia.py b/integrations-service/integrations/models/wikipedia.py index 36a2108ce..ee5f600f2 100644 --- a/integrations-service/integrations/models/wikipedia.py +++ b/integrations-service/integrations/models/wikipedia.py @@ -1,15 +1,7 @@ from langchain_core.documents import Document from pydantic import Field -from .base_models import ( - BaseArguments, - BaseOutput, -) - - -class WikipediaSearchArguments(BaseArguments): - query: str = Field(..., description="The search query string") - load_max_docs: int = Field(2, description="Maximum number of documents to load") +from .base_models import BaseOutput class WikipediaSearchOutput(BaseOutput): diff --git a/integrations-service/integrations/providers.py b/integrations-service/integrations/providers.py index 76ede47af..c595bae86 100644 --- a/integrations-service/integrations/providers.py +++ b/integrations-service/integrations/providers.py @@ -1,23 +1,23 @@ -from .models import ( - BaseProvider, - BaseProviderMethod, +from .autogen.Tools import ( BraveSearchArguments, - BraveSearchOutput, BraveSearchSetup, - BrowserBaseLoadArguments, - BrowserBaseLoadOutput, - BrowserBaseSetup, EmailArguments, - EmailOutput, EmailSetup, - ProviderInfo, SpiderFetchArguments, - SpiderFetchOutput, SpiderSetup, WeatherGetArguments, - WeatherGetOutput, WeatherSetup, WikipediaSearchArguments, + # WikipediaSearchSetup, +) +from .models import ( + BaseProvider, + BaseProviderMethod, + BraveSearchOutput, + EmailOutput, + ProviderInfo, + SpiderFetchOutput, + WeatherGetOutput, WikipediaSearchOutput, ) @@ -97,25 +97,6 @@ ), ) -browserbase = BaseProvider( - provider="browserbase", - setup=BrowserBaseSetup, - methods=[ - BaseProviderMethod( - method="load", - description="Load documents from the provided urls", - arguments=BrowserBaseLoadArguments, - output=BrowserBaseLoadOutput, - ), - ], - info=ProviderInfo( - url="https://browserbase.com/", - docs="https://browserbase.com/docs/", - icon="https://browserbase.com/favicon.ico", - friendly_name="BrowserBase", - ), -) - email = BaseProvider( provider="email", setup=EmailSetup, @@ -132,11 +113,10 @@ ), ) -providers = { +available_providers: dict[str, BaseProvider] = { "wikipedia": wikipedia, "weather": weather, "spider": spider, "brave": brave, - "browserbase": browserbase, "email": email, } diff --git a/integrations-service/integrations/routers/__init__.py b/integrations-service/integrations/routers/__init__.py index f1be65754..e69de29bb 100644 --- a/integrations-service/integrations/routers/__init__.py +++ b/integrations-service/integrations/routers/__init__.py @@ -1,2 +0,0 @@ -from .execution.router import router as execution_router -from .integrations.router import router as integrations_router diff --git a/integrations-service/integrations/routers/execution/__init__.py b/integrations-service/integrations/routers/execution/__init__.py index ef8e79dda..f659e6cea 100644 --- a/integrations-service/integrations/routers/execution/__init__.py +++ b/integrations-service/integrations/routers/execution/__init__.py @@ -1 +1 @@ -from .execute import execute +from .execute import execute as execute diff --git a/integrations-service/integrations/routers/execution/execute.py b/integrations-service/integrations/routers/execution/execute.py index 3097c6c99..83b5fd242 100644 --- a/integrations-service/integrations/routers/execution/execute.py +++ b/integrations-service/integrations/routers/execution/execute.py @@ -7,7 +7,7 @@ @router.post("/execute/{provider}", tags=["execution"]) -async def execute( +async def execute_default( provider: IdentifierName, data: ExecutionRequest, ) -> ExecutionResponse: diff --git a/integrations-service/integrations/routers/integrations/__init__.py b/integrations-service/integrations/routers/integrations/__init__.py index 26eac0aaf..88f77f93e 100644 --- a/integrations-service/integrations/routers/integrations/__init__.py +++ b/integrations-service/integrations/routers/integrations/__init__.py @@ -1,3 +1,3 @@ -from .get_integration import get_integration -from .get_integration_tool import get_integration_tool -from .get_integrations import get_integrations +from .get_integration import get_integration as get_integration +from .get_integration_tool import get_integration_tool as get_integration_tool +from .get_integrations import get_integrations as get_integrations diff --git a/integrations-service/integrations/routers/integrations/get_integration.py b/integrations-service/integrations/routers/integrations/get_integration.py index 7b45c8190..f8c4cda4a 100644 --- a/integrations-service/integrations/routers/integrations/get_integration.py +++ b/integrations-service/integrations/routers/integrations/get_integration.py @@ -1,10 +1,17 @@ -from ...providers import providers +from fastapi import HTTPException + +from ... import providers as available_providers +from ...models.base_models import BaseProvider from .router import router @router.get("/integrations/{provider}", tags=["integration"]) async def get_integration(provider: str) -> dict: - integration = providers[provider] + integration: BaseProvider | None = getattr(available_providers, provider, None) + + if integration is None: + raise HTTPException(status_code=404, detail="Integration not found") + return { "provider": integration.provider, "setup": integration.setup.model_json_schema() if integration.setup else None, diff --git a/integrations-service/integrations/routers/integrations/get_integration_tool.py b/integrations-service/integrations/routers/integrations/get_integration_tool.py index 42e3c1bc8..c689be322 100644 --- a/integrations-service/integrations/routers/integrations/get_integration_tool.py +++ b/integrations-service/integrations/routers/integrations/get_integration_tool.py @@ -27,18 +27,18 @@ def convert_to_openai_tool( @router.get("/integrations/{provider}/tool", tags=["integration_tool"]) @router.get("/integrations/{provider}/{method}/tool", tags=["integration_tool"]) async def get_integration_tool(provider: str, method: Optional[str] = None): - from ...providers import providers + from ...providers import available_providers - provider: BaseProvider | None = providers.get(provider, None) + provider_obj: BaseProvider | None = available_providers.get(provider, None) - if not provider: + if not provider_obj: raise HTTPException(status_code=404, detail="Integration not found") if method: - for m in provider.methods: + for m in provider_obj.methods: if m.method == method: - return convert_to_openai_tool(provider, m) + return convert_to_openai_tool(provider_obj, m) else: - return convert_to_openai_tool(provider) + return convert_to_openai_tool(provider_obj) raise HTTPException(status_code=404, detail="Integration not found") diff --git a/integrations-service/integrations/routers/integrations/get_integrations.py b/integrations-service/integrations/routers/integrations/get_integrations.py index b3b3530c7..25169700b 100644 --- a/integrations-service/integrations/routers/integrations/get_integrations.py +++ b/integrations-service/integrations/routers/integrations/get_integrations.py @@ -1,6 +1,7 @@ from typing import List -from ...providers import providers +from ...models.base_models import BaseProvider +from ...providers import available_providers from .router import router @@ -26,6 +27,6 @@ async def get_integrations() -> List[dict]: "friendly_name": p.info.friendly_name, }, } - for p in providers.values() + for p in available_providers.values() ] return integrations diff --git a/integrations-service/integrations/utils/execute_integration.py b/integrations-service/integrations/utils/execute_integration.py index f1dd1965a..2270a1f68 100644 --- a/integrations-service/integrations/utils/execute_integration.py +++ b/integrations-service/integrations/utils/execute_integration.py @@ -1,42 +1,62 @@ import importlib +from beartype import beartype +from fastapi import HTTPException + +from .. import providers as available_providers +from ..autogen.Tools import BaseIntegrationDef from ..models.base_models import BaseProvider, IdentifierName from ..models.execution import ExecutionArguments, ExecutionResponse, ExecutionSetup -from ..providers import providers +@beartype async def execute_integration( + *, provider: IdentifierName, - arguments: ExecutionArguments, method: IdentifierName | None = None, setup: ExecutionSetup | None = None, + arguments: ExecutionArguments, ) -> ExecutionResponse: - if provider not in providers: - raise ValueError(f"Unknown provider: {provider}") - provider: BaseProvider = providers[provider] + provider_obj: BaseProvider | None = getattr(available_providers, provider, None) + + if not provider_obj: + raise HTTPException(status_code=400, detail=f"Unknown provider: {provider}") + + assert isinstance(provider_obj, BaseProvider) + if method is None: - method = provider.methods[0].method - if method not in [method.method for method in provider.methods]: - raise ValueError(f"Unknown method: {method} for provider: {provider}") + method = provider_obj.methods[0].method + + elif method not in [method.method for method in provider_obj.methods]: + raise HTTPException( + status_code=400, detail=f"Unknown method: {method} for provider: {provider}" + ) provider_module = importlib.import_module( - f"integrations.utils.integrations.{provider.provider}", package="integrations" + f"integrations.utils.integrations.{provider_obj.provider}", + package="integrations", ) + execution_function = getattr(provider_module, method) - if setup: - setup_class = provider.setup + setup_obj = setup + + if setup is not None: + setup_class = provider_obj.setup + if setup_class and not isinstance(setup, setup_class): - setup = setup_class(**setup.model_dump()) + setup_obj = setup_class(**setup.model_dump()) - arguments_class = next(m for m in provider.methods if m.method == method).arguments + arguments_class = next( + m for m in provider_obj.methods if m.method == method + ).arguments if not isinstance(arguments, arguments_class): parsed_arguments = arguments_class(**arguments.model_dump()) else: parsed_arguments = arguments - if setup: - return await execution_function(setup=setup, arguments=parsed_arguments) + if setup_obj: + return await execution_function(setup=setup_obj, arguments=parsed_arguments) else: return execution_function(arguments=parsed_arguments) diff --git a/integrations-service/integrations/utils/integrations/__init__.py b/integrations-service/integrations/utils/integrations/__init__.py index ce5ed0e83..e69de29bb 100644 --- a/integrations-service/integrations/utils/integrations/__init__.py +++ b/integrations-service/integrations/utils/integrations/__init__.py @@ -1,6 +0,0 @@ -from .brave import search -from .browserbase import load -from .email import send -from .spider import crawl -from .weather import get -from .wikipedia import search diff --git a/integrations-service/integrations/utils/integrations/brave.py b/integrations-service/integrations/utils/integrations/brave.py index 3723f80d7..eb7473abf 100644 --- a/integrations-service/integrations/utils/integrations/brave.py +++ b/integrations-service/integrations/utils/integrations/brave.py @@ -1,9 +1,12 @@ +from beartype import beartype from langchain_community.tools import BraveSearch from tenacity import retry, stop_after_attempt, wait_exponential -from ...models import BraveSearchArguments, BraveSearchOutput, BraveSearchSetup +from ...autogen.Tools import BraveSearchArguments, BraveSearchSetup +from ...models import BraveSearchOutput +@beartype @retry( wait=wait_exponential(multiplier=1, min=4, max=10), reraise=True, diff --git a/integrations-service/integrations/utils/integrations/browserbase.py b/integrations-service/integrations/utils/integrations/browserbase.py deleted file mode 100644 index 87e7c8cac..000000000 --- a/integrations-service/integrations/utils/integrations/browserbase.py +++ /dev/null @@ -1,33 +0,0 @@ -from langchain_community.document_loaders import BrowserbaseLoader -from tenacity import retry, stop_after_attempt, wait_exponential - -from ...models import BrowserBaseLoadArguments, BrowserBaseLoadOutput, BrowserBaseSetup - - -@retry( - wait=wait_exponential(multiplier=1, min=4, max=10), - reraise=True, - stop=stop_after_attempt(3), -) -async def load( - setup: BrowserBaseSetup, arguments: BrowserBaseLoadArguments -) -> BrowserBaseLoadOutput: - """ - Loads documents from the provided urls using BrowserBase. - """ - - assert isinstance(setup, BrowserBaseSetup), "Invalid setup" - assert isinstance(arguments, BrowserBaseLoadArguments), "Invalid arguments" - - urls = [str(url) for url in arguments.urls] - - loader = BrowserbaseLoader( - api_key=setup.api_key, - project_id=setup.project_id, - session_id=setup.session_id, - urls=urls, - text_content=False, - ) - - documents = loader.load() - return BrowserBaseLoadOutput(documents=documents) diff --git a/integrations-service/integrations/utils/integrations/email.py b/integrations-service/integrations/utils/integrations/email.py index 5913beb73..c38030128 100644 --- a/integrations-service/integrations/utils/integrations/email.py +++ b/integrations-service/integrations/utils/integrations/email.py @@ -1,11 +1,14 @@ from email.message import EmailMessage from smtplib import SMTP +from beartype import beartype from tenacity import retry, stop_after_attempt, wait_exponential -from ...models import EmailArguments, EmailOutput, EmailSetup +from ...autogen.Tools import EmailArguments, EmailSetup +from ...models import EmailOutput +@beartype @retry( wait=wait_exponential(multiplier=1, min=4, max=10), reraise=True, diff --git a/integrations-service/integrations/utils/integrations/spider.py b/integrations-service/integrations/utils/integrations/spider.py index 7ff06a46d..a75fb90c9 100644 --- a/integrations-service/integrations/utils/integrations/spider.py +++ b/integrations-service/integrations/utils/integrations/spider.py @@ -1,9 +1,12 @@ +from beartype import beartype from langchain_community.document_loaders import SpiderLoader from tenacity import retry, stop_after_attempt, wait_exponential -from ...models import SpiderFetchArguments, SpiderFetchOutput, SpiderSetup +from ...autogen.Tools import SpiderFetchArguments, SpiderSetup +from ...models import SpiderFetchOutput +@beartype @retry( wait=wait_exponential(multiplier=1, min=4, max=10), reraise=True, diff --git a/integrations-service/integrations/utils/integrations/weather.py b/integrations-service/integrations/utils/integrations/weather.py index 0266aca4b..33e36ec2b 100644 --- a/integrations-service/integrations/utils/integrations/weather.py +++ b/integrations-service/integrations/utils/integrations/weather.py @@ -1,9 +1,12 @@ +from beartype import beartype from langchain_community.utilities import OpenWeatherMapAPIWrapper from tenacity import retry, stop_after_attempt, wait_exponential -from ...models import WeatherGetArguments, WeatherGetOutput, WeatherSetup +from ...autogen.Tools import WeatherGetArguments, WeatherSetup +from ...models import WeatherGetOutput +@beartype @retry( wait=wait_exponential(multiplier=1, min=4, max=10), reraise=True, diff --git a/integrations-service/integrations/utils/integrations/wikipedia.py b/integrations-service/integrations/utils/integrations/wikipedia.py index d4b212d7b..a5925556c 100644 --- a/integrations-service/integrations/utils/integrations/wikipedia.py +++ b/integrations-service/integrations/utils/integrations/wikipedia.py @@ -1,9 +1,12 @@ +from beartype import beartype from langchain_community.document_loaders import WikipediaLoader from tenacity import retry, stop_after_attempt, wait_exponential -from ...models import WikipediaSearchArguments, WikipediaSearchOutput +from ...autogen.Tools import WikipediaSearchArguments +from ...models import WikipediaSearchOutput +@beartype @retry( wait=wait_exponential(multiplier=1, min=4, max=10), reraise=True, diff --git a/integrations-service/integrations/web.py b/integrations-service/integrations/web.py index 1c4d4c506..41a26dbdc 100644 --- a/integrations-service/integrations/web.py +++ b/integrations-service/integrations/web.py @@ -1,15 +1,15 @@ +import asyncio import logging from typing import Any, Callable -import fire import uvicorn +import uvloop from fastapi import FastAPI, Request, status from fastapi.exceptions import HTTPException, RequestValidationError from fastapi.responses import JSONResponse -import uvloop -from .routers import execution_router, integrations_router -import asyncio +from .routers.execution.router import router as execution_router +from .routers.integrations.router import router as integrations_router app: FastAPI = FastAPI() diff --git a/integrations-service/poetry.lock b/integrations-service/poetry.lock index d1c68d91c..f510bb906 100644 --- a/integrations-service/poetry.lock +++ b/integrations-service/poetry.lock @@ -13,102 +13,102 @@ files = [ [[package]] name = "aiohttp" -version = "3.10.9" +version = "3.10.10" description = "Async http client/server framework (asyncio)" optional = false python-versions = ">=3.8" files = [ - {file = "aiohttp-3.10.9-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8b3fb28a9ac8f2558760d8e637dbf27aef1e8b7f1d221e8669a1074d1a266bb2"}, - {file = "aiohttp-3.10.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:91aa966858593f64c8a65cdefa3d6dc8fe3c2768b159da84c1ddbbb2c01ab4ef"}, - {file = "aiohttp-3.10.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:63649309da83277f06a15bbdc2a54fbe75efb92caa2c25bb57ca37762789c746"}, - {file = "aiohttp-3.10.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3e7fabedb3fe06933f47f1538df7b3a8d78e13d7167195f51ca47ee12690373"}, - {file = "aiohttp-3.10.9-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5c070430fda1a550a1c3a4c2d7281d3b8cfc0c6715f616e40e3332201a253067"}, - {file = "aiohttp-3.10.9-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:51d0a4901b27272ae54e42067bc4b9a90e619a690b4dc43ea5950eb3070afc32"}, - {file = "aiohttp-3.10.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fec5fac7aea6c060f317f07494961236434928e6f4374e170ef50b3001e14581"}, - {file = "aiohttp-3.10.9-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:172ad884bb61ad31ed7beed8be776eb17e7fb423f1c1be836d5cb357a096bf12"}, - {file = "aiohttp-3.10.9-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d646fdd74c25bbdd4a055414f0fe32896c400f38ffbdfc78c68e62812a9e0257"}, - {file = "aiohttp-3.10.9-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e86260b76786c28acf0b5fe31c8dca4c2add95098c709b11e8c35b424ebd4f5b"}, - {file = "aiohttp-3.10.9-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:c7d7cafc11d70fdd8801abfc2ff276744ae4cb39d8060b6b542c7e44e5f2cfc2"}, - {file = "aiohttp-3.10.9-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:fc262c3df78c8ff6020c782d9ce02e4bcffe4900ad71c0ecdad59943cba54442"}, - {file = "aiohttp-3.10.9-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:482c85cf3d429844396d939b22bc2a03849cb9ad33344689ad1c85697bcba33a"}, - {file = "aiohttp-3.10.9-cp310-cp310-win32.whl", hash = "sha256:aeebd3061f6f1747c011e1d0b0b5f04f9f54ad1a2ca183e687e7277bef2e0da2"}, - {file = "aiohttp-3.10.9-cp310-cp310-win_amd64.whl", hash = "sha256:fa430b871220dc62572cef9c69b41e0d70fcb9d486a4a207a5de4c1f25d82593"}, - {file = "aiohttp-3.10.9-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:16e6a51d8bc96b77f04a6764b4ad03eeef43baa32014fce71e882bd71302c7e4"}, - {file = "aiohttp-3.10.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8bd9125dd0cc8ebd84bff2be64b10fdba7dc6fd7be431b5eaf67723557de3a31"}, - {file = "aiohttp-3.10.9-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dcf354661f54e6a49193d0b5653a1b011ba856e0b7a76bda2c33e4c6892f34ea"}, - {file = "aiohttp-3.10.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42775de0ca04f90c10c5c46291535ec08e9bcc4756f1b48f02a0657febe89b10"}, - {file = "aiohttp-3.10.9-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:87d1e4185c5d7187684d41ebb50c9aeaaaa06ca1875f4c57593071b0409d2444"}, - {file = "aiohttp-3.10.9-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2695c61cf53a5d4345a43d689f37fc0f6d3a2dc520660aec27ec0f06288d1f9"}, - {file = "aiohttp-3.10.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a3f063b41cc06e8d0b3fcbbfc9c05b7420f41287e0cd4f75ce0a1f3d80729e6"}, - {file = "aiohttp-3.10.9-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2d37f4718002863b82c6f391c8efd4d3a817da37030a29e2682a94d2716209de"}, - {file = "aiohttp-3.10.9-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2746d8994ebca1bdc55a1e998feff4e94222da709623bb18f6e5cfec8ec01baf"}, - {file = "aiohttp-3.10.9-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:6f3c6648aa123bcd73d6f26607d59967b607b0da8ffcc27d418a4b59f4c98c7c"}, - {file = "aiohttp-3.10.9-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:558b3d223fd631ad134d89adea876e7fdb4c93c849ef195049c063ada82b7d08"}, - {file = "aiohttp-3.10.9-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:4e6cb75f8ddd9c2132d00bc03c9716add57f4beff1263463724f6398b813e7eb"}, - {file = "aiohttp-3.10.9-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:608cecd8d58d285bfd52dbca5b6251ca8d6ea567022c8a0eaae03c2589cd9af9"}, - {file = "aiohttp-3.10.9-cp311-cp311-win32.whl", hash = "sha256:36d4fba838be5f083f5490ddd281813b44d69685db910907636bc5dca6322316"}, - {file = "aiohttp-3.10.9-cp311-cp311-win_amd64.whl", hash = "sha256:8be1a65487bdfc285bd5e9baf3208c2132ca92a9b4020e9f27df1b16fab998a9"}, - {file = "aiohttp-3.10.9-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:4fd16b30567c5b8e167923be6e027eeae0f20cf2b8a26b98a25115f28ad48ee0"}, - {file = "aiohttp-3.10.9-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:40ff5b7660f903dc587ed36ef08a88d46840182d9d4b5694e7607877ced698a1"}, - {file = "aiohttp-3.10.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4edc3fd701e2b9a0d605a7b23d3de4ad23137d23fc0dbab726aa71d92f11aaaf"}, - {file = "aiohttp-3.10.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e525b69ee8a92c146ae5b4da9ecd15e518df4d40003b01b454ad694a27f498b5"}, - {file = "aiohttp-3.10.9-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5002a02c17fcfd796d20bac719981d2fca9c006aac0797eb8f430a58e9d12431"}, - {file = "aiohttp-3.10.9-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fd4ceeae2fb8cabdd1b71c82bfdd39662473d3433ec95b962200e9e752fb70d0"}, - {file = "aiohttp-3.10.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6e395c3d1f773cf0651cd3559e25182eb0c03a2777b53b4575d8adc1149c6e9"}, - {file = "aiohttp-3.10.9-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bbdb8def5268f3f9cd753a265756f49228a20ed14a480d151df727808b4531dd"}, - {file = "aiohttp-3.10.9-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f82ace0ec57c94aaf5b0e118d4366cff5889097412c75aa14b4fd5fc0c44ee3e"}, - {file = "aiohttp-3.10.9-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:6ebdc3b3714afe1b134b3bbeb5f745eed3ecbcff92ab25d80e4ef299e83a5465"}, - {file = "aiohttp-3.10.9-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:f9ca09414003c0e96a735daa1f071f7d7ed06962ef4fa29ceb6c80d06696d900"}, - {file = "aiohttp-3.10.9-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:1298b854fd31d0567cbb916091be9d3278168064fca88e70b8468875ef9ff7e7"}, - {file = "aiohttp-3.10.9-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:60ad5b8a7452c0f5645c73d4dad7490afd6119d453d302cd5b72b678a85d6044"}, - {file = "aiohttp-3.10.9-cp312-cp312-win32.whl", hash = "sha256:1a0ee6c0d590c917f1b9629371fce5f3d3f22c317aa96fbdcce3260754d7ea21"}, - {file = "aiohttp-3.10.9-cp312-cp312-win_amd64.whl", hash = "sha256:c46131c6112b534b178d4e002abe450a0a29840b61413ac25243f1291613806a"}, - {file = "aiohttp-3.10.9-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:2bd9f3eac515c16c4360a6a00c38119333901b8590fe93c3257a9b536026594d"}, - {file = "aiohttp-3.10.9-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8cc0d13b4e3b1362d424ce3f4e8c79e1f7247a00d792823ffd640878abf28e56"}, - {file = "aiohttp-3.10.9-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ba1a599255ad6a41022e261e31bc2f6f9355a419575b391f9655c4d9e5df5ff5"}, - {file = "aiohttp-3.10.9-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:776e9f3c9b377fcf097c4a04b241b15691e6662d850168642ff976780609303c"}, - {file = "aiohttp-3.10.9-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8debb45545ad95b58cc16c3c1cc19ad82cffcb106db12b437885dbee265f0ab5"}, - {file = "aiohttp-3.10.9-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2555e4949c8d8782f18ef20e9d39730d2656e218a6f1a21a4c4c0b56546a02e"}, - {file = "aiohttp-3.10.9-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c54dc329cd44f7f7883a9f4baaefe686e8b9662e2c6c184ea15cceee587d8d69"}, - {file = "aiohttp-3.10.9-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e709d6ac598c5416f879bb1bae3fd751366120ac3fa235a01de763537385d036"}, - {file = "aiohttp-3.10.9-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:17c272cfe7b07a5bb0c6ad3f234e0c336fb53f3bf17840f66bd77b5815ab3d16"}, - {file = "aiohttp-3.10.9-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:0c21c82df33b264216abffff9f8370f303dab65d8eee3767efbbd2734363f677"}, - {file = "aiohttp-3.10.9-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:9331dd34145ff105177855017920dde140b447049cd62bb589de320fd6ddd582"}, - {file = "aiohttp-3.10.9-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:ac3196952c673822ebed8871cf8802e17254fff2a2ed4835d9c045d9b88c5ec7"}, - {file = "aiohttp-3.10.9-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:2c33fa6e10bb7ed262e3ff03cc69d52869514f16558db0626a7c5c61dde3c29f"}, - {file = "aiohttp-3.10.9-cp313-cp313-win32.whl", hash = "sha256:a14e4b672c257a6b94fe934ee62666bacbc8e45b7876f9dd9502d0f0fe69db16"}, - {file = "aiohttp-3.10.9-cp313-cp313-win_amd64.whl", hash = "sha256:a35ed3d03910785f7d9d6f5381f0c24002b2b888b298e6f941b2fc94c5055fcd"}, - {file = "aiohttp-3.10.9-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5f392ef50e22c31fa49b5a46af7f983fa3f118f3eccb8522063bee8bfa6755f8"}, - {file = "aiohttp-3.10.9-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d1f5c9169e26db6a61276008582d945405b8316aae2bb198220466e68114a0f5"}, - {file = "aiohttp-3.10.9-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8d9d10d10ec27c0d46ddaecc3c5598c4db9ce4e6398ca872cdde0525765caa2f"}, - {file = "aiohttp-3.10.9-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d97273a52d7f89a75b11ec386f786d3da7723d7efae3034b4dda79f6f093edc1"}, - {file = "aiohttp-3.10.9-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d271f770b52e32236d945911b2082f9318e90ff835d45224fa9e28374303f729"}, - {file = "aiohttp-3.10.9-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7003f33f5f7da1eb02f0446b0f8d2ccf57d253ca6c2e7a5732d25889da82b517"}, - {file = "aiohttp-3.10.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6e00c8a92e7663ed2be6fcc08a2997ff06ce73c8080cd0df10cc0321a3168d7"}, - {file = "aiohttp-3.10.9-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a61df62966ce6507aafab24e124e0c3a1cfbe23c59732987fc0fd0d71daa0b88"}, - {file = "aiohttp-3.10.9-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:60555211a006d26e1a389222e3fab8cd379f28e0fbf7472ee55b16c6c529e3a6"}, - {file = "aiohttp-3.10.9-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:d15a29424e96fad56dc2f3abed10a89c50c099f97d2416520c7a543e8fddf066"}, - {file = "aiohttp-3.10.9-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:a19caae0d670771ea7854ca30df76f676eb47e0fd9b2ee4392d44708f272122d"}, - {file = "aiohttp-3.10.9-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:99f9678bf0e2b1b695e8028fedac24ab6770937932eda695815d5a6618c37e04"}, - {file = "aiohttp-3.10.9-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:2914caa46054f3b5ff910468d686742ff8cff54b8a67319d75f5d5945fd0a13d"}, - {file = "aiohttp-3.10.9-cp38-cp38-win32.whl", hash = "sha256:0bc059ecbce835630e635879f5f480a742e130d9821fbe3d2f76610a6698ee25"}, - {file = "aiohttp-3.10.9-cp38-cp38-win_amd64.whl", hash = "sha256:e883b61b75ca6efc2541fcd52a5c8ccfe288b24d97e20ac08fdf343b8ac672ea"}, - {file = "aiohttp-3.10.9-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:fcd546782d03181b0b1d20b43d612429a90a68779659ba8045114b867971ab71"}, - {file = "aiohttp-3.10.9-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:85711eec2d875cd88c7eb40e734c4ca6d9ae477d6f26bd2b5bb4f7f60e41b156"}, - {file = "aiohttp-3.10.9-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:02d1d6610588bcd743fae827bd6f2e47e0d09b346f230824b4c6fb85c6065f9c"}, - {file = "aiohttp-3.10.9-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3668d0c2a4d23fb136a753eba42caa2c0abbd3d9c5c87ee150a716a16c6deec1"}, - {file = "aiohttp-3.10.9-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d7c071235a47d407b0e93aa6262b49422dbe48d7d8566e1158fecc91043dd948"}, - {file = "aiohttp-3.10.9-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ac74e794e3aee92ae8f571bfeaa103a141e409863a100ab63a253b1c53b707eb"}, - {file = "aiohttp-3.10.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bbf94d4a0447705b7775417ca8bb8086cc5482023a6e17cdc8f96d0b1b5aba6"}, - {file = "aiohttp-3.10.9-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cb0b2d5d51f96b6cc19e6ab46a7b684be23240426ae951dcdac9639ab111b45e"}, - {file = "aiohttp-3.10.9-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:e83dfefb4f7d285c2d6a07a22268344a97d61579b3e0dce482a5be0251d672ab"}, - {file = "aiohttp-3.10.9-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:f0a44bb40b6aaa4fb9a5c1ee07880570ecda2065433a96ccff409c9c20c1624a"}, - {file = "aiohttp-3.10.9-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:c2b627d3c8982691b06d89d31093cee158c30629fdfebe705a91814d49b554f8"}, - {file = "aiohttp-3.10.9-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:03690541e4cc866eef79626cfa1ef4dd729c5c1408600c8cb9e12e1137eed6ab"}, - {file = "aiohttp-3.10.9-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ad3675c126f2a95bde637d162f8231cff6bc0bc9fbe31bd78075f9ff7921e322"}, - {file = "aiohttp-3.10.9-cp39-cp39-win32.whl", hash = "sha256:1321658f12b6caffafdc35cfba6c882cb014af86bef4e78c125e7e794dfb927b"}, - {file = "aiohttp-3.10.9-cp39-cp39-win_amd64.whl", hash = "sha256:9fdf5c839bf95fc67be5794c780419edb0dbef776edcfc6c2e5e2ffd5ee755fa"}, - {file = "aiohttp-3.10.9.tar.gz", hash = "sha256:143b0026a9dab07a05ad2dd9e46aa859bffdd6348ddc5967b42161168c24f857"}, + {file = "aiohttp-3.10.10-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:be7443669ae9c016b71f402e43208e13ddf00912f47f623ee5994e12fc7d4b3f"}, + {file = "aiohttp-3.10.10-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7b06b7843929e41a94ea09eb1ce3927865387e3e23ebe108e0d0d09b08d25be9"}, + {file = "aiohttp-3.10.10-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:333cf6cf8e65f6a1e06e9eb3e643a0c515bb850d470902274239fea02033e9a8"}, + {file = "aiohttp-3.10.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:274cfa632350225ce3fdeb318c23b4a10ec25c0e2c880eff951a3842cf358ac1"}, + {file = "aiohttp-3.10.10-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9e5e4a85bdb56d224f412d9c98ae4cbd032cc4f3161818f692cd81766eee65a"}, + {file = "aiohttp-3.10.10-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2b606353da03edcc71130b52388d25f9a30a126e04caef1fd637e31683033abd"}, + {file = "aiohttp-3.10.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab5a5a0c7a7991d90446a198689c0535be89bbd6b410a1f9a66688f0880ec026"}, + {file = "aiohttp-3.10.10-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:578a4b875af3e0daaf1ac6fa983d93e0bbfec3ead753b6d6f33d467100cdc67b"}, + {file = "aiohttp-3.10.10-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8105fd8a890df77b76dd3054cddf01a879fc13e8af576805d667e0fa0224c35d"}, + {file = "aiohttp-3.10.10-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3bcd391d083f636c06a68715e69467963d1f9600f85ef556ea82e9ef25f043f7"}, + {file = "aiohttp-3.10.10-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fbc6264158392bad9df19537e872d476f7c57adf718944cc1e4495cbabf38e2a"}, + {file = "aiohttp-3.10.10-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:e48d5021a84d341bcaf95c8460b152cfbad770d28e5fe14a768988c461b821bc"}, + {file = "aiohttp-3.10.10-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:2609e9ab08474702cc67b7702dbb8a80e392c54613ebe80db7e8dbdb79837c68"}, + {file = "aiohttp-3.10.10-cp310-cp310-win32.whl", hash = "sha256:84afcdea18eda514c25bc68b9af2a2b1adea7c08899175a51fe7c4fb6d551257"}, + {file = "aiohttp-3.10.10-cp310-cp310-win_amd64.whl", hash = "sha256:9c72109213eb9d3874f7ac8c0c5fa90e072d678e117d9061c06e30c85b4cf0e6"}, + {file = "aiohttp-3.10.10-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c30a0eafc89d28e7f959281b58198a9fa5e99405f716c0289b7892ca345fe45f"}, + {file = "aiohttp-3.10.10-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:258c5dd01afc10015866114e210fb7365f0d02d9d059c3c3415382ab633fcbcb"}, + {file = "aiohttp-3.10.10-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:15ecd889a709b0080f02721255b3f80bb261c2293d3c748151274dfea93ac871"}, + {file = "aiohttp-3.10.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3935f82f6f4a3820270842e90456ebad3af15810cf65932bd24da4463bc0a4c"}, + {file = "aiohttp-3.10.10-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:413251f6fcf552a33c981c4709a6bba37b12710982fec8e558ae944bfb2abd38"}, + {file = "aiohttp-3.10.10-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d1720b4f14c78a3089562b8875b53e36b51c97c51adc53325a69b79b4b48ebcb"}, + {file = "aiohttp-3.10.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:679abe5d3858b33c2cf74faec299fda60ea9de62916e8b67e625d65bf069a3b7"}, + {file = "aiohttp-3.10.10-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:79019094f87c9fb44f8d769e41dbb664d6e8fcfd62f665ccce36762deaa0e911"}, + {file = "aiohttp-3.10.10-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:fe2fb38c2ed905a2582948e2de560675e9dfbee94c6d5ccdb1301c6d0a5bf092"}, + {file = "aiohttp-3.10.10-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:a3f00003de6eba42d6e94fabb4125600d6e484846dbf90ea8e48a800430cc142"}, + {file = "aiohttp-3.10.10-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:1bbb122c557a16fafc10354b9d99ebf2f2808a660d78202f10ba9d50786384b9"}, + {file = "aiohttp-3.10.10-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:30ca7c3b94708a9d7ae76ff281b2f47d8eaf2579cd05971b5dc681db8caac6e1"}, + {file = "aiohttp-3.10.10-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:df9270660711670e68803107d55c2b5949c2e0f2e4896da176e1ecfc068b974a"}, + {file = "aiohttp-3.10.10-cp311-cp311-win32.whl", hash = "sha256:aafc8ee9b742ce75044ae9a4d3e60e3d918d15a4c2e08a6c3c3e38fa59b92d94"}, + {file = "aiohttp-3.10.10-cp311-cp311-win_amd64.whl", hash = "sha256:362f641f9071e5f3ee6f8e7d37d5ed0d95aae656adf4ef578313ee585b585959"}, + {file = "aiohttp-3.10.10-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:9294bbb581f92770e6ed5c19559e1e99255e4ca604a22c5c6397b2f9dd3ee42c"}, + {file = "aiohttp-3.10.10-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a8fa23fe62c436ccf23ff930149c047f060c7126eae3ccea005f0483f27b2e28"}, + {file = "aiohttp-3.10.10-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5c6a5b8c7926ba5d8545c7dd22961a107526562da31a7a32fa2456baf040939f"}, + {file = "aiohttp-3.10.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:007ec22fbc573e5eb2fb7dec4198ef8f6bf2fe4ce20020798b2eb5d0abda6138"}, + {file = "aiohttp-3.10.10-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9627cc1a10c8c409b5822a92d57a77f383b554463d1884008e051c32ab1b3742"}, + {file = "aiohttp-3.10.10-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:50edbcad60d8f0e3eccc68da67f37268b5144ecc34d59f27a02f9611c1d4eec7"}, + {file = "aiohttp-3.10.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a45d85cf20b5e0d0aa5a8dca27cce8eddef3292bc29d72dcad1641f4ed50aa16"}, + {file = "aiohttp-3.10.10-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0b00807e2605f16e1e198f33a53ce3c4523114059b0c09c337209ae55e3823a8"}, + {file = "aiohttp-3.10.10-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f2d4324a98062be0525d16f768a03e0bbb3b9fe301ceee99611dc9a7953124e6"}, + {file = "aiohttp-3.10.10-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:438cd072f75bb6612f2aca29f8bd7cdf6e35e8f160bc312e49fbecab77c99e3a"}, + {file = "aiohttp-3.10.10-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:baa42524a82f75303f714108fea528ccacf0386af429b69fff141ffef1c534f9"}, + {file = "aiohttp-3.10.10-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:a7d8d14fe962153fc681f6366bdec33d4356f98a3e3567782aac1b6e0e40109a"}, + {file = "aiohttp-3.10.10-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c1277cd707c465cd09572a774559a3cc7c7a28802eb3a2a9472588f062097205"}, + {file = "aiohttp-3.10.10-cp312-cp312-win32.whl", hash = "sha256:59bb3c54aa420521dc4ce3cc2c3fe2ad82adf7b09403fa1f48ae45c0cbde6628"}, + {file = "aiohttp-3.10.10-cp312-cp312-win_amd64.whl", hash = "sha256:0e1b370d8007c4ae31ee6db7f9a2fe801a42b146cec80a86766e7ad5c4a259cf"}, + {file = "aiohttp-3.10.10-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ad7593bb24b2ab09e65e8a1d385606f0f47c65b5a2ae6c551db67d6653e78c28"}, + {file = "aiohttp-3.10.10-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1eb89d3d29adaf533588f209768a9c02e44e4baf832b08118749c5fad191781d"}, + {file = "aiohttp-3.10.10-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3fe407bf93533a6fa82dece0e74dbcaaf5d684e5a51862887f9eaebe6372cd79"}, + {file = "aiohttp-3.10.10-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50aed5155f819873d23520919e16703fc8925e509abbb1a1491b0087d1cd969e"}, + {file = "aiohttp-3.10.10-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4f05e9727ce409358baa615dbeb9b969db94324a79b5a5cea45d39bdb01d82e6"}, + {file = "aiohttp-3.10.10-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dffb610a30d643983aeb185ce134f97f290f8935f0abccdd32c77bed9388b42"}, + {file = "aiohttp-3.10.10-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa6658732517ddabe22c9036479eabce6036655ba87a0224c612e1ae6af2087e"}, + {file = "aiohttp-3.10.10-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:741a46d58677d8c733175d7e5aa618d277cd9d880301a380fd296975a9cdd7bc"}, + {file = "aiohttp-3.10.10-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e00e3505cd80440f6c98c6d69269dcc2a119f86ad0a9fd70bccc59504bebd68a"}, + {file = "aiohttp-3.10.10-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ffe595f10566f8276b76dc3a11ae4bb7eba1aac8ddd75811736a15b0d5311414"}, + {file = "aiohttp-3.10.10-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:bdfcf6443637c148c4e1a20c48c566aa694fa5e288d34b20fcdc58507882fed3"}, + {file = "aiohttp-3.10.10-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:d183cf9c797a5291e8301790ed6d053480ed94070637bfaad914dd38b0981f67"}, + {file = "aiohttp-3.10.10-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:77abf6665ae54000b98b3c742bc6ea1d1fb31c394bcabf8b5d2c1ac3ebfe7f3b"}, + {file = "aiohttp-3.10.10-cp313-cp313-win32.whl", hash = "sha256:4470c73c12cd9109db8277287d11f9dd98f77fc54155fc71a7738a83ffcc8ea8"}, + {file = "aiohttp-3.10.10-cp313-cp313-win_amd64.whl", hash = "sha256:486f7aabfa292719a2753c016cc3a8f8172965cabb3ea2e7f7436c7f5a22a151"}, + {file = "aiohttp-3.10.10-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:1b66ccafef7336a1e1f0e389901f60c1d920102315a56df85e49552308fc0486"}, + {file = "aiohttp-3.10.10-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:acd48d5b80ee80f9432a165c0ac8cbf9253eaddb6113269a5e18699b33958dbb"}, + {file = "aiohttp-3.10.10-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3455522392fb15ff549d92fbf4b73b559d5e43dc522588f7eb3e54c3f38beee7"}, + {file = "aiohttp-3.10.10-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45c3b868724137f713a38376fef8120c166d1eadd50da1855c112fe97954aed8"}, + {file = "aiohttp-3.10.10-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:da1dee8948d2137bb51fbb8a53cce6b1bcc86003c6b42565f008438b806cccd8"}, + {file = "aiohttp-3.10.10-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c5ce2ce7c997e1971b7184ee37deb6ea9922ef5163c6ee5aa3c274b05f9e12fa"}, + {file = "aiohttp-3.10.10-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28529e08fde6f12eba8677f5a8608500ed33c086f974de68cc65ab218713a59d"}, + {file = "aiohttp-3.10.10-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f7db54c7914cc99d901d93a34704833568d86c20925b2762f9fa779f9cd2e70f"}, + {file = "aiohttp-3.10.10-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:03a42ac7895406220124c88911ebee31ba8b2d24c98507f4a8bf826b2937c7f2"}, + {file = "aiohttp-3.10.10-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:7e338c0523d024fad378b376a79faff37fafb3c001872a618cde1d322400a572"}, + {file = "aiohttp-3.10.10-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:038f514fe39e235e9fef6717fbf944057bfa24f9b3db9ee551a7ecf584b5b480"}, + {file = "aiohttp-3.10.10-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:64f6c17757251e2b8d885d728b6433d9d970573586a78b78ba8929b0f41d045a"}, + {file = "aiohttp-3.10.10-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:93429602396f3383a797a2a70e5f1de5df8e35535d7806c9f91df06f297e109b"}, + {file = "aiohttp-3.10.10-cp38-cp38-win32.whl", hash = "sha256:c823bc3971c44ab93e611ab1a46b1eafeae474c0c844aff4b7474287b75fe49c"}, + {file = "aiohttp-3.10.10-cp38-cp38-win_amd64.whl", hash = "sha256:54ca74df1be3c7ca1cf7f4c971c79c2daf48d9aa65dea1a662ae18926f5bc8ce"}, + {file = "aiohttp-3.10.10-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:01948b1d570f83ee7bbf5a60ea2375a89dfb09fd419170e7f5af029510033d24"}, + {file = "aiohttp-3.10.10-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9fc1500fd2a952c5c8e3b29aaf7e3cc6e27e9cfc0a8819b3bce48cc1b849e4cc"}, + {file = "aiohttp-3.10.10-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f614ab0c76397661b90b6851a030004dac502e48260ea10f2441abd2207fbcc7"}, + {file = "aiohttp-3.10.10-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:00819de9e45d42584bed046314c40ea7e9aea95411b38971082cad449392b08c"}, + {file = "aiohttp-3.10.10-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05646ebe6b94cc93407b3bf34b9eb26c20722384d068eb7339de802154d61bc5"}, + {file = "aiohttp-3.10.10-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:998f3bd3cfc95e9424a6acd7840cbdd39e45bc09ef87533c006f94ac47296090"}, + {file = "aiohttp-3.10.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d9010c31cd6fa59438da4e58a7f19e4753f7f264300cd152e7f90d4602449762"}, + {file = "aiohttp-3.10.10-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7ea7ffc6d6d6f8a11e6f40091a1040995cdff02cfc9ba4c2f30a516cb2633554"}, + {file = "aiohttp-3.10.10-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:ef9c33cc5cbca35808f6c74be11eb7f5f6b14d2311be84a15b594bd3e58b5527"}, + {file = "aiohttp-3.10.10-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ce0cdc074d540265bfeb31336e678b4e37316849d13b308607efa527e981f5c2"}, + {file = "aiohttp-3.10.10-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:597a079284b7ee65ee102bc3a6ea226a37d2b96d0418cc9047490f231dc09fe8"}, + {file = "aiohttp-3.10.10-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:7789050d9e5d0c309c706953e5e8876e38662d57d45f936902e176d19f1c58ab"}, + {file = "aiohttp-3.10.10-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e7f8b04d83483577fd9200461b057c9f14ced334dcb053090cea1da9c8321a91"}, + {file = "aiohttp-3.10.10-cp39-cp39-win32.whl", hash = "sha256:c02a30b904282777d872266b87b20ed8cc0d1501855e27f831320f471d54d983"}, + {file = "aiohttp-3.10.10-cp39-cp39-win_amd64.whl", hash = "sha256:edfe3341033a6b53a5c522c802deb2079eee5cbfbb0af032a55064bd65c73a23"}, + {file = "aiohttp-3.10.10.tar.gz", hash = "sha256:0631dd7c9f0822cc61c88586ca76d5b5ada26538097d0f1df510b082bad3411a"}, ] [package.dependencies] @@ -149,13 +149,13 @@ files = [ [[package]] name = "anyio" -version = "4.6.0" +version = "4.6.2.post1" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false python-versions = ">=3.9" files = [ - {file = "anyio-4.6.0-py3-none-any.whl", hash = "sha256:c7d2e9d63e31599eeb636c8c5c03a7e108d73b345f064f1c19fdc87b79036a9a"}, - {file = "anyio-4.6.0.tar.gz", hash = "sha256:137b4559cbb034c477165047febb6ff83f390fc3b20bf181c1fc0a728cb8beeb"}, + {file = "anyio-4.6.2.post1-py3-none-any.whl", hash = "sha256:6d170c36fba3bdd840c73d3868c1e777e33676a69c3a72cf0a0d5d6d8009b61d"}, + {file = "anyio-4.6.2.post1.tar.gz", hash = "sha256:4c8bc31ccdb51c7f7bd251f51c609e038d63e34219b44aa86e47576389880b4c"}, ] [package.dependencies] @@ -164,9 +164,23 @@ sniffio = ">=1.1" [package.extras] doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.21.0b1)"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21.0b1)"] trio = ["trio (>=0.26.1)"] +[[package]] +name = "argcomplete" +version = "3.5.1" +description = "Bash tab completion for argparse" +optional = false +python-versions = ">=3.8" +files = [ + {file = "argcomplete-3.5.1-py3-none-any.whl", hash = "sha256:1a1d148bdaa3e3b93454900163403df41448a248af01b6e849edc5ac08e6c363"}, + {file = "argcomplete-3.5.1.tar.gz", hash = "sha256:eb1ee355aa2557bd3d0145de7b06b2a45b0ce461e1e7813f5d066039ab4177b4"}, +] + +[package.extras] +test = ["coverage", "mypy", "pexpect", "ruff", "wheel"] + [[package]] name = "atomicwrites" version = "1.4.1" @@ -235,15 +249,59 @@ charset-normalizer = ["charset-normalizer"] html5lib = ["html5lib"] lxml = ["lxml"] +[[package]] +name = "black" +version = "24.10.0" +description = "The uncompromising code formatter." +optional = false +python-versions = ">=3.9" +files = [ + {file = "black-24.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e6668650ea4b685440857138e5fe40cde4d652633b1bdffc62933d0db4ed9812"}, + {file = "black-24.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1c536fcf674217e87b8cc3657b81809d3c085d7bf3ef262ead700da345bfa6ea"}, + {file = "black-24.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:649fff99a20bd06c6f727d2a27f401331dc0cc861fb69cde910fe95b01b5928f"}, + {file = "black-24.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:fe4d6476887de70546212c99ac9bd803d90b42fc4767f058a0baa895013fbb3e"}, + {file = "black-24.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5a2221696a8224e335c28816a9d331a6c2ae15a2ee34ec857dcf3e45dbfa99ad"}, + {file = "black-24.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f9da3333530dbcecc1be13e69c250ed8dfa67f43c4005fb537bb426e19200d50"}, + {file = "black-24.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4007b1393d902b48b36958a216c20c4482f601569d19ed1df294a496eb366392"}, + {file = "black-24.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:394d4ddc64782e51153eadcaaca95144ac4c35e27ef9b0a42e121ae7e57a9175"}, + {file = "black-24.10.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b5e39e0fae001df40f95bd8cc36b9165c5e2ea88900167bddf258bacef9bbdc3"}, + {file = "black-24.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d37d422772111794b26757c5b55a3eade028aa3fde43121ab7b673d050949d65"}, + {file = "black-24.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:14b3502784f09ce2443830e3133dacf2c0110d45191ed470ecb04d0f5f6fcb0f"}, + {file = "black-24.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:30d2c30dc5139211dda799758559d1b049f7f14c580c409d6ad925b74a4208a8"}, + {file = "black-24.10.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1cbacacb19e922a1d75ef2b6ccaefcd6e93a2c05ede32f06a21386a04cedb981"}, + {file = "black-24.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1f93102e0c5bb3907451063e08b9876dbeac810e7da5a8bfb7aeb5a9ef89066b"}, + {file = "black-24.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ddacb691cdcdf77b96f549cf9591701d8db36b2f19519373d60d31746068dbf2"}, + {file = "black-24.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:680359d932801c76d2e9c9068d05c6b107f2584b2a5b88831c83962eb9984c1b"}, + {file = "black-24.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:17374989640fbca88b6a448129cd1745c5eb8d9547b464f281b251dd00155ccd"}, + {file = "black-24.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:63f626344343083322233f175aaf372d326de8436f5928c042639a4afbbf1d3f"}, + {file = "black-24.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfa1d0cb6200857f1923b602f978386a3a2758a65b52e0950299ea014be6800"}, + {file = "black-24.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:2cd9c95431d94adc56600710f8813ee27eea544dd118d45896bb734e9d7a0dc7"}, + {file = "black-24.10.0-py3-none-any.whl", hash = "sha256:3bb2b7a1f7b685f85b11fed1ef10f8a9148bceb49853e47a294a3dd963c1dd7d"}, + {file = "black-24.10.0.tar.gz", hash = "sha256:846ea64c97afe3bc677b761787993be4991810ecc7a4a937816dd6bddedc4875"}, +] + +[package.dependencies] +click = ">=8.0.0" +mypy-extensions = ">=0.4.3" +packaging = ">=22.0" +pathspec = ">=0.9.0" +platformdirs = ">=2" + +[package.extras] +colorama = ["colorama (>=0.4.3)"] +d = ["aiohttp (>=3.10)"] +jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] +uvloop = ["uvloop (>=0.15.2)"] + [[package]] name = "browserbase" -version = "0.3.0" +version = "0.3.3" description = "Browserbase Python SDK" optional = false python-versions = ">=3.8" files = [ - {file = "browserbase-0.3.0-py3-none-any.whl", hash = "sha256:16fe6f0b1fc55aca050bbabf76cd17d83ee1a798d9bba274b09421ca120b5ec3"}, - {file = "browserbase-0.3.0.tar.gz", hash = "sha256:2ec31641fab0a9ec3b2f23ed0244f01e3b35423806c1c6665d68706133958b07"}, + {file = "browserbase-0.3.3-py3-none-any.whl", hash = "sha256:116fe68b191023eccb7dbc33e59afda1e9c7741cd523fe57b9118ebfcac7b21a"}, + {file = "browserbase-0.3.3.tar.gz", hash = "sha256:29cbf1a1efcd51429fcb7f1e56bdd253772a52c5451d765a77e27157e7e742a4"}, ] [package.dependencies] @@ -264,101 +322,116 @@ files = [ [[package]] name = "charset-normalizer" -version = "3.3.2" +version = "3.4.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7.0" files = [ - {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, - {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4f9fc98dad6c2eaa32fc3af1417d95b5e3d08aff968df0cd320066def971f9a6"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0de7b687289d3c1b3e8660d0741874abe7888100efe14bd0f9fd7141bcbda92b"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5ed2e36c3e9b4f21dd9422f6893dec0abf2cca553af509b10cd630f878d3eb99"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d3ff7fc90b98c637bda91c89d51264a3dcf210cade3a2c6f838c7268d7a4ca"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1110e22af8ca26b90bd6364fe4c763329b0ebf1ee213ba32b68c73de5752323d"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:86f4e8cca779080f66ff4f191a685ced73d2f72d50216f7112185dc02b90b9b7"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f683ddc7eedd742e2889d2bfb96d69573fde1d92fcb811979cdb7165bb9c7d3"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27623ba66c183eca01bf9ff833875b459cad267aeeb044477fedac35e19ba907"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f606a1881d2663630ea5b8ce2efe2111740df4b687bd78b34a8131baa007f79b"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0b309d1747110feb25d7ed6b01afdec269c647d382c857ef4663bbe6ad95a912"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:136815f06a3ae311fae551c3df1f998a1ebd01ddd424aa5603a4336997629e95"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:14215b71a762336254351b00ec720a8e85cada43b987da5a042e4ce3e82bd68e"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:79983512b108e4a164b9c8d34de3992f76d48cadc9554c9e60b43f308988aabe"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-win32.whl", hash = "sha256:c94057af19bc953643a33581844649a7fdab902624d2eb739738a30e2b3e60fc"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:55f56e2ebd4e3bc50442fbc0888c9d8c94e4e06a933804e2af3e89e2f9c1c749"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce031db0408e487fd2775d745ce30a7cd2923667cf3b69d48d219f1d8f5ddeb6"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82357d85de703176b5587dbe6ade8ff67f9f69a41c0733cf2425378b49954de5"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8ce7fd6767a1cc5a92a639b391891bf1c268b03ec7e021c7d6d902285259685c"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f1a2f519ae173b5b6a2c9d5fa3116ce16e48b3462c8b96dfdded11055e3d6365"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-win32.whl", hash = "sha256:9ae4ef0b3f6b41bad6366fb0ea4fc1d7ed051528e113a60fa2a65a9abb5b1d99"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0713f3adb9d03d49d365b70b84775d0a0d18e4ab08d12bc46baa6132ba78aaf6"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:de7376c29d95d6719048c194a9cf1a1b0393fbe8488a22008610b0361d834ecf"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a51b48f42d9358460b78725283f04bddaf44a9358197b889657deba38f329db"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b295729485b06c1a0683af02a9e42d2caa9db04a373dc38a6a58cdd1e8abddf1"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ee803480535c44e7f5ad00788526da7d85525cfefaf8acf8ab9a310000be4b03"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d59d125ffbd6d552765510e3f31ed75ebac2c7470c7274195b9161a32350284"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cda06946eac330cbe6598f77bb54e690b4ca93f593dee1568ad22b04f347c15"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07afec21bbbbf8a5cc3651aa96b980afe2526e7f048fdfb7f1014d84acc8b6d8"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6b40e8d38afe634559e398cc32b1472f376a4099c75fe6299ae607e404c033b2"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b8dcd239c743aa2f9c22ce674a145e0a25cb1566c495928440a181ca1ccf6719"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:84450ba661fb96e9fd67629b93d2941c871ca86fc38d835d19d4225ff946a631"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:44aeb140295a2f0659e113b31cfe92c9061622cadbc9e2a2f7b8ef6b1e29ef4b"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1db4e7fefefd0f548d73e2e2e041f9df5c59e178b4c72fbac4cc6f535cfb1565"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-win32.whl", hash = "sha256:5726cf76c982532c1863fb64d8c6dd0e4c90b6ece9feb06c9f202417a31f7dd7"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:b197e7094f232959f8f20541ead1d9862ac5ebea1d58e9849c1bf979255dfac9"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dd4eda173a9fcccb5f2e2bd2a9f423d180194b1bf17cf59e3269899235b2a114"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9e3c4c9e1ed40ea53acf11e2a386383c3304212c965773704e4603d589343ed"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:92a7e36b000bf022ef3dbb9c46bfe2d52c047d5e3f3343f43204263c5addc250"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54b6a92d009cbe2fb11054ba694bc9e284dad30a26757b1e372a1fdddaf21920"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ffd9493de4c922f2a38c2bf62b831dcec90ac673ed1ca182fe11b4d8e9f2a64"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35c404d74c2926d0287fbd63ed5d27eb911eb9e4a3bb2c6d294f3cfd4a9e0c23"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4796efc4faf6b53a18e3d46343535caed491776a22af773f366534056c4e1fbc"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7fdd52961feb4c96507aa649550ec2a0d527c086d284749b2f582f2d40a2e0d"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:92db3c28b5b2a273346bebb24857fda45601aef6ae1c011c0a997106581e8a88"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ab973df98fc99ab39080bfb0eb3a925181454d7c3ac8a1e695fddfae696d9e90"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4b67fdab07fdd3c10bb21edab3cbfe8cf5696f453afce75d815d9d7223fbe88b"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:aa41e526a5d4a9dfcfbab0716c7e8a1b215abd3f3df5a45cf18a12721d31cb5d"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ffc519621dce0c767e96b9c53f09c5d215578e10b02c285809f76509a3931482"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-win32.whl", hash = "sha256:f19c1585933c82098c2a520f8ec1227f20e339e33aca8fa6f956f6691b784e67"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:707b82d19e65c9bd28b81dde95249b07bf9f5b90ebe1ef17d9b57473f8a64b7b"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:dbe03226baf438ac4fda9e2d0715022fd579cb641c4cf639fa40d53b2fe6f3e2"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd9a8bd8900e65504a305bf8ae6fa9fbc66de94178c420791d0293702fce2df7"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8831399554b92b72af5932cdbbd4ddc55c55f631bb13ff8fe4e6536a06c5c51"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a14969b8691f7998e74663b77b4c36c0337cb1df552da83d5c9004a93afdb574"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dcaf7c1524c0542ee2fc82cc8ec337f7a9f7edee2532421ab200d2b920fc97cf"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:425c5f215d0eecee9a56cdb703203dda90423247421bf0d67125add85d0c4455"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:d5b054862739d276e09928de37c79ddeec42a6e1bfc55863be96a36ba22926f6"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:f3e73a4255342d4eb26ef6df01e3962e73aa29baa3124a8e824c5d3364a65748"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:2f6c34da58ea9c1a9515621f4d9ac379871a8f21168ba1b5e09d74250de5ad62"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:f09cb5a7bbe1ecae6e87901a2eb23e0256bb524a79ccc53eb0b7629fbe7677c4"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:0099d79bdfcf5c1f0c2c72f91516702ebf8b0b8ddd8905f97a8aecf49712c621"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-win32.whl", hash = "sha256:9c98230f5042f4945f957d006edccc2af1e03ed5e37ce7c373f00a5a4daa6149"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:62f60aebecfc7f4b82e3f639a7d1433a20ec32824db2199a11ad4f5e146ef5ee"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:af73657b7a68211996527dbfeffbb0864e043d270580c5aef06dc4b659a4b578"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cab5d0b79d987c67f3b9e9c53f54a61360422a5a0bc075f43cab5621d530c3b6"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9289fd5dddcf57bab41d044f1756550f9e7cf0c8e373b8cdf0ce8773dc4bd417"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b493a043635eb376e50eedf7818f2f322eabbaa974e948bd8bdd29eb7ef2a51"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fa2566ca27d67c86569e8c85297aaf413ffab85a8960500f12ea34ff98e4c41"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8e538f46104c815be19c975572d74afb53f29650ea2025bbfaef359d2de2f7f"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fd30dc99682dc2c603c2b315bded2799019cea829f8bf57dc6b61efde6611c8"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2006769bd1640bdf4d5641c69a3d63b71b81445473cac5ded39740a226fa88ab"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:dc15e99b2d8a656f8e666854404f1ba54765871104e50c8e9813af8a7db07f12"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:ab2e5bef076f5a235c3774b4f4028a680432cded7cad37bba0fd90d64b187d19"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:4ec9dd88a5b71abfc74e9df5ebe7921c35cbb3b641181a531ca65cdb5e8e4dea"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:43193c5cda5d612f247172016c4bb71251c784d7a4d9314677186a838ad34858"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:aa693779a8b50cd97570e5a0f343538a8dbd3e496fa5dcb87e29406ad0299654"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-win32.whl", hash = "sha256:7706f5850360ac01d80c89bcef1640683cc12ed87f42579dab6c5d3ed6888613"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:c3e446d253bd88f6377260d07c895816ebf33ffffd56c1c792b13bff9c3e1ade"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:980b4f289d1d90ca5efcf07958d3eb38ed9c0b7676bf2831a54d4f66f9c27dfa"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f28f891ccd15c514a0981f3b9db9aa23d62fe1a99997512b0491d2ed323d229a"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8aacce6e2e1edcb6ac625fb0f8c3a9570ccc7bfba1f63419b3769ccf6a00ed0"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7af3717683bea4c87acd8c0d3d5b44d56120b26fd3f8a692bdd2d5260c620a"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ff2ed8194587faf56555927b3aa10e6fb69d931e33953943bc4f837dfee2242"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e91f541a85298cf35433bf66f3fab2a4a2cff05c127eeca4af174f6d497f0d4b"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:309a7de0a0ff3040acaebb35ec45d18db4b28232f21998851cfa709eeff49d62"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:285e96d9d53422efc0d7a17c60e59f37fbf3dfa942073f666db4ac71e8d726d0"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5d447056e2ca60382d460a604b6302d8db69476fd2015c81e7c35417cfabe4cd"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:20587d20f557fe189b7947d8e7ec5afa110ccf72a3128d61a2a387c3313f46be"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:130272c698667a982a5d0e626851ceff662565379baf0ff2cc58067b81d4f11d"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:ab22fbd9765e6954bc0bcff24c25ff71dcbfdb185fcdaca49e81bac68fe724d3"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7782afc9b6b42200f7362858f9e73b1f8316afb276d316336c0ec3bd73312742"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-win32.whl", hash = "sha256:2de62e8801ddfff069cd5c504ce3bc9672b23266597d4e4f50eda28846c322f2"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:95c3c157765b031331dd4db3c775e58deaee050a3042fcad72cbc4189d7c8dca"}, + {file = "charset_normalizer-3.4.0-py3-none-any.whl", hash = "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079"}, + {file = "charset_normalizer-3.4.0.tar.gz", hash = "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e"}, ] [[package]] @@ -386,6 +459,80 @@ files = [ {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] +[[package]] +name = "coverage" +version = "7.6.4" +description = "Code coverage measurement for Python" +optional = false +python-versions = ">=3.9" +files = [ + {file = "coverage-7.6.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5f8ae553cba74085db385d489c7a792ad66f7f9ba2ee85bfa508aeb84cf0ba07"}, + {file = "coverage-7.6.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8165b796df0bd42e10527a3f493c592ba494f16ef3c8b531288e3d0d72c1f6f0"}, + {file = "coverage-7.6.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7c8b95bf47db6d19096a5e052ffca0a05f335bc63cef281a6e8fe864d450a72"}, + {file = "coverage-7.6.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ed9281d1b52628e81393f5eaee24a45cbd64965f41857559c2b7ff19385df51"}, + {file = "coverage-7.6.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0809082ee480bb8f7416507538243c8863ac74fd8a5d2485c46f0f7499f2b491"}, + {file = "coverage-7.6.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d541423cdd416b78626b55f123412fcf979d22a2c39fce251b350de38c15c15b"}, + {file = "coverage-7.6.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:58809e238a8a12a625c70450b48e8767cff9eb67c62e6154a642b21ddf79baea"}, + {file = "coverage-7.6.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c9b8e184898ed014884ca84c70562b4a82cbc63b044d366fedc68bc2b2f3394a"}, + {file = "coverage-7.6.4-cp310-cp310-win32.whl", hash = "sha256:6bd818b7ea14bc6e1f06e241e8234508b21edf1b242d49831831a9450e2f35fa"}, + {file = "coverage-7.6.4-cp310-cp310-win_amd64.whl", hash = "sha256:06babbb8f4e74b063dbaeb74ad68dfce9186c595a15f11f5d5683f748fa1d172"}, + {file = "coverage-7.6.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:73d2b73584446e66ee633eaad1a56aad577c077f46c35ca3283cd687b7715b0b"}, + {file = "coverage-7.6.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:51b44306032045b383a7a8a2c13878de375117946d68dcb54308111f39775a25"}, + {file = "coverage-7.6.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b3fb02fe73bed561fa12d279a417b432e5b50fe03e8d663d61b3d5990f29546"}, + {file = "coverage-7.6.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed8fe9189d2beb6edc14d3ad19800626e1d9f2d975e436f84e19efb7fa19469b"}, + {file = "coverage-7.6.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b369ead6527d025a0fe7bd3864e46dbee3aa8f652d48df6174f8d0bac9e26e0e"}, + {file = "coverage-7.6.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ade3ca1e5f0ff46b678b66201f7ff477e8fa11fb537f3b55c3f0568fbfe6e718"}, + {file = "coverage-7.6.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:27fb4a050aaf18772db513091c9c13f6cb94ed40eacdef8dad8411d92d9992db"}, + {file = "coverage-7.6.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4f704f0998911abf728a7783799444fcbbe8261c4a6c166f667937ae6a8aa522"}, + {file = "coverage-7.6.4-cp311-cp311-win32.whl", hash = "sha256:29155cd511ee058e260db648b6182c419422a0d2e9a4fa44501898cf918866cf"}, + {file = "coverage-7.6.4-cp311-cp311-win_amd64.whl", hash = "sha256:8902dd6a30173d4ef09954bfcb24b5d7b5190cf14a43170e386979651e09ba19"}, + {file = "coverage-7.6.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:12394842a3a8affa3ba62b0d4ab7e9e210c5e366fbac3e8b2a68636fb19892c2"}, + {file = "coverage-7.6.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2b6b4c83d8e8ea79f27ab80778c19bc037759aea298da4b56621f4474ffeb117"}, + {file = "coverage-7.6.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d5b8007f81b88696d06f7df0cb9af0d3b835fe0c8dbf489bad70b45f0e45613"}, + {file = "coverage-7.6.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b57b768feb866f44eeed9f46975f3d6406380275c5ddfe22f531a2bf187eda27"}, + {file = "coverage-7.6.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5915fcdec0e54ee229926868e9b08586376cae1f5faa9bbaf8faf3561b393d52"}, + {file = "coverage-7.6.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0b58c672d14f16ed92a48db984612f5ce3836ae7d72cdd161001cc54512571f2"}, + {file = "coverage-7.6.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:2fdef0d83a2d08d69b1f2210a93c416d54e14d9eb398f6ab2f0a209433db19e1"}, + {file = "coverage-7.6.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8cf717ee42012be8c0cb205dbbf18ffa9003c4cbf4ad078db47b95e10748eec5"}, + {file = "coverage-7.6.4-cp312-cp312-win32.whl", hash = "sha256:7bb92c539a624cf86296dd0c68cd5cc286c9eef2d0c3b8b192b604ce9de20a17"}, + {file = "coverage-7.6.4-cp312-cp312-win_amd64.whl", hash = "sha256:1032e178b76a4e2b5b32e19d0fd0abbce4b58e77a1ca695820d10e491fa32b08"}, + {file = "coverage-7.6.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:023bf8ee3ec6d35af9c1c6ccc1d18fa69afa1cb29eaac57cb064dbb262a517f9"}, + {file = "coverage-7.6.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b0ac3d42cb51c4b12df9c5f0dd2f13a4f24f01943627120ec4d293c9181219ba"}, + {file = "coverage-7.6.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8fe4984b431f8621ca53d9380901f62bfb54ff759a1348cd140490ada7b693c"}, + {file = "coverage-7.6.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5fbd612f8a091954a0c8dd4c0b571b973487277d26476f8480bfa4b2a65b5d06"}, + {file = "coverage-7.6.4-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dacbc52de979f2823a819571f2e3a350a7e36b8cb7484cdb1e289bceaf35305f"}, + {file = "coverage-7.6.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:dab4d16dfef34b185032580e2f2f89253d302facba093d5fa9dbe04f569c4f4b"}, + {file = "coverage-7.6.4-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:862264b12ebb65ad8d863d51f17758b1684560b66ab02770d4f0baf2ff75da21"}, + {file = "coverage-7.6.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5beb1ee382ad32afe424097de57134175fea3faf847b9af002cc7895be4e2a5a"}, + {file = "coverage-7.6.4-cp313-cp313-win32.whl", hash = "sha256:bf20494da9653f6410213424f5f8ad0ed885e01f7e8e59811f572bdb20b8972e"}, + {file = "coverage-7.6.4-cp313-cp313-win_amd64.whl", hash = "sha256:182e6cd5c040cec0a1c8d415a87b67ed01193ed9ad458ee427741c7d8513d963"}, + {file = "coverage-7.6.4-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:a181e99301a0ae128493a24cfe5cfb5b488c4e0bf2f8702091473d033494d04f"}, + {file = "coverage-7.6.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:df57bdbeffe694e7842092c5e2e0bc80fff7f43379d465f932ef36f027179806"}, + {file = "coverage-7.6.4-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bcd1069e710600e8e4cf27f65c90c7843fa8edfb4520fb0ccb88894cad08b11"}, + {file = "coverage-7.6.4-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99b41d18e6b2a48ba949418db48159d7a2e81c5cc290fc934b7d2380515bd0e3"}, + {file = "coverage-7.6.4-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6b1e54712ba3474f34b7ef7a41e65bd9037ad47916ccb1cc78769bae324c01a"}, + {file = "coverage-7.6.4-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:53d202fd109416ce011578f321460795abfe10bb901b883cafd9b3ef851bacfc"}, + {file = "coverage-7.6.4-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:c48167910a8f644671de9f2083a23630fbf7a1cb70ce939440cd3328e0919f70"}, + {file = "coverage-7.6.4-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:cc8ff50b50ce532de2fa7a7daae9dd12f0a699bfcd47f20945364e5c31799fef"}, + {file = "coverage-7.6.4-cp313-cp313t-win32.whl", hash = "sha256:b8d3a03d9bfcaf5b0141d07a88456bb6a4c3ce55c080712fec8418ef3610230e"}, + {file = "coverage-7.6.4-cp313-cp313t-win_amd64.whl", hash = "sha256:f3ddf056d3ebcf6ce47bdaf56142af51bb7fad09e4af310241e9db7a3a8022e1"}, + {file = "coverage-7.6.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9cb7fa111d21a6b55cbf633039f7bc2749e74932e3aa7cb7333f675a58a58bf3"}, + {file = "coverage-7.6.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:11a223a14e91a4693d2d0755c7a043db43d96a7450b4f356d506c2562c48642c"}, + {file = "coverage-7.6.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a413a096c4cbac202433c850ee43fa326d2e871b24554da8327b01632673a076"}, + {file = "coverage-7.6.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:00a1d69c112ff5149cabe60d2e2ee948752c975d95f1e1096742e6077affd376"}, + {file = "coverage-7.6.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f76846299ba5c54d12c91d776d9605ae33f8ae2b9d1d3c3703cf2db1a67f2c0"}, + {file = "coverage-7.6.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:fe439416eb6380de434886b00c859304338f8b19f6f54811984f3420a2e03858"}, + {file = "coverage-7.6.4-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:0294ca37f1ba500667b1aef631e48d875ced93ad5e06fa665a3295bdd1d95111"}, + {file = "coverage-7.6.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6f01ba56b1c0e9d149f9ac85a2f999724895229eb36bd997b61e62999e9b0901"}, + {file = "coverage-7.6.4-cp39-cp39-win32.whl", hash = "sha256:bc66f0bf1d7730a17430a50163bb264ba9ded56739112368ba985ddaa9c3bd09"}, + {file = "coverage-7.6.4-cp39-cp39-win_amd64.whl", hash = "sha256:c481b47f6b5845064c65a7bc78bc0860e635a9b055af0df46fdf1c58cebf8e8f"}, + {file = "coverage-7.6.4-pp39.pp310-none-any.whl", hash = "sha256:3c65d37f3a9ebb703e710befdc489a38683a5b152242664b973a7b7b22348a4e"}, + {file = "coverage-7.6.4.tar.gz", hash = "sha256:29fc0f17b1d3fea332f8001d4558f8214af7f1d87a345f3a133c901d60347c73"}, +] + +[package.extras] +toml = ["tomli"] + [[package]] name = "dataclasses-json" version = "0.6.7" @@ -401,6 +548,34 @@ files = [ marshmallow = ">=3.18.0,<4.0.0" typing-inspect = ">=0.4.0,<1" +[[package]] +name = "datamodel-code-generator" +version = "0.26.2" +description = "Datamodel Code Generator" +optional = false +python-versions = "<4.0,>=3.8" +files = [ + {file = "datamodel_code_generator-0.26.2-py3-none-any.whl", hash = "sha256:f62576a27c9083f2b22cf8c97ed79a394155f131db3e3bf55cd72893f48c5d80"}, + {file = "datamodel_code_generator-0.26.2.tar.gz", hash = "sha256:03c153434d5a308e31fb4528c0199015054570642ccda8cd2f2cb3cc2c497622"}, +] + +[package.dependencies] +argcomplete = ">=1.10,<4.0" +black = ">=19.10b0" +genson = ">=1.2.1,<2.0" +inflect = ">=4.1.0,<6.0" +isort = ">=4.3.21,<6.0" +jinja2 = ">=2.10.1,<4.0" +packaging = "*" +pydantic = {version = ">=1.10.0,<2.0.0 || >2.0.0,<2.0.1 || >2.0.1,<2.4.0 || >2.4.0,<3.0", extras = ["email"], markers = "python_version >= \"3.12\" and python_version < \"4.0\""} +pyyaml = ">=6.0.1" + +[package.extras] +debug = ["PySnooper (>=0.4.1,<2.0.0)"] +graphql = ["graphql-core (>=3.2.3,<4.0.0)"] +http = ["httpx"] +validation = ["openapi-spec-validator (>=0.2.8,<0.7.0)", "prance (>=0.18.2)"] + [[package]] name = "distro" version = "1.9.0" @@ -434,18 +609,18 @@ wmi = ["wmi (>=1.5.1)"] [[package]] name = "duckduckgo-search" -version = "6.2.13" +version = "6.3.2" description = "Search for words, documents, images, news, maps and text translation using the DuckDuckGo.com search engine." optional = false python-versions = ">=3.8" files = [ - {file = "duckduckgo_search-6.2.13-py3-none-any.whl", hash = "sha256:a6618fb2744fa1d081b1bf2e47ef8051de993276a15c20f4e879a150726472de"}, - {file = "duckduckgo_search-6.2.13.tar.gz", hash = "sha256:f89a9782f0f47d18c01a761c83453d0aef7a4335d1b6466fc47709652d5ca791"}, + {file = "duckduckgo_search-6.3.2-py3-none-any.whl", hash = "sha256:cd631275292460d590d1d496995d002bf2fe6db9752713fab17b9e95924ced98"}, + {file = "duckduckgo_search-6.3.2.tar.gz", hash = "sha256:53dbf45f8749bfc67483eb9f281f2e722a5fe644d61c54ed9e551d26cb6bcbf2"}, ] [package.dependencies] click = ">=8.1.7" -primp = ">=0.6.3" +primp = ">=0.6.4" [package.extras] dev = ["mypy (>=1.11.1)", "pytest (>=8.3.1)", "pytest-asyncio (>=0.23.8)", "ruff (>=0.6.1)"] @@ -468,18 +643,18 @@ idna = ">=2.0.0" [[package]] name = "fastapi" -version = "0.115.0" +version = "0.115.4" description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" optional = false python-versions = ">=3.8" files = [ - {file = "fastapi-0.115.0-py3-none-any.whl", hash = "sha256:17ea427674467486e997206a5ab25760f6b09e069f099b96f5b55a32fb6f1631"}, - {file = "fastapi-0.115.0.tar.gz", hash = "sha256:f93b4ca3529a8ebc6fc3fcf710e5efa8de3df9b41570958abf1d97d843138004"}, + {file = "fastapi-0.115.4-py3-none-any.whl", hash = "sha256:0b504a063ffb3cf96a5e27dc1bc32c80ca743a2528574f9cdc77daa2d31b4742"}, + {file = "fastapi-0.115.4.tar.gz", hash = "sha256:db653475586b091cb8b2fec2ac54a680ac6a158e07406e1abae31679e8826349"}, ] [package.dependencies] pydantic = ">=1.7.4,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0 || >2.0.0,<2.0.1 || >2.0.1,<2.1.0 || >2.1.0,<3.0.0" -starlette = ">=0.37.2,<0.39.0" +starlette = ">=0.40.0,<0.42.0" typing-extensions = ">=4.8.0" [package.extras] @@ -502,88 +677,114 @@ termcolor = "*" [[package]] name = "frozenlist" -version = "1.4.1" +version = "1.5.0" description = "A list-like structure which implements collections.abc.MutableSequence" optional = false python-versions = ">=3.8" files = [ - {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f9aa1878d1083b276b0196f2dfbe00c9b7e752475ed3b682025ff20c1c1f51ac"}, - {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:29acab3f66f0f24674b7dc4736477bcd4bc3ad4b896f5f45379a67bce8b96868"}, - {file = "frozenlist-1.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:74fb4bee6880b529a0c6560885fce4dc95936920f9f20f53d99a213f7bf66776"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:590344787a90ae57d62511dd7c736ed56b428f04cd8c161fcc5e7232c130c69a"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:068b63f23b17df8569b7fdca5517edef76171cf3897eb68beb01341131fbd2ad"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c849d495bf5154cd8da18a9eb15db127d4dba2968d88831aff6f0331ea9bd4c"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9750cc7fe1ae3b1611bb8cfc3f9ec11d532244235d75901fb6b8e42ce9229dfe"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9b2de4cf0cdd5bd2dee4c4f63a653c61d2408055ab77b151c1957f221cabf2a"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0633c8d5337cb5c77acbccc6357ac49a1770b8c487e5b3505c57b949b4b82e98"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:27657df69e8801be6c3638054e202a135c7f299267f1a55ed3a598934f6c0d75"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:f9a3ea26252bd92f570600098783d1371354d89d5f6b7dfd87359d669f2109b5"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:4f57dab5fe3407b6c0c1cc907ac98e8a189f9e418f3b6e54d65a718aaafe3950"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e02a0e11cf6597299b9f3bbd3f93d79217cb90cfd1411aec33848b13f5c656cc"}, - {file = "frozenlist-1.4.1-cp310-cp310-win32.whl", hash = "sha256:a828c57f00f729620a442881cc60e57cfcec6842ba38e1b19fd3e47ac0ff8dc1"}, - {file = "frozenlist-1.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:f56e2333dda1fe0f909e7cc59f021eba0d2307bc6f012a1ccf2beca6ba362439"}, - {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a0cb6f11204443f27a1628b0e460f37fb30f624be6051d490fa7d7e26d4af3d0"}, - {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b46c8ae3a8f1f41a0d2ef350c0b6e65822d80772fe46b653ab6b6274f61d4a49"}, - {file = "frozenlist-1.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fde5bd59ab5357e3853313127f4d3565fc7dad314a74d7b5d43c22c6a5ed2ced"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:722e1124aec435320ae01ee3ac7bec11a5d47f25d0ed6328f2273d287bc3abb0"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2471c201b70d58a0f0c1f91261542a03d9a5e088ed3dc6c160d614c01649c106"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c757a9dd70d72b076d6f68efdbb9bc943665ae954dad2801b874c8c69e185068"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f146e0911cb2f1da549fc58fc7bcd2b836a44b79ef871980d605ec392ff6b0d2"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9c515e7914626b2a2e1e311794b4c35720a0be87af52b79ff8e1429fc25f19"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c302220494f5c1ebeb0912ea782bcd5e2f8308037b3c7553fad0e48ebad6ad82"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:442acde1e068288a4ba7acfe05f5f343e19fac87bfc96d89eb886b0363e977ec"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:1b280e6507ea8a4fa0c0a7150b4e526a8d113989e28eaaef946cc77ffd7efc0a"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:fe1a06da377e3a1062ae5fe0926e12b84eceb8a50b350ddca72dc85015873f74"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:db9e724bebd621d9beca794f2a4ff1d26eed5965b004a97f1f1685a173b869c2"}, - {file = "frozenlist-1.4.1-cp311-cp311-win32.whl", hash = "sha256:e774d53b1a477a67838a904131c4b0eef6b3d8a651f8b138b04f748fccfefe17"}, - {file = "frozenlist-1.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:fb3c2db03683b5767dedb5769b8a40ebb47d6f7f45b1b3e3b4b51ec8ad9d9825"}, - {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:1979bc0aeb89b33b588c51c54ab0161791149f2461ea7c7c946d95d5f93b56ae"}, - {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cc7b01b3754ea68a62bd77ce6020afaffb44a590c2289089289363472d13aedb"}, - {file = "frozenlist-1.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c9c92be9fd329ac801cc420e08452b70e7aeab94ea4233a4804f0915c14eba9b"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c3894db91f5a489fc8fa6a9991820f368f0b3cbdb9cd8849547ccfab3392d86"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba60bb19387e13597fb059f32cd4d59445d7b18b69a745b8f8e5db0346f33480"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8aefbba5f69d42246543407ed2461db31006b0f76c4e32dfd6f42215a2c41d09"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780d3a35680ced9ce682fbcf4cb9c2bad3136eeff760ab33707b71db84664e3a"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9acbb16f06fe7f52f441bb6f413ebae6c37baa6ef9edd49cdd567216da8600cd"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:23b701e65c7b36e4bf15546a89279bd4d8675faabc287d06bbcfac7d3c33e1e6"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3e0153a805a98f5ada7e09826255ba99fb4f7524bb81bf6b47fb702666484ae1"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:dd9b1baec094d91bf36ec729445f7769d0d0cf6b64d04d86e45baf89e2b9059b"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:1a4471094e146b6790f61b98616ab8e44f72661879cc63fa1049d13ef711e71e"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5667ed53d68d91920defdf4035d1cdaa3c3121dc0b113255124bcfada1cfa1b8"}, - {file = "frozenlist-1.4.1-cp312-cp312-win32.whl", hash = "sha256:beee944ae828747fd7cb216a70f120767fc9f4f00bacae8543c14a6831673f89"}, - {file = "frozenlist-1.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:64536573d0a2cb6e625cf309984e2d873979709f2cf22839bf2d61790b448ad5"}, - {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:20b51fa3f588ff2fe658663db52a41a4f7aa6c04f6201449c6c7c476bd255c0d"}, - {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:410478a0c562d1a5bcc2f7ea448359fcb050ed48b3c6f6f4f18c313a9bdb1826"}, - {file = "frozenlist-1.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c6321c9efe29975232da3bd0af0ad216800a47e93d763ce64f291917a381b8eb"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48f6a4533887e189dae092f1cf981f2e3885175f7a0f33c91fb5b7b682b6bab6"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6eb73fa5426ea69ee0e012fb59cdc76a15b1283d6e32e4f8dc4482ec67d1194d"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fbeb989b5cc29e8daf7f976b421c220f1b8c731cbf22b9130d8815418ea45887"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:32453c1de775c889eb4e22f1197fe3bdfe457d16476ea407472b9442e6295f7a"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:693945278a31f2086d9bf3df0fe8254bbeaef1fe71e1351c3bd730aa7d31c41b"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:1d0ce09d36d53bbbe566fe296965b23b961764c0bcf3ce2fa45f463745c04701"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:3a670dc61eb0d0eb7080890c13de3066790f9049b47b0de04007090807c776b0"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:dca69045298ce5c11fd539682cff879cc1e664c245d1c64da929813e54241d11"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a06339f38e9ed3a64e4c4e43aec7f59084033647f908e4259d279a52d3757d09"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b7f2f9f912dca3934c1baec2e4585a674ef16fe00218d833856408c48d5beee7"}, - {file = "frozenlist-1.4.1-cp38-cp38-win32.whl", hash = "sha256:e7004be74cbb7d9f34553a5ce5fb08be14fb33bc86f332fb71cbe5216362a497"}, - {file = "frozenlist-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:5a7d70357e7cee13f470c7883a063aae5fe209a493c57d86eb7f5a6f910fae09"}, - {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bfa4a17e17ce9abf47a74ae02f32d014c5e9404b6d9ac7f729e01562bbee601e"}, - {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b7e3ed87d4138356775346e6845cccbe66cd9e207f3cd11d2f0b9fd13681359d"}, - {file = "frozenlist-1.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c99169d4ff810155ca50b4da3b075cbde79752443117d89429595c2e8e37fed8"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edb678da49d9f72c9f6c609fbe41a5dfb9a9282f9e6a2253d5a91e0fc382d7c0"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6db4667b187a6742b33afbbaf05a7bc551ffcf1ced0000a571aedbb4aa42fc7b"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55fdc093b5a3cb41d420884cdaf37a1e74c3c37a31f46e66286d9145d2063bd0"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82e8211d69a4f4bc360ea22cd6555f8e61a1bd211d1d5d39d3d228b48c83a897"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89aa2c2eeb20957be2d950b85974b30a01a762f3308cd02bb15e1ad632e22dc7"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d3e0c25a2350080e9319724dede4f31f43a6c9779be48021a7f4ebde8b2d742"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7268252af60904bf52c26173cbadc3a071cece75f873705419c8681f24d3edea"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:0c250a29735d4f15321007fb02865f0e6b6a41a6b88f1f523ca1596ab5f50bd5"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:96ec70beabbd3b10e8bfe52616a13561e58fe84c0101dd031dc78f250d5128b9"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:23b2d7679b73fe0e5a4560b672a39f98dfc6f60df63823b0a9970525325b95f6"}, - {file = "frozenlist-1.4.1-cp39-cp39-win32.whl", hash = "sha256:a7496bfe1da7fb1a4e1cc23bb67c58fab69311cc7d32b5a99c2007b4b2a0e932"}, - {file = "frozenlist-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:e6a20a581f9ce92d389a8c7d7c3dd47c81fd5d6e655c8dddf341e14aa48659d0"}, - {file = "frozenlist-1.4.1-py3-none-any.whl", hash = "sha256:04ced3e6a46b4cfffe20f9ae482818e34eba9b5fb0ce4056e4cc9b6e212d09b7"}, - {file = "frozenlist-1.4.1.tar.gz", hash = "sha256:c037a86e8513059a2613aaba4d817bb90b9d9b6b69aace3ce9c877e8c8ed402b"}, + {file = "frozenlist-1.5.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:5b6a66c18b5b9dd261ca98dffcb826a525334b2f29e7caa54e182255c5f6a65a"}, + {file = "frozenlist-1.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d1b3eb7b05ea246510b43a7e53ed1653e55c2121019a97e60cad7efb881a97bb"}, + {file = "frozenlist-1.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:15538c0cbf0e4fa11d1e3a71f823524b0c46299aed6e10ebb4c2089abd8c3bec"}, + {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e79225373c317ff1e35f210dd5f1344ff31066ba8067c307ab60254cd3a78ad5"}, + {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9272fa73ca71266702c4c3e2d4a28553ea03418e591e377a03b8e3659d94fa76"}, + {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:498524025a5b8ba81695761d78c8dd7382ac0b052f34e66939c42df860b8ff17"}, + {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:92b5278ed9d50fe610185ecd23c55d8b307d75ca18e94c0e7de328089ac5dcba"}, + {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f3c8c1dacd037df16e85227bac13cca58c30da836c6f936ba1df0c05d046d8d"}, + {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f2ac49a9bedb996086057b75bf93538240538c6d9b38e57c82d51f75a73409d2"}, + {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e66cc454f97053b79c2ab09c17fbe3c825ea6b4de20baf1be28919460dd7877f"}, + {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:5a3ba5f9a0dfed20337d3e966dc359784c9f96503674c2faf015f7fe8e96798c"}, + {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:6321899477db90bdeb9299ac3627a6a53c7399c8cd58d25da094007402b039ab"}, + {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:76e4753701248476e6286f2ef492af900ea67d9706a0155335a40ea21bf3b2f5"}, + {file = "frozenlist-1.5.0-cp310-cp310-win32.whl", hash = "sha256:977701c081c0241d0955c9586ffdd9ce44f7a7795df39b9151cd9a6fd0ce4cfb"}, + {file = "frozenlist-1.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:189f03b53e64144f90990d29a27ec4f7997d91ed3d01b51fa39d2dbe77540fd4"}, + {file = "frozenlist-1.5.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:fd74520371c3c4175142d02a976aee0b4cb4a7cc912a60586ffd8d5929979b30"}, + {file = "frozenlist-1.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2f3f7a0fbc219fb4455264cae4d9f01ad41ae6ee8524500f381de64ffaa077d5"}, + {file = "frozenlist-1.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f47c9c9028f55a04ac254346e92977bf0f166c483c74b4232bee19a6697e4778"}, + {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0996c66760924da6e88922756d99b47512a71cfd45215f3570bf1e0b694c206a"}, + {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a2fe128eb4edeabe11896cb6af88fca5346059f6c8d807e3b910069f39157869"}, + {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1a8ea951bbb6cacd492e3948b8da8c502a3f814f5d20935aae74b5df2b19cf3d"}, + {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:de537c11e4aa01d37db0d403b57bd6f0546e71a82347a97c6a9f0dcc532b3a45"}, + {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c2623347b933fcb9095841f1cc5d4ff0b278addd743e0e966cb3d460278840d"}, + {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cee6798eaf8b1416ef6909b06f7dc04b60755206bddc599f52232606e18179d3"}, + {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f5f9da7f5dbc00a604fe74aa02ae7c98bcede8a3b8b9666f9f86fc13993bc71a"}, + {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:90646abbc7a5d5c7c19461d2e3eeb76eb0b204919e6ece342feb6032c9325ae9"}, + {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:bdac3c7d9b705d253b2ce370fde941836a5f8b3c5c2b8fd70940a3ea3af7f4f2"}, + {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:03d33c2ddbc1816237a67f66336616416e2bbb6beb306e5f890f2eb22b959cdf"}, + {file = "frozenlist-1.5.0-cp311-cp311-win32.whl", hash = "sha256:237f6b23ee0f44066219dae14c70ae38a63f0440ce6750f868ee08775073f942"}, + {file = "frozenlist-1.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:0cc974cc93d32c42e7b0f6cf242a6bd941c57c61b618e78b6c0a96cb72788c1d"}, + {file = "frozenlist-1.5.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:31115ba75889723431aa9a4e77d5f398f5cf976eea3bdf61749731f62d4a4a21"}, + {file = "frozenlist-1.5.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7437601c4d89d070eac8323f121fcf25f88674627505334654fd027b091db09d"}, + {file = "frozenlist-1.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7948140d9f8ece1745be806f2bfdf390127cf1a763b925c4a805c603df5e697e"}, + {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feeb64bc9bcc6b45c6311c9e9b99406660a9c05ca8a5b30d14a78555088b0b3a"}, + {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:683173d371daad49cffb8309779e886e59c2f369430ad28fe715f66d08d4ab1a"}, + {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7d57d8f702221405a9d9b40f9da8ac2e4a1a8b5285aac6100f3393675f0a85ee"}, + {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30c72000fbcc35b129cb09956836c7d7abf78ab5416595e4857d1cae8d6251a6"}, + {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:000a77d6034fbad9b6bb880f7ec073027908f1b40254b5d6f26210d2dab1240e"}, + {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5d7f5a50342475962eb18b740f3beecc685a15b52c91f7d975257e13e029eca9"}, + {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:87f724d055eb4785d9be84e9ebf0f24e392ddfad00b3fe036e43f489fafc9039"}, + {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:6e9080bb2fb195a046e5177f10d9d82b8a204c0736a97a153c2466127de87784"}, + {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9b93d7aaa36c966fa42efcaf716e6b3900438632a626fb09c049f6a2f09fc631"}, + {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:52ef692a4bc60a6dd57f507429636c2af8b6046db8b31b18dac02cbc8f507f7f"}, + {file = "frozenlist-1.5.0-cp312-cp312-win32.whl", hash = "sha256:29d94c256679247b33a3dc96cce0f93cbc69c23bf75ff715919332fdbb6a32b8"}, + {file = "frozenlist-1.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:8969190d709e7c48ea386db202d708eb94bdb29207a1f269bab1196ce0dcca1f"}, + {file = "frozenlist-1.5.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:7a1a048f9215c90973402e26c01d1cff8a209e1f1b53f72b95c13db61b00f953"}, + {file = "frozenlist-1.5.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:dd47a5181ce5fcb463b5d9e17ecfdb02b678cca31280639255ce9d0e5aa67af0"}, + {file = "frozenlist-1.5.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1431d60b36d15cda188ea222033eec8e0eab488f39a272461f2e6d9e1a8e63c2"}, + {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6482a5851f5d72767fbd0e507e80737f9c8646ae7fd303def99bfe813f76cf7f"}, + {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:44c49271a937625619e862baacbd037a7ef86dd1ee215afc298a417ff3270608"}, + {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:12f78f98c2f1c2429d42e6a485f433722b0061d5c0b0139efa64f396efb5886b"}, + {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ce3aa154c452d2467487765e3adc730a8c153af77ad84096bc19ce19a2400840"}, + {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b7dc0c4338e6b8b091e8faf0db3168a37101943e687f373dce00959583f7439"}, + {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:45e0896250900b5aa25180f9aec243e84e92ac84bd4a74d9ad4138ef3f5c97de"}, + {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:561eb1c9579d495fddb6da8959fd2a1fca2c6d060d4113f5844b433fc02f2641"}, + {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:df6e2f325bfee1f49f81aaac97d2aa757c7646534a06f8f577ce184afe2f0a9e"}, + {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:140228863501b44b809fb39ec56b5d4071f4d0aa6d216c19cbb08b8c5a7eadb9"}, + {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7707a25d6a77f5d27ea7dc7d1fc608aa0a478193823f88511ef5e6b8a48f9d03"}, + {file = "frozenlist-1.5.0-cp313-cp313-win32.whl", hash = "sha256:31a9ac2b38ab9b5a8933b693db4939764ad3f299fcaa931a3e605bc3460e693c"}, + {file = "frozenlist-1.5.0-cp313-cp313-win_amd64.whl", hash = "sha256:11aabdd62b8b9c4b84081a3c246506d1cddd2dd93ff0ad53ede5defec7886b28"}, + {file = "frozenlist-1.5.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:dd94994fc91a6177bfaafd7d9fd951bc8689b0a98168aa26b5f543868548d3ca"}, + {file = "frozenlist-1.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2d0da8bbec082bf6bf18345b180958775363588678f64998c2b7609e34719b10"}, + {file = "frozenlist-1.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:73f2e31ea8dd7df61a359b731716018c2be196e5bb3b74ddba107f694fbd7604"}, + {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:828afae9f17e6de596825cf4228ff28fbdf6065974e5ac1410cecc22f699d2b3"}, + {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f1577515d35ed5649d52ab4319db757bb881ce3b2b796d7283e6634d99ace307"}, + {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2150cc6305a2c2ab33299453e2968611dacb970d2283a14955923062c8d00b10"}, + {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a72b7a6e3cd2725eff67cd64c8f13335ee18fc3c7befc05aed043d24c7b9ccb9"}, + {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c16d2fa63e0800723139137d667e1056bee1a1cf7965153d2d104b62855e9b99"}, + {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:17dcc32fc7bda7ce5875435003220a457bcfa34ab7924a49a1c19f55b6ee185c"}, + {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:97160e245ea33d8609cd2b8fd997c850b56db147a304a262abc2b3be021a9171"}, + {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:f1e6540b7fa044eee0bb5111ada694cf3dc15f2b0347ca125ee9ca984d5e9e6e"}, + {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:91d6c171862df0a6c61479d9724f22efb6109111017c87567cfeb7b5d1449fdf"}, + {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c1fac3e2ace2eb1052e9f7c7db480818371134410e1f5c55d65e8f3ac6d1407e"}, + {file = "frozenlist-1.5.0-cp38-cp38-win32.whl", hash = "sha256:b97f7b575ab4a8af9b7bc1d2ef7f29d3afee2226bd03ca3875c16451ad5a7723"}, + {file = "frozenlist-1.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:374ca2dabdccad8e2a76d40b1d037f5bd16824933bf7bcea3e59c891fd4a0923"}, + {file = "frozenlist-1.5.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9bbcdfaf4af7ce002694a4e10a0159d5a8d20056a12b05b45cea944a4953f972"}, + {file = "frozenlist-1.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1893f948bf6681733aaccf36c5232c231e3b5166d607c5fa77773611df6dc336"}, + {file = "frozenlist-1.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2b5e23253bb709ef57a8e95e6ae48daa9ac5f265637529e4ce6b003a37b2621f"}, + {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f253985bb515ecd89629db13cb58d702035ecd8cfbca7d7a7e29a0e6d39af5f"}, + {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:04a5c6babd5e8fb7d3c871dc8b321166b80e41b637c31a995ed844a6139942b6"}, + {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9fe0f1c29ba24ba6ff6abf688cb0b7cf1efab6b6aa6adc55441773c252f7411"}, + {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:226d72559fa19babe2ccd920273e767c96a49b9d3d38badd7c91a0fdeda8ea08"}, + {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15b731db116ab3aedec558573c1a5eec78822b32292fe4f2f0345b7f697745c2"}, + {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:366d8f93e3edfe5a918c874702f78faac300209a4d5bf38352b2c1bdc07a766d"}, + {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:1b96af8c582b94d381a1c1f51ffaedeb77c821c690ea5f01da3d70a487dd0a9b"}, + {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:c03eff4a41bd4e38415cbed054bbaff4a075b093e2394b6915dca34a40d1e38b"}, + {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:50cf5e7ee9b98f22bdecbabf3800ae78ddcc26e4a435515fc72d97903e8488e0"}, + {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1e76bfbc72353269c44e0bc2cfe171900fbf7f722ad74c9a7b638052afe6a00c"}, + {file = "frozenlist-1.5.0-cp39-cp39-win32.whl", hash = "sha256:666534d15ba8f0fda3f53969117383d5dc021266b3c1a42c9ec4855e4b58b9d3"}, + {file = "frozenlist-1.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:5c28f4b5dbef8a0d8aad0d4de24d1e9e981728628afaf4ea0792f5d0939372f0"}, + {file = "frozenlist-1.5.0-py3-none-any.whl", hash = "sha256:d994863bba198a4a518b467bb971c56e1db3f180a25c6cf7bb1949c267f748c3"}, + {file = "frozenlist-1.5.0.tar.gz", hash = "sha256:81d5af29e61b9c8348e876d442253723928dce6433e0e76cd925cd83f1b4b817"}, +] + +[[package]] +name = "genson" +version = "1.3.0" +description = "GenSON is a powerful, user-friendly JSON Schema generator." +optional = false +python-versions = "*" +files = [ + {file = "genson-1.3.0-py3-none-any.whl", hash = "sha256:468feccd00274cc7e4c09e84b08704270ba8d95232aa280f65b986139cec67f7"}, + {file = "genson-1.3.0.tar.gz", hash = "sha256:e02db9ac2e3fd29e65b5286f7135762e2cd8a986537c075b06fc5f1517308e37"}, ] [[package]] @@ -599,69 +800,84 @@ files = [ [[package]] name = "greenlet" -version = "3.0.3" +version = "3.1.1" description = "Lightweight in-process concurrent programming" optional = false python-versions = ">=3.7" files = [ - {file = "greenlet-3.0.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:9da2bd29ed9e4f15955dd1595ad7bc9320308a3b766ef7f837e23ad4b4aac31a"}, - {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d353cadd6083fdb056bb46ed07e4340b0869c305c8ca54ef9da3421acbdf6881"}, - {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dca1e2f3ca00b84a396bc1bce13dd21f680f035314d2379c4160c98153b2059b"}, - {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3ed7fb269f15dc662787f4119ec300ad0702fa1b19d2135a37c2c4de6fadfd4a"}, - {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd4f49ae60e10adbc94b45c0b5e6a179acc1736cf7a90160b404076ee283cf83"}, - {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:73a411ef564e0e097dbe7e866bb2dda0f027e072b04da387282b02c308807405"}, - {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7f362975f2d179f9e26928c5b517524e89dd48530a0202570d55ad6ca5d8a56f"}, - {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:649dde7de1a5eceb258f9cb00bdf50e978c9db1b996964cd80703614c86495eb"}, - {file = "greenlet-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:68834da854554926fbedd38c76e60c4a2e3198c6fbed520b106a8986445caaf9"}, - {file = "greenlet-3.0.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:b1b5667cced97081bf57b8fa1d6bfca67814b0afd38208d52538316e9422fc61"}, - {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52f59dd9c96ad2fc0d5724107444f76eb20aaccb675bf825df6435acb7703559"}, - {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:afaff6cf5200befd5cec055b07d1c0a5a06c040fe5ad148abcd11ba6ab9b114e"}, - {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33"}, - {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2797aa5aedac23af156bbb5a6aa2cd3427ada2972c828244eb7d1b9255846379"}, - {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7f009caad047246ed379e1c4dbcb8b020f0a390667ea74d2387be2998f58a22"}, - {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c5e1536de2aad7bf62e27baf79225d0d64360d4168cf2e6becb91baf1ed074f3"}, - {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:894393ce10ceac937e56ec00bb71c4c2f8209ad516e96033e4b3b1de270e200d"}, - {file = "greenlet-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:1ea188d4f49089fc6fb283845ab18a2518d279c7cd9da1065d7a84e991748728"}, - {file = "greenlet-3.0.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:70fb482fdf2c707765ab5f0b6655e9cfcf3780d8d87355a063547b41177599be"}, - {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4d1ac74f5c0c0524e4a24335350edad7e5f03b9532da7ea4d3c54d527784f2e"}, - {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149e94a2dd82d19838fe4b2259f1b6b9957d5ba1b25640d2380bea9c5df37676"}, - {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15d79dd26056573940fcb8c7413d84118086f2ec1a8acdfa854631084393efcc"}, - {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b7db1ebff4ba09aaaeae6aa491daeb226c8150fc20e836ad00041bcb11230"}, - {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf"}, - {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1f672519db1796ca0d8753f9e78ec02355e862d0998193038c7073045899f305"}, - {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2516a9957eed41dd8f1ec0c604f1cdc86758b587d964668b5b196a9db5bfcde6"}, - {file = "greenlet-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:bba5387a6975598857d86de9eac14210a49d554a77eb8261cc68b7d082f78ce2"}, - {file = "greenlet-3.0.3-cp37-cp37m-macosx_11_0_universal2.whl", hash = "sha256:5b51e85cb5ceda94e79d019ed36b35386e8c37d22f07d6a751cb659b180d5274"}, - {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:daf3cb43b7cf2ba96d614252ce1684c1bccee6b2183a01328c98d36fcd7d5cb0"}, - {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99bf650dc5d69546e076f413a87481ee1d2d09aaaaaca058c9251b6d8c14783f"}, - {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dd6e660effd852586b6a8478a1d244b8dc90ab5b1321751d2ea15deb49ed414"}, - {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3391d1e16e2a5a1507d83e4a8b100f4ee626e8eca43cf2cadb543de69827c4c"}, - {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1f145462f1fa6e4a4ae3c0f782e580ce44d57c8f2c7aae1b6fa88c0b2efdb41"}, - {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1a7191e42732df52cb5f39d3527217e7ab73cae2cb3694d241e18f53d84ea9a7"}, - {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0448abc479fab28b00cb472d278828b3ccca164531daab4e970a0458786055d6"}, - {file = "greenlet-3.0.3-cp37-cp37m-win32.whl", hash = "sha256:b542be2440edc2d48547b5923c408cbe0fc94afb9f18741faa6ae970dbcb9b6d"}, - {file = "greenlet-3.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:01bc7ea167cf943b4c802068e178bbf70ae2e8c080467070d01bfa02f337ee67"}, - {file = "greenlet-3.0.3-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:1996cb9306c8595335bb157d133daf5cf9f693ef413e7673cb07e3e5871379ca"}, - {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc0f794e6ad661e321caa8d2f0a55ce01213c74722587256fb6566049a8b04"}, - {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9db1c18f0eaad2f804728c67d6c610778456e3e1cc4ab4bbd5eeb8e6053c6fc"}, - {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7170375bcc99f1a2fbd9c306f5be8764eaf3ac6b5cb968862cad4c7057756506"}, - {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b66c9c1e7ccabad3a7d037b2bcb740122a7b17a53734b7d72a344ce39882a1b"}, - {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:098d86f528c855ead3479afe84b49242e174ed262456c342d70fc7f972bc13c4"}, - {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:81bb9c6d52e8321f09c3d165b2a78c680506d9af285bfccbad9fb7ad5a5da3e5"}, - {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da"}, - {file = "greenlet-3.0.3-cp38-cp38-win32.whl", hash = "sha256:d46677c85c5ba00a9cb6f7a00b2bfa6f812192d2c9f7d9c4f6a55b60216712f3"}, - {file = "greenlet-3.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:419b386f84949bf0e7c73e6032e3457b82a787c1ab4a0e43732898a761cc9dbf"}, - {file = "greenlet-3.0.3-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:da70d4d51c8b306bb7a031d5cff6cc25ad253affe89b70352af5f1cb68e74b53"}, - {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086152f8fbc5955df88382e8a75984e2bb1c892ad2e3c80a2508954e52295257"}, - {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d73a9fe764d77f87f8ec26a0c85144d6a951a6c438dfe50487df5595c6373eac"}, - {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7dcbe92cc99f08c8dd11f930de4d99ef756c3591a5377d1d9cd7dd5e896da71"}, - {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1551a8195c0d4a68fac7a4325efac0d541b48def35feb49d803674ac32582f61"}, - {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:64d7675ad83578e3fc149b617a444fab8efdafc9385471f868eb5ff83e446b8b"}, - {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b37eef18ea55f2ffd8f00ff8fe7c8d3818abd3e25fb73fae2ca3b672e333a7a6"}, - {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:77457465d89b8263bca14759d7c1684df840b6811b2499838cc5b040a8b5b113"}, - {file = "greenlet-3.0.3-cp39-cp39-win32.whl", hash = "sha256:57e8974f23e47dac22b83436bdcf23080ade568ce77df33159e019d161ce1d1e"}, - {file = "greenlet-3.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:c5ee858cfe08f34712f548c3c363e807e7186f03ad7a5039ebadb29e8c6be067"}, - {file = "greenlet-3.0.3.tar.gz", hash = "sha256:43374442353259554ce33599da8b692d5aa96f8976d567d4badf263371fbe491"}, + {file = "greenlet-3.1.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:0bbae94a29c9e5c7e4a2b7f0aae5c17e8e90acbfd3bf6270eeba60c39fce3563"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fde093fb93f35ca72a556cf72c92ea3ebfda3d79fc35bb19fbe685853869a83"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:36b89d13c49216cadb828db8dfa6ce86bbbc476a82d3a6c397f0efae0525bdd0"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94b6150a85e1b33b40b1464a3f9988dcc5251d6ed06842abff82e42632fac120"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93147c513fac16385d1036b7e5b102c7fbbdb163d556b791f0f11eada7ba65dc"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:da7a9bff22ce038e19bf62c4dd1ec8391062878710ded0a845bcf47cc0200617"}, + {file = "greenlet-3.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b2795058c23988728eec1f36a4e5e4ebad22f8320c85f3587b539b9ac84128d7"}, + {file = "greenlet-3.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ed10eac5830befbdd0c32f83e8aa6288361597550ba669b04c48f0f9a2c843c6"}, + {file = "greenlet-3.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:77c386de38a60d1dfb8e55b8c1101d68c79dfdd25c7095d51fec2dd800892b80"}, + {file = "greenlet-3.1.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:e4d333e558953648ca09d64f13e6d8f0523fa705f51cae3f03b5983489958c70"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09fc016b73c94e98e29af67ab7b9a879c307c6731a2c9da0db5a7d9b7edd1159"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d5e975ca70269d66d17dd995dafc06f1b06e8cb1ec1e9ed54c1d1e4a7c4cf26e"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b2813dc3de8c1ee3f924e4d4227999285fd335d1bcc0d2be6dc3f1f6a318ec1"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e347b3bfcf985a05e8c0b7d462ba6f15b1ee1c909e2dcad795e49e91b152c383"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e8f8c9cb53cdac7ba9793c276acd90168f416b9ce36799b9b885790f8ad6c0a"}, + {file = "greenlet-3.1.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:62ee94988d6b4722ce0028644418d93a52429e977d742ca2ccbe1c4f4a792511"}, + {file = "greenlet-3.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1776fd7f989fc6b8d8c8cb8da1f6b82c5814957264d1f6cf818d475ec2bf6395"}, + {file = "greenlet-3.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:48ca08c771c268a768087b408658e216133aecd835c0ded47ce955381105ba39"}, + {file = "greenlet-3.1.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:4afe7ea89de619adc868e087b4d2359282058479d7cfb94970adf4b55284574d"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f406b22b7c9a9b4f8aa9d2ab13d6ae0ac3e85c9a809bd590ad53fed2bf70dc79"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c3a701fe5a9695b238503ce5bbe8218e03c3bcccf7e204e455e7462d770268aa"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2846930c65b47d70b9d178e89c7e1a69c95c1f68ea5aa0a58646b7a96df12441"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99cfaa2110534e2cf3ba31a7abcac9d328d1d9f1b95beede58294a60348fba36"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1443279c19fca463fc33e65ef2a935a5b09bb90f978beab37729e1c3c6c25fe9"}, + {file = "greenlet-3.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b7cede291382a78f7bb5f04a529cb18e068dd29e0fb27376074b6d0317bf4dd0"}, + {file = "greenlet-3.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23f20bb60ae298d7d8656c6ec6db134bca379ecefadb0b19ce6f19d1f232a942"}, + {file = "greenlet-3.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:7124e16b4c55d417577c2077be379514321916d5790fa287c9ed6f23bd2ffd01"}, + {file = "greenlet-3.1.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:05175c27cb459dcfc05d026c4232f9de8913ed006d42713cb8a5137bd49375f1"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:935e943ec47c4afab8965954bf49bfa639c05d4ccf9ef6e924188f762145c0ff"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:667a9706c970cb552ede35aee17339a18e8f2a87a51fba2ed39ceeeb1004798a"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b8a678974d1f3aa55f6cc34dc480169d58f2e6d8958895d68845fa4ab566509e"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efc0f674aa41b92da8c49e0346318c6075d734994c3c4e4430b1c3f853e498e4"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0153404a4bb921f0ff1abeb5ce8a5131da56b953eda6e14b88dc6bbc04d2049e"}, + {file = "greenlet-3.1.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:275f72decf9932639c1c6dd1013a1bc266438eb32710016a1c742df5da6e60a1"}, + {file = "greenlet-3.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:c4aab7f6381f38a4b42f269057aee279ab0fc7bf2e929e3d4abfae97b682a12c"}, + {file = "greenlet-3.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:b42703b1cf69f2aa1df7d1030b9d77d3e584a70755674d60e710f0af570f3761"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1695e76146579f8c06c1509c7ce4dfe0706f49c6831a817ac04eebb2fd02011"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7876452af029456b3f3549b696bb36a06db7c90747740c5302f74a9e9fa14b13"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4ead44c85f8ab905852d3de8d86f6f8baf77109f9da589cb4fa142bd3b57b475"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8320f64b777d00dd7ccdade271eaf0cad6636343293a25074cc5566160e4de7b"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6510bf84a6b643dabba74d3049ead221257603a253d0a9873f55f6a59a65f822"}, + {file = "greenlet-3.1.1-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:04b013dc07c96f83134b1e99888e7a79979f1a247e2a9f59697fa14b5862ed01"}, + {file = "greenlet-3.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:411f015496fec93c1c8cd4e5238da364e1da7a124bcb293f085bf2860c32c6f6"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47da355d8687fd65240c364c90a31569a133b7b60de111c255ef5b606f2ae291"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:98884ecf2ffb7d7fe6bd517e8eb99d31ff7855a840fa6d0d63cd07c037f6a981"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1d4aeb8891338e60d1ab6127af1fe45def5259def8094b9c7e34690c8858803"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db32b5348615a04b82240cc67983cb315309e88d444a288934ee6ceaebcad6cc"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dcc62f31eae24de7f8dce72134c8651c58000d3b1868e01392baea7c32c247de"}, + {file = "greenlet-3.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1d3755bcb2e02de341c55b4fca7a745a24a9e7212ac953f6b3a48d117d7257aa"}, + {file = "greenlet-3.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:b8da394b34370874b4572676f36acabac172602abf054cbc4ac910219f3340af"}, + {file = "greenlet-3.1.1-cp37-cp37m-win32.whl", hash = "sha256:a0dfc6c143b519113354e780a50381508139b07d2177cb6ad6a08278ec655798"}, + {file = "greenlet-3.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:54558ea205654b50c438029505def3834e80f0869a70fb15b871c29b4575ddef"}, + {file = "greenlet-3.1.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:346bed03fe47414091be4ad44786d1bd8bef0c3fcad6ed3dee074a032ab408a9"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfc59d69fc48664bc693842bd57acfdd490acafda1ab52c7836e3fc75c90a111"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d21e10da6ec19b457b82636209cbe2331ff4306b54d06fa04b7c138ba18c8a81"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:37b9de5a96111fc15418819ab4c4432e4f3c2ede61e660b1e33971eba26ef9ba"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ef9ea3f137e5711f0dbe5f9263e8c009b7069d8a1acea822bd5e9dae0ae49c8"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85f3ff71e2e60bd4b4932a043fbbe0f499e263c628390b285cb599154a3b03b1"}, + {file = "greenlet-3.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:95ffcf719966dd7c453f908e208e14cde192e09fde6c7186c8f1896ef778d8cd"}, + {file = "greenlet-3.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:03a088b9de532cbfe2ba2034b2b85e82df37874681e8c470d6fb2f8c04d7e4b7"}, + {file = "greenlet-3.1.1-cp38-cp38-win32.whl", hash = "sha256:8b8b36671f10ba80e159378df9c4f15c14098c4fd73a36b9ad715f057272fbef"}, + {file = "greenlet-3.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:7017b2be767b9d43cc31416aba48aab0d2309ee31b4dbf10a1d38fb7972bdf9d"}, + {file = "greenlet-3.1.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:396979749bd95f018296af156201d6211240e7a23090f50a8d5d18c370084dc3"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca9d0ff5ad43e785350894d97e13633a66e2b50000e8a183a50a88d834752d42"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f6ff3b14f2df4c41660a7dec01045a045653998784bf8cfcb5a525bdffffbc8f"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94ebba31df2aa506d7b14866fed00ac141a867e63143fe5bca82a8e503b36437"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73aaad12ac0ff500f62cebed98d8789198ea0e6f233421059fa68a5aa7220145"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:63e4844797b975b9af3a3fb8f7866ff08775f5426925e1e0bbcfe7932059a12c"}, + {file = "greenlet-3.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7939aa3ca7d2a1593596e7ac6d59391ff30281ef280d8632fa03d81f7c5f955e"}, + {file = "greenlet-3.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d0028e725ee18175c6e422797c407874da24381ce0690d6b9396c204c7f7276e"}, + {file = "greenlet-3.1.1-cp39-cp39-win32.whl", hash = "sha256:5e06afd14cbaf9e00899fae69b24a32f2196c19de08fcb9f4779dd4f004e5e7c"}, + {file = "greenlet-3.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:3319aa75e0e0639bc15ff54ca327e8dc7a6fe404003496e3c6925cd3142e0e22"}, + {file = "greenlet-3.1.1.tar.gz", hash = "sha256:4ce3ac6cdb6adf7946475d7ef31777c26d94bccc377e070a7986bd2d5c515467"}, ] [package.extras] @@ -785,6 +1001,21 @@ files = [ [package.dependencies] networkx = ">=2" +[[package]] +name = "inflect" +version = "5.6.2" +description = "Correctly generate plurals, singular nouns, ordinals, indefinite articles; convert numbers to words" +optional = false +python-versions = ">=3.7" +files = [ + {file = "inflect-5.6.2-py3-none-any.whl", hash = "sha256:b45d91a4a28a4e617ff1821117439b06eaa86e2a4573154af0149e9be6687238"}, + {file = "inflect-5.6.2.tar.gz", hash = "sha256:aadc7ed73928f5e014129794bbac03058cca35d0a973a5fc4eb45c7fa26005f9"}, +] + +[package.extras] +docs = ["jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx"] +testing = ["pygments", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] + [[package]] name = "iniconfig" version = "2.0.0" @@ -796,6 +1027,20 @@ files = [ {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, ] +[[package]] +name = "isort" +version = "5.13.2" +description = "A Python utility / library to sort Python imports." +optional = false +python-versions = ">=3.8.0" +files = [ + {file = "isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6"}, + {file = "isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109"}, +] + +[package.extras] +colors = ["colorama (>=0.4.6)"] + [[package]] name = "jinja2" version = "3.1.4" @@ -815,72 +1060,84 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "jiter" -version = "0.5.0" +version = "0.6.1" description = "Fast iterable JSON parser." optional = false python-versions = ">=3.8" files = [ - {file = "jiter-0.5.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:b599f4e89b3def9a94091e6ee52e1d7ad7bc33e238ebb9c4c63f211d74822c3f"}, - {file = "jiter-0.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2a063f71c4b06225543dddadbe09d203dc0c95ba352d8b85f1221173480a71d5"}, - {file = "jiter-0.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:acc0d5b8b3dd12e91dd184b87273f864b363dfabc90ef29a1092d269f18c7e28"}, - {file = "jiter-0.5.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c22541f0b672f4d741382a97c65609332a783501551445ab2df137ada01e019e"}, - {file = "jiter-0.5.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:63314832e302cc10d8dfbda0333a384bf4bcfce80d65fe99b0f3c0da8945a91a"}, - {file = "jiter-0.5.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a25fbd8a5a58061e433d6fae6d5298777c0814a8bcefa1e5ecfff20c594bd749"}, - {file = "jiter-0.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:503b2c27d87dfff5ab717a8200fbbcf4714516c9d85558048b1fc14d2de7d8dc"}, - {file = "jiter-0.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6d1f3d27cce923713933a844872d213d244e09b53ec99b7a7fdf73d543529d6d"}, - {file = "jiter-0.5.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c95980207b3998f2c3b3098f357994d3fd7661121f30669ca7cb945f09510a87"}, - {file = "jiter-0.5.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:afa66939d834b0ce063f57d9895e8036ffc41c4bd90e4a99631e5f261d9b518e"}, - {file = "jiter-0.5.0-cp310-none-win32.whl", hash = "sha256:f16ca8f10e62f25fd81d5310e852df6649af17824146ca74647a018424ddeccf"}, - {file = "jiter-0.5.0-cp310-none-win_amd64.whl", hash = "sha256:b2950e4798e82dd9176935ef6a55cf6a448b5c71515a556da3f6b811a7844f1e"}, - {file = "jiter-0.5.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d4c8e1ed0ef31ad29cae5ea16b9e41529eb50a7fba70600008e9f8de6376d553"}, - {file = "jiter-0.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c6f16e21276074a12d8421692515b3fd6d2ea9c94fd0734c39a12960a20e85f3"}, - {file = "jiter-0.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5280e68e7740c8c128d3ae5ab63335ce6d1fb6603d3b809637b11713487af9e6"}, - {file = "jiter-0.5.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:583c57fc30cc1fec360e66323aadd7fc3edeec01289bfafc35d3b9dcb29495e4"}, - {file = "jiter-0.5.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:26351cc14507bdf466b5f99aba3df3143a59da75799bf64a53a3ad3155ecded9"}, - {file = "jiter-0.5.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4829df14d656b3fb87e50ae8b48253a8851c707da9f30d45aacab2aa2ba2d614"}, - {file = "jiter-0.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a42a4bdcf7307b86cb863b2fb9bb55029b422d8f86276a50487982d99eed7c6e"}, - {file = "jiter-0.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04d461ad0aebf696f8da13c99bc1b3e06f66ecf6cfd56254cc402f6385231c06"}, - {file = "jiter-0.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e6375923c5f19888c9226582a124b77b622f8fd0018b843c45eeb19d9701c403"}, - {file = "jiter-0.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2cec323a853c24fd0472517113768c92ae0be8f8c384ef4441d3632da8baa646"}, - {file = "jiter-0.5.0-cp311-none-win32.whl", hash = "sha256:aa1db0967130b5cab63dfe4d6ff547c88b2a394c3410db64744d491df7f069bb"}, - {file = "jiter-0.5.0-cp311-none-win_amd64.whl", hash = "sha256:aa9d2b85b2ed7dc7697597dcfaac66e63c1b3028652f751c81c65a9f220899ae"}, - {file = "jiter-0.5.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9f664e7351604f91dcdd557603c57fc0d551bc65cc0a732fdacbf73ad335049a"}, - {file = "jiter-0.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:044f2f1148b5248ad2c8c3afb43430dccf676c5a5834d2f5089a4e6c5bbd64df"}, - {file = "jiter-0.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:702e3520384c88b6e270c55c772d4bd6d7b150608dcc94dea87ceba1b6391248"}, - {file = "jiter-0.5.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:528d742dcde73fad9d63e8242c036ab4a84389a56e04efd854062b660f559544"}, - {file = "jiter-0.5.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8cf80e5fe6ab582c82f0c3331df27a7e1565e2dcf06265afd5173d809cdbf9ba"}, - {file = "jiter-0.5.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:44dfc9ddfb9b51a5626568ef4e55ada462b7328996294fe4d36de02fce42721f"}, - {file = "jiter-0.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c451f7922992751a936b96c5f5b9bb9312243d9b754c34b33d0cb72c84669f4e"}, - {file = "jiter-0.5.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:308fce789a2f093dca1ff91ac391f11a9f99c35369117ad5a5c6c4903e1b3e3a"}, - {file = "jiter-0.5.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7f5ad4a7c6b0d90776fdefa294f662e8a86871e601309643de30bf94bb93a64e"}, - {file = "jiter-0.5.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ea189db75f8eca08807d02ae27929e890c7d47599ce3d0a6a5d41f2419ecf338"}, - {file = "jiter-0.5.0-cp312-none-win32.whl", hash = "sha256:e3bbe3910c724b877846186c25fe3c802e105a2c1fc2b57d6688b9f8772026e4"}, - {file = "jiter-0.5.0-cp312-none-win_amd64.whl", hash = "sha256:a586832f70c3f1481732919215f36d41c59ca080fa27a65cf23d9490e75b2ef5"}, - {file = "jiter-0.5.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:f04bc2fc50dc77be9d10f73fcc4e39346402ffe21726ff41028f36e179b587e6"}, - {file = "jiter-0.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6f433a4169ad22fcb550b11179bb2b4fd405de9b982601914ef448390b2954f3"}, - {file = "jiter-0.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad4a6398c85d3a20067e6c69890ca01f68659da94d74c800298581724e426c7e"}, - {file = "jiter-0.5.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6baa88334e7af3f4d7a5c66c3a63808e5efbc3698a1c57626541ddd22f8e4fbf"}, - {file = "jiter-0.5.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ece0a115c05efca597c6d938f88c9357c843f8c245dbbb53361a1c01afd7148"}, - {file = "jiter-0.5.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:335942557162ad372cc367ffaf93217117401bf930483b4b3ebdb1223dbddfa7"}, - {file = "jiter-0.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:649b0ee97a6e6da174bffcb3c8c051a5935d7d4f2f52ea1583b5b3e7822fbf14"}, - {file = "jiter-0.5.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f4be354c5de82157886ca7f5925dbda369b77344b4b4adf2723079715f823989"}, - {file = "jiter-0.5.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5206144578831a6de278a38896864ded4ed96af66e1e63ec5dd7f4a1fce38a3a"}, - {file = "jiter-0.5.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8120c60f8121ac3d6f072b97ef0e71770cc72b3c23084c72c4189428b1b1d3b6"}, - {file = "jiter-0.5.0-cp38-none-win32.whl", hash = "sha256:6f1223f88b6d76b519cb033a4d3687ca157c272ec5d6015c322fc5b3074d8a5e"}, - {file = "jiter-0.5.0-cp38-none-win_amd64.whl", hash = "sha256:c59614b225d9f434ea8fc0d0bec51ef5fa8c83679afedc0433905994fb36d631"}, - {file = "jiter-0.5.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:0af3838cfb7e6afee3f00dc66fa24695199e20ba87df26e942820345b0afc566"}, - {file = "jiter-0.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:550b11d669600dbc342364fd4adbe987f14d0bbedaf06feb1b983383dcc4b961"}, - {file = "jiter-0.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:489875bf1a0ffb3cb38a727b01e6673f0f2e395b2aad3c9387f94187cb214bbf"}, - {file = "jiter-0.5.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b250ca2594f5599ca82ba7e68785a669b352156260c5362ea1b4e04a0f3e2389"}, - {file = "jiter-0.5.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ea18e01f785c6667ca15407cd6dabbe029d77474d53595a189bdc813347218e"}, - {file = "jiter-0.5.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:462a52be85b53cd9bffd94e2d788a09984274fe6cebb893d6287e1c296d50653"}, - {file = "jiter-0.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:92cc68b48d50fa472c79c93965e19bd48f40f207cb557a8346daa020d6ba973b"}, - {file = "jiter-0.5.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1c834133e59a8521bc87ebcad773608c6fa6ab5c7a022df24a45030826cf10bc"}, - {file = "jiter-0.5.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab3a71ff31cf2d45cb216dc37af522d335211f3a972d2fe14ea99073de6cb104"}, - {file = "jiter-0.5.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:cccd3af9c48ac500c95e1bcbc498020c87e1781ff0345dd371462d67b76643eb"}, - {file = "jiter-0.5.0-cp39-none-win32.whl", hash = "sha256:368084d8d5c4fc40ff7c3cc513c4f73e02c85f6009217922d0823a48ee7adf61"}, - {file = "jiter-0.5.0-cp39-none-win_amd64.whl", hash = "sha256:ce03f7b4129eb72f1687fa11300fbf677b02990618428934662406d2a76742a1"}, - {file = "jiter-0.5.0.tar.gz", hash = "sha256:1d916ba875bcab5c5f7d927df998c4cb694d27dceddf3392e58beaf10563368a"}, + {file = "jiter-0.6.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:d08510593cb57296851080018006dfc394070178d238b767b1879dc1013b106c"}, + {file = "jiter-0.6.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:adef59d5e2394ebbad13b7ed5e0306cceb1df92e2de688824232a91588e77aa7"}, + {file = "jiter-0.6.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b3e02f7a27f2bcc15b7d455c9df05df8ffffcc596a2a541eeda9a3110326e7a3"}, + {file = "jiter-0.6.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed69a7971d67b08f152c17c638f0e8c2aa207e9dd3a5fcd3cba294d39b5a8d2d"}, + {file = "jiter-0.6.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b2019d966e98f7c6df24b3b8363998575f47d26471bfb14aade37630fae836a1"}, + {file = "jiter-0.6.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:36c0b51a285b68311e207a76c385650322734c8717d16c2eb8af75c9d69506e7"}, + {file = "jiter-0.6.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:220e0963b4fb507c525c8f58cde3da6b1be0bfddb7ffd6798fb8f2531226cdb1"}, + {file = "jiter-0.6.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:aa25c7a9bf7875a141182b9c95aed487add635da01942ef7ca726e42a0c09058"}, + {file = "jiter-0.6.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e90552109ca8ccd07f47ca99c8a1509ced93920d271bb81780a973279974c5ab"}, + {file = "jiter-0.6.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:67723a011964971864e0b484b0ecfee6a14de1533cff7ffd71189e92103b38a8"}, + {file = "jiter-0.6.1-cp310-none-win32.whl", hash = "sha256:33af2b7d2bf310fdfec2da0177eab2fedab8679d1538d5b86a633ebfbbac4edd"}, + {file = "jiter-0.6.1-cp310-none-win_amd64.whl", hash = "sha256:7cea41c4c673353799906d940eee8f2d8fd1d9561d734aa921ae0f75cb9732f4"}, + {file = "jiter-0.6.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:b03c24e7da7e75b170c7b2b172d9c5e463aa4b5c95696a368d52c295b3f6847f"}, + {file = "jiter-0.6.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:47fee1be677b25d0ef79d687e238dc6ac91a8e553e1a68d0839f38c69e0ee491"}, + {file = "jiter-0.6.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25f0d2f6e01a8a0fb0eab6d0e469058dab2be46ff3139ed2d1543475b5a1d8e7"}, + {file = "jiter-0.6.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0b809e39e342c346df454b29bfcc7bca3d957f5d7b60e33dae42b0e5ec13e027"}, + {file = "jiter-0.6.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e9ac7c2f092f231f5620bef23ce2e530bd218fc046098747cc390b21b8738a7a"}, + {file = "jiter-0.6.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e51a2d80d5fe0ffb10ed2c82b6004458be4a3f2b9c7d09ed85baa2fbf033f54b"}, + {file = "jiter-0.6.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3343d4706a2b7140e8bd49b6c8b0a82abf9194b3f0f5925a78fc69359f8fc33c"}, + {file = "jiter-0.6.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:82521000d18c71e41c96960cb36e915a357bc83d63a8bed63154b89d95d05ad1"}, + {file = "jiter-0.6.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3c843e7c1633470708a3987e8ce617ee2979ee18542d6eb25ae92861af3f1d62"}, + {file = "jiter-0.6.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a2e861658c3fe849efc39b06ebb98d042e4a4c51a8d7d1c3ddc3b1ea091d0784"}, + {file = "jiter-0.6.1-cp311-none-win32.whl", hash = "sha256:7d72fc86474862c9c6d1f87b921b70c362f2b7e8b2e3c798bb7d58e419a6bc0f"}, + {file = "jiter-0.6.1-cp311-none-win_amd64.whl", hash = "sha256:3e36a320634f33a07794bb15b8da995dccb94f944d298c8cfe2bd99b1b8a574a"}, + {file = "jiter-0.6.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:1fad93654d5a7dcce0809aff66e883c98e2618b86656aeb2129db2cd6f26f867"}, + {file = "jiter-0.6.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4e6e340e8cd92edab7f6a3a904dbbc8137e7f4b347c49a27da9814015cc0420c"}, + {file = "jiter-0.6.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:691352e5653af84ed71763c3c427cff05e4d658c508172e01e9c956dfe004aba"}, + {file = "jiter-0.6.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:defee3949313c1f5b55e18be45089970cdb936eb2a0063f5020c4185db1b63c9"}, + {file = "jiter-0.6.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:26d2bdd5da097e624081c6b5d416d3ee73e5b13f1703bcdadbb1881f0caa1933"}, + {file = "jiter-0.6.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18aa9d1626b61c0734b973ed7088f8a3d690d0b7f5384a5270cd04f4d9f26c86"}, + {file = "jiter-0.6.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a3567c8228afa5ddcce950631c6b17397ed178003dc9ee7e567c4c4dcae9fa0"}, + {file = "jiter-0.6.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e5c0507131c922defe3f04c527d6838932fcdfd69facebafd7d3574fa3395314"}, + {file = "jiter-0.6.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:540fcb224d7dc1bcf82f90f2ffb652df96f2851c031adca3c8741cb91877143b"}, + {file = "jiter-0.6.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e7b75436d4fa2032b2530ad989e4cb0ca74c655975e3ff49f91a1a3d7f4e1df2"}, + {file = "jiter-0.6.1-cp312-none-win32.whl", hash = "sha256:883d2ced7c21bf06874fdeecab15014c1c6d82216765ca6deef08e335fa719e0"}, + {file = "jiter-0.6.1-cp312-none-win_amd64.whl", hash = "sha256:91e63273563401aadc6c52cca64a7921c50b29372441adc104127b910e98a5b6"}, + {file = "jiter-0.6.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:852508a54fe3228432e56019da8b69208ea622a3069458252f725d634e955b31"}, + {file = "jiter-0.6.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f491cc69ff44e5a1e8bc6bf2b94c1f98d179e1aaf4a554493c171a5b2316b701"}, + {file = "jiter-0.6.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc56c8f0b2a28ad4d8047f3ae62d25d0e9ae01b99940ec0283263a04724de1f3"}, + {file = "jiter-0.6.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:51b58f7a0d9e084a43b28b23da2b09fc5e8df6aa2b6a27de43f991293cab85fd"}, + {file = "jiter-0.6.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5f79ce15099154c90ef900d69c6b4c686b64dfe23b0114e0971f2fecd306ec6c"}, + {file = "jiter-0.6.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:03a025b52009f47e53ea619175d17e4ded7c035c6fbd44935cb3ada11e1fd592"}, + {file = "jiter-0.6.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c74a8d93718137c021d9295248a87c2f9fdc0dcafead12d2930bc459ad40f885"}, + {file = "jiter-0.6.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:40b03b75f903975f68199fc4ec73d546150919cb7e534f3b51e727c4d6ccca5a"}, + {file = "jiter-0.6.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:825651a3f04cf92a661d22cad61fc913400e33aa89b3e3ad9a6aa9dc8a1f5a71"}, + {file = "jiter-0.6.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:928bf25eb69ddb292ab8177fe69d3fbf76c7feab5fce1c09265a7dccf25d3991"}, + {file = "jiter-0.6.1-cp313-none-win32.whl", hash = "sha256:352cd24121e80d3d053fab1cc9806258cad27c53cad99b7a3cac57cf934b12e4"}, + {file = "jiter-0.6.1-cp313-none-win_amd64.whl", hash = "sha256:be7503dd6f4bf02c2a9bacb5cc9335bc59132e7eee9d3e931b13d76fd80d7fda"}, + {file = "jiter-0.6.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:31d8e00e1fb4c277df8ab6f31a671f509ebc791a80e5c61fdc6bc8696aaa297c"}, + {file = "jiter-0.6.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:77c296d65003cd7ee5d7b0965f6acbe6cffaf9d1fa420ea751f60ef24e85fed5"}, + {file = "jiter-0.6.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aeeb0c0325ef96c12a48ea7e23e2e86fe4838e6e0a995f464cf4c79fa791ceeb"}, + {file = "jiter-0.6.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a31c6fcbe7d6c25d6f1cc6bb1cba576251d32795d09c09961174fe461a1fb5bd"}, + {file = "jiter-0.6.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59e2b37f3b9401fc9e619f4d4badcab2e8643a721838bcf695c2318a0475ae42"}, + {file = "jiter-0.6.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bae5ae4853cb9644144e9d0755854ce5108d470d31541d83f70ca7ecdc2d1637"}, + {file = "jiter-0.6.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9df588e9c830b72d8db1dd7d0175af6706b0904f682ea9b1ca8b46028e54d6e9"}, + {file = "jiter-0.6.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:15f8395e835cf561c85c1adee72d899abf2733d9df72e9798e6d667c9b5c1f30"}, + {file = "jiter-0.6.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5a99d4e0b5fc3b05ea732d67eb2092fe894e95a90e6e413f2ea91387e228a307"}, + {file = "jiter-0.6.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:a311df1fa6be0ccd64c12abcd85458383d96e542531bafbfc0a16ff6feda588f"}, + {file = "jiter-0.6.1-cp38-none-win32.whl", hash = "sha256:81116a6c272a11347b199f0e16b6bd63f4c9d9b52bc108991397dd80d3c78aba"}, + {file = "jiter-0.6.1-cp38-none-win_amd64.whl", hash = "sha256:13f9084e3e871a7c0b6e710db54444088b1dd9fbefa54d449b630d5e73bb95d0"}, + {file = "jiter-0.6.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:f1c53615fcfec3b11527c08d19cff6bc870da567ce4e57676c059a3102d3a082"}, + {file = "jiter-0.6.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f791b6a4da23238c17a81f44f5b55d08a420c5692c1fda84e301a4b036744eb1"}, + {file = "jiter-0.6.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c97e90fec2da1d5f68ef121444c2c4fa72eabf3240829ad95cf6bbeca42a301"}, + {file = "jiter-0.6.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3cbc1a66b4e41511209e97a2866898733c0110b7245791ac604117b7fb3fedb7"}, + {file = "jiter-0.6.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e4e85f9e12cd8418ab10e1fcf0e335ae5bb3da26c4d13a0fd9e6a17a674783b6"}, + {file = "jiter-0.6.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08be33db6dcc374c9cc19d3633af5e47961a7b10d4c61710bd39e48d52a35824"}, + {file = "jiter-0.6.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:677be9550004f5e010d673d3b2a2b815a8ea07a71484a57d3f85dde7f14cf132"}, + {file = "jiter-0.6.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e8bd065be46c2eecc328e419d6557bbc37844c88bb07b7a8d2d6c91c7c4dedc9"}, + {file = "jiter-0.6.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bd95375ce3609ec079a97c5d165afdd25693302c071ca60c7ae1cf826eb32022"}, + {file = "jiter-0.6.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:db459ed22d0208940d87f614e1f0ea5a946d29a3cfef71f7e1aab59b6c6b2afb"}, + {file = "jiter-0.6.1-cp39-none-win32.whl", hash = "sha256:d71c962f0971347bd552940ab96aa42ceefcd51b88c4ced8a27398182efa8d80"}, + {file = "jiter-0.6.1-cp39-none-win_amd64.whl", hash = "sha256:d465db62d2d10b489b7e7a33027c4ae3a64374425d757e963f86df5b5f2e7fc5"}, + {file = "jiter-0.6.1.tar.gz", hash = "sha256:e19cd21221fc139fb032e4112986656cb2739e9fe6d84c13956ab30ccc7d4449"}, ] [[package]] @@ -957,13 +1214,13 @@ tenacity = ">=8.1.0,<8.4.0 || >8.4.0,<10" [[package]] name = "langchain-core" -version = "0.3.12" +version = "0.3.13" description = "Building applications with LLMs through composability" optional = false python-versions = "<4.0,>=3.9" files = [ - {file = "langchain_core-0.3.12-py3-none-any.whl", hash = "sha256:46050d34f5fa36dc57dca971c6a26f505643dd05ee0492c7ac286d0a78a82037"}, - {file = "langchain_core-0.3.12.tar.gz", hash = "sha256:98a3c078e375786aa84939bfd1111263af2f3bc402bbe2cac9fa18a387459cf2"}, + {file = "langchain_core-0.3.13-py3-none-any.whl", hash = "sha256:e79cfac046cab293c02047f081741f4a433ca5aa54a3973e179eaef147cdfba4"}, + {file = "langchain_core-0.3.13.tar.gz", hash = "sha256:d3a6c838284ff73705dd0f24a36cd8b2fa34a348e6b357e6b3d58199ab063cde"}, ] [package.dependencies] @@ -994,13 +1251,13 @@ langchain-core = ">=0.3.0,<0.4.0" [[package]] name = "langsmith" -version = "0.1.131" +version = "0.1.137" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.131-py3-none-any.whl", hash = "sha256:80c106b1c42307195cc0bb3a596472c41ef91b79d15bcee9938307800336c563"}, - {file = "langsmith-0.1.131.tar.gz", hash = "sha256:626101a3bf3ca481e5110d5155ace8aa066e4e9cc2fa7d96c8290ade0fbff797"}, + {file = "langsmith-0.1.137-py3-none-any.whl", hash = "sha256:4256d5c61133749890f7b5c88321dbb133ce0f440c621ea28e76513285859b81"}, + {file = "langsmith-0.1.137.tar.gz", hash = "sha256:56cdfcc6c74cb20a3f437d5bd144feb5bf93f54c5a2918d1e568cbd084a372d4"}, ] [package.dependencies] @@ -1015,131 +1272,138 @@ requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "libcst" -version = "1.4.0" -description = "A concrete syntax tree with AST-like properties for Python 3.0 through 3.12 programs." +version = "1.5.0" +description = "A concrete syntax tree with AST-like properties for Python 3.0 through 3.13 programs." optional = false python-versions = ">=3.9" files = [ - {file = "libcst-1.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:279b54568ea1f25add50ea4ba3d76d4f5835500c82f24d54daae4c5095b986aa"}, - {file = "libcst-1.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3401dae41fe24565387a65baee3887e31a44e3e58066b0250bc3f3ccf85b1b5a"}, - {file = "libcst-1.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1989fa12d3cd79118ebd29ebe2a6976d23d509b1a4226bc3d66fcb7cb50bd5d"}, - {file = "libcst-1.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:addc6d585141a7677591868886f6bda0577529401a59d210aa8112114340e129"}, - {file = "libcst-1.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:17d71001cb25e94cfe8c3d997095741a8c4aa7a6d234c0f972bc42818c88dfaf"}, - {file = "libcst-1.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:2d47de16d105e7dd5f4e01a428d9f4dc1e71efd74f79766daf54528ce37f23c3"}, - {file = "libcst-1.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e6227562fc5c9c1efd15dfe90b0971ae254461b8b6b23c1b617139b6003de1c1"}, - {file = "libcst-1.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3399e6c95df89921511b44d8c5bf6a75bcbc2d51f1f6429763609ba005c10f6b"}, - {file = "libcst-1.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48601e3e590e2d6a7ab8c019cf3937c70511a78d778ab3333764531253acdb33"}, - {file = "libcst-1.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f42797309bb725f0f000510d5463175ccd7155395f09b5e7723971b0007a976d"}, - {file = "libcst-1.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cb4e42ea107a37bff7f9fdbee9532d39f9ea77b89caa5c5112b37057b12e0838"}, - {file = "libcst-1.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:9d0cc3c5a2a51fa7e1d579a828c0a2e46b2170024fd8b1a0691c8a52f3abb2d9"}, - {file = "libcst-1.4.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7ece51d935bc9bf60b528473d2e5cc67cbb88e2f8146297e40ee2c7d80be6f13"}, - {file = "libcst-1.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:81653dea1cdfa4c6520a7c5ffb95fa4d220cbd242e446c7a06d42d8636bfcbba"}, - {file = "libcst-1.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6abce0e66bba2babfadc20530fd3688f672d565674336595b4623cd800b91ef"}, - {file = "libcst-1.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5da9d7dc83801aba3b8d911f82dc1a375db0d508318bad79d9fb245374afe068"}, - {file = "libcst-1.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c54aa66c86d8ece9c93156a2cf5ca512b0dce40142fe9e072c86af2bf892411"}, - {file = "libcst-1.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:62e2682ee1567b6a89c91853865372bf34f178bfd237853d84df2b87b446e654"}, - {file = "libcst-1.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b8ecdba8934632b4dadacb666cd3816627a6ead831b806336972ccc4ba7ca0e9"}, - {file = "libcst-1.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8e54c777b8d27339b70f304d16fc8bc8674ef1bd34ed05ea874bf4921eb5a313"}, - {file = "libcst-1.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:061d6855ef30efe38b8a292b7e5d57c8e820e71fc9ec9846678b60a934b53bbb"}, - {file = "libcst-1.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb0abf627ee14903d05d0ad9b2c6865f1b21eb4081e2c7bea1033f85db2b8bae"}, - {file = "libcst-1.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d024f44059a853b4b852cfc04fec33e346659d851371e46fc8e7c19de24d3da9"}, - {file = "libcst-1.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:3c6a8faab9da48c5b371557d0999b4ca51f4f2cbd37ee8c2c4df0ac01c781465"}, - {file = "libcst-1.4.0.tar.gz", hash = "sha256:449e0b16604f054fa7f27c3ffe86ea7ef6c409836fe68fe4e752a1894175db00"}, + {file = "libcst-1.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:23d0e07fd3ed11480f8993a1e99d58a45f914a711b14f858b8db08ae861a8a34"}, + {file = "libcst-1.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d92c5ae2e2dc9356ad7e3d05077d9b7e5065423e45788fd86729c88729e45c6e"}, + {file = "libcst-1.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:96adc45e96476350df6b8a5ddbb1e1d6a83a7eb3f13087e52eb7cd2f9b65bcc7"}, + {file = "libcst-1.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d5978fd60c66794bb60d037b2e6427ea52d032636e84afce32b0f04e1cf500a"}, + {file = "libcst-1.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6502aeb11412afc759036160c686be1107eb5a4466db56b207c786b9b4da7c4"}, + {file = "libcst-1.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:9cccfc0a78e110c0d0a9d2c6fdeb29feb5274c9157508a8baef7edf352420f6d"}, + {file = "libcst-1.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:585b3aa705b3767d717d2100935d8ef557275ecdd3fac81c3e28db0959efb0ea"}, + {file = "libcst-1.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8935dd3393e30c2f97344866a4cb14efe560200e232166a8db1de7865c2ef8b2"}, + {file = "libcst-1.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc80ea16c7d44e38f193e4d4ef7ff1e0ba72d8e60e8b61ac6f4c87f070a118bd"}, + {file = "libcst-1.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02be4aab728261bb76d16e77c9a457884cebb60d09c8edee844de43b0e08aff7"}, + {file = "libcst-1.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a8fcd78be4d9ce3c36d0c5d0bdd384e0c7d5f72970a9e4ebd56070141972b4ad"}, + {file = "libcst-1.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:52b6aadfe54e3ae52c3b815eaaa17ba4da9ff010d5e8adf6a70697872886dd10"}, + {file = "libcst-1.5.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:83bc5fbe34d33597af1d5ea113dcb9b5dd5afe5a5f4316bac4293464d5e3971a"}, + {file = "libcst-1.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5f10124bf99a0b075eae136ef0ce06204e5f6b8da4596a9c4853a0663e80ddf3"}, + {file = "libcst-1.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48e581af6127c5af4c9f483e5986d94f0c6b2366967ee134f0a8eba0aa4c8c12"}, + {file = "libcst-1.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7dba93cca0a5c6d771ed444c44d21ce8ea9b277af7036cea3743677aba9fbbb8"}, + {file = "libcst-1.5.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:80b5c4d87721a7bab265c202575809b810815ab81d5e2e7a5d4417a087975840"}, + {file = "libcst-1.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:b48bf71d52c1e891a0948465a94d9817b5fc1ec1a09603566af90585f3b11948"}, + {file = "libcst-1.5.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:88520b6dea59eaea0cae80f77c0a632604a82c5b2d23dedb4b5b34035cbf1615"}, + {file = "libcst-1.5.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:208ea92d80b2eeed8cbc879d5f39f241582a5d56b916b1b65ed2be2f878a2425"}, + {file = "libcst-1.5.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4592872aaf5b7fa5c2727a7d73c0985261f1b3fe7eff51f4fd5b8174f30b4e2"}, + {file = "libcst-1.5.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2788b2b5838b78fe15df8e9fa6b6903195ea49b2d2ba43e8f423f6c90e4b69f"}, + {file = "libcst-1.5.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b5b5bcd3a9ba92840f27ad34eaa038acbee195ec337da39536c0a2efbbf28efd"}, + {file = "libcst-1.5.0-cp313-cp313-win_amd64.whl", hash = "sha256:4d6acb0bdee1e55b44c6215c59755ec4693ac01e74bb1fde04c37358b378835d"}, + {file = "libcst-1.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6453b5a8755a6eee3ad67ee246f13a8eac9827d2cfc8e4a269e8bf0393db74bc"}, + {file = "libcst-1.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:40748361f4ea66ab6cdd82f8501c82c29808317ac7a3bd132074efd5fd9bfae2"}, + {file = "libcst-1.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f71aed85932c2ea92058fd9bbd99a6478bd69eada041c3726b4f4c9af1f564e"}, + {file = "libcst-1.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b60b09abcc2848ab52d479c3a9b71b606d91a941e3779616efd083bb87dbe8ad"}, + {file = "libcst-1.5.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fb324ed20f3a725d152df5dba8d80f7e126d9c93cced581bf118a5fc18c1065"}, + {file = "libcst-1.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:99e7c52150a135d66716b03e00c7b1859a44336dc2a2bf8f9acc164494308531"}, + {file = "libcst-1.5.0.tar.gz", hash = "sha256:8478abf21ae3861a073e898d80b822bd56e578886331b33129ba77fec05b8c24"}, ] [package.dependencies] pyyaml = ">=5.2" [package.extras] -dev = ["Sphinx (>=5.1.1)", "black (==23.12.1)", "build (>=0.10.0)", "coverage (>=4.5.4)", "fixit (==2.1.0)", "flake8 (==7.0.0)", "hypothesis (>=4.36.0)", "hypothesmith (>=0.0.4)", "jinja2 (==3.1.4)", "jupyter (>=1.0.0)", "maturin (>=0.8.3,<1.6)", "nbsphinx (>=0.4.2)", "prompt-toolkit (>=2.0.9)", "pyre-check (==0.9.18)", "setuptools-rust (>=1.5.2)", "setuptools-scm (>=6.0.1)", "slotscheck (>=0.7.1)", "sphinx-rtd-theme (>=0.4.3)", "ufmt (==2.6.0)", "usort (==1.0.8.post1)"] +dev = ["Sphinx (>=5.1.1)", "black (==24.8.0)", "build (>=0.10.0)", "coverage[toml] (>=4.5.4)", "fixit (==2.1.0)", "flake8 (==7.1.1)", "hypothesis (>=4.36.0)", "hypothesmith (>=0.0.4)", "jinja2 (==3.1.4)", "jupyter (>=1.0.0)", "maturin (>=1.7.0,<1.8)", "nbsphinx (>=0.4.2)", "prompt-toolkit (>=2.0.9)", "pyre-check (==0.9.18)", "setuptools-rust (>=1.5.2)", "setuptools-scm (>=6.0.1)", "slotscheck (>=0.7.1)", "sphinx-rtd-theme (>=0.4.3)", "ufmt (==2.7.3)", "usort (==1.0.8.post1)"] [[package]] name = "markupsafe" -version = "2.1.5" +version = "3.0.2" description = "Safely add untrusted strings to HTML/XML markup." optional = false -python-versions = ">=3.7" +python-versions = ">=3.9" files = [ - {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, - {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-win32.whl", hash = "sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a"}, + {file = "markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0"}, ] [[package]] name = "marshmallow" -version = "3.22.0" +version = "3.23.0" description = "A lightweight library for converting complex datatypes to and from native Python datatypes." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "marshmallow-3.22.0-py3-none-any.whl", hash = "sha256:71a2dce49ef901c3f97ed296ae5051135fd3febd2bf43afe0ae9a82143a494d9"}, - {file = "marshmallow-3.22.0.tar.gz", hash = "sha256:4972f529104a220bb8637d595aa4c9762afbe7f7a77d82dc58c1615d70c5823e"}, + {file = "marshmallow-3.23.0-py3-none-any.whl", hash = "sha256:82f20a2397834fe6d9611b241f2f7e7b680ed89c49f84728a1ad937be6b4bdf4"}, + {file = "marshmallow-3.23.0.tar.gz", hash = "sha256:98d8827a9f10c03d44ead298d2e99c6aea8197df18ccfad360dae7f89a50da2e"}, ] [package.dependencies] packaging = ">=17.0" [package.extras] -dev = ["marshmallow[tests]", "pre-commit (>=3.5,<4.0)", "tox"] -docs = ["alabaster (==1.0.0)", "autodocsumm (==0.2.13)", "sphinx (==8.0.2)", "sphinx-issues (==4.1.0)", "sphinx-version-warning (==1.1.2)"] -tests = ["pytest", "pytz", "simplejson"] +dev = ["marshmallow[tests]", "pre-commit (>=3.5,<5.0)", "tox"] +docs = ["alabaster (==1.0.0)", "autodocsumm (==0.2.13)", "sphinx (==8.1.3)", "sphinx-issues (==5.0.0)", "sphinx-version-warning (==1.1.2)"] +tests = ["pytest", "simplejson"] [[package]] name = "msgspec" @@ -1307,21 +1571,22 @@ files = [ [[package]] name = "networkx" -version = "3.1" +version = "3.4.2" description = "Python package for creating and manipulating graphs and networks" optional = false -python-versions = ">=3.8" +python-versions = ">=3.10" files = [ - {file = "networkx-3.1-py3-none-any.whl", hash = "sha256:4f33f68cb2afcf86f28a45f43efc27a9386b535d567d2127f8f61d51dec58d36"}, - {file = "networkx-3.1.tar.gz", hash = "sha256:de346335408f84de0eada6ff9fafafff9bcda11f0a0dfaa931133debb146ab61"}, + {file = "networkx-3.4.2-py3-none-any.whl", hash = "sha256:df5d4365b724cf81b8c6a7312509d0c22386097011ad1abe274afd5e9d3bbc5f"}, + {file = "networkx-3.4.2.tar.gz", hash = "sha256:307c3669428c5362aab27c8a1260aa8f47c4e91d3891f48be0141738d8d053e1"}, ] [package.extras] -default = ["matplotlib (>=3.4)", "numpy (>=1.20)", "pandas (>=1.3)", "scipy (>=1.8)"] -developer = ["mypy (>=1.1)", "pre-commit (>=3.2)"] -doc = ["nb2plots (>=0.6)", "numpydoc (>=1.5)", "pillow (>=9.4)", "pydata-sphinx-theme (>=0.13)", "sphinx (>=6.1)", "sphinx-gallery (>=0.12)", "texext (>=0.6.7)"] -extra = ["lxml (>=4.6)", "pydot (>=1.4.2)", "pygraphviz (>=1.10)", "sympy (>=1.10)"] -test = ["codecov (>=2.1)", "pytest (>=7.2)", "pytest-cov (>=4.0)"] +default = ["matplotlib (>=3.7)", "numpy (>=1.24)", "pandas (>=2.0)", "scipy (>=1.10,!=1.11.0,!=1.11.1)"] +developer = ["changelist (==0.5)", "mypy (>=1.1)", "pre-commit (>=3.2)", "rtoml"] +doc = ["intersphinx-registry", "myst-nb (>=1.1)", "numpydoc (>=1.8.0)", "pillow (>=9.4)", "pydata-sphinx-theme (>=0.15)", "sphinx (>=7.3)", "sphinx-gallery (>=0.16)", "texext (>=0.6.7)"] +example = ["cairocffi (>=1.7)", "contextily (>=1.6)", "igraph (>=0.11)", "momepy (>=0.7.2)", "osmnx (>=1.9)", "scikit-learn (>=1.5)", "seaborn (>=0.13)"] +extra = ["lxml (>=4.6)", "pydot (>=3.0.1)", "pygraphviz (>=1.14)", "sympy (>=1.10)"] +test = ["pytest (>=7.2)", "pytest-cov (>=4.0)"] [[package]] name = "ninja" @@ -1413,13 +1678,13 @@ signedtoken = ["cryptography (>=3.0.0)", "pyjwt (>=2.0.0,<3)"] [[package]] name = "openai" -version = "1.51.0" +version = "1.52.2" description = "The official Python library for the openai API" optional = false python-versions = ">=3.7.1" files = [ - {file = "openai-1.51.0-py3-none-any.whl", hash = "sha256:d9affafb7e51e5a27dce78589d4964ce4d6f6d560307265933a94b2e3f3c5d2c"}, - {file = "openai-1.51.0.tar.gz", hash = "sha256:8dc4f9d75ccdd5466fc8c99a952186eddceb9fd6ba694044773f3736a847149d"}, + {file = "openai-1.52.2-py3-none-any.whl", hash = "sha256:57e9e37bc407f39bb6ec3a27d7e8fb9728b2779936daa1fcf95df17d3edfaccc"}, + {file = "openai-1.52.2.tar.gz", hash = "sha256:87b7d0f69d85f5641678d414b7ee3082363647a5c66a462ed7f3ccb59582da0d"}, ] [package.dependencies] @@ -1437,68 +1702,69 @@ datalib = ["numpy (>=1)", "pandas (>=1.2.3)", "pandas-stubs (>=1.1.0.11)"] [[package]] name = "orjson" -version = "3.10.7" +version = "3.10.10" description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" optional = false python-versions = ">=3.8" files = [ - {file = "orjson-3.10.7-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:74f4544f5a6405b90da8ea724d15ac9c36da4d72a738c64685003337401f5c12"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34a566f22c28222b08875b18b0dfbf8a947e69df21a9ed5c51a6bf91cfb944ac"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bf6ba8ebc8ef5792e2337fb0419f8009729335bb400ece005606336b7fd7bab7"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac7cf6222b29fbda9e3a472b41e6a5538b48f2c8f99261eecd60aafbdb60690c"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de817e2f5fc75a9e7dd350c4b0f54617b280e26d1631811a43e7e968fa71e3e9"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:348bdd16b32556cf8d7257b17cf2bdb7ab7976af4af41ebe79f9796c218f7e91"}, - {file = "orjson-3.10.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:479fd0844ddc3ca77e0fd99644c7fe2de8e8be1efcd57705b5c92e5186e8a250"}, - {file = "orjson-3.10.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fdf5197a21dd660cf19dfd2a3ce79574588f8f5e2dbf21bda9ee2d2b46924d84"}, - {file = "orjson-3.10.7-cp310-none-win32.whl", hash = "sha256:d374d36726746c81a49f3ff8daa2898dccab6596864ebe43d50733275c629175"}, - {file = "orjson-3.10.7-cp310-none-win_amd64.whl", hash = "sha256:cb61938aec8b0ffb6eef484d480188a1777e67b05d58e41b435c74b9d84e0b9c"}, - {file = "orjson-3.10.7-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:7db8539039698ddfb9a524b4dd19508256107568cdad24f3682d5773e60504a2"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:480f455222cb7a1dea35c57a67578848537d2602b46c464472c995297117fa09"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8a9c9b168b3a19e37fe2778c0003359f07822c90fdff8f98d9d2a91b3144d8e0"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8de062de550f63185e4c1c54151bdddfc5625e37daf0aa1e75d2a1293e3b7d9a"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6b0dd04483499d1de9c8f6203f8975caf17a6000b9c0c54630cef02e44ee624e"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b58d3795dafa334fc8fd46f7c5dc013e6ad06fd5b9a4cc98cb1456e7d3558bd6"}, - {file = "orjson-3.10.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:33cfb96c24034a878d83d1a9415799a73dc77480e6c40417e5dda0710d559ee6"}, - {file = "orjson-3.10.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e724cebe1fadc2b23c6f7415bad5ee6239e00a69f30ee423f319c6af70e2a5c0"}, - {file = "orjson-3.10.7-cp311-none-win32.whl", hash = "sha256:82763b46053727a7168d29c772ed5c870fdae2f61aa8a25994c7984a19b1021f"}, - {file = "orjson-3.10.7-cp311-none-win_amd64.whl", hash = "sha256:eb8d384a24778abf29afb8e41d68fdd9a156cf6e5390c04cc07bbc24b89e98b5"}, - {file = "orjson-3.10.7-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:44a96f2d4c3af51bfac6bc4ef7b182aa33f2f054fd7f34cc0ee9a320d051d41f"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76ac14cd57df0572453543f8f2575e2d01ae9e790c21f57627803f5e79b0d3c3"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bdbb61dcc365dd9be94e8f7df91975edc9364d6a78c8f7adb69c1cdff318ec93"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b48b3db6bb6e0a08fa8c83b47bc169623f801e5cc4f24442ab2b6617da3b5313"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:23820a1563a1d386414fef15c249040042b8e5d07b40ab3fe3efbfbbcbcb8864"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0c6a008e91d10a2564edbb6ee5069a9e66df3fbe11c9a005cb411f441fd2c09"}, - {file = "orjson-3.10.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d352ee8ac1926d6193f602cbe36b1643bbd1bbcb25e3c1a657a4390f3000c9a5"}, - {file = "orjson-3.10.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d2d9f990623f15c0ae7ac608103c33dfe1486d2ed974ac3f40b693bad1a22a7b"}, - {file = "orjson-3.10.7-cp312-none-win32.whl", hash = "sha256:7c4c17f8157bd520cdb7195f75ddbd31671997cbe10aee559c2d613592e7d7eb"}, - {file = "orjson-3.10.7-cp312-none-win_amd64.whl", hash = "sha256:1d9c0e733e02ada3ed6098a10a8ee0052dd55774de3d9110d29868d24b17faa1"}, - {file = "orjson-3.10.7-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:77d325ed866876c0fa6492598ec01fe30e803272a6e8b10e992288b009cbe149"}, - {file = "orjson-3.10.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ea2c232deedcb605e853ae1db2cc94f7390ac776743b699b50b071b02bea6fe"}, - {file = "orjson-3.10.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:3dcfbede6737fdbef3ce9c37af3fb6142e8e1ebc10336daa05872bfb1d87839c"}, - {file = "orjson-3.10.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:11748c135f281203f4ee695b7f80bb1358a82a63905f9f0b794769483ea854ad"}, - {file = "orjson-3.10.7-cp313-none-win32.whl", hash = "sha256:a7e19150d215c7a13f39eb787d84db274298d3f83d85463e61d277bbd7f401d2"}, - {file = "orjson-3.10.7-cp313-none-win_amd64.whl", hash = "sha256:eef44224729e9525d5261cc8d28d6b11cafc90e6bd0be2157bde69a52ec83024"}, - {file = "orjson-3.10.7-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:6ea2b2258eff652c82652d5e0f02bd5e0463a6a52abb78e49ac288827aaa1469"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:430ee4d85841e1483d487e7b81401785a5dfd69db5de01314538f31f8fbf7ee1"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4b6146e439af4c2472c56f8540d799a67a81226e11992008cb47e1267a9b3225"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:084e537806b458911137f76097e53ce7bf5806dda33ddf6aaa66a028f8d43a23"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4829cf2195838e3f93b70fd3b4292156fc5e097aac3739859ac0dcc722b27ac0"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1193b2416cbad1a769f868b1749535d5da47626ac29445803dae7cc64b3f5c98"}, - {file = "orjson-3.10.7-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:4e6c3da13e5a57e4b3dca2de059f243ebec705857522f188f0180ae88badd354"}, - {file = "orjson-3.10.7-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c31008598424dfbe52ce8c5b47e0752dca918a4fdc4a2a32004efd9fab41d866"}, - {file = "orjson-3.10.7-cp38-none-win32.whl", hash = "sha256:7122a99831f9e7fe977dc45784d3b2edc821c172d545e6420c375e5a935f5a1c"}, - {file = "orjson-3.10.7-cp38-none-win_amd64.whl", hash = "sha256:a763bc0e58504cc803739e7df040685816145a6f3c8a589787084b54ebc9f16e"}, - {file = "orjson-3.10.7-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:e76be12658a6fa376fcd331b1ea4e58f5a06fd0220653450f0d415b8fd0fbe20"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed350d6978d28b92939bfeb1a0570c523f6170efc3f0a0ef1f1df287cd4f4960"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:144888c76f8520e39bfa121b31fd637e18d4cc2f115727865fdf9fa325b10412"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09b2d92fd95ad2402188cf51573acde57eb269eddabaa60f69ea0d733e789fe9"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5b24a579123fa884f3a3caadaed7b75eb5715ee2b17ab5c66ac97d29b18fe57f"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591bcfe7512353bd609875ab38050efe3d55e18934e2f18950c108334b4ff"}, - {file = "orjson-3.10.7-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f4db56635b58cd1a200b0a23744ff44206ee6aa428185e2b6c4a65b3197abdcd"}, - {file = "orjson-3.10.7-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0fa5886854673222618638c6df7718ea7fe2f3f2384c452c9ccedc70b4a510a5"}, - {file = "orjson-3.10.7-cp39-none-win32.whl", hash = "sha256:8272527d08450ab16eb405f47e0f4ef0e5ff5981c3d82afe0efd25dcbef2bcd2"}, - {file = "orjson-3.10.7-cp39-none-win_amd64.whl", hash = "sha256:974683d4618c0c7dbf4f69c95a979734bf183d0658611760017f6e70a145af58"}, - {file = "orjson-3.10.7.tar.gz", hash = "sha256:75ef0640403f945f3a1f9f6400686560dbfb0fb5b16589ad62cd477043c4eee3"}, + {file = "orjson-3.10.10-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:b788a579b113acf1c57e0a68e558be71d5d09aa67f62ca1f68e01117e550a998"}, + {file = "orjson-3.10.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:804b18e2b88022c8905bb79bd2cbe59c0cd014b9328f43da8d3b28441995cda4"}, + {file = "orjson-3.10.10-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9972572a1d042ec9ee421b6da69f7cc823da5962237563fa548ab17f152f0b9b"}, + {file = "orjson-3.10.10-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc6993ab1c2ae7dd0711161e303f1db69062955ac2668181bfdf2dd410e65258"}, + {file = "orjson-3.10.10-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d78e4cacced5781b01d9bc0f0cd8b70b906a0e109825cb41c1b03f9c41e4ce86"}, + {file = "orjson-3.10.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e6eb2598df518281ba0cbc30d24c5b06124ccf7e19169e883c14e0831217a0bc"}, + {file = "orjson-3.10.10-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:23776265c5215ec532de6238a52707048401a568f0fa0d938008e92a147fe2c7"}, + {file = "orjson-3.10.10-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8cc2a654c08755cef90b468ff17c102e2def0edd62898b2486767204a7f5cc9c"}, + {file = "orjson-3.10.10-cp310-none-win32.whl", hash = "sha256:081b3fc6a86d72efeb67c13d0ea7c030017bd95f9868b1e329a376edc456153b"}, + {file = "orjson-3.10.10-cp310-none-win_amd64.whl", hash = "sha256:ff38c5fb749347768a603be1fb8a31856458af839f31f064c5aa74aca5be9efe"}, + {file = "orjson-3.10.10-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:879e99486c0fbb256266c7c6a67ff84f46035e4f8749ac6317cc83dacd7f993a"}, + {file = "orjson-3.10.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:019481fa9ea5ff13b5d5d95e6fd5ab25ded0810c80b150c2c7b1cc8660b662a7"}, + {file = "orjson-3.10.10-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0dd57eff09894938b4c86d4b871a479260f9e156fa7f12f8cad4b39ea8028bb5"}, + {file = "orjson-3.10.10-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dbde6d70cd95ab4d11ea8ac5e738e30764e510fc54d777336eec09bb93b8576c"}, + {file = "orjson-3.10.10-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b2625cb37b8fb42e2147404e5ff7ef08712099197a9cd38895006d7053e69d6"}, + {file = "orjson-3.10.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dbf3c20c6a7db69df58672a0d5815647ecf78c8e62a4d9bd284e8621c1fe5ccb"}, + {file = "orjson-3.10.10-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:75c38f5647e02d423807d252ce4528bf6a95bd776af999cb1fb48867ed01d1f6"}, + {file = "orjson-3.10.10-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:23458d31fa50ec18e0ec4b0b4343730928296b11111df5f547c75913714116b2"}, + {file = "orjson-3.10.10-cp311-none-win32.whl", hash = "sha256:2787cd9dedc591c989f3facd7e3e86508eafdc9536a26ec277699c0aa63c685b"}, + {file = "orjson-3.10.10-cp311-none-win_amd64.whl", hash = "sha256:6514449d2c202a75183f807bc755167713297c69f1db57a89a1ef4a0170ee269"}, + {file = "orjson-3.10.10-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:8564f48f3620861f5ef1e080ce7cd122ee89d7d6dacf25fcae675ff63b4d6e05"}, + {file = "orjson-3.10.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5bf161a32b479034098c5b81f2608f09167ad2fa1c06abd4e527ea6bf4837a9"}, + {file = "orjson-3.10.10-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:68b65c93617bcafa7f04b74ae8bc2cc214bd5cb45168a953256ff83015c6747d"}, + {file = "orjson-3.10.10-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e8e28406f97fc2ea0c6150f4c1b6e8261453318930b334abc419214c82314f85"}, + {file = "orjson-3.10.10-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e4d0d9fe174cc7a5bdce2e6c378bcdb4c49b2bf522a8f996aa586020e1b96cee"}, + {file = "orjson-3.10.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b3be81c42f1242cbed03cbb3973501fcaa2675a0af638f8be494eaf37143d999"}, + {file = "orjson-3.10.10-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:65f9886d3bae65be026219c0a5f32dbbe91a9e6272f56d092ab22561ad0ea33b"}, + {file = "orjson-3.10.10-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:730ed5350147db7beb23ddaf072f490329e90a1d059711d364b49fe352ec987b"}, + {file = "orjson-3.10.10-cp312-none-win32.whl", hash = "sha256:a8f4bf5f1c85bea2170800020d53a8877812892697f9c2de73d576c9307a8a5f"}, + {file = "orjson-3.10.10-cp312-none-win_amd64.whl", hash = "sha256:384cd13579a1b4cd689d218e329f459eb9ddc504fa48c5a83ef4889db7fd7a4f"}, + {file = "orjson-3.10.10-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:44bffae68c291f94ff5a9b4149fe9d1bdd4cd0ff0fb575bcea8351d48db629a1"}, + {file = "orjson-3.10.10-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e27b4c6437315df3024f0835887127dac2a0a3ff643500ec27088d2588fa5ae1"}, + {file = "orjson-3.10.10-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bca84df16d6b49325a4084fd8b2fe2229cb415e15c46c529f868c3387bb1339d"}, + {file = "orjson-3.10.10-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c14ce70e8f39bd71f9f80423801b5d10bf93d1dceffdecd04df0f64d2c69bc01"}, + {file = "orjson-3.10.10-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:24ac62336da9bda1bd93c0491eff0613003b48d3cb5d01470842e7b52a40d5b4"}, + {file = "orjson-3.10.10-cp313-none-win32.whl", hash = "sha256:eb0a42831372ec2b05acc9ee45af77bcaccbd91257345f93780a8e654efc75db"}, + {file = "orjson-3.10.10-cp313-none-win_amd64.whl", hash = "sha256:f0c4f37f8bf3f1075c6cc8dd8a9f843689a4b618628f8812d0a71e6968b95ffd"}, + {file = "orjson-3.10.10-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:829700cc18503efc0cf502d630f612884258020d98a317679cd2054af0259568"}, + {file = "orjson-3.10.10-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e0ceb5e0e8c4f010ac787d29ae6299846935044686509e2f0f06ed441c1ca949"}, + {file = "orjson-3.10.10-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0c25908eb86968613216f3db4d3003f1c45d78eb9046b71056ca327ff92bdbd4"}, + {file = "orjson-3.10.10-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:218cb0bc03340144b6328a9ff78f0932e642199ac184dd74b01ad691f42f93ff"}, + {file = "orjson-3.10.10-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e2277ec2cea3775640dc81ab5195bb5b2ada2fe0ea6eee4677474edc75ea6785"}, + {file = "orjson-3.10.10-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:848ea3b55ab5ccc9d7bbd420d69432628b691fba3ca8ae3148c35156cbd282aa"}, + {file = "orjson-3.10.10-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:e3e67b537ac0c835b25b5f7d40d83816abd2d3f4c0b0866ee981a045287a54f3"}, + {file = "orjson-3.10.10-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:7948cfb909353fce2135dcdbe4521a5e7e1159484e0bb024c1722f272488f2b8"}, + {file = "orjson-3.10.10-cp38-none-win32.whl", hash = "sha256:78bee66a988f1a333dc0b6257503d63553b1957889c17b2c4ed72385cd1b96ae"}, + {file = "orjson-3.10.10-cp38-none-win_amd64.whl", hash = "sha256:f1d647ca8d62afeb774340a343c7fc023efacfd3a39f70c798991063f0c681dd"}, + {file = "orjson-3.10.10-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:5a059afddbaa6dd733b5a2d76a90dbc8af790b993b1b5cb97a1176ca713b5df8"}, + {file = "orjson-3.10.10-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f9b5c59f7e2a1a410f971c5ebc68f1995822837cd10905ee255f96074537ee6"}, + {file = "orjson-3.10.10-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d5ef198bafdef4aa9d49a4165ba53ffdc0a9e1c7b6f76178572ab33118afea25"}, + {file = "orjson-3.10.10-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aaf29ce0bb5d3320824ec3d1508652421000ba466abd63bdd52c64bcce9eb1fa"}, + {file = "orjson-3.10.10-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dddd5516bcc93e723d029c1633ae79c4417477b4f57dad9bfeeb6bc0315e654a"}, + {file = "orjson-3.10.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a12f2003695b10817f0fa8b8fca982ed7f5761dcb0d93cff4f2f9f6709903fd7"}, + {file = "orjson-3.10.10-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:672f9874a8a8fb9bb1b771331d31ba27f57702c8106cdbadad8bda5d10bc1019"}, + {file = "orjson-3.10.10-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1dcbb0ca5fafb2b378b2c74419480ab2486326974826bbf6588f4dc62137570a"}, + {file = "orjson-3.10.10-cp39-none-win32.whl", hash = "sha256:d9bbd3a4b92256875cb058c3381b782649b9a3c68a4aa9a2fff020c2f9cfc1be"}, + {file = "orjson-3.10.10-cp39-none-win_amd64.whl", hash = "sha256:766f21487a53aee8524b97ca9582d5c6541b03ab6210fbaf10142ae2f3ced2aa"}, + {file = "orjson-3.10.10.tar.gz", hash = "sha256:37949383c4df7b4337ce82ee35b6d7471e55195efa7dcb45ab8226ceadb0fe3b"}, ] [[package]] @@ -1512,24 +1778,62 @@ files = [ {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, ] +[[package]] +name = "pastel" +version = "0.2.1" +description = "Bring colors to your terminal." +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "pastel-0.2.1-py2.py3-none-any.whl", hash = "sha256:4349225fcdf6c2bb34d483e523475de5bb04a5c10ef711263452cb37d7dd4364"}, + {file = "pastel-0.2.1.tar.gz", hash = "sha256:e6581ac04e973cac858828c6202c1e1e81fee1dc7de7683f3e1ffe0bfd8a573d"}, +] + +[[package]] +name = "pathspec" +version = "0.12.1" +description = "Utility library for gitignore style pattern matching of file paths." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, + {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, +] + +[[package]] +name = "platformdirs" +version = "4.3.6" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." +optional = false +python-versions = ">=3.8" +files = [ + {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, + {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, +] + +[package.extras] +docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] +type = ["mypy (>=1.11.2)"] + [[package]] name = "playwright" -version = "1.47.0" +version = "1.48.0" description = "A high-level API to automate web browsers" optional = false python-versions = ">=3.8" files = [ - {file = "playwright-1.47.0-py3-none-macosx_10_13_x86_64.whl", hash = "sha256:f205df24edb925db1a4ab62f1ab0da06f14bb69e382efecfb0deedc4c7f4b8cd"}, - {file = "playwright-1.47.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:7fc820faf6885f69a52ba4ec94124e575d3c4a4003bf29200029b4a4f2b2d0ab"}, - {file = "playwright-1.47.0-py3-none-macosx_11_0_universal2.whl", hash = "sha256:8e212dc472ff19c7d46ed7e900191c7a786ce697556ac3f1615986ec3aa00341"}, - {file = "playwright-1.47.0-py3-none-manylinux1_x86_64.whl", hash = "sha256:a1935672531963e4b2a321de5aa59b982fb92463ee6e1032dd7326378e462955"}, - {file = "playwright-1.47.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e0a1b61473d6f7f39c5d77d4800b3cbefecb03344c90b98f3fbcae63294ad249"}, - {file = "playwright-1.47.0-py3-none-win32.whl", hash = "sha256:1b977ed81f6bba5582617684a21adab9bad5676d90a357ebf892db7bdf4a9974"}, - {file = "playwright-1.47.0-py3-none-win_amd64.whl", hash = "sha256:0ec1056042d2e86088795a503347407570bffa32cbe20748e5d4c93dba085280"}, + {file = "playwright-1.48.0-py3-none-macosx_10_13_x86_64.whl", hash = "sha256:082bce2739f1078acc7d0734da8cc0e23eb91b7fae553f3316d733276f09a6b1"}, + {file = "playwright-1.48.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:7da2eb51a19c7f3b523e9faa9d98e7af92e52eb983a099979ea79c9668e3cbf7"}, + {file = "playwright-1.48.0-py3-none-macosx_11_0_universal2.whl", hash = "sha256:115b988d1da322358b77bc3bf2d3cc90f8c881e691461538e7df91614c4833c9"}, + {file = "playwright-1.48.0-py3-none-manylinux1_x86_64.whl", hash = "sha256:8dabb80e62f667fe2640a8b694e26a7b884c0b4803f7514a3954fc849126227b"}, + {file = "playwright-1.48.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8ff8303409ebed76bed4c3d655340320b768817d900ba208b394fdd7d7939a5c"}, + {file = "playwright-1.48.0-py3-none-win32.whl", hash = "sha256:85598c360c590076d4f435525be991246d74a905b654ac19d26eab7ed9b98b2d"}, + {file = "playwright-1.48.0-py3-none-win_amd64.whl", hash = "sha256:e0e87b0c4dc8fce83c725dd851aec37bc4e882bb225ec8a96bd83cf32d4f1623"}, ] [package.dependencies] -greenlet = "3.0.3" +greenlet = "3.1.1" pyee = "12.0.0" [[package]] @@ -1547,26 +1851,151 @@ files = [ dev = ["pre-commit", "tox"] testing = ["pytest", "pytest-benchmark"] +[[package]] +name = "poethepoet" +version = "0.25.1" +description = "A task runner that works well with poetry." +optional = false +python-versions = ">=3.8" +files = [ + {file = "poethepoet-0.25.1-py3-none-any.whl", hash = "sha256:fee433f68424593bca6b357f0bf997d64edf42c7305c0d5d335bd570b8d2352b"}, + {file = "poethepoet-0.25.1.tar.gz", hash = "sha256:98f4446533a4b2bdb08843e211f918b1f2e7f8baf6d1803ef78f64661ed62463"}, +] + +[package.dependencies] +pastel = ">=0.2.1,<0.3.0" +tomli = ">=1.2.2" + +[package.extras] +poetry-plugin = ["poetry (>=1.0,<2.0)"] + [[package]] name = "primp" -version = "0.6.3" +version = "0.6.5" description = "HTTP client that can impersonate web browsers, mimicking their headers and `TLS/JA3/JA4/HTTP2` fingerprints" optional = false python-versions = ">=3.8" files = [ - {file = "primp-0.6.3-cp38-abi3-macosx_10_12_x86_64.whl", hash = "sha256:bdbe6a7cdaaf5c9ed863432a941f4a75bd4c6ff626cbc8d32fc232793c70ba06"}, - {file = "primp-0.6.3-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:eeb53eb987bdcbcd85740633470255cab887d921df713ffa12a36a13366c9cdb"}, - {file = "primp-0.6.3-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78da53d3c92a8e3f05bd3286ac76c291f1b6fe5e08ea63b7ba92b0f9141800bb"}, - {file = "primp-0.6.3-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:86337b44deecdac752bd8112909987fc9fa9b894f30191c80a164dc8f895da53"}, - {file = "primp-0.6.3-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:d3cd9a22b97f3eae42b2a5fb99f00480daf4cd6d9b139e05b0ffb03f7cc037f3"}, - {file = "primp-0.6.3-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:7732bec917e2d3c48a31cdb92e1250f4ad6203a1aa4f802bd9abd84f2286a1e0"}, - {file = "primp-0.6.3-cp38-abi3-win_amd64.whl", hash = "sha256:1e4113c34b86c676ae321af185f03a372caef3ee009f1682c2d62e30ec87348c"}, - {file = "primp-0.6.3.tar.gz", hash = "sha256:17d30ebe26864defad5232dbbe1372e80483940012356e1f68846bb182282039"}, + {file = "primp-0.6.5-cp38-abi3-macosx_10_12_x86_64.whl", hash = "sha256:b2bab0250d38c02a437c75ed94b99e3a8c03a281ba9a4c33780ccd04999c741b"}, + {file = "primp-0.6.5-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:0aedb33515d86df4c1f91b9d5772e1b74d1593dfe8978c258b136c171f8ab94c"}, + {file = "primp-0.6.5-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e0e8850be30fbfefeb76c1eb5859a55c5f11c8c285a4a03ebf99c73fea964b2a"}, + {file = "primp-0.6.5-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:e9b71ac07a79cbb401390e2ee5a5767d0bf202a956a533fd084957020fcb2a64"}, + {file = "primp-0.6.5-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:79c65fcb07b36bd0f8c3966a4a18c4f6a6d624a33a0b0133b0f0cc8d0050c351"}, + {file = "primp-0.6.5-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5a55e450bb52a88f4a2891db50577c8f20b134d17d37e93361ee51de1a6fe8c8"}, + {file = "primp-0.6.5-cp38-abi3-win_amd64.whl", hash = "sha256:cbe584de5c177b9f0656b77e88721296ae6151b6c4565e2e0a342b6473990f27"}, + {file = "primp-0.6.5.tar.gz", hash = "sha256:abb46c579ae682f34c1f339faac38709c85ab76c056ec3711a26823334ab8124"}, ] [package.extras] dev = ["certifi", "pytest (>=8.1.1)"] +[[package]] +name = "propcache" +version = "0.2.0" +description = "Accelerated property cache" +optional = false +python-versions = ">=3.8" +files = [ + {file = "propcache-0.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:c5869b8fd70b81835a6f187c5fdbe67917a04d7e52b6e7cc4e5fe39d55c39d58"}, + {file = "propcache-0.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:952e0d9d07609d9c5be361f33b0d6d650cd2bae393aabb11d9b719364521984b"}, + {file = "propcache-0.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:33ac8f098df0585c0b53009f039dfd913b38c1d2edafed0cedcc0c32a05aa110"}, + {file = "propcache-0.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97e48e8875e6c13909c800fa344cd54cc4b2b0db1d5f911f840458a500fde2c2"}, + {file = "propcache-0.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:388f3217649d6d59292b722d940d4d2e1e6a7003259eb835724092a1cca0203a"}, + {file = "propcache-0.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f571aea50ba5623c308aa146eb650eebf7dbe0fd8c5d946e28343cb3b5aad577"}, + {file = "propcache-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3dfafb44f7bb35c0c06eda6b2ab4bfd58f02729e7c4045e179f9a861b07c9850"}, + {file = "propcache-0.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a3ebe9a75be7ab0b7da2464a77bb27febcb4fab46a34f9288f39d74833db7f61"}, + {file = "propcache-0.2.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d2f0d0f976985f85dfb5f3d685697ef769faa6b71993b46b295cdbbd6be8cc37"}, + {file = "propcache-0.2.0-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:a3dc1a4b165283bd865e8f8cb5f0c64c05001e0718ed06250d8cac9bec115b48"}, + {file = "propcache-0.2.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:9e0f07b42d2a50c7dd2d8675d50f7343d998c64008f1da5fef888396b7f84630"}, + {file = "propcache-0.2.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:e63e3e1e0271f374ed489ff5ee73d4b6e7c60710e1f76af5f0e1a6117cd26394"}, + {file = "propcache-0.2.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:56bb5c98f058a41bb58eead194b4db8c05b088c93d94d5161728515bd52b052b"}, + {file = "propcache-0.2.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7665f04d0c7f26ff8bb534e1c65068409bf4687aa2534faf7104d7182debb336"}, + {file = "propcache-0.2.0-cp310-cp310-win32.whl", hash = "sha256:7cf18abf9764746b9c8704774d8b06714bcb0a63641518a3a89c7f85cc02c2ad"}, + {file = "propcache-0.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:cfac69017ef97db2438efb854edf24f5a29fd09a536ff3a992b75990720cdc99"}, + {file = "propcache-0.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:63f13bf09cc3336eb04a837490b8f332e0db41da66995c9fd1ba04552e516354"}, + {file = "propcache-0.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:608cce1da6f2672a56b24a015b42db4ac612ee709f3d29f27a00c943d9e851de"}, + {file = "propcache-0.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:466c219deee4536fbc83c08d09115249db301550625c7fef1c5563a584c9bc87"}, + {file = "propcache-0.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc2db02409338bf36590aa985a461b2c96fce91f8e7e0f14c50c5fcc4f229016"}, + {file = "propcache-0.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a6ed8db0a556343d566a5c124ee483ae113acc9a557a807d439bcecc44e7dfbb"}, + {file = "propcache-0.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:91997d9cb4a325b60d4e3f20967f8eb08dfcb32b22554d5ef78e6fd1dda743a2"}, + {file = "propcache-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c7dde9e533c0a49d802b4f3f218fa9ad0a1ce21f2c2eb80d5216565202acab4"}, + {file = "propcache-0.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffcad6c564fe6b9b8916c1aefbb37a362deebf9394bd2974e9d84232e3e08504"}, + {file = "propcache-0.2.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:97a58a28bcf63284e8b4d7b460cbee1edaab24634e82059c7b8c09e65284f178"}, + {file = "propcache-0.2.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:945db8ee295d3af9dbdbb698cce9bbc5c59b5c3fe328bbc4387f59a8a35f998d"}, + {file = "propcache-0.2.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:39e104da444a34830751715f45ef9fc537475ba21b7f1f5b0f4d71a3b60d7fe2"}, + {file = "propcache-0.2.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:c5ecca8f9bab618340c8e848d340baf68bcd8ad90a8ecd7a4524a81c1764b3db"}, + {file = "propcache-0.2.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:c436130cc779806bdf5d5fae0d848713105472b8566b75ff70048c47d3961c5b"}, + {file = "propcache-0.2.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:191db28dc6dcd29d1a3e063c3be0b40688ed76434622c53a284e5427565bbd9b"}, + {file = "propcache-0.2.0-cp311-cp311-win32.whl", hash = "sha256:5f2564ec89058ee7c7989a7b719115bdfe2a2fb8e7a4543b8d1c0cc4cf6478c1"}, + {file = "propcache-0.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:6e2e54267980349b723cff366d1e29b138b9a60fa376664a157a342689553f71"}, + {file = "propcache-0.2.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:2ee7606193fb267be4b2e3b32714f2d58cad27217638db98a60f9efb5efeccc2"}, + {file = "propcache-0.2.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:91ee8fc02ca52e24bcb77b234f22afc03288e1dafbb1f88fe24db308910c4ac7"}, + {file = "propcache-0.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2e900bad2a8456d00a113cad8c13343f3b1f327534e3589acc2219729237a2e8"}, + {file = "propcache-0.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f52a68c21363c45297aca15561812d542f8fc683c85201df0bebe209e349f793"}, + {file = "propcache-0.2.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1e41d67757ff4fbc8ef2af99b338bfb955010444b92929e9e55a6d4dcc3c4f09"}, + {file = "propcache-0.2.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a64e32f8bd94c105cc27f42d3b658902b5bcc947ece3c8fe7bc1b05982f60e89"}, + {file = "propcache-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:55346705687dbd7ef0d77883ab4f6fabc48232f587925bdaf95219bae072491e"}, + {file = "propcache-0.2.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:00181262b17e517df2cd85656fcd6b4e70946fe62cd625b9d74ac9977b64d8d9"}, + {file = "propcache-0.2.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6994984550eaf25dd7fc7bd1b700ff45c894149341725bb4edc67f0ffa94efa4"}, + {file = "propcache-0.2.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:56295eb1e5f3aecd516d91b00cfd8bf3a13991de5a479df9e27dd569ea23959c"}, + {file = "propcache-0.2.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:439e76255daa0f8151d3cb325f6dd4a3e93043e6403e6491813bcaaaa8733887"}, + {file = "propcache-0.2.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:f6475a1b2ecb310c98c28d271a30df74f9dd436ee46d09236a6b750a7599ce57"}, + {file = "propcache-0.2.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:3444cdba6628accf384e349014084b1cacd866fbb88433cd9d279d90a54e0b23"}, + {file = "propcache-0.2.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4a9d9b4d0a9b38d1c391bb4ad24aa65f306c6f01b512e10a8a34a2dc5675d348"}, + {file = "propcache-0.2.0-cp312-cp312-win32.whl", hash = "sha256:69d3a98eebae99a420d4b28756c8ce6ea5a29291baf2dc9ff9414b42676f61d5"}, + {file = "propcache-0.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:ad9c9b99b05f163109466638bd30ada1722abb01bbb85c739c50b6dc11f92dc3"}, + {file = "propcache-0.2.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ecddc221a077a8132cf7c747d5352a15ed763b674c0448d811f408bf803d9ad7"}, + {file = "propcache-0.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0e53cb83fdd61cbd67202735e6a6687a7b491c8742dfc39c9e01e80354956763"}, + {file = "propcache-0.2.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:92fe151145a990c22cbccf9ae15cae8ae9eddabfc949a219c9f667877e40853d"}, + {file = "propcache-0.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6a21ef516d36909931a2967621eecb256018aeb11fc48656e3257e73e2e247a"}, + {file = "propcache-0.2.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3f88a4095e913f98988f5b338c1d4d5d07dbb0b6bad19892fd447484e483ba6b"}, + {file = "propcache-0.2.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5a5b3bb545ead161be780ee85a2b54fdf7092815995661947812dde94a40f6fb"}, + {file = "propcache-0.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67aeb72e0f482709991aa91345a831d0b707d16b0257e8ef88a2ad246a7280bf"}, + {file = "propcache-0.2.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3c997f8c44ec9b9b0bcbf2d422cc00a1d9b9c681f56efa6ca149a941e5560da2"}, + {file = "propcache-0.2.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:2a66df3d4992bc1d725b9aa803e8c5a66c010c65c741ad901e260ece77f58d2f"}, + {file = "propcache-0.2.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:3ebbcf2a07621f29638799828b8d8668c421bfb94c6cb04269130d8de4fb7136"}, + {file = "propcache-0.2.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:1235c01ddaa80da8235741e80815ce381c5267f96cc49b1477fdcf8c047ef325"}, + {file = "propcache-0.2.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:3947483a381259c06921612550867b37d22e1df6d6d7e8361264b6d037595f44"}, + {file = "propcache-0.2.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:d5bed7f9805cc29c780f3aee05de3262ee7ce1f47083cfe9f77471e9d6777e83"}, + {file = "propcache-0.2.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e4a91d44379f45f5e540971d41e4626dacd7f01004826a18cb048e7da7e96544"}, + {file = "propcache-0.2.0-cp313-cp313-win32.whl", hash = "sha256:f902804113e032e2cdf8c71015651c97af6418363bea8d78dc0911d56c335032"}, + {file = "propcache-0.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:8f188cfcc64fb1266f4684206c9de0e80f54622c3f22a910cbd200478aeae61e"}, + {file = "propcache-0.2.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:53d1bd3f979ed529f0805dd35ddaca330f80a9a6d90bc0121d2ff398f8ed8861"}, + {file = "propcache-0.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:83928404adf8fb3d26793665633ea79b7361efa0287dfbd372a7e74311d51ee6"}, + {file = "propcache-0.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:77a86c261679ea5f3896ec060be9dc8e365788248cc1e049632a1be682442063"}, + {file = "propcache-0.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:218db2a3c297a3768c11a34812e63b3ac1c3234c3a086def9c0fee50d35add1f"}, + {file = "propcache-0.2.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7735e82e3498c27bcb2d17cb65d62c14f1100b71723b68362872bca7d0913d90"}, + {file = "propcache-0.2.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:20a617c776f520c3875cf4511e0d1db847a076d720714ae35ffe0df3e440be68"}, + {file = "propcache-0.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67b69535c870670c9f9b14a75d28baa32221d06f6b6fa6f77a0a13c5a7b0a5b9"}, + {file = "propcache-0.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4569158070180c3855e9c0791c56be3ceeb192defa2cdf6a3f39e54319e56b89"}, + {file = "propcache-0.2.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:db47514ffdbd91ccdc7e6f8407aac4ee94cc871b15b577c1c324236b013ddd04"}, + {file = "propcache-0.2.0-cp38-cp38-musllinux_1_2_armv7l.whl", hash = "sha256:2a60ad3e2553a74168d275a0ef35e8c0a965448ffbc3b300ab3a5bb9956c2162"}, + {file = "propcache-0.2.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:662dd62358bdeaca0aee5761de8727cfd6861432e3bb828dc2a693aa0471a563"}, + {file = "propcache-0.2.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:25a1f88b471b3bc911d18b935ecb7115dff3a192b6fef46f0bfaf71ff4f12418"}, + {file = "propcache-0.2.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:f60f0ac7005b9f5a6091009b09a419ace1610e163fa5deaba5ce3484341840e7"}, + {file = "propcache-0.2.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:74acd6e291f885678631b7ebc85d2d4aec458dd849b8c841b57ef04047833bed"}, + {file = "propcache-0.2.0-cp38-cp38-win32.whl", hash = "sha256:d9b6ddac6408194e934002a69bcaadbc88c10b5f38fb9307779d1c629181815d"}, + {file = "propcache-0.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:676135dcf3262c9c5081cc8f19ad55c8a64e3f7282a21266d05544450bffc3a5"}, + {file = "propcache-0.2.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:25c8d773a62ce0451b020c7b29a35cfbc05de8b291163a7a0f3b7904f27253e6"}, + {file = "propcache-0.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:375a12d7556d462dc64d70475a9ee5982465fbb3d2b364f16b86ba9135793638"}, + {file = "propcache-0.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1ec43d76b9677637a89d6ab86e1fef70d739217fefa208c65352ecf0282be957"}, + {file = "propcache-0.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f45eec587dafd4b2d41ac189c2156461ebd0c1082d2fe7013571598abb8505d1"}, + {file = "propcache-0.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bc092ba439d91df90aea38168e11f75c655880c12782facf5cf9c00f3d42b562"}, + {file = "propcache-0.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fa1076244f54bb76e65e22cb6910365779d5c3d71d1f18b275f1dfc7b0d71b4d"}, + {file = "propcache-0.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:682a7c79a2fbf40f5dbb1eb6bfe2cd865376deeac65acf9beb607505dced9e12"}, + {file = "propcache-0.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8e40876731f99b6f3c897b66b803c9e1c07a989b366c6b5b475fafd1f7ba3fb8"}, + {file = "propcache-0.2.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:363ea8cd3c5cb6679f1c2f5f1f9669587361c062e4899fce56758efa928728f8"}, + {file = "propcache-0.2.0-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:140fbf08ab3588b3468932974a9331aff43c0ab8a2ec2c608b6d7d1756dbb6cb"}, + {file = "propcache-0.2.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:e70fac33e8b4ac63dfc4c956fd7d85a0b1139adcfc0d964ce288b7c527537fea"}, + {file = "propcache-0.2.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:b33d7a286c0dc1a15f5fc864cc48ae92a846df287ceac2dd499926c3801054a6"}, + {file = "propcache-0.2.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:f6d5749fdd33d90e34c2efb174c7e236829147a2713334d708746e94c4bde40d"}, + {file = "propcache-0.2.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:22aa8f2272d81d9317ff5756bb108021a056805ce63dd3630e27d042c8092798"}, + {file = "propcache-0.2.0-cp39-cp39-win32.whl", hash = "sha256:73e4b40ea0eda421b115248d7e79b59214411109a5bc47d0d48e4c73e3b8fcf9"}, + {file = "propcache-0.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:9517d5e9e0731957468c29dbfd0f976736a0e55afaea843726e887f36fe017df"}, + {file = "propcache-0.2.0-py3-none-any.whl", hash = "sha256:2ccc28197af5313706511fab3a8b66dcd6da067a1331372c82ea1cb74285e036"}, + {file = "propcache-0.2.0.tar.gz", hash = "sha256:df81779732feb9d01e5d513fad0122efb3d53bbc75f61b2a4f29a020bc985e70"}, +] + [[package]] name = "py" version = "1.11.0" @@ -1713,13 +2142,13 @@ typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" [[package]] name = "pydantic-settings" -version = "2.5.2" +version = "2.6.0" description = "Settings management using Pydantic" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic_settings-2.5.2-py3-none-any.whl", hash = "sha256:2c912e55fd5794a59bf8c832b9de832dcfdf4778d79ff79b708744eed499a907"}, - {file = "pydantic_settings-2.5.2.tar.gz", hash = "sha256:f90b139682bee4d2065273d5185d71d37ea46cfe57e1b5ae184fc6a0b2484ca0"}, + {file = "pydantic_settings-2.6.0-py3-none-any.whl", hash = "sha256:4a819166f119b74d7f8c765196b165f95cc7487ce58ea27dec8a5a26be0970e0"}, + {file = "pydantic_settings-2.6.0.tar.gz", hash = "sha256:44a1804abffac9e6a30372bb45f6cafab945ef5af25e66b1c634c01dd39e0188"}, ] [package.dependencies] @@ -1788,13 +2217,13 @@ requests = [ [[package]] name = "pyparsing" -version = "3.1.4" +version = "3.2.0" description = "pyparsing module - Classes and methods to define and execute parsing grammars" optional = false -python-versions = ">=3.6.8" +python-versions = ">=3.9" files = [ - {file = "pyparsing-3.1.4-py3-none-any.whl", hash = "sha256:a6a7ee4235a3f944aa1fa2249307708f893fe5717dc603503c6c7969c070fb7c"}, - {file = "pyparsing-3.1.4.tar.gz", hash = "sha256:f86ec8d1a83f11977c9a6ea7598e8c27fc5cddfa5b07ea2241edbbde1d7bc032"}, + {file = "pyparsing-3.2.0-py3-none-any.whl", hash = "sha256:93d9577b88da0bbea8cc8334ee8b918ed014968fd2ec383e868fb8afb1ccef84"}, + {file = "pyparsing-3.2.0.tar.gz", hash = "sha256:cbf74e27246d595d9a74b186b810f6fbb86726dbf3b9532efb343f6d7294fe9c"}, ] [package.extras] @@ -1836,6 +2265,24 @@ toml = "*" [package.extras] testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] +[[package]] +name = "pytest-cov" +version = "5.0.0" +description = "Pytest plugin for measuring coverage." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pytest-cov-5.0.0.tar.gz", hash = "sha256:5837b58e9f6ebd335b0f8060eecce69b662415b16dc503883a02f45dfeb14857"}, + {file = "pytest_cov-5.0.0-py3-none-any.whl", hash = "sha256:4f0764a1219df53214206bf1feea4633c3b558a2925c8b59f144f682861ce652"}, +] + +[package.dependencies] +coverage = {version = ">=5.2.1", extras = ["toml"]} +pytest = ">=4.6" + +[package.extras] +testing = ["fields", "hunter", "process-tests", "pytest-xdist", "virtualenv"] + [[package]] name = "python-dotenv" version = "1.0.1" @@ -1852,27 +2299,21 @@ cli = ["click (>=5.0)"] [[package]] name = "pytype" -version = "2024.9.13" +version = "2024.10.11" description = "Python type inferencer" optional = false -python-versions = ">=3.8" +python-versions = ">=3.10" files = [ - {file = "pytype-2024.9.13-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:52c0005d220b27f9c933e4077de700c4e8171abce0c2af72f4c6263a85ff5bce"}, - {file = "pytype-2024.9.13-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2d5dc847c2fe98bac044f956e2fc9f074f09704b64436522b81ede7dd5fa3653"}, - {file = "pytype-2024.9.13-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:529f19141c6170d96a38909df430ca52e6904eaef851ad2690cf632f17d2c195"}, - {file = "pytype-2024.9.13-cp311-cp311-macosx_10_14_universal2.whl", hash = "sha256:38f3eddf05d8530ef16d3d7c2da2556148b9975fc7c3405ac3073022e1a7434b"}, - {file = "pytype-2024.9.13-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1b530eae5ab421a2dc9c4ef53f68629c5a622545150ae9702dbb811f56852a63"}, - {file = "pytype-2024.9.13-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:eb9eaaaf6c33e2716fdce1cf4166d3e5099372d8898b69ab7673225928096456"}, - {file = "pytype-2024.9.13-cp312-cp312-macosx_10_14_universal2.whl", hash = "sha256:53b767d85f374c7483c8b2849dceb811a15fcb01520e245dd82bd7c0e2befefb"}, - {file = "pytype-2024.9.13-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:176a5bbc0cb0882918a0b48818b95df2c15811e3a8391da089ffc5b33fea7013"}, - {file = "pytype-2024.9.13-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7bdaf1eaaf17a13741f67686c2d4c94c30279cd682c7e4cf535e41fc911b0e59"}, - {file = "pytype-2024.9.13-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:425011cc45fba8c83af796155049f9db89d11e8aedbfb21bc1c99408f4a2c4e3"}, - {file = "pytype-2024.9.13-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6e500727967b843488c1978114778162ef00fee9be49dfa5b4758dcbbcc55dd9"}, - {file = "pytype-2024.9.13-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b9b40beab6ef04fc260d86a8ef47b25d1b525dbc4cfbcb73151fd74210c176df"}, - {file = "pytype-2024.9.13-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:b5fdc24b60938ee846dfbdf08b5ea96e934e7d69c34eb1f8fb7707083d177f0e"}, - {file = "pytype-2024.9.13-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8dcfd509118c2d7e0787e72832b45e30037af1c29dfcb733a7e8014f58337287"}, - {file = "pytype-2024.9.13-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9df731062dc18518a46135c4825ad966e1a275ffc0723dd62f9771b420889da0"}, - {file = "pytype-2024.9.13.tar.gz", hash = "sha256:941046ca0f1c43b79162bb51836fef0ba6608012d99f6833148c249f22216f26"}, + {file = "pytype-2024.10.11-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:1c5a43b132b19928a38ba1dbcf8f4e3f67a41ea26087ccf26ae371c4076c3809"}, + {file = "pytype-2024.10.11-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5dd9ecb48aa46ecef14b39f1bbe8ff7e586e499639a056c05bd4436ca0b35d82"}, + {file = "pytype-2024.10.11-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:37d8dfdf23679abfdfe047efef7239a438a038e580d7e0767c0403a6be07cea0"}, + {file = "pytype-2024.10.11-cp311-cp311-macosx_10_14_universal2.whl", hash = "sha256:2e31a964aa82e1ac317adbe17b77010e4f362882df1ce7ad15ef0cf0bb97039f"}, + {file = "pytype-2024.10.11-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:15e2f39590cc08ef8e6704cfa5c1db6fbbee2799891f9d8adbf821f883a54745"}, + {file = "pytype-2024.10.11-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ead3408fc9622ba8a357c9a6b9b49059a9b8add0a3b8390a9ab490f62a984005"}, + {file = "pytype-2024.10.11-cp312-cp312-macosx_10_14_universal2.whl", hash = "sha256:cdc881cce9541a475ec48989a5ab889e6274a85afbf6da0e30266d0823f66d42"}, + {file = "pytype-2024.10.11-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:13327d0d17b981fe2660dd3a69f97bf09a526f93debc40bb44b240628e0b55c1"}, + {file = "pytype-2024.10.11-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fb98711679e631b01b09b09185504fbf38d60f119280918e244a602cf843b0fe"}, + {file = "pytype-2024.10.11.tar.gz", hash = "sha256:ae5ff82f0b07d5ad68d4ec32a3e8de44fad6ed565a821a76aca50a14df382274"}, ] [package.dependencies] @@ -1882,7 +2323,7 @@ importlab = ">=0.8" jinja2 = ">=3.1.2" libcst = ">=1.0.1" msgspec = ">=0.18.6" -networkx = "<3.2" +networkx = ">=2.8" ninja = ">=1.10.0.post2" pycnite = ">=2024.07.31" pydot = ">=1.4.2" @@ -2035,13 +2476,13 @@ files = [ [[package]] name = "setuptools" -version = "75.1.0" +version = "75.2.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-75.1.0-py3-none-any.whl", hash = "sha256:35ab7fd3bcd95e6b7fd704e4a1539513edad446c097797f2985e0e4b960772f2"}, - {file = "setuptools-75.1.0.tar.gz", hash = "sha256:d59a21b17a275fb872a9c3dae73963160ae079f1049ed956880cd7c09b120538"}, + {file = "setuptools-75.2.0-py3-none-any.whl", hash = "sha256:a7fcb66f68b4d9e8e66b42f9876150a3371558f98fa32222ffaa5bced76406f8"}, + {file = "setuptools-75.2.0.tar.gz", hash = "sha256:753bb6ebf1f465a1912e19ed1d41f403a79173a9acf66a42e7e6aec45c3c16ec"}, ] [package.extras] @@ -2101,60 +2542,68 @@ requests = "*" [[package]] name = "sqlalchemy" -version = "2.0.35" +version = "2.0.36" description = "Database Abstraction Library" optional = false python-versions = ">=3.7" files = [ - {file = "SQLAlchemy-2.0.35-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:67219632be22f14750f0d1c70e62f204ba69d28f62fd6432ba05ab295853de9b"}, - {file = "SQLAlchemy-2.0.35-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4668bd8faf7e5b71c0319407b608f278f279668f358857dbfd10ef1954ac9f90"}, - {file = "SQLAlchemy-2.0.35-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb8bea573863762bbf45d1e13f87c2d2fd32cee2dbd50d050f83f87429c9e1ea"}, - {file = "SQLAlchemy-2.0.35-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f552023710d4b93d8fb29a91fadf97de89c5926c6bd758897875435f2a939f33"}, - {file = "SQLAlchemy-2.0.35-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:016b2e665f778f13d3c438651dd4de244214b527a275e0acf1d44c05bc6026a9"}, - {file = "SQLAlchemy-2.0.35-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7befc148de64b6060937231cbff8d01ccf0bfd75aa26383ffdf8d82b12ec04ff"}, - {file = "SQLAlchemy-2.0.35-cp310-cp310-win32.whl", hash = "sha256:22b83aed390e3099584b839b93f80a0f4a95ee7f48270c97c90acd40ee646f0b"}, - {file = "SQLAlchemy-2.0.35-cp310-cp310-win_amd64.whl", hash = "sha256:a29762cd3d116585278ffb2e5b8cc311fb095ea278b96feef28d0b423154858e"}, - {file = "SQLAlchemy-2.0.35-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e21f66748ab725ade40fa7af8ec8b5019c68ab00b929f6643e1b1af461eddb60"}, - {file = "SQLAlchemy-2.0.35-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8a6219108a15fc6d24de499d0d515c7235c617b2540d97116b663dade1a54d62"}, - {file = "SQLAlchemy-2.0.35-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:042622a5306c23b972192283f4e22372da3b8ddf5f7aac1cc5d9c9b222ab3ff6"}, - {file = "SQLAlchemy-2.0.35-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:627dee0c280eea91aed87b20a1f849e9ae2fe719d52cbf847c0e0ea34464b3f7"}, - {file = "SQLAlchemy-2.0.35-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:4fdcd72a789c1c31ed242fd8c1bcd9ea186a98ee8e5408a50e610edfef980d71"}, - {file = "SQLAlchemy-2.0.35-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:89b64cd8898a3a6f642db4eb7b26d1b28a497d4022eccd7717ca066823e9fb01"}, - {file = "SQLAlchemy-2.0.35-cp311-cp311-win32.whl", hash = "sha256:6a93c5a0dfe8d34951e8a6f499a9479ffb9258123551fa007fc708ae2ac2bc5e"}, - {file = "SQLAlchemy-2.0.35-cp311-cp311-win_amd64.whl", hash = "sha256:c68fe3fcde03920c46697585620135b4ecfdfc1ed23e75cc2c2ae9f8502c10b8"}, - {file = "SQLAlchemy-2.0.35-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:eb60b026d8ad0c97917cb81d3662d0b39b8ff1335e3fabb24984c6acd0c900a2"}, - {file = "SQLAlchemy-2.0.35-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6921ee01caf375363be5e9ae70d08ce7ca9d7e0e8983183080211a062d299468"}, - {file = "SQLAlchemy-2.0.35-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8cdf1a0dbe5ced887a9b127da4ffd7354e9c1a3b9bb330dce84df6b70ccb3a8d"}, - {file = "SQLAlchemy-2.0.35-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93a71c8601e823236ac0e5d087e4f397874a421017b3318fd92c0b14acf2b6db"}, - {file = "SQLAlchemy-2.0.35-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e04b622bb8a88f10e439084486f2f6349bf4d50605ac3e445869c7ea5cf0fa8c"}, - {file = "SQLAlchemy-2.0.35-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1b56961e2d31389aaadf4906d453859f35302b4eb818d34a26fab72596076bb8"}, - {file = "SQLAlchemy-2.0.35-cp312-cp312-win32.whl", hash = "sha256:0f9f3f9a3763b9c4deb8c5d09c4cc52ffe49f9876af41cc1b2ad0138878453cf"}, - {file = "SQLAlchemy-2.0.35-cp312-cp312-win_amd64.whl", hash = "sha256:25b0f63e7fcc2a6290cb5f7f5b4fc4047843504983a28856ce9b35d8f7de03cc"}, - {file = "SQLAlchemy-2.0.35-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:f021d334f2ca692523aaf7bbf7592ceff70c8594fad853416a81d66b35e3abf9"}, - {file = "SQLAlchemy-2.0.35-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05c3f58cf91683102f2f0265c0db3bd3892e9eedabe059720492dbaa4f922da1"}, - {file = "SQLAlchemy-2.0.35-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:032d979ce77a6c2432653322ba4cbeabf5a6837f704d16fa38b5a05d8e21fa00"}, - {file = "SQLAlchemy-2.0.35-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:2e795c2f7d7249b75bb5f479b432a51b59041580d20599d4e112b5f2046437a3"}, - {file = "SQLAlchemy-2.0.35-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:cc32b2990fc34380ec2f6195f33a76b6cdaa9eecf09f0c9404b74fc120aef36f"}, - {file = "SQLAlchemy-2.0.35-cp37-cp37m-win32.whl", hash = "sha256:9509c4123491d0e63fb5e16199e09f8e262066e58903e84615c301dde8fa2e87"}, - {file = "SQLAlchemy-2.0.35-cp37-cp37m-win_amd64.whl", hash = "sha256:3655af10ebcc0f1e4e06c5900bb33e080d6a1fa4228f502121f28a3b1753cde5"}, - {file = "SQLAlchemy-2.0.35-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4c31943b61ed8fdd63dfd12ccc919f2bf95eefca133767db6fbbd15da62078ec"}, - {file = "SQLAlchemy-2.0.35-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a62dd5d7cc8626a3634208df458c5fe4f21200d96a74d122c83bc2015b333bc1"}, - {file = "SQLAlchemy-2.0.35-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0630774b0977804fba4b6bbea6852ab56c14965a2b0c7fc7282c5f7d90a1ae72"}, - {file = "SQLAlchemy-2.0.35-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d625eddf7efeba2abfd9c014a22c0f6b3796e0ffb48f5d5ab106568ef01ff5a"}, - {file = "SQLAlchemy-2.0.35-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ada603db10bb865bbe591939de854faf2c60f43c9b763e90f653224138f910d9"}, - {file = "SQLAlchemy-2.0.35-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c41411e192f8d3ea39ea70e0fae48762cd11a2244e03751a98bd3c0ca9a4e936"}, - {file = "SQLAlchemy-2.0.35-cp38-cp38-win32.whl", hash = "sha256:d299797d75cd747e7797b1b41817111406b8b10a4f88b6e8fe5b5e59598b43b0"}, - {file = "SQLAlchemy-2.0.35-cp38-cp38-win_amd64.whl", hash = "sha256:0375a141e1c0878103eb3d719eb6d5aa444b490c96f3fedab8471c7f6ffe70ee"}, - {file = "SQLAlchemy-2.0.35-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ccae5de2a0140d8be6838c331604f91d6fafd0735dbdcee1ac78fc8fbaba76b4"}, - {file = "SQLAlchemy-2.0.35-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2a275a806f73e849e1c309ac11108ea1a14cd7058577aba962cd7190e27c9e3c"}, - {file = "SQLAlchemy-2.0.35-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:732e026240cdd1c1b2e3ac515c7a23820430ed94292ce33806a95869c46bd139"}, - {file = "SQLAlchemy-2.0.35-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:890da8cd1941fa3dab28c5bac3b9da8502e7e366f895b3b8e500896f12f94d11"}, - {file = "SQLAlchemy-2.0.35-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:c0d8326269dbf944b9201911b0d9f3dc524d64779a07518199a58384c3d37a44"}, - {file = "SQLAlchemy-2.0.35-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b76d63495b0508ab9fc23f8152bac63205d2a704cd009a2b0722f4c8e0cba8e0"}, - {file = "SQLAlchemy-2.0.35-cp39-cp39-win32.whl", hash = "sha256:69683e02e8a9de37f17985905a5eca18ad651bf592314b4d3d799029797d0eb3"}, - {file = "SQLAlchemy-2.0.35-cp39-cp39-win_amd64.whl", hash = "sha256:aee110e4ef3c528f3abbc3c2018c121e708938adeeff9006428dd7c8555e9b3f"}, - {file = "SQLAlchemy-2.0.35-py3-none-any.whl", hash = "sha256:2ab3f0336c0387662ce6221ad30ab3a5e6499aab01b9790879b6578fd9b8faa1"}, - {file = "sqlalchemy-2.0.35.tar.gz", hash = "sha256:e11d7ea4d24f0a262bccf9a7cd6284c976c5369dac21db237cff59586045ab9f"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:59b8f3adb3971929a3e660337f5dacc5942c2cdb760afcabb2614ffbda9f9f72"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:37350015056a553e442ff672c2d20e6f4b6d0b2495691fa239d8aa18bb3bc908"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8318f4776c85abc3f40ab185e388bee7a6ea99e7fa3a30686580b209eaa35c08"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c245b1fbade9c35e5bd3b64270ab49ce990369018289ecfde3f9c318411aaa07"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:69f93723edbca7342624d09f6704e7126b152eaed3cdbb634cb657a54332a3c5"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f9511d8dd4a6e9271d07d150fb2f81874a3c8c95e11ff9af3a2dfc35fe42ee44"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-win32.whl", hash = "sha256:c3f3631693003d8e585d4200730616b78fafd5a01ef8b698f6967da5c605b3fa"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-win_amd64.whl", hash = "sha256:a86bfab2ef46d63300c0f06936bd6e6c0105faa11d509083ba8f2f9d237fb5b5"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fd3a55deef00f689ce931d4d1b23fa9f04c880a48ee97af488fd215cf24e2a6c"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4f5e9cd989b45b73bd359f693b935364f7e1f79486e29015813c338450aa5a71"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0ddd9db6e59c44875211bc4c7953a9f6638b937b0a88ae6d09eb46cced54eff"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2519f3a5d0517fc159afab1015e54bb81b4406c278749779be57a569d8d1bb0d"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59b1ee96617135f6e1d6f275bbe988f419c5178016f3d41d3c0abb0c819f75bb"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:39769a115f730d683b0eb7b694db9789267bcd027326cccc3125e862eb03bfd8"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-win32.whl", hash = "sha256:66bffbad8d6271bb1cc2f9a4ea4f86f80fe5e2e3e501a5ae2a3dc6a76e604e6f"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-win_amd64.whl", hash = "sha256:23623166bfefe1487d81b698c423f8678e80df8b54614c2bf4b4cfcd7c711959"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f7b64e6ec3f02c35647be6b4851008b26cff592a95ecb13b6788a54ef80bbdd4"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:46331b00096a6db1fdc052d55b101dbbfc99155a548e20a0e4a8e5e4d1362855"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdf3386a801ea5aba17c6410dd1dc8d39cf454ca2565541b5ac42a84e1e28f53"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac9dfa18ff2a67b09b372d5db8743c27966abf0e5344c555d86cc7199f7ad83a"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:90812a8933df713fdf748b355527e3af257a11e415b613dd794512461eb8a686"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1bc330d9d29c7f06f003ab10e1eaced295e87940405afe1b110f2eb93a233588"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-win32.whl", hash = "sha256:79d2e78abc26d871875b419e1fd3c0bca31a1cb0043277d0d850014599626c2e"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-win_amd64.whl", hash = "sha256:b544ad1935a8541d177cb402948b94e871067656b3a0b9e91dbec136b06a2ff5"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b5cc79df7f4bc3d11e4b542596c03826063092611e481fcf1c9dfee3c94355ef"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3c01117dd36800f2ecaa238c65365b7b16497adc1522bf84906e5710ee9ba0e8"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9bc633f4ee4b4c46e7adcb3a9b5ec083bf1d9a97c1d3854b92749d935de40b9b"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e46ed38affdfc95d2c958de328d037d87801cfcbea6d421000859e9789e61c2"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b2985c0b06e989c043f1dc09d4fe89e1616aadd35392aea2844f0458a989eacf"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a121d62ebe7d26fec9155f83f8be5189ef1405f5973ea4874a26fab9f1e262c"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-win32.whl", hash = "sha256:0572f4bd6f94752167adfd7c1bed84f4b240ee6203a95e05d1e208d488d0d436"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-win_amd64.whl", hash = "sha256:8c78ac40bde930c60e0f78b3cd184c580f89456dd87fc08f9e3ee3ce8765ce88"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:be9812b766cad94a25bc63bec11f88c4ad3629a0cec1cd5d4ba48dc23860486b"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50aae840ebbd6cdd41af1c14590e5741665e5272d2fee999306673a1bb1fdb4d"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4557e1f11c5f653ebfdd924f3f9d5ebfc718283b0b9beebaa5dd6b77ec290971"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:07b441f7d03b9a66299ce7ccf3ef2900abc81c0db434f42a5694a37bd73870f2"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:28120ef39c92c2dd60f2721af9328479516844c6b550b077ca450c7d7dc68575"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-win32.whl", hash = "sha256:b81ee3d84803fd42d0b154cb6892ae57ea6b7c55d8359a02379965706c7efe6c"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-win_amd64.whl", hash = "sha256:f942a799516184c855e1a32fbc7b29d7e571b52612647866d4ec1c3242578fcb"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3d6718667da04294d7df1670d70eeddd414f313738d20a6f1d1f379e3139a545"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:72c28b84b174ce8af8504ca28ae9347d317f9dba3999e5981a3cd441f3712e24"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b11d0cfdd2b095e7b0686cf5fabeb9c67fae5b06d265d8180715b8cfa86522e3"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e32092c47011d113dc01ab3e1d3ce9f006a47223b18422c5c0d150af13a00687"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:6a440293d802d3011028e14e4226da1434b373cbaf4a4bbb63f845761a708346"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c54a1e53a0c308a8e8a7dffb59097bff7facda27c70c286f005327f21b2bd6b1"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-win32.whl", hash = "sha256:1e0d612a17581b6616ff03c8e3d5eff7452f34655c901f75d62bd86449d9750e"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-win_amd64.whl", hash = "sha256:8958b10490125124463095bbdadda5aa22ec799f91958e410438ad6c97a7b793"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dc022184d3e5cacc9579e41805a681187650e170eb2fd70e28b86192a479dcaa"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b817d41d692bf286abc181f8af476c4fbef3fd05e798777492618378448ee689"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4e46a888b54be23d03a89be510f24a7652fe6ff660787b96cd0e57a4ebcb46d"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4ae3005ed83f5967f961fd091f2f8c5329161f69ce8480aa8168b2d7fe37f06"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:03e08af7a5f9386a43919eda9de33ffda16b44eb11f3b313e6822243770e9763"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:3dbb986bad3ed5ceaf090200eba750b5245150bd97d3e67343a3cfed06feecf7"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-win32.whl", hash = "sha256:9fe53b404f24789b5ea9003fc25b9a3988feddebd7e7b369c8fac27ad6f52f28"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-win_amd64.whl", hash = "sha256:af148a33ff0349f53512a049c6406923e4e02bf2f26c5fb285f143faf4f0e46a"}, + {file = "SQLAlchemy-2.0.36-py3-none-any.whl", hash = "sha256:fddbe92b4760c6f5d48162aef14824add991aeda8ddadb3c31d56eb15ca69f8e"}, + {file = "sqlalchemy-2.0.36.tar.gz", hash = "sha256:7f2767680b6d2398aea7082e45a774b2b0767b5c8d8ffb9c8b683088ea9b29c5"}, ] [package.dependencies] @@ -2167,7 +2616,7 @@ aioodbc = ["aioodbc", "greenlet (!=0.4.17)"] aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing_extensions (!=3.10.0.1)"] asyncio = ["greenlet (!=0.4.17)"] asyncmy = ["asyncmy (>=0.2.3,!=0.2.4,!=0.2.6)", "greenlet (!=0.4.17)"] -mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5)"] +mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5,!=1.1.10)"] mssql = ["pyodbc"] mssql-pymssql = ["pymssql"] mssql-pyodbc = ["pyodbc"] @@ -2188,13 +2637,13 @@ sqlcipher = ["sqlcipher3_binary"] [[package]] name = "starlette" -version = "0.38.6" +version = "0.41.2" description = "The little ASGI library that shines." optional = false python-versions = ">=3.8" files = [ - {file = "starlette-0.38.6-py3-none-any.whl", hash = "sha256:4517a1409e2e73ee4951214ba012052b9e16f60e90d73cfb06192c19203bbb05"}, - {file = "starlette-0.38.6.tar.gz", hash = "sha256:863a1588f5574e70a821dadefb41e4881ea451a47a3cd1b4df359d4ffefe5ead"}, + {file = "starlette-0.41.2-py3-none-any.whl", hash = "sha256:fbc189474b4731cf30fcef52f18a8d070e3f3b46c6a04c97579e85e6ffca942d"}, + {file = "starlette-0.41.2.tar.gz", hash = "sha256:9834fd799d1a87fd346deb76158668cfa0b0d56f85caefe8268e2d97c3468b62"}, ] [package.dependencies] @@ -2257,15 +2706,26 @@ files = [ {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, ] +[[package]] +name = "tomli" +version = "2.0.2" +description = "A lil' TOML parser" +optional = false +python-versions = ">=3.8" +files = [ + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, +] + [[package]] name = "tqdm" -version = "4.66.5" +version = "4.66.6" description = "Fast, Extensible Progress Meter" optional = false python-versions = ">=3.7" files = [ - {file = "tqdm-4.66.5-py3-none-any.whl", hash = "sha256:90279a3770753eafc9194a0364852159802111925aa30eb3f9d85b0e805ac7cd"}, - {file = "tqdm-4.66.5.tar.gz", hash = "sha256:e1020aef2e5096702d8a025ac7d16b1577279c9d63f8375b63083e9a5f0fcbad"}, + {file = "tqdm-4.66.6-py3-none-any.whl", hash = "sha256:223e8b5359c2efc4b30555531f09e9f2f3589bcd7fdd389271191031b49b7a63"}, + {file = "tqdm-4.66.6.tar.gz", hash = "sha256:4bdd694238bef1485ce839d67967ab50af8f9272aab687c0d7702a01da0be090"}, ] [package.dependencies] @@ -2428,110 +2888,101 @@ requests = ">=2.0.0,<3.0.0" [[package]] name = "yarl" -version = "1.13.1" +version = "1.17.0" description = "Yet another URL library" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "yarl-1.13.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:82e692fb325013a18a5b73a4fed5a1edaa7c58144dc67ad9ef3d604eccd451ad"}, - {file = "yarl-1.13.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df4e82e68f43a07735ae70a2d84c0353e58e20add20ec0af611f32cd5ba43fb4"}, - {file = "yarl-1.13.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ec9dd328016d8d25702a24ee274932aebf6be9787ed1c28d021945d264235b3c"}, - {file = "yarl-1.13.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5820bd4178e6a639b3ef1db8b18500a82ceab6d8b89309e121a6859f56585b05"}, - {file = "yarl-1.13.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86c438ce920e089c8c2388c7dcc8ab30dfe13c09b8af3d306bcabb46a053d6f7"}, - {file = "yarl-1.13.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3de86547c820e4f4da4606d1c8ab5765dd633189791f15247706a2eeabc783ae"}, - {file = "yarl-1.13.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ca53632007c69ddcdefe1e8cbc3920dd88825e618153795b57e6ebcc92e752a"}, - {file = "yarl-1.13.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d4ee1d240b84e2f213565f0ec08caef27a0e657d4c42859809155cf3a29d1735"}, - {file = "yarl-1.13.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c49f3e379177f4477f929097f7ed4b0622a586b0aa40c07ac8c0f8e40659a1ac"}, - {file = "yarl-1.13.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:5c5e32fef09ce101fe14acd0f498232b5710effe13abac14cd95de9c274e689e"}, - {file = "yarl-1.13.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:ab9524e45ee809a083338a749af3b53cc7efec458c3ad084361c1dbf7aaf82a2"}, - {file = "yarl-1.13.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:b1481c048fe787f65e34cb06f7d6824376d5d99f1231eae4778bbe5c3831076d"}, - {file = "yarl-1.13.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:31497aefd68036d8e31bfbacef915826ca2e741dbb97a8d6c7eac66deda3b606"}, - {file = "yarl-1.13.1-cp310-cp310-win32.whl", hash = "sha256:1fa56f34b2236f5192cb5fceba7bbb09620e5337e0b6dfe2ea0ddbd19dd5b154"}, - {file = "yarl-1.13.1-cp310-cp310-win_amd64.whl", hash = "sha256:1bbb418f46c7f7355084833051701b2301092e4611d9e392360c3ba2e3e69f88"}, - {file = "yarl-1.13.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:216a6785f296169ed52cd7dcdc2612f82c20f8c9634bf7446327f50398732a51"}, - {file = "yarl-1.13.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:40c6e73c03a6befb85b72da213638b8aaa80fe4136ec8691560cf98b11b8ae6e"}, - {file = "yarl-1.13.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2430cf996113abe5aee387d39ee19529327205cda975d2b82c0e7e96e5fdabdc"}, - {file = "yarl-1.13.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fb4134cc6e005b99fa29dbc86f1ea0a298440ab6b07c6b3ee09232a3b48f495"}, - {file = "yarl-1.13.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:309c104ecf67626c033845b860d31594a41343766a46fa58c3309c538a1e22b2"}, - {file = "yarl-1.13.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f90575e9fe3aae2c1e686393a9689c724cd00045275407f71771ae5d690ccf38"}, - {file = "yarl-1.13.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d2e1626be8712333a9f71270366f4a132f476ffbe83b689dd6dc0d114796c74"}, - {file = "yarl-1.13.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b66c87da3c6da8f8e8b648878903ca54589038a0b1e08dde2c86d9cd92d4ac9"}, - {file = "yarl-1.13.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cf1ad338620249f8dd6d4b6a91a69d1f265387df3697ad5dc996305cf6c26fb2"}, - {file = "yarl-1.13.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9915300fe5a0aa663c01363db37e4ae8e7c15996ebe2c6cce995e7033ff6457f"}, - {file = "yarl-1.13.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:703b0f584fcf157ef87816a3c0ff868e8c9f3c370009a8b23b56255885528f10"}, - {file = "yarl-1.13.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:1d8e3ca29f643dd121f264a7c89f329f0fcb2e4461833f02de6e39fef80f89da"}, - {file = "yarl-1.13.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7055bbade838d68af73aea13f8c86588e4bcc00c2235b4b6d6edb0dbd174e246"}, - {file = "yarl-1.13.1-cp311-cp311-win32.whl", hash = "sha256:a3442c31c11088e462d44a644a454d48110f0588de830921fd201060ff19612a"}, - {file = "yarl-1.13.1-cp311-cp311-win_amd64.whl", hash = "sha256:81bad32c8f8b5897c909bf3468bf601f1b855d12f53b6af0271963ee67fff0d2"}, - {file = "yarl-1.13.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f452cc1436151387d3d50533523291d5f77c6bc7913c116eb985304abdbd9ec9"}, - {file = "yarl-1.13.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:9cec42a20eae8bebf81e9ce23fb0d0c729fc54cf00643eb251ce7c0215ad49fe"}, - {file = "yarl-1.13.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d959fe96e5c2712c1876d69af0507d98f0b0e8d81bee14cfb3f6737470205419"}, - {file = "yarl-1.13.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8c837ab90c455f3ea8e68bee143472ee87828bff19ba19776e16ff961425b57"}, - {file = "yarl-1.13.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:94a993f976cdcb2dc1b855d8b89b792893220db8862d1a619efa7451817c836b"}, - {file = "yarl-1.13.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2b2442a415a5f4c55ced0fade7b72123210d579f7d950e0b5527fc598866e62c"}, - {file = "yarl-1.13.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3fdbf0418489525231723cdb6c79e7738b3cbacbaed2b750cb033e4ea208f220"}, - {file = "yarl-1.13.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6b7f6e699304717fdc265a7e1922561b02a93ceffdaefdc877acaf9b9f3080b8"}, - {file = "yarl-1.13.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:bcd5bf4132e6a8d3eb54b8d56885f3d3a38ecd7ecae8426ecf7d9673b270de43"}, - {file = "yarl-1.13.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:2a93a4557f7fc74a38ca5a404abb443a242217b91cd0c4840b1ebedaad8919d4"}, - {file = "yarl-1.13.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:22b739f99c7e4787922903f27a892744189482125cc7b95b747f04dd5c83aa9f"}, - {file = "yarl-1.13.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:2db874dd1d22d4c2c657807562411ffdfabec38ce4c5ce48b4c654be552759dc"}, - {file = "yarl-1.13.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4feaaa4742517eaceafcbe74595ed335a494c84634d33961214b278126ec1485"}, - {file = "yarl-1.13.1-cp312-cp312-win32.whl", hash = "sha256:bbf9c2a589be7414ac4a534d54e4517d03f1cbb142c0041191b729c2fa23f320"}, - {file = "yarl-1.13.1-cp312-cp312-win_amd64.whl", hash = "sha256:d07b52c8c450f9366c34aa205754355e933922c79135125541daae6cbf31c799"}, - {file = "yarl-1.13.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:95c6737f28069153c399d875317f226bbdea939fd48a6349a3b03da6829fb550"}, - {file = "yarl-1.13.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:cd66152561632ed4b2a9192e7f8e5a1d41e28f58120b4761622e0355f0fe034c"}, - {file = "yarl-1.13.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6a2acde25be0cf9be23a8f6cbd31734536a264723fca860af3ae5e89d771cd71"}, - {file = "yarl-1.13.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9a18595e6a2ee0826bf7dfdee823b6ab55c9b70e8f80f8b77c37e694288f5de1"}, - {file = "yarl-1.13.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a31d21089894942f7d9a8df166b495101b7258ff11ae0abec58e32daf8088813"}, - {file = "yarl-1.13.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:45f209fb4bbfe8630e3d2e2052535ca5b53d4ce2d2026bed4d0637b0416830da"}, - {file = "yarl-1.13.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f722f30366474a99745533cc4015b1781ee54b08de73260b2bbe13316079851"}, - {file = "yarl-1.13.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3bf60444269345d712838bb11cc4eadaf51ff1a364ae39ce87a5ca8ad3bb2c8"}, - {file = "yarl-1.13.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:942c80a832a79c3707cca46bd12ab8aa58fddb34b1626d42b05aa8f0bcefc206"}, - {file = "yarl-1.13.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:44b07e1690f010c3c01d353b5790ec73b2f59b4eae5b0000593199766b3f7a5c"}, - {file = "yarl-1.13.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:396e59b8de7e4d59ff5507fb4322d2329865b909f29a7ed7ca37e63ade7f835c"}, - {file = "yarl-1.13.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:3bb83a0f12701c0b91112a11148b5217617982e1e466069d0555be9b372f2734"}, - {file = "yarl-1.13.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c92b89bffc660f1274779cb6fbb290ec1f90d6dfe14492523a0667f10170de26"}, - {file = "yarl-1.13.1-cp313-cp313-win32.whl", hash = "sha256:269c201bbc01d2cbba5b86997a1e0f73ba5e2f471cfa6e226bcaa7fd664b598d"}, - {file = "yarl-1.13.1-cp313-cp313-win_amd64.whl", hash = "sha256:1d0828e17fa701b557c6eaed5edbd9098eb62d8838344486248489ff233998b8"}, - {file = "yarl-1.13.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8be8cdfe20787e6a5fcbd010f8066227e2bb9058331a4eccddec6c0db2bb85b2"}, - {file = "yarl-1.13.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:08d7148ff11cb8e886d86dadbfd2e466a76d5dd38c7ea8ebd9b0e07946e76e4b"}, - {file = "yarl-1.13.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4afdf84610ca44dcffe8b6c22c68f309aff96be55f5ea2fa31c0c225d6b83e23"}, - {file = "yarl-1.13.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0d12fe78dcf60efa205e9a63f395b5d343e801cf31e5e1dda0d2c1fb618073d"}, - {file = "yarl-1.13.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:298c1eecfd3257aa16c0cb0bdffb54411e3e831351cd69e6b0739be16b1bdaa8"}, - {file = "yarl-1.13.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c14c16831b565707149c742d87a6203eb5597f4329278446d5c0ae7a1a43928e"}, - {file = "yarl-1.13.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a9bacedbb99685a75ad033fd4de37129449e69808e50e08034034c0bf063f99"}, - {file = "yarl-1.13.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:658e8449b84b92a4373f99305de042b6bd0d19bf2080c093881e0516557474a5"}, - {file = "yarl-1.13.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:373f16f38721c680316a6a00ae21cc178e3a8ef43c0227f88356a24c5193abd6"}, - {file = "yarl-1.13.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:45d23c4668d4925688e2ea251b53f36a498e9ea860913ce43b52d9605d3d8177"}, - {file = "yarl-1.13.1-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:f7917697bcaa3bc3e83db91aa3a0e448bf5cde43c84b7fc1ae2427d2417c0224"}, - {file = "yarl-1.13.1-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:5989a38ba1281e43e4663931a53fbf356f78a0325251fd6af09dd03b1d676a09"}, - {file = "yarl-1.13.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:11b3ca8b42a024513adce810385fcabdd682772411d95bbbda3b9ed1a4257644"}, - {file = "yarl-1.13.1-cp38-cp38-win32.whl", hash = "sha256:dcaef817e13eafa547cdfdc5284fe77970b891f731266545aae08d6cce52161e"}, - {file = "yarl-1.13.1-cp38-cp38-win_amd64.whl", hash = "sha256:7addd26594e588503bdef03908fc207206adac5bd90b6d4bc3e3cf33a829f57d"}, - {file = "yarl-1.13.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a0ae6637b173d0c40b9c1462e12a7a2000a71a3258fa88756a34c7d38926911c"}, - {file = "yarl-1.13.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:576365c9f7469e1f6124d67b001639b77113cfd05e85ce0310f5f318fd02fe85"}, - {file = "yarl-1.13.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:78f271722423b2d4851cf1f4fa1a1c4833a128d020062721ba35e1a87154a049"}, - {file = "yarl-1.13.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d74f3c335cfe9c21ea78988e67f18eb9822f5d31f88b41aec3a1ec5ecd32da5"}, - {file = "yarl-1.13.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1891d69a6ba16e89473909665cd355d783a8a31bc84720902c5911dbb6373465"}, - {file = "yarl-1.13.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fb382fd7b4377363cc9f13ba7c819c3c78ed97c36a82f16f3f92f108c787cbbf"}, - {file = "yarl-1.13.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c8854b9f80693d20cec797d8e48a848c2fb273eb6f2587b57763ccba3f3bd4b"}, - {file = "yarl-1.13.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bbf2c3f04ff50f16404ce70f822cdc59760e5e2d7965905f0e700270feb2bbfc"}, - {file = "yarl-1.13.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:fb9f59f3848edf186a76446eb8bcf4c900fe147cb756fbbd730ef43b2e67c6a7"}, - {file = "yarl-1.13.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ef9b85fa1bc91c4db24407e7c4da93a5822a73dd4513d67b454ca7064e8dc6a3"}, - {file = "yarl-1.13.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:098b870c18f1341786f290b4d699504e18f1cd050ed179af8123fd8232513424"}, - {file = "yarl-1.13.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:8c723c91c94a3bc8033dd2696a0f53e5d5f8496186013167bddc3fb5d9df46a3"}, - {file = "yarl-1.13.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:44a4c40a6f84e4d5955b63462a0e2a988f8982fba245cf885ce3be7618f6aa7d"}, - {file = "yarl-1.13.1-cp39-cp39-win32.whl", hash = "sha256:84bbcdcf393139f0abc9f642bf03f00cac31010f3034faa03224a9ef0bb74323"}, - {file = "yarl-1.13.1-cp39-cp39-win_amd64.whl", hash = "sha256:fc2931ac9ce9c61c9968989ec831d3a5e6fcaaff9474e7cfa8de80b7aff5a093"}, - {file = "yarl-1.13.1-py3-none-any.whl", hash = "sha256:6a5185ad722ab4dd52d5fb1f30dcc73282eb1ed494906a92d1a228d3f89607b0"}, - {file = "yarl-1.13.1.tar.gz", hash = "sha256:ec8cfe2295f3e5e44c51f57272afbd69414ae629ec7c6b27f5a410efc78b70a0"}, + {file = "yarl-1.17.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2d8715edfe12eee6f27f32a3655f38d6c7410deb482158c0b7d4b7fad5d07628"}, + {file = "yarl-1.17.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1803bf2a7a782e02db746d8bd18f2384801bc1d108723840b25e065b116ad726"}, + {file = "yarl-1.17.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e66589110e20c2951221a938fa200c7aa134a8bdf4e4dc97e6b21539ff026d4"}, + {file = "yarl-1.17.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7069d411cfccf868e812497e0ec4acb7c7bf8d684e93caa6c872f1e6f5d1664d"}, + {file = "yarl-1.17.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cbf70ba16118db3e4b0da69dcde9d4d4095d383c32a15530564c283fa38a7c52"}, + {file = "yarl-1.17.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0bc53cc349675b32ead83339a8de79eaf13b88f2669c09d4962322bb0f064cbc"}, + {file = "yarl-1.17.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6aa18a402d1c80193ce97c8729871f17fd3e822037fbd7d9b719864018df746"}, + {file = "yarl-1.17.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d89c5bc701861cfab357aa0cd039bc905fe919997b8c312b4b0c358619c38d4d"}, + {file = "yarl-1.17.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b728bdf38ca58f2da1d583e4af4ba7d4cd1a58b31a363a3137a8159395e7ecc7"}, + {file = "yarl-1.17.0-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:5542e57dc15d5473da5a39fbde14684b0cc4301412ee53cbab677925e8497c11"}, + {file = "yarl-1.17.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e564b57e5009fb150cb513804d7e9e9912fee2e48835638f4f47977f88b4a39c"}, + {file = "yarl-1.17.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:eb3c4cff524b4c1c1dba3a6da905edb1dfd2baf6f55f18a58914bbb2d26b59e1"}, + {file = "yarl-1.17.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:05e13f389038842da930d439fbed63bdce3f7644902714cb68cf527c971af804"}, + {file = "yarl-1.17.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:153c38ee2b4abba136385af4467459c62d50f2a3f4bde38c7b99d43a20c143ef"}, + {file = "yarl-1.17.0-cp310-cp310-win32.whl", hash = "sha256:4065b4259d1ae6f70fd9708ffd61e1c9c27516f5b4fae273c41028afcbe3a094"}, + {file = "yarl-1.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:abf366391a02a8335c5c26163b5fe6f514cc1d79e74d8bf3ffab13572282368e"}, + {file = "yarl-1.17.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:19a4fe0279626c6295c5b0c8c2bb7228319d2e985883621a6e87b344062d8135"}, + {file = "yarl-1.17.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cadd0113f4db3c6b56868d6a19ca6286f5ccfa7bc08c27982cf92e5ed31b489a"}, + {file = "yarl-1.17.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:60d6693eef43215b1ccfb1df3f6eae8db30a9ff1e7989fb6b2a6f0b468930ee8"}, + {file = "yarl-1.17.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bb8bf3843e1fa8cf3fe77813c512818e57368afab7ebe9ef02446fe1a10b492"}, + {file = "yarl-1.17.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d2a5b35fd1d8d90443e061d0c8669ac7600eec5c14c4a51f619e9e105b136715"}, + {file = "yarl-1.17.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c5bf17b32f392df20ab5c3a69d37b26d10efaa018b4f4e5643c7520d8eee7ac7"}, + {file = "yarl-1.17.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48f51b529b958cd06e78158ff297a8bf57b4021243c179ee03695b5dbf9cb6e1"}, + {file = "yarl-1.17.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5fcaa06bf788e19f913d315d9c99a69e196a40277dc2c23741a1d08c93f4d430"}, + {file = "yarl-1.17.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:32f3ee19ff0f18a7a522d44e869e1ebc8218ad3ae4ebb7020445f59b4bbe5897"}, + {file = "yarl-1.17.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:a4fb69a81ae2ec2b609574ae35420cf5647d227e4d0475c16aa861dd24e840b0"}, + {file = "yarl-1.17.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:7bacc8b77670322132a1b2522c50a1f62991e2f95591977455fd9a398b4e678d"}, + {file = "yarl-1.17.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:437bf6eb47a2d20baaf7f6739895cb049e56896a5ffdea61a4b25da781966e8b"}, + {file = "yarl-1.17.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:30534a03c87484092080e3b6e789140bd277e40f453358900ad1f0f2e61fc8ec"}, + {file = "yarl-1.17.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b30df4ff98703649915144be6f0df3b16fd4870ac38a09c56d5d9e54ff2d5f96"}, + {file = "yarl-1.17.0-cp311-cp311-win32.whl", hash = "sha256:263b487246858e874ab53e148e2a9a0de8465341b607678106829a81d81418c6"}, + {file = "yarl-1.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:07055a9e8b647a362e7d4810fe99d8f98421575e7d2eede32e008c89a65a17bd"}, + {file = "yarl-1.17.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:84095ab25ba69a8fa3fb4936e14df631b8a71193fe18bd38be7ecbe34d0f5512"}, + {file = "yarl-1.17.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:02608fb3f6df87039212fc746017455ccc2a5fc96555ee247c45d1e9f21f1d7b"}, + {file = "yarl-1.17.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:13468d291fe8c12162b7cf2cdb406fe85881c53c9e03053ecb8c5d3523822cd9"}, + {file = "yarl-1.17.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8da3f8f368fb7e2f052fded06d5672260c50b5472c956a5f1bd7bf474ae504ab"}, + {file = "yarl-1.17.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ec0507ab6523980bed050137007c76883d941b519aca0e26d4c1ec1f297dd646"}, + {file = "yarl-1.17.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08fc76df7fd8360e9ff30e6ccc3ee85b8dbd6ed5d3a295e6ec62bcae7601b932"}, + {file = "yarl-1.17.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d522f390686acb6bab2b917dd9ca06740c5080cd2eaa5aef8827b97e967319d"}, + {file = "yarl-1.17.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:147c527a80bb45b3dcd6e63401af8ac574125d8d120e6afe9901049286ff64ef"}, + {file = "yarl-1.17.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:24cf43bcd17a0a1f72284e47774f9c60e0bf0d2484d5851f4ddf24ded49f33c6"}, + {file = "yarl-1.17.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:c28a44b9e0fba49c3857360e7ad1473fc18bc7f6659ca08ed4f4f2b9a52c75fa"}, + {file = "yarl-1.17.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:350cacb2d589bc07d230eb995d88fcc646caad50a71ed2d86df533a465a4e6e1"}, + {file = "yarl-1.17.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:fd1ab1373274dea1c6448aee420d7b38af163b5c4732057cd7ee9f5454efc8b1"}, + {file = "yarl-1.17.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:4934e0f96dadc567edc76d9c08181633c89c908ab5a3b8f698560124167d9488"}, + {file = "yarl-1.17.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8d0a278170d75c88e435a1ce76557af6758bfebc338435b2eba959df2552163e"}, + {file = "yarl-1.17.0-cp312-cp312-win32.whl", hash = "sha256:61584f33196575a08785bb56db6b453682c88f009cd9c6f338a10f6737ce419f"}, + {file = "yarl-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:9987a439ad33a7712bd5bbd073f09ad10d38640425fa498ecc99d8aa064f8fc4"}, + {file = "yarl-1.17.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8deda7b8eb15a52db94c2014acdc7bdd14cb59ec4b82ac65d2ad16dc234a109e"}, + {file = "yarl-1.17.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:56294218b348dcbd3d7fce0ffd79dd0b6c356cb2a813a1181af730b7c40de9e7"}, + {file = "yarl-1.17.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1fab91292f51c884b290ebec0b309a64a5318860ccda0c4940e740425a67b6b7"}, + {file = "yarl-1.17.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cf93fa61ff4d9c7d40482ce1a2c9916ca435e34a1b8451e17f295781ccc034f"}, + {file = "yarl-1.17.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:261be774a0d71908c8830c33bacc89eef15c198433a8cc73767c10eeeb35a7d0"}, + {file = "yarl-1.17.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:deec9693b67f6af856a733b8a3e465553ef09e5e8ead792f52c25b699b8f9e6e"}, + {file = "yarl-1.17.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c804b07622ba50a765ca7fb8145512836ab65956de01307541def869e4a456c9"}, + {file = "yarl-1.17.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d013a7c9574e98c14831a8f22d27277688ec3b2741d0188ac01a910b009987a"}, + {file = "yarl-1.17.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e2cfcba719bd494c7413dcf0caafb51772dec168c7c946e094f710d6aa70494e"}, + {file = "yarl-1.17.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:c068aba9fc5b94dfae8ea1cedcbf3041cd4c64644021362ffb750f79837e881f"}, + {file = "yarl-1.17.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:3616df510ffac0df3c9fa851a40b76087c6c89cbcea2de33a835fc80f9faac24"}, + {file = "yarl-1.17.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:755d6176b442fba9928a4df787591a6a3d62d4969f05c406cad83d296c5d4e05"}, + {file = "yarl-1.17.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:c18f6e708d1cf9ff5b1af026e697ac73bea9cb70ee26a2b045b112548579bed2"}, + {file = "yarl-1.17.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5b937c216b6dee8b858c6afea958de03c5ff28406257d22b55c24962a2baf6fd"}, + {file = "yarl-1.17.0-cp313-cp313-win32.whl", hash = "sha256:d0131b14cb545c1a7bd98f4565a3e9bdf25a1bd65c83fc156ee5d8a8499ec4a3"}, + {file = "yarl-1.17.0-cp313-cp313-win_amd64.whl", hash = "sha256:01c96efa4313c01329e88b7e9e9e1b2fc671580270ddefdd41129fa8d0db7696"}, + {file = "yarl-1.17.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0d44f67e193f0a7acdf552ecb4d1956a3a276c68e7952471add9f93093d1c30d"}, + {file = "yarl-1.17.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:16ea0aa5f890cdcb7ae700dffa0397ed6c280840f637cd07bffcbe4b8d68b985"}, + {file = "yarl-1.17.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cf5469dc7dcfa65edf5cc3a6add9f84c5529c6b556729b098e81a09a92e60e51"}, + {file = "yarl-1.17.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e662bf2f6e90b73cf2095f844e2bc1fda39826472a2aa1959258c3f2a8500a2f"}, + {file = "yarl-1.17.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8260e88f1446904ba20b558fa8ce5d0ab9102747238e82343e46d056d7304d7e"}, + {file = "yarl-1.17.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5dc16477a4a2c71e64c5d3d15d7ae3d3a6bb1e8b955288a9f73c60d2a391282f"}, + {file = "yarl-1.17.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46027e326cecd55e5950184ec9d86c803f4f6fe4ba6af9944a0e537d643cdbe0"}, + {file = "yarl-1.17.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fc95e46c92a2b6f22e70afe07e34dbc03a4acd07d820204a6938798b16f4014f"}, + {file = "yarl-1.17.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:16ca76c7ac9515320cd09d6cc083d8d13d1803f6ebe212b06ea2505fd66ecff8"}, + {file = "yarl-1.17.0-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:eb1a5b97388f2613f9305d78a3473cdf8d80c7034e554d8199d96dcf80c62ac4"}, + {file = "yarl-1.17.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:41fd5498975418cdc34944060b8fbeec0d48b2741068077222564bea68daf5a6"}, + {file = "yarl-1.17.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:146ca582ed04a5664ad04b0e0603934281eaab5c0115a5a46cce0b3c061a56a1"}, + {file = "yarl-1.17.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:6abb8c06107dbec97481b2392dafc41aac091a5d162edf6ed7d624fe7da0587a"}, + {file = "yarl-1.17.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:4d14be4613dd4f96c25feb4bd8c0d8ce0f529ab0ae555a17df5789e69d8ec0c5"}, + {file = "yarl-1.17.0-cp39-cp39-win32.whl", hash = "sha256:174d6a6cad1068f7850702aad0c7b1bca03bcac199ca6026f84531335dfc2646"}, + {file = "yarl-1.17.0-cp39-cp39-win_amd64.whl", hash = "sha256:6af417ca2c7349b101d3fd557ad96b4cd439fdb6ab0d288e3f64a068eea394d0"}, + {file = "yarl-1.17.0-py3-none-any.whl", hash = "sha256:62dd42bb0e49423f4dd58836a04fcf09c80237836796025211bbe913f1524993"}, + {file = "yarl-1.17.0.tar.gz", hash = "sha256:d3f13583f378930377e02002b4085a3d025b00402d5a80911726d43a67911cd9"}, ] [package.dependencies] idna = ">=2.0" multidict = ">=4.0" +propcache = ">=0.2.0" [metadata] lock-version = "2.0" python-versions = ">=3.12,<3.13" -content-hash = "c3f32e1093da4af0fb50e0a0a2507f097ec1c792adb911fe1410f4915f8464c6" +content-hash = "00e1454fb5abfef9b136feb3441110d472bffbe362a8f39875fb864b59263ab4" diff --git a/integrations-service/pyproject.toml b/integrations-service/pyproject.toml index 821b2856a..51137c2a4 100644 --- a/integrations-service/pyproject.toml +++ b/integrations-service/pyproject.toml @@ -34,11 +34,52 @@ check = [ "format", "typecheck", ] +test = "pytest" +codegen = """ +datamodel-codegen \ + --input ../openapi.yaml \ + --input-file-type openapi \ + --output integrations/autogen/ \ + --output-model-type pydantic_v2.BaseModel \ + --strict-types bool \ + --strict-nullable \ + --allow-population-by-field-name \ + --field-include-all-keys \ + --reuse-model \ + --snake-case-field \ + --enum-field-as-literal all \ + --field-constraints \ + --use-operation-id-as-name \ + --use-schema-description \ + --use-field-description \ + --use-annotated \ + --use-default \ + --use-unique-items-as-set \ + --use-subclass-enum \ + --use-union-operator \ + --use-one-literal-as-default \ + --use-double-quotes \ + --use-exact-imports \ + --use-standard-collections \ + --use-non-positive-negative-number-constrained-types \ + --target-python-version 3.12 \ + --treat-dot-as-module \ + --use-title-as-name \ + --collapse-root-models \ + --output-datetime-class AwareDatetime \ + --openapi-scopes schemas \ + --keep-model-order \ + --disable-timestamp""" -[tool.poetry.dev-dependencies] + +[tool.poetry.group.dev.dependencies] +poethepoet = "^0.25.1" +datamodel-code-generator = "^0.26.2" pytest = "^6.2.5" pytype = "^2024.9.13" ruff = "^0.6.8" +pytest-cov = "^5.0.0" +anyio = "^4.6.2.post1" [build-system] requires = ["poetry-core>=1.0.0"] diff --git a/integrations-service/pytest.ini b/integrations-service/pytest.ini new file mode 100644 index 000000000..351b8de9b --- /dev/null +++ b/integrations-service/pytest.ini @@ -0,0 +1,6 @@ +[pytest] +pythonpath = . +testpaths = tests +python_files = test_*.py +python_classes = Test* +python_functions = test_* \ No newline at end of file diff --git a/integrations-service/tests/__init__.py b/integrations-service/tests/__init__.py new file mode 100644 index 000000000..8685672f8 --- /dev/null +++ b/integrations-service/tests/__init__.py @@ -0,0 +1 @@ +# Empty file to make the tests directory a Python package diff --git a/integrations-service/tests/conftest.py b/integrations-service/tests/conftest.py new file mode 100644 index 000000000..1fecf124a --- /dev/null +++ b/integrations-service/tests/conftest.py @@ -0,0 +1,60 @@ +import pytest +from unittest.mock import patch + +from integrations.providers import available_providers +from .mocks.brave import MockBraveSearchClient +from .mocks.email import MockEmailClient +from .mocks.spider import MockSpiderClient +from .mocks.weather import MockWeatherClient +from .mocks.wikipedia import MockWikipediaClient + + +@pytest.fixture(autouse=True) +def mock_external_services(): + """Automatically mock all external service clients""" + with patch("langchain_community.tools.BraveSearch", MockBraveSearchClient), patch( + "smtplib.SMTP", MockEmailClient + ), patch( + "langchain_community.document_loaders.SpiderLoader", MockSpiderClient + ), patch( + "langchain_community.utilities.OpenWeatherMapAPIWrapper", MockWeatherClient + ), patch( + "langchain_community.document_loaders.WikipediaLoader", MockWikipediaClient + ): + yield + + +@pytest.fixture +def providers(): + """Fixture that provides access to all available integration providers""" + return available_providers + + +@pytest.fixture +def wikipedia_provider(): + """Fixture that provides access to the Wikipedia provider""" + return available_providers["wikipedia"] + + +@pytest.fixture +def weather_provider(): + """Fixture that provides access to the Weather provider""" + return available_providers["weather"] + + +@pytest.fixture +def spider_provider(): + """Fixture that provides access to the Spider provider""" + return available_providers["spider"] + + +@pytest.fixture +def brave_provider(): + """Fixture that provides access to the Brave provider""" + return available_providers["brave"] + + +@pytest.fixture +def email_provider(): + """Fixture that provides access to the Email provider""" + return available_providers["email"] diff --git a/integrations-service/tests/mocks/__init__.py b/integrations-service/tests/mocks/__init__.py new file mode 100644 index 000000000..487dd078a --- /dev/null +++ b/integrations-service/tests/mocks/__init__.py @@ -0,0 +1 @@ +"""Mock implementations of external integration libraries""" diff --git a/integrations-service/tests/mocks/brave.py b/integrations-service/tests/mocks/brave.py new file mode 100644 index 000000000..7c92cfe01 --- /dev/null +++ b/integrations-service/tests/mocks/brave.py @@ -0,0 +1,18 @@ +"""Mock implementation of Brave Search API client""" + +from typing import Optional + + +class MockBraveSearchClient: + def __init__(self, api_key: str): + self.api_key = api_key + + def search(self, query: str) -> str: + """Mock search that returns a fixed response""" + return f"Mock Brave search results for: {query}" + + +class MockBraveSearchException(Exception): + """Mock exception for Brave Search errors""" + + pass diff --git a/integrations-service/tests/mocks/email.py b/integrations-service/tests/mocks/email.py new file mode 100644 index 000000000..5f747ddc3 --- /dev/null +++ b/integrations-service/tests/mocks/email.py @@ -0,0 +1,19 @@ +"""Mock implementation of email client""" + + +class MockEmailClient: + def __init__(self, host: str, port: int, user: str, password: str): + self.host = host + self.port = port + self.user = user + self.password = password + + def send(self, to: str, from_: str, subject: str, body: str) -> bool: + """Mock email sending that always succeeds""" + return True + + +class MockEmailException(Exception): + """Mock exception for email errors""" + + pass diff --git a/integrations-service/tests/mocks/spider.py b/integrations-service/tests/mocks/spider.py new file mode 100644 index 000000000..dc6f01c41 --- /dev/null +++ b/integrations-service/tests/mocks/spider.py @@ -0,0 +1,27 @@ +"""Mock implementation of web spider client""" + +from typing import List +from langchain_core.documents import Document +from pydantic import AnyUrl + + +class MockSpiderClient: + def __init__(self, api_key: str): + self.api_key = api_key + + def crawl(self, url: AnyUrl, mode: str = "scrape") -> List[Document]: + """Mock crawl that returns fixed documents""" + return [ + Document( + page_content="Mock crawled content 1", metadata={"source": str(url)} + ), + Document( + page_content="Mock crawled content 2", metadata={"source": str(url)} + ), + ] + + +class MockSpiderException(Exception): + """Mock exception for spider errors""" + + pass diff --git a/integrations-service/tests/mocks/weather.py b/integrations-service/tests/mocks/weather.py new file mode 100644 index 000000000..4fa4c357d --- /dev/null +++ b/integrations-service/tests/mocks/weather.py @@ -0,0 +1,16 @@ +"""Mock implementation of weather API client""" + + +class MockWeatherClient: + def __init__(self, api_key: str): + self.api_key = api_key + + def get_weather(self, location: str) -> str: + """Mock weather lookup that returns fixed data""" + return f"Mock weather data for {location}: Sunny, 72°F" + + +class MockWeatherException(Exception): + """Mock exception for weather API errors""" + + pass diff --git a/integrations-service/tests/mocks/wikipedia.py b/integrations-service/tests/mocks/wikipedia.py new file mode 100644 index 000000000..c22bd58e2 --- /dev/null +++ b/integrations-service/tests/mocks/wikipedia.py @@ -0,0 +1,22 @@ +"""Mock implementation of Wikipedia API client""" + +from typing import List +from langchain_core.documents import Document + + +class MockWikipediaClient: + def search(self, query: str, load_max_docs: int = 2) -> List[Document]: + """Mock Wikipedia search that returns fixed documents""" + return [ + Document( + page_content=f"Mock Wikipedia content about {query}", + metadata={"source": f"wikipedia/{query}"}, + ) + for _ in range(load_max_docs) + ] + + +class MockWikipediaException(Exception): + """Mock exception for Wikipedia API errors""" + + pass diff --git a/integrations-service/tests/test_provider_execution.py b/integrations-service/tests/test_provider_execution.py new file mode 100644 index 000000000..972da9ac3 --- /dev/null +++ b/integrations-service/tests/test_provider_execution.py @@ -0,0 +1,61 @@ +"""Tests for provider execution using mocks""" + +import pytest +from pydantic import AnyUrl + +from integrations.autogen.Tools import ( + BraveSearchArguments, + EmailArguments, + SpiderFetchArguments, + WeatherGetArguments, + WikipediaSearchArguments, +) +from integrations.providers import available_providers +from integrations.utils.execute_integration import execute_integration + + +async def test_weather_get_mock(weather_provider): + """Test weather lookup with mock client""" + result = await execute_integration( + provider="weather", + method="get", + arguments=WeatherGetArguments(location="London"), + ) + + assert "London" in result.result + + +async def test_weather_get_direct(): + """Test weather lookup with mock client""" + result = await execute_integration( + provider="weather", + method="get", + arguments=WeatherGetArguments(location="London"), + ) + + assert "London" in result.result + + +# async def test_weather_get_direct(): +# """Test weather lookup with mock client""" +# raise NotImplementedError + + +# def test_weather_get_mock(weather_provider): +# """Test weather lookup with mock client""" +# raise NotImplementedError + + +# def test_spider_crawl(spider_provider): +# """Test web crawling with mock client""" +# raise NotImplementedError + + +# def test_brave_search(brave_provider): +# """Test Brave search with mock client""" +# raise NotImplementedError + + +# def test_email_send(email_provider): +# """Test email sending with mock client""" +# raise NotImplementedError diff --git a/integrations-service/tests/test_providers.py b/integrations-service/tests/test_providers.py new file mode 100644 index 000000000..edc38d8ac --- /dev/null +++ b/integrations-service/tests/test_providers.py @@ -0,0 +1,36 @@ +import pytest +from integrations.models import BaseProvider, BaseProviderMethod, ProviderInfo + + +def test_available_providers(providers): + """Test that the available providers dictionary is properly structured""" + assert isinstance(providers, dict) + assert all(isinstance(key, str) for key in providers.keys()) + assert all(isinstance(value, BaseProvider) for value in providers.values()) + + +def test_provider_structure(providers): + """Test that each provider has the required attributes""" + for provider_name, provider in providers.items(): + assert isinstance(provider.provider, str) + assert isinstance(provider.methods, list) + assert all( + isinstance(method, BaseProviderMethod) for method in provider.methods + ) + assert isinstance(provider.info, ProviderInfo) + + +def test_wikipedia_provider(wikipedia_provider): + """Test Wikipedia provider specific configuration""" + assert wikipedia_provider.provider == "wikipedia" + assert wikipedia_provider.setup is None + assert len(wikipedia_provider.methods) == 1 + assert wikipedia_provider.methods[0].method == "search" + + +def test_weather_provider(weather_provider): + """Test Weather provider specific configuration""" + assert weather_provider.provider == "weather" + assert weather_provider.setup is not None + assert len(weather_provider.methods) == 1 + assert weather_provider.methods[0].method == "get" diff --git a/memory-store/Dockerfile b/memory-store/Dockerfile index 852a5f687..50d0eccb7 100644 --- a/memory-store/Dockerfile +++ b/memory-store/Dockerfile @@ -12,7 +12,7 @@ FROM rust:1.80.1-bookworm AS builder RUN apt-get update && apt-get install -y liburing-dev # Clone the CozoDB repository with submodules (checkout the specified commit) -ARG COZO_COMMIT=57b7b440fd93440d985f2259eeaaf2ba5cc7569e +ARG COZO_COMMIT=695d0282fa9836bd93b4ff4313ec1cfb514c4f3b RUN \ git clone --depth 1 --recurse-submodules --shallow-submodules https://github.com/cozodb/cozo.git /usr/src/cozo && \ cd /usr/src/cozo && \ diff --git a/scripts/generate_openapi_code.sh b/scripts/generate_openapi_code.sh index f3cfe70b1..ebb080607 100755 --- a/scripts/generate_openapi_code.sh +++ b/scripts/generate_openapi_code.sh @@ -15,3 +15,9 @@ cd agents-api && \ poetry run poe codegen && \ poetry run poe format cd - + +cd integrations-service && \ + # poetry update && \ + poetry run poe codegen && \ + poetry run poe format +cd - diff --git a/scripts/readme_translator.py b/scripts/readme_translator.py index 011763b52..180c69d9a 100644 --- a/scripts/readme_translator.py +++ b/scripts/readme_translator.py @@ -1,10 +1,14 @@ import re +import logging from typing import List from pathlib import Path from functools import partial from deep_translator import GoogleTranslator import parmapper +# Configure logging +logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') + HTML_TAGS_PATTERN = r"(<[^>]+>)" CODEBLOCK_PATTERN = r"(```[\s\S]*?```|\n)" @@ -14,6 +18,23 @@ def create_translator(target: str) -> GoogleTranslator: """ return GoogleTranslator(source="en", target=target) +def is_html_tag(segment: str) -> bool: + """Check if the segment is an HTML tag.""" + return re.fullmatch(HTML_TAGS_PATTERN, segment) is not None + +def is_special_character(segment: str) -> bool: + """Check if the segment consists of special characters only.""" + return re.fullmatch(r'^[!"#$%&\'()*+,\-./:;<=>?@[\]^_`{|}~]+$', segment) is not None + +def translate_sub_segment(translator: GoogleTranslator, sub_segment: str) -> str: + """Translate a single sub-segment.""" + try: + translated = translator.translate(sub_segment) + return translated if translated else sub_segment + except Exception as e: + logging.error(f"Error translating segment '{sub_segment}': {e}") + return sub_segment + def translate_segment(translator: GoogleTranslator, segment: str) -> str: """ Translate a given raw HTML content using the provided translator, preserving HTML tags and newlines. @@ -25,19 +46,12 @@ def translate_segment(translator: GoogleTranslator, segment: str) -> str: translated_segments = [] for sub_segment in segments: - if re.fullmatch(HTML_TAGS_PATTERN, sub_segment): + if is_html_tag(sub_segment): + translated_segments.append(sub_segment) + elif is_special_character(sub_segment): translated_segments.append(sub_segment) else: - try: - if re.fullmatch(r'^[!"#$%&\'()*+,\-./:;<=>?@[\]^_`{|}~]+$', sub_segment): - translated_segments.append(sub_segment) - continue - - translated = translator.translate(sub_segment) - translated_segments.append(translated if translated else sub_segment) - except Exception as e: - print(f"Error translating segment '{sub_segment}': {e}") - translated_segments.append(sub_segment) + translated_segments.append(translate_sub_segment(translator, sub_segment)) return "".join(translated_segments) @@ -68,8 +82,10 @@ def main() -> None: destination_langs = ["zh-CN", "ja", "fr"] for lang in destination_langs: + logging.info(f"Translating to {lang}...") translated_readme = translate_readme(source_file, lang) save_translated_readme(translated_readme, lang) + logging.info(f"Saved translated README for {lang}.") if __name__ == "__main__": - main() \ No newline at end of file + main() diff --git a/typespec/tools/anthropic.tsp b/typespec/tools/anthropic.tsp new file mode 100644 index 000000000..2718b42e6 --- /dev/null +++ b/typespec/tools/anthropic.tsp @@ -0,0 +1,110 @@ +import "../common"; + +using Common; + +namespace Tools; + + +/** + * Anthropic new tools + */ + + +model Computer20241022Def { + type: "computer_20241022" = "computer_20241022"; + name?: string = "computer"; + + /** The display width in pixels */ + @minValue(600) + display_width_px: uint16 = 1024; + + /** The display height in pixels */ + @minValue(400) + display_height_px: uint16 = 768; + + /** The display number to use */ + @minValue(1) + @maxValue(10) + display_number?: uint16 = 1; +} + +model TextEditor20241022Def { + type: "text_editor_20241022" = "text_editor_20241022"; + name?: string = "str_replace_editor"; +} + +model Bash20241022Def { + type: "bash_20241022" = "bash_20241022"; + name?: string = "bash"; +} + +enum Computer20241022Action { + /** Press a key or key-combination on the keyboard */ + key, + + /** Type a string of text on the keyboard */ + type, + + /** Get the current (x, y) pixel coordinate of the cursor on the screen */ + cursor_position, + + /** Move the cursor to a specified (x, y) pixel coordinate on the screen */ + mouse_move, + + /** Click the left mouse button */ + left_click, + + /** Click the right mouse button */ + right_click, + + /** Click the middle mouse button */ + middle_click, + + /** Double-click the left mouse button */ + double_click, + + /** Take a screenshot of the screen */ + screenshot, +} + +model ChosenComputer20241022 { + /** The action to perform */ + action: Computer20241022Action; + + /** The text to type */ + text?: string; + + /** The (x, y) pixel coordinate to move the cursor to */ + coordinate?: uint16[]; +} + +model ChosenTextEditor20241022 { + /** The command to run */ + command: "str_replace" | "insert" | "view" | "undo_edit"; + + /** The path to the file */ + path: string; + + /** The content of the file to be created */ + file_text?: string; + + /** The line to insert the new string after */ + insert_line?: uint16; + + /** The new string to insert */ + new_str?: string; + + /** The string in the file to replace */ + old_str?: string; + + /** The line range to view */ + view_range?: uint16[]; +} + +model ChosenBash20241022 { + /** The bash command to run */ + command?: string; + + /** Whether to restart the tool */ + restart?: boolean = false; +} diff --git a/typespec/tools/brave.tsp b/typespec/tools/brave.tsp new file mode 100644 index 000000000..f81ac12f1 --- /dev/null +++ b/typespec/tools/brave.tsp @@ -0,0 +1,54 @@ +import "../common"; + +using Common; + +namespace Tools; + +/** Integration definition for Brave Search */ +model BraveSearchSetup { + /** The api key for Brave Search */ + api_key: string; +} + +/** Arguments for Brave Search */ +model BraveSearchArguments { + /** The search query for searching with Brave */ + query: string; +} + +/** Brave integration definition */ +model BraveIntegrationDef extends BaseIntegrationDef { + /** The provider must be "brave" */ + provider: "brave" = "brave"; + + /** The specific method of the integration to call */ + method?: string; + + /** The setup parameters for Brave */ + setup?: BraveSearchSetup; + + /** The arguments for Brave Search */ + arguments?: BraveSearchArguments; +} + +/** The result of the Brave Search */ +model BraveSearchOutput { + result: string; +} + +model BraveProviderCard extends BaseProviderCard { + provider: "brave" = "brave"; + setup: BraveSearchSetup; + methods: ProviderMethod[] = #[ + #{ + method: "search", + description: "Search with Brave", + } + ]; + info: ProviderInfo = #{ + url: "https://brave.com/", + docs: "https://brave.com/docs/", + icon: "https://brave.com/favicon.ico", + friendly_name: "Brave Search", + }; +} \ No newline at end of file diff --git a/typespec/tools/browserbase/contexts.tsp b/typespec/tools/browserbase/contexts.tsp new file mode 100644 index 000000000..a87eb55b7 --- /dev/null +++ b/typespec/tools/browserbase/contexts.tsp @@ -0,0 +1,15 @@ +import "../../common"; + +using Common; + +namespace Tools; + +// TODO: Implement these +/** browserbase context provider */ +model BrowserbaseContextIntegrationDef extends BaseBrowserbaseIntegrationDef { + /** The specific method of the integration to call */ + method?: "create_context" = "create_context"; + + /** The arguments for the method */ + arguments?: unknown; +} diff --git a/typespec/tools/browserbase/extensions.tsp b/typespec/tools/browserbase/extensions.tsp new file mode 100644 index 000000000..3f825ea6f --- /dev/null +++ b/typespec/tools/browserbase/extensions.tsp @@ -0,0 +1,16 @@ +import "../../common"; + +using Common; + +namespace Tools; + + +// // TODO: Implement these +// /** browserbase extension provider */ +// model BrowserbaseExtensionIntegrationDef extends BaseBrowserbaseIntegrationDef { +// /** The specific method of the integration to call */ +// method?: "create_extension" | "get_extension" | "delete_extension"; + +// /** The arguments for the method */ +// arguments?: unknown; +// } diff --git a/typespec/tools/browserbase/main.tsp b/typespec/tools/browserbase/main.tsp new file mode 100644 index 000000000..5beb53301 --- /dev/null +++ b/typespec/tools/browserbase/main.tsp @@ -0,0 +1,111 @@ +import "../../common"; +import "./contexts.tsp"; +import "./extensions.tsp"; +import "./sessions.tsp"; + +namespace Tools; + +using Common; + +alias BrowserbaseMethod = ( + /** Get live URLs from the browserbase context */ + | "get_live_urls" + + /** List the sessions in the browserbase context */ + | "list_sessions" + + /** Create a new session in the browserbase context */ + | "create_session" + + /** Get a session from the browserbase context */ + | "get_session" + + /** Update a session in the browserbase context */ + | "update_session" + + // TODO: Implement these + /** Create a new browserbase context */ + | "create_context" + + /** Upload an extension to the browserbase context */ + | "upload_extension" + + /** Get an extension from the browserbase context */ + | "get_extension" + + /** Delete an extension from the browserbase context */ + | "delete_extension" + + /** Create session uploads in the browserbase context */ + | "create_session_uploads" + + /** Get session downloads from the browserbase context */ + | "get_session_downloads" + + /** Get logs from the browserbase context */ + | "get_logs" + + /** Get recordings from the browserbase context */ + | "get_recordings" +); + +/** The setup parameters for the browserbase integration */ +model BrowserbaseSetup { + /** API key for the browserbase integration */ + api_key: string; +} + +/** The base definition for a browserbase integration */ +model BaseBrowserbaseIntegrationDef extends BaseIntegrationDef { + provider: "browserbase" = "browserbase"; + setup?: BrowserbaseSetup; + method?: BrowserbaseMethod; + arguments?: unknown; +} + +alias BrowserbaseIntegrationDef = ( + | BrowserbaseContextIntegrationDef + // | BrowserbaseExtensionIntegrationDef + | BrowserbaseSessionIntegrationDef +); + +alias BrowserbaseArguments = ( + | BrowserbaseSessionArguments + // TODO: Implement these + // | BrowserbaseContextArguments + // | BrowserbaseExtensionArguments +); + +alias BrowserbaseOutput = ( + | BrowserbaseSessionOutput + // TODO: Implement these + // | BrowserbaseContextOutput + // | BrowserbaseExtensionOutput +); + +model BrowserbaseProviderCard extends BaseProviderCard { + provider: "browserbase" = "browserbase"; + setup: BrowserbaseSetup; + methods: ProviderMethod[] = #[ + #{ + method: "list_sessions", + description: "List the sessions in the browserbase context", + }, + #{ + method: "create_session", + description: "Create a new session in the browserbase context", + }, + #{ + method: "get_session", + description: "Get a session from the browserbase context", + }, + #{ + method: "update_session", + description: "Update a session in the browserbase context", + }, + #{ + method: "get_session_live_urls", + description: "Get live URLs from the browserbase context", + } + ]; +} \ No newline at end of file diff --git a/typespec/tools/browserbase/sessions.tsp b/typespec/tools/browserbase/sessions.tsp new file mode 100644 index 000000000..4008064aa --- /dev/null +++ b/typespec/tools/browserbase/sessions.tsp @@ -0,0 +1,239 @@ +import "../../common"; + +using Common; + +namespace Tools; + +alias BrowserbaseSessionMethod = ( + /** Get live URLs from the browserbase context */ + | "get_live_urls" + + /** List the sessions in the browserbase context */ + | "list_sessions" + + /** Create a new session in the browserbase context */ + | "create_session" + + /** Get a session from the browserbase context */ + | "get_session" + + /** Update a session in the browserbase context */ + | "update_session" + + // TODO: Implement these + | "create_context" + | "upload_extension" + | "get_extension" + | "delete_extension" + | "create_session_uploads" + | "get_session_downloads" + | "get_logs" + | "get_recordings" +); + +alias BrowserbaseSessionIntegrationDef = + | BrowserbaseListSessionsIntegrationDef + | BrowserbaseCreateSessionIntegrationDef + | BrowserbaseGetSessionIntegrationDef + | BrowserbaseUpdateSessionIntegrationDef + | BrowserbaseGetSessionLiveUrlsIntegrationDef; +// +// TODO: Implement these +// | BrowserbaseCreateContextIntegrationDef +// | BrowserbaseUploadExtensionIntegrationDef +// | BrowserbaseGetExtensionIntegrationDef +// | BrowserbaseDeleteExtensionIntegrationDef +// | BrowserbaseCreateSessionUploadsIntegrationDef +// | BrowserbaseGetSessionDownloadsIntegrationDef +// | BrowserbaseGetLogsIntegrationDef +// | BrowserbaseGetRecordingsIntegrationDef + +alias BrowserbaseSessionArguments = + | BrowserbaseListSessionsArguments + | BrowserbaseCreateSessionArguments + | BrowserbaseGetSessionArguments + | BrowserbaseUpdateSessionArguments + | BrowserbaseGetSessionLiveUrlsArguments; +// +// TODO: Implement these +// | BrowserbaseCreateContextArguments +// | BrowserbaseUploadExtensionArguments +// | BrowserbaseGetExtensionArguments +// | BrowserbaseDeleteExtensionArguments +// | BrowserbaseCreateSessionUploadsArguments +// | BrowserbaseGetSessionDownloadsArguments +// | BrowserbaseGetLogsArguments +// | BrowserbaseGetRecordingsArguments + +alias BrowserbaseSessionOutput = + | BrowserbaseListSessionsOutput + | BrowserbaseCreateSessionOutput + | BrowserbaseGetSessionOutput + | BrowserbaseUpdateSessionOutput + | BrowserbaseGetSessionLiveUrlsOutput; +// +// TODO: Implement these +// | BrowserbaseCreateContextOutput +// | BrowserbaseUploadExtensionOutput +// | BrowserbaseGetExtensionOutput +// | BrowserbaseDeleteExtensionOutput +// | BrowserbaseCreateSessionUploadsOutput +// | BrowserbaseGetSessionDownloadsOutput +// | BrowserbaseGetLogsOutput +// | BrowserbaseGetRecordingsOutput + +/** browserbase list sessions integration definition */ +model BrowserbaseListSessionsIntegrationDef + extends BaseBrowserbaseIntegrationDef { + /** The specific method of the integration to call */ + method: "list_sessions" = "list_sessions"; + + /** The arguments for the method */ + arguments?: BrowserbaseListSessionsArguments; +} + +model BrowserbaseListSessionsArguments { + /** The status of the sessions to list (Available options: RUNNING, ERROR, TIMED_OUT, COMPLETED) */ + status?: "RUNNING" | "ERROR" | "TIMED_OUT" | "COMPLETED"; +} + +alias BrowserbaseListSessionsOutput = { + id: string; + createdAt: string; + updatedAt: string; + projectId: string; + startedAt: string; + endedAt: string; + expiresAt: string; + status: "RUNNING" | "ERROR" | "TIMED_OUT" | "COMPLETED"; + proxyBytes: uint64; + avgCpuUsage: uint64; + memoryUsage: uint64; + keepAlive: boolean; + contextId?: string; +}[]; + +/** browserbase create session integration definition */ +model BrowserbaseCreateSessionIntegrationDef + extends BaseBrowserbaseIntegrationDef { + method: "create_session" = "create_session"; + + /** The arguments for the method */ + arguments: BrowserbaseCreateSessionArguments; +} + +model BrowserbaseCreateSessionArguments { + /** The Project ID. Can be found in Settings. */ + projectId: string; + + /** The uploaded Extension ID. See Upload Extension. */ + extensionId?: string; + + /** Browser settings */ + browserSettings?: Record; + + /** Duration in seconds after which the session will automatically end. Defaults to the Project's defaultTimeout. */ + timeout?: uint16; + + /** Set to true to keep the session alive even after disconnections. This is available on the Startup plan only. */ + keepAlive?: boolean; + + /** Proxy configuration. Can be true for default proxy, or an array of proxy configurations. */ + proxies?: boolean | Record[]; +} + +model BrowserbaseCreateSessionOutput { + id: string; + createdAt: string; + updatedAt: string; + projectId: string; + startedAt: string; + endedAt: string; + expiresAt: string; + status: "RUNNING" | "ERROR" | "TIMED_OUT" | "COMPLETED"; + proxyBytes: uint64; + avgCpuUsage: uint64; + memoryUsage: uint64; + keepAlive: boolean; + contextId?: string; +} + +/** browserbase get session integration definition */ +model BrowserbaseGetSessionIntegrationDef + extends BaseBrowserbaseIntegrationDef { + method: "get_session" = "get_session"; + arguments: BrowserbaseGetSessionArguments; +} + +model BrowserbaseGetSessionArguments { + id: string; +} + +model BrowserbaseGetSessionOutput { + id: string; + createdAt: string; + updatedAt: string; + projectId: string; + startedAt: string; + endedAt: string; + expiresAt: string; + status: "RUNNING" | "ERROR" | "TIMED_OUT" | "COMPLETED"; + proxyBytes: uint64; + avgCpuUsage: uint64; + memoryUsage: uint64; + keepAlive: boolean; + contextId?: string; +} + +/** browserbase update session integration definition */ +model BrowserbaseUpdateSessionIntegrationDef + extends BaseBrowserbaseIntegrationDef { + method: "update_session" = "update_session"; + arguments: BrowserbaseUpdateSessionArguments; +} + +model BrowserbaseUpdateSessionArguments { + id: string; + status: "REQUEST_RELEASE"; +} + +model BrowserbaseUpdateSessionOutput { + id: string; + createdAt: string; + updatedAt: string; + projectId: string; + startedAt: string; + endedAt: string; + expiresAt: string; + status: "RUNNING" | "ERROR" | "TIMED_OUT" | "COMPLETED"; + proxyBytes: uint64; + avgCpuUsage: uint64; + memoryUsage: uint64; + keepAlive: boolean; + contextId?: string; +} + +/** browserbase get session live urls integration definition */ +model BrowserbaseGetSessionLiveUrlsIntegrationDef + extends BaseBrowserbaseIntegrationDef { + method: "get_live_urls" = "get_live_urls"; + arguments: BrowserbaseGetSessionLiveUrlsArguments; +} + +model BrowserbaseGetSessionLiveUrlsArguments { + id: string; +} + +model BrowserbaseGetSessionLiveUrlsOutput { + debuggerFullscreenUrl?: url; + debuggerUrl?: url; + wsUrl?: url; + pages: { + id?: string; + url?: url; + faviconUrl?: url; + title?: string; + debuggerUrl?: url; + debuggerFullscreenUrl?: url; + }[] = #[]; +} diff --git a/typespec/tools/email.tsp b/typespec/tools/email.tsp new file mode 100644 index 000000000..e0864fc7e --- /dev/null +++ b/typespec/tools/email.tsp @@ -0,0 +1,74 @@ +import "../common"; + +using Common; + +namespace Tools; + +/** Setup parameters for Email integration */ +model EmailSetup { + /** The host of the email server */ + host: string; + + /** The port of the email server */ + port: int32; + + /** The username of the email server */ + user: string; + + /** The password of the email server */ + password: string; +} + +/** Arguments for Email sending */ +model EmailArguments { + /** The email address to send the email to */ + to: string; + + /** The email address to send the email from */ + from: string; + + /** The subject of the email */ + subject: string; + + /** The body of the email */ + body: string; +} + +/** Email integration definition */ +model EmailIntegrationDef extends BaseIntegrationDef { + /** The provider must be "email" */ + provider: "email" = "email"; + + /** The specific method of the integration to call */ + method?: string; + + /** The setup parameters for Email */ + setup?: EmailSetup; + + /** The arguments for Email sending */ + arguments?: EmailArguments; +} + +/** Email Provider Card */ +model EmailProviderCard extends BaseProviderCard { + provider: "email" = "email"; + setup: EmailSetup; + methods: ProviderMethod[] = #[ + #{ + method: "send", + description: "Send an email", + } + ]; + info: ProviderInfo = #{ + url: "https://emailservice.com/", + docs: "https://emailservice.com/docs/", + icon: "https://emailservice.com/favicon.ico", + friendly_name: "Email Service", + }; +} + +/** Email Output */ +model EmailOutput { + /** Whether the email was sent successfully */ + success: boolean; +} \ No newline at end of file diff --git a/typespec/tools/main.tsp b/typespec/tools/main.tsp index 56b098047..38d4d7d57 100644 --- a/typespec/tools/main.tsp +++ b/typespec/tools/main.tsp @@ -1,5 +1,12 @@ import "./endpoints.tsp"; import "./models.tsp"; +import "./anthropic.tsp"; +import "./brave.tsp"; +import "./email.tsp"; +import "./spider.tsp"; +import "./weather.tsp"; +import "./wikipedia.tsp"; +import "./browserbase"; namespace Tools; diff --git a/typespec/tools/models.tsp b/typespec/tools/models.tsp index de509dec4..dd41038b1 100644 --- a/typespec/tools/models.tsp +++ b/typespec/tools/models.tsp @@ -16,7 +16,6 @@ alias httpMethod = "GET" | "POST" | "PUT" | "DELETE" | "PATCH" | "HEAD" | "OPTIO /** Integration provider name */ alias integrationProvider = ( | "dummy" - | "hacker_news" | "weather" | "wikipedia" | "spider" @@ -37,6 +36,11 @@ enum ToolType { /** A tool that makes an API call */ api_call, + + /** (Alpha) Anthropic new tools */ + computer_20241022, + text_editor_20241022, + bash_20241022, } /** The parameters the functions accepts, described as a JSON Schema object. */ @@ -59,23 +63,57 @@ model FunctionDef { } -// TODO: Add granular definitions for each integration - /** Integration definition */ -model IntegrationDef { +@discriminator("provider") +model BaseIntegrationDef { /** The provider of the integration */ - provider: integrationProvider | string; + provider: integrationProvider; /** The specific method of the integration to call */ method?: string; /** The setup parameters the integration accepts */ - setup?: FunctionParameters; + setup?: unknown; /** The arguments to pre-apply to the integration call */ - arguments?: FunctionParameters; + arguments?: unknown; +} + +model DummyIntegrationDef extends BaseIntegrationDef { + provider: "dummy" = "dummy"; +} + +model BaseProviderCard { + provider: integrationProvider; + setup: unknown; + methods: ProviderMethod[]; + info: ProviderInfo; +} + +model ProviderMethod { + method: string; + description?: string; + arguments?: Arguments; + output?: Output; +} + +model ProviderInfo { + url?: url; + docs?: url; + icon?: url; + friendly_name?: string; } +alias IntegrationDef = ( + | DummyIntegrationDef + | BraveIntegrationDef + | EmailIntegrationDef + | SpiderIntegrationDef + | WikipediaIntegrationDef + | WeatherIntegrationDef + | BrowserbaseIntegrationDef +); + // // SYSTEM TOOL MODELS // @@ -185,6 +223,11 @@ model Tool { /** The API call to make */ api_call?: ApiCallDef; + /** (Alpha) Anthropic new tools */ + computer_20241022?: Computer20241022Def; + text_editor_20241022?: TextEditor20241022Def; + bash_20241022?: Bash20241022Def; + ...HasTimestamps; ...HasId; } @@ -224,22 +267,37 @@ model UpdateToolRequest { model PatchToolRequest is UpdateToolRequest {} /** The response tool value generated by the model */ -@discriminator("type") -model ChosenToolCall { +model BaseChosenToolCall { /** Whether this tool is a `function`, `api_call`, `system` etc. (Only `function` tool supported right now) */ type: ToolType; function?: FunctionCallOption; - integration?: never; - system?: never; - api_call?: never; + integration?: unknown; // ChosenIntegrationCall + system?: unknown; // ChosenSystemCall + api_call?: unknown; // ChosenApiCall - ...HasId; + /** (Alpha) Anthropic new tools */ + computer_20241022?: ChosenComputer20241022; + text_editor_20241022?: ChosenTextEditor20241022; + bash_20241022?: ChosenBash20241022; + + @visibility("read") + id?: uuid; } -model ChosenFunctionCall extends ChosenToolCall { +model ChosenFunctionCall extends BaseChosenToolCall { type: ToolType.function; /** The function to call */ function: FunctionCallOption; } + +alias ChosenToolCall = ( + | ChosenFunctionCall + // | ChosenIntegrationCall + // | ChosenSystemCall + // | ChosenApiCall + | ChosenComputer20241022 + | ChosenTextEditor20241022 + | ChosenBash20241022 +); diff --git a/typespec/tools/spider.tsp b/typespec/tools/spider.tsp new file mode 100644 index 000000000..9b7176f4c --- /dev/null +++ b/typespec/tools/spider.tsp @@ -0,0 +1,69 @@ +import "../common"; + +using Common; + +namespace Tools; + +/** Setup parameters for Spider integration */ +model SpiderSetup { + /** The API key for Spider */ + spider_api_key: string; +} + +/** Arguments for Spider integration */ +model SpiderFetchArguments { + /** The URL to fetch data from */ + url: url; + + /** The type of crawler to use */ + mode?: "scrape" = "scrape"; + + /** Additional parameters for the Spider API */ + params?: Record; +} + +/** Spider integration definition */ +model SpiderIntegrationDef extends BaseIntegrationDef { + /** The provider must be "spider" */ + provider: "spider" = "spider"; + + /** The specific method of the integration to call */ + method?: string; + + /** The setup parameters for Spider */ + setup?: SpiderSetup; + + /** The arguments for Spider */ + arguments?: SpiderFetchArguments; +} + +/** Spider Provider Card */ +model SpiderProviderCard extends BaseProviderCard { + provider: "spider" = "spider"; + setup: SpiderSetup; + methods: ProviderMethod[] = #[ + #{ + method: "crawl", + description: "Crawl a website and extract data", + } + ]; + info: ProviderInfo = #{ + url: "https://spider.com/", + docs: "https://spider.com/docs/", + icon: "https://spider.com/favicon.ico", + friendly_name: "Spider", + }; +} + +/** Spider Fetch Output */ +model SpiderFetchOutput { + /** The documents returned from the spider */ + documents: SpiderDocument[]; +} + +/** Represents a document with text content */ +model SpiderDocument { + // Using string for now since we need to represent langchain Document + page_content: string; + metadata: Record; +} \ No newline at end of file diff --git a/typespec/tools/weather.tsp b/typespec/tools/weather.tsp new file mode 100644 index 000000000..a4047c064 --- /dev/null +++ b/typespec/tools/weather.tsp @@ -0,0 +1,56 @@ +import "../common"; + +using Common; + +namespace Tools; + +/** Integration definition for Weather */ +model WeatherSetup { + /** The api key for OpenWeatherMap */ + openweathermap_api_key: string; +} + +/** Arguments for Weather */ +model WeatherGetArguments { + /** The location for which to fetch weather data */ + location: string; +} + +/** Weather integration definition */ +model WeatherIntegrationDef extends BaseIntegrationDef { + /** The provider must be "weather" */ + provider: "weather" = "weather"; + + /** The specific method of the integration to call */ + method?: string; + + /** The setup parameters for Weather */ + setup?: WeatherSetup; + + /** The arguments for Weather */ + arguments?: WeatherGetArguments; +} + +/** Weather Provider Card */ +model WeatherProviderCard extends BaseProviderCard { + provider: "weather" = "weather"; + setup: WeatherSetup; + methods: ProviderMethod[] = #[ + #{ + method: "get", + description: "Get the current weather for a city", + } + ]; + info: ProviderInfo = #{ + url: "https://www.weatherapi.com/", + docs: "https://www.weatherapi.com/docs/", + icon: "https://www.weatherapi.com/favicon.ico", + friendly_name: "Weather API", + }; +} + +/** Weather Get Output */ +model WeatherGetOutput { + /** The weather data for the specified location */ + result: string; +} \ No newline at end of file diff --git a/typespec/tools/wikipedia.tsp b/typespec/tools/wikipedia.tsp new file mode 100644 index 000000000..143bb519d --- /dev/null +++ b/typespec/tools/wikipedia.tsp @@ -0,0 +1,62 @@ +import "../common"; + +using Common; + +namespace Tools; + +/** Arguments for Wikipedia Search */ +model WikipediaSearchArguments { + /** The search query string */ + query: string; + + /** Maximum number of documents to load */ + @minValue(1) + @maxValue(10) + load_max_docs: uint8 = 2; +} + +/** Wikipedia integration definition */ +model WikipediaIntegrationDef extends BaseIntegrationDef { + /** The provider must be "wikipedia" */ + provider: "wikipedia" = "wikipedia"; + + /** The specific method of the integration to call */ + method?: string; + + /** The setup parameters for Wikipedia */ + setup?: null = null; + + /** The arguments for Wikipedia Search */ + arguments?: WikipediaSearchArguments; +} + +/** Wikipedia Provider Card */ +model WikipediaProviderCard extends BaseProviderCard { + provider: "wikipedia" = "wikipedia"; + setup: null = null; + methods: ProviderMethod[] = #[ + #{ + method: "search", + description: "Search for a page on Wikipedia", + } + ]; + info: ProviderInfo = #{ + url: "https://www.wikipedia.org/", + docs: "https://www.wikipedia.org/wiki/Main_Page", + icon: "https://www.wikipedia.org/static/favicon/wikipedia.ico", + friendly_name: "Wikipedia", + }; +} + +/** Represents a document with text content */ +model WikipediaDocument { + // Using string for now since we need to represent langchain Document + page_content: string; + metadata: Record; +} + +/** Wikipedia Search Output */ +model WikipediaSearchOutput { + /** The documents returned from the Wikipedia search */ + documents: WikipediaDocument[]; +} \ No newline at end of file diff --git a/typespec/tsp-output/@typespec/openapi3/openapi-1.0.0.yaml b/typespec/tsp-output/@typespec/openapi3/openapi-1.0.0.yaml index e5031db95..cc3be20d3 100644 --- a/typespec/tsp-output/@typespec/openapi3/openapi-1.0.0.yaml +++ b/typespec/tsp-output/@typespec/openapi3/openapi-1.0.0.yaml @@ -2139,7 +2139,11 @@ components: tool_calls: type: array items: - $ref: '#/components/schemas/Tools.ChosenToolCall' + anyOf: + - $ref: '#/components/schemas/Tools.ChosenFunctionCall' + - $ref: '#/components/schemas/Tools.ChosenComputer20241022' + - $ref: '#/components/schemas/Tools.ChosenTextEditor20241022' + - $ref: '#/components/schemas/Tools.ChosenBash20241022' nullable: true description: Tool calls generated by the model. default: [] @@ -2283,7 +2287,11 @@ components: tool_calls: type: array items: - $ref: '#/components/schemas/Tools.ChosenToolCall' + anyOf: + - $ref: '#/components/schemas/Tools.ChosenFunctionCall' + - $ref: '#/components/schemas/Tools.ChosenComputer20241022' + - $ref: '#/components/schemas/Tools.ChosenTextEditor20241022' + - $ref: '#/components/schemas/Tools.ChosenBash20241022' nullable: true description: Tool calls generated by the model. default: [] @@ -2771,7 +2779,10 @@ components: description: The type (fixed to 'image_url') default: image_url - $ref: '#/components/schemas/Tools.Tool' - - $ref: '#/components/schemas/Tools.ChosenToolCall' + - $ref: '#/components/schemas/Tools.ChosenFunctionCall' + - $ref: '#/components/schemas/Tools.ChosenComputer20241022' + - $ref: '#/components/schemas/Tools.ChosenTextEditor20241022' + - $ref: '#/components/schemas/Tools.ChosenBash20241022' - type: string - $ref: '#/components/schemas/Tools.ToolResponse' - type: array @@ -2820,7 +2831,10 @@ components: description: The type (fixed to 'image_url') default: image_url - $ref: '#/components/schemas/Tools.Tool' - - $ref: '#/components/schemas/Tools.ChosenToolCall' + - $ref: '#/components/schemas/Tools.ChosenFunctionCall' + - $ref: '#/components/schemas/Tools.ChosenComputer20241022' + - $ref: '#/components/schemas/Tools.ChosenTextEditor20241022' + - $ref: '#/components/schemas/Tools.ChosenBash20241022' - type: string - $ref: '#/components/schemas/Tools.ToolResponse' source: @@ -5801,27 +5815,72 @@ components: format: uint8 description: The timeout for the request description: API call definition - Tools.ChosenFunctionCall: + Tools.BaseBrowserbaseIntegrationDef: type: object required: - - type - - function + - provider properties: - type: + provider: type: string enum: - - function - function: - allOf: - - $ref: '#/components/schemas/Tools.FunctionCallOption' - description: The function to call + - browserbase + default: browserbase + setup: + $ref: '#/components/schemas/Tools.BrowserbaseSetup' + method: + type: string + enum: + - get_live_urls + - list_sessions + - create_session + - get_session + - update_session + - create_context + - upload_extension + - get_extension + - delete_extension + - create_session_uploads + - get_session_downloads + - get_logs + - get_recordings + arguments: {} + allOf: + - $ref: '#/components/schemas/Tools.BaseIntegrationDef' + description: The base definition for a browserbase integration + Tools.BaseBrowserbaseIntegrationDefUpdate: + type: object + properties: + provider: + type: string + enum: + - browserbase + default: browserbase + setup: + $ref: '#/components/schemas/Tools.BrowserbaseSetupUpdate' + method: + type: string + enum: + - get_live_urls + - list_sessions + - create_session + - get_session + - update_session + - create_context + - upload_extension + - get_extension + - delete_extension + - create_session_uploads + - get_session_downloads + - get_logs + - get_recordings + arguments: {} allOf: - - $ref: '#/components/schemas/Tools.ChosenToolCall' - Tools.ChosenToolCall: + - $ref: '#/components/schemas/Tools.BaseIntegrationDefUpdate' + description: The base definition for a browserbase integration + Tools.BaseChosenToolCall: type: object required: - type - - id properties: type: allOf: @@ -5829,281 +5888,1187 @@ components: description: Whether this tool is a `function`, `api_call`, `system` etc. (Only `function` tool supported right now) function: $ref: '#/components/schemas/Tools.FunctionCallOption' + integration: {} + system: {} + api_call: {} + computer_20241022: + allOf: + - $ref: '#/components/schemas/Tools.ChosenComputer20241022' + description: (Alpha) Anthropic new tools + text_editor_20241022: + $ref: '#/components/schemas/Tools.ChosenTextEditor20241022' + bash_20241022: + $ref: '#/components/schemas/Tools.ChosenBash20241022' id: allOf: - $ref: '#/components/schemas/Common.uuid' readOnly: true - discriminator: - propertyName: type - mapping: - function: '#/components/schemas/Tools.ChosenFunctionCall' description: The response tool value generated by the model - Tools.CreateToolRequest: - type: object - required: - - name - properties: - name: - allOf: - - $ref: '#/components/schemas/Common.validPythonIdentifier' - description: Name of the tool (must be unique for this agent and a valid python identifier string ) - description: - type: string - description: Description of the tool - function: - allOf: - - $ref: '#/components/schemas/Tools.FunctionDef' - description: The function to call - integration: - allOf: - - $ref: '#/components/schemas/Tools.IntegrationDef' - description: The integration to call - system: - allOf: - - $ref: '#/components/schemas/Tools.SystemDef' - description: The system to call - api_call: - allOf: - - $ref: '#/components/schemas/Tools.ApiCallDef' - description: The API call to make - description: Payload for creating a tool - Tools.FunctionCallOption: - type: object - required: - - name - properties: - name: - type: string - description: The name of the function - Tools.FunctionDef: - type: object - properties: - name: - nullable: true - description: 'DO NOT USE: This will be overriden by the tool name. Here only for compatibility reasons.' - default: null - description: - nullable: true - description: 'DO NOT USE: This will be overriden by the tool description. Here only for compatibility reasons.' - default: null - parameters: - type: object - additionalProperties: {} - description: The parameters the function accepts - description: Function definition - Tools.IntegrationDef: + Tools.BaseIntegrationDef: type: object required: - provider properties: provider: - anyOf: - - type: string - enum: - - dummy - - hacker_news - - weather - - wikipedia - - spider - - brave - - browserbase - - email - - type: string + type: string + enum: + - dummy + - weather + - wikipedia + - spider + - brave + - browserbase + - email description: The provider of the integration method: type: string description: The specific method of the integration to call setup: - type: object - additionalProperties: {} description: The setup parameters the integration accepts arguments: - type: object - additionalProperties: {} description: The arguments to pre-apply to the integration call + discriminator: + propertyName: provider + mapping: + brave: '#/components/schemas/Tools.BraveIntegrationDef' + email: '#/components/schemas/Tools.EmailIntegrationDef' + spider: '#/components/schemas/Tools.SpiderIntegrationDef' + wikipedia: '#/components/schemas/Tools.WikipediaIntegrationDef' + weather: '#/components/schemas/Tools.WeatherIntegrationDef' + browserbase: '#/components/schemas/Tools.BaseBrowserbaseIntegrationDef' description: Integration definition - Tools.IntegrationDefUpdate: + Tools.BaseIntegrationDefUpdate: type: object properties: provider: - anyOf: - - type: string - enum: - - dummy - - hacker_news - - weather - - wikipedia - - spider - - brave - - browserbase - - email - - type: string + type: string + enum: + - dummy + - weather + - wikipedia + - spider + - brave + - browserbase + - email description: The provider of the integration method: type: string description: The specific method of the integration to call setup: - type: object - additionalProperties: {} description: The setup parameters the integration accepts arguments: - type: object - additionalProperties: {} description: The arguments to pre-apply to the integration call + discriminator: + propertyName: provider + mapping: + brave: '#/components/schemas/Tools.BraveIntegrationDefUpdate' + email: '#/components/schemas/Tools.EmailIntegrationDefUpdate' + spider: '#/components/schemas/Tools.SpiderIntegrationDefUpdate' + wikipedia: '#/components/schemas/Tools.WikipediaIntegrationDefUpdate' + weather: '#/components/schemas/Tools.WeatherIntegrationDefUpdate' + browserbase: '#/components/schemas/Tools.BaseBrowserbaseIntegrationDefUpdate' description: Integration definition - Tools.NamedToolChoice: + Tools.Bash20241022Def: type: object + required: + - type properties: - function: - $ref: '#/components/schemas/Tools.FunctionCallOption' - Tools.PatchToolRequest: + type: + type: string + enum: + - bash_20241022 + default: bash_20241022 + name: + type: string + default: bash + Tools.Bash20241022DefUpdate: type: object properties: + type: + type: string + enum: + - bash_20241022 + default: bash_20241022 name: - allOf: - - $ref: '#/components/schemas/Common.validPythonIdentifier' - description: Name of the tool (must be unique for this agent and a valid python identifier string ) - description: type: string - description: Description of the tool - function: - allOf: - - $ref: '#/components/schemas/Tools.FunctionDef' - description: The function to call - integration: - allOf: - - $ref: '#/components/schemas/Tools.IntegrationDefUpdate' - description: The integration to call - system: - allOf: - - $ref: '#/components/schemas/Tools.SystemDefUpdate' - description: The system to call - api_call: - allOf: - - $ref: '#/components/schemas/Tools.ApiCallDefUpdate' - description: The API call to make - description: Payload for patching a tool - Tools.SystemDef: + default: bash + Tools.BraveIntegrationDef: type: object required: - - resource - - operation + - provider properties: - resource: + provider: type: string enum: - - agent - - user - - task - - execution - - doc - - session - - job - description: Resource is the name of the resource to use - operation: + - brave + description: The provider must be "brave" + default: brave + method: type: string - enum: - - create - - update - - patch - - create_or_update - - embed - - change_status - - search - - chat - - history - - delete - - get - - list - description: Operation is the name of the operation to perform - resource_id: + description: The specific method of the integration to call + setup: allOf: - - $ref: '#/components/schemas/Common.uuid' - description: Resource id (if applicable) - subresource: - type: string - enum: - - tool - - doc - - execution - - transition - description: Sub-resource type (if applicable) + - $ref: '#/components/schemas/Tools.BraveSearchSetup' + description: The setup parameters for Brave arguments: - type: object - additionalProperties: {} - description: The arguments to pre-apply to the system call - description: System definition - Tools.SystemDefUpdate: + allOf: + - $ref: '#/components/schemas/Tools.BraveSearchArguments' + description: The arguments for Brave Search + allOf: + - $ref: '#/components/schemas/Tools.BaseIntegrationDef' + description: Brave integration definition + Tools.BraveIntegrationDefUpdate: type: object properties: - resource: + provider: type: string enum: - - agent - - user - - task - - execution - - doc - - session - - job - description: Resource is the name of the resource to use - operation: + - brave + description: The provider must be "brave" + default: brave + method: type: string - enum: - - create - - update - - patch - - create_or_update - - embed - - change_status - - search - - chat - - history - - delete - - get - - list - description: Operation is the name of the operation to perform - resource_id: + description: The specific method of the integration to call + setup: allOf: - - $ref: '#/components/schemas/Common.uuid' - description: Resource id (if applicable) - subresource: - type: string - enum: - - tool - - doc - - execution - - transition - description: Sub-resource type (if applicable) + - $ref: '#/components/schemas/Tools.BraveSearchSetupUpdate' + description: The setup parameters for Brave arguments: - type: object - additionalProperties: {} - description: The arguments to pre-apply to the system call - description: System definition - Tools.Tool: + allOf: + - $ref: '#/components/schemas/Tools.BraveSearchArgumentsUpdate' + description: The arguments for Brave Search + allOf: + - $ref: '#/components/schemas/Tools.BaseIntegrationDefUpdate' + description: Brave integration definition + Tools.BraveSearchArguments: type: object required: - - name - - created_at - - updated_at - - id + - query properties: - name: - allOf: - - $ref: '#/components/schemas/Common.validPythonIdentifier' - description: Name of the tool (must be unique for this agent and a valid python identifier string ) - description: + query: type: string - description: Description of the tool - function: - allOf: - - $ref: '#/components/schemas/Tools.FunctionDef' - description: The function to call - integration: - allOf: - - $ref: '#/components/schemas/Tools.IntegrationDef' - description: The integration to call - system: + description: The search query for searching with Brave + description: Arguments for Brave Search + Tools.BraveSearchArgumentsUpdate: + type: object + properties: + query: + type: string + description: The search query for searching with Brave + description: Arguments for Brave Search + Tools.BraveSearchSetup: + type: object + required: + - api_key + properties: + api_key: + type: string + description: The api key for Brave Search + description: Integration definition for Brave Search + Tools.BraveSearchSetupUpdate: + type: object + properties: + api_key: + type: string + description: The api key for Brave Search + description: Integration definition for Brave Search + Tools.BrowserbaseContextIntegrationDef: + type: object + properties: + method: + type: string + enum: + - create_context + description: The specific method of the integration to call + default: create_context + arguments: + description: The arguments for the method + allOf: + - $ref: '#/components/schemas/Tools.BaseBrowserbaseIntegrationDef' + description: browserbase context provider + Tools.BrowserbaseContextIntegrationDefUpdate: + type: object + properties: + method: + type: string + enum: + - create_context + description: The specific method of the integration to call + default: create_context + arguments: + description: The arguments for the method + allOf: + - $ref: '#/components/schemas/Tools.BaseBrowserbaseIntegrationDefUpdate' + description: browserbase context provider + Tools.BrowserbaseCreateSessionArguments: + type: object + required: + - projectId + properties: + projectId: + type: string + description: The Project ID. Can be found in Settings. + extensionId: + type: string + description: The uploaded Extension ID. See Upload Extension. + browserSettings: + type: object + additionalProperties: {} + description: Browser settings + timeout: + type: integer + format: uint16 + description: Duration in seconds after which the session will automatically end. Defaults to the Project's defaultTimeout. + keepAlive: + type: boolean + description: Set to true to keep the session alive even after disconnections. This is available on the Startup plan only. + proxies: + anyOf: + - type: boolean + - type: array + items: + type: object + additionalProperties: {} + description: Proxy configuration. Can be true for default proxy, or an array of proxy configurations. + Tools.BrowserbaseCreateSessionArgumentsUpdate: + type: object + properties: + projectId: + type: string + description: The Project ID. Can be found in Settings. + extensionId: + type: string + description: The uploaded Extension ID. See Upload Extension. + browserSettings: + type: object + additionalProperties: {} + description: Browser settings + timeout: + type: integer + format: uint16 + description: Duration in seconds after which the session will automatically end. Defaults to the Project's defaultTimeout. + keepAlive: + type: boolean + description: Set to true to keep the session alive even after disconnections. This is available on the Startup plan only. + proxies: + anyOf: + - type: boolean + - type: array + items: + type: object + additionalProperties: {} + description: Proxy configuration. Can be true for default proxy, or an array of proxy configurations. + Tools.BrowserbaseCreateSessionIntegrationDef: + type: object + required: + - method + - arguments + properties: + method: + type: string + enum: + - create_session + default: create_session + arguments: + allOf: + - $ref: '#/components/schemas/Tools.BrowserbaseCreateSessionArguments' + description: The arguments for the method + allOf: + - $ref: '#/components/schemas/Tools.BaseBrowserbaseIntegrationDef' + description: browserbase create session integration definition + Tools.BrowserbaseCreateSessionIntegrationDefUpdate: + type: object + properties: + method: + type: string + enum: + - create_session + default: create_session + arguments: + allOf: + - $ref: '#/components/schemas/Tools.BrowserbaseCreateSessionArgumentsUpdate' + description: The arguments for the method + allOf: + - $ref: '#/components/schemas/Tools.BaseBrowserbaseIntegrationDefUpdate' + description: browserbase create session integration definition + Tools.BrowserbaseGetSessionArguments: + type: object + required: + - id + properties: + id: + type: string + Tools.BrowserbaseGetSessionArgumentsUpdate: + type: object + properties: + id: + type: string + Tools.BrowserbaseGetSessionIntegrationDef: + type: object + required: + - method + - arguments + properties: + method: + type: string + enum: + - get_session + default: get_session + arguments: + $ref: '#/components/schemas/Tools.BrowserbaseGetSessionArguments' + allOf: + - $ref: '#/components/schemas/Tools.BaseBrowserbaseIntegrationDef' + description: browserbase get session integration definition + Tools.BrowserbaseGetSessionIntegrationDefUpdate: + type: object + properties: + method: + type: string + enum: + - get_session + default: get_session + arguments: + $ref: '#/components/schemas/Tools.BrowserbaseGetSessionArgumentsUpdate' + allOf: + - $ref: '#/components/schemas/Tools.BaseBrowserbaseIntegrationDefUpdate' + description: browserbase get session integration definition + Tools.BrowserbaseGetSessionLiveUrlsArguments: + type: object + required: + - id + properties: + id: + type: string + Tools.BrowserbaseGetSessionLiveUrlsArgumentsUpdate: + type: object + properties: + id: + type: string + Tools.BrowserbaseGetSessionLiveUrlsIntegrationDef: + type: object + required: + - method + - arguments + properties: + method: + type: string + enum: + - get_live_urls + default: get_live_urls + arguments: + $ref: '#/components/schemas/Tools.BrowserbaseGetSessionLiveUrlsArguments' + allOf: + - $ref: '#/components/schemas/Tools.BaseBrowserbaseIntegrationDef' + description: browserbase get session live urls integration definition + Tools.BrowserbaseGetSessionLiveUrlsIntegrationDefUpdate: + type: object + properties: + method: + type: string + enum: + - get_live_urls + default: get_live_urls + arguments: + $ref: '#/components/schemas/Tools.BrowserbaseGetSessionLiveUrlsArgumentsUpdate' + allOf: + - $ref: '#/components/schemas/Tools.BaseBrowserbaseIntegrationDefUpdate' + description: browserbase get session live urls integration definition + Tools.BrowserbaseListSessionsArguments: + type: object + properties: + status: + type: string + enum: + - RUNNING + - ERROR + - TIMED_OUT + - COMPLETED + description: 'The status of the sessions to list (Available options: RUNNING, ERROR, TIMED_OUT, COMPLETED)' + Tools.BrowserbaseListSessionsIntegrationDef: + type: object + required: + - method + properties: + method: + type: string + enum: + - list_sessions + description: The specific method of the integration to call + default: list_sessions + arguments: + allOf: + - $ref: '#/components/schemas/Tools.BrowserbaseListSessionsArguments' + description: The arguments for the method + allOf: + - $ref: '#/components/schemas/Tools.BaseBrowserbaseIntegrationDef' + description: browserbase list sessions integration definition + Tools.BrowserbaseListSessionsIntegrationDefUpdate: + type: object + properties: + method: + type: string + enum: + - list_sessions + description: The specific method of the integration to call + default: list_sessions + arguments: + allOf: + - $ref: '#/components/schemas/Tools.BrowserbaseListSessionsArguments' + description: The arguments for the method + allOf: + - $ref: '#/components/schemas/Tools.BaseBrowserbaseIntegrationDefUpdate' + description: browserbase list sessions integration definition + Tools.BrowserbaseSetup: + type: object + required: + - api_key + properties: + api_key: + type: string + description: API key for the browserbase integration + description: The setup parameters for the browserbase integration + Tools.BrowserbaseSetupUpdate: + type: object + properties: + api_key: + type: string + description: API key for the browserbase integration + description: The setup parameters for the browserbase integration + Tools.BrowserbaseUpdateSessionArguments: + type: object + required: + - id + - status + properties: + id: + type: string + status: + type: string + enum: + - REQUEST_RELEASE + Tools.BrowserbaseUpdateSessionArgumentsUpdate: + type: object + properties: + id: + type: string + status: + type: string + enum: + - REQUEST_RELEASE + Tools.BrowserbaseUpdateSessionIntegrationDef: + type: object + required: + - method + - arguments + properties: + method: + type: string + enum: + - update_session + default: update_session + arguments: + $ref: '#/components/schemas/Tools.BrowserbaseUpdateSessionArguments' + allOf: + - $ref: '#/components/schemas/Tools.BaseBrowserbaseIntegrationDef' + description: browserbase update session integration definition + Tools.BrowserbaseUpdateSessionIntegrationDefUpdate: + type: object + properties: + method: + type: string + enum: + - update_session + default: update_session + arguments: + $ref: '#/components/schemas/Tools.BrowserbaseUpdateSessionArgumentsUpdate' + allOf: + - $ref: '#/components/schemas/Tools.BaseBrowserbaseIntegrationDefUpdate' + description: browserbase update session integration definition + Tools.ChosenBash20241022: + type: object + properties: + command: + type: string + description: The bash command to run + restart: + type: boolean + description: Whether to restart the tool + default: false + Tools.ChosenComputer20241022: + type: object + required: + - action + properties: + action: + allOf: + - $ref: '#/components/schemas/Tools.Computer20241022Action' + description: The action to perform + text: + type: string + description: The text to type + coordinate: + type: array + items: + type: integer + format: uint16 + description: The (x, y) pixel coordinate to move the cursor to + Tools.ChosenFunctionCall: + type: object + required: + - type + - function + properties: + type: + type: string + enum: + - function + function: + allOf: + - $ref: '#/components/schemas/Tools.FunctionCallOption' + description: The function to call + allOf: + - $ref: '#/components/schemas/Tools.BaseChosenToolCall' + Tools.ChosenTextEditor20241022: + type: object + required: + - command + - path + properties: + command: + type: string + enum: + - str_replace + - insert + - view + - undo_edit + description: The command to run + path: + type: string + description: The path to the file + file_text: + type: string + description: The content of the file to be created + insert_line: + type: integer + format: uint16 + description: The line to insert the new string after + new_str: + type: string + description: The new string to insert + old_str: + type: string + description: The string in the file to replace + view_range: + type: array + items: + type: integer + format: uint16 + description: The line range to view + Tools.Computer20241022Action: + type: string + enum: + - key + - type + - cursor_position + - mouse_move + - left_click + - right_click + - middle_click + - double_click + - screenshot + Tools.Computer20241022Def: + type: object + required: + - type + - display_width_px + - display_height_px + properties: + type: + type: string + enum: + - computer_20241022 + default: computer_20241022 + name: + type: string + default: computer + display_width_px: + type: integer + format: uint16 + minimum: 600 + description: The display width in pixels + default: 1024 + display_height_px: + type: integer + format: uint16 + minimum: 400 + description: The display height in pixels + default: 768 + display_number: + type: integer + format: uint16 + minimum: 1 + maximum: 10 + description: The display number to use + default: 1 + description: Anthropic new tools + Tools.Computer20241022DefUpdate: + type: object + properties: + type: + type: string + enum: + - computer_20241022 + default: computer_20241022 + name: + type: string + default: computer + display_width_px: + type: integer + format: uint16 + minimum: 600 + description: The display width in pixels + default: 1024 + display_height_px: + type: integer + format: uint16 + minimum: 400 + description: The display height in pixels + default: 768 + display_number: + type: integer + format: uint16 + minimum: 1 + maximum: 10 + description: The display number to use + default: 1 + description: Anthropic new tools + Tools.CreateToolRequest: + type: object + required: + - name + properties: + name: + allOf: + - $ref: '#/components/schemas/Common.validPythonIdentifier' + description: Name of the tool (must be unique for this agent and a valid python identifier string ) + description: + type: string + description: Description of the tool + function: + allOf: + - $ref: '#/components/schemas/Tools.FunctionDef' + description: The function to call + integration: + anyOf: + - $ref: '#/components/schemas/Tools.DummyIntegrationDef' + - $ref: '#/components/schemas/Tools.BraveIntegrationDef' + - $ref: '#/components/schemas/Tools.EmailIntegrationDef' + - $ref: '#/components/schemas/Tools.SpiderIntegrationDef' + - $ref: '#/components/schemas/Tools.WikipediaIntegrationDef' + - $ref: '#/components/schemas/Tools.WeatherIntegrationDef' + - $ref: '#/components/schemas/Tools.BrowserbaseContextIntegrationDef' + - $ref: '#/components/schemas/Tools.BrowserbaseListSessionsIntegrationDef' + - $ref: '#/components/schemas/Tools.BrowserbaseCreateSessionIntegrationDef' + - $ref: '#/components/schemas/Tools.BrowserbaseGetSessionIntegrationDef' + - $ref: '#/components/schemas/Tools.BrowserbaseUpdateSessionIntegrationDef' + - $ref: '#/components/schemas/Tools.BrowserbaseGetSessionLiveUrlsIntegrationDef' + description: The integration to call + system: + allOf: + - $ref: '#/components/schemas/Tools.SystemDef' + description: The system to call + api_call: + allOf: + - $ref: '#/components/schemas/Tools.ApiCallDef' + description: The API call to make + computer_20241022: + allOf: + - $ref: '#/components/schemas/Tools.Computer20241022Def' + description: (Alpha) Anthropic new tools + text_editor_20241022: + $ref: '#/components/schemas/Tools.TextEditor20241022Def' + bash_20241022: + $ref: '#/components/schemas/Tools.Bash20241022Def' + description: Payload for creating a tool + Tools.DummyIntegrationDef: + type: object + required: + - provider + properties: + provider: + type: string + enum: + - dummy + default: dummy + allOf: + - $ref: '#/components/schemas/Tools.BaseIntegrationDef' + Tools.DummyIntegrationDefUpdate: + type: object + properties: + provider: + type: string + enum: + - dummy + default: dummy + allOf: + - $ref: '#/components/schemas/Tools.BaseIntegrationDefUpdate' + Tools.EmailArguments: + type: object + required: + - to + - from + - subject + - body + properties: + to: + type: string + description: The email address to send the email to + from: + type: string + description: The email address to send the email from + subject: + type: string + description: The subject of the email + body: + type: string + description: The body of the email + description: Arguments for Email sending + Tools.EmailArgumentsUpdate: + type: object + properties: + to: + type: string + description: The email address to send the email to + from: + type: string + description: The email address to send the email from + subject: + type: string + description: The subject of the email + body: + type: string + description: The body of the email + description: Arguments for Email sending + Tools.EmailIntegrationDef: + type: object + required: + - provider + properties: + provider: + type: string + enum: + - email + description: The provider must be "email" + default: email + method: + type: string + description: The specific method of the integration to call + setup: + allOf: + - $ref: '#/components/schemas/Tools.EmailSetup' + description: The setup parameters for Email + arguments: + allOf: + - $ref: '#/components/schemas/Tools.EmailArguments' + description: The arguments for Email sending + allOf: + - $ref: '#/components/schemas/Tools.BaseIntegrationDef' + description: Email integration definition + Tools.EmailIntegrationDefUpdate: + type: object + properties: + provider: + type: string + enum: + - email + description: The provider must be "email" + default: email + method: + type: string + description: The specific method of the integration to call + setup: + allOf: + - $ref: '#/components/schemas/Tools.EmailSetupUpdate' + description: The setup parameters for Email + arguments: + allOf: + - $ref: '#/components/schemas/Tools.EmailArgumentsUpdate' + description: The arguments for Email sending + allOf: + - $ref: '#/components/schemas/Tools.BaseIntegrationDefUpdate' + description: Email integration definition + Tools.EmailSetup: + type: object + required: + - host + - port + - user + - password + properties: + host: + type: string + description: The host of the email server + port: + type: integer + format: int32 + description: The port of the email server + user: + type: string + description: The username of the email server + password: + type: string + description: The password of the email server + description: Setup parameters for Email integration + Tools.EmailSetupUpdate: + type: object + properties: + host: + type: string + description: The host of the email server + port: + type: integer + format: int32 + description: The port of the email server + user: + type: string + description: The username of the email server + password: + type: string + description: The password of the email server + description: Setup parameters for Email integration + Tools.FunctionCallOption: + type: object + required: + - name + properties: + name: + type: string + description: The name of the function + Tools.FunctionDef: + type: object + properties: + name: + nullable: true + description: 'DO NOT USE: This will be overriden by the tool name. Here only for compatibility reasons.' + default: null + description: + nullable: true + description: 'DO NOT USE: This will be overriden by the tool description. Here only for compatibility reasons.' + default: null + parameters: + type: object + additionalProperties: {} + description: The parameters the function accepts + description: Function definition + Tools.NamedToolChoice: + type: object + properties: + function: + $ref: '#/components/schemas/Tools.FunctionCallOption' + Tools.PatchToolRequest: + type: object + properties: + name: + allOf: + - $ref: '#/components/schemas/Common.validPythonIdentifier' + description: Name of the tool (must be unique for this agent and a valid python identifier string ) + description: + type: string + description: Description of the tool + function: + allOf: + - $ref: '#/components/schemas/Tools.FunctionDef' + description: The function to call + integration: + anyOf: + - $ref: '#/components/schemas/Tools.DummyIntegrationDefUpdate' + - $ref: '#/components/schemas/Tools.BraveIntegrationDefUpdate' + - $ref: '#/components/schemas/Tools.EmailIntegrationDefUpdate' + - $ref: '#/components/schemas/Tools.SpiderIntegrationDefUpdate' + - $ref: '#/components/schemas/Tools.WikipediaIntegrationDefUpdate' + - $ref: '#/components/schemas/Tools.WeatherIntegrationDefUpdate' + - $ref: '#/components/schemas/Tools.BrowserbaseContextIntegrationDefUpdate' + - $ref: '#/components/schemas/Tools.BrowserbaseListSessionsIntegrationDefUpdate' + - $ref: '#/components/schemas/Tools.BrowserbaseCreateSessionIntegrationDefUpdate' + - $ref: '#/components/schemas/Tools.BrowserbaseGetSessionIntegrationDefUpdate' + - $ref: '#/components/schemas/Tools.BrowserbaseUpdateSessionIntegrationDefUpdate' + - $ref: '#/components/schemas/Tools.BrowserbaseGetSessionLiveUrlsIntegrationDefUpdate' + description: The integration to call + system: + allOf: + - $ref: '#/components/schemas/Tools.SystemDefUpdate' + description: The system to call + api_call: + allOf: + - $ref: '#/components/schemas/Tools.ApiCallDefUpdate' + description: The API call to make + computer_20241022: + allOf: + - $ref: '#/components/schemas/Tools.Computer20241022DefUpdate' + description: (Alpha) Anthropic new tools + text_editor_20241022: + $ref: '#/components/schemas/Tools.TextEditor20241022DefUpdate' + bash_20241022: + $ref: '#/components/schemas/Tools.Bash20241022DefUpdate' + description: Payload for patching a tool + Tools.SpiderFetchArguments: + type: object + required: + - url + properties: + url: + type: string + format: uri + description: The URL to fetch data from + mode: + type: string + enum: + - scrape + description: The type of crawler to use + default: scrape + params: + type: object + additionalProperties: {} + description: Additional parameters for the Spider API + description: Arguments for Spider integration + Tools.SpiderFetchArgumentsUpdate: + type: object + properties: + url: + type: string + format: uri + description: The URL to fetch data from + mode: + type: string + enum: + - scrape + description: The type of crawler to use + default: scrape + params: + type: object + additionalProperties: {} + description: Additional parameters for the Spider API + description: Arguments for Spider integration + Tools.SpiderIntegrationDef: + type: object + required: + - provider + properties: + provider: + type: string + enum: + - spider + description: The provider must be "spider" + default: spider + method: + type: string + description: The specific method of the integration to call + setup: + allOf: + - $ref: '#/components/schemas/Tools.SpiderSetup' + description: The setup parameters for Spider + arguments: + allOf: + - $ref: '#/components/schemas/Tools.SpiderFetchArguments' + description: The arguments for Spider + allOf: + - $ref: '#/components/schemas/Tools.BaseIntegrationDef' + description: Spider integration definition + Tools.SpiderIntegrationDefUpdate: + type: object + properties: + provider: + type: string + enum: + - spider + description: The provider must be "spider" + default: spider + method: + type: string + description: The specific method of the integration to call + setup: + allOf: + - $ref: '#/components/schemas/Tools.SpiderSetupUpdate' + description: The setup parameters for Spider + arguments: + allOf: + - $ref: '#/components/schemas/Tools.SpiderFetchArgumentsUpdate' + description: The arguments for Spider + allOf: + - $ref: '#/components/schemas/Tools.BaseIntegrationDefUpdate' + description: Spider integration definition + Tools.SpiderSetup: + type: object + required: + - spider_api_key + properties: + spider_api_key: + type: string + description: The API key for Spider + description: Setup parameters for Spider integration + Tools.SpiderSetupUpdate: + type: object + properties: + spider_api_key: + type: string + description: The API key for Spider + description: Setup parameters for Spider integration + Tools.SystemDef: + type: object + required: + - resource + - operation + properties: + resource: + type: string + enum: + - agent + - user + - task + - execution + - doc + - session + - job + description: Resource is the name of the resource to use + operation: + type: string + enum: + - create + - update + - patch + - create_or_update + - embed + - change_status + - search + - chat + - history + - delete + - get + - list + description: Operation is the name of the operation to perform + resource_id: + allOf: + - $ref: '#/components/schemas/Common.uuid' + description: Resource id (if applicable) + subresource: + type: string + enum: + - tool + - doc + - execution + - transition + description: Sub-resource type (if applicable) + arguments: + type: object + additionalProperties: {} + description: The arguments to pre-apply to the system call + description: System definition + Tools.SystemDefUpdate: + type: object + properties: + resource: + type: string + enum: + - agent + - user + - task + - execution + - doc + - session + - job + description: Resource is the name of the resource to use + operation: + type: string + enum: + - create + - update + - patch + - create_or_update + - embed + - change_status + - search + - chat + - history + - delete + - get + - list + description: Operation is the name of the operation to perform + resource_id: + allOf: + - $ref: '#/components/schemas/Common.uuid' + description: Resource id (if applicable) + subresource: + type: string + enum: + - tool + - doc + - execution + - transition + description: Sub-resource type (if applicable) + arguments: + type: object + additionalProperties: {} + description: The arguments to pre-apply to the system call + description: System definition + Tools.TextEditor20241022Def: + type: object + required: + - type + properties: + type: + type: string + enum: + - text_editor_20241022 + default: text_editor_20241022 + name: + type: string + default: str_replace_editor + Tools.TextEditor20241022DefUpdate: + type: object + properties: + type: + type: string + enum: + - text_editor_20241022 + default: text_editor_20241022 + name: + type: string + default: str_replace_editor + Tools.Tool: + type: object + required: + - name + - created_at + - updated_at + - id + properties: + name: + allOf: + - $ref: '#/components/schemas/Common.validPythonIdentifier' + description: Name of the tool (must be unique for this agent and a valid python identifier string ) + description: + type: string + description: Description of the tool + function: + allOf: + - $ref: '#/components/schemas/Tools.FunctionDef' + description: The function to call + integration: + anyOf: + - $ref: '#/components/schemas/Tools.DummyIntegrationDef' + - $ref: '#/components/schemas/Tools.BraveIntegrationDef' + - $ref: '#/components/schemas/Tools.EmailIntegrationDef' + - $ref: '#/components/schemas/Tools.SpiderIntegrationDef' + - $ref: '#/components/schemas/Tools.WikipediaIntegrationDef' + - $ref: '#/components/schemas/Tools.WeatherIntegrationDef' + - $ref: '#/components/schemas/Tools.BrowserbaseContextIntegrationDef' + - $ref: '#/components/schemas/Tools.BrowserbaseListSessionsIntegrationDef' + - $ref: '#/components/schemas/Tools.BrowserbaseCreateSessionIntegrationDef' + - $ref: '#/components/schemas/Tools.BrowserbaseGetSessionIntegrationDef' + - $ref: '#/components/schemas/Tools.BrowserbaseUpdateSessionIntegrationDef' + - $ref: '#/components/schemas/Tools.BrowserbaseGetSessionLiveUrlsIntegrationDef' + description: The integration to call + system: allOf: - $ref: '#/components/schemas/Tools.SystemDef' description: The system to call @@ -6111,6 +7076,14 @@ components: allOf: - $ref: '#/components/schemas/Tools.ApiCallDef' description: The API call to make + computer_20241022: + allOf: + - $ref: '#/components/schemas/Tools.Computer20241022Def' + description: (Alpha) Anthropic new tools + text_editor_20241022: + $ref: '#/components/schemas/Tools.TextEditor20241022Def' + bash_20241022: + $ref: '#/components/schemas/Tools.Bash20241022Def' created_at: type: string format: date-time @@ -6144,6 +7117,9 @@ components: - integration - system - api_call + - computer_20241022 + - text_editor_20241022 + - bash_20241022 Tools.UpdateToolRequest: type: object required: @@ -6161,8 +7137,19 @@ components: - $ref: '#/components/schemas/Tools.FunctionDef' description: The function to call integration: - allOf: - - $ref: '#/components/schemas/Tools.IntegrationDef' + anyOf: + - $ref: '#/components/schemas/Tools.DummyIntegrationDef' + - $ref: '#/components/schemas/Tools.BraveIntegrationDef' + - $ref: '#/components/schemas/Tools.EmailIntegrationDef' + - $ref: '#/components/schemas/Tools.SpiderIntegrationDef' + - $ref: '#/components/schemas/Tools.WikipediaIntegrationDef' + - $ref: '#/components/schemas/Tools.WeatherIntegrationDef' + - $ref: '#/components/schemas/Tools.BrowserbaseContextIntegrationDef' + - $ref: '#/components/schemas/Tools.BrowserbaseListSessionsIntegrationDef' + - $ref: '#/components/schemas/Tools.BrowserbaseCreateSessionIntegrationDef' + - $ref: '#/components/schemas/Tools.BrowserbaseGetSessionIntegrationDef' + - $ref: '#/components/schemas/Tools.BrowserbaseUpdateSessionIntegrationDef' + - $ref: '#/components/schemas/Tools.BrowserbaseGetSessionLiveUrlsIntegrationDef' description: The integration to call system: allOf: @@ -6172,7 +7159,174 @@ components: allOf: - $ref: '#/components/schemas/Tools.ApiCallDef' description: The API call to make + computer_20241022: + allOf: + - $ref: '#/components/schemas/Tools.Computer20241022Def' + description: (Alpha) Anthropic new tools + text_editor_20241022: + $ref: '#/components/schemas/Tools.TextEditor20241022Def' + bash_20241022: + $ref: '#/components/schemas/Tools.Bash20241022Def' description: Payload for updating a tool + Tools.WeatherGetArguments: + type: object + required: + - location + properties: + location: + type: string + description: The location for which to fetch weather data + description: Arguments for Weather + Tools.WeatherGetArgumentsUpdate: + type: object + properties: + location: + type: string + description: The location for which to fetch weather data + description: Arguments for Weather + Tools.WeatherIntegrationDef: + type: object + required: + - provider + properties: + provider: + type: string + enum: + - weather + description: The provider must be "weather" + default: weather + method: + type: string + description: The specific method of the integration to call + setup: + allOf: + - $ref: '#/components/schemas/Tools.WeatherSetup' + description: The setup parameters for Weather + arguments: + allOf: + - $ref: '#/components/schemas/Tools.WeatherGetArguments' + description: The arguments for Weather + allOf: + - $ref: '#/components/schemas/Tools.BaseIntegrationDef' + description: Weather integration definition + Tools.WeatherIntegrationDefUpdate: + type: object + properties: + provider: + type: string + enum: + - weather + description: The provider must be "weather" + default: weather + method: + type: string + description: The specific method of the integration to call + setup: + allOf: + - $ref: '#/components/schemas/Tools.WeatherSetupUpdate' + description: The setup parameters for Weather + arguments: + allOf: + - $ref: '#/components/schemas/Tools.WeatherGetArgumentsUpdate' + description: The arguments for Weather + allOf: + - $ref: '#/components/schemas/Tools.BaseIntegrationDefUpdate' + description: Weather integration definition + Tools.WeatherSetup: + type: object + required: + - openweathermap_api_key + properties: + openweathermap_api_key: + type: string + description: The api key for OpenWeatherMap + description: Integration definition for Weather + Tools.WeatherSetupUpdate: + type: object + properties: + openweathermap_api_key: + type: string + description: The api key for OpenWeatherMap + description: Integration definition for Weather + Tools.WikipediaIntegrationDef: + type: object + required: + - provider + properties: + provider: + type: string + enum: + - wikipedia + description: The provider must be "wikipedia" + default: wikipedia + method: + type: string + description: The specific method of the integration to call + setup: + nullable: true + description: The setup parameters for Wikipedia + default: null + arguments: + allOf: + - $ref: '#/components/schemas/Tools.WikipediaSearchArguments' + description: The arguments for Wikipedia Search + allOf: + - $ref: '#/components/schemas/Tools.BaseIntegrationDef' + description: Wikipedia integration definition + Tools.WikipediaIntegrationDefUpdate: + type: object + properties: + provider: + type: string + enum: + - wikipedia + description: The provider must be "wikipedia" + default: wikipedia + method: + type: string + description: The specific method of the integration to call + setup: + nullable: true + description: The setup parameters for Wikipedia + default: null + arguments: + allOf: + - $ref: '#/components/schemas/Tools.WikipediaSearchArgumentsUpdate' + description: The arguments for Wikipedia Search + allOf: + - $ref: '#/components/schemas/Tools.BaseIntegrationDefUpdate' + description: Wikipedia integration definition + Tools.WikipediaSearchArguments: + type: object + required: + - query + - load_max_docs + properties: + query: + type: string + description: The search query string + load_max_docs: + type: integer + format: uint8 + minimum: 1 + maximum: 10 + description: Maximum number of documents to load + default: 2 + description: Arguments for Wikipedia Search + Tools.WikipediaSearchArgumentsUpdate: + type: object + properties: + query: + type: string + description: The search query string + load_max_docs: + type: integer + format: uint8 + minimum: 1 + maximum: 10 + description: Maximum number of documents to load + default: 2 + description: Arguments for Wikipedia Search Users.CreateOrUpdateUserRequest: type: object required: