diff --git a/.gitignore b/.gitignore
index 7d1d2ca75..749d94bea 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
.DS_Store
+*gaga*
*.swp
ngrok*
.env*
diff --git a/README-CN.md b/README-CN.md
index e39a65bcc..c0290845f 100644
--- a/README-CN.md
+++ b/README-CN.md
@@ -6,7 +6,7 @@
- 探索文档
+ 探索文档(正在开发中)
·
不和谐
·
@@ -62,34 +62,39 @@
-
📖 Table of Contents
-
-- [主要特点](#%E4%B8%BB%E8%A6%81%E7%89%B9%E7%82%B9)
-- [Python 快速入门🐍](#python-%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8)
-- [Node.js Quick Start 🟩](#nodejs-quick-start-)
- - [Step 1: Create an Agent](#step-1-create-an-agent)
-- [Components](#components)
- - [Mental Model](#mental-model)
-- [Concepts](#concepts)
-- [Understanding Tasks](#understanding-tasks)
- - [Lifecycle of a Task](#lifecycle-of-a-task)
- - [Types of Workflow Steps](#types-of-workflow-steps)
-- [Tool Types](#tool-types)
- - [User-defined `functions`](#user-defined-functions)
- - [`system` tools](#system-tools)
- - [Built-in `integrations`](#built-in-integrations)
- - [Direct `api_calls`](#direct-api_calls)
-- [Integrations](#integrations)
-- [Other Features](#other-features)
- - [Adding Tools to Agents](#adding-tools-to-agents)
- - [Managing Sessions and Users](#managing-sessions-and-users)
- - [Document Integration and Search](#document-integration-and-search)
- - [SDK 参考](#sdk-%E5%8F%82%E8%80%83)
- - [API 参考](#api-%E5%8F%82%E8%80%83)
-- [本地快速启动](#%E6%9C%AC%E5%9C%B0%E5%BF%AB%E9%80%9F%E5%90%AF%E5%8A%A8)
-- [Julep 和 LangChain 等有什么区别?](#julep-%E5%92%8C-langchain-%E7%AD%89%E6%9C%89%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB)
- - [不同的用例](#%E4%B8%8D%E5%90%8C%E7%9A%84%E7%94%A8%E4%BE%8B)
- - [不同的外形尺寸](#%E4%B8%8D%E5%90%8C%E7%9A%84%E5%A4%96%E5%BD%A2%E5%B0%BA%E5%AF%B8)
+📖 目录
+
+- [简介](#introduction)
+- [主要特点](#key-features)
+- [快速示例](#quick-example)
+- [安装](#安装)
+- [Python 快速入门 🐍](#python-quick-start-)
+- [Node.js 快速入门🟩](#nodejs-quick-start-)
+- [步骤 1:创建代理](#step-1-create-an-agent)
+- [组件](#components)
+- [心智模型](#mental-model)
+- [概念](#concepts)
+- [理解任务](#understanding-tasks)
+- [任务的生命周期](#lifecycle-of-a-task)
+- [工作流步骤的类型](#types-of-workflow-steps)
+- [工具类型](#tool-types)
+- [用户定义的`函数`](#user-defined-functions)
+- [`系统` 工具](#system-tools)
+- [内置 `integrations`](#built-in-integrations)
+- [直接`api_calls`](#direct-api_calls)
+- [集成](#integrations)
+- [其他功能](#other-features)
+- [向代理添加工具](#adding-tools-to-agents)
+- [管理会话和用户](#managing-sessions-and-users)
+- [文档集成与搜索](#document-integration-and-search)
+- [参考](#reference)
+- [SDK 参考](#sdk-reference)
+- [API 参考](#api-reference)
+- [本地快速启动](#local-quickstart)
+- [Julep 和 LangChain 等有什么区别?](#julep 和 langchain 等之间有什么区别)
+- [不同用例](#different-use-cases)
+- [不同的外形尺寸](#different-form-factor)
+- [总结](#in-summary)
@@ -232,7 +237,7 @@ main:
> **人工智能研究摘要**
>
->###人工智能(AI)研究成果摘要
+> ### 人工智能(AI)研究成果摘要
>
> #### 简介
>
@@ -1297,7 +1302,7 @@ result: string # Brave Search 的结果
设置:
api_key: string # BrowserBase 的 API 密钥
project_id: string # BrowserBase 的项目 ID
-session_id: string # (可选)BrowserBase 的会话 ID
+session_id: string #(可选)BrowserBase 的会话 ID
参数:
urls: list[string] # 使用 BrowserBase 加载的 URL
@@ -1352,7 +1357,7 @@ mode: string # 爬虫的类型(默认值:“scrape”)
params: dict # (可选)Spider API 的参数
输出:
-documents: list # 蜘蛛返回的文档
+documents: list # 从蜘蛛返回的文档
```
diff --git a/README-FR.md b/README-FR.md
index 2848a2637..2a5254c03 100644
--- a/README-FR.md
+++ b/README-FR.md
@@ -6,7 +6,7 @@
- Explorer les documents
+ Explorer les documents (en cours)
·
Discorde
·
@@ -62,39 +62,39 @@ Des nouvelles passionnantes ! Nous participons au DevFest.AI tout au long du moi
-
📖 Table of Contents
+📖 Table des matières
-- [Introduction](#introduction)
-- [Principales caractéristiques](#principales-caract%C3%A9ristiques)
-- [Exemple rapide](#exemple-rapide)
+- [Présentation](#introduction)
+- [Caractéristiques principales](#key-features)
+- [Exemple rapide](#quick-example)
- [Installation](#installation)
-- [Démarrage rapide de Python 🐍](#d%C3%A9marrage-rapide-de-python-)
-- [Node.js Quick Start 🟩](#nodejs-quick-start-)
- - [Step 1: Create an Agent](#step-1-create-an-agent)
-- [Components](#components)
- - [Mental Model](#mental-model)
+- [Démarrage rapide de Python 🐍](#python-quick-start-)
+- [Démarrage rapide de Node.js 🟩](#nodejs-quick-start-)
+- [Étape 1 : Créer un agent](#step-1-create-an-agent)
+- [Composants](#composants)
+- [Modèle mental](#mental-model)
- [Concepts](#concepts)
-- [Understanding Tasks](#understanding-tasks)
- - [Lifecycle of a Task](#lifecycle-of-a-task)
- - [Types of Workflow Steps](#types-of-workflow-steps)
-- [Tool Types](#tool-types)
- - [User-defined `functions`](#user-defined-functions)
- - [`system` tools](#system-tools)
- - [Built-in `integrations`](#built-in-integrations)
- - [Direct `api_calls`](#direct-api_calls)
-- [Integrations](#integrations)
-- [Other Features](#other-features)
- - [Adding Tools to Agents](#adding-tools-to-agents)
- - [Managing Sessions and Users](#managing-sessions-and-users)
- - [Document Integration and Search](#document-integration-and-search)
-- [Référence](#r%C3%A9f%C3%A9rence)
- - [Référence du SDK](#r%C3%A9f%C3%A9rence-du-sdk)
- - [Référence API](#r%C3%A9f%C3%A9rence-api)
-- [Démarrage rapide local](#d%C3%A9marrage-rapide-local)
-- [Quelle est la différence entre Julep et LangChain etc ?](#quelle-est-la-diff%C3%A9rence-entre-julep-et-langchain-etc-)
- - [Différents cas d'utilisation](#diff%C3%A9rents-cas-dutilisation)
- - [Facteur de forme différent](#facteur-de-forme-diff%C3%A9rent)
- - [En résumé](#en-r%C3%A9sum%C3%A9)
+- [Comprendre les tâches](#understanding-tasks)
+- [Cycle de vie d'une tâche](#cycle-de-vie-d-une-tâche)
+- [Types d'étapes de flux de travail](#types-of-workflow-steps)
+- [Types d'outils](#types-d'outils)
+- [`Fonctions` définies par l'utilisateur](#user-defined-functions)
+- [outils système](#outils-système)
+- [`Intégrations` intégrées](#integrations-integrées)
+- [Appels directs `api_calls`](#appels directs-api_calls)
+- [Intégrations](#intégrations)
+- [Autres fonctionnalités](#other-features)
+- [Ajout d'outils aux agents](#adding-tools-to-agents)
+- [Gestion des sessions et des utilisateurs](#managing-sessions-and-users)
+- [Intégration et recherche de documents](#document-integration-and-search)
+- [Référence](#référence)
+- [Référence SDK](#sdk-reference)
+- [Référence API](#api-reference)
+- [Démarrage rapide local](#local-quickstart)
+- [Quelle est la différence entre Julep et LangChain etc ?](#quelle-est-la-différence-entre-julep-et-langchain-etc)
+- [Différents cas d'utilisation](#different-use-cases)
+- [Facteur de forme différent](#different-form-factor)
+- [En résumé](#en-resumé)
@@ -429,11 +429,11 @@ agent_id=agent.id,
### Étape 3 : Exécuter la tâche
exécution = client.executions.create(
-task_id=task.id,
+task_id=tâche.id,
input={"idea": "Un chat qui apprend à voler"}
)
-# 🎉 Regardez l'histoire et les panneaux de bande dessinée se générer
+# 🎉 Regardez l'histoire et les panneaux de bandes dessinées se générer
while (result := client.executions.get(execution.id)).status n'est pas dans ['réussi', 'échec'] :
print(résultat.statut, résultat.sortie)
heure.sommeil(1)
@@ -1561,7 +1561,7 @@ Julep, en revanche, s'intéresse davantage à la création d'agents d'IA persist
Utilisez Julep si vous imaginez créer un assistant IA complexe qui doit :
- Suivez les interactions des utilisateurs sur plusieurs jours ou semaines.
-- Exécutez des tâches planifiées, comme l'envoi de résumés quotidiens ou la surveillance des sources de données.
+- Exécutez des tâches planifiées, comme l'envoi de résumés quotidiens ou la surveillance de sources de données.
- Prendre des décisions basées sur des interactions antérieures ou des données stockées.
- Interagir avec plusieurs services externes dans le cadre de son flux de travail.
diff --git a/README-JA.md b/README-JA.md
index 116df51ef..d22750547 100644
--- a/README-JA.md
+++ b/README-JA.md
@@ -6,7 +6,7 @@
- ドキュメントを見る
+ ドキュメントを探索 (wip)
·
不和
·
@@ -62,36 +62,39 @@ Julep プロジェクトに新しい貢献者を迎えられることを嬉し
-
📖 Table of Contents
-
-- [主な特徴](#%E4%B8%BB%E3%81%AA%E7%89%B9%E5%BE%B4)
-- [簡単な例](#%E7%B0%A1%E5%8D%98%E3%81%AA%E4%BE%8B)
-- [インストール](#%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)
-- [Python クイックスタート 🐍](#python-%E3%82%AF%E3%82%A4%E3%83%83%E3%82%AF%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%88-)
-- [Node.js Quick Start 🟩](#nodejs-quick-start-)
- - [Step 1: Create an Agent](#step-1-create-an-agent)
-- [Components](#components)
- - [Mental Model](#mental-model)
-- [Concepts](#concepts)
-- [Understanding Tasks](#understanding-tasks)
- - [Lifecycle of a Task](#lifecycle-of-a-task)
- - [Types of Workflow Steps](#types-of-workflow-steps)
-- [Tool Types](#tool-types)
- - [User-defined `functions`](#user-defined-functions)
- - [`system` tools](#system-tools)
- - [Built-in `integrations`](#built-in-integrations)
- - [Direct `api_calls`](#direct-api_calls)
-- [Integrations](#integrations)
-- [Other Features](#other-features)
- - [Adding Tools to Agents](#adding-tools-to-agents)
- - [Managing Sessions and Users](#managing-sessions-and-users)
- - [Document Integration and Search](#document-integration-and-search)
- - [SDK リファレンス](#sdk-%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9)
- - [API リファレンス](#api-%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9)
-- [ローカルクイックスタート](#%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E3%82%AF%E3%82%A4%E3%83%83%E3%82%AF%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%88)
-- [Julep と LangChain などの違いは何ですか?](#julep-%E3%81%A8-langchain-%E3%81%AA%E3%81%A9%E3%81%AE%E9%81%95%E3%81%84%E3%81%AF%E4%BD%95%E3%81%A7%E3%81%99%E3%81%8B)
- - [さまざまなユースケース](#%E3%81%95%E3%81%BE%E3%81%96%E3%81%BE%E3%81%AA%E3%83%A6%E3%83%BC%E3%82%B9%E3%82%B1%E3%83%BC%E3%82%B9)
- - [異なるフォームファクタ](#%E7%95%B0%E3%81%AA%E3%82%8B%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E3%83%95%E3%82%A1%E3%82%AF%E3%82%BF)
+📖 目次
+
+- [はじめに](#introduction)
+- [主な特徴](#key-features)
+- [簡単な例](#quick-example)
+- [インストール](#installation)
+- [Python クイックスタート 🐍](#python-quick-start-)
+- [Node.js クイック スタート 🟩](#nodejs-quick-start-)
+- [ステップ 1: エージェントを作成する](#step-1-create-an-agent)
+- [コンポーネント](#components)
+- [メンタルモデル](#mental-model)
+- [コンセプト](#concepts)
+- [タスクの理解](#understanding-tasks)
+- [タスクのライフサイクル](#lifecycle-of-a-task)
+- [ワークフロー ステップの種類](#types-of-workflow-steps)
+- [ツールの種類](#tool-types)
+- [ユーザー定義の `functions`](#user-defined-functions)
+- [`システム` ツール](#system-tools)
+- [組み込みの `integrations`](#built-in-integrations)
+- [直接の `api_calls`](#direct-api_calls)
+- [統合](#integrations)
+- [その他の機能](#other-features)
+- [エージェントへのツールの追加](#adding-tools-to-agents)
+- [セッションとユーザーの管理](#managing-sessions-and-users)
+- [ドキュメントの統合と検索](#document-integration-and-search)
+- [参考](#reference)
+- [SDKリファレンス](#sdk-reference)
+- [APIリファレンス](#api-reference)
+- [ローカルクイックスタート](#local-quickstart)
+- [Julep と LangChain などの違いは何ですか?](#whats-the-difference-between-julep-and-langchain-etc)
+- [さまざまなユースケース](#different-use-cases)
+- [異なるフォームファクター](#different-form-factor)
+- [要約](#in-summary)
@@ -107,7 +110,7 @@ Julep を使用すると、意思決定、ループ、並列処理、多数の
- モデルの出力に基づいて意思決定を行う
- 平行枝を生成し、
- たくさんのツールを使い、
-- 長時間走る。
+- 長時間実行します。
> [!ヒント]
> 単純な質問に答えるだけでなく、複雑なタスクを処理し、過去のやり取りを記憶し、場合によっては他のツールや API も使用できる AI エージェントを構築したいとします。そこで Julep の出番です。詳細については、[タスクの理解](#understanding-tasks) をお読みください。
@@ -119,7 +122,7 @@ Julep を使用すると、意思決定、ループ、並列処理、多数の
3. 🔄 **複数ステップのタスク**: ループと意思決定を含む複雑な複数ステップのプロセスを構築します。
4. ⏳ **タスク管理**: 無期限に実行される可能性のある長時間実行タスクを処理します。
5. 🛠️ **組み込みツール**: タスクで組み込みツールと外部 API を使用します。
-6. 🔧 **自己修復**: Julep は失敗したステップを自動的に再試行し、メッセージを再送信し、タスクがスムーズに実行されるようにします。
+6. 🔧 **自己修復**: Julep は失敗したステップを自動的に再試行し、メッセージを再送信し、一般的にタスクがスムーズに実行されるようにします。
7. 📚 **RAG**: Julep のドキュメント ストアを使用して、独自のデータを取得して使用するためのシステムを構築します。
![機能](https://github.com/user-attachments/assets/4355cbae-fcbd-4510-ac0d-f8f77b73af70)
@@ -394,7 +397,7 @@ plot_ideas: load_yaml(_.split('```yaml')[1].split('```')[0].ストリップ())
Think about the plot ideas critically. Combine the plot ideas with the results from Wikipedia to create a detailed plot for a story.
Write down all your notes and thoughts.
- Then finally write the plot as a yaml object inside ```レスポンスの最後に yaml タグを追加します。yaml オブジェクトの構造は次のようになります。
+ Then finally write the plot as a yaml object inside ```応答の最後に yaml タグを追加します。yaml オブジェクトの構造は次のようになります。
```yaml
title: ""
@@ -1457,7 +1460,7 @@ context_overflow="適応型"
# 同じセッションで会話を続ける
レスポンス = client.sessions.chat(
-セッションID=セッションID、
+session_id=セッションID、
メッセージ=[
{
「役割」: 「ユーザー」、
diff --git a/agents-api/agents_api/activities/task_steps/prompt_step.py b/agents-api/agents_api/activities/task_steps/prompt_step.py
index 246b51910..1c8810427 100644
--- a/agents-api/agents_api/activities/task_steps/prompt_step.py
+++ b/agents-api/agents_api/activities/task_steps/prompt_step.py
@@ -1,7 +1,11 @@
import os
+from datetime import datetime
-from anthropic import Anthropic # Import Anthropic client
+from anthropic import Anthropic
+from anthropic.types.beta.beta_message import BetaMessage
from beartype import beartype
+from litellm import ChatCompletionMessageToolCall, Function, Message
+from litellm.types.utils import Choices, ModelResponse
from temporalio import activity
from temporalio.exceptions import ApplicationError
@@ -18,24 +22,151 @@
COMPUTER_USE_BETA_FLAG = "computer-use-2024-10-22"
-# FIXME: This shouldn't be here.
-def format_agent_tool(tool: Tool) -> dict:
+def make_function_call(tool: Tool) -> dict | None:
+ result = {"type": "function"}
+
if tool.function:
- return {
- "type": "function",
- "function": {
- "name": tool.name,
- "description": tool.description,
- "parameters": tool.function.parameters,
- },
- }
+ result.update(
+ {
+ "function": {
+ "name": tool.name,
+ "description": tool.description,
+ "parameters": tool.function.parameters,
+ },
+ }
+ )
+ elif tool.api_call:
+ result.update(
+ {
+ "function": {
+ "name": tool.name,
+ "description": tool.description,
+ "parameters": {
+ "type": "object",
+ "properties": {
+ "method": {
+ "type": "string",
+ "description": "The HTTP method to use",
+ },
+ "url": {
+ "type": "string",
+ "description": "The URL to call",
+ },
+ "headers": {
+ "type": "object",
+ "description": "The headers to send with the request",
+ },
+ "content": {
+ "type": "string",
+ "description": "The content as base64 to send with the request",
+ },
+ "data": {
+ "type": "object",
+ "description": "The data to send as form data",
+ },
+ "json": {
+ "type": "object",
+ "description": "JSON body to send with the request",
+ },
+ "cookies": {
+ "type": "object",
+ "description": "Cookies",
+ },
+ "params": {
+ "type": "object",
+ "description": "The parameters to send with the request",
+ },
+ "follow_redirects": {
+ "type": "boolean",
+ "description": "Follow redirects",
+ },
+ "timeout": {
+ "type": "int",
+ "description": "The timeout for the request",
+ },
+ },
+ "required": ["method", "url"],
+ "additionalProperties": False,
+ },
+ },
+ }
+ )
+ elif tool.system:
+ result.update(
+ {
+ "function": {
+ "name": f"{tool.system.resource}.{tool.system.operation}",
+ "description": f"{tool.system.operation} a {tool.system.resource}",
+ "parameters": {
+ "type": "object",
+ "properties": {
+ "resource": {
+ "type": "string",
+ "description": "Resource is the name of the resource to use, one of: agent, user, task, execution, doc, session, job",
+ },
+ "operation": {
+ "type": "string",
+ "description": "Operation is the name of the operation to perform, one of: create, update, patch, create_or_update, embed, change_status, search, chat, history, delete, get, list",
+ },
+ "resource_id": {
+ "type": "string",
+ "description": "Resource id",
+ },
+ "subresource": {
+ "type": "string",
+ "description": "Sub-resource type, one of: tool, doc, execution, transition",
+ },
+ "arguments": {
+ "type": "object",
+ "description": "The arguments to pre-apply to the system call",
+ },
+ },
+ "required": ["resource", "operation"],
+ "additionalProperties": False,
+ },
+ }
+ }
+ )
+ elif tool.integration:
+ result.update(
+ {
+ "function": {
+ "name": tool.name,
+ "description": f"{tool.integration.provider} integration",
+ "parameters": {
+ "type": "object",
+ "properties": {
+ "provider": {
+ "type": "string",
+ "description": "The provider of the integration",
+ },
+ "method": {
+ "type": "string",
+ "description": "The specific method of the integration to call",
+ },
+ "setup": {
+ "type": "object",
+ "description": "The setup parameters the integration accepts",
+ },
+ "arguments": {
+ "type": "object",
+ "description": "The arguments to pre-apply to the integration call",
+ },
+ },
+ "required": ["provider"],
+ "additionalProperties": False,
+ },
+ }
+ }
+ )
+
elif tool.computer_20241022:
return {
"type": tool.type,
"name": tool.name,
- "display_width_px": tool.display_width_px,
- "display_height_px": tool.display_height_px,
- "display_number": tool.display_number,
+ "display_width_px": tool.computer_20241022.display_width_px,
+ "display_height_px": tool.computer_20241022.display_height_px,
+ "display_number": tool.computer_20241022.display_number,
}
elif tool.bash_20241022:
return {
@@ -47,9 +178,10 @@ def format_agent_tool(tool: Tool) -> dict:
"type": tool.type,
"name": tool.name,
}
- # TODO: Add integration | system | api_call tool types
else:
- return {}
+ raise ValueError(f"Unsupported tool: {tool}")
+
+ return result
@activity.defn
@@ -87,6 +219,14 @@ async def prompt_step(context: StepContext) -> StepOutcome:
direction="desc",
)
+ formatted_agent_tools = [
+ func_call for tool in agent_tools if (func_call := make_function_call(tool))
+ ]
+ tools_mapping = {
+ fmt_tool["function"]["name"]: orig_tool
+ for fmt_tool, orig_tool in zip(formatted_agent_tools, agent_tools)
+ }
+
if context.current_step.settings:
passed_settings: dict = context.current_step.settings.model_dump(
exclude_unset=True
@@ -98,20 +238,18 @@ async def prompt_step(context: StepContext) -> StepOutcome:
if isinstance(prompt, str):
prompt = [{"role": "user", "content": prompt}]
- # Format agent_tools for litellm
- formatted_agent_tools = [
- format_agent_tool(tool) for tool in agent_tools if format_agent_tool(tool)
- ]
-
- # Check if the model is Anthropic
- if "claude-3.5-sonnet-20241022" == agent_model.lower():
+ # Check if the model is Anthropic and bash/editor/computer use tool is included
+ if "claude" in agent_model.lower() and any(
+ tool.type in ["bash_20241022", "text_editor_20241022", "computer_20241022"]
+ for tool in agent_tools
+ ):
# Retrieve the API key from the environment variable
betas = [COMPUTER_USE_BETA_FLAG]
# Use Anthropic API directly
client = Anthropic(api_key=anthropic_api_key)
# Claude Response
- response = await client.beta.messages.create(
+ claude_response: BetaMessage = await client.beta.messages.create(
model=agent_model,
messages=prompt,
tools=formatted_agent_tools,
@@ -119,12 +257,47 @@ async def prompt_step(context: StepContext) -> StepOutcome:
betas=betas,
)
- return StepOutcome(
- output=response.model_dump()
- if hasattr(response, "model_dump")
- else response,
- next=None,
+ # FIXME: Handle multiple messages
+ if len(claude_response.content) != 1:
+ raise ApplicationError("Claude should only return one message")
+
+ content_block = claude_response.content[0]
+ stop_reason = claude_response.stop_reason
+
+ if stop_reason == "tool_use":
+ choice = Choices(
+ message=Message(
+ role="assistant",
+ content=None,
+ tool_calls=[
+ ChatCompletionMessageToolCall(
+ type="function",
+ function=Function(
+ name=content_block.name,
+ arguments=content_block.input,
+ ),
+ )
+ ],
+ ),
+ finish_reason="tool_calls",
+ )
+ else:
+ choice = Choices(
+ message=Message(
+ role="assistant",
+ content=content_block.text,
+ ),
+ finish_reason="stop",
+ )
+
+ response: ModelResponse = ModelResponse(
+ id=claude_response.id,
+ choices=[choice],
+ created=datetime.now().timestamp(),
+ model=claude_response.model,
+ object="text_completion",
)
+
else:
# Use litellm for other models
completion_data: dict = {
@@ -134,25 +307,54 @@ async def prompt_step(context: StepContext) -> StepOutcome:
**agent_default_settings,
**passed_settings,
}
-
extra_body = {
"cache": {"no-cache": debug},
}
- response = await litellm.acompletion(
+ response: ModelResponse = await litellm.acompletion(
**completion_data,
extra_body=extra_body,
)
- if context.current_step.unwrap:
- if response.choices[0].finish_reason == "tool_calls":
- raise ApplicationError("Tool calls cannot be unwrapped")
+ if context.current_step.unwrap:
+ if len(response.choices) != 1:
+ raise ApplicationError("Only one choice is supported")
- response = response.choices[0].message.content
+ choice = response.choices[0]
+ if choice.finish_reason == "tool_calls":
+ raise ApplicationError("Tool calls cannot be unwrapped")
return StepOutcome(
- output=response.model_dump()
- if hasattr(response, "model_dump")
- else response,
+ output=choice.message.content,
next=None,
)
+
+ # Re-convert tool-calls to integration/system calls if needed
+ response_as_dict = response.model_dump()
+
+ for choice in response_as_dict["choices"]:
+ if choice["finish_reason"] == "tool_calls":
+ calls = choice["message"]["tool_calls"]
+
+ for call in calls:
+ call_name = call["function"]["name"]
+ call_args = call["function"]["arguments"]
+
+ original_tool = tools_mapping.get(call_name)
+ if not original_tool:
+ raise ApplicationError(f"Tool {call_name} not found")
+
+ if original_tool.type == "function":
+ continue
+
+ call.pop("function")
+ call["type"] = original_tool.type
+ call[original_tool.type] = {
+ "name": call_name,
+ "arguments": call_args,
+ }
+
+ return StepOutcome(
+ output=response_as_dict,
+ next=None,
+ )
diff --git a/agents-api/agents_api/workflows/task_execution/__init__.py b/agents-api/agents_api/workflows/task_execution/__init__.py
index ea8b4fb22..520ae9c37 100644
--- a/agents-api/agents_api/workflows/task_execution/__init__.py
+++ b/agents-api/agents_api/workflows/task_execution/__init__.py
@@ -119,6 +119,82 @@
# Probably can be implemented much more efficiently
+async def run_api_call(tool_call: dict, context: StepContext):
+ call = tool_call["api_call"]
+ tool_name = call["name"]
+ arguments = call["arguments"]
+ apicall_spec = next((t for t in context.tools if t.name == tool_name), None)
+
+ if apicall_spec is None:
+ raise ApplicationError(f"Integration {tool_name} not found")
+
+ api_call = ApiCallDef(
+ method=apicall_spec.spec["method"],
+ url=apicall_spec.spec["url"],
+ headers=apicall_spec.spec["headers"],
+ follow_redirects=apicall_spec.spec["follow_redirects"],
+ )
+
+ if "json_" in arguments:
+ arguments["json"] = arguments["json_"]
+ del arguments["json_"]
+
+ return await workflow.execute_activity(
+ execute_api_call,
+ args=[
+ api_call,
+ arguments,
+ ],
+ schedule_to_close_timeout=timedelta(seconds=30 if debug or testing else 600),
+ )
+
+
+async def run_integration_call(tool_call: dict, context: StepContext):
+ call = tool_call["integration"]
+ tool_name = call["name"]
+ arguments = call["arguments"]
+ integration_spec = next((t for t in context.tools if t.name == tool_name), None)
+
+ if integration_spec is None:
+ raise ApplicationError(f"Integration {tool_name} not found")
+
+ # FIXME: Refactor this
+ # Tools that are not defined in the task spec have a different format
+ if isinstance(integration_spec, TaskToolDef):
+ provider = integration_spec.spec["provider"]
+ setup = integration_spec.spec["setup"]
+ method = integration_spec.spec["method"]
+ else:
+ provider = integration_spec.integration.provider
+ setup = integration_spec.integration.setup.model_dump()
+ method = integration_spec.integration.method
+
+ integration = BaseIntegrationDef(
+ provider=provider,
+ setup=setup,
+ method=method,
+ arguments=arguments,
+ )
+
+ return await workflow.execute_activity(
+ execute_integration,
+ args=[context, tool_name, integration, arguments],
+ schedule_to_close_timeout=timedelta(seconds=30 if debug or testing else 600),
+ retry_policy=DEFAULT_RETRY_POLICY,
+ )
+
+
+async def run_system_call(tool_call: dict, context: StepContext):
+ call = tool_call.get("system")
+
+ system_call = SystemDef(**call)
+ return await workflow.execute_activity(
+ execute_system,
+ args=[context, system_call],
+ schedule_to_close_timeout=timedelta(seconds=30 if debug or testing else 600),
+ )
+
+
# Main workflow definition
@workflow.defn
class TaskExecutionWorkflow:
@@ -395,13 +471,23 @@ async def run(
message = response["choices"][0]["message"]
tool_calls_input = message["tool_calls"]
- # Enter a wait-for-input step to ask the developer to run the tool calls
- tool_calls_results = await workflow.execute_activity(
- task_steps.raise_complete_async,
- args=[context, tool_calls_input],
- schedule_to_close_timeout=timedelta(days=31),
- retry_policy=DEFAULT_RETRY_POLICY,
- )
+ if tool_calls_input.get("api_call"):
+ tool_calls_results = await run_api_call(tool_calls_input, context)
+ elif tool_calls_input.get("integration"):
+ tool_calls_results = await run_integration_call(
+ tool_calls_input, context
+ )
+ elif tool_calls_input.get("system"):
+ tool_calls_results = await run_system_call(
+ tool_calls_input, context
+ )
+ else:
+ tool_calls_results = await workflow.execute_activity(
+ task_steps.raise_complete_async,
+ args=[context, tool_calls_input],
+ schedule_to_close_timeout=timedelta(days=31),
+ retry_policy=DEFAULT_RETRY_POLICY,
+ )
# Feed the tool call results back to the model
context.current_step.prompt.append(message)
@@ -453,96 +539,19 @@ async def run(
case ToolCallStep(), StepOutcome(output=tool_call) if tool_call[
"type"
] == "integration":
- call = tool_call["integration"]
- tool_name = call["name"]
- arguments = call["arguments"]
- integration_spec = next(
- (t for t in context.tools if t.name == tool_name), None
- )
-
- if integration_spec is None:
- raise ApplicationError(f"Integration {tool_name} not found")
-
- # FIXME: Refactor this
- # Tools that are not defined in the task spec have a different format
- if isinstance(integration_spec, TaskToolDef):
- provider = integration_spec.spec["provider"]
- setup = integration_spec.spec["setup"]
- method = integration_spec.spec["method"]
- else:
- provider = integration_spec.integration.provider
- setup = integration_spec.integration.setup.model_dump()
- method = integration_spec.integration.method
-
- integration = BaseIntegrationDef(
- provider=provider,
- setup=setup,
- method=method,
- arguments=arguments,
- )
-
- tool_call_response = await workflow.execute_activity(
- execute_integration,
- args=[context, tool_name, integration, arguments],
- schedule_to_close_timeout=timedelta(
- seconds=30 if debug or testing else 600
- ),
- retry_policy=DEFAULT_RETRY_POLICY,
- )
-
+ tool_call_response = await run_integration_call(tool_call, context)
state = PartialTransition(output=tool_call_response)
case ToolCallStep(), StepOutcome(output=tool_call) if tool_call[
"type"
] == "api_call":
- call = tool_call["api_call"]
- tool_name = call["name"]
- arguments = call["arguments"]
- apicall_spec = next(
- (t for t in context.tools if t.name == tool_name), None
- )
-
- if apicall_spec is None:
- raise ApplicationError(f"Integration {tool_name} not found")
-
- api_call = ApiCallDef(
- method=apicall_spec.spec["method"],
- url=apicall_spec.spec["url"],
- headers=apicall_spec.spec["headers"],
- follow_redirects=apicall_spec.spec["follow_redirects"],
- )
-
- if "json_" in arguments:
- arguments["json"] = arguments["json_"]
- del arguments["json_"]
-
- # Execute the API call using the `execute_api_call` function
- tool_call_response = await workflow.execute_activity(
- execute_api_call,
- args=[
- api_call,
- arguments,
- ],
- schedule_to_close_timeout=timedelta(
- seconds=30 if debug or testing else 600
- ),
- )
-
+ tool_call_response = await run_api_call(tool_call, context)
state = PartialTransition(output=tool_call_response)
case ToolCallStep(), StepOutcome(output=tool_call) if tool_call[
"type"
] == "system":
- call = tool_call.get("system")
-
- system_call = SystemDef(**call)
- tool_call_response = await workflow.execute_activity(
- execute_system,
- args=[context, system_call],
- schedule_to_close_timeout=timedelta(
- seconds=30 if debug or testing else 600
- ),
- )
+ tool_call_response = await run_system_call(tool_call, context)
state = PartialTransition(output=tool_call_response)
diff --git a/agents-api/poetry.lock b/agents-api/poetry.lock
index 373da6c0b..55e0837a8 100644
--- a/agents-api/poetry.lock
+++ b/agents-api/poetry.lock
@@ -1,4 +1,4 @@
-# This file is automatically @generated by Poetry 1.5.1 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"
@@ -498,17 +498,17 @@ numpy = ">=2.0.0,<3.0.0"
[[package]]
name = "boto3"
-version = "1.35.51"
+version = "1.35.52"
description = "The AWS SDK for Python"
optional = false
python-versions = ">=3.8"
files = [
- {file = "boto3-1.35.51-py3-none-any.whl", hash = "sha256:c922f6a18958af9d8af0489d6d8503b517029d8159b26aa4859a8294561c72e9"},
- {file = "boto3-1.35.51.tar.gz", hash = "sha256:a57c6c7012ecb40c43e565a6f7a891f39efa990ff933eab63cd456f7501c2731"},
+ {file = "boto3-1.35.52-py3-none-any.whl", hash = "sha256:ec0e797441db56af63b1150bba49f114b0f885f5d76c3b6dc18075f73030d2bb"},
+ {file = "boto3-1.35.52.tar.gz", hash = "sha256:68299da8ab2bb37cc843d61b9f4c1c9367438406cfd65a8f593afc7b3bfe226d"},
]
[package.dependencies]
-botocore = ">=1.35.51,<1.36.0"
+botocore = ">=1.35.52,<1.36.0"
jmespath = ">=0.7.1,<2.0.0"
s3transfer = ">=0.10.0,<0.11.0"
@@ -517,13 +517,13 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"]
[[package]]
name = "botocore"
-version = "1.35.51"
+version = "1.35.52"
description = "Low-level, data-driven core of boto 3."
optional = false
python-versions = ">=3.8"
files = [
- {file = "botocore-1.35.51-py3-none-any.whl", hash = "sha256:4d65b00111bd12b98e9f920ecab602cf619cc6a6d0be6e5dd53f517e4b92901c"},
- {file = "botocore-1.35.51.tar.gz", hash = "sha256:a9b3d1da76b3e896ad74605c01d88f596324a3337393d4bfbfa0d6c35822ca9c"},
+ {file = "botocore-1.35.52-py3-none-any.whl", hash = "sha256:cdbb5e43c9c3a977763e2a10d3b8b9c405d51279f9fcfd4ca4800763b22acba5"},
+ {file = "botocore-1.35.52.tar.gz", hash = "sha256:1fe7485ea13d638b089103addd818c12984ff1e4d208de15f180b1e25ad944c5"},
]
[package.dependencies]
@@ -965,10 +965,7 @@ 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\""},
- {version = ">=1.10.0,<2.4.0 || >2.4.0,<3.0", extras = ["email"], markers = "python_version >= \"3.11\" and python_version < \"4.0\""},
-]
+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]
@@ -1931,13 +1928,13 @@ referencing = ">=0.31.0"
[[package]]
name = "julep"
-version = "1.25.0"
+version = "1.26.0"
description = "The official Python library for the julep API"
optional = false
python-versions = ">=3.7"
files = [
- {file = "julep-1.25.0-py3-none-any.whl", hash = "sha256:a99e18310f4932b038a0a5450302381f201c8a86634eea543c408574f384932d"},
- {file = "julep-1.25.0.tar.gz", hash = "sha256:29d851b063ad29508f795742ac2c9f07e02fd0aedc2cb07d6c18600fd326f036"},
+ {file = "julep-1.26.0-py3-none-any.whl", hash = "sha256:0ffdeb86ea857163bddd172db82c298c67040e6a0dd4c04b7d46a47307b6d714"},
+ {file = "julep-1.26.0.tar.gz", hash = "sha256:9f13c6e48887497af5f6b95751cc5c266818ab22ce92f539d139857def4af4ec"},
]
[package.dependencies]
@@ -2250,13 +2247,13 @@ dev = ["Sphinx (>=5.1.1)", "black (==24.8.0)", "build (>=0.10.0)", "coverage[tom
[[package]]
name = "litellm"
-version = "1.51.1"
+version = "1.51.2"
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.51.1-py3-none-any.whl", hash = "sha256:1a389ca5b8ddd7a98d97ad229118d8323caeaaf9c1c5b79b1072edc2a18e773d"},
- {file = "litellm-1.51.1.tar.gz", hash = "sha256:ef9019bdd8bbad927e49696a300d03ea00b86721ebe7b62621c923f728e50d18"},
+ {file = "litellm-1.51.2-py3-none-any.whl", hash = "sha256:a8469d8b037a61fd7ba5041b2c42b7f1ba433d4953081b86c9916b6dd220e51c"},
+ {file = "litellm-1.51.2.tar.gz", hash = "sha256:a86e524b5cf9ad2863d835adb81fd92afd206a190c8629f3e86f652b5f405efa"},
]
[package.dependencies]
@@ -4789,110 +4786,110 @@ files = [
[[package]]
name = "simsimd"
-version = "5.9.7"
+version = "5.9.8"
description = "Portable mixed-precision BLAS-like vector math library for x86 and ARM"
optional = false
python-versions = "*"
files = [
- {file = "simsimd-5.9.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:938c3131ba92d9354c8067ce8415c918348eed60fd97bdec926c7878f3943d38"},
- {file = "simsimd-5.9.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:75d637166b74df2998b11b7f5b51bbf31dae027e13e446505c6b29abcca4c340"},
- {file = "simsimd-5.9.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f8c0c053102822524e388346e8928a884a98708fdaa752543aa00f4e4d4753ea"},
- {file = "simsimd-5.9.7-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f38b1c685095b046ba630856297e1f3c149cbc6765dacc3dd234475c72b4620"},
- {file = "simsimd-5.9.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:51567ebac7039601522170fd9036f8ee4f50bc864ca33dc5ec84612c257a5398"},
- {file = "simsimd-5.9.7-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e5af1d7b085e5da287c3c6bfd77192093d2f56632047f7b95cbf9f651348c134"},
- {file = "simsimd-5.9.7-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:512209d9be3d39782c68c3be6e8ccb003ef7ab239454009bf8127578c8762a1c"},
- {file = "simsimd-5.9.7-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:e0e0016a79a811fe7f9e979b7d2407735787974b57ab6579a4c74f6b7512afe2"},
- {file = "simsimd-5.9.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cbf42c563b91c275c006a5a61a95c2e98ef5b7a53588bee129a6d5aa925f4b6b"},
- {file = "simsimd-5.9.7-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:23740c8f5924ee970c2d5343dfc8b2c8e99377ff824c3ba35bbb612ae71214c2"},
- {file = "simsimd-5.9.7-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:5b7ecc290a8e1764089729b0d459345381fbecfecd8aea166e934b183290944e"},
- {file = "simsimd-5.9.7-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:92b67f87872f44ff1196238841fd50ca92ea7e199dc767707b544b3cccbc518a"},
- {file = "simsimd-5.9.7-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:389f4f7262c869a520136c0c5bb2c785b8f75c99739fc6c807bbf8dccaf0b79e"},
- {file = "simsimd-5.9.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c7ff96ab0e2bed6e8af747179c5c6fa1ed45e17f2f43dd95d45034cb752ff812"},
- {file = "simsimd-5.9.7-cp310-cp310-win32.whl", hash = "sha256:629e00a4ab649111f4132af9cdf294b3ea8169b31e40a2e1bc59c0ccabc0b8a5"},
- {file = "simsimd-5.9.7-cp310-cp310-win_amd64.whl", hash = "sha256:3647f2bb6554c95c1ae852a4dbf7ace4873523c51d9ec13d2a55f0c9dcc3697c"},
- {file = "simsimd-5.9.7-cp310-cp310-win_arm64.whl", hash = "sha256:f703c4a54a4442e7ca8459ed14aa4e49421d53fedaa84874880511a871e69761"},
- {file = "simsimd-5.9.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4c4ce63e53ab245601ba812a8d573ec0225256407de1d1a9f7c08b616965d94c"},
- {file = "simsimd-5.9.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:716782eca1ce1dcf33ad978c052b6cf1af2a0a78a4570a299a9bb47b1ea75e5b"},
- {file = "simsimd-5.9.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4497ae34f47de3574ec76f2efcb32270f9e7f22a506800adf6b2e686b9104188"},
- {file = "simsimd-5.9.7-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a42c3f00f9c77716d6fe9be1f6d2ae88342a0696dd3f5a2a353b00eb53dfca1b"},
- {file = "simsimd-5.9.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:606ce52cdae2643e441a887611ec9f9db0cc3e4f5f90e6e5fc1a659bb9188069"},
- {file = "simsimd-5.9.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:da3fd865ab7287b68af638a7d54a46e9b34832864f603d856b190126eae7025e"},
- {file = "simsimd-5.9.7-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:1f1e2b12b0a31656c6e42223fcddc90990f54f2c2f40a065bdff897a36edc064"},
- {file = "simsimd-5.9.7-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:2019ee8ef83ffce3f7bd980264b89fb29059f2e6e4d447cf640a41f12b6c1242"},
- {file = "simsimd-5.9.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8270d0f29f1db2989e8a55929557ca2b97650a685353774ddd6306c6422a3568"},
- {file = "simsimd-5.9.7-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:f7e94bc9295eb2538cdb85887c21864121a9df715ecba05455691801be14ac65"},
- {file = "simsimd-5.9.7-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1553c287eb6be6a3fe5688affbdf92fb5a18809512f4c711bbb0dedf11957e63"},
- {file = "simsimd-5.9.7-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:529c67718ba0db6da3c082d1249815063c67e3938884bc3c432e85dbd06a6c03"},
- {file = "simsimd-5.9.7-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:dc7e3170edda3b119b6ed03422d11ba546583564a7314db28e72b3c1acbcd6d1"},
- {file = "simsimd-5.9.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b17ae04b8b0ad909d92fa6411583a4b99788034a619a088e60a3e7b8ae85a81b"},
- {file = "simsimd-5.9.7-cp311-cp311-win32.whl", hash = "sha256:8ad9f94458e94d9263d36f98c2fdc022e0c3215ca57526cbf9dd6aa309eb87ba"},
- {file = "simsimd-5.9.7-cp311-cp311-win_amd64.whl", hash = "sha256:90f03656b96127a0ae4aef7038590663a7f40a3eeb219f63ba3cf9aff19f316b"},
- {file = "simsimd-5.9.7-cp311-cp311-win_arm64.whl", hash = "sha256:24cf4d7093e92a1f0be609a06361f87d504efd66f1f73d4433079e9981389b46"},
- {file = "simsimd-5.9.7-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:aa859dd9af0a2363bda031fafc96a3580cc6607c6e9b7a73842d5dbfe1f3b3ea"},
- {file = "simsimd-5.9.7-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5dbe91bf1035d95db8d93f9ffa1b037945477122c1d49de690a9ac2134201208"},
- {file = "simsimd-5.9.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:84647c7d83cd31d9755af0aa7d6e73b842364b3b19b76af01ea69246c09b11e6"},
- {file = "simsimd-5.9.7-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5559b485acd6b90cce94cf5e8463f4ad345ef8551b7db40f9dce1b2dfeb4f1b6"},
- {file = "simsimd-5.9.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1cdfd52cf44d5c3d1f9fed02b3724de790f7f34a7ba9e9368241e4385af84fd5"},
- {file = "simsimd-5.9.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7ba99fe25291fa20b71da409607c8ba97624f85d0bff6eb1e02d7f68546334fa"},
- {file = "simsimd-5.9.7-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:a5564348dec3f08de79a0851d03d744cff7efd0e10c5e410e89663e56a890f31"},
- {file = "simsimd-5.9.7-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:3a1224a0b85c642cfed341c6626e4a7c6d2d6bc5a290c312a041fd030f98c835"},
- {file = "simsimd-5.9.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4f49307f6e00bbd2694ccfeaf3726827fa53a9dd9f57707543633cf8974a897d"},
- {file = "simsimd-5.9.7-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:f4ace050efe35d911b2f73c8a5493296478de6d041cdd751df3947dd51425449"},
- {file = "simsimd-5.9.7-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:03c060fbb718c21e715ef485b27d3068d95cf38d3681d367f5bd3ca56d0a2a8b"},
- {file = "simsimd-5.9.7-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:004d7d05d06fd53ba24c258bccd5524cf17a162c19948a62035dbb8f8c927159"},
- {file = "simsimd-5.9.7-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e48ce99ba425eb32935f5ca8b7cb5cfaeeb8f8b2642827ef09181595a401ca6b"},
- {file = "simsimd-5.9.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:119c4395e1fad9f1da5d40654f77b3501afb8576e310e0c568e7b8c85a46432f"},
- {file = "simsimd-5.9.7-cp312-cp312-win32.whl", hash = "sha256:8c35f8f122ab33f325d7818fef88e21159d34f224e9a9c40abc4a60f986cb1aa"},
- {file = "simsimd-5.9.7-cp312-cp312-win_amd64.whl", hash = "sha256:49527d4ec509d08157dfab5dc2ab66398e086d56bb6a6a9b640fd107c0e7f736"},
- {file = "simsimd-5.9.7-cp312-cp312-win_arm64.whl", hash = "sha256:25ab98e9de3322a5adc29446557e8770d45c2e42d7ab288f04c4437df5c9ee30"},
- {file = "simsimd-5.9.7-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7e1f90ca2dd3efc7de3fe317dad36c67bc0b4ae67937d98962c87856271077ce"},
- {file = "simsimd-5.9.7-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dddfbfff7bf7b298f085722ca882c19df1dd1e5fec3385e80efd236185c8f984"},
- {file = "simsimd-5.9.7-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a7f14384d6d423f95bd31bccf2369f52769ae046e0417721a48f517a11757cae"},
- {file = "simsimd-5.9.7-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6cebe128e191a437fd7be2087442e6520a7f6acc15eb652b86cf533367c613c3"},
- {file = "simsimd-5.9.7-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:8b42da72779f1496b8a9dd63e101119bde32605535469783e3b78b1fa5443eea"},
- {file = "simsimd-5.9.7-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:cb2ffb7c026038d069a61249d609e5820ac71a1690de2ca6b5530394c2f1f5bd"},
- {file = "simsimd-5.9.7-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:edd26bc50214671df12bb4a4afc12006fef182ae6cbfab2b4041ff5e1b5dde04"},
- {file = "simsimd-5.9.7-cp37-cp37m-musllinux_1_2_armv7l.whl", hash = "sha256:58b4f355d7a1ce57e07892091f4d8fc9a80895ee2bcca5245537e0623e5ac693"},
- {file = "simsimd-5.9.7-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:12d105e88a2bdb5b6a8546c2d1f3e11a1f476928d1f9876c0ce9d41e1e64b4c1"},
- {file = "simsimd-5.9.7-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:d6e68b8ebf05a8ba317b6b976fc372645994bf196ef2206b775d093fc89a6855"},
- {file = "simsimd-5.9.7-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:2bef6b9bc9ce1e548b48c0f8ac59552d0fa53be4d3d424927db7e5e4f5941318"},
- {file = "simsimd-5.9.7-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:5a921b35ef507dccd86c41afb236d7c353a129f498559bb994893ff5a3850baa"},
- {file = "simsimd-5.9.7-cp37-cp37m-win32.whl", hash = "sha256:a4f78746f2e5f892e523fd22d84c93036f227a876a2ee5d8b8a53698d241ecf1"},
- {file = "simsimd-5.9.7-cp37-cp37m-win_amd64.whl", hash = "sha256:be3c6726a3e0cf90301a1172dbdbc8fa5f6e886b93bbc4d8aad2984081c87dfc"},
- {file = "simsimd-5.9.7-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:fff0935f5dcc84669a4091b36bf476d4bd30adef76fafe77814299fabbff2ab4"},
- {file = "simsimd-5.9.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8dc83551684cd547ca6aab662eda4b2e48aa7460dd8eb103fb6e9a453320971d"},
- {file = "simsimd-5.9.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c358756518243835a329da4eb3e454226562d8cc7a4b10eef8338753e41e9aa7"},
- {file = "simsimd-5.9.7-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb8d590664865cb607c9c540a5a09d77a109c4ef18bd68053fbe7b889721a4db"},
- {file = "simsimd-5.9.7-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4bf35cfb12d43f8901b66a7d1f055531426d27b47b31831873801d039b5d69c1"},
- {file = "simsimd-5.9.7-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:06244ea5ca32758de43680c1df1dac3e17e2d1164e572545769913318685a409"},
- {file = "simsimd-5.9.7-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:edf732a4bec34ead58e93f94c9fc8af6d14c709920825ca4533f25dbf9537906"},
- {file = "simsimd-5.9.7-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:6e8c93fd9d488fe3cc6ebf8de47473f41c7496b3781c6af1d2d9235dd4480f5f"},
- {file = "simsimd-5.9.7-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:fa214449499a02ff3a37173a53984b59f8915e31e9f2ae1a0e837c8a3c2def5b"},
- {file = "simsimd-5.9.7-cp38-cp38-musllinux_1_2_armv7l.whl", hash = "sha256:049e6472a6c8c667ec02328747acabbb9e17d543d15147fc9ebd56ddd94457be"},
- {file = "simsimd-5.9.7-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:ae812b06784791b3cdbf5690058f0d20b48dfca50e606fa647361229e00b5f9d"},
- {file = "simsimd-5.9.7-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:bbaba24ffc5a27853c7a295318b309a6486c4585c2015936f7693114181a8ca6"},
- {file = "simsimd-5.9.7-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:be5c6a747ead4b68634dfd7fc38ab3488fbdd5ead5ea68042644e6408be8364e"},
- {file = "simsimd-5.9.7-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:add53369966db2087f8d18aadeaf844480f1f8a53ba05d59306b83b05082c7b8"},
- {file = "simsimd-5.9.7-cp38-cp38-win32.whl", hash = "sha256:bc884c797cbcd02b2002d96dfd892d61e03c54d49f62014cb81e1f6174bc7594"},
- {file = "simsimd-5.9.7-cp38-cp38-win_amd64.whl", hash = "sha256:695ce472cbdb0bfc76f724f4cc45537bb9b47e5dd56f0204a3044c0c59f09630"},
- {file = "simsimd-5.9.7-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:cdd2eb4aaea4295dceeee019948d5cbf03b436e02db4c725762b3a8f84eeedd3"},
- {file = "simsimd-5.9.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:383ec8b0da899193280269474ee13b2393a5312da8d5a00c6d2241f00e6011a6"},
- {file = "simsimd-5.9.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:046b0a8e2124d99c72aa0bb1faaa6994c9877707cfae9d4edcb92bacd2e18d03"},
- {file = "simsimd-5.9.7-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c9c6b52460791ee39143aef8e99be10e0adc934bfdd22258ec121bfa385e26b"},
- {file = "simsimd-5.9.7-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7e991d112f061a106ee76786080b1316567e31dddd583cac331921eaf377b43b"},
- {file = "simsimd-5.9.7-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:be6e79473daeca18ba355d0296b8202d7602c7cc5d674ecc5e2b665530c5163e"},
- {file = "simsimd-5.9.7-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:42b92127c1c5a01ea8aa54b309f4a137e55660beb9706145bc8be51aa70abb04"},
- {file = "simsimd-5.9.7-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:f5449609732d2ab785f273069bcde228d68b9d168db30c85a006d8d6d01f83aa"},
- {file = "simsimd-5.9.7-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1df7750149c5762070506bc54000233f3328ea78a2287cd4af065d8426d3ab5f"},
- {file = "simsimd-5.9.7-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:8912ab45874d6f4eb4805c369380afebcfccf5944211d96d40f387c00cdc5bf5"},
- {file = "simsimd-5.9.7-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:2dec5916eebb83a3eb66bc596d68398f3b8f7c3c745c2d6ee50fefe3e419f5fa"},
- {file = "simsimd-5.9.7-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:67bb890385a765043ec092b5bdf2336df857eedbbae396d288aea07b54842409"},
- {file = "simsimd-5.9.7-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:49b9bc13ae251bdfdac6f527d37746d7ca411340d702e2e3736920f759201ae4"},
- {file = "simsimd-5.9.7-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:36cf86ca1e5f3ad91c9faa48db6835bbdc3284bad2d9d280a0e9bb1fcd781423"},
- {file = "simsimd-5.9.7-cp39-cp39-win32.whl", hash = "sha256:1e868e6dab93a1f0493e549e25d94948da1ce46f990cc84404421916024f3ab3"},
- {file = "simsimd-5.9.7-cp39-cp39-win_amd64.whl", hash = "sha256:2eb4332914095b935a725fa61493d8c1088ba53ae43c69cf514225a4de38d8a8"},
- {file = "simsimd-5.9.7-cp39-cp39-win_arm64.whl", hash = "sha256:760313023711b7a4d1c5969e0bdd933502a4639f150b324055571a80f11fceb9"},
- {file = "simsimd-5.9.7.tar.gz", hash = "sha256:7612f7087aee7c5415385089080fdcdd3c52b3988e33cdf1f779f26d8ab54ac8"},
+ {file = "simsimd-5.9.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4e702fc4a1035878f285e2a54f22d292c87df41c9518b74e7343cd897034af14"},
+ {file = "simsimd-5.9.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e9fba1f38286359e8cb74fafe59ae728628703eae76641ccf48b892cc2bdfc88"},
+ {file = "simsimd-5.9.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:55071a0ce4e5786ef3f44e3f52a656224ef84f4db4fb994b1eca5833481f19c1"},
+ {file = "simsimd-5.9.8-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:74490c4e744a35772cb7be6c2ac14c611762fc422076e1382c232a7de899976f"},
+ {file = "simsimd-5.9.8-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:448dfaa140a690e3137f047f32861c26af76800cc78a2fd510b107a6136e62f1"},
+ {file = "simsimd-5.9.8-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4003e9b9695b6b919da813fd82596a796c6a1efa4ca428eadd90eeb8333eb044"},
+ {file = "simsimd-5.9.8-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:129059da8eeb9aa93fd81c92dd42bc4968f442aec9f4c100c25112425a04c277"},
+ {file = "simsimd-5.9.8-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:ce7214c6fda1c2129bf29e27243c3f21ef637f5bd7e3ab24d94af9e95f19aa3b"},
+ {file = "simsimd-5.9.8-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8d9c77141145505cd588b15f25813dd7e8e7bf0cf9e7d26efa82d3ec75a0ae5a"},
+ {file = "simsimd-5.9.8-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:31462a283e47e8c6e74706b805bf71f3a103949d97b56324107b9ab8b4699633"},
+ {file = "simsimd-5.9.8-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:d99df805c99eb1111fa36a7ae4e2c9b89577fb5cc5d3852dbd111295019b9fa5"},
+ {file = "simsimd-5.9.8-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:8dd6ea8d5b177c837d5c81103ce3eff0740172c96b47beda782cf08893a254f2"},
+ {file = "simsimd-5.9.8-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:91b9e68af60cee3f21a123e8561b23dfec05a774404389c105ffd16dde0c5d25"},
+ {file = "simsimd-5.9.8-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8be720ca3f33b9d722b0cc90fe6fe4217c0f863aef439a16d4a63dd4053babd3"},
+ {file = "simsimd-5.9.8-cp310-cp310-win32.whl", hash = "sha256:8cad4cbb7238b686dbe00bb1ebd227ccad0e18c96e9282888e53f74799364a39"},
+ {file = "simsimd-5.9.8-cp310-cp310-win_amd64.whl", hash = "sha256:ef2810e3d5d42db898b99941177bde30cb399008feae4f3d60aa907875bbb4ea"},
+ {file = "simsimd-5.9.8-cp310-cp310-win_arm64.whl", hash = "sha256:b3393571802f547c7addfbfc748b5e2bc18e9000a048a20241830e923d9bfc40"},
+ {file = "simsimd-5.9.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:49a1aee2b946f2a964d109775bcb8fd104036eb4a54fdd3773e76a0d0f386bf5"},
+ {file = "simsimd-5.9.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e27eb0cca71688f6a1ec19d3f73cb37c056d0fb86d1ef5deb21036d8ca594484"},
+ {file = "simsimd-5.9.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:15db0075af6dba11dd17237a981246b35dc40ddaf9df8ebb7467e8f02bb845a7"},
+ {file = "simsimd-5.9.8-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a51e535e7ce3eea8bfddf596dabec9d37b52abceb90c5eca0eafdbad34d8e3b4"},
+ {file = "simsimd-5.9.8-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8992b92a2112a569360c675fa494d241b5be23b49e4fb1c575f07e1812f78d4"},
+ {file = "simsimd-5.9.8-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c95128606ea1dd1cd915e70d1d99ea1ad7dc8e5fc7e0698bcd87539f6f042ce0"},
+ {file = "simsimd-5.9.8-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:ec7f2151aa6257ea21426d8619a12a15a11dbfae655536847b29a1babf8cb8ae"},
+ {file = "simsimd-5.9.8-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:fa9b4142c765b0df060f737c42f84722f93d8c5d3a8b50263ca1f4b2bd9f7301"},
+ {file = "simsimd-5.9.8-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5ae654579afb17a77470876b9a050763af07576b8fa1b5456d443fc5ba039c3f"},
+ {file = "simsimd-5.9.8-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:8acc30436dec0f52501499eafb29557fb15e1378d10898b47fa3e103c90d2221"},
+ {file = "simsimd-5.9.8-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:924387ff7955957ab082670500ea220aa7e1f45405f72516cfa4b96ba09ee26d"},
+ {file = "simsimd-5.9.8-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:ac2ccd4898d0e1dcdd85674cefdc30d68cb8f7c79f1f0cdbfa9217067c2be7dd"},
+ {file = "simsimd-5.9.8-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:f2f733e724ce3471340aed8c5b07ce08d19c8d0c81027d08cee565e908f5729c"},
+ {file = "simsimd-5.9.8-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:934c72bce7fa26e84439e7cb3f9a0d1b66b9fbea361479ecfb8a362d0dcfcc13"},
+ {file = "simsimd-5.9.8-cp311-cp311-win32.whl", hash = "sha256:efce03705c4971399835758bdf7ab132c33964af8c69600e543180047b70d3dc"},
+ {file = "simsimd-5.9.8-cp311-cp311-win_amd64.whl", hash = "sha256:35c27ba5efbd08ddf83f760172ea1809ae6085c1dae6ec36f77788dea669a747"},
+ {file = "simsimd-5.9.8-cp311-cp311-win_arm64.whl", hash = "sha256:f549a251f8718b7a1642b27ef7f4a48138e7c7a21446b4b2bed665f0f32d1ec3"},
+ {file = "simsimd-5.9.8-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:75730ce28776dcdef764eb70f7be0944bf7dd7ac1fddb522f9748c1f4c70db9c"},
+ {file = "simsimd-5.9.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e63a7d98eda99fe6167268b904054407123391e05c35c7771e15b586215651ca"},
+ {file = "simsimd-5.9.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:48740b97ea2483a05aa42f034817949874019b1b76c7510f77a31d70f40bf5ca"},
+ {file = "simsimd-5.9.8-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9905a5b0db221bae8b68c7a7bb260e93c19576e830fa306d9a3bf5f6bec133ee"},
+ {file = "simsimd-5.9.8-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3d10fc44dbbc1b2aa5def76303496435507c670fb8d1ff8f394fda5e4e142173"},
+ {file = "simsimd-5.9.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:46aad42caefd51fcbcc9f363b38ce46833d736d19d961933b67d5bf2b00eca86"},
+ {file = "simsimd-5.9.8-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:a799332a2e87d7985f40b503caeb1b8a07b2b6a4b777afc75746a81f37e373fb"},
+ {file = "simsimd-5.9.8-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:6432c19203b7c74910d1c35e9fe39624a7d26c0a2f95ba4ad735a02b72a60442"},
+ {file = "simsimd-5.9.8-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5030b311a0805733c12c66ffb1ef635e3ace2a35ded63e602a714c0526d152ca"},
+ {file = "simsimd-5.9.8-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:7ad1e97dacdc34957aa79a713f2b38b259eb7236ccbef21c92d319b5442e3bab"},
+ {file = "simsimd-5.9.8-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b5f1c37931d6879db4b0b7977c55ad3ed34ee4ecc3df2985d820e94cc43cac16"},
+ {file = "simsimd-5.9.8-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c44cfa241d116dd3d236b563c7970b4c38ab72edc92c8133a5afb6263cc06d08"},
+ {file = "simsimd-5.9.8-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:df35c99507db1d7c06ded9cb91177bc422fabcf747e91a388def921f8f881ffd"},
+ {file = "simsimd-5.9.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:26039d91d2d5c6a0824bae7d1cd428b910c0159d6a0f34508a70c63c3b2e3780"},
+ {file = "simsimd-5.9.8-cp312-cp312-win32.whl", hash = "sha256:cabec13bd284ab6c3f542f3d8a5c85af9ce0c6d9b0ba4714082eeaa8c4d48e5b"},
+ {file = "simsimd-5.9.8-cp312-cp312-win_amd64.whl", hash = "sha256:dff96474b303ac775e6fd7839881fe2940f831e113226d387a51487b8154ec67"},
+ {file = "simsimd-5.9.8-cp312-cp312-win_arm64.whl", hash = "sha256:9d0091eb35c16b5135d7fdb4143c64c40b3e071f09bac404f54c77032675d266"},
+ {file = "simsimd-5.9.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d4da1f6e9e63d07461e1277cd6d48052f217d85213bfb55ddd16b7b359b39cd2"},
+ {file = "simsimd-5.9.8-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91a7baacd64528012480c70a65eca649874683756775143db1457a537d788399"},
+ {file = "simsimd-5.9.8-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:366f7c75ba6d7eb62b7e2fd4a82f1dd36251649b262120989488c1c343af5f3e"},
+ {file = "simsimd-5.9.8-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:835498a99cee1fe75d6bace6da541ba2e211e21a910ed4e10ac9c0dbb645116f"},
+ {file = "simsimd-5.9.8-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:d37da55942c77c59a7d86073682e597ebd709e834c5931f84e841af165d40c1b"},
+ {file = "simsimd-5.9.8-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:fb1e4de8d6b9c024e90e330707e70085fa67cafde4f82a5f5c19304d9cfa18dd"},
+ {file = "simsimd-5.9.8-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:3a5ff0c6682916df7e5d72eb45f8524a218d0ed0a888ee62a33789e3f2c800ef"},
+ {file = "simsimd-5.9.8-cp37-cp37m-musllinux_1_2_armv7l.whl", hash = "sha256:6aba4438a6d229eddd646bf2a2b1c0f5aa30eda572ee4bc2d8a2f3714b7693a5"},
+ {file = "simsimd-5.9.8-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:c588d7b45fbea17d10c90f64046f1982ff787e10ae918d9050ba4f470a8224de"},
+ {file = "simsimd-5.9.8-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:a195907d5ae4045c6c4d5f64c2cc4e71ca72e87989426ee5dcd8ebf0fffedac7"},
+ {file = "simsimd-5.9.8-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:bc3f166e6c0dfcef0976c054c48fb1cf2430af83d3d5610f1ca67db03749010d"},
+ {file = "simsimd-5.9.8-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:3941b25bf900069c26e0cb7b90ed2841521dd6ecaf02904d521529a50f2ffa03"},
+ {file = "simsimd-5.9.8-cp37-cp37m-win32.whl", hash = "sha256:a99dbb48590b10fa066ae0a25ae2dc81b3d41bc5f67090a55420a7666fb793eb"},
+ {file = "simsimd-5.9.8-cp37-cp37m-win_amd64.whl", hash = "sha256:5fd69768c5e6a4174648a460369afa6301200f21fb0572cb788d80a8d7e207f1"},
+ {file = "simsimd-5.9.8-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:906ea3bffaba8ffd6484ed42a140422d6cfe7c8fbac274f06c02de6688f4dfe2"},
+ {file = "simsimd-5.9.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:728ea940addbdf326b3ea8778622b1aa90842202a297281c5772e21670b55775"},
+ {file = "simsimd-5.9.8-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:437591683c623841ac7cc3960a663fc709d8f477f1026b5e6082ec864dc050e5"},
+ {file = "simsimd-5.9.8-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9dcd3061a1e9a6fb3dd685199635268818fefbeab853248db85aef20b813211"},
+ {file = "simsimd-5.9.8-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:10ac2069068675ff44b8575149633ad57f7bd8f93c09f6b3d4f51ad53255e1bb"},
+ {file = "simsimd-5.9.8-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:00a286ebd3a1ae78639a8433c66811aab014db3275513dd211d1a4f08515d01d"},
+ {file = "simsimd-5.9.8-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:85afbd74ec6e0fa009964484e22139f5a96c50aefe619fc62e0f1952fd8daed8"},
+ {file = "simsimd-5.9.8-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:497b76a7e43d1e4303584580805bdb22f7b55abc1d86dd99ad9f11dbd6c52b11"},
+ {file = "simsimd-5.9.8-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ddcdfceb832f868eb7bbf5f641288d62fe5e7768604e15f30ded2411aded61c3"},
+ {file = "simsimd-5.9.8-cp38-cp38-musllinux_1_2_armv7l.whl", hash = "sha256:e2b475559654d02d49b904bca09d4bc144abab480f92418defcf4e98d54b92c5"},
+ {file = "simsimd-5.9.8-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:449c5b4b3c41fc97b4f09747630bc55b22725f5567bdd0b521b5090153418196"},
+ {file = "simsimd-5.9.8-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:43b344708c6bb34145a2d233fd5ceb935b130ec2c1114e585afc043d3f4124f3"},
+ {file = "simsimd-5.9.8-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:b0239592ffe6bbfe2bbba4760dbd584a6d97abb9a16048cb0a10198ed64cf7e8"},
+ {file = "simsimd-5.9.8-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:b553b52215fda8aa46bb0e8caa38618c4547087ea05c3bff5c25e32523fcd450"},
+ {file = "simsimd-5.9.8-cp38-cp38-win32.whl", hash = "sha256:803f73796c66d88cea055dcde8f28f58afd0f5b3e3794b1eaf7c16cfc08b9277"},
+ {file = "simsimd-5.9.8-cp38-cp38-win_amd64.whl", hash = "sha256:0f4214d4635d8244d07e14332e728eb7e46a98a2570d53dfcaba8762744d5192"},
+ {file = "simsimd-5.9.8-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:be2e77a94095c17eb2810a1cf1e3327999b4a56c322ce5e9c03521d7414baf84"},
+ {file = "simsimd-5.9.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7f4457811438d3cd061c9619eb7605ad8ea793f9c95007aea4bb6a4c57d2d236"},
+ {file = "simsimd-5.9.8-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c39c7f5bb5dc871eb137b931738335fa0f06933563fdc4cf2db1819d8c5ba093"},
+ {file = "simsimd-5.9.8-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8bcee9a1f93312f43824d1a6b18d5a243ac7caab49d7492a55a632afef393c47"},
+ {file = "simsimd-5.9.8-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:03d44ea01e47eb147d9e397e82da91edc1e78f7c43536af3f525b6b39234e5b0"},
+ {file = "simsimd-5.9.8-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:220591a93070d965a52a87b3206673cbae1b5b68c81ed9ab4a7e15572cd6d9b2"},
+ {file = "simsimd-5.9.8-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:f8a5bcda2c8a057dae7ac7eca099cb5c9534ff59fbc10010627463ae5597ee70"},
+ {file = "simsimd-5.9.8-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:4870bc02ce7efc0fd129aa0c66076dd9a81369bfe876a41561413c76ce5ceaba"},
+ {file = "simsimd-5.9.8-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:cb9624ca970ec449416a52012059974ff5a991db8390f1d5934aca8d13bacc39"},
+ {file = "simsimd-5.9.8-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:8f674115df62f59c2f1012e5fe182b0c6ed092cfc734375d1da976e7cb854c04"},
+ {file = "simsimd-5.9.8-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:f16ed7a2a7c7524c495b9a440b0b059332560af63b12295e44e291e6cbf05285"},
+ {file = "simsimd-5.9.8-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ed840763b455adbd893e9385e723981137d23a3dc8ffadcd3e773ad502796870"},
+ {file = "simsimd-5.9.8-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:bd09b0f1a3f12402682e3b6a33ab26c37859e45c8e7e3487a07c73227b6b45a3"},
+ {file = "simsimd-5.9.8-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:42e3ab561110c6be84644381387f9dee75f3922fd9b444a602cbe4dfa4a51df6"},
+ {file = "simsimd-5.9.8-cp39-cp39-win32.whl", hash = "sha256:9ef76f86a041f1e82f8dd7364e71de54b666e6ebbbbc00c0990951cadc4324d9"},
+ {file = "simsimd-5.9.8-cp39-cp39-win_amd64.whl", hash = "sha256:dd27b0c4a72a125cb884df8e0b32c36ca533a17599a593f607a9f7f020d89c88"},
+ {file = "simsimd-5.9.8-cp39-cp39-win_arm64.whl", hash = "sha256:a45b4aeed230876c52a312507cd25f1897d933a18b8f3a56b5a50eb54d7434bc"},
+ {file = "simsimd-5.9.8.tar.gz", hash = "sha256:da61db9ee910b8029ade91fc52107d6d41f891eeb7cb57f70504ac593aafd2a1"},
]
[[package]]
@@ -6096,93 +6093,93 @@ files = [
[[package]]
name = "yarl"
-version = "1.17.0"
+version = "1.17.1"
description = "Yet another URL library"
optional = false
python-versions = ">=3.9"
files = [
- {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"},
+ {file = "yarl-1.17.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b1794853124e2f663f0ea54efb0340b457f08d40a1cef78edfa086576179c91"},
+ {file = "yarl-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:fbea1751729afe607d84acfd01efd95e3b31db148a181a441984ce9b3d3469da"},
+ {file = "yarl-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8ee427208c675f1b6e344a1f89376a9613fc30b52646a04ac0c1f6587c7e46ec"},
+ {file = "yarl-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3b74ff4767d3ef47ffe0cd1d89379dc4d828d4873e5528976ced3b44fe5b0a21"},
+ {file = "yarl-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:62a91aefff3d11bf60e5956d340eb507a983a7ec802b19072bb989ce120cd948"},
+ {file = "yarl-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:846dd2e1243407133d3195d2d7e4ceefcaa5f5bf7278f0a9bda00967e6326b04"},
+ {file = "yarl-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e844be8d536afa129366d9af76ed7cb8dfefec99f5f1c9e4f8ae542279a6dc3"},
+ {file = "yarl-1.17.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cc7c92c1baa629cb03ecb0c3d12564f172218fb1739f54bf5f3881844daadc6d"},
+ {file = "yarl-1.17.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ae3476e934b9d714aa8000d2e4c01eb2590eee10b9d8cd03e7983ad65dfbfcba"},
+ {file = "yarl-1.17.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:c7e177c619342e407415d4f35dec63d2d134d951e24b5166afcdfd1362828e17"},
+ {file = "yarl-1.17.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:64cc6e97f14cf8a275d79c5002281f3040c12e2e4220623b5759ea7f9868d6a5"},
+ {file = "yarl-1.17.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:84c063af19ef5130084db70ada40ce63a84f6c1ef4d3dbc34e5e8c4febb20822"},
+ {file = "yarl-1.17.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:482c122b72e3c5ec98f11457aeb436ae4aecca75de19b3d1de7cf88bc40db82f"},
+ {file = "yarl-1.17.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:380e6c38ef692b8fd5a0f6d1fa8774d81ebc08cfbd624b1bca62a4d4af2f9931"},
+ {file = "yarl-1.17.1-cp310-cp310-win32.whl", hash = "sha256:16bca6678a83657dd48df84b51bd56a6c6bd401853aef6d09dc2506a78484c7b"},
+ {file = "yarl-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:561c87fea99545ef7d692403c110b2f99dced6dff93056d6e04384ad3bc46243"},
+ {file = "yarl-1.17.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:cbad927ea8ed814622305d842c93412cb47bd39a496ed0f96bfd42b922b4a217"},
+ {file = "yarl-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fca4b4307ebe9c3ec77a084da3a9d1999d164693d16492ca2b64594340999988"},
+ {file = "yarl-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ff5c6771c7e3511a06555afa317879b7db8d640137ba55d6ab0d0c50425cab75"},
+ {file = "yarl-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b29beab10211a746f9846baa39275e80034e065460d99eb51e45c9a9495bcca"},
+ {file = "yarl-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a52a1ffdd824fb1835272e125385c32fd8b17fbdefeedcb4d543cc23b332d74"},
+ {file = "yarl-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:58c8e9620eb82a189c6c40cb6b59b4e35b2ee68b1f2afa6597732a2b467d7e8f"},
+ {file = "yarl-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d216e5d9b8749563c7f2c6f7a0831057ec844c68b4c11cb10fc62d4fd373c26d"},
+ {file = "yarl-1.17.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:881764d610e3269964fc4bb3c19bb6fce55422828e152b885609ec176b41cf11"},
+ {file = "yarl-1.17.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8c79e9d7e3d8a32d4824250a9c6401194fb4c2ad9a0cec8f6a96e09a582c2cc0"},
+ {file = "yarl-1.17.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:299f11b44d8d3a588234adbe01112126010bd96d9139c3ba7b3badd9829261c3"},
+ {file = "yarl-1.17.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:cc7d768260f4ba4ea01741c1b5fe3d3a6c70eb91c87f4c8761bbcce5181beafe"},
+ {file = "yarl-1.17.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:de599af166970d6a61accde358ec9ded821234cbbc8c6413acfec06056b8e860"},
+ {file = "yarl-1.17.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:2b24ec55fad43e476905eceaf14f41f6478780b870eda5d08b4d6de9a60b65b4"},
+ {file = "yarl-1.17.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9fb815155aac6bfa8d86184079652c9715c812d506b22cfa369196ef4e99d1b4"},
+ {file = "yarl-1.17.1-cp311-cp311-win32.whl", hash = "sha256:7615058aabad54416ddac99ade09a5510cf77039a3b903e94e8922f25ed203d7"},
+ {file = "yarl-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:14bc88baa44e1f84164a392827b5defb4fa8e56b93fecac3d15315e7c8e5d8b3"},
+ {file = "yarl-1.17.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:327828786da2006085a4d1feb2594de6f6d26f8af48b81eb1ae950c788d97f61"},
+ {file = "yarl-1.17.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cc353841428d56b683a123a813e6a686e07026d6b1c5757970a877195f880c2d"},
+ {file = "yarl-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c73df5b6e8fabe2ddb74876fb82d9dd44cbace0ca12e8861ce9155ad3c886139"},
+ {file = "yarl-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bdff5e0995522706c53078f531fb586f56de9c4c81c243865dd5c66c132c3b5"},
+ {file = "yarl-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:06157fb3c58f2736a5e47c8fcbe1afc8b5de6fb28b14d25574af9e62150fcaac"},
+ {file = "yarl-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1654ec814b18be1af2c857aa9000de7a601400bd4c9ca24629b18486c2e35463"},
+ {file = "yarl-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f6595c852ca544aaeeb32d357e62c9c780eac69dcd34e40cae7b55bc4fb1147"},
+ {file = "yarl-1.17.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:459e81c2fb920b5f5df744262d1498ec2c8081acdcfe18181da44c50f51312f7"},
+ {file = "yarl-1.17.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7e48cdb8226644e2fbd0bdb0a0f87906a3db07087f4de77a1b1b1ccfd9e93685"},
+ {file = "yarl-1.17.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:d9b6b28a57feb51605d6ae5e61a9044a31742db557a3b851a74c13bc61de5172"},
+ {file = "yarl-1.17.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e594b22688d5747b06e957f1ef822060cb5cb35b493066e33ceac0cf882188b7"},
+ {file = "yarl-1.17.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5f236cb5999ccd23a0ab1bd219cfe0ee3e1c1b65aaf6dd3320e972f7ec3a39da"},
+ {file = "yarl-1.17.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:a2a64e62c7a0edd07c1c917b0586655f3362d2c2d37d474db1a509efb96fea1c"},
+ {file = "yarl-1.17.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d0eea830b591dbc68e030c86a9569826145df485b2b4554874b07fea1275a199"},
+ {file = "yarl-1.17.1-cp312-cp312-win32.whl", hash = "sha256:46ddf6e0b975cd680eb83318aa1d321cb2bf8d288d50f1754526230fcf59ba96"},
+ {file = "yarl-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:117ed8b3732528a1e41af3aa6d4e08483c2f0f2e3d3d7dca7cf538b3516d93df"},
+ {file = "yarl-1.17.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:5d1d42556b063d579cae59e37a38c61f4402b47d70c29f0ef15cee1acaa64488"},
+ {file = "yarl-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c0167540094838ee9093ef6cc2c69d0074bbf84a432b4995835e8e5a0d984374"},
+ {file = "yarl-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2f0a6423295a0d282d00e8701fe763eeefba8037e984ad5de44aa349002562ac"},
+ {file = "yarl-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5b078134f48552c4d9527db2f7da0b5359abd49393cdf9794017baec7506170"},
+ {file = "yarl-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d401f07261dc5aa36c2e4efc308548f6ae943bfff20fcadb0a07517a26b196d8"},
+ {file = "yarl-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b5f1ac7359e17efe0b6e5fec21de34145caef22b260e978336f325d5c84e6938"},
+ {file = "yarl-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f63d176a81555984e91f2c84c2a574a61cab7111cc907e176f0f01538e9ff6e"},
+ {file = "yarl-1.17.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9e275792097c9f7e80741c36de3b61917aebecc08a67ae62899b074566ff8556"},
+ {file = "yarl-1.17.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:81713b70bea5c1386dc2f32a8f0dab4148a2928c7495c808c541ee0aae614d67"},
+ {file = "yarl-1.17.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:aa46dce75078fceaf7cecac5817422febb4355fbdda440db55206e3bd288cfb8"},
+ {file = "yarl-1.17.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:1ce36ded585f45b1e9bb36d0ae94765c6608b43bd2e7f5f88079f7a85c61a4d3"},
+ {file = "yarl-1.17.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:2d374d70fdc36f5863b84e54775452f68639bc862918602d028f89310a034ab0"},
+ {file = "yarl-1.17.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:2d9f0606baaec5dd54cb99667fcf85183a7477f3766fbddbe3f385e7fc253299"},
+ {file = "yarl-1.17.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b0341e6d9a0c0e3cdc65857ef518bb05b410dbd70d749a0d33ac0f39e81a4258"},
+ {file = "yarl-1.17.1-cp313-cp313-win32.whl", hash = "sha256:2e7ba4c9377e48fb7b20dedbd473cbcbc13e72e1826917c185157a137dac9df2"},
+ {file = "yarl-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:949681f68e0e3c25377462be4b658500e85ca24323d9619fdc41f68d46a1ffda"},
+ {file = "yarl-1.17.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8994b29c462de9a8fce2d591028b986dbbe1b32f3ad600b2d3e1c482c93abad6"},
+ {file = "yarl-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f9cbfbc5faca235fbdf531b93aa0f9f005ec7d267d9d738761a4d42b744ea159"},
+ {file = "yarl-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b40d1bf6e6f74f7c0a567a9e5e778bbd4699d1d3d2c0fe46f4b717eef9e96b95"},
+ {file = "yarl-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f5efe0661b9fcd6246f27957f6ae1c0eb29bc60552820f01e970b4996e016004"},
+ {file = "yarl-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b5c4804e4039f487e942c13381e6c27b4b4e66066d94ef1fae3f6ba8b953f383"},
+ {file = "yarl-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b5d6a6c9602fd4598fa07e0389e19fe199ae96449008d8304bf5d47cb745462e"},
+ {file = "yarl-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f4c9156c4d1eb490fe374fb294deeb7bc7eaccda50e23775b2354b6a6739934"},
+ {file = "yarl-1.17.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6324274b4e0e2fa1b3eccb25997b1c9ed134ff61d296448ab8269f5ac068c4c"},
+ {file = "yarl-1.17.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:d8a8b74d843c2638f3864a17d97a4acda58e40d3e44b6303b8cc3d3c44ae2d29"},
+ {file = "yarl-1.17.1-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:7fac95714b09da9278a0b52e492466f773cfe37651cf467a83a1b659be24bf71"},
+ {file = "yarl-1.17.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:c180ac742a083e109c1a18151f4dd8675f32679985a1c750d2ff806796165b55"},
+ {file = "yarl-1.17.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:578d00c9b7fccfa1745a44f4eddfdc99d723d157dad26764538fbdda37209857"},
+ {file = "yarl-1.17.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:1a3b91c44efa29e6c8ef8a9a2b583347998e2ba52c5d8280dbd5919c02dfc3b5"},
+ {file = "yarl-1.17.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a7ac5b4984c468ce4f4a553df281450df0a34aefae02e58d77a0847be8d1e11f"},
+ {file = "yarl-1.17.1-cp39-cp39-win32.whl", hash = "sha256:7294e38f9aa2e9f05f765b28ffdc5d81378508ce6dadbe93f6d464a8c9594473"},
+ {file = "yarl-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:eb6dce402734575e1a8cc0bb1509afca508a400a57ce13d306ea2c663bad1138"},
+ {file = "yarl-1.17.1-py3-none-any.whl", hash = "sha256:f1790a4b1e8e8e028c391175433b9c8122c39b46e1663228158e61e6f915bf06"},
+ {file = "yarl-1.17.1.tar.gz", hash = "sha256:067a63fcfda82da6b198fa73079b1ca40b7c9b7994995b6ee38acda728b64d47"},
]
[package.dependencies]