diff --git a/.github/workflows/python-integration-tests.yml b/.github/workflows/python-integration-tests.yml
index 7980d89b15a1..ceb25b9f8d9c 100644
--- a/.github/workflows/python-integration-tests.yml
+++ b/.github/workflows/python-integration-tests.yml
@@ -121,21 +121,6 @@ jobs:
- name: Install dependencies
run: |
uv sync --all-extras --dev
- - name: Install Ollama
- if: matrix.os == 'ubuntu-latest'
- run: |
- curl -fsSL https://ollama.com/install.sh | sh
- ollama serve &
- sleep 5
- - name: Pull model in Ollama
- if: matrix.os == 'ubuntu-latest'
- run: |
- ollama pull ${{ vars.OLLAMA_CHAT_MODEL_ID }}
- ollama pull ${{ vars.OLLAMA_CHAT_MODEL_ID_IMAGE }}
- ollama pull ${{ vars.OLLAMA_CHAT_MODEL_ID_TOOL_CALL }}
- ollama pull ${{ vars.OLLAMA_TEXT_MODEL_ID }}
- ollama pull ${{ vars.OLLAMA_EMBEDDING_MODEL_ID }}
- ollama list
- name: Google auth
uses: google-github-actions/auth@v2
with:
@@ -158,10 +143,59 @@ jobs:
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: Run Integration Tests
id: run_tests_ai_services
- timeout-minutes: 25
shell: bash
run: |
- uv run pytest -v -n logical --dist loadfile --dist worksteal ./tests/integration/completions ./tests/integration/embeddings ./tests/samples ./tests/integration/cross_language
+ uv run pytest -v --log-cli-level=INFO --durations=20 -n logical --dist loadfile --dist worksteal -m "not ollama" ./tests/integration/completions ./tests/integration/embeddings ./tests/samples ./tests/integration/cross_language
+
+ python-merge-gate-ollama:
+ name: Python Pre-Merge Integration Tests - Ollama
+ needs: paths-filter
+ if: github.event_name != 'pull_request' && github.event_name != 'schedule' && needs.paths-filter.outputs.pythonChanges == 'true'
+ strategy:
+ max-parallel: 1
+ fail-fast: false
+ matrix:
+ python-version: ["3.11"]
+ os: [ubuntu-latest]
+ defaults:
+ run:
+ working-directory: python
+ runs-on: ${{ matrix.os }}
+ environment: "integration"
+ env:
+ UV_PYTHON: ${{ matrix.python-version }}
+ COMPLETIONS_CONCEPT_SAMPLE: "true"
+ steps:
+ - uses: actions/checkout@v4
+ - name: Set up uv
+ uses: astral-sh/setup-uv@v4
+ with:
+ version: "0.5.x"
+ enable-cache: true
+ cache-suffix: ${{ runner.os }}-${{ matrix.python-version }}
+ - name: Install dependencies
+ run: |
+ uv sync --all-extras --dev
+ - name: Install Ollama
+ if: matrix.os == 'ubuntu-latest'
+ run: |
+ curl -fsSL https://ollama.com/install.sh | sh
+ ollama serve &
+ sleep 5
+ - name: Pull model in Ollama
+ if: matrix.os == 'ubuntu-latest'
+ run: |
+ ollama pull ${{ vars.OLLAMA_CHAT_MODEL_ID }}
+ ollama pull ${{ vars.OLLAMA_CHAT_MODEL_ID_IMAGE }}
+ ollama pull ${{ vars.OLLAMA_CHAT_MODEL_ID_TOOL_CALL }}
+ ollama pull ${{ vars.OLLAMA_TEXT_MODEL_ID }}
+ ollama pull ${{ vars.OLLAMA_EMBEDDING_MODEL_ID }}
+ ollama list
+ - name: Run Integration Tests
+ id: run_tests_ai_services
+ shell: bash
+ run: |
+ uv run pytest -v --log-cli-level=INFO --durations=0 -n logical --dist loadfile --dist worksteal -m ollama --timeout=300 ./tests/integration/completions ./tests/integration/embeddings
python-merge-gate-memory:
name: Python Pre-Merge Integration Tests - Memory (incl samples using those)
@@ -215,10 +249,10 @@ jobs:
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: Run Integration Tests
id: run_tests_memory
- timeout-minutes: 10
+ timeout-minutes: 15
shell: bash
run: |
- uv run pytest -v -n logical --dist loadfile --dist worksteal ./tests/integration/memory ./tests/samples
+ uv run pytest -v --log-cli-level=INFO --durations=20 -n logical --dist loadfile --dist worksteal ./tests/integration/memory ./tests/samples
python-integration-tests:
name: Python Integration Tests - Scheduled run
@@ -352,6 +386,7 @@ jobs:
needs:
[
python-merge-gate-ai-services,
+ python-merge-gate-ollama,
python-merge-gate-memory,
python-integration-tests,
]
diff --git a/.github/workflows/python-unit-tests.yml b/.github/workflows/python-unit-tests.yml
index 745572c274b0..ef64067d7412 100644
--- a/.github/workflows/python-unit-tests.yml
+++ b/.github/workflows/python-unit-tests.yml
@@ -48,7 +48,7 @@ jobs:
enable-cache: true
cache-suffix: ${{ runner.os }}-${{ matrix.python-version }}
- name: Install the project
- run: uv sync --all-extras --dev
+ run: uv sync --all-extras --dev -U --prerelease=if-necessary-or-explicit
- name: Test with pytest
env:
PYTHON_GIL: ${{ matrix.gil }}
diff --git a/python/pyproject.toml b/python/pyproject.toml
index 49c47f31a0da..3dd580cdf470 100644
--- a/python/pyproject.toml
+++ b/python/pyproject.toml
@@ -25,7 +25,7 @@ classifiers = [
dependencies = [
"aiohttp ~= 3.8",
"cloudevents ~=1.0",
- "pydantic >=2.0,<2.10",
+ "pydantic >=2.0,<2.11,!=2.10.0,!=2.10.1,!=2.10.2,!=2.10.3",
"pydantic-settings ~= 2.0",
"defusedxml ~= 0.7",
# azure identity
@@ -133,11 +133,12 @@ dev-dependencies = [
"pytest ~= 8.2",
"pytest-xdist[psutil] ~= 3.6",
"pytest-cov >= 5.0",
- "pytest-asyncio ~= 0.23",
+ "pytest-asyncio ~= 0.24",
+ "pytest-timeout>=2.3.1",
"snoop ~= 0.4",
"mypy >= 1.10",
"types-PyYAML ~= 6.0.12.20240311",
- "ruff ~= 0.7"
+ "ruff ~= 0.7",
]
environments = [
"sys_platform == 'darwin'",
@@ -148,10 +149,15 @@ environments = [
[tool.pytest.ini_options]
testpaths = 'tests'
addopts = "-ra -q -r fEX"
+asyncio_mode = "auto"
asyncio_default_fixture_loop_scope = "function"
filterwarnings = [
'ignore:.*FunctionChoiceBehavior.*:DeprecationWarning'
]
+timeout = 120
+markers = [
+ "ollama: mark a test as requiring the Ollama service (use \"not ollama\" to skip those tests)"
+]
[tool.ruff]
line-length = 120
diff --git a/python/samples/learn_resources/plugin.py b/python/samples/learn_resources/plugin.py
index c9395f03f198..5a1888eae061 100644
--- a/python/samples/learn_resources/plugin.py
+++ b/python/samples/learn_resources/plugin.py
@@ -3,7 +3,6 @@
import asyncio
from typing import Annotated
-from samples.sk_service_configurator import add_service
from semantic_kernel import Kernel
from semantic_kernel.functions import kernel_function
@@ -41,10 +40,6 @@ async def main():
# Initialize the kernel
kernel = Kernel()
- # Add the service to the kernel
- # use_chat: True to use chat completion, False to use text completion
- kernel = add_service(kernel=kernel, use_chat=True)
-
light_plugin = kernel.add_plugin(
LightPlugin(),
plugin_name="LightPlugin",
diff --git a/python/semantic_kernel/functions/kernel_function.py b/python/semantic_kernel/functions/kernel_function.py
index 52ac84a68030..04c95e1dc873 100644
--- a/python/semantic_kernel/functions/kernel_function.py
+++ b/python/semantic_kernel/functions/kernel_function.py
@@ -3,7 +3,7 @@
import logging
import time
from abc import abstractmethod
-from collections.abc import AsyncGenerator, Callable
+from collections.abc import AsyncGenerator, Callable, Mapping, Sequence
from copy import copy, deepcopy
from inspect import isasyncgen, isgenerator
from typing import TYPE_CHECKING, Any
@@ -108,7 +108,7 @@ def from_prompt(
prompt_template: "PromptTemplateBase | None " = None,
prompt_template_config: "PromptTemplateConfig | None" = None,
prompt_execution_settings: (
- "PromptExecutionSettings | list[PromptExecutionSettings] | dict[str, PromptExecutionSettings] | None"
+ "PromptExecutionSettings | Sequence[PromptExecutionSettings] | Mapping[str, PromptExecutionSettings] | None"
) = None,
) -> "KernelFunctionFromPrompt":
"""Create a new instance of the KernelFunctionFromPrompt class."""
diff --git a/python/semantic_kernel/functions/kernel_function_extension.py b/python/semantic_kernel/functions/kernel_function_extension.py
index 97f5cf527fce..6be93259122d 100644
--- a/python/semantic_kernel/functions/kernel_function_extension.py
+++ b/python/semantic_kernel/functions/kernel_function_extension.py
@@ -2,6 +2,7 @@
import logging
from abc import ABC
+from collections.abc import Mapping, Sequence
from functools import singledispatchmethod
from typing import TYPE_CHECKING, Any, Literal
@@ -126,7 +127,7 @@ def add_function(
prompt: str | None = None,
prompt_template_config: PromptTemplateConfig | None = None,
prompt_execution_settings: (
- PromptExecutionSettings | list[PromptExecutionSettings] | dict[str, PromptExecutionSettings] | None
+ PromptExecutionSettings | Sequence[PromptExecutionSettings] | Mapping[str, PromptExecutionSettings] | None
) = None,
template_format: TEMPLATE_FORMAT_TYPES = KERNEL_TEMPLATE_FORMAT_NAME,
prompt_template: PromptTemplateBase | None = None,
diff --git a/python/semantic_kernel/functions/kernel_function_from_prompt.py b/python/semantic_kernel/functions/kernel_function_from_prompt.py
index 8a2cdd1b63b3..ecba3e9aa96c 100644
--- a/python/semantic_kernel/functions/kernel_function_from_prompt.py
+++ b/python/semantic_kernel/functions/kernel_function_from_prompt.py
@@ -2,7 +2,7 @@
import logging
import os
-from collections.abc import AsyncGenerator
+from collections.abc import AsyncGenerator, Mapping, Sequence
from html import unescape
from typing import TYPE_CHECKING, Any
@@ -64,8 +64,8 @@ def __init__(
prompt_template: PromptTemplateBase | None = None,
prompt_template_config: PromptTemplateConfig | None = None,
prompt_execution_settings: PromptExecutionSettings
- | list[PromptExecutionSettings]
- | dict[str, PromptExecutionSettings]
+ | Sequence[PromptExecutionSettings]
+ | Mapping[str, PromptExecutionSettings]
| None = None,
) -> None:
"""Initializes a new instance of the KernelFunctionFromPrompt class.
@@ -154,7 +154,7 @@ def rewrite_execution_settings(
data["prompt_execution_settings"] = {
prompt_execution_settings.service_id or DEFAULT_SERVICE_NAME: prompt_execution_settings
}
- if isinstance(prompt_execution_settings, list):
+ if isinstance(prompt_execution_settings, Sequence):
data["prompt_execution_settings"] = {
s.service_id or DEFAULT_SERVICE_NAME: s for s in prompt_execution_settings
}
diff --git a/python/semantic_kernel/kernel_pydantic.py b/python/semantic_kernel/kernel_pydantic.py
index 0547f5d73b3a..50e6e047a172 100644
--- a/python/semantic_kernel/kernel_pydantic.py
+++ b/python/semantic_kernel/kernel_pydantic.py
@@ -4,10 +4,10 @@
from typing import Annotated, Any, ClassVar, TypeVar
from pydantic import BaseModel, ConfigDict, Field, UrlConstraints
-from pydantic.networks import Url
+from pydantic.networks import AnyUrl
from pydantic_settings import BaseSettings, SettingsConfigDict
-HttpsUrl = Annotated[Url, UrlConstraints(max_length=2083, allowed_schemes=["https"])]
+HttpsUrl = Annotated[AnyUrl, UrlConstraints(max_length=2083, allowed_schemes=["https"])]
class KernelBaseModel(BaseModel):
diff --git a/python/semantic_kernel/prompt_template/prompt_template_config.py b/python/semantic_kernel/prompt_template/prompt_template_config.py
index 4651f933c22a..4a0823b7a07a 100644
--- a/python/semantic_kernel/prompt_template/prompt_template_config.py
+++ b/python/semantic_kernel/prompt_template/prompt_template_config.py
@@ -1,5 +1,6 @@
# Copyright (c) Microsoft. All rights reserved.
import logging
+from collections.abc import Mapping, Sequence
from typing import TypeVar
from pydantic import Field, field_validator, model_validator
@@ -52,14 +53,17 @@ def check_input_variables(self):
@classmethod
def rewrite_execution_settings(
cls,
- settings: PromptExecutionSettings | list[PromptExecutionSettings] | dict[str, PromptExecutionSettings] | None,
- ) -> dict[str, PromptExecutionSettings]:
+ settings: PromptExecutionSettings
+ | Sequence[PromptExecutionSettings]
+ | Mapping[str, PromptExecutionSettings]
+ | None,
+ ) -> Mapping[str, PromptExecutionSettings]:
"""Rewrite execution settings to a dictionary."""
if not settings:
return {}
if isinstance(settings, PromptExecutionSettings):
return {settings.service_id or DEFAULT_SERVICE_NAME: settings}
- if isinstance(settings, list):
+ if isinstance(settings, Sequence):
return {s.service_id or DEFAULT_SERVICE_NAME: s for s in settings}
return settings
@@ -70,7 +74,7 @@ def add_execution_settings(self, settings: PromptExecutionSettings, overwrite: b
self.execution_settings[settings.service_id or DEFAULT_SERVICE_NAME] = settings
logger.warning("Execution settings already exist and overwrite is set to False")
- def get_kernel_parameter_metadata(self) -> list[KernelParameterMetadata]:
+ def get_kernel_parameter_metadata(self) -> Sequence[KernelParameterMetadata]:
"""Get the kernel parameter metadata for the input variables."""
return [
KernelParameterMetadata(
@@ -103,8 +107,8 @@ def restore(
description: str,
template: str,
template_format: TEMPLATE_FORMAT_TYPES = KERNEL_TEMPLATE_FORMAT_NAME,
- input_variables: list[InputVariable] = [],
- execution_settings: dict[str, PromptExecutionSettings] = {},
+ input_variables: Sequence[InputVariable] = [],
+ execution_settings: Mapping[str, PromptExecutionSettings] = {},
allow_dangerously_set_content: bool = False,
) -> "PromptTemplateConfig":
"""Restore a PromptTemplateConfig instance from the specified parameters.
diff --git a/python/tests/integration/audio_to_text/test_audio_to_text.py b/python/tests/integration/audio_to_text/test_audio_to_text.py
index 40f98bde771f..d51d5fc8454b 100644
--- a/python/tests/integration/audio_to_text/test_audio_to_text.py
+++ b/python/tests/integration/audio_to_text/test_audio_to_text.py
@@ -28,11 +28,9 @@
)
-@pytest.mark.asyncio(scope="module")
class TestAudioToText(AudioToTextTestBase):
"""Test audio-to-text services."""
- @pytest.mark.asyncio
async def test_audio_to_text(
self,
services: dict[str, AudioToTextClientBase],
diff --git a/python/tests/integration/completions/chat_completion_test_base.py b/python/tests/integration/completions/chat_completion_test_base.py
index 05cdd92e281c..61152512ae11 100644
--- a/python/tests/integration/completions/chat_completion_test_base.py
+++ b/python/tests/integration/completions/chat_completion_test_base.py
@@ -4,8 +4,7 @@
import os
import platform
import sys
-from functools import reduce
-from typing import Annotated, Any
+from typing import Annotated
import pytest
from azure.ai.inference.aio import ChatCompletionsClient
@@ -32,6 +31,8 @@
)
from semantic_kernel.connectors.ai.prompt_execution_settings import PromptExecutionSettings
from semantic_kernel.contents.chat_history import ChatHistory
+from semantic_kernel.contents.chat_message_content import ChatMessageContent
+from semantic_kernel.contents.streaming_chat_message_content import StreamingChatMessageContent
from semantic_kernel.core_plugins.math_plugin import MathPlugin
from semantic_kernel.functions.kernel_function_decorator import kernel_function
from semantic_kernel.kernel import Kernel
@@ -48,6 +49,7 @@
# Make sure all services are setup for before running the tests
# The following exceptions apply:
# 1. OpenAI and Azure OpenAI services are always setup for testing.
+azure_openai_setup: bool = True
# 2. Bedrock services don't use API keys and model providers are tested individually,
# so no environment variables are required.
mistral_ai_setup: bool = is_service_setup_for_testing(
@@ -67,6 +69,9 @@
anthropic_setup: bool = is_service_setup_for_testing(
["ANTHROPIC_API_KEY", "ANTHROPIC_CHAT_MODEL_ID"], raise_if_not_set=False
) # We don't have an Anthropic deployment
+# When testing Bedrock, after logging into AWS CLI this has been set, so we can use it to check if the service is setup
+bedrock_setup: bool = is_service_setup_for_testing(["AWS_DEFAULT_REGION"], raise_if_not_set=False)
+
skip_on_mac_available = platform.system() == "Darwin"
if not skip_on_mac_available:
@@ -93,34 +98,40 @@ class ChatCompletionTestBase(CompletionTestBase):
"""Base class for testing completion services."""
@override
- @pytest.fixture(scope="class")
- def services(self) -> dict[str, tuple[ServiceType, type[PromptExecutionSettings]]]:
+ @pytest.fixture(scope="function")
+ def services(self) -> dict[str, tuple[ServiceType | None, type[PromptExecutionSettings] | None]]:
+ azure_openai_setup = True
azure_openai_settings = AzureOpenAISettings.create()
- endpoint = azure_openai_settings.endpoint
+ endpoint = str(azure_openai_settings.endpoint)
deployment_name = azure_openai_settings.chat_deployment_name
ad_token = get_entra_auth_token(azure_openai_settings.token_endpoint)
+ if not ad_token:
+ azure_openai_setup = False
api_version = azure_openai_settings.api_version
- azure_custom_client = AzureChatCompletion(
- async_client=AsyncAzureOpenAI(
- azure_endpoint=endpoint,
- azure_deployment=deployment_name,
- azure_ad_token=ad_token,
- api_version=api_version,
- default_headers={"Test-User-X-ID": "test"},
- ),
- )
- azure_ai_inference_client = AzureAIInferenceChatCompletion(
- ai_model_id=deployment_name,
- client=ChatCompletionsClient(
- endpoint=f"{str(endpoint).strip('/')}/openai/deployments/{deployment_name}",
- credential=DefaultAzureCredential(),
- credential_scopes=["https://cognitiveservices.azure.com/.default"],
- ),
- )
+ azure_custom_client = None
+ azure_ai_inference_client = None
+ if azure_openai_setup:
+ azure_custom_client = AzureChatCompletion(
+ async_client=AsyncAzureOpenAI(
+ azure_endpoint=endpoint,
+ azure_deployment=deployment_name,
+ azure_ad_token=ad_token,
+ api_version=api_version,
+ default_headers={"Test-User-X-ID": "test"},
+ ),
+ )
+ azure_ai_inference_client = AzureAIInferenceChatCompletion(
+ ai_model_id=deployment_name,
+ client=ChatCompletionsClient(
+ endpoint=f"{endpoint.strip('/')}/openai/deployments/{deployment_name}",
+ credential=DefaultAzureCredential(),
+ credential_scopes=["https://cognitiveservices.azure.com/.default"],
+ ),
+ )
return {
"openai": (OpenAIChatCompletion(), OpenAIChatPromptExecutionSettings),
- "azure": (AzureChatCompletion(), AzureChatPromptExecutionSettings),
+ "azure": (AzureChatCompletion() if azure_openai_setup else None, AzureChatPromptExecutionSettings),
"azure_custom_client": (azure_custom_client, AzureChatPromptExecutionSettings),
"azure_ai_inference": (azure_ai_inference_client, AzureAIInferenceChatPromptExecutionSettings),
"anthropic": (AnthropicChatCompletion() if anthropic_setup else None, AnthropicChatPromptExecutionSettings),
@@ -148,27 +159,27 @@ def services(self) -> dict[str, tuple[ServiceType, type[PromptExecutionSettings]
OnnxGenAIPromptExecutionSettings if not skip_on_mac_available else None,
),
"bedrock_amazon_titan": (
- BedrockChatCompletion(model_id="amazon.titan-text-premier-v1:0"),
+ BedrockChatCompletion(model_id="amazon.titan-text-premier-v1:0") if bedrock_setup else None,
BedrockChatPromptExecutionSettings,
),
"bedrock_ai21labs": (
- BedrockChatCompletion(model_id="ai21.jamba-1-5-mini-v1:0"),
+ BedrockChatCompletion(model_id="ai21.jamba-1-5-mini-v1:0") if bedrock_setup else None,
BedrockChatPromptExecutionSettings,
),
"bedrock_anthropic_claude": (
- BedrockChatCompletion(model_id="anthropic.claude-3-5-sonnet-20240620-v1:0"),
+ BedrockChatCompletion(model_id="anthropic.claude-3-5-sonnet-20240620-v1:0") if bedrock_setup else None,
BedrockChatPromptExecutionSettings,
),
"bedrock_cohere_command": (
- BedrockChatCompletion(model_id="cohere.command-r-v1:0"),
+ BedrockChatCompletion(model_id="cohere.command-r-v1:0") if bedrock_setup else None,
BedrockChatPromptExecutionSettings,
),
"bedrock_meta_llama": (
- BedrockChatCompletion(model_id="meta.llama3-70b-instruct-v1:0"),
+ BedrockChatCompletion(model_id="meta.llama3-70b-instruct-v1:0") if bedrock_setup else None,
BedrockChatPromptExecutionSettings,
),
"bedrock_mistralai": (
- BedrockChatCompletion(model_id="mistral.mistral-small-2402-v1:0"),
+ BedrockChatCompletion(model_id="mistral.mistral-small-2402-v1:0") if bedrock_setup else None,
BedrockChatPromptExecutionSettings,
),
}
@@ -185,7 +196,7 @@ async def get_chat_completion_response(
execution_settings: PromptExecutionSettings,
chat_history: ChatHistory,
stream: bool,
- ) -> Any:
+ ) -> ChatMessageContent | StreamingChatMessageContent | None:
"""Get response from the service
Args:
@@ -195,22 +206,21 @@ async def get_chat_completion_response(
input (str): Input string.
stream (bool): Stream flag.
"""
- if stream:
- response = service.get_streaming_chat_message_content(
+ if not stream:
+ return await service.get_chat_message_content(
chat_history,
execution_settings,
kernel=kernel,
)
- parts = [part async for part in response]
- if parts:
- response = reduce(lambda p, r: p + r, parts)
- else:
- raise AssertionError("No response")
- else:
- response = await service.get_chat_message_content(
+ parts: list[StreamingChatMessageContent] = [
+ part
+ async for part in service.get_streaming_chat_message_content(
chat_history,
execution_settings,
kernel=kernel,
)
-
- return response
+ if part
+ ]
+ if parts:
+ return sum(parts[1:], parts[0])
+ raise AssertionError("No response")
diff --git a/python/tests/integration/completions/completion_test_base.py b/python/tests/integration/completions/completion_test_base.py
index 96a84ef180bf..dd93d40d3944 100644
--- a/python/tests/integration/completions/completion_test_base.py
+++ b/python/tests/integration/completions/completion_test_base.py
@@ -1,6 +1,6 @@
# Copyright (c) Microsoft. All rights reserved.
-from typing import Any, Union
+from typing import Any
from semantic_kernel.connectors.ai.chat_completion_client_base import ChatCompletionClientBase
from semantic_kernel.connectors.ai.prompt_execution_settings import PromptExecutionSettings
@@ -8,13 +8,13 @@
from semantic_kernel.contents.chat_message_content import ChatMessageContent
from semantic_kernel.kernel import Kernel
-ServiceType = Union[ChatCompletionClientBase | TextCompletionClientBase]
+ServiceType = ChatCompletionClientBase | TextCompletionClientBase
class CompletionTestBase:
"""Base class for testing completion services."""
- def services(self) -> dict[str, tuple[ServiceType, type[PromptExecutionSettings]]]:
+ def services(self) -> dict[str, tuple["ServiceType", type[PromptExecutionSettings]]]:
"""Return completion services."""
raise NotImplementedError
diff --git a/python/tests/integration/completions/conftest.py b/python/tests/integration/completions/conftest.py
index 34731e4da958..67bd50d069d5 100644
--- a/python/tests/integration/completions/conftest.py
+++ b/python/tests/integration/completions/conftest.py
@@ -2,82 +2,8 @@
import logging
-import pytest
-
-from semantic_kernel.kernel import Kernel
from semantic_kernel.utils.logging import setup_logging
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
setup_logging()
-
-
-@pytest.fixture(scope="function")
-def setup_tldr_function_for_oai_models(kernel: Kernel):
- # Define semantic function using SK prompt template language
- prompt = """
- {{$input}}
-
- (hyphenated words count as 1 word)
- Give me the TLDR in exactly 5 words:
- """
-
- # User input
- text_to_summarize = """
- 1) A robot may not injure a human being or, through inaction,
- allow a human being to come to harm.
-
- 2) A robot must obey orders given it by human beings except where
- such orders would conflict with the First Law.
-
- 3) A robot must protect its own existence as long as such protection
- does not conflict with the First or Second Law.
- """
-
- print("TLDR: ")
- print(text_to_summarize)
- print()
- yield kernel, prompt, text_to_summarize
-
-
-@pytest.fixture(scope="function")
-def setup_summarize_conversation_using_plugin(kernel: Kernel):
- ChatTranscript = """John: Hello, how are you?
- Jane: I'm fine, thanks. How are you?
- John: I'm doing well, writing some example code.
- Jane: That's great! I'm writing some example code too.
- John: What are you writing?
- Jane: I'm writing a chatbot.
- John: That's cool. I'm writing a chatbot too.
- Jane: What language are you writing it in?
- John: I'm writing it in C#.
- Jane: I'm writing it in Python.
- John: That's cool. I need to learn Python.
- Jane: I need to learn C#.
- John: Can I try out your chatbot?
- Jane: Sure, here's the link.
- John: Thanks!
- Jane: You're welcome.
- Jane: Look at this poem my chatbot wrote:
- Jane: Roses are red
- Jane: Violets are blue
- Jane: I'm writing a chatbot
- Jane: What about you?
- John: That's cool. Let me see if mine will write a poem, too.
- John: Here's a poem my chatbot wrote:
- John: The singularity of the universe is a mystery.
- Jane: You might want to try using a different model.
- John: I'm using the GPT-2 model. That makes sense.
- John: Here is a new poem after updating the model.
- John: The universe is a mystery.
- John: The universe is a mystery.
- John: The universe is a mystery.
- Jane: Sure, what's the problem?
- John: Thanks for the help!
- Jane: I'm now writing a bot to summarize conversations.
- Jane: I have some bad news, we're only half way there.
- John: Maybe there is a large piece of text we can use to generate a long conversation.
- Jane: That's a good idea. Let me see if I can find one. Maybe Lorem Ipsum?
- John: Yeah, that's a good idea."""
-
- yield kernel, ChatTranscript
diff --git a/python/tests/integration/completions/test_azure_oai_chat_service_extensions.py b/python/tests/integration/completions/test_azure_oai_chat_service_extensions.py
index 18fa05ce02e3..ac0b51e378f8 100644
--- a/python/tests/integration/completions/test_azure_oai_chat_service_extensions.py
+++ b/python/tests/integration/completions/test_azure_oai_chat_service_extensions.py
@@ -46,7 +46,7 @@
)
-@pytest_asyncio.fixture(scope="function")
+@pytest_asyncio.fixture
async def create_memory_store():
# Create an index and populate it with some data
collection = f"int-tests-chat-extensions-{randint(1000, 9999)}"
@@ -75,7 +75,7 @@ async def create_memory_store():
raise e
-@pytest_asyncio.fixture(scope="function")
+@pytest_asyncio.fixture
async def create_with_data_chat_function(kernel: Kernel, create_memory_store):
collection, memory_store = create_memory_store
try:
@@ -125,7 +125,6 @@ async def create_with_data_chat_function(kernel: Kernel, create_memory_store):
raise e
-@pytest.mark.asyncio
@pytestmark
async def test_azure_e2e_chat_completion_with_extensions(create_with_data_chat_function):
# Create an index and populate it with some data
diff --git a/python/tests/integration/completions/test_chat_completion_with_function_calling.py b/python/tests/integration/completions/test_chat_completion_with_function_calling.py
index 626cdb212ca8..3542a6a39459 100644
--- a/python/tests/integration/completions/test_chat_completion_with_function_calling.py
+++ b/python/tests/integration/completions/test_chat_completion_with_function_calling.py
@@ -5,6 +5,11 @@
from functools import partial
from typing import Any
+if sys.version_info >= (3, 12):
+ from typing import override # pragma: no cover
+else:
+ from typing_extensions import override # pragma: no cover
+
import pytest
from semantic_kernel.connectors.ai.function_choice_behavior import FunctionChoiceBehavior
@@ -27,11 +32,6 @@
from tests.integration.completions.completion_test_base import ServiceType
from tests.utils import retry
-if sys.version_info >= (3, 12):
- from typing import override # pragma: no cover
-else:
- from typing_extensions import override # pragma: no cover
-
class FunctionChoiceTestTypes(str, Enum):
"""Test function choice types."""
@@ -675,7 +675,10 @@ class FunctionChoiceTestTypes(str, Enum):
{
"test_type": FunctionChoiceTestTypes.AUTO,
},
- marks=pytest.mark.skipif(not ollama_tool_call_setup, reason="Need local Ollama setup"),
+ marks=(
+ pytest.mark.skipif(not ollama_tool_call_setup, reason="Need local Ollama setup"),
+ pytest.mark.ollama,
+ ),
id="ollama_tool_call_auto",
),
pytest.param(
@@ -697,7 +700,10 @@ class FunctionChoiceTestTypes(str, Enum):
{
"test_type": FunctionChoiceTestTypes.NON_AUTO,
},
- marks=pytest.mark.skipif(not ollama_tool_call_setup, reason="Need local Ollama setup"),
+ marks=(
+ pytest.mark.skipif(not ollama_tool_call_setup, reason="Need local Ollama setup"),
+ pytest.mark.ollama,
+ ),
id="ollama_tool_call_non_auto",
),
pytest.param(
@@ -726,7 +732,10 @@ class FunctionChoiceTestTypes(str, Enum):
{
"test_type": FunctionChoiceTestTypes.FLOW,
},
- marks=pytest.mark.skipif(not ollama_tool_call_setup, reason="Need local Ollama setup"),
+ marks=(
+ pytest.mark.skipif(not ollama_tool_call_setup, reason="Need local Ollama setup"),
+ pytest.mark.ollama,
+ ),
id="ollama_tool_call_flow",
),
pytest.param(
@@ -747,7 +756,10 @@ class FunctionChoiceTestTypes(str, Enum):
{
"test_type": FunctionChoiceTestTypes.AUTO,
},
- marks=pytest.mark.skipif(not ollama_tool_call_setup, reason="Need local Ollama setup"),
+ marks=(
+ pytest.mark.skipif(not ollama_tool_call_setup, reason="Need local Ollama setup"),
+ pytest.mark.ollama,
+ ),
id="ollama_tool_call_auto_complex_return_type",
),
# endregion
@@ -901,7 +913,6 @@ class FunctionChoiceTestTypes(str, Enum):
)
-@pytest.mark.asyncio(scope="module")
class TestChatCompletionWithFunctionCalling(ChatCompletionTestBase):
"""Test Chat Completion with function calling"""
@@ -912,7 +923,7 @@ async def test_completion(
service_id: str,
services: dict[str, tuple[ServiceType, type[PromptExecutionSettings]]],
execution_settings_kwargs: dict[str, Any],
- inputs: list[str | ChatMessageContent | list[ChatMessageContent]],
+ inputs: list[ChatMessageContent | list[ChatMessageContent]],
kwargs: dict[str, Any],
):
await self._test_helper(
@@ -932,7 +943,7 @@ async def test_streaming_completion(
service_id: str,
services: dict[str, tuple[ServiceType, type[PromptExecutionSettings]]],
execution_settings_kwargs: dict[str, Any],
- inputs: list[str | ChatMessageContent | list[ChatMessageContent]],
+ inputs: list[ChatMessageContent | list[ChatMessageContent]],
kwargs: dict[str, Any],
):
if "streaming" in kwargs and not kwargs["streaming"]:
@@ -1026,6 +1037,9 @@ async def _test_helper(
kwargs: dict[str, Any],
stream: bool,
):
+ service, settings_type = services[service_id]
+ if not service:
+ pytest.skip(f"Skipping test for {service_id}")
assert "test_type" in kwargs, "Invalid parameterization: Test type not provided"
test_type = kwargs["test_type"]
@@ -1034,16 +1048,15 @@ async def _test_helper(
if isinstance(inputs[0], list):
[history.add_message(message) for message in inputs[0]]
else:
- [history.add_message(message) for message in inputs]
+ [history.add_message(message) for message in inputs if not isinstance(message, list)]
self.setup(kernel)
- service, settings_type = services[service_id]
cmc = await retry(
partial(
self.get_chat_completion_response,
kernel=kernel,
- service=service,
+ service=service, # type: ignore
execution_settings=settings_type(**execution_settings_kwargs),
chat_history=history,
stream=stream,
diff --git a/python/tests/integration/completions/test_chat_completion_with_image_input_text_output.py b/python/tests/integration/completions/test_chat_completion_with_image_input_text_output.py
index 137445495fd9..3f8eaa10ea82 100644
--- a/python/tests/integration/completions/test_chat_completion_with_image_input_text_output.py
+++ b/python/tests/integration/completions/test_chat_completion_with_image_input_text_output.py
@@ -5,6 +5,11 @@
from functools import partial
from typing import Any
+if sys.version_info >= (3, 12):
+ from typing import override # pragma: no cover
+else:
+ from typing_extensions import override # pragma: no cover
+
import pytest
from semantic_kernel import Kernel
@@ -22,12 +27,6 @@
from tests.integration.completions.completion_test_base import ServiceType
from tests.utils import retry
-if sys.version_info >= (3, 12):
- from typing import override # pragma: no cover
-else:
- from typing_extensions import override # pragma: no cover
-
-
pytestmark = pytest.mark.parametrize(
"service_id, execution_settings_kwargs, inputs, kwargs",
[
@@ -225,7 +224,10 @@
),
],
{},
- marks=pytest.mark.skipif(not ollama_image_setup, reason="Ollama Environment Variables not set"),
+ marks=(
+ pytest.mark.skipif(not ollama_image_setup, reason="Ollama Environment Variables not set"),
+ pytest.mark.ollama,
+ ),
id="ollama_image_input_file",
),
pytest.param(
@@ -251,7 +253,6 @@
)
-@pytest.mark.asyncio(scope="module")
class TestChatCompletionWithImageInputTextOutput(ChatCompletionTestBase):
"""Test chat completion with image input and text output."""
@@ -315,6 +316,8 @@ async def _test_helper(
):
self.setup(kernel)
service, settings_type = services[service_id]
+ if service is None:
+ pytest.skip(f"Service {service_id} not set up")
history = ChatHistory()
for message in inputs:
diff --git a/python/tests/integration/completions/test_chat_completions.py b/python/tests/integration/completions/test_chat_completions.py
index 17ab67e12c83..71195148aa9b 100644
--- a/python/tests/integration/completions/test_chat_completions.py
+++ b/python/tests/integration/completions/test_chat_completions.py
@@ -15,6 +15,7 @@
from tests.integration.completions.chat_completion_test_base import (
ChatCompletionTestBase,
anthropic_setup,
+ bedrock_setup,
mistral_ai_setup,
ollama_setup,
onnx_setup,
@@ -122,10 +123,10 @@ class Reasoning(KernelBaseModel):
ChatMessageContent(role=AuthorRole.USER, items=[TextContent(text="How are you today?")]),
],
{},
- marks=pytest.mark.skip(
- reason="Need local Ollama setup" if not ollama_setup else "Ollama responses are not always correct."
+ marks=(
+ pytest.mark.skipif(not ollama_setup, reason="Need local Ollama setup"),
+ pytest.mark.ollama,
),
- # pytest.mark.skipif(not ollama_setup, reason="Need local Ollama setup"),
id="ollama_text_input",
),
pytest.param(
@@ -169,6 +170,7 @@ class Reasoning(KernelBaseModel):
ChatMessageContent(role=AuthorRole.USER, items=[TextContent(text="How are you today?")]),
],
{},
+ marks=pytest.mark.skipif(not bedrock_setup, reason="Bedrock Environment Variables not set"),
id="bedrock_amazon_titan_text_input",
),
pytest.param(
@@ -230,7 +232,6 @@ class Reasoning(KernelBaseModel):
)
-@pytest.mark.asyncio(scope="module")
class TestChatCompletion(ChatCompletionTestBase):
"""Test Chat Completions.
@@ -297,6 +298,8 @@ async def _test_helper(
):
self.setup(kernel)
service, settings_type = services[service_id]
+ if service is None:
+ pytest.skip(f"Service {service_id} not set up")
history = ChatHistory()
for message in inputs:
diff --git a/python/tests/integration/completions/test_conversation_summary_plugin.py b/python/tests/integration/completions/test_conversation_summary_plugin.py
index 5bd80fbe445a..a89749b2993f 100644
--- a/python/tests/integration/completions/test_conversation_summary_plugin.py
+++ b/python/tests/integration/completions/test_conversation_summary_plugin.py
@@ -1,6 +1,5 @@
# Copyright (c) Microsoft. All rights reserved.
-import pytest
import semantic_kernel.connectors.ai.open_ai as sk_oai
from semantic_kernel.connectors.ai.prompt_execution_settings import PromptExecutionSettings
@@ -9,11 +8,46 @@
from semantic_kernel.prompt_template.prompt_template_config import PromptTemplateConfig
from tests.utils import retry
-
-@pytest.mark.asyncio
-async def test_azure_summarize_conversation_using_plugin(setup_summarize_conversation_using_plugin):
- kernel, chatTranscript = setup_summarize_conversation_using_plugin
-
+CHAT_TRANSCRIPT = """John: Hello, how are you?
+Jane: I'm fine, thanks. How are you?
+John: I'm doing well, writing some example code.
+Jane: That's great! I'm writing some example code too.
+John: What are you writing?
+Jane: I'm writing a chatbot.
+John: That's cool. I'm writing a chatbot too.
+Jane: What language are you writing it in?
+John: I'm writing it in C#.
+Jane: I'm writing it in Python.
+John: That's cool. I need to learn Python.
+Jane: I need to learn C#.
+John: Can I try out your chatbot?
+Jane: Sure, here's the link.
+John: Thanks!
+Jane: You're welcome.
+Jane: Look at this poem my chatbot wrote:
+Jane: Roses are red
+Jane: Violets are blue
+Jane: I'm writing a chatbot
+Jane: What about you?
+John: That's cool. Let me see if mine will write a poem, too.
+John: Here's a poem my chatbot wrote:
+John: The singularity of the universe is a mystery.
+Jane: You might want to try using a different model.
+John: I'm using the GPT-2 model. That makes sense.
+John: Here is a new poem after updating the model.
+John: The universe is a mystery.
+John: The universe is a mystery.
+John: The universe is a mystery.
+Jane: Sure, what's the problem?
+John: Thanks for the help!
+Jane: I'm now writing a bot to summarize conversations.
+Jane: I have some bad news, we're only half way there.
+John: Maybe there is a large piece of text we can use to generate a long conversation.
+Jane: That's a good idea. Let me see if I can find one. Maybe Lorem Ipsum?
+John: Yeah, that's a good idea."""
+
+
+async def test_azure_summarize_conversation_using_plugin(kernel):
service_id = "text_completion"
execution_settings = PromptExecutionSettings(
@@ -24,48 +58,19 @@ async def test_azure_summarize_conversation_using_plugin(setup_summarize_convers
execution_settings=execution_settings,
)
- kernel.add_service(sk_oai.AzureTextCompletion(service_id=service_id))
+ kernel.add_service(sk_oai.OpenAIChatCompletion(service_id=service_id))
conversationSummaryPlugin = kernel.add_plugin(
ConversationSummaryPlugin(prompt_template_config), "conversationSummary"
)
- arguments = KernelArguments(input=chatTranscript)
-
- summary = await retry(lambda: kernel.invoke(conversationSummaryPlugin["SummarizeConversation"], arguments))
+ arguments = KernelArguments(input=CHAT_TRANSCRIPT)
- output = str(summary).strip().lower()
- print(output)
- assert "john" in output and "jane" in output
- assert len(output) < len(chatTranscript)
-
-
-@pytest.mark.asyncio
-async def test_oai_summarize_conversation_using_plugin(
- setup_summarize_conversation_using_plugin,
-):
- kernel, chatTranscript = setup_summarize_conversation_using_plugin
-
- execution_settings = PromptExecutionSettings(
- service_id="conversation_summary", max_tokens=ConversationSummaryPlugin._max_tokens, temperature=0.1, top_p=0.5
+ summary = await retry(
+ lambda: kernel.invoke(conversationSummaryPlugin["SummarizeConversation"], arguments), retries=5
)
- prompt_template_config = PromptTemplateConfig(
- template=ConversationSummaryPlugin._summarize_conversation_prompt_template,
- description="Given a section of a conversation transcript, summarize the part of the conversation.",
- execution_settings=execution_settings,
- )
-
- kernel.add_service(sk_oai.OpenAITextCompletion(service_id="conversation_summary"))
-
- conversationSummaryPlugin = kernel.add_plugin(
- ConversationSummaryPlugin(prompt_template_config), "conversationSummary"
- )
-
- arguments = KernelArguments(input=chatTranscript)
-
- summary = await retry(lambda: kernel.invoke(conversationSummaryPlugin["SummarizeConversation"], arguments))
output = str(summary).strip().lower()
print(output)
assert "john" in output and "jane" in output
- assert len(output) < len(chatTranscript)
+ assert len(output) < len(CHAT_TRANSCRIPT)
diff --git a/python/tests/integration/completions/test_oai_chat_service.py b/python/tests/integration/completions/test_oai_chat_service.py
deleted file mode 100644
index 9fa452bdd510..000000000000
--- a/python/tests/integration/completions/test_oai_chat_service.py
+++ /dev/null
@@ -1,83 +0,0 @@
-# Copyright (c) Microsoft. All rights reserved.
-import os
-
-import pytest
-from openai import AsyncOpenAI
-
-import semantic_kernel.connectors.ai.open_ai as sk_oai
-from semantic_kernel.connectors.ai.open_ai.settings.open_ai_settings import OpenAISettings
-from semantic_kernel.contents.chat_history import ChatHistory
-
-
-@pytest.mark.asyncio
-async def test_oai_chat_service_with_yaml_jinja2(setup_tldr_function_for_oai_models):
- kernel, _, _ = setup_tldr_function_for_oai_models
-
- openai_settings = OpenAISettings.create()
- api_key = openai_settings.api_key.get_secret_value()
- org_id = openai_settings.org_id
-
- client = AsyncOpenAI(
- api_key=api_key,
- organization=org_id,
- )
-
- kernel.add_service(
- sk_oai.OpenAIChatCompletion(
- service_id="chat-gpt",
- ai_model_id="gpt-3.5-turbo",
- async_client=client,
- ),
- overwrite=True, # Overwrite the service if it already exists since add service says it does
- )
-
- plugins_directory = os.path.join(os.path.dirname(__file__), "../../assets/test_plugins")
-
- plugin = kernel.add_plugin(parent_directory=plugins_directory, plugin_name="TestFunctionYamlJinja2")
- assert plugin is not None
- assert plugin["TestFunctionJinja2"] is not None
-
- chat_history = ChatHistory()
- chat_history.add_system_message("Assistant is a large language model")
- chat_history.add_user_message("I love parrots.")
-
- result = await kernel.invoke(plugin["TestFunctionJinja2"], chat_history=chat_history)
- assert result is not None
- assert len(str(result.value)) > 0
-
-
-@pytest.mark.asyncio
-async def test_oai_chat_service_with_yaml_handlebars(setup_tldr_function_for_oai_models):
- kernel, _, _ = setup_tldr_function_for_oai_models
-
- openai_settings = OpenAISettings.create()
- api_key = openai_settings.api_key.get_secret_value()
- org_id = openai_settings.org_id
-
- client = AsyncOpenAI(
- api_key=api_key,
- organization=org_id,
- )
-
- kernel.add_service(
- sk_oai.OpenAIChatCompletion(
- service_id="chat-gpt",
- ai_model_id="gpt-3.5-turbo",
- async_client=client,
- ),
- overwrite=True, # Overwrite the service if it already exists since add service says it does
- )
-
- plugins_directory = os.path.join(os.path.dirname(__file__), "../../assets/test_plugins")
-
- plugin = kernel.add_plugin(parent_directory=plugins_directory, plugin_name="TestFunctionYamlHandlebars")
- assert plugin is not None
- assert plugin["TestFunctionHandlebars"] is not None
-
- chat_history = ChatHistory()
- chat_history.add_system_message("Assistant is a large language model")
- chat_history.add_user_message("I love parrots.")
-
- result = await kernel.invoke(plugin["TestFunctionHandlebars"], chat_history=chat_history)
- assert result is not None
- assert len(str(result.value)) > 0
diff --git a/python/tests/integration/completions/test_text_completion.py b/python/tests/integration/completions/test_text_completion.py
index 76215bedc0a4..9e9e93084ed0 100644
--- a/python/tests/integration/completions/test_text_completion.py
+++ b/python/tests/integration/completions/test_text_completion.py
@@ -33,6 +33,7 @@
from tests.integration.completions.completion_test_base import CompletionTestBase, ServiceType
from tests.utils import is_service_setup_for_testing, is_test_running_on_supported_platforms, retry
+azure_openai_setup = True
ollama_setup: bool = is_service_setup_for_testing(["OLLAMA_TEXT_MODEL_ID"]) and is_test_running_on_supported_platforms([
"Linux"
])
@@ -41,6 +42,7 @@
onnx_setup: bool = is_service_setup_for_testing(
["ONNX_GEN_AI_TEXT_MODEL_FOLDER"], raise_if_not_set=False
) # Tests are optional for ONNX
+bedrock_setup = is_service_setup_for_testing(["AWS_DEFAULT_REGION"], raise_if_not_set=False)
skip_on_mac_available = platform.system() == "Darwin"
if not skip_on_mac_available:
@@ -98,7 +100,12 @@
{},
["Repeat the word Hello once"],
{},
- marks=pytest.mark.skipif(not ollama_setup, reason="Need local Ollama setup"),
+ marks=(
+ pytest.mark.skip(
+ reason="Need local Ollama setup" if not ollama_setup else "Ollama responses are not always correct."
+ ),
+ pytest.mark.ollama,
+ ),
id="ollama_text_completion",
),
pytest.param(
@@ -130,6 +137,7 @@
{},
["Repeat the word Hello once"],
{},
+ marks=pytest.mark.skipif(not bedrock_setup, reason="Not setup"),
id="bedrock_amazon_titan_text_completion",
),
pytest.param(
@@ -176,31 +184,35 @@
)
-@pytest.mark.asyncio(scope="module")
class TestTextCompletion(CompletionTestBase):
"""Test class for text completion"""
@override
@pytest.fixture(scope="class")
- def services(self) -> dict[str, tuple[ServiceType, type[PromptExecutionSettings]]]:
+ def services(self) -> dict[str, tuple[ServiceType | None, type[PromptExecutionSettings] | None]]:
+ azure_openai_setup = True
azure_openai_settings = AzureOpenAISettings.create()
- endpoint = azure_openai_settings.endpoint
+ endpoint = str(azure_openai_settings.endpoint)
deployment_name = azure_openai_settings.text_deployment_name
ad_token = get_entra_auth_token(azure_openai_settings.token_endpoint)
+ if not ad_token:
+ azure_openai_setup = False
api_version = azure_openai_settings.api_version
- azure_custom_client = AzureTextCompletion(
- async_client=AsyncAzureOpenAI(
- azure_endpoint=endpoint,
- azure_deployment=deployment_name,
- azure_ad_token=ad_token,
- api_version=api_version,
- default_headers={"Test-User-X-ID": "test"},
- ),
- )
+ azure_custom_client = None
+ if azure_openai_setup:
+ azure_custom_client = AzureTextCompletion(
+ async_client=AsyncAzureOpenAI(
+ azure_endpoint=endpoint,
+ azure_deployment=deployment_name,
+ azure_ad_token=ad_token,
+ api_version=api_version,
+ default_headers={"Test-User-X-ID": "test"},
+ ),
+ )
return {
"openai": (OpenAITextCompletion(), OpenAITextPromptExecutionSettings),
- "azure": (AzureTextCompletion(), OpenAITextPromptExecutionSettings),
+ "azure": (AzureTextCompletion() if azure_openai_setup else None, OpenAITextPromptExecutionSettings),
"azure_custom_client": (azure_custom_client, OpenAITextPromptExecutionSettings),
"ollama": (OllamaTextCompletion() if ollama_setup else None, OllamaTextPromptExecutionSettings),
"google_ai": (GoogleAITextCompletion() if google_ai_setup else None, GoogleAITextPromptExecutionSettings),
@@ -236,27 +248,27 @@ def services(self) -> dict[str, tuple[ServiceType, type[PromptExecutionSettings]
# Amazon Bedrock supports models from multiple providers but requests to and responses from the models are
# inconsistent. So we need to test each model separately.
"bedrock_amazon_titan": (
- BedrockTextCompletion(model_id="amazon.titan-text-premier-v1:0"),
+ BedrockTextCompletion(model_id="amazon.titan-text-premier-v1:0") if bedrock_setup else None,
BedrockTextPromptExecutionSettings,
),
"bedrock_anthropic_claude": (
- BedrockTextCompletion(model_id="anthropic.claude-v2"),
+ BedrockTextCompletion(model_id="anthropic.claude-v2") if bedrock_setup else None,
BedrockTextPromptExecutionSettings,
),
"bedrock_cohere_command": (
- BedrockTextCompletion(model_id="cohere.command-text-v14"),
+ BedrockTextCompletion(model_id="cohere.command-text-v14") if bedrock_setup else None,
BedrockTextPromptExecutionSettings,
),
"bedrock_ai21labs": (
- BedrockTextCompletion(model_id="ai21.j2-mid-v1"),
+ BedrockTextCompletion(model_id="ai21.j2-mid-v1") if bedrock_setup else None,
BedrockTextPromptExecutionSettings,
),
"bedrock_meta_llama": (
- BedrockTextCompletion(model_id="meta.llama3-70b-instruct-v1:0"),
+ BedrockTextCompletion(model_id="meta.llama3-70b-instruct-v1:0") if bedrock_setup else None,
BedrockTextPromptExecutionSettings,
),
"bedrock_mistralai": (
- BedrockTextCompletion(model_id="mistral.mistral-7b-instruct-v0:2"),
+ BedrockTextCompletion(model_id="mistral.mistral-7b-instruct-v0:2") if bedrock_setup else None,
BedrockTextPromptExecutionSettings,
),
}
@@ -340,7 +352,8 @@ async def _test_helper(
stream: bool,
):
service, settings_type = services[service_id]
-
+ if not service:
+ pytest.skip(f"Setup not ready for {service_id if service_id else 'None'}")
for test_input in inputs:
response = await retry(
partial(
diff --git a/python/tests/integration/cross_language/test_cross_language.py b/python/tests/integration/cross_language/test_cross_language.py
index a4e9f3827bec..18724c17a6c9 100644
--- a/python/tests/integration/cross_language/test_cross_language.py
+++ b/python/tests/integration/cross_language/test_cross_language.py
@@ -8,6 +8,7 @@
import httpx
import pytest
+import pytest_asyncio
from openai import AsyncOpenAI
from semantic_kernel.connectors.ai.open_ai import OpenAIChatCompletion
@@ -21,6 +22,8 @@
logger = logging.getLogger(__name__)
+OPENAI_MODEL_ID = "gpt-3.5-turbo"
+
# region Test Prompts
simple_prompt = "Can you help me tell the time in Seattle right now?"
@@ -70,11 +73,14 @@ def get_request_content(self):
# region Test Helper Methods
-def get_new_client():
+@pytest_asyncio.fixture
+async def async_client():
openai_settings = OpenAISettings.create()
logging_async_client = LoggingAsyncClient()
- async_client = AsyncOpenAI(api_key=openai_settings.api_key.get_secret_value(), http_client=logging_async_client)
- return async_client, logging_async_client
+ async with AsyncOpenAI(
+ api_key=openai_settings.api_key.get_secret_value(), http_client=logging_async_client
+ ) as async_client:
+ yield async_client
async def run_prompt(
@@ -114,7 +120,10 @@ async def run_prompt(
async def run_function(
- kernel: Kernel, is_streaming: bool = False, function: KernelFunction = None, arguments: KernelArguments = None
+ kernel: Kernel,
+ is_streaming: bool = False,
+ function: KernelFunction | None = None,
+ arguments: KernelArguments | None = None,
):
if is_streaming:
try:
@@ -139,62 +148,68 @@ def __init__(self, name):
@pytest.mark.parametrize(
"is_inline, is_streaming, template_format, prompt",
[
- (
+ pytest.param(
True,
False,
"semantic-kernel",
'Can you help me tell the time in Seattle right now?Sure! The time in Seattle is currently 3:00 PM.What about New York?', # noqa: E501
+ id="sk_inline_non_streaming",
),
- (
+ pytest.param(
True,
True,
"semantic-kernel",
'Can you help me tell the time in Seattle right now?Sure! The time in Seattle is currently 3:00 PM.What about New York?', # noqa: E501
+ id="sk_inline_streaming",
),
- (
+ pytest.param(
False,
False,
"semantic-kernel",
'Can you help me tell the time in Seattle right now?Sure! The time in Seattle is currently 3:00 PM.What about New York?', # noqa: E501
+ id="sk_non_inline_non_streaming",
),
- (
+ pytest.param(
False,
True,
"semantic-kernel",
'Can you help me tell the time in Seattle right now?Sure! The time in Seattle is currently 3:00 PM.What about New York?', # noqa: E501
+ id="sk_non_inline_streaming",
),
- (
+ pytest.param(
False,
False,
"handlebars",
'Can you help me tell the time in Seattle right now?Sure! The time in Seattle is currently 3:00 PM.What about New York?', # noqa: E501
+ id="hb_non_inline_non_streaming",
),
- (
+ pytest.param(
False,
True,
"handlebars",
'Can you help me tell the time in Seattle right now?Sure! The time in Seattle is currently 3:00 PM.What about New York?', # noqa: E501
+ id="hb_non_inline_streaming",
),
- (
+ pytest.param(
False,
False,
"jinja2",
'Can you help me tell the time in Seattle right now?Sure! The time in Seattle is currently 3:00 PM.What about New York?', # noqa: E501
+ id="j2_non_inline_non_streaming",
),
- (
+ pytest.param(
False,
True,
"jinja2",
'Can you help me tell the time in Seattle right now?Sure! The time in Seattle is currently 3:00 PM.What about New York?', # noqa: E501
+ id="j2_non_inline_streaming",
),
],
)
-@pytest.mark.asyncio
-async def test_prompt_with_chat_roles(is_inline, is_streaming, template_format, prompt):
- async_client, logging_client = get_new_client()
+async def test_prompt_with_chat_roles(is_inline, is_streaming, template_format, prompt, async_client):
ai_service = OpenAIChatCompletion(
service_id="test",
- ai_model_id="gpt-3.5-turbo",
+ ai_model_id=OPENAI_MODEL_ID,
async_client=async_client,
)
@@ -203,10 +218,14 @@ async def test_prompt_with_chat_roles(is_inline, is_streaming, template_format,
kernel.add_service(ai_service)
await run_prompt(
- kernel=kernel, is_inline=is_inline, is_streaming=is_streaming, template_format=template_format, prompt=prompt
+ kernel=kernel,
+ is_inline=is_inline,
+ is_streaming=is_streaming,
+ template_format=template_format,
+ prompt=prompt,
)
- request_content = logging_client.get_request_content()
+ request_content = async_client._client.get_request_content()
assert request_content is not None
obtained_object = json.loads(request_content)
@@ -234,22 +253,64 @@ async def test_prompt_with_chat_roles(is_inline, is_streaming, template_format,
@pytest.mark.parametrize(
"is_inline, is_streaming, template_format, prompt",
[
- (False, False, "handlebars", "Can you help me tell the time in {{city.name}} right now?"),
- (False, True, "handlebars", "Can you help me tell the time in {{city.name}} right now?"),
- (False, False, "jinja2", "Can you help me tell the time in {{city.name}} right now?"),
- (False, True, "jinja2", "Can you help me tell the time in {{city.name}} right now?"),
- (True, False, "handlebars", "Can you help me tell the time in {{city.name}} right now?"),
- (True, True, "handlebars", "Can you help me tell the time in {{city.name}} right now?"),
- (True, False, "jinja2", "Can you help me tell the time in {{city.name}} right now?"),
- (True, True, "jinja2", "Can you help me tell the time in {{city.name}} right now?"),
+ pytest.param(
+ False,
+ False,
+ "handlebars",
+ "Can you help me tell the time in {{city.name}} right now?",
+ id="hb_non_inline_non_streaming",
+ ),
+ pytest.param(
+ False,
+ True,
+ "handlebars",
+ "Can you help me tell the time in {{city.name}} right now?",
+ id="hb_non_inline_streaming",
+ ),
+ pytest.param(
+ False,
+ False,
+ "jinja2",
+ "Can you help me tell the time in {{city.name}} right now?",
+ id="j2_non_inline_non_streaming",
+ ),
+ pytest.param(
+ False,
+ True,
+ "jinja2",
+ "Can you help me tell the time in {{city.name}} right now?",
+ id="j2_non_inline_streaming",
+ ),
+ pytest.param(
+ True,
+ False,
+ "handlebars",
+ "Can you help me tell the time in {{city.name}} right now?",
+ id="hb_inline_non_streaming",
+ ),
+ pytest.param(
+ True,
+ True,
+ "handlebars",
+ "Can you help me tell the time in {{city.name}} right now?",
+ id="hb_inline_streaming",
+ ),
+ pytest.param(
+ True,
+ False,
+ "jinja2",
+ "Can you help me tell the time in {{city.name}} right now?",
+ id="j2_inline_non_streaming",
+ ),
+ pytest.param(
+ True, True, "jinja2", "Can you help me tell the time in {{city.name}} right now?", id="j2_inline_streaming"
+ ),
],
)
-@pytest.mark.asyncio
-async def test_prompt_with_complex_objects(is_inline, is_streaming, template_format, prompt):
- async_client, logging_client = get_new_client()
+async def test_prompt_with_complex_objects(is_inline, is_streaming, template_format, prompt, async_client):
ai_service = OpenAIChatCompletion(
service_id="default",
- ai_model_id="gpt-3.5-turbo",
+ ai_model_id=OPENAI_MODEL_ID,
async_client=async_client,
)
@@ -266,7 +327,7 @@ async def test_prompt_with_complex_objects(is_inline, is_streaming, template_for
arguments=KernelArguments(city=City("Seattle")),
)
- request_content = logging_client.get_request_content()
+ request_content = async_client._client.get_request_content()
assert request_content is not None
obtained_object = json.loads(request_content)
@@ -294,22 +355,27 @@ async def test_prompt_with_complex_objects(is_inline, is_streaming, template_for
@pytest.mark.parametrize(
"is_inline, is_streaming, template_format, prompt",
[
- (True, False, "semantic-kernel", sk_prompt),
- (True, True, "semantic-kernel", sk_prompt),
- (False, False, "semantic-kernel", sk_prompt),
- (False, True, "semantic-kernel", sk_prompt),
- (False, False, "handlebars", hb_prompt),
- (False, True, "handlebars", hb_prompt),
- (False, False, "jinja2", j2_prompt),
- (False, True, "jinja2", j2_prompt),
+ pytest.param(True, False, "semantic-kernel", sk_prompt, id="sk_inline_non_streaming"),
+ pytest.param(True, True, "semantic-kernel", sk_prompt, id="sk_inline_streaming"),
+ pytest.param(False, False, "semantic-kernel", sk_prompt, id="sk_non_inline_non_streaming"),
+ pytest.param(False, True, "semantic-kernel", sk_prompt, id="sk_non_inline_streaming"),
+ pytest.param(
+ False,
+ False,
+ "handlebars",
+ hb_prompt,
+ id="hb_non_inline_non_streaming",
+ marks=pytest.mark.xfail(reason="Throws intermittent APIConnectionError errors"),
+ ),
+ pytest.param(False, True, "handlebars", hb_prompt, id="hb_non_inline_streaming"),
+ pytest.param(False, False, "jinja2", j2_prompt, id="j2_non_inline_non_streaming"),
+ pytest.param(False, True, "jinja2", j2_prompt, id="j2_non_inline_streaming"),
],
)
-@pytest.mark.asyncio
-async def test_prompt_with_helper_functions(is_inline, is_streaming, template_format, prompt):
- async_client, logging_client = get_new_client()
+async def test_prompt_with_helper_functions(is_inline, is_streaming, template_format, prompt, async_client):
ai_service = OpenAIChatCompletion(
service_id="default",
- ai_model_id="gpt-3.5-turbo",
+ ai_model_id=OPENAI_MODEL_ID,
async_client=async_client,
)
@@ -337,7 +403,7 @@ async def test_prompt_with_helper_functions(is_inline, is_streaming, template_fo
arguments=KernelArguments(city="Seattle"),
)
- request_content = logging_client.get_request_content()
+ request_content = async_client._client.get_request_content()
assert request_content is not None
obtained_object = json.loads(request_content)
@@ -365,22 +431,20 @@ async def test_prompt_with_helper_functions(is_inline, is_streaming, template_fo
@pytest.mark.parametrize(
"is_inline, is_streaming, template_format, prompt",
[
- (True, False, "semantic-kernel", sk_simple_prompt),
- (True, True, "semantic-kernel", sk_simple_prompt),
- (False, False, "semantic-kernel", sk_simple_prompt),
- (False, True, "semantic-kernel", sk_simple_prompt),
- (False, False, "handlebars", hb_simple_prompt),
- (False, True, "handlebars", hb_simple_prompt),
- (False, False, "jinja2", j2_simple_prompt),
- (False, True, "jinja2", j2_simple_prompt),
+ pytest.param(True, False, "semantic-kernel", sk_simple_prompt, id="sk_inline_non_streaming"),
+ pytest.param(True, True, "semantic-kernel", sk_simple_prompt, id="sk_inline_streaming"),
+ pytest.param(False, False, "semantic-kernel", sk_simple_prompt, id="sk_non_inline_non_streaming"),
+ pytest.param(False, True, "semantic-kernel", sk_simple_prompt, id="sk_non_inline_streaming"),
+ pytest.param(False, False, "handlebars", hb_simple_prompt, id="hb_non_inline_non_streaming"),
+ pytest.param(False, True, "handlebars", hb_simple_prompt, id="hb_non_inline_streaming"),
+ pytest.param(False, False, "jinja2", j2_simple_prompt, id="j2_non_inline_non_streaming"),
+ pytest.param(False, True, "jinja2", j2_simple_prompt, id="j2_non_inline_streaming"),
],
)
-@pytest.mark.asyncio
-async def test_prompt_with_simple_variable(is_inline, is_streaming, template_format, prompt):
- async_client, logging_client = get_new_client()
+async def test_prompt_with_simple_variable(is_inline, is_streaming, template_format, prompt, async_client):
ai_service = OpenAIChatCompletion(
service_id="default",
- ai_model_id="gpt-3.5-turbo",
+ ai_model_id=OPENAI_MODEL_ID,
async_client=async_client,
)
@@ -397,7 +461,7 @@ async def test_prompt_with_simple_variable(is_inline, is_streaming, template_for
arguments=KernelArguments(city="Seattle"),
)
- request_content = logging_client.get_request_content()
+ request_content = async_client._client.get_request_content()
assert request_content is not None
obtained_object = json.loads(request_content)
@@ -425,22 +489,20 @@ async def test_prompt_with_simple_variable(is_inline, is_streaming, template_for
@pytest.mark.parametrize(
"is_inline, is_streaming, template_format, prompt",
[
- (True, False, "semantic-kernel", simple_prompt),
- (True, True, "semantic-kernel", simple_prompt),
- (False, False, "semantic-kernel", simple_prompt),
- (False, True, "semantic-kernel", simple_prompt),
- (False, False, "handlebars", simple_prompt),
- (False, True, "handlebars", simple_prompt),
- (False, False, "jinja2", simple_prompt),
- (False, True, "jinja2", simple_prompt),
+ pytest.param(True, False, "semantic-kernel", simple_prompt, id="sk_inline_non_streaming"),
+ pytest.param(True, True, "semantic-kernel", simple_prompt, id="sk_inline_streaming"),
+ pytest.param(False, False, "semantic-kernel", simple_prompt, id="sk_non_inline_non_streaming"),
+ pytest.param(False, True, "semantic-kernel", simple_prompt, id="sk_non_inline_streaming"),
+ pytest.param(False, False, "handlebars", simple_prompt, id="hb_non_inline_non_streaming"),
+ pytest.param(False, True, "handlebars", simple_prompt, id="hb_non_inline_streaming"),
+ pytest.param(False, False, "jinja2", simple_prompt, id="j2_non_inline_non_streaming"),
+ pytest.param(False, True, "jinja2", simple_prompt, id="j2_non_inline_streaming"),
],
)
-@pytest.mark.asyncio
-async def test_simple_prompt(is_inline, is_streaming, template_format, prompt):
- async_client, logging_client = get_new_client()
+async def test_simple_prompt(is_inline, is_streaming, template_format, prompt, async_client):
ai_service = OpenAIChatCompletion(
service_id="default",
- ai_model_id="gpt-3.5-turbo",
+ ai_model_id=OPENAI_MODEL_ID,
async_client=async_client,
)
@@ -456,7 +518,7 @@ async def test_simple_prompt(is_inline, is_streaming, template_format, prompt):
prompt=prompt,
)
- request_content = logging_client.get_request_content()
+ request_content = async_client._client.get_request_content()
assert request_content is not None
obtained_object = json.loads(request_content)
@@ -484,22 +546,52 @@ async def test_simple_prompt(is_inline, is_streaming, template_format, prompt):
@pytest.mark.parametrize(
"is_streaming, prompt_path, expected_result_path",
[
- (False, "simple_prompt_test.yaml", "prompt_simple_expected.json"),
- (True, "simple_prompt_test.yaml", "prompt_simple_expected.json"),
- (False, "prompt_with_chat_roles_test_hb.yaml", "prompt_with_chat_roles_expected.json"),
- (True, "prompt_with_chat_roles_test_hb.yaml", "prompt_with_chat_roles_expected.json"),
- (False, "prompt_with_chat_roles_test_j2.yaml", "prompt_with_chat_roles_expected.json"),
- (True, "prompt_with_chat_roles_test_j2.yaml", "prompt_with_chat_roles_expected.json"),
- (False, "prompt_with_simple_variable_test.yaml", "prompt_with_simple_variable_expected.json"),
- (True, "prompt_with_simple_variable_test.yaml", "prompt_with_simple_variable_expected.json"),
+ pytest.param(
+ False, "simple_prompt_test.yaml", "prompt_simple_expected.json", id="simple_prompt_test_non_streaming"
+ ),
+ pytest.param(True, "simple_prompt_test.yaml", "prompt_simple_expected.json", id="simple_prompt_test_streaming"),
+ pytest.param(
+ False,
+ "prompt_with_chat_roles_test_hb.yaml",
+ "prompt_with_chat_roles_expected.json",
+ id="prompt_with_chat_roles_test_hb_non_streaming",
+ ),
+ pytest.param(
+ True,
+ "prompt_with_chat_roles_test_hb.yaml",
+ "prompt_with_chat_roles_expected.json",
+ id="prompt_with_chat_roles_test_hb_streaming",
+ ),
+ pytest.param(
+ False,
+ "prompt_with_chat_roles_test_j2.yaml",
+ "prompt_with_chat_roles_expected.json",
+ id="prompt_with_chat_roles_test_j2_non_streaming",
+ ),
+ pytest.param(
+ True,
+ "prompt_with_chat_roles_test_j2.yaml",
+ "prompt_with_chat_roles_expected.json",
+ id="prompt_with_chat_roles_test_j2_streaming",
+ ),
+ pytest.param(
+ False,
+ "prompt_with_simple_variable_test.yaml",
+ "prompt_with_simple_variable_expected.json",
+ id="prompt_with_simple_variable_non_streaming",
+ ),
+ pytest.param(
+ True,
+ "prompt_with_simple_variable_test.yaml",
+ "prompt_with_simple_variable_expected.json",
+ id="prompt_with_simple_variable_streaming",
+ ),
],
)
-@pytest.mark.asyncio
-async def test_yaml_prompt(is_streaming, prompt_path, expected_result_path, kernel: Kernel):
- async_client, logging_client = get_new_client()
+async def test_yaml_prompt(is_streaming, prompt_path, expected_result_path, kernel: Kernel, async_client):
ai_service = OpenAIChatCompletion(
service_id="default",
- ai_model_id="gpt-3.5-turbo",
+ ai_model_id=OPENAI_MODEL_ID,
async_client=async_client,
)
@@ -512,7 +604,7 @@ async def test_yaml_prompt(is_streaming, prompt_path, expected_result_path, kern
await run_function(kernel=kernel, is_streaming=is_streaming, function=function)
- request_content = logging_client.get_request_content()
+ request_content = async_client._client.get_request_content()
assert request_content is not None
obtained_object = json.loads(request_content)
@@ -587,7 +679,6 @@ async def mock_request(request: httpx.Request):
return request_details
-@pytest.mark.asyncio
async def test_openapi_get_lights(kernel: Kernel):
request_content = await setup_openapi_function_call(
kernel, function_name="GetLights", arguments=KernelArguments(roomId=1)
@@ -600,7 +691,6 @@ async def test_openapi_get_lights(kernel: Kernel):
assert request_content.get("params") == {"roomId": "1"}
-@pytest.mark.asyncio
async def test_openapi_get_light_by_id(kernel: Kernel):
request_content = await setup_openapi_function_call(
kernel, function_name="GetLightById", arguments=KernelArguments(id=1)
@@ -612,7 +702,6 @@ async def test_openapi_get_light_by_id(kernel: Kernel):
assert request_content.get("url") == "https://127.0.0.1/Lights/1"
-@pytest.mark.asyncio
async def test_openapi_delete_light_by_id(kernel: Kernel):
request_content = await setup_openapi_function_call(
kernel, function_name="DeleteLightById", arguments=KernelArguments(id=1)
@@ -624,7 +713,6 @@ async def test_openapi_delete_light_by_id(kernel: Kernel):
assert request_content.get("url") == "https://127.0.0.1/Lights/1"
-@pytest.mark.asyncio
async def test_openapi_create_lights(kernel: Kernel):
request_content = await setup_openapi_function_call(
kernel, function_name="CreateLights", arguments=KernelArguments(roomId=1, lightName="disco")
@@ -636,7 +724,6 @@ async def test_openapi_create_lights(kernel: Kernel):
assert request_content.get("url") == "https://127.0.0.1/Lights?roomId=1&lightName=disco"
-@pytest.mark.asyncio
async def test_openapi_put_light_by_id(kernel: Kernel):
request_content = await setup_openapi_function_call(
kernel, function_name="PutLightById", arguments=KernelArguments(id=1, hexColor="11EE11")
diff --git a/python/tests/integration/embeddings/test_embedding_service.py b/python/tests/integration/embeddings/test_embedding_service.py
index c15bcdb4bf5d..8122ac9bdab6 100644
--- a/python/tests/integration/embeddings/test_embedding_service.py
+++ b/python/tests/integration/embeddings/test_embedding_service.py
@@ -59,7 +59,10 @@
"ollama",
{},
768,
- marks=pytest.mark.skipif(not ollama_setup, reason="Ollama environment variables not set"),
+ marks=(
+ pytest.mark.skipif(not ollama_setup, reason="Ollama not setup"),
+ pytest.mark.ollama,
+ ),
id="ollama",
),
pytest.param(
@@ -98,7 +101,6 @@
)
-@pytest.mark.asyncio(scope="module")
class TestEmbeddingService(EmbeddingServiceTestBase):
"""Test embedding service with memory.
diff --git a/python/tests/integration/embeddings/test_embedding_service_base.py b/python/tests/integration/embeddings/test_embedding_service_base.py
index 4bb68b8729fd..1ecca21657e3 100644
--- a/python/tests/integration/embeddings/test_embedding_service_base.py
+++ b/python/tests/integration/embeddings/test_embedding_service_base.py
@@ -30,11 +30,12 @@
)
from semantic_kernel.connectors.ai.prompt_execution_settings import PromptExecutionSettings
from semantic_kernel.utils.authentication.entra_id_authentication import get_entra_auth_token
-from tests.utils import is_service_setup_for_testing, is_test_running_on_supported_platforms
+from tests.utils import is_service_setup_for_testing
# Make sure all services are setup for before running the tests
# The following exceptions apply:
# 1. OpenAI and Azure OpenAI services are always setup for testing.
+azure_openai_setup = True
# 2. The current Hugging Face service don't require any environment variables.
# 3. Bedrock services don't use API keys and model providers are tested individually,
# so no environment variables are required.
@@ -43,40 +44,46 @@
) # We don't have a MistralAI deployment
google_ai_setup: bool = is_service_setup_for_testing(["GOOGLE_AI_API_KEY", "GOOGLE_AI_EMBEDDING_MODEL_ID"])
vertex_ai_setup: bool = is_service_setup_for_testing(["VERTEX_AI_PROJECT_ID", "VERTEX_AI_EMBEDDING_MODEL_ID"])
-ollama_setup: bool = is_service_setup_for_testing([
- "OLLAMA_EMBEDDING_MODEL_ID"
-]) and is_test_running_on_supported_platforms(["Linux"])
+ollama_setup: bool = is_service_setup_for_testing(["OLLAMA_EMBEDDING_MODEL_ID"])
+# When testing Bedrock, after logging into AWS CLI this has been set, so we can use it to check if the service is setup
+bedrock_setup: bool = is_service_setup_for_testing(["AWS_DEFAULT_REGION"], raise_if_not_set=False)
class EmbeddingServiceTestBase:
@pytest.fixture(scope="class")
- def services(self) -> dict[str, tuple[EmbeddingGeneratorBase, type[PromptExecutionSettings]]]:
+ def services(self) -> dict[str, tuple[EmbeddingGeneratorBase | None, type[PromptExecutionSettings]]]:
+ azure_openai_setup = True
azure_openai_settings = AzureOpenAISettings.create()
- endpoint = azure_openai_settings.endpoint
+ endpoint = str(azure_openai_settings.endpoint)
deployment_name = azure_openai_settings.embedding_deployment_name
ad_token = get_entra_auth_token(azure_openai_settings.token_endpoint)
+ if not ad_token:
+ azure_openai_setup = False
api_version = azure_openai_settings.api_version
- azure_custom_client = AzureTextEmbedding(
- async_client=AsyncAzureOpenAI(
- azure_endpoint=endpoint,
- azure_deployment=deployment_name,
- azure_ad_token=ad_token,
- api_version=api_version,
- default_headers={"Test-User-X-ID": "test"},
- ),
- )
- azure_ai_inference_client = AzureAIInferenceTextEmbedding(
- ai_model_id=deployment_name,
- client=EmbeddingsClient(
- endpoint=f"{str(endpoint).strip('/')}/openai/deployments/{deployment_name}",
- credential=DefaultAzureCredential(),
- credential_scopes=["https://cognitiveservices.azure.com/.default"],
- ),
- )
+ azure_custom_client = None
+ azure_ai_inference_client = None
+ if azure_openai_setup:
+ azure_custom_client = AzureTextEmbedding(
+ async_client=AsyncAzureOpenAI(
+ azure_endpoint=endpoint,
+ azure_deployment=deployment_name,
+ azure_ad_token=ad_token,
+ api_version=api_version,
+ default_headers={"Test-User-X-ID": "test"},
+ ),
+ )
+ azure_ai_inference_client = AzureAIInferenceTextEmbedding(
+ ai_model_id=deployment_name,
+ client=EmbeddingsClient(
+ endpoint=f"{endpoint.strip('/')}/openai/deployments/{deployment_name}",
+ credential=DefaultAzureCredential(),
+ credential_scopes=["https://cognitiveservices.azure.com/.default"],
+ ),
+ )
return {
"openai": (OpenAITextEmbedding(), OpenAIEmbeddingPromptExecutionSettings),
- "azure": (AzureTextEmbedding(), OpenAIEmbeddingPromptExecutionSettings),
+ "azure": (AzureTextEmbedding() if azure_openai_setup else None, OpenAIEmbeddingPromptExecutionSettings),
"azure_custom_client": (azure_custom_client, OpenAIEmbeddingPromptExecutionSettings),
"azure_ai_inference": (azure_ai_inference_client, AzureAIInferenceEmbeddingPromptExecutionSettings),
"mistral_ai": (
@@ -97,15 +104,15 @@ def services(self) -> dict[str, tuple[EmbeddingGeneratorBase, type[PromptExecuti
VertexAIEmbeddingPromptExecutionSettings,
),
"bedrock_amazon_titan-v1": (
- BedrockTextEmbedding(model_id="amazon.titan-embed-text-v1"),
+ BedrockTextEmbedding(model_id="amazon.titan-embed-text-v1") if bedrock_setup else None,
BedrockEmbeddingPromptExecutionSettings,
),
"bedrock_amazon_titan-v2": (
- BedrockTextEmbedding(model_id="amazon.titan-embed-text-v2:0"),
+ BedrockTextEmbedding(model_id="amazon.titan-embed-text-v2:0") if bedrock_setup else None,
BedrockEmbeddingPromptExecutionSettings,
),
"bedrock_cohere": (
- BedrockTextEmbedding(model_id="cohere.embed-english-v3"),
+ BedrockTextEmbedding(model_id="cohere.embed-english-v3") if bedrock_setup else None,
BedrockEmbeddingPromptExecutionSettings,
),
}
diff --git a/python/tests/integration/embeddings/test_embedding_service_with_memory.py b/python/tests/integration/embeddings/test_embedding_service_with_memory.py
index 3d31c6d53b07..fe05a975c831 100644
--- a/python/tests/integration/embeddings/test_embedding_service_with_memory.py
+++ b/python/tests/integration/embeddings/test_embedding_service_with_memory.py
@@ -54,7 +54,10 @@
pytest.param(
"ollama",
{},
- marks=pytest.mark.skipif(not ollama_setup, reason="Ollama environment variables not set"),
+ marks=(
+ pytest.mark.skipif(not ollama_setup, reason="Ollama environment variables not set"),
+ pytest.mark.ollama,
+ ),
id="ollama",
),
pytest.param(
@@ -89,7 +92,6 @@
)
-@pytest.mark.asyncio(scope="module")
class TestEmbeddingServiceWithMemory(EmbeddingServiceTestBase):
"""Test embedding service with memory.
@@ -104,6 +106,9 @@ async def test_embedding_service(
):
embedding_generator, settings_type = services[service_id]
+ if embedding_generator is None:
+ pytest.skip(f"Service {service_id} not set up")
+
memory = SemanticTextMemory(
storage=VolatileMemoryStore(),
embeddings_generator=embedding_generator,
diff --git a/python/tests/integration/memory/memory_stores/test_astradb_memory_store.py b/python/tests/integration/memory/memory_stores/test_astradb_memory_store.py
index 39ccf99fc09a..7f0bab31921b 100644
--- a/python/tests/integration/memory/memory_stores/test_astradb_memory_store.py
+++ b/python/tests/integration/memory/memory_stores/test_astradb_memory_store.py
@@ -40,7 +40,6 @@ def get_astradb_config():
pytest.skip("AsbtraDBSettings not found in env vars.")
-@pytest.mark.asyncio
async def test_constructor(get_astradb_config):
app_token, db_id, region, keyspace = get_astradb_config
memory = AstraDBMemoryStore(app_token, db_id, region, keyspace, 2, "cosine_similarity")
@@ -49,7 +48,6 @@ async def test_constructor(get_astradb_config):
assert result is not None
-@pytest.mark.asyncio
async def test_create_and_get_collection(get_astradb_config):
app_token, db_id, region, keyspace = get_astradb_config
memory = AstraDBMemoryStore(app_token, db_id, region, keyspace, 2, "cosine_similarity")
@@ -60,7 +58,6 @@ async def test_create_and_get_collection(get_astradb_config):
assert result is True
-@pytest.mark.asyncio
async def test_get_collections(get_astradb_config):
app_token, db_id, region, keyspace = get_astradb_config
memory = AstraDBMemoryStore(app_token, db_id, region, keyspace, 2, "cosine_similarity")
@@ -70,7 +67,6 @@ async def test_get_collections(get_astradb_config):
assert "test_collection" in result
-@pytest.mark.asyncio
async def test_delete_collection(get_astradb_config):
app_token, db_id, region, keyspace = get_astradb_config
memory = AstraDBMemoryStore(app_token, db_id, region, keyspace, 2, "cosine_similarity")
@@ -81,7 +77,6 @@ async def test_delete_collection(get_astradb_config):
assert "test_collection" not in result
-@pytest.mark.asyncio
async def test_does_collection_exist(get_astradb_config):
app_token, db_id, region, keyspace = get_astradb_config
memory = AstraDBMemoryStore(app_token, db_id, region, keyspace, 2, "cosine_similarity")
@@ -91,7 +86,6 @@ async def test_does_collection_exist(get_astradb_config):
assert result is True
-@pytest.mark.asyncio
async def test_upsert_and_get(get_astradb_config, memory_record1):
app_token, db_id, region, keyspace = get_astradb_config
memory = AstraDBMemoryStore(app_token, db_id, region, keyspace, 2, "cosine_similarity")
@@ -114,7 +108,6 @@ async def test_upsert_and_get(get_astradb_config, memory_record1):
assert result.embedding is not None
-@pytest.mark.asyncio
async def test_upsert_batch_and_get_batch(get_astradb_config, memory_record1, memory_record2):
app_token, db_id, region, keyspace = get_astradb_config
memory = AstraDBMemoryStore(app_token, db_id, region, keyspace, 2, "cosine_similarity")
@@ -135,7 +128,6 @@ async def test_upsert_batch_and_get_batch(get_astradb_config, memory_record1, me
assert results[1]._id in [memory_record1._id, memory_record2._id]
-@pytest.mark.asyncio
async def test_remove(get_astradb_config, memory_record1):
app_token, db_id, region, keyspace = get_astradb_config
memory = AstraDBMemoryStore(app_token, db_id, region, keyspace, 2, "cosine_similarity")
@@ -148,7 +140,6 @@ async def test_remove(get_astradb_config, memory_record1):
_ = await memory.get("test_collection", memory_record1._id, with_embedding=True)
-@pytest.mark.asyncio
async def test_remove_batch(get_astradb_config, memory_record1, memory_record2):
app_token, db_id, region, keyspace = get_astradb_config
memory = AstraDBMemoryStore(app_token, db_id, region, keyspace, 2, "cosine_similarity")
@@ -164,7 +155,6 @@ async def test_remove_batch(get_astradb_config, memory_record1, memory_record2):
_ = await memory.get("test_collection", memory_record2._id, with_embedding=True)
-@pytest.mark.asyncio
async def test_get_nearest_match(get_astradb_config, memory_record1, memory_record2):
app_token, db_id, region, keyspace = get_astradb_config
memory = AstraDBMemoryStore(app_token, db_id, region, keyspace, 2, "cosine_similarity")
@@ -188,7 +178,6 @@ async def test_get_nearest_match(get_astradb_config, memory_record1, memory_reco
assert result[0]._id == memory_record1._id
-@pytest.mark.asyncio
async def test_get_nearest_matches(get_astradb_config, memory_record1, memory_record2, memory_record3):
app_token, db_id, region, keyspace = get_astradb_config
memory = AstraDBMemoryStore(app_token, db_id, region, keyspace, 2, "cosine_similarity")
diff --git a/python/tests/integration/memory/memory_stores/test_azure_cog_search_memory_store.py b/python/tests/integration/memory/memory_stores/test_azure_cog_search_memory_store.py
index 7f6da78506ff..21fdbd07fec9 100644
--- a/python/tests/integration/memory/memory_stores/test_azure_cog_search_memory_store.py
+++ b/python/tests/integration/memory/memory_stores/test_azure_cog_search_memory_store.py
@@ -23,7 +23,6 @@
)
-@pytest.mark.asyncio
async def test_constructor():
test_endpoint = "https://test-endpoint.search.windows.net"
async with AzureCognitiveSearchMemoryStore(vector_size=4, search_endpoint=test_endpoint) as memory_store:
@@ -31,7 +30,6 @@ async def test_constructor():
assert memory_store._search_index_client is not None
-@pytest.mark.asyncio
async def test_collections():
collection = f"int-tests-{randint(1000, 9999)}"
async with AzureCognitiveSearchMemoryStore(vector_size=4) as memory_store:
@@ -51,7 +49,6 @@ async def test_collections():
assert not await memory_store.does_collection_exist(collection)
-@pytest.mark.asyncio
async def test_upsert():
collection = f"int-tests-{randint(1000, 9999)}"
async with AzureCognitiveSearchMemoryStore(vector_size=4) as memory_store:
@@ -84,7 +81,6 @@ async def test_upsert():
await memory_store.delete_collection(collection)
-@pytest.mark.asyncio
async def test_record_not_found():
collection = f"int-tests-{randint(1000, 9999)}"
async with AzureCognitiveSearchMemoryStore(vector_size=4) as memory_store:
@@ -122,7 +118,6 @@ async def test_record_not_found():
await memory_store.delete_collection(collection)
-@pytest.mark.asyncio
async def test_search():
collection = f"int-tests-{randint(1000, 9999)}"
async with AzureCognitiveSearchMemoryStore(vector_size=4) as memory_store:
diff --git a/python/tests/integration/memory/memory_stores/test_azure_cosmosdb_memory_store.py b/python/tests/integration/memory/memory_stores/test_azure_cosmosdb_memory_store.py
index a26e1586bfee..9fb065c1abcc 100644
--- a/python/tests/integration/memory/memory_stores/test_azure_cosmosdb_memory_store.py
+++ b/python/tests/integration/memory/memory_stores/test_azure_cosmosdb_memory_store.py
@@ -112,7 +112,6 @@ async def azurecosmosdb_memorystore() -> MemoryStoreBase:
)
-@pytest.mark.asyncio
@pytest.mark.skipif(skip_test, reason="Skipping test because AZCOSMOS_CONNSTR is not set")
async def test_create_get_drop_exists_collection():
store = await azurecosmosdb_memorystore()
@@ -129,7 +128,6 @@ async def test_create_get_drop_exists_collection():
assert result is False
-@pytest.mark.asyncio
@pytest.mark.skipif(skip_test, reason="Skipping test because AZCOSMOS_CONNSTR is not set")
async def test_upsert_and_get_and_remove(
memory_record1: MemoryRecord,
@@ -147,7 +145,6 @@ async def test_upsert_and_get_and_remove(
await store.remove("", memory_record1._id)
-@pytest.mark.asyncio
@pytest.mark.skipif(skip_test, reason="Skipping test because AZCOSMOS_CONNSTR is not set")
async def test_upsert_batch_and_get_batch_remove_batch(memory_record2: MemoryRecord, memory_record3: MemoryRecord):
store = await azurecosmosdb_memorystore()
@@ -163,7 +160,6 @@ async def test_upsert_batch_and_get_batch_remove_batch(memory_record2: MemoryRec
await store.remove_batch("", [memory_record2._id, memory_record3._id])
-@pytest.mark.asyncio
@pytest.mark.skipif(skip_test, reason="Skipping test because AZCOSMOS_CONNSTR is not set")
async def test_get_nearest_match(memory_record1: MemoryRecord, memory_record2: MemoryRecord):
store = await azurecosmosdb_memorystore()
@@ -182,7 +178,6 @@ async def test_get_nearest_match(memory_record1: MemoryRecord, memory_record2: M
await store.remove_batch("", [memory_record1._id, memory_record2._id])
-@pytest.mark.asyncio
@pytest.mark.skipif(skip_test, reason="Skipping test because AZCOSMOS_CONNSTR is not set")
async def test_get_nearest_matches(
memory_record1: MemoryRecord,
diff --git a/python/tests/integration/memory/memory_stores/test_azure_cosmosdb_no_sql_memory_store.py b/python/tests/integration/memory/memory_stores/test_azure_cosmosdb_no_sql_memory_store.py
index c6e893d79024..6b9a9833679c 100644
--- a/python/tests/integration/memory/memory_stores/test_azure_cosmosdb_no_sql_memory_store.py
+++ b/python/tests/integration/memory/memory_stores/test_azure_cosmosdb_no_sql_memory_store.py
@@ -58,7 +58,6 @@ async def azure_cosmosdb_no_sql_memory_store(cosmos_client, partition_key) -> Me
)
-@pytest.mark.asyncio
@pytest.mark.skipif(skip_test, reason="Skipping test because HOST or KEY is not set")
async def test_create_get_drop_exists_collection(azure_cosmosdb_no_sql_memory_store):
store = await azure_cosmosdb_no_sql_memory_store()
@@ -74,7 +73,6 @@ async def test_create_get_drop_exists_collection(azure_cosmosdb_no_sql_memory_st
assert result is False
-@pytest.mark.asyncio
@pytest.mark.skipif(skip_test, reason="Skipping test because HOST or KEY is not set")
async def test_upsert_and_get_and_remove(azure_cosmosdb_no_sql_memory_store):
store = await azure_cosmosdb_no_sql_memory_store()
@@ -92,7 +90,6 @@ async def test_upsert_and_get_and_remove(azure_cosmosdb_no_sql_memory_store):
await store.remove(container_name, record.id)
-@pytest.mark.asyncio
@pytest.mark.skipif(skip_test, reason="Skipping test because HOST or KEY is not set")
async def test_upsert_batch_and_get_batch_remove_batch(azure_cosmosdb_no_sql_memory_store):
store = await azure_cosmosdb_no_sql_memory_store()
@@ -111,7 +108,6 @@ async def test_upsert_batch_and_get_batch_remove_batch(azure_cosmosdb_no_sql_mem
await store.remove_batch(container_name, [record.id for record in records])
-@pytest.mark.asyncio
@pytest.mark.skipif(skip_test, reason="Skipping test because HOST or KEY is not set")
async def test_get_nearest_match(azure_cosmosdb_no_sql_memory_store):
store = await azure_cosmosdb_no_sql_memory_store()
@@ -130,7 +126,6 @@ async def test_get_nearest_match(azure_cosmosdb_no_sql_memory_store):
await store.remove_batch(container_name, [record.id for record in records])
-@pytest.mark.asyncio
@pytest.mark.skipif(skip_test, reason="Skipping test because HOST or KEY is not set")
async def test_get_nearest_matches(azure_cosmosdb_no_sql_memory_store):
store = await azure_cosmosdb_no_sql_memory_store()
diff --git a/python/tests/integration/memory/memory_stores/test_chroma_memory_store.py b/python/tests/integration/memory/memory_stores/test_chroma_memory_store.py
index c8bdb9187ccc..25d17b07e5ab 100644
--- a/python/tests/integration/memory/memory_stores/test_chroma_memory_store.py
+++ b/python/tests/integration/memory/memory_stores/test_chroma_memory_store.py
@@ -66,7 +66,6 @@ def test_constructor(setup_chroma):
assert memory._client is not None
-@pytest.mark.asyncio
async def test_create_and_get_collection(setup_chroma):
memory: ChromaMemoryStore = setup_chroma
@@ -75,7 +74,6 @@ async def test_create_and_get_collection(setup_chroma):
assert result.name == "test_collection"
-@pytest.mark.asyncio
async def test_get_collections(setup_chroma):
memory = setup_chroma
@@ -87,7 +85,6 @@ async def test_get_collections(setup_chroma):
assert len(result) == 3
-@pytest.mark.asyncio
async def test_delete_collection(setup_chroma):
memory = setup_chroma
@@ -97,7 +94,6 @@ async def test_delete_collection(setup_chroma):
assert len(result) == 0
-@pytest.mark.asyncio
async def test_does_collection_exist(setup_chroma):
memory = setup_chroma
await memory.create_collection("test_collection")
@@ -105,7 +101,6 @@ async def test_does_collection_exist(setup_chroma):
assert result is True
-@pytest.mark.asyncio
async def test_upsert_and_get(setup_chroma, memory_record1):
memory = setup_chroma
await memory.create_collection("test_collection")
@@ -124,7 +119,6 @@ async def test_upsert_and_get(setup_chroma, memory_record1):
assert result._timestamp == "timestamp"
-@pytest.mark.asyncio
async def test_upsert_and_get_with_no_embedding(setup_chroma, memory_record1):
memory = setup_chroma
await memory.create_collection("test_collection")
@@ -143,7 +137,6 @@ async def test_upsert_and_get_with_no_embedding(setup_chroma, memory_record1):
assert result._timestamp == "timestamp"
-@pytest.mark.asyncio
async def test_upsert_and_get_batch(setup_chroma, memory_record1, memory_record2):
memory = setup_chroma
await memory.create_collection("test_collection")
@@ -163,7 +156,6 @@ async def test_upsert_and_get_batch(setup_chroma, memory_record1, memory_record2
assert result[0]._timestamp == "timestamp"
-@pytest.mark.asyncio
async def test_remove(setup_chroma, memory_record1):
memory = setup_chroma
await memory.create_collection("test_collection")
@@ -177,7 +169,6 @@ async def test_remove(setup_chroma, memory_record1):
await memory.get(collection.name, "test_id1", True)
-@pytest.mark.asyncio
async def test_remove_batch(setup_chroma, memory_record1, memory_record2):
memory = setup_chroma
await memory.create_collection("test_collection")
@@ -190,7 +181,6 @@ async def test_remove_batch(setup_chroma, memory_record1, memory_record2):
assert result == []
-@pytest.mark.asyncio
async def test_get_nearest_matches(setup_chroma, memory_record1, memory_record2):
memory = setup_chroma
await memory.create_collection("test_collection")
@@ -205,7 +195,6 @@ async def test_get_nearest_matches(setup_chroma, memory_record1, memory_record2)
assert results[0][1] == pytest.approx(1, abs=1e-5)
-@pytest.mark.asyncio
async def test_get_nearest_match(setup_chroma, memory_record1, memory_record2):
memory = setup_chroma
await memory.create_collection("test_collection")
diff --git a/python/tests/integration/memory/memory_stores/test_milvus_memory_store.py b/python/tests/integration/memory/memory_stores/test_milvus_memory_store.py
index d6e37fbe6cc0..3edcabc9f363 100644
--- a/python/tests/integration/memory/memory_stores/test_milvus_memory_store.py
+++ b/python/tests/integration/memory/memory_stores/test_milvus_memory_store.py
@@ -36,7 +36,6 @@ def setup_milvus():
default_server.cleanup()
-@pytest.mark.asyncio
async def test_create_and_get_collection(setup_milvus):
URI, TOKEN = setup_milvus
memory = MilvusMemoryStore(uri=URI, token=TOKEN)
@@ -46,7 +45,6 @@ async def test_create_and_get_collection(setup_milvus):
assert result == ["test_collection"]
-@pytest.mark.asyncio
async def test_get_collections(setup_milvus):
URI, TOKEN = setup_milvus
memory = MilvusMemoryStore(uri=URI, token=TOKEN)
@@ -58,7 +56,6 @@ async def test_get_collections(setup_milvus):
assert len(result) == 3
-@pytest.mark.asyncio
async def test_delete_collection(setup_milvus):
URI, TOKEN = setup_milvus
memory = MilvusMemoryStore(uri=URI, token=TOKEN)
@@ -74,7 +71,6 @@ async def test_delete_collection(setup_milvus):
assert len(result) == 0
-@pytest.mark.asyncio
async def test_does_collection_exist(setup_milvus):
URI, TOKEN = setup_milvus
memory = MilvusMemoryStore(uri=URI, token=TOKEN)
@@ -87,7 +83,6 @@ async def test_does_collection_exist(setup_milvus):
assert result is False
-@pytest.mark.asyncio
async def test_upsert_and_get(memory_record1, setup_milvus):
URI, TOKEN = setup_milvus
memory = MilvusMemoryStore(uri=URI, token=TOKEN)
@@ -106,7 +101,6 @@ async def test_upsert_and_get(memory_record1, setup_milvus):
assert result._additional_metadata == "additional metadata"
-@pytest.mark.asyncio
async def test_upsert_and_get_with_no_embedding(memory_record1, setup_milvus):
URI, TOKEN = setup_milvus
memory = MilvusMemoryStore(uri=URI, token=TOKEN)
@@ -125,7 +119,6 @@ async def test_upsert_and_get_with_no_embedding(memory_record1, setup_milvus):
assert result._additional_metadata == "additional metadata"
-@pytest.mark.asyncio
async def test_upsert_and_get_batch(memory_record1, memory_record2, setup_milvus):
URI, TOKEN = setup_milvus
memory = MilvusMemoryStore(uri=URI, token=TOKEN)
@@ -145,7 +138,6 @@ async def test_upsert_and_get_batch(memory_record1, memory_record2, setup_milvus
assert result[0]._additional_metadata == "additional metadata"
-@pytest.mark.asyncio
async def test_remove(memory_record1, setup_milvus):
URI, TOKEN = setup_milvus
memory = MilvusMemoryStore(uri=URI, token=TOKEN)
@@ -160,7 +152,6 @@ async def test_remove(memory_record1, setup_milvus):
await memory.get("test_collection", "test_id1", True)
-@pytest.mark.asyncio
async def test_remove_batch(memory_record1, memory_record2, setup_milvus):
URI, TOKEN = setup_milvus
memory = MilvusMemoryStore(uri=URI, token=TOKEN)
@@ -174,7 +165,6 @@ async def test_remove_batch(memory_record1, memory_record2, setup_milvus):
assert result == []
-@pytest.mark.asyncio
async def test_get_nearest_matches(memory_record1, memory_record2, setup_milvus):
URI, TOKEN = setup_milvus
memory = MilvusMemoryStore(uri=URI, token=TOKEN)
@@ -187,7 +177,6 @@ async def test_get_nearest_matches(memory_record1, memory_record2, setup_milvus)
assert results[0][1] == pytest.approx(0.5, abs=1e-5)
-@pytest.mark.asyncio
async def test_get_nearest_match(memory_record1, memory_record2, setup_milvus):
URI, TOKEN = setup_milvus
memory = MilvusMemoryStore(uri=URI, token=TOKEN)
diff --git a/python/tests/integration/memory/memory_stores/test_mongodb_atlas_memory_store.py b/python/tests/integration/memory/memory_stores/test_mongodb_atlas_memory_store.py
index d8a21e9aaf74..303a3e480845 100644
--- a/python/tests/integration/memory/memory_stores/test_mongodb_atlas_memory_store.py
+++ b/python/tests/integration/memory/memory_stores/test_mongodb_atlas_memory_store.py
@@ -129,12 +129,10 @@ async def nearest_match_store(memory):
await memory.__aexit__(None, None, None)
-@pytest.mark.asyncio
async def test_constructor(memory):
assert isinstance(memory, MongoDBAtlasMemoryStore)
-@pytest.mark.asyncio
async def test_collection_create_and_delete(vector_search_store, test_collection):
await vector_search_store.create_collection(test_collection)
assert await vector_search_store.does_collection_exist(test_collection)
@@ -142,21 +140,18 @@ async def test_collection_create_and_delete(vector_search_store, test_collection
assert not await vector_search_store.does_collection_exist(test_collection)
-@pytest.mark.asyncio
async def test_collection_upsert(vector_search_store, test_collection, memory_record_gen):
mems = [memory_record_gen(i) for i in range(1, 4)]
mem1 = await vector_search_store.upsert(test_collection, mems[0])
assert mem1 == mems[0]._id
-@pytest.mark.asyncio
async def test_collection_batch_upsert(vector_search_store, test_collection, memory_record_gen):
mems = [memory_record_gen(i) for i in range(1, 4)]
mems_check = await vector_search_store.upsert_batch(test_collection, mems)
assert [m._id for m in mems] == mems_check
-@pytest.mark.asyncio
async def test_collection_deletion(vector_search_store, test_collection, memory_record_gen):
mem = memory_record_gen(1)
await vector_search_store.upsert(test_collection, mem)
@@ -169,7 +164,6 @@ async def test_collection_deletion(vector_search_store, test_collection, memory_
assert val is None
-@pytest.mark.asyncio
async def test_collection_batch_deletion(vector_search_store, test_collection, memory_record_gen):
mems = [memory_record_gen(i) for i in range(1, 4)]
await vector_search_store.upsert_batch(test_collection, mems)
@@ -180,7 +174,6 @@ async def test_collection_batch_deletion(vector_search_store, test_collection, m
assert not await vector_search_store.get_batch(test_collection, ids, False)
-@pytest.mark.asyncio
async def test_collection_get(vector_search_store, test_collection, memory_record_gen):
mem = memory_record_gen(1)
await vector_search_store.upsert(test_collection, mem)
@@ -191,7 +184,6 @@ async def test_collection_get(vector_search_store, test_collection, memory_recor
is_equal_memory_record(mem, refetched_record, True)
-@pytest.mark.asyncio
async def test_collection_batch_get(vector_search_store, test_collection, memory_record_gen):
mems = {str(i): memory_record_gen(i) for i in range(1, 4)}
await vector_search_store.upsert_batch(test_collection, list(mems.values()))
@@ -205,7 +197,6 @@ async def test_collection_batch_get(vector_search_store, test_collection, memory
is_equal_memory_record(mems[ref._id], ref, True)
-@pytest.mark.asyncio
async def test_collection_knn_match(nearest_match_store, memory_record_gen):
mem = memory_record_gen(7)
await nearest_match_store.upsert(READ_ONLY_COLLECTION, mem)
@@ -218,7 +209,6 @@ async def test_collection_knn_match(nearest_match_store, memory_record_gen):
assert score
-@pytest.mark.asyncio
async def test_collection_knn_match_with_score(nearest_match_store, memory_record_gen):
mem = memory_record_gen(7)
await nearest_match_store.upsert(READ_ONLY_COLLECTION, mem)
@@ -254,7 +244,6 @@ async def knn_matcher(
is_equal_memory_record(mems[result._id], result, True)
-@pytest.mark.asyncio
async def test_collection_knn_matches(nearest_match_store, memory_record_gen):
mems = {str(i): memory_record_gen(i) for i in range(1, 4)}
await nearest_match_store.upsert_batch(READ_ONLY_COLLECTION, mems.values())
@@ -268,7 +257,6 @@ async def test_collection_knn_matches(nearest_match_store, memory_record_gen):
)
-@pytest.mark.asyncio
async def test_collection_knn_matches_with_score(nearest_match_store, memory_record_gen):
mems = {str(i): memory_record_gen(i) for i in range(1, 4)}
await nearest_match_store.upsert_batch(READ_ONLY_COLLECTION, mems.values())
diff --git a/python/tests/integration/memory/memory_stores/test_pinecone_memory_store.py b/python/tests/integration/memory/memory_stores/test_pinecone_memory_store.py
index 58c58bd9724b..fa4f2a36ee4a 100644
--- a/python/tests/integration/memory/memory_stores/test_pinecone_memory_store.py
+++ b/python/tests/integration/memory/memory_stores/test_pinecone_memory_store.py
@@ -74,13 +74,11 @@ def memory_record3():
)
-@pytest.mark.asyncio
async def test_constructor(api_key):
memory = PineconeMemoryStore(api_key, 2)
assert await memory.get_collections() is not None
-@pytest.mark.asyncio
@pytest.mark.xfail(reason="Test failed due to known unreliable communications with Pinecone free tier")
async def test_create_and_get_collection(api_key):
memory = PineconeMemoryStore(api_key, 2)
@@ -91,7 +89,6 @@ async def test_create_and_get_collection(api_key):
assert result.name == "test-collection"
-@pytest.mark.asyncio
@pytest.mark.xfail(reason="Test failed due to known unreliable communications with Pinecone free tier")
async def test_get_collections(api_key):
memory = PineconeMemoryStore(api_key, 2)
@@ -101,7 +98,6 @@ async def test_get_collections(api_key):
assert "test-collection" in result.names()
-@pytest.mark.asyncio
@pytest.mark.xfail(reason="Test failed due to known unreliable communications with Pinecone free tier")
async def test_delete_collection(api_key):
memory = PineconeMemoryStore(api_key, 2)
@@ -112,7 +108,6 @@ async def test_delete_collection(api_key):
assert "test-collection" not in result.names()
-@pytest.mark.asyncio
@pytest.mark.xfail(reason="Test failed due to known unreliable communications with Pinecone free tier")
async def test_does_collection_exist(api_key):
memory = PineconeMemoryStore(api_key, 2)
@@ -122,7 +117,6 @@ async def test_does_collection_exist(api_key):
assert result is True
-@pytest.mark.asyncio
@pytest.mark.xfail(reason="Test failed due to known unreliable communications with Pinecone free tier")
async def test_upsert_and_get(api_key, memory_record1):
memory = PineconeMemoryStore(api_key, 2)
@@ -145,7 +139,6 @@ async def test_upsert_and_get(api_key, memory_record1):
assert result.embedding is not None
-@pytest.mark.asyncio
@pytest.mark.xfail(reason="Test failed due to known unreliable communications with Pinecone free tier")
async def test_upsert_batch_and_get_batch(api_key, memory_record1, memory_record2):
memory = PineconeMemoryStore(api_key, 2)
@@ -166,7 +159,6 @@ async def test_upsert_batch_and_get_batch(api_key, memory_record1, memory_record
assert results[1]._id in [memory_record1._id, memory_record2._id]
-@pytest.mark.asyncio
@pytest.mark.xfail(reason="Test failed due to known unreliable communications with Pinecone free tier")
async def test_remove(api_key, memory_record1):
memory = PineconeMemoryStore(api_key, 2)
@@ -179,7 +171,6 @@ async def test_remove(api_key, memory_record1):
_ = await memory.get("test-collection", memory_record1._id, with_embedding=True)
-@pytest.mark.asyncio
@pytest.mark.xfail(reason="Test failed due to known unreliable communications with Pinecone free tier")
async def test_remove_batch(api_key, memory_record1, memory_record2):
memory = PineconeMemoryStore(api_key, 2)
@@ -195,7 +186,6 @@ async def test_remove_batch(api_key, memory_record1, memory_record2):
_ = await memory.get("test-collection", memory_record2._id, with_embedding=True)
-@pytest.mark.asyncio
@pytest.mark.xfail(reason="Test failed due to known unreliable communications with Pinecone free tier")
async def test_get_nearest_match(api_key, memory_record1, memory_record2):
memory = PineconeMemoryStore(api_key, 2)
@@ -219,7 +209,6 @@ async def test_get_nearest_match(api_key, memory_record1, memory_record2):
assert result[0]._id == memory_record1._id
-@pytest.mark.asyncio
@pytest.mark.xfail(reason="Test failed due to known unreliable communications with Pinecone free tier")
async def test_get_nearest_matches(api_key, memory_record1, memory_record2, memory_record3):
memory = PineconeMemoryStore(api_key, 2)
diff --git a/python/tests/integration/memory/memory_stores/test_postgres_memory_store.py b/python/tests/integration/memory/memory_stores/test_postgres_memory_store.py
index 52ceb5b7d80d..5fe8302f859f 100644
--- a/python/tests/integration/memory/memory_stores/test_postgres_memory_store.py
+++ b/python/tests/integration/memory/memory_stores/test_postgres_memory_store.py
@@ -55,7 +55,6 @@ def test_constructor(connection_string):
assert memory._connection_pool is not None
-@pytest.mark.asyncio
async def test_create_and_does_collection_exist(connection_string):
with PostgresMemoryStore(connection_string, 2, 1, 5) as memory:
await memory.create_collection("test_collection")
@@ -63,7 +62,6 @@ async def test_create_and_does_collection_exist(connection_string):
assert result is not None
-@pytest.mark.asyncio
async def test_get_collections(connection_string):
with PostgresMemoryStore(connection_string, 2, 1, 5) as memory:
try:
@@ -74,7 +72,6 @@ async def test_get_collections(connection_string):
pytest.skip("PoolTimeout exception raised, skipping test.")
-@pytest.mark.asyncio
async def test_delete_collection(connection_string):
with PostgresMemoryStore(connection_string, 2, 1, 5) as memory:
try:
@@ -90,7 +87,6 @@ async def test_delete_collection(connection_string):
pytest.skip("PoolTimeout exception raised, skipping test.")
-@pytest.mark.asyncio
async def test_does_collection_exist(connection_string):
with PostgresMemoryStore(connection_string, 2, 1, 5) as memory:
try:
@@ -101,7 +97,6 @@ async def test_does_collection_exist(connection_string):
pytest.skip("PoolTimeout exception raised, skipping test.")
-@pytest.mark.asyncio
async def test_upsert_and_get(connection_string, memory_record1):
with PostgresMemoryStore(connection_string, 2, 1, 5) as memory:
try:
@@ -118,7 +113,6 @@ async def test_upsert_and_get(connection_string, memory_record1):
pytest.skip("PoolTimeout exception raised, skipping test.")
-@pytest.mark.asyncio
async def test_upsert_batch_and_get_batch(connection_string, memory_record1, memory_record2):
with PostgresMemoryStore(connection_string, 2, 1, 5) as memory:
try:
@@ -137,7 +131,6 @@ async def test_upsert_batch_and_get_batch(connection_string, memory_record1, mem
pytest.skip("PoolTimeout exception raised, skipping test.")
-@pytest.mark.asyncio
async def test_remove(connection_string, memory_record1):
with PostgresMemoryStore(connection_string, 2, 1, 5) as memory:
try:
@@ -154,7 +147,6 @@ async def test_remove(connection_string, memory_record1):
pytest.skip("PoolTimeout exception raised, skipping test.")
-@pytest.mark.asyncio
async def test_remove_batch(connection_string, memory_record1, memory_record2):
with PostgresMemoryStore(connection_string, 2, 1, 5) as memory:
try:
@@ -174,7 +166,6 @@ async def test_remove_batch(connection_string, memory_record1, memory_record2):
pytest.skip("PoolTimeout exception raised, skipping test.")
-@pytest.mark.asyncio
async def test_get_nearest_match(connection_string, memory_record1, memory_record2):
with PostgresMemoryStore(connection_string, 2, 1, 5) as memory:
try:
@@ -196,7 +187,6 @@ async def test_get_nearest_match(connection_string, memory_record1, memory_recor
pytest.skip("PoolTimeout exception raised, skipping test.")
-@pytest.mark.asyncio
async def test_get_nearest_matches(connection_string, memory_record1, memory_record2, memory_record3):
with PostgresMemoryStore(connection_string, 2, 1, 5) as memory:
try:
diff --git a/python/tests/integration/memory/memory_stores/test_qdrant_memory_store.py b/python/tests/integration/memory/memory_stores/test_qdrant_memory_store.py
index ba771d1df918..835079f8448a 100644
--- a/python/tests/integration/memory/memory_stores/test_qdrant_memory_store.py
+++ b/python/tests/integration/memory/memory_stores/test_qdrant_memory_store.py
@@ -21,7 +21,6 @@ def test_qdrant_constructor():
assert qdrant_mem_store._qdrantclient is not None
-@pytest.mark.asyncio
async def test_create_and_get_collection():
qdrant_mem_store = QdrantMemoryStore(vector_size=TEST_VECTOR_SIZE, local=True)
@@ -30,7 +29,6 @@ async def test_create_and_get_collection():
assert result.status == "green"
-@pytest.mark.asyncio
async def test_get_collections():
qdrant_mem_store = QdrantMemoryStore(vector_size=TEST_VECTOR_SIZE, local=True)
@@ -41,7 +39,6 @@ async def test_get_collections():
assert len(result) == 3
-@pytest.mark.asyncio
async def test_delete_collection():
qdrant_mem_store = QdrantMemoryStore(vector_size=TEST_VECTOR_SIZE, local=True)
@@ -55,7 +52,6 @@ async def test_delete_collection():
assert len(result) == 0
-@pytest.mark.asyncio
async def test_does_collection_exist():
qdrant_mem_store = QdrantMemoryStore(vector_size=TEST_VECTOR_SIZE, local=True)
@@ -66,7 +62,6 @@ async def test_does_collection_exist():
assert result is False
-@pytest.mark.asyncio
async def test_upsert_and_get(memory_record1):
qdrant_mem_store = QdrantMemoryStore(vector_size=TEST_VECTOR_SIZE, local=True)
@@ -78,7 +73,6 @@ async def test_upsert_and_get(memory_record1):
assert result._text == memory_record1._text
-@pytest.mark.asyncio
async def test_overwrite(memory_record1):
qdrant_mem_store = QdrantMemoryStore(vector_size=TEST_VECTOR_SIZE, local=True)
@@ -87,7 +81,6 @@ async def test_overwrite(memory_record1):
await qdrant_mem_store.upsert("test_collection", memory_record1)
-@pytest.mark.asyncio
async def test_upsert_batch_and_get_batch(memory_record1, memory_record2):
qdrant_mem_store = QdrantMemoryStore(vector_size=TEST_VECTOR_SIZE, local=True)
@@ -105,7 +98,6 @@ async def test_upsert_batch_and_get_batch(memory_record1, memory_record2):
assert results[1]._id in [memory_record1._id, memory_record2._id]
-@pytest.mark.asyncio
async def test_remove(memory_record1):
qdrant_mem_store = QdrantMemoryStore(vector_size=TEST_VECTOR_SIZE, local=True)
@@ -121,7 +113,6 @@ async def test_remove(memory_record1):
assert result is None
-@pytest.mark.asyncio
async def test_remove_batch(memory_record1, memory_record2):
qdrant_mem_store = QdrantMemoryStore(vector_size=TEST_VECTOR_SIZE, local=True)
@@ -138,7 +129,6 @@ async def test_remove_batch(memory_record1, memory_record2):
assert result is None
-@pytest.mark.asyncio
async def test_get_nearest_match(memory_record1, memory_record2):
qdrant_mem_store = QdrantMemoryStore(vector_size=TEST_VECTOR_SIZE, local=True)
@@ -153,7 +143,6 @@ async def test_get_nearest_match(memory_record1, memory_record2):
assert result[0]._text == memory_record1._text
-@pytest.mark.asyncio
async def test_get_nearest_matches(memory_record1, memory_record2, memory_record3):
qdrant_mem_store = QdrantMemoryStore(vector_size=TEST_VECTOR_SIZE, local=True)
diff --git a/python/tests/integration/memory/memory_stores/test_redis_memory_store.py b/python/tests/integration/memory/memory_stores/test_redis_memory_store.py
index 15de70642943..1142bf53a3d3 100644
--- a/python/tests/integration/memory/memory_stores/test_redis_memory_store.py
+++ b/python/tests/integration/memory/memory_stores/test_redis_memory_store.py
@@ -51,7 +51,6 @@ def test_constructor(memory_store):
assert memory and memory._database.ping()
-@pytest.mark.asyncio
async def test_create_and_does_collection_exist(memory_store):
memory = memory_store
@@ -60,7 +59,6 @@ async def test_create_and_does_collection_exist(memory_store):
assert exists
-@pytest.mark.asyncio
async def test_delete_collection(memory_store):
memory = memory_store
@@ -74,7 +72,6 @@ async def test_delete_collection(memory_store):
await memory.delete_collection(TEST_COLLECTION_NAME)
-@pytest.mark.asyncio
async def test_get_collections(memory_store):
memory = memory_store
@@ -88,7 +85,6 @@ async def test_get_collections(memory_store):
await memory.delete_collection(c_n)
-@pytest.mark.asyncio
async def test_does_collection_exist(memory_store):
memory = memory_store
@@ -101,7 +97,6 @@ async def test_does_collection_exist(memory_store):
assert not exists
-@pytest.mark.asyncio
async def test_upsert_and_get(memory_store, memory_record1):
memory = memory_store
@@ -131,7 +126,6 @@ async def test_upsert_and_get(memory_store, memory_record1):
assert fetch_1._text == memory_record1._text, "Did not update record"
-@pytest.mark.asyncio
async def test_upsert_batch_and_get_batch(memory_store, memory_record1, memory_record2):
memory = memory_store
@@ -147,7 +141,6 @@ async def test_upsert_batch_and_get_batch(memory_store, memory_record1, memory_r
assert f._id in ids
-@pytest.mark.asyncio
async def test_remove(memory_store, memory_record1):
memory = memory_store
@@ -160,7 +153,6 @@ async def test_remove(memory_store, memory_record1):
assert not get_record, "Record was not removed"
-@pytest.mark.asyncio
async def test_remove_batch(memory_store, memory_record1, memory_record2):
memory = memory_store
@@ -174,7 +166,6 @@ async def test_remove_batch(memory_store, memory_record1, memory_record2):
assert len(get_records) == 0, "Records were not removed"
-@pytest.mark.asyncio
async def test_get_nearest_match(memory_store, memory_record1, memory_record2):
memory = memory_store
@@ -202,7 +193,6 @@ async def test_get_nearest_match(memory_store, memory_record1, memory_record2):
assert result[0]._embedding[i] == memory_record1._embedding[i]
-@pytest.mark.asyncio
async def test_get_nearest_matches(memory_store, memory_record1, memory_record2, memory_record3):
memory = memory_store
diff --git a/python/tests/integration/memory/memory_stores/test_usearch_memory_store.py b/python/tests/integration/memory/memory_stores/test_usearch_memory_store.py
index e4adb8b0433a..4259650b45a5 100644
--- a/python/tests/integration/memory/memory_stores/test_usearch_memory_store.py
+++ b/python/tests/integration/memory/memory_stores/test_usearch_memory_store.py
@@ -130,7 +130,6 @@ def compare_memory_records(record1: MemoryRecord, record2: MemoryRecord, with_em
assert record1._embedding == pytest.approx(record2._embedding, abs=1e-2), "_embedding arrays are not equal"
-@pytest.mark.asyncio
async def test_create_and_get_collection():
memory = USearchMemoryStore()
@@ -143,7 +142,6 @@ async def test_create_and_get_collection():
assert result == ["test_collection1", "test_collection2", "test_collection3"]
-@pytest.mark.asyncio
async def test_delete_collection():
memory = USearchMemoryStore()
@@ -158,7 +156,6 @@ async def test_delete_collection():
assert len(result) == 0
-@pytest.mark.asyncio
async def test_does_collection_exist():
memory = USearchMemoryStore()
await memory.create_collection("test_collection")
@@ -169,7 +166,6 @@ async def test_does_collection_exist():
assert result is True
-@pytest.mark.asyncio
async def test_upsert_and_get_with_no_embedding(memory_record1: MemoryRecord):
memory = USearchMemoryStore()
await memory.create_collection("test_collection", ndim=2)
@@ -179,7 +175,6 @@ async def test_upsert_and_get_with_no_embedding(memory_record1: MemoryRecord):
compare_memory_records(result, memory_record1, False)
-@pytest.mark.asyncio
async def test_upsert_and_get_with_embedding(memory_record1: MemoryRecord):
memory = USearchMemoryStore()
await memory.create_collection("test_collection", ndim=2)
@@ -189,7 +184,6 @@ async def test_upsert_and_get_with_embedding(memory_record1: MemoryRecord):
compare_memory_records(result, memory_record1, True)
-@pytest.mark.asyncio
async def test_upsert_and_get_batch(memory_record1: MemoryRecord, memory_record2: MemoryRecord):
memory = USearchMemoryStore()
await memory.create_collection("test_collection", ndim=memory_record1.embedding.shape[0])
@@ -203,7 +197,6 @@ async def test_upsert_and_get_batch(memory_record1: MemoryRecord, memory_record2
compare_memory_records(result[1], memory_record2, True)
-@pytest.mark.asyncio
async def test_remove(memory_record1):
memory = USearchMemoryStore()
await memory.create_collection("test_collection", ndim=memory_record1.embedding.shape[0])
@@ -216,7 +209,6 @@ async def test_remove(memory_record1):
await memory.get("test_collection", "test_id1", True)
-@pytest.mark.asyncio
async def test_remove_batch(memory_record1: MemoryRecord, memory_record2: MemoryRecord):
memory = USearchMemoryStore()
await memory.create_collection("test_collection", ndim=memory_record1.embedding.shape[0])
@@ -228,7 +220,6 @@ async def test_remove_batch(memory_record1: MemoryRecord, memory_record2: Memory
assert len(result) == 0
-@pytest.mark.asyncio
async def test_get_nearest_match(memory_record1: MemoryRecord, memory_record2: MemoryRecord):
memory = USearchMemoryStore()
@@ -244,7 +235,6 @@ async def test_get_nearest_match(memory_record1: MemoryRecord, memory_record2: M
assert result[1] == pytest.approx(1, abs=1e-2)
-@pytest.mark.asyncio
async def test_get_nearest_matches(memory_record1: MemoryRecord, memory_record2: MemoryRecord):
memory = USearchMemoryStore()
@@ -261,7 +251,6 @@ async def test_get_nearest_matches(memory_record1: MemoryRecord, memory_record2:
assert results[1][1] == pytest.approx(0.90450, abs=1e-2)
-@pytest.mark.asyncio
async def test_create_and_save_collection(tmpdir, memory_record1, memory_record2, memory_record3):
memory = USearchMemoryStore(tmpdir)
@@ -300,7 +289,6 @@ async def test_create_and_save_collection(tmpdir, memory_record1, memory_record2
assert len(result) == 0
-@pytest.mark.asyncio
async def test_upsert_and_get_with_embedding_with_persist(
tmpdir, memory_record1: MemoryRecord, memory_record1_with_collision: MemoryRecord
):
@@ -326,7 +314,6 @@ async def test_upsert_and_get_with_embedding_with_persist(
compare_memory_records(result, memory_record1_with_collision, True)
-@pytest.mark.asyncio
async def test_remove_get(memory_record1: MemoryRecord, memory_record2: MemoryRecord):
memory = USearchMemoryStore()
await memory.create_collection("test_collection", ndim=memory_record1.embedding.shape[0])
diff --git a/python/tests/integration/memory/memory_stores/test_weaviate_memory_store.py b/python/tests/integration/memory/memory_stores/test_weaviate_memory_store.py
index 0b95f91a2b01..0bda901c5eb8 100644
--- a/python/tests/integration/memory/memory_stores/test_weaviate_memory_store.py
+++ b/python/tests/integration/memory/memory_stores/test_weaviate_memory_store.py
@@ -122,7 +122,6 @@ def test_embedded_weaviate():
assert memory_store.client._connection.embedded_db
-@pytest.mark.asyncio
async def test_create_collection(memory_store):
collection_name = "MemoryVault"
await memory_store.create_collection(collection_name)
@@ -130,7 +129,6 @@ async def test_create_collection(memory_store):
assert memory_store.client.schema.get(collection_name)
-@pytest.mark.asyncio
async def test_get_collections(memory_store):
collection_names = ["MemoryVault", "ThoughtArchive"]
@@ -142,7 +140,6 @@ async def test_get_collections(memory_store):
assert set(results) == set(collection_names)
-@pytest.mark.asyncio
async def test_delete_collection(memory_store_with_empty_collection):
collection_name, memory_store = memory_store_with_empty_collection
@@ -155,7 +152,6 @@ async def test_delete_collection(memory_store_with_empty_collection):
assert len(schemas) == 0
-@pytest.mark.asyncio
async def test_collection_exists(memory_store_with_empty_collection):
collection_name, memory_store = memory_store_with_empty_collection
@@ -165,7 +161,6 @@ async def test_collection_exists(memory_store_with_empty_collection):
assert not await memory_store.does_collection_exist("NotACollection")
-@pytest.mark.asyncio
async def test_upsert(memory_store_with_empty_collection, documents):
collection_name, memory_store = memory_store_with_empty_collection
@@ -176,7 +171,6 @@ async def test_upsert(memory_store_with_empty_collection, documents):
assert total_docs == 2
-@pytest.mark.asyncio
async def test_upsert_batch(memory_store_with_empty_collection, documents):
collection_name, memory_store = memory_store_with_empty_collection
@@ -186,7 +180,6 @@ async def test_upsert_batch(memory_store_with_empty_collection, documents):
assert total_docs == len(documents)
-@pytest.mark.asyncio
async def test_get(memory_store_with_collection, documents):
collection_name, memory_store = memory_store_with_collection
@@ -206,7 +199,6 @@ async def test_get(memory_store_with_collection, documents):
assert actual_result is None
-@pytest.mark.asyncio
async def test_get_batch(memory_store_with_collection, documents):
collection_name, memory_store = memory_store_with_collection
@@ -226,7 +218,6 @@ async def test_get_batch(memory_store_with_collection, documents):
npt.assert_equal(expected.__dict__, actual.__dict__)
-@pytest.mark.asyncio
async def test_remove_batch(memory_store_with_collection, documents):
collection_name, memory_store = memory_store_with_collection
@@ -238,7 +229,6 @@ async def test_remove_batch(memory_store_with_collection, documents):
assert remaining_docs == len(documents) - len(keys)
-@pytest.mark.asyncio
async def test_remove(memory_store_with_collection, documents):
collection_name, memory_store = memory_store_with_collection
@@ -250,7 +240,6 @@ async def test_remove(memory_store_with_collection, documents):
assert remaining_docs == len(documents) - 1
-@pytest.mark.asyncio
async def test_get_nearest_matches(memory_store_with_collection, documents):
collection_name, memory_store = memory_store_with_collection
@@ -279,7 +268,6 @@ async def test_get_nearest_matches(memory_store_with_collection, documents):
npt.assert_equal(expected.__dict__, actual.__dict__)
-@pytest.mark.asyncio
async def test_get_nearest_match(memory_store_with_collection, documents):
collection_name, memory_store = memory_store_with_collection
diff --git a/python/tests/integration/memory/vector_stores/azure_cosmos_db/test_azure_cosmos_db_no_sql.py b/python/tests/integration/memory/vector_stores/azure_cosmos_db/test_azure_cosmos_db_no_sql.py
index 51675b06831b..5ecdddd6835d 100644
--- a/python/tests/integration/memory/vector_stores/azure_cosmos_db/test_azure_cosmos_db_no_sql.py
+++ b/python/tests/integration/memory/vector_stores/azure_cosmos_db/test_azure_cosmos_db_no_sql.py
@@ -24,7 +24,6 @@
class TestCosmosDBNoSQL(VectorStoreTestBase):
"""Test Cosmos DB NoSQL store functionality."""
- @pytest.mark.asyncio
async def test_list_collection_names(
self,
stores: dict[str, VectorStore],
@@ -49,7 +48,6 @@ async def test_list_collection_names(
# Deleting the collection doesn't remove it from the vector_record_collections list in the store
assert collection_name in store.vector_record_collections
- @pytest.mark.asyncio
async def test_collection_not_created(
self,
stores: dict[str, VectorStore],
@@ -79,7 +77,6 @@ async def test_collection_not_created(
with pytest.raises(MemoryConnectorException, match="Container could not be deleted."):
await collection.delete_collection()
- @pytest.mark.asyncio
async def test_custom_partition_key(
self,
stores: dict[str, VectorStore],
@@ -117,7 +114,6 @@ async def test_custom_partition_key(
await collection.delete_collection()
assert await collection.does_collection_exist() is False
- @pytest.mark.asyncio
async def test_get_include_vector(
self,
stores: dict[str, VectorStore],
@@ -148,7 +144,6 @@ async def test_get_include_vector(
await collection.delete_collection()
assert await collection.does_collection_exist() is False
- @pytest.mark.asyncio
async def test_get_not_include_vector(
self,
stores: dict[str, VectorStore],
@@ -179,7 +174,6 @@ async def test_get_not_include_vector(
await collection.delete_collection()
assert await collection.does_collection_exist() is False
- @pytest.mark.asyncio
async def test_collection_with_key_as_key_field(
self,
stores: dict[str, VectorStore],
@@ -211,7 +205,6 @@ async def test_collection_with_key_as_key_field(
await collection.delete_collection()
assert await collection.does_collection_exist() is False
- @pytest.mark.asyncio
async def test_custom_client(
self,
data_model_type: type,
diff --git a/python/tests/integration/memory/vector_stores/postgres/test_postgres_int.py b/python/tests/integration/memory/vector_stores/postgres/test_postgres_int.py
index c7a93209d9af..fb280e047a39 100644
--- a/python/tests/integration/memory/vector_stores/postgres/test_postgres_int.py
+++ b/python/tests/integration/memory/vector_stores/postgres/test_postgres_int.py
@@ -85,7 +85,7 @@ def DataModelPandas(record) -> tuple:
return definition, df
-@pytest_asyncio.fixture()
+@pytest_asyncio.fixture
async def vector_store() -> AsyncGenerator[PostgresStore, None]:
try:
async with await pg_settings.create_connection_pool() as pool:
@@ -119,7 +119,6 @@ def test_create_store(vector_store):
assert vector_store.connection_pool is not None
-@pytest.mark.asyncio()
async def test_create_does_collection_exist_and_delete(vector_store: PostgresStore):
suffix = str(uuid.uuid4()).replace("-", "")[:8]
@@ -137,7 +136,6 @@ async def test_create_does_collection_exist_and_delete(vector_store: PostgresSto
assert does_exist_3 is False
-@pytest.mark.asyncio()
async def test_list_collection_names(vector_store):
async with create_simple_collection(vector_store) as simple_collection:
simple_collection_id = simple_collection.collection_name
@@ -145,7 +143,6 @@ async def test_list_collection_names(vector_store):
assert simple_collection_id in result
-@pytest.mark.asyncio()
async def test_upsert_get_and_delete(vector_store: PostgresStore):
record = SimpleDataModel(id=1, embedding=[1.1, 2.2, 3.3], data={"key": "value"})
async with create_simple_collection(vector_store) as simple_collection:
@@ -174,7 +171,6 @@ async def test_upsert_get_and_delete(vector_store: PostgresStore):
assert result_after_delete is None
-@pytest.mark.asyncio()
async def test_upsert_get_and_delete_pandas(vector_store):
record = SimpleDataModel(id=1, embedding=[1.1, 2.2, 3.3], data={"key": "value"})
definition, df = DataModelPandas(record.model_dump())
@@ -204,7 +200,6 @@ async def test_upsert_get_and_delete_pandas(vector_store):
await collection.delete_collection()
-@pytest.mark.asyncio()
async def test_upsert_get_and_delete_batch(vector_store: PostgresStore):
async with create_simple_collection(vector_store) as simple_collection:
record1 = SimpleDataModel(id=1, embedding=[1.1, 2.2, 3.3], data={"key": "value"})
diff --git a/python/tests/integration/memory/vector_stores/test_vector_store.py b/python/tests/integration/memory/vector_stores/test_vector_store.py
index ae55db9b5813..23b5f9dca1c0 100644
--- a/python/tests/integration/memory/vector_stores/test_vector_store.py
+++ b/python/tests/integration/memory/vector_stores/test_vector_store.py
@@ -22,7 +22,6 @@ class TestVectorStore(VectorStoreTestBase):
This only tests if the vector stores can upsert, get, and delete records.
"""
- @pytest.mark.asyncio
@pytest.mark.parametrize(
"store_id, collection_name, collection_options, data_model_type, data_model_definition, distance_function, "
"index_kind, vector_property_type, dimensions, record",
diff --git a/python/tests/integration/planning/function_calling_stepwise_planner/test_int_function_calling_stepwise_planner.py b/python/tests/integration/planning/function_calling_stepwise_planner/test_int_function_calling_stepwise_planner.py
index 0189bed58d61..707c128a72d6 100644
--- a/python/tests/integration/planning/function_calling_stepwise_planner/test_int_function_calling_stepwise_planner.py
+++ b/python/tests/integration/planning/function_calling_stepwise_planner/test_int_function_calling_stepwise_planner.py
@@ -2,8 +2,6 @@
import asyncio
-import pytest
-
from semantic_kernel.connectors.ai.open_ai import (
OpenAIChatCompletion,
)
@@ -20,7 +18,6 @@
)
-@pytest.mark.asyncio
async def test_can_execute_function_calling_stepwise_plan(kernel: Kernel):
service_id = "planner"
kernel.add_service(
diff --git a/python/tests/integration/planning/sequential_planner/test_sequential_plan_parser.py b/python/tests/integration/planning/sequential_planner/test_sequential_plan_parser.py
index 1c008e4ffc0a..8563781df5b7 100644
--- a/python/tests/integration/planning/sequential_planner/test_sequential_plan_parser.py
+++ b/python/tests/integration/planning/sequential_planner/test_sequential_plan_parser.py
@@ -1,6 +1,5 @@
# Copyright (c) Microsoft. All rights reserved.
-import pytest
import semantic_kernel.connectors.ai.open_ai as sk_oai
from semantic_kernel.kernel import Kernel
@@ -10,7 +9,6 @@
from tests.integration.fakes.writer_plugin_fake import WriterPluginFake
-@pytest.mark.asyncio
async def test_can_call_to_plan_from_xml():
kernel = Kernel()
# Configure LLM service
diff --git a/python/tests/integration/planning/sequential_planner/test_sequential_planner.py b/python/tests/integration/planning/sequential_planner/test_sequential_planner.py
index f9d9d17e6f6f..e34ca9ab90c6 100644
--- a/python/tests/integration/planning/sequential_planner/test_sequential_planner.py
+++ b/python/tests/integration/planning/sequential_planner/test_sequential_planner.py
@@ -68,7 +68,6 @@ def initialize_kernel(use_embeddings=False, use_chat_model=False):
),
],
)
-@pytest.mark.asyncio
@pytest.mark.xfail(
reason="Test is known to be blocked by Azure OpenAI content policy.",
)
@@ -100,7 +99,6 @@ async def test_create_plan_function_flow(use_chat_model, prompt, expected_functi
)
],
)
-@pytest.mark.asyncio
@pytest.mark.xfail(
raises=PlannerException,
reason="Test is known to occasionally produce unexpected results.",
@@ -135,7 +133,6 @@ async def test_create_plan_with_defaults(prompt, expected_function, expected_plu
)
],
)
-@pytest.mark.asyncio
@pytest.mark.xfail(
reason="Test is known to be blocked by Azure OpenAI content policy.",
)
diff --git a/python/tests/integration/text_to_audio/test_text_to_audio.py b/python/tests/integration/text_to_audio/test_text_to_audio.py
index 89bafc8db524..f4dfe1f81c81 100644
--- a/python/tests/integration/text_to_audio/test_text_to_audio.py
+++ b/python/tests/integration/text_to_audio/test_text_to_audio.py
@@ -25,11 +25,9 @@
)
-@pytest.mark.asyncio(scope="module")
class TestTextToAudio(TextToAudioTestBase):
"""Test text-to-audio services."""
- @pytest.mark.asyncio
async def test_audio_to_text(
self,
services: dict[str, TextToAudioClientBase],
diff --git a/python/tests/integration/text_to_image/test_text_to_image.py b/python/tests/integration/text_to_image/test_text_to_image.py
index 4d6cb5d365ef..8d1efeb0f204 100644
--- a/python/tests/integration/text_to_image/test_text_to_image.py
+++ b/python/tests/integration/text_to_image/test_text_to_image.py
@@ -23,11 +23,9 @@
)
-@pytest.mark.asyncio(scope="module")
class TestTextToImage(TextToImageTestBase):
"""Test text-to-image services."""
- @pytest.mark.asyncio
async def test_text_to_image(
self,
services: dict[str, TextToImageClientBase],
diff --git a/python/tests/samples/test_concepts.py b/python/tests/samples/test_concepts.py
index d3ae4646dbae..bf3ff42ede2c 100644
--- a/python/tests/samples/test_concepts.py
+++ b/python/tests/samples/test_concepts.py
@@ -361,7 +361,6 @@
]
-@mark.asyncio
@mark.parametrize("sample, responses", concepts)
async def test_concepts(sample: Callable[..., Awaitable[Any]], responses: list[str], monkeypatch):
saved_responses = copy.deepcopy(responses)
diff --git a/python/tests/samples/test_getting_started.py b/python/tests/samples/test_getting_started.py
index cb19420f983f..bbbaaf5ed93b 100644
--- a/python/tests/samples/test_getting_started.py
+++ b/python/tests/samples/test_getting_started.py
@@ -1,8 +1,9 @@
# Copyright (c) Microsoft. All rights reserved.
+import os
import nbformat
from nbconvert.preprocessors import ExecutePreprocessor
-from pytest import mark
+from pytest import mark, param
from traitlets.config import Config
c = Config()
@@ -10,6 +11,11 @@
c.RegexRemovePreprocessor.patterns = ["^!pip .*"]
c.ExecutePreprocessor.exclude_input_prompt = True
+# These environment variable names are used to control which samples are run during integration testing.
+# This has to do with the setup of the tests and the services they depend on.
+COMPLETIONS_CONCEPT_SAMPLE = "COMPLETIONS_CONCEPT_SAMPLE"
+MEMORY_CONCEPT_SAMPLE = "MEMORY_CONCEPT_SAMPLE"
+
def run_notebook(notebook_name: str):
with open(f"samples/getting_started/{notebook_name}") as f:
@@ -18,22 +24,78 @@ def run_notebook(notebook_name: str):
ep.preprocess(nb, {"metadata": {"path": "samples/getting_started/"}})
-@mark.parametrize(
- "name",
- [
+notebooks = [
+ param(
"00-getting-started.ipynb",
+ marks=mark.skipif(
+ os.getenv(COMPLETIONS_CONCEPT_SAMPLE, None) is None, reason="Not running completion samples."
+ ),
+ ),
+ param(
"01-basic-loading-the-kernel.ipynb",
+ marks=mark.skipif(
+ os.getenv(COMPLETIONS_CONCEPT_SAMPLE, None) is None, reason="Not running completion samples."
+ ),
+ ),
+ param(
"02-running-prompts-from-file.ipynb",
+ marks=mark.skipif(
+ os.getenv(COMPLETIONS_CONCEPT_SAMPLE, None) is None, reason="Not running completion samples."
+ ),
+ ),
+ param(
"03-prompt-function-inline.ipynb",
+ marks=mark.skipif(
+ os.getenv(COMPLETIONS_CONCEPT_SAMPLE, None) is None, reason="Not running completion samples."
+ ),
+ ),
+ param(
"04-kernel-arguments-chat.ipynb",
- # "05-using-the-planner.ipynb", # Sample is known to be blocked by Azure OpenAI content policy.",
+ marks=mark.skipif(
+ os.getenv(COMPLETIONS_CONCEPT_SAMPLE, None) is None, reason="Not running completion samples."
+ ),
+ ),
+ param(
+ "05-using-the-planner.ipynb",
+ marks=mark.skip("Sample is known to be blocked by Azure OpenAI content policy."),
+ ),
+ param(
"06-memory-and-embeddings.ipynb",
+ marks=mark.skipif(os.getenv(MEMORY_CONCEPT_SAMPLE, None) is None, reason="Not running memory samples."),
+ ),
+ param(
"07-hugging-face-for-plugins.ipynb",
+ marks=mark.skipif(
+ os.getenv(COMPLETIONS_CONCEPT_SAMPLE, None) is None, reason="Not running completion samples."
+ ),
+ ),
+ param(
"08-native-function-inline.ipynb",
+ marks=mark.skipif(
+ os.getenv(COMPLETIONS_CONCEPT_SAMPLE, None) is None, reason="Not running completion samples."
+ ),
+ ),
+ param(
"09-groundedness-checking.ipynb",
+ marks=mark.skipif(
+ os.getenv(COMPLETIONS_CONCEPT_SAMPLE, None) is None, reason="Not running completion samples."
+ ),
+ ),
+ param(
"10-multiple-results-per-prompt.ipynb",
+ marks=mark.skipif(
+ os.getenv(COMPLETIONS_CONCEPT_SAMPLE, None) is None, reason="Not running completion samples."
+ ),
+ ),
+ param(
"11-streaming-completions.ipynb",
- ],
-)
+ marks=mark.skipif(
+ os.getenv(COMPLETIONS_CONCEPT_SAMPLE, None) is None, reason="Not running completion samples."
+ ),
+ ),
+]
+
+
+@mark.parametrize("name", notebooks)
def test_notebooks(name):
run_notebook(name)
diff --git a/python/tests/samples/test_learn_resources.py b/python/tests/samples/test_learn_resources.py
index 43d69d3907e8..0a3cab0dae3c 100644
--- a/python/tests/samples/test_learn_resources.py
+++ b/python/tests/samples/test_learn_resources.py
@@ -1,8 +1,9 @@
# Copyright (c) Microsoft. All rights reserved.
import copy
+import os
-from pytest import mark
+from pytest import mark, param
from samples.learn_resources.ai_services import main as ai_services
from samples.learn_resources.configuring_prompts import main as configuring_prompts
@@ -16,35 +17,94 @@
from samples.learn_resources.your_first_prompt import main as your_first_prompt
from tests.utils import retry
+# These environment variable names are used to control which samples are run during integration testing.
+# This has to do with the setup of the tests and the services they depend on.
+COMPLETIONS_CONCEPT_SAMPLE = "COMPLETIONS_CONCEPT_SAMPLE"
-@mark.asyncio
-@mark.parametrize(
- "func,responses",
- [
- (ai_services, []),
- (configuring_prompts, ["Hello, who are you?", "exit"]),
- (creating_functions, ["What is 3+3?", "exit"]),
- (functions_within_prompts, ["Hello, who are you?", "exit"]),
- (planner, []),
- (plugin, []),
- (serializing_prompts, ["Hello, who are you?", "exit"]),
- (templates, ["Hello, who are you?", "Thanks, see you next time!"]),
- (using_the_kernel, []),
- (your_first_prompt, ["I want to send an email to my manager!"]),
- ],
- ids=[
- "ai_services",
- "configuring_prompts",
- "creating_functions",
- "functions_within_prompts",
- "planner",
- "plugin",
- "serializing_prompts",
- "templates",
- "using_the_kernel",
- "your_first_prompt",
- ],
-)
+learn_resources = [
+ param(
+ ai_services,
+ [],
+ id="ai_services",
+ marks=mark.skipif(
+ os.getenv(COMPLETIONS_CONCEPT_SAMPLE, None) is None, reason="Not running completion samples."
+ ),
+ ),
+ param(
+ configuring_prompts,
+ ["Hello, who are you?", "exit"],
+ id="configuring_prompts",
+ marks=mark.skipif(
+ os.getenv(COMPLETIONS_CONCEPT_SAMPLE, None) is None, reason="Not running completion samples."
+ ),
+ ),
+ param(
+ creating_functions,
+ ["What is 3+3?", "exit"],
+ id="creating_functions",
+ marks=mark.skipif(
+ os.getenv(COMPLETIONS_CONCEPT_SAMPLE, None) is None, reason="Not running completion samples."
+ ),
+ ),
+ param(
+ functions_within_prompts,
+ ["Hello, who are you?", "exit"],
+ id="functions_within_prompts",
+ marks=mark.skipif(
+ os.getenv(COMPLETIONS_CONCEPT_SAMPLE, None) is None, reason="Not running completion samples."
+ ),
+ ),
+ param(
+ planner,
+ [],
+ id="planner",
+ marks=mark.skipif(
+ os.getenv(COMPLETIONS_CONCEPT_SAMPLE, None) is None, reason="Not running completion samples."
+ ),
+ ),
+ param(
+ plugin,
+ [],
+ id="plugin",
+ # will run anyway, no services called.
+ ),
+ param(
+ serializing_prompts,
+ ["Hello, who are you?", "exit"],
+ id="serializing_prompts",
+ marks=mark.skipif(
+ os.getenv(COMPLETIONS_CONCEPT_SAMPLE, None) is None, reason="Not running completion samples."
+ ),
+ ),
+ param(
+ templates,
+ ["Hello, who are you?", "Thanks, see you next time!"],
+ id="templates",
+ marks=(
+ mark.skipif(os.getenv(COMPLETIONS_CONCEPT_SAMPLE, None) is None, reason="Not running completion samples."),
+ mark.xfail(reason="This sample is not working as expected."),
+ ),
+ ),
+ param(
+ using_the_kernel,
+ [],
+ id="using_the_kernel",
+ marks=mark.skipif(
+ os.getenv(COMPLETIONS_CONCEPT_SAMPLE, None) is None, reason="Not running completion samples."
+ ),
+ ),
+ param(
+ your_first_prompt,
+ ["I want to send an email to my manager!"],
+ id="your_first_prompt",
+ marks=mark.skipif(
+ os.getenv(COMPLETIONS_CONCEPT_SAMPLE, None) is None, reason="Not running completion samples."
+ ),
+ ),
+]
+
+
+@mark.parametrize("func,responses", learn_resources)
async def test_learn_resources(func, responses, monkeypatch):
saved_responses = copy.deepcopy(responses)
@@ -57,4 +117,4 @@ def reset():
await retry(lambda: func(delay=10), reset=reset)
return
- await retry(lambda: func(), reset=reset)
+ await retry(lambda: func(), reset=reset, retries=5)
diff --git a/python/tests/unit/agents/test_agent.py b/python/tests/unit/agents/test_agent.py
index 01dfb1f42cdd..d01a6a9ba0e8 100644
--- a/python/tests/unit/agents/test_agent.py
+++ b/python/tests/unit/agents/test_agent.py
@@ -3,8 +3,6 @@
import uuid
from unittest.mock import AsyncMock
-import pytest
-
from semantic_kernel.agents import Agent
from semantic_kernel.agents.channels.agent_channel import AgentChannel
@@ -28,7 +26,6 @@ async def create_channel(self) -> AgentChannel:
return AsyncMock(spec=AgentChannel)
-@pytest.mark.asyncio
async def test_agent_initialization():
name = "TestAgent"
description = "A test agent"
@@ -41,7 +38,6 @@ async def test_agent_initialization():
assert agent.id == id_value
-@pytest.mark.asyncio
async def test_agent_default_id():
agent = MockAgent()
@@ -56,7 +52,6 @@ def test_get_channel_keys():
assert keys == ["key1", "key2"]
-@pytest.mark.asyncio
async def test_create_channel():
agent = MockAgent()
channel = await agent.create_channel()
@@ -64,7 +59,6 @@ async def test_create_channel():
assert isinstance(channel, AgentChannel)
-@pytest.mark.asyncio
async def test_agent_equality():
id_value = str(uuid.uuid4())
@@ -80,7 +74,6 @@ async def test_agent_equality():
assert agent1 != agent4
-@pytest.mark.asyncio
async def test_agent_equality_different_type():
agent = MockAgent(name="TestAgent", description="A test agent", id=str(uuid.uuid4()))
non_agent = "Not an agent"
@@ -88,7 +81,6 @@ async def test_agent_equality_different_type():
assert agent != non_agent
-@pytest.mark.asyncio
async def test_agent_hash():
id_value = str(uuid.uuid4())
diff --git a/python/tests/unit/agents/test_agent_channel.py b/python/tests/unit/agents/test_agent_channel.py
index 33b24b743b54..3c66ef2a98ad 100644
--- a/python/tests/unit/agents/test_agent_channel.py
+++ b/python/tests/unit/agents/test_agent_channel.py
@@ -3,8 +3,6 @@
from collections.abc import AsyncIterable
from unittest.mock import AsyncMock
-import pytest
-
from semantic_kernel.agents import Agent
from semantic_kernel.agents.channels.agent_channel import AgentChannel
from semantic_kernel.contents.chat_message_content import ChatMessageContent
@@ -22,7 +20,6 @@ async def get_history(self) -> AsyncIterable[ChatMessageContent]:
yield ChatMessageContent(role=AuthorRole.SYSTEM, content="test history message")
-@pytest.mark.asyncio
async def test_receive():
mock_channel = AsyncMock(spec=MockAgentChannel)
@@ -35,7 +32,6 @@ async def test_receive():
mock_channel.receive.assert_called_once_with(history)
-@pytest.mark.asyncio
async def test_invoke():
mock_channel = AsyncMock(spec=MockAgentChannel)
agent = AsyncMock()
@@ -50,7 +46,6 @@ async def async_generator():
mock_channel.invoke.assert_called_once_with(agent)
-@pytest.mark.asyncio
async def test_get_history():
mock_channel = AsyncMock(spec=MockAgentChannel)
diff --git a/python/tests/unit/agents/test_agent_chat.py b/python/tests/unit/agents/test_agent_chat.py
index 5b50a999a202..ac7b8d1414d6 100644
--- a/python/tests/unit/agents/test_agent_chat.py
+++ b/python/tests/unit/agents/test_agent_chat.py
@@ -32,28 +32,24 @@ def chat_message():
return mock_chat_message
-@pytest.mark.asyncio
async def test_set_activity_or_throw_when_inactive(agent_chat):
agent_chat._is_active = False
agent_chat.set_activity_or_throw()
assert agent_chat.is_active
-@pytest.mark.asyncio
async def test_set_activity_or_throw_when_active(agent_chat):
agent_chat._is_active = True
with pytest.raises(Exception, match="Unable to proceed while another agent is active."):
agent_chat.set_activity_or_throw()
-@pytest.mark.asyncio
async def test_clear_activity_signal(agent_chat):
agent_chat._is_active = True
agent_chat.clear_activity_signal()
assert not agent_chat.is_active
-@pytest.mark.asyncio
async def test_get_messages_in_descending_order(agent_chat, chat_message):
agent_chat.history.messages = [chat_message, chat_message, chat_message]
messages = []
@@ -62,7 +58,6 @@ async def test_get_messages_in_descending_order(agent_chat, chat_message):
assert len(messages) == 3
-@pytest.mark.asyncio
async def test_get_chat_messages_without_agent(agent_chat, chat_message):
agent_chat.history.messages = [chat_message]
with patch(
@@ -74,7 +69,6 @@ async def test_get_chat_messages_without_agent(agent_chat, chat_message):
mock_get_messages.assert_called_once()
-@pytest.mark.asyncio
async def test_get_chat_messages_with_agent(agent_chat, agent, chat_message):
agent_chat.channel_map[agent] = "test_channel"
@@ -90,7 +84,6 @@ async def test_get_chat_messages_with_agent(agent_chat, agent, chat_message):
pass
-@pytest.mark.asyncio
async def test_add_chat_message(agent_chat, chat_message):
with patch(
"semantic_kernel.agents.group_chat.agent_chat.AgentChat.add_chat_messages",
@@ -100,14 +93,12 @@ async def test_add_chat_message(agent_chat, chat_message):
mock_add_chat_messages.assert_called_once_with([chat_message])
-@pytest.mark.asyncio
async def test_add_chat_messages(agent_chat, chat_message):
with patch("semantic_kernel.agents.group_chat.broadcast_queue.BroadcastQueue.enqueue", return_value=AsyncMock()):
await agent_chat.add_chat_messages([chat_message])
assert chat_message in agent_chat.history.messages
-@pytest.mark.asyncio
async def test_invoke_agent(agent_chat, agent, chat_message):
mock_channel = mock.MagicMock(spec=AgentChannel)
@@ -132,7 +123,6 @@ async def mock_invoke(*args, **kwargs):
await agent_chat.reset()
-@pytest.mark.asyncio
async def test_invoke_streaming_agent(agent_chat, agent, chat_message):
mock_channel = mock.MagicMock(spec=AgentChannel)
@@ -157,7 +147,6 @@ async def mock_invoke(*args, **kwargs):
await agent_chat.reset()
-@pytest.mark.asyncio
async def test_synchronize_channel_with_existing_channel(agent_chat):
mock_channel = MagicMock(spec=AgentChannel)
channel_key = "test_channel_key"
@@ -172,7 +161,6 @@ async def test_synchronize_channel_with_existing_channel(agent_chat):
mock_ensure_synchronized.assert_called_once_with(ChannelReference(channel=mock_channel, hash=channel_key))
-@pytest.mark.asyncio
async def test_synchronize_channel_with_nonexistent_channel(agent_chat):
channel_key = "test_channel_key"
@@ -204,7 +192,6 @@ def test_get_agent_hash_generates_new_hash(agent_chat, agent):
assert agent_chat.channel_map[agent] == expected_hash
-@pytest.mark.asyncio
async def test_add_chat_messages_throws_exception_for_system_role(agent_chat):
system_message = MagicMock(spec=ChatMessageContent)
system_message.role = AuthorRole.SYSTEM
@@ -213,7 +200,6 @@ async def test_add_chat_messages_throws_exception_for_system_role(agent_chat):
await agent_chat.add_chat_messages([system_message])
-@pytest.mark.asyncio
async def test_get_or_create_channel_creates_new_channel(agent_chat, agent):
agent_chat.history.messages = [MagicMock(spec=ChatMessageContent)]
channel_key = "test_channel_key"
@@ -239,7 +225,6 @@ async def test_get_or_create_channel_creates_new_channel(agent_chat, agent):
assert agent_chat.agent_channels[channel_key] == mock_channel
-@pytest.mark.asyncio
async def test_get_or_create_channel_reuses_existing_channel(agent_chat, agent):
channel_key = "test_channel_key"
mock_channel = MagicMock(spec=AgentChannel)
diff --git a/python/tests/unit/agents/test_agent_group_chat.py b/python/tests/unit/agents/test_agent_group_chat.py
index 9aeb61d56d38..91eebcccb2a4 100644
--- a/python/tests/unit/agents/test_agent_group_chat.py
+++ b/python/tests/unit/agents/test_agent_group_chat.py
@@ -75,7 +75,6 @@ def test_add_duplicate_agent(agents):
assert len(group_chat.agent_ids) == 1
-@pytest.mark.asyncio
async def test_invoke_single_turn(agents, termination_strategy):
group_chat = AgentGroupChat(termination_strategy=termination_strategy)
@@ -91,7 +90,6 @@ async def mock_invoke(agent, is_joining=True):
termination_strategy.should_terminate.assert_awaited_once()
-@pytest.mark.asyncio
async def test_invoke_single_turn_sets_complete(agents, termination_strategy):
group_chat = AgentGroupChat(termination_strategy=termination_strategy)
@@ -108,7 +106,6 @@ async def mock_invoke(agent, is_joining=True):
termination_strategy.should_terminate.assert_awaited_once()
-@pytest.mark.asyncio
async def test_invoke_with_agent_joining(agents, termination_strategy):
for agent in agents:
agent.name = f"Agent {agent.id}"
@@ -132,7 +129,6 @@ async def mock_invoke_gen(*args, **kwargs):
mock_add_agent.assert_called_once_with(group_chat, agents[0])
-@pytest.mark.asyncio
async def test_invoke_with_complete_chat(agents, termination_strategy):
termination_strategy.automatic_reset = False
group_chat = AgentGroupChat(agents=agents, termination_strategy=termination_strategy)
@@ -143,7 +139,6 @@ async def test_invoke_with_complete_chat(agents, termination_strategy):
pass
-@pytest.mark.asyncio
async def test_invoke_agent_with_none_defined_errors(agents):
group_chat = AgentGroupChat()
@@ -152,7 +147,6 @@ async def test_invoke_agent_with_none_defined_errors(agents):
pass
-@pytest.mark.asyncio
async def test_invoke_selection_strategy_error(agents, selection_strategy):
group_chat = AgentGroupChat(agents=agents, selection_strategy=selection_strategy)
@@ -163,7 +157,6 @@ async def test_invoke_selection_strategy_error(agents, selection_strategy):
pass
-@pytest.mark.asyncio
async def test_invoke_iterations(agents, termination_strategy, selection_strategy):
for agent in agents:
agent.name = f"Agent {agent.id}"
@@ -190,7 +183,6 @@ async def mock_invoke_agent(*args, **kwargs):
assert iteration_count == 2
-@pytest.mark.asyncio
async def test_invoke_is_complete_then_reset(agents, termination_strategy, selection_strategy):
for agent in agents:
agent.name = f"Agent {agent.id}"
@@ -225,7 +217,6 @@ async def mock_invoke_agent(*args, **kwargs):
# region Streaming
-@pytest.mark.asyncio
async def test_invoke_streaming_single_turn(agents, termination_strategy):
group_chat = AgentGroupChat(termination_strategy=termination_strategy)
@@ -241,7 +232,6 @@ async def mock_invoke(agent, is_joining=True):
termination_strategy.should_terminate.assert_awaited_once()
-@pytest.mark.asyncio
async def test_invoke_stream_with_agent_joining(agents, termination_strategy):
for agent in agents:
agent.name = f"Agent {agent.id}"
@@ -265,7 +255,6 @@ async def mock_invoke_gen(*args, **kwargs):
mock_add_agent.assert_called_once_with(group_chat, agents[0])
-@pytest.mark.asyncio
async def test_invoke_stream_with_complete_chat(agents, termination_strategy):
termination_strategy.automatic_reset = False
group_chat = AgentGroupChat(agents=agents, termination_strategy=termination_strategy)
@@ -276,7 +265,6 @@ async def test_invoke_stream_with_complete_chat(agents, termination_strategy):
pass
-@pytest.mark.asyncio
async def test_invoke_stream_selection_strategy_error(agents, selection_strategy):
group_chat = AgentGroupChat(agents=agents, selection_strategy=selection_strategy)
@@ -287,7 +275,6 @@ async def test_invoke_stream_selection_strategy_error(agents, selection_strategy
pass
-@pytest.mark.asyncio
async def test_invoke_stream_iterations(agents, termination_strategy, selection_strategy):
for agent in agents:
agent.name = f"Agent {agent.id}"
@@ -314,7 +301,6 @@ async def mock_invoke_agent(*args, **kwargs):
assert iteration_count == 2
-@pytest.mark.asyncio
async def test_invoke_stream_is_complete_then_reset(agents, termination_strategy, selection_strategy):
for agent in agents:
agent.name = f"Agent {agent.id}"
@@ -344,7 +330,6 @@ async def mock_invoke_agent(*args, **kwargs):
assert iteration_count == 2
-@pytest.mark.asyncio
async def test_invoke_streaming_agent_with_none_defined_errors(agents):
group_chat = AgentGroupChat()
diff --git a/python/tests/unit/agents/test_aggregator_termination_strategy.py b/python/tests/unit/agents/test_aggregator_termination_strategy.py
index 2e545a8d7db9..103f734fa0ed 100644
--- a/python/tests/unit/agents/test_aggregator_termination_strategy.py
+++ b/python/tests/unit/agents/test_aggregator_termination_strategy.py
@@ -2,8 +2,6 @@
from unittest.mock import AsyncMock, MagicMock
-import pytest
-
from semantic_kernel.agents.agent import Agent
from semantic_kernel.agents.channels.agent_channel import AgentChannel
from semantic_kernel.agents.strategies.termination.aggregator_termination_strategy import (
@@ -33,7 +31,6 @@ async def create_channel(self) -> AgentChannel:
return AsyncMock(spec=AgentChannel)
-@pytest.mark.asyncio
async def test_aggregate_termination_condition_all_true():
agent = MockAgent(id="test-agent-id")
history = [MagicMock(spec=ChatMessageContent)]
@@ -56,7 +53,6 @@ async def test_aggregate_termination_condition_all_true():
strategy2.should_terminate.assert_awaited_once()
-@pytest.mark.asyncio
async def test_aggregate_termination_condition_all_false():
agent = MockAgent(id="test-agent-id")
history = [MagicMock(spec=ChatMessageContent)]
@@ -79,7 +75,6 @@ async def test_aggregate_termination_condition_all_false():
strategy2.should_terminate.assert_awaited_once()
-@pytest.mark.asyncio
async def test_aggregate_termination_condition_any_true():
agent = MockAgent(id="test-agent-id")
history = [MagicMock(spec=ChatMessageContent)]
@@ -102,7 +97,6 @@ async def test_aggregate_termination_condition_any_true():
strategy2.should_terminate.assert_awaited_once()
-@pytest.mark.asyncio
async def test_aggregate_termination_condition_any_false():
agent = MockAgent(id="test-agent-id")
history = [MagicMock(spec=ChatMessageContent)]
diff --git a/python/tests/unit/agents/test_azure_assistant_agent.py b/python/tests/unit/agents/test_azure_assistant_agent.py
index ca672497d60a..b1649fdf9abc 100644
--- a/python/tests/unit/agents/test_azure_assistant_agent.py
+++ b/python/tests/unit/agents/test_azure_assistant_agent.py
@@ -88,7 +88,6 @@ def test_create_client_from_configuration_missing_endpoint():
AzureAssistantAgent._create_client(api_key="test")
-@pytest.mark.asyncio
async def test_create_agent(kernel: Kernel, azure_openai_unit_test_env):
with patch.object(AzureAssistantAgent, "create_assistant", new_callable=AsyncMock) as mock_create_assistant:
mock_create_assistant.return_value = MagicMock(spec=Assistant)
@@ -100,7 +99,6 @@ async def test_create_agent(kernel: Kernel, azure_openai_unit_test_env):
await agent.client.close()
-@pytest.mark.asyncio
async def test_create_agent_with_files(kernel: Kernel, azure_openai_unit_test_env):
mock_open_file = mock_open(read_data="file_content")
with (
@@ -131,7 +129,6 @@ async def test_create_agent_with_files(kernel: Kernel, azure_openai_unit_test_en
mock_create_assistant.assert_called_once()
-@pytest.mark.asyncio
async def test_create_agent_with_code_files_not_found_raises_exception(kernel: Kernel, azure_openai_unit_test_env):
mock_open_file = mock_open(read_data="file_content")
with (
@@ -155,7 +152,6 @@ async def test_create_agent_with_code_files_not_found_raises_exception(kernel: K
)
-@pytest.mark.asyncio
async def test_create_agent_with_search_files_not_found_raises_exception(kernel: Kernel, azure_openai_unit_test_env):
mock_open_file = mock_open(read_data="file_content")
with (
@@ -179,7 +175,6 @@ async def test_create_agent_with_search_files_not_found_raises_exception(kernel:
)
-@pytest.mark.asyncio
async def test_list_definitions(kernel: Kernel, mock_assistant, azure_openai_unit_test_env):
agent = AzureAssistantAgent(
kernel=kernel, service_id="test_service", name="test_name", instructions="test_instructions", id="test_id"
@@ -230,7 +225,6 @@ async def test_list_definitions(kernel: Kernel, mock_assistant, azure_openai_uni
}
-@pytest.mark.asyncio
async def test_retrieve_agent(kernel, azure_openai_unit_test_env):
with patch.object(
AzureAssistantAgent, "_create_client", return_value=MagicMock(spec=AsyncAzureOpenAI)
@@ -322,7 +316,6 @@ async def test_retrieve_agent(kernel, azure_openai_unit_test_env):
@pytest.mark.parametrize("exclude_list", [["AZURE_OPENAI_CHAT_DEPLOYMENT_NAME"]], indirect=True)
-@pytest.mark.asyncio
async def test_retrieve_agent_missing_chat_deployment_name_throws(kernel, azure_openai_unit_test_env):
with pytest.raises(AgentInitializationException, match="The Azure OpenAI chat_deployment_name is required."):
_ = await AzureAssistantAgent.retrieve(
@@ -331,7 +324,6 @@ async def test_retrieve_agent_missing_chat_deployment_name_throws(kernel, azure_
@pytest.mark.parametrize("exclude_list", [["AZURE_OPENAI_API_KEY"]], indirect=True)
-@pytest.mark.asyncio
async def test_retrieve_agent_missing_api_key_throws(kernel, azure_openai_unit_test_env):
with pytest.raises(
AgentInitializationException, match="Please provide either api_key, ad_token or ad_token_provider."
diff --git a/python/tests/unit/agents/test_broadcast_queue.py b/python/tests/unit/agents/test_broadcast_queue.py
index 3dc60923584c..67fca9b9ff55 100644
--- a/python/tests/unit/agents/test_broadcast_queue.py
+++ b/python/tests/unit/agents/test_broadcast_queue.py
@@ -42,7 +42,6 @@ def test_queue_reference_is_empty_false():
# region BroadcastQueue Tests
-@pytest.mark.asyncio
async def test_enqueue_new_channel(channel_ref, message):
broadcast_queue = BroadcastQueue()
@@ -55,7 +54,6 @@ async def test_enqueue_new_channel(channel_ref, message):
assert not queue_ref.receive_task.done()
-@pytest.mark.asyncio
async def test_enqueue_existing_channel(channel_ref, message):
broadcast_queue = BroadcastQueue()
@@ -70,7 +68,6 @@ async def test_enqueue_existing_channel(channel_ref, message):
assert not queue_ref.receive_task.done()
-@pytest.mark.asyncio
async def test_ensure_synchronized_channel_empty(channel_ref):
broadcast_queue = BroadcastQueue()
@@ -78,7 +75,6 @@ async def test_ensure_synchronized_channel_empty(channel_ref):
assert channel_ref.hash not in broadcast_queue.queues
-@pytest.mark.asyncio
async def test_ensure_synchronized_with_messages(channel_ref, message):
broadcast_queue = BroadcastQueue()
@@ -90,7 +86,6 @@ async def test_ensure_synchronized_with_messages(channel_ref, message):
assert queue_ref.is_empty is True
-@pytest.mark.asyncio
async def test_ensure_synchronized_with_failure(channel_ref, message):
broadcast_queue = BroadcastQueue()
@@ -105,7 +100,6 @@ async def test_ensure_synchronized_with_failure(channel_ref, message):
assert queue_ref.receive_failure is None
-@pytest.mark.asyncio
async def test_ensure_synchronized_creates_new_task(channel_ref, message):
broadcast_queue = BroadcastQueue()
@@ -125,7 +119,6 @@ async def test_ensure_synchronized_creates_new_task(channel_ref, message):
assert queue_ref.receive_task is None
-@pytest.mark.asyncio
async def test_receive_processes_queue(channel_ref, message):
broadcast_queue = BroadcastQueue()
@@ -141,7 +134,6 @@ async def test_receive_processes_queue(channel_ref, message):
channel_ref.channel.receive.assert_any_await([message])
-@pytest.mark.asyncio
async def test_receive_handles_failure(channel_ref, message):
broadcast_queue = BroadcastQueue()
@@ -157,7 +149,6 @@ async def test_receive_handles_failure(channel_ref, message):
assert str(queue_ref.receive_failure) == "Simulated failure"
-@pytest.mark.asyncio
async def test_receive_breaks_when_queue_is_empty(channel_ref, message):
broadcast_queue = BroadcastQueue()
diff --git a/python/tests/unit/agents/test_chat_completion_agent.py b/python/tests/unit/agents/test_chat_completion_agent.py
index d7000565372a..191826aa23a9 100644
--- a/python/tests/unit/agents/test_chat_completion_agent.py
+++ b/python/tests/unit/agents/test_chat_completion_agent.py
@@ -30,7 +30,6 @@ async def mock_response(chat_history, settings, kernel):
return mock_response
-@pytest.mark.asyncio
async def test_initialization():
agent = ChatCompletionAgent(
service_id="test_service",
@@ -47,7 +46,6 @@ async def test_initialization():
assert agent.instructions == "Test Instructions"
-@pytest.mark.asyncio
async def test_initialization_invalid_name_throws():
with pytest.raises(ValidationError):
_ = ChatCompletionAgent(
@@ -59,7 +57,6 @@ async def test_initialization_invalid_name_throws():
)
-@pytest.mark.asyncio
async def test_initialization_no_service_id():
agent = ChatCompletionAgent(
name="TestAgent",
@@ -76,7 +73,6 @@ async def test_initialization_no_service_id():
assert agent.instructions == "Test Instructions"
-@pytest.mark.asyncio
async def test_initialization_with_kernel(kernel: Kernel):
agent = ChatCompletionAgent(
kernel=kernel,
@@ -94,7 +90,6 @@ async def test_initialization_with_kernel(kernel: Kernel):
assert agent.instructions == "Test Instructions"
-@pytest.mark.asyncio
async def test_invoke():
kernel = create_autospec(Kernel)
kernel.get_service.return_value = create_autospec(ChatCompletionClientBase)
@@ -113,7 +108,6 @@ async def test_invoke():
assert messages[0].content == "Processed Message"
-@pytest.mark.asyncio
async def test_invoke_tool_call_added():
kernel = create_autospec(Kernel)
chat_completion_service = create_autospec(ChatCompletionClientBase)
@@ -145,7 +139,6 @@ async def mock_get_chat_message_contents(chat_history, settings, kernel):
assert history.messages[2].name == "TestAgent"
-@pytest.mark.asyncio
async def test_invoke_no_service_throws():
kernel = create_autospec(Kernel)
kernel.get_service.return_value = None
@@ -158,7 +151,6 @@ async def test_invoke_no_service_throws():
pass
-@pytest.mark.asyncio
async def test_invoke_stream():
kernel = create_autospec(Kernel)
kernel.get_service.return_value = create_autospec(ChatCompletionClientBase)
@@ -180,7 +172,6 @@ async def test_invoke_stream():
assert message.content == "Initial Message"
-@pytest.mark.asyncio
async def test_invoke_stream_tool_call_added(mock_streaming_chat_completion_response):
kernel = create_autospec(Kernel)
chat_completion_service = create_autospec(ChatCompletionClientBase)
@@ -199,7 +190,6 @@ async def test_invoke_stream_tool_call_added(mock_streaming_chat_completion_resp
assert len(history.messages) == 3
-@pytest.mark.asyncio
async def test_invoke_stream_no_service_throws():
kernel = create_autospec(Kernel)
kernel.get_service.return_value = None
@@ -219,7 +209,6 @@ def test_get_channel_keys():
assert keys == [ChatHistoryChannel.__name__]
-@pytest.mark.asyncio
async def test_create_channel():
agent = ChatCompletionAgent()
channel = await agent.create_channel()
diff --git a/python/tests/unit/agents/test_chat_history_channel.py b/python/tests/unit/agents/test_chat_history_channel.py
index ea1b3afbab34..acb563b9ca7c 100644
--- a/python/tests/unit/agents/test_chat_history_channel.py
+++ b/python/tests/unit/agents/test_chat_history_channel.py
@@ -41,7 +41,6 @@ def __aiter__(self):
return self.async_gen()
-@pytest.mark.asyncio
async def test_invoke():
channel = ChatHistoryChannel()
agent = AsyncMock(spec=MockChatHistoryHandler)
@@ -66,7 +65,6 @@ async def mock_invoke(history: list[ChatMessageContent]):
assert "Processed: Initial message" in received_messages[0].content
-@pytest.mark.asyncio
async def test_invoke_stream():
channel = ChatHistoryChannel()
agent = AsyncMock(spec=MockChatHistoryHandler)
@@ -92,7 +90,6 @@ async def mock_invoke(history: list[ChatMessageContent]):
assert "Processed: Initial message" in received_messages[0].content
-@pytest.mark.asyncio
async def test_invoke_leftover_in_queue():
channel = ChatHistoryChannel()
agent = AsyncMock(spec=MockChatHistoryHandler)
@@ -130,7 +127,6 @@ async def mock_invoke(history: list[ChatMessageContent]):
assert received_messages[2].items[0].id == "test_id"
-@pytest.mark.asyncio
async def test_invoke_incorrect_instance_throws():
channel = ChatHistoryChannel()
agent = MockNonChatHistoryHandler()
@@ -140,7 +136,6 @@ async def test_invoke_incorrect_instance_throws():
pass
-@pytest.mark.asyncio
async def test_invoke_stream_incorrect_instance_throws():
channel = ChatHistoryChannel()
agent = MockNonChatHistoryHandler()
@@ -150,7 +145,6 @@ async def test_invoke_stream_incorrect_instance_throws():
pass
-@pytest.mark.asyncio
async def test_receive():
channel = ChatHistoryChannel()
history = [
@@ -167,7 +161,6 @@ async def test_receive():
assert channel.messages[1].role == AuthorRole.USER
-@pytest.mark.asyncio
async def test_get_history():
channel = ChatHistoryChannel()
history = [
@@ -185,7 +178,6 @@ async def test_get_history():
assert messages[1].role == AuthorRole.SYSTEM
-@pytest.mark.asyncio
async def test_reset_history():
channel = ChatHistoryChannel()
history = [
diff --git a/python/tests/unit/agents/test_default_termination_strategy.py b/python/tests/unit/agents/test_default_termination_strategy.py
index a28798ff1ae8..0b2271672ba6 100644
--- a/python/tests/unit/agents/test_default_termination_strategy.py
+++ b/python/tests/unit/agents/test_default_termination_strategy.py
@@ -1,11 +1,9 @@
# Copyright (c) Microsoft. All rights reserved.
-import pytest
from semantic_kernel.agents.strategies.termination.default_termination_strategy import DefaultTerminationStrategy
-@pytest.mark.asyncio
async def test_should_agent_terminate_():
strategy = DefaultTerminationStrategy(maximum_iterations=2)
result = await strategy.should_agent_terminate(None, [])
diff --git a/python/tests/unit/agents/test_kernel_function_selection_strategy.py b/python/tests/unit/agents/test_kernel_function_selection_strategy.py
index 4848c681fbeb..2523c06cb05e 100644
--- a/python/tests/unit/agents/test_kernel_function_selection_strategy.py
+++ b/python/tests/unit/agents/test_kernel_function_selection_strategy.py
@@ -40,7 +40,6 @@ def agents():
return [MockAgent(id=f"agent-{i}", name=f"Agent_{i}") for i in range(3)]
-@pytest.mark.asyncio
async def test_kernel_function_selection_next_success(agents):
history = [MagicMock(spec=ChatMessageContent)]
mock_function = AsyncMock(spec=KernelFunction)
@@ -57,7 +56,6 @@ async def test_kernel_function_selection_next_success(agents):
mock_function.invoke.assert_awaited_once()
-@pytest.mark.asyncio
async def test_kernel_function_selection_next_agent_not_found(agents):
history = [MagicMock(spec=ChatMessageContent)]
mock_function = AsyncMock(spec=KernelFunction)
@@ -75,7 +73,6 @@ async def test_kernel_function_selection_next_agent_not_found(agents):
mock_function.invoke.assert_awaited_once()
-@pytest.mark.asyncio
async def test_kernel_function_selection_next_result_is_none(agents):
history = [MagicMock(spec=ChatMessageContent)]
mock_function = AsyncMock(spec=KernelFunction)
@@ -93,7 +90,6 @@ async def test_kernel_function_selection_next_result_is_none(agents):
mock_function.invoke.assert_awaited_once()
-@pytest.mark.asyncio
async def test_kernel_function_selection_next_exception_during_invoke(agents):
history = [MagicMock(spec=ChatMessageContent)]
mock_function = AsyncMock(spec=KernelFunction)
@@ -111,7 +107,6 @@ async def test_kernel_function_selection_next_exception_during_invoke(agents):
mock_function.invoke.assert_awaited_once()
-@pytest.mark.asyncio
async def test_kernel_function_selection_result_parser_is_async(agents):
history = [MagicMock(spec=ChatMessageContent)]
mock_function = AsyncMock(spec=KernelFunction)
diff --git a/python/tests/unit/agents/test_kernel_function_termination_strategy.py b/python/tests/unit/agents/test_kernel_function_termination_strategy.py
index ec795c7beee4..e273c40e2501 100644
--- a/python/tests/unit/agents/test_kernel_function_termination_strategy.py
+++ b/python/tests/unit/agents/test_kernel_function_termination_strategy.py
@@ -2,8 +2,6 @@
from unittest.mock import AsyncMock, MagicMock, patch
-import pytest
-
from semantic_kernel.agents.agent import Agent
from semantic_kernel.agents.channels.agent_channel import AgentChannel
from semantic_kernel.agents.strategies import KernelFunctionTerminationStrategy
@@ -32,7 +30,6 @@ async def create_channel(self) -> AgentChannel:
return AsyncMock(spec=AgentChannel)
-@pytest.mark.asyncio
async def test_should_agent_terminate_with_result_true():
agent = MockAgent(id="test-agent-id")
history = [MagicMock(spec=ChatMessageContent)]
@@ -51,7 +48,6 @@ async def test_should_agent_terminate_with_result_true():
mock_function.invoke.assert_awaited_once()
-@pytest.mark.asyncio
async def test_should_agent_terminate_with_result_false():
agent = MockAgent(id="test-agent-id")
history = [MagicMock(spec=ChatMessageContent)]
@@ -70,7 +66,6 @@ async def test_should_agent_terminate_with_result_false():
mock_function.invoke.assert_awaited_once()
-@pytest.mark.asyncio
async def test_should_agent_terminate_with_none_result():
agent = MockAgent(id="test-agent-id")
history = [MagicMock(spec=ChatMessageContent)]
@@ -92,7 +87,6 @@ async def test_should_agent_terminate_with_none_result():
mock_function.invoke.assert_awaited_once()
-@pytest.mark.asyncio
async def test_should_agent_terminate_custom_arguments():
agent = MockAgent(id="test-agent-id")
history = [MagicMock(spec=ChatMessageContent)]
@@ -119,7 +113,6 @@ async def test_should_agent_terminate_custom_arguments():
mock_function.invoke.assert_awaited_once()
-@pytest.mark.asyncio
async def test_should_agent_terminate_result_parser_awaitable():
agent = MockAgent(id="test-agent-id")
history = [MagicMock(spec=ChatMessageContent)]
diff --git a/python/tests/unit/agents/test_open_ai_assistant_agent.py b/python/tests/unit/agents/test_open_ai_assistant_agent.py
index 368928fde582..8e54622f6c10 100644
--- a/python/tests/unit/agents/test_open_ai_assistant_agent.py
+++ b/python/tests/unit/agents/test_open_ai_assistant_agent.py
@@ -113,7 +113,6 @@ def test_create_client_from_configuration_missing_api_key():
OpenAIAssistantAgent._create_client(None)
-@pytest.mark.asyncio
async def test_create_agent(kernel: Kernel, openai_unit_test_env):
with patch.object(OpenAIAssistantAgent, "create_assistant", new_callable=AsyncMock) as mock_create_assistant:
mock_create_assistant.return_value = MagicMock(spec=Assistant)
@@ -128,7 +127,6 @@ async def test_create_agent(kernel: Kernel, openai_unit_test_env):
mock_create_assistant.assert_called_once()
-@pytest.mark.asyncio
async def test_create_agent_with_files(kernel: Kernel, openai_unit_test_env):
mock_open_file = mock_open(read_data="file_content")
with (
@@ -159,7 +157,6 @@ async def test_create_agent_with_files(kernel: Kernel, openai_unit_test_env):
mock_create_assistant.assert_called_once()
-@pytest.mark.asyncio
async def test_create_agent_with_code_files_not_found_raises_exception(kernel: Kernel, openai_unit_test_env):
mock_open_file = mock_open(read_data="file_content")
with (
@@ -183,7 +180,6 @@ async def test_create_agent_with_code_files_not_found_raises_exception(kernel: K
)
-@pytest.mark.asyncio
async def test_create_agent_with_search_files_not_found_raises_exception(kernel: Kernel, openai_unit_test_env):
mock_open_file = mock_open(read_data="file_content")
with (
@@ -207,7 +203,6 @@ async def test_create_agent_with_search_files_not_found_raises_exception(kernel:
)
-@pytest.mark.asyncio
async def test_create_agent_second_way(kernel: Kernel, mock_assistant, openai_unit_test_env):
agent = OpenAIAssistantAgent(
kernel=kernel,
@@ -246,7 +241,6 @@ async def test_create_agent_second_way(kernel: Kernel, mock_assistant, openai_un
}
-@pytest.mark.asyncio
async def test_list_definitions(kernel: Kernel, openai_unit_test_env):
agent = OpenAIAssistantAgent(
kernel=kernel, service_id="test_service", name="test_name", instructions="test_instructions", id="test_id"
@@ -324,7 +318,6 @@ async def test_list_definitions(kernel: Kernel, openai_unit_test_env):
@pytest.mark.parametrize("exclude_list", [["OPENAI_CHAT_MODEL_ID"]], indirect=True)
-@pytest.mark.asyncio
async def test_retrieve_agent_missing_chat_model_id_throws(kernel, openai_unit_test_env):
with pytest.raises(AgentInitializationException, match="The OpenAI chat model ID is required."):
_ = await OpenAIAssistantAgent.retrieve(
@@ -333,7 +326,6 @@ async def test_retrieve_agent_missing_chat_model_id_throws(kernel, openai_unit_t
@pytest.mark.parametrize("exclude_list", [["OPENAI_API_KEY"]], indirect=True)
-@pytest.mark.asyncio
async def test_retrieve_agent_missing_api_key_throws(kernel, openai_unit_test_env):
with pytest.raises(
AgentInitializationException, match="The OpenAI API key is required, if a client is not provided."
@@ -426,7 +418,6 @@ def test_create_open_ai_assistant_definition_with_json_metadata(mock_assistant_j
}
-@pytest.mark.asyncio
async def test_retrieve_agent(kernel, openai_unit_test_env):
with (
patch.object(
diff --git a/python/tests/unit/agents/test_open_ai_assistant_base.py b/python/tests/unit/agents/test_open_ai_assistant_base.py
index 5c9c940b3305..7e0658b252d6 100644
--- a/python/tests/unit/agents/test_open_ai_assistant_base.py
+++ b/python/tests/unit/agents/test_open_ai_assistant_base.py
@@ -692,7 +692,6 @@ async def __aexit__(self, exc_type, exc_val, exc_tb):
# region Tests
-@pytest.mark.asyncio
async def test_create_assistant(
azure_openai_assistant_agent: AzureAssistantAgent, mock_assistant, openai_unit_test_env
):
@@ -728,7 +727,6 @@ async def test_create_assistant(
)
-@pytest.mark.asyncio
async def test_modify_assistant(
azure_openai_assistant_agent: AzureAssistantAgent, mock_assistant, openai_unit_test_env
):
@@ -779,7 +777,6 @@ async def test_modify_assistant(
)
-@pytest.mark.asyncio
async def test_modify_assistant_not_initialized_throws(
azure_openai_assistant_agent: AzureAssistantAgent, mock_assistant, openai_unit_test_env
):
@@ -798,7 +795,6 @@ async def test_modify_assistant_not_initialized_throws(
)
-@pytest.mark.asyncio
async def test_create_assistant_with_model_attributes(
azure_openai_assistant_agent: AzureAssistantAgent, mock_assistant, openai_unit_test_env
):
@@ -835,7 +831,6 @@ async def test_create_assistant_with_model_attributes(
)
-@pytest.mark.asyncio
async def test_create_assistant_delete_and_recreate(
azure_openai_assistant_agent: AzureAssistantAgent, mock_assistant, openai_unit_test_env
):
@@ -858,14 +853,12 @@ async def test_create_assistant_delete_and_recreate(
assert azure_openai_assistant_agent._is_deleted is False
-@pytest.mark.asyncio
async def test_get_channel_keys(azure_openai_assistant_agent: AzureAssistantAgent, openai_unit_test_env):
keys = azure_openai_assistant_agent.get_channel_keys()
for key in keys:
assert isinstance(key, str)
-@pytest.mark.asyncio
async def test_create_channel(
azure_openai_assistant_agent: AzureAssistantAgent, mock_assistant, mock_thread, openai_unit_test_env
):
@@ -882,7 +875,6 @@ async def test_create_channel(
assert channel is not None
-@pytest.mark.asyncio
async def test_get_assistant_metadata(
azure_openai_assistant_agent: AzureAssistantAgent, mock_assistant, openai_unit_test_env
):
@@ -896,7 +888,6 @@ async def test_get_assistant_metadata(
assistant.metadata is not None
-@pytest.mark.asyncio
async def test_get_agent_tools(azure_openai_assistant_agent, mock_assistant, openai_unit_test_env):
with patch.object(azure_openai_assistant_agent, "client", spec=AsyncAzureOpenAI) as mock_client:
mock_client.beta = MagicMock()
@@ -917,7 +908,6 @@ async def test_get_agent_tools(azure_openai_assistant_agent, mock_assistant, ope
assert tools[2]["type"].startswith("function")
-@pytest.mark.asyncio
async def test_get_assistant_tools_throws_when_no_assistant(
azure_openai_assistant_agent: AzureAssistantAgent, openai_unit_test_env
):
@@ -925,7 +915,6 @@ async def test_get_assistant_tools_throws_when_no_assistant(
_ = azure_openai_assistant_agent.tools
-@pytest.mark.asyncio
async def test_create_thread(azure_openai_assistant_agent, mock_thread, openai_unit_test_env):
with patch.object(azure_openai_assistant_agent, "client", spec=AsyncAzureOpenAI) as mock_client:
mock_client.beta = MagicMock()
@@ -955,7 +944,6 @@ async def test_create_thread(azure_openai_assistant_agent, mock_thread, openai_u
assert called_kwargs["metadata"] == {"key": "value"}
-@pytest.mark.asyncio
async def test_create_thread_throws_with_invalid_role(azure_openai_assistant_agent, mock_thread, openai_unit_test_env):
with patch.object(azure_openai_assistant_agent, "client", spec=AsyncAzureOpenAI) as mock_client:
mock_client.beta = MagicMock()
@@ -971,7 +959,6 @@ async def test_create_thread_throws_with_invalid_role(azure_openai_assistant_age
)
-@pytest.mark.asyncio
async def test_delete_thread(azure_openai_assistant_agent: AzureAssistantAgent, openai_unit_test_env):
with patch.object(azure_openai_assistant_agent, "client", spec=AsyncAzureOpenAI) as mock_client:
mock_client.beta = MagicMock()
@@ -983,7 +970,6 @@ async def test_delete_thread(azure_openai_assistant_agent: AzureAssistantAgent,
mock_client.beta.threads.delete.assert_called_once_with("test_thread_id")
-@pytest.mark.asyncio
async def test_delete(azure_openai_assistant_agent, mock_assistant, openai_unit_test_env):
azure_openai_assistant_agent.assistant = mock_assistant
@@ -999,7 +985,6 @@ async def test_delete(azure_openai_assistant_agent, mock_assistant, openai_unit_
mock_client.beta.assistants.delete.assert_called_once_with(mock_assistant.id)
-@pytest.mark.asyncio
async def test_add_file(azure_openai_assistant_agent: AzureAssistantAgent, openai_unit_test_env):
with patch.object(azure_openai_assistant_agent, "client", spec=AsyncAzureOpenAI) as mock_client:
mock_client.files = MagicMock()
@@ -1014,7 +999,6 @@ async def test_add_file(azure_openai_assistant_agent: AzureAssistantAgent, opena
mock_client.files.create.assert_called_once()
-@pytest.mark.asyncio
async def test_add_file_not_found(azure_openai_assistant_agent: AzureAssistantAgent, openai_unit_test_env):
with patch.object(azure_openai_assistant_agent, "client", spec=AsyncAzureOpenAI) as mock_client:
mock_client.files = MagicMock()
@@ -1026,7 +1010,6 @@ async def test_add_file_not_found(azure_openai_assistant_agent: AzureAssistantAg
await azure_openai_assistant_agent.add_file("test_file_path", "assistants")
-@pytest.mark.asyncio
async def test_delete_file(azure_openai_assistant_agent: AzureAssistantAgent, openai_unit_test_env):
with patch.object(azure_openai_assistant_agent, "client", spec=AsyncAzureOpenAI) as mock_client:
mock_client.files = MagicMock()
@@ -1037,7 +1020,6 @@ async def test_delete_file(azure_openai_assistant_agent: AzureAssistantAgent, op
mock_client.files.delete.assert_called_once_with("test_file_id")
-@pytest.mark.asyncio
async def test_delete_file_raises_exception(azure_openai_assistant_agent: AzureAssistantAgent, openai_unit_test_env):
with patch.object(azure_openai_assistant_agent, "client", spec=AsyncAzureOpenAI) as mock_client:
mock_client.files = MagicMock()
@@ -1049,7 +1031,6 @@ async def test_delete_file_raises_exception(azure_openai_assistant_agent: AzureA
mock_client.files.delete.assert_called_once_with("test_file_id")
-@pytest.mark.asyncio
async def test_create_vector_store(azure_openai_assistant_agent: AzureAssistantAgent, openai_unit_test_env):
with patch.object(azure_openai_assistant_agent, "client", spec=AsyncAzureOpenAI) as mock_client:
mock_client.beta = MagicMock()
@@ -1062,7 +1043,6 @@ async def test_create_vector_store(azure_openai_assistant_agent: AzureAssistantA
mock_client.beta.vector_stores.create.assert_called_once_with(file_ids=["file_id1", "file_id2"])
-@pytest.mark.asyncio
async def test_create_vector_store_single_file_id(
azure_openai_assistant_agent: AzureAssistantAgent, openai_unit_test_env
):
@@ -1077,7 +1057,6 @@ async def test_create_vector_store_single_file_id(
mock_client.beta.vector_stores.create.assert_called_once_with(file_ids=["file_id1"])
-@pytest.mark.asyncio
async def test_create_vector_store_raises_exception(
azure_openai_assistant_agent: AzureAssistantAgent, openai_unit_test_env
):
@@ -1092,7 +1071,6 @@ async def test_create_vector_store_raises_exception(
mock_client.beta.vector_stores.create.assert_called_once_with(file_ids=["file_id1"])
-@pytest.mark.asyncio
async def test_delete_vector_store(azure_openai_assistant_agent: AzureAssistantAgent, openai_unit_test_env):
with patch.object(azure_openai_assistant_agent, "client", spec=AsyncAzureOpenAI) as mock_client:
mock_client.beta = MagicMock()
@@ -1104,7 +1082,6 @@ async def test_delete_vector_store(azure_openai_assistant_agent: AzureAssistantA
mock_client.beta.vector_stores.delete.assert_called_once_with("test_vector_store_id")
-@pytest.mark.asyncio
async def test_delete_vector_store_raises_exception(
azure_openai_assistant_agent: AzureAssistantAgent, openai_unit_test_env
):
@@ -1119,7 +1096,6 @@ async def test_delete_vector_store_raises_exception(
mock_client.beta.vector_stores.delete.assert_called_once_with("test_vector_store_id")
-@pytest.mark.asyncio
async def test_add_chat_message(
azure_openai_assistant_agent, mock_chat_message_content, mock_message, openai_unit_test_env
):
@@ -1139,7 +1115,6 @@ async def test_add_chat_message(
)
-@pytest.mark.asyncio
async def test_add_chat_message_invalid_role(
azure_openai_assistant_agent, mock_chat_message_content, openai_unit_test_env
):
@@ -1149,7 +1124,6 @@ async def test_add_chat_message_invalid_role(
await azure_openai_assistant_agent.add_chat_message("test_thread_id", mock_chat_message_content)
-@pytest.mark.asyncio
async def test_get_thread_messages(
azure_openai_assistant_agent, mock_thread_messages, mock_assistant, openai_unit_test_env
):
@@ -1181,7 +1155,6 @@ async def mock_retrieve_assistant(*args, **kwargs) -> Any:
assert str(messages[1].items[0].file_id) == "test_file_id"
-@pytest.mark.asyncio
async def test_invoke(
azure_openai_assistant_agent,
mock_assistant,
@@ -1233,7 +1206,6 @@ def mock_get_function_call_contents(run, function_steps):
_ = [message async for message in azure_openai_assistant_agent.invoke("thread_id")]
-@pytest.mark.asyncio
async def test_invoke_stream(
azure_openai_assistant_agent,
mock_assistant,
@@ -1269,7 +1241,6 @@ async def test_invoke_stream(
assert len(messages) > 0
-@pytest.mark.asyncio
async def test_invoke_stream_with_function_call(
azure_openai_assistant_agent,
mock_assistant,
@@ -1295,7 +1266,6 @@ async def test_invoke_stream_with_function_call(
assert content is not None
-@pytest.mark.asyncio
async def test_invoke_stream_code_output(
azure_openai_assistant_agent,
mock_assistant,
@@ -1320,7 +1290,6 @@ async def test_invoke_stream_code_output(
assert content.metadata.get("code") is True
-@pytest.mark.asyncio
async def test_invoke_stream_requires_action(
azure_openai_assistant_agent, mock_assistant, mock_thread_messages, azure_openai_unit_test_env
):
@@ -1348,7 +1317,6 @@ async def test_invoke_stream_requires_action(
assert len(messages) > 0
-@pytest.mark.asyncio
async def test_invoke_stream_throws_exception(
azure_openai_assistant_agent, mock_assistant, mock_thread_messages, azure_openai_unit_test_env
):
@@ -1374,13 +1342,11 @@ async def test_invoke_stream_throws_exception(
pass
-@pytest.mark.asyncio
async def test_invoke_assistant_not_initialized_throws(azure_openai_assistant_agent, openai_unit_test_env):
with pytest.raises(AgentInitializationException, match="The assistant has not been created."):
_ = [message async for message in azure_openai_assistant_agent.invoke("thread_id")]
-@pytest.mark.asyncio
async def test_invoke_agent_deleted_throws(azure_openai_assistant_agent, mock_assistant, openai_unit_test_env):
with patch.object(azure_openai_assistant_agent, "client", spec=AsyncAzureOpenAI) as mock_client:
mock_client.beta = MagicMock()
@@ -1395,7 +1361,6 @@ async def test_invoke_agent_deleted_throws(azure_openai_assistant_agent, mock_as
_ = [message async for message in azure_openai_assistant_agent.invoke("thread_id")]
-@pytest.mark.asyncio
async def test_invoke_raises_error(
azure_openai_assistant_agent,
mock_assistant,
@@ -1457,7 +1422,6 @@ def test_format_tool_outputs(azure_openai_assistant_agent, openai_unit_test_env)
assert tool_outputs[0] == {"tool_call_id": "test", "output": "123"}
-@pytest.mark.asyncio
async def test_invoke_function_calls(azure_openai_assistant_agent, openai_unit_test_env):
chat_history = ChatHistory()
fcc = FunctionCallContent(
@@ -1486,7 +1450,6 @@ def test_get_function_call_contents_no_action_required(
assert result == []
-@pytest.mark.asyncio
async def test_get_tools(azure_openai_assistant_agent: AzureAssistantAgent, mock_assistant, openai_unit_test_env):
with patch.object(azure_openai_assistant_agent, "client", spec=AsyncAzureOpenAI) as mock_client:
mock_client.beta = MagicMock()
@@ -1499,7 +1462,6 @@ async def test_get_tools(azure_openai_assistant_agent: AzureAssistantAgent, mock
assert tools is not None
-@pytest.mark.asyncio
async def test_get_tools_no_assistant_returns_empty_list(
azure_openai_assistant_agent: AzureAssistantAgent, openai_unit_test_env
):
@@ -1531,7 +1493,6 @@ def test_get_message_contents(azure_openai_assistant_agent: AzureAssistantAgent,
assert result is not None
-@pytest.mark.asyncio
async def test_retrieve_message(azure_openai_assistant_agent, mock_thread_messages, openai_unit_test_env):
with patch.object(azure_openai_assistant_agent, "client", spec=AsyncAzureOpenAI) as mock_client:
mock_client.beta = MagicMock()
@@ -1545,7 +1506,6 @@ async def test_retrieve_message(azure_openai_assistant_agent, mock_thread_messag
assert message is not None
-@pytest.mark.asyncio
async def test_retrieve_message_fails_polls_again(
azure_openai_assistant_agent: AzureAssistantAgent, openai_unit_test_env
):
@@ -1564,7 +1524,6 @@ async def test_retrieve_message_fails_polls_again(
assert message is None
-@pytest.mark.asyncio
async def test_poll_run_status(
azure_openai_assistant_agent, mock_run_required_action, mock_run_completed, openai_unit_test_env
):
@@ -1593,7 +1552,6 @@ async def test_poll_run_status(
assert f"after waiting {azure_openai_assistant_agent.polling_options.run_polling_timeout}" in str(excinfo.value)
-@pytest.mark.asyncio
async def test_poll_run_status_incomplete(
azure_openai_assistant_agent, mock_run_required_action, mock_run_incomplete, openai_unit_test_env
):
@@ -1610,7 +1568,6 @@ async def test_poll_run_status_incomplete(
assert run.status in azure_openai_assistant_agent.error_message_states
-@pytest.mark.asyncio
async def test_poll_run_status_cancelled(
azure_openai_assistant_agent, mock_run_required_action, mock_run_cancelled, openai_unit_test_env
):
@@ -1627,7 +1584,6 @@ async def test_poll_run_status_cancelled(
assert run.status in azure_openai_assistant_agent.error_message_states
-@pytest.mark.asyncio
async def test_poll_run_status_exception_polls_again(
azure_openai_assistant_agent, mock_run_required_action, mock_run_completed, openai_unit_test_env
):
diff --git a/python/tests/unit/agents/test_open_ai_assistant_channel.py b/python/tests/unit/agents/test_open_ai_assistant_channel.py
index 7f45e88e4de4..92f076de53da 100644
--- a/python/tests/unit/agents/test_open_ai_assistant_channel.py
+++ b/python/tests/unit/agents/test_open_ai_assistant_channel.py
@@ -97,7 +97,6 @@ def mock_assistant():
)
-@pytest.mark.asyncio
async def test_receive_messages():
from semantic_kernel.agents.channels.open_ai_assistant_channel import OpenAIAssistantChannel
@@ -113,7 +112,6 @@ async def test_receive_messages():
await channel.receive(history)
-@pytest.mark.asyncio
async def test_invoke_agent():
from semantic_kernel.agents.channels.open_ai_assistant_channel import OpenAIAssistantChannel
@@ -139,7 +137,6 @@ async def mock_invoke_internal(*args, **kwargs):
assert isinstance(message, ChatMessageContent)
-@pytest.mark.asyncio
async def test_invoke_agent_invalid_instance_throws():
from semantic_kernel.agents.channels.open_ai_assistant_channel import OpenAIAssistantChannel
@@ -154,7 +151,6 @@ async def test_invoke_agent_invalid_instance_throws():
pass
-@pytest.mark.asyncio
async def test_invoke_streaming_agent():
from semantic_kernel.agents.channels.open_ai_assistant_channel import OpenAIAssistantChannel
@@ -182,7 +178,6 @@ async def mock_invoke_internal(*args, **kwargs):
assert isinstance(message, ChatMessageContent)
-@pytest.mark.asyncio
async def test_invoke_streaming_agent_invalid_instance_throws():
from semantic_kernel.agents.channels.open_ai_assistant_channel import OpenAIAssistantChannel
@@ -197,7 +192,6 @@ async def test_invoke_streaming_agent_invalid_instance_throws():
pass
-@pytest.mark.asyncio
async def test_invoke_agent_deleted():
from semantic_kernel.agents.channels.open_ai_assistant_channel import OpenAIAssistantChannel
@@ -212,7 +206,6 @@ async def test_invoke_agent_deleted():
pass
-@pytest.mark.asyncio
async def test_invoke_streaming_agent_deleted():
from semantic_kernel.agents.channels.open_ai_assistant_channel import OpenAIAssistantChannel
@@ -227,7 +220,6 @@ async def test_invoke_streaming_agent_deleted():
pass
-@pytest.mark.asyncio
async def test_invoke_agent_wrong_type():
from semantic_kernel.agents.channels.open_ai_assistant_channel import OpenAIAssistantChannel
@@ -241,7 +233,6 @@ async def test_invoke_agent_wrong_type():
pass
-@pytest.mark.asyncio
async def test_get_history(mock_thread_messages, mock_assistant, openai_unit_test_env):
from semantic_kernel.agents.channels.open_ai_assistant_channel import OpenAIAssistantChannel
@@ -270,7 +261,6 @@ async def mock_retrieve_assistant(*args, **kwargs) -> Any:
mock_client.beta.threads.messages.list.assert_awaited_once_with(thread_id=thread_id, limit=100, order="desc")
-@pytest.mark.asyncio
async def test_reset_channel(mock_thread_messages, mock_assistant, openai_unit_test_env):
from semantic_kernel.agents.channels.open_ai_assistant_channel import OpenAIAssistantChannel
@@ -304,7 +294,6 @@ async def mock_retrieve_assistant(*args, **kwargs) -> Any:
assert channel.thread_id is not None
-@pytest.mark.asyncio
async def test_reset_channel_error_throws_exception(mock_thread_messages, mock_assistant, openai_unit_test_env):
from semantic_kernel.agents.channels.open_ai_assistant_channel import OpenAIAssistantChannel
@@ -337,7 +326,6 @@ async def mock_retrieve_assistant(*args, **kwargs) -> Any:
await channel.reset()
-@pytest.mark.asyncio
async def test_channel_receive_fcc_skipped(openai_unit_test_env):
from semantic_kernel.agents.channels.open_ai_assistant_channel import OpenAIAssistantChannel
diff --git a/python/tests/unit/agents/test_sequential_strategy_selection.py b/python/tests/unit/agents/test_sequential_strategy_selection.py
index e1a0d454bc3b..1a2db9d7409d 100644
--- a/python/tests/unit/agents/test_sequential_strategy_selection.py
+++ b/python/tests/unit/agents/test_sequential_strategy_selection.py
@@ -34,7 +34,6 @@ def agents():
return [MockAgent(id=f"agent-{i}") for i in range(3)]
-@pytest.mark.asyncio
async def test_sequential_selection_next(agents):
strategy = SequentialSelectionStrategy()
@@ -48,7 +47,6 @@ async def test_sequential_selection_next(agents):
assert selected_agent_3.id == "agent-2"
-@pytest.mark.asyncio
async def test_sequential_selection_wraps_around(agents):
strategy = SequentialSelectionStrategy()
@@ -59,7 +57,6 @@ async def test_sequential_selection_wraps_around(agents):
assert selected_agent.id == "agent-0"
-@pytest.mark.asyncio
async def test_sequential_selection_reset(agents):
strategy = SequentialSelectionStrategy()
@@ -73,7 +70,6 @@ async def test_sequential_selection_reset(agents):
assert selected_agent.id == "agent-0"
-@pytest.mark.asyncio
async def test_sequential_selection_exceeds_length(agents):
strategy = SequentialSelectionStrategy()
@@ -85,7 +81,6 @@ async def test_sequential_selection_exceeds_length(agents):
assert strategy._index == 1
-@pytest.mark.asyncio
async def test_sequential_selection_empty_agents():
strategy = SequentialSelectionStrategy()
diff --git a/python/tests/unit/agents/test_termination_strategy.py b/python/tests/unit/agents/test_termination_strategy.py
index c66d8bc573e1..6888745453a8 100644
--- a/python/tests/unit/agents/test_termination_strategy.py
+++ b/python/tests/unit/agents/test_termination_strategy.py
@@ -37,7 +37,6 @@ async def should_agent_terminate(self, agent: "Agent", history: list[ChatMessage
return True
-@pytest.mark.asyncio
async def test_should_terminate_with_matching_agent():
agent = MockAgent(id="test-agent-id")
strategy = TerminationStrategyTest(agents=[agent])
@@ -49,7 +48,6 @@ async def test_should_terminate_with_matching_agent():
assert result is True
-@pytest.mark.asyncio
async def test_should_terminate_with_non_matching_agent():
agent = MockAgent(id="test-agent-id")
non_matching_agent = MockAgent(id="non-matching-agent-id")
@@ -62,7 +60,6 @@ async def test_should_terminate_with_non_matching_agent():
assert result is False
-@pytest.mark.asyncio
async def test_should_terminate_no_agents_in_strategy():
agent = MockAgent(id="test-agent-id")
strategy = TerminationStrategyTest()
@@ -74,7 +71,6 @@ async def test_should_terminate_no_agents_in_strategy():
assert result is True
-@pytest.mark.asyncio
async def test_should_agent_terminate_not_implemented():
agent = MockAgent(id="test-agent-id")
strategy = TerminationStrategy(agents=[agent])
diff --git a/python/tests/unit/connectors/ai/anthropic/services/test_anthropic_chat_completion.py b/python/tests/unit/connectors/ai/anthropic/services/test_anthropic_chat_completion.py
index 072612c5d5e6..d368dd901c4d 100644
--- a/python/tests/unit/connectors/ai/anthropic/services/test_anthropic_chat_completion.py
+++ b/python/tests/unit/connectors/ai/anthropic/services/test_anthropic_chat_completion.py
@@ -433,7 +433,6 @@ def mock_anthropic_client_completion_stream(mock_streaming_message_response: Asy
return client
-@pytest.mark.asyncio
async def test_complete_chat_contents(
kernel: Kernel,
mock_settings: AnthropicChatPromptExecutionSettings,
@@ -497,7 +496,6 @@ async def test_complete_chat_contents(
),
],
)
-@pytest.mark.asyncio
async def test_complete_chat_contents_function_call_behavior_tool_call(
kernel: Kernel,
mock_settings: AnthropicChatPromptExecutionSettings,
@@ -521,7 +519,6 @@ async def test_complete_chat_contents_function_call_behavior_tool_call(
assert all(isinstance(content, expected_result) for content in response[0].items)
-@pytest.mark.asyncio
async def test_complete_chat_contents_function_call_behavior_without_kernel(
mock_settings: AnthropicChatPromptExecutionSettings,
mock_anthropic_client_completion: AsyncAnthropic,
@@ -537,7 +534,6 @@ async def test_complete_chat_contents_function_call_behavior_without_kernel(
await chat_completion_base.get_chat_message_contents(chat_history=chat_history, settings=mock_settings)
-@pytest.mark.asyncio
async def test_complete_chat_stream_contents(
kernel: Kernel,
mock_settings: AnthropicChatPromptExecutionSettings,
@@ -599,7 +595,6 @@ async def test_complete_chat_stream_contents(
pytest.param(FunctionChoiceBehavior.NoneInvoke(), [[mock_message_text_content]], TextContent, id="none"),
],
)
-@pytest.mark.asyncio
async def test_complete_chat_contents_streaming_function_call_behavior_tool_call(
kernel: Kernel,
mock_settings: AnthropicChatPromptExecutionSettings,
@@ -630,7 +625,6 @@ async def test_complete_chat_contents_streaming_function_call_behavior_tool_call
assert all(isinstance(content, expected_result) for content in response[0].items)
-@pytest.mark.asyncio
async def test_anthropic_sdk_exception(kernel: Kernel, mock_settings: AnthropicChatPromptExecutionSettings):
client = MagicMock(spec=AsyncAnthropic)
messages_mock = MagicMock()
@@ -650,7 +644,6 @@ async def test_anthropic_sdk_exception(kernel: Kernel, mock_settings: AnthropicC
)
-@pytest.mark.asyncio
async def test_anthropic_sdk_exception_streaming(kernel: Kernel, mock_settings: AnthropicChatPromptExecutionSettings):
client = MagicMock(spec=AsyncAnthropic)
messages_mock = MagicMock()
@@ -704,7 +697,6 @@ def test_prompt_execution_settings_class(anthropic_unit_test_env):
assert prompt_execution_settings == AnthropicChatPromptExecutionSettings
-@pytest.mark.asyncio
async def test_with_different_execution_settings(kernel: Kernel, mock_anthropic_client_completion: MagicMock):
chat_history = MagicMock()
settings = OpenAIChatPromptExecutionSettings(temperature=0.2)
@@ -720,7 +712,6 @@ async def test_with_different_execution_settings(kernel: Kernel, mock_anthropic_
assert mock_anthropic_client_completion.messages.create.call_args.kwargs["temperature"] == 0.2
-@pytest.mark.asyncio
async def test_with_different_execution_settings_stream(
kernel: Kernel, mock_anthropic_client_completion_stream: MagicMock
):
@@ -741,7 +732,6 @@ async def test_with_different_execution_settings_stream(
assert mock_anthropic_client_completion_stream.messages.stream.call_args.kwargs["temperature"] == 0.2
-@pytest.mark.asyncio
async def test_prepare_chat_history_for_request_with_system_message(mock_anthropic_client_completion_stream: MagicMock):
chat_history = ChatHistory()
chat_history.add_system_message("System message")
@@ -768,7 +758,6 @@ async def test_prepare_chat_history_for_request_with_system_message(mock_anthrop
assert not any(msg["role"] == AuthorRole.SYSTEM for msg in remaining_messages)
-@pytest.mark.asyncio
async def test_prepare_chat_history_for_request_with_tool_message(
mock_anthropic_client_completion_stream: MagicMock,
mock_tool_calls_message: ChatMessageContent,
@@ -794,7 +783,6 @@ async def test_prepare_chat_history_for_request_with_tool_message(
assert len(remaining_messages) == 3
-@pytest.mark.asyncio
async def test_prepare_chat_history_for_request_with_tool_message_streaming(
mock_anthropic_client_completion_stream: MagicMock,
mock_streaming_chat_message_content: StreamingChatMessageContent,
@@ -823,7 +811,6 @@ async def test_prepare_chat_history_for_request_with_tool_message_streaming(
assert len(remaining_messages) == 3
-@pytest.mark.asyncio
async def test_send_chat_stream_request_tool_calls(
mock_streaming_tool_calls_message: MagicMock,
mock_streaming_chat_message_content: StreamingChatMessageContent,
diff --git a/python/tests/unit/connectors/ai/azure_ai_inference/services/test_azure_ai_inference_chat_completion.py b/python/tests/unit/connectors/ai/azure_ai_inference/services/test_azure_ai_inference_chat_completion.py
index 6a81acf26cfb..2cccebda1f52 100644
--- a/python/tests/unit/connectors/ai/azure_ai_inference/services/test_azure_ai_inference_chat_completion.py
+++ b/python/tests/unit/connectors/ai/azure_ai_inference/services/test_azure_ai_inference_chat_completion.py
@@ -96,7 +96,8 @@ def test_prompt_execution_settings_class(azure_ai_inference_unit_test_env, model
# region chat completion
-@pytest.mark.asyncio
+
+
@pytest.mark.parametrize(
"azure_ai_inference_service",
[AzureAIInferenceChatCompletion.__name__],
@@ -128,7 +129,6 @@ async def test_azure_ai_inference_chat_completion(
assert responses[0].content == "Hello"
-@pytest.mark.asyncio
@pytest.mark.parametrize(
"azure_ai_inference_service",
[AzureAIInferenceChatCompletion.__name__],
@@ -175,7 +175,6 @@ async def test_azure_ai_inference_chat_completion_with_standard_parameters(
assert responses[0].content == "Hello"
-@pytest.mark.asyncio
@pytest.mark.parametrize(
"azure_ai_inference_service",
[AzureAIInferenceChatCompletion.__name__],
@@ -209,7 +208,6 @@ async def test_azure_ai_inference_chat_completion_with_extra_parameters(
assert responses[0].content == "Hello"
-@pytest.mark.asyncio
@pytest.mark.parametrize(
"azure_ai_inference_service",
[AzureAIInferenceChatCompletion.__name__],
@@ -247,7 +245,6 @@ async def test_azure_ai_inference_chat_completion_with_function_choice_behavior_
)
-@pytest.mark.asyncio
@pytest.mark.parametrize(
"azure_ai_inference_service",
[AzureAIInferenceChatCompletion.__name__],
@@ -288,7 +285,6 @@ async def test_azure_ai_inference_chat_completion_with_function_choice_behavior(
assert responses[0].finish_reason == FinishReason.TOOL_CALLS
-@pytest.mark.asyncio
@pytest.mark.parametrize(
"azure_ai_inference_service",
[AzureAIInferenceChatCompletion.__name__],
@@ -333,7 +329,8 @@ async def test_azure_ai_inference_chat_completion_with_function_choice_behavior_
# region streaming chat completion
-@pytest.mark.asyncio
+
+
@pytest.mark.parametrize(
"azure_ai_inference_service",
[AzureAIInferenceChatCompletion.__name__],
@@ -366,7 +363,6 @@ async def test_azure_ai_inference_streaming_chat_completion(
)
-@pytest.mark.asyncio
@pytest.mark.parametrize(
"azure_ai_inference_service",
[AzureAIInferenceChatCompletion.__name__],
@@ -414,7 +410,6 @@ async def test_azure_ai_inference_chat_streaming_completion_with_standard_parame
)
-@pytest.mark.asyncio
@pytest.mark.parametrize(
"azure_ai_inference_service",
[AzureAIInferenceChatCompletion.__name__],
@@ -449,7 +444,6 @@ async def test_azure_ai_inference_streaming_chat_completion_with_extra_parameter
)
-@pytest.mark.asyncio
@pytest.mark.parametrize(
"azure_ai_inference_service",
[AzureAIInferenceChatCompletion.__name__],
@@ -489,7 +483,6 @@ async def test_azure_ai_inference_streaming_chat_completion_with_function_choice
pass
-@pytest.mark.asyncio
@pytest.mark.parametrize(
"azure_ai_inference_service",
[AzureAIInferenceChatCompletion.__name__],
@@ -530,7 +523,6 @@ async def test_azure_ai_inference_streaming_chat_completion_with_function_choice
assert mock_complete.call_count == 1
-@pytest.mark.asyncio
@pytest.mark.parametrize(
"azure_ai_inference_service",
[AzureAIInferenceChatCompletion.__name__],
diff --git a/python/tests/unit/connectors/ai/azure_ai_inference/services/test_azure_ai_inference_text_embedding.py b/python/tests/unit/connectors/ai/azure_ai_inference/services/test_azure_ai_inference_text_embedding.py
index a738fb5500ab..c17510fec13b 100644
--- a/python/tests/unit/connectors/ai/azure_ai_inference/services/test_azure_ai_inference_text_embedding.py
+++ b/python/tests/unit/connectors/ai/azure_ai_inference/services/test_azure_ai_inference_text_embedding.py
@@ -74,7 +74,6 @@ def test_azure_ai_inference_text_embedding_init_with_empty_endpoint(azure_ai_inf
AzureAIInferenceTextEmbedding(model_id, env_file_path="fake_path")
-@pytest.mark.asyncio
@pytest.mark.parametrize(
"azure_ai_inference_service",
[AzureAIInferenceTextEmbedding.__name__],
@@ -98,7 +97,6 @@ async def test_azure_ai_inference_text_embedding(
)
-@pytest.mark.asyncio
@pytest.mark.parametrize(
"azure_ai_inference_service",
[AzureAIInferenceTextEmbedding.__name__],
@@ -125,7 +123,6 @@ async def test_azure_ai_inference_text_embedding_with_standard_settings(
)
-@pytest.mark.asyncio
@pytest.mark.parametrize(
"azure_ai_inference_service",
[AzureAIInferenceTextEmbedding.__name__],
diff --git a/python/tests/unit/connectors/ai/azure_ai_inference/services/test_azure_ai_inference_tracing.py b/python/tests/unit/connectors/ai/azure_ai_inference/services/test_azure_ai_inference_tracing.py
index d8c83912093f..da56c9d4a3c9 100644
--- a/python/tests/unit/connectors/ai/azure_ai_inference/services/test_azure_ai_inference_tracing.py
+++ b/python/tests/unit/connectors/ai/azure_ai_inference/services/test_azure_ai_inference_tracing.py
@@ -14,7 +14,6 @@
from semantic_kernel.contents.chat_history import ChatHistory
-@pytest.mark.asyncio
@pytest.mark.parametrize(
"azure_ai_inference_service",
[AzureAIInferenceChatCompletion.__name__],
@@ -43,7 +42,6 @@ async def test_azure_ai_inference_chat_completion_instrumentation(
mock_uninstrument.assert_called_once()
-@pytest.mark.asyncio
@pytest.mark.parametrize(
"azure_ai_inference_service",
[
@@ -84,7 +82,6 @@ async def test_azure_ai_inference_chat_completion_not_instrumentation(
mock_uninstrument.assert_not_called()
-@pytest.mark.asyncio
@pytest.mark.parametrize(
"azure_ai_inference_service",
[
@@ -125,7 +122,6 @@ async def test_azure_ai_inference_chat_completion_instrumentation_without_sensit
mock_uninstrument.assert_called_once()
-@pytest.mark.asyncio
@pytest.mark.parametrize(
"azure_ai_inference_service",
[AzureAIInferenceChatCompletion.__name__],
@@ -157,7 +153,6 @@ async def test_azure_ai_inference_streaming_chat_completion_instrumentation(
mock_uninstrument.assert_called_once()
-@pytest.mark.asyncio
@pytest.mark.parametrize(
"azure_ai_inference_service",
[
@@ -201,7 +196,6 @@ async def test_azure_ai_inference_streaming_chat_completion_not_instrumentation(
mock_uninstrument.assert_not_called()
-@pytest.mark.asyncio
@pytest.mark.parametrize(
"azure_ai_inference_service",
[
diff --git a/python/tests/unit/connectors/ai/bedrock/services/test_bedrock_chat_completion.py b/python/tests/unit/connectors/ai/bedrock/services/test_bedrock_chat_completion.py
index 94a768c6a5f4..fe0407fda436 100644
--- a/python/tests/unit/connectors/ai/bedrock/services/test_bedrock_chat_completion.py
+++ b/python/tests/unit/connectors/ai/bedrock/services/test_bedrock_chat_completion.py
@@ -174,7 +174,6 @@ def test_prepare_settings_for_request(mock_client, model_id, chat_history) -> No
# region chat completion
-@pytest.mark.asyncio
@pytest.mark.parametrize(
# These are fake model ids with the supported prefixes
"model_id",
@@ -231,7 +230,6 @@ async def test_bedrock_chat_completion(
assert response[0].inner_content == mock_bedrock_chat_completion_response
-@pytest.mark.asyncio
@pytest.mark.parametrize(
# These are fake model ids with the supported prefixes
"model_id",
@@ -283,7 +281,6 @@ async def test_bedrock_streaming_chat_completion(
assert response.finish_reason == FinishReason.STOP
-@pytest.mark.asyncio
async def test_bedrock_streaming_chat_completion_with_unsupported_model(
model_id,
chat_history: ChatHistory,
@@ -308,8 +305,6 @@ async def test_bedrock_streaming_chat_completion_with_unsupported_model(
pass
-@pytest.mark.asyncio
-@pytest.mark.asyncio
@pytest.mark.parametrize(
# These are fake model ids with the supported prefixes
"model_id",
diff --git a/python/tests/unit/connectors/ai/bedrock/services/test_bedrock_text_completion.py b/python/tests/unit/connectors/ai/bedrock/services/test_bedrock_text_completion.py
index cb973f51e705..4f124980cb38 100644
--- a/python/tests/unit/connectors/ai/bedrock/services/test_bedrock_text_completion.py
+++ b/python/tests/unit/connectors/ai/bedrock/services/test_bedrock_text_completion.py
@@ -116,7 +116,6 @@ def test_prompt_execution_settings_class(mock_client, bedrock_unit_test_env) ->
# region text completion
-@pytest.mark.asyncio
@pytest.mark.parametrize(
# These are fake model ids with the supported prefixes
"model_id",
@@ -165,7 +164,6 @@ async def test_bedrock_text_completion(
assert response[0].text == output_text
-@pytest.mark.asyncio
@pytest.mark.parametrize(
# These are fake model ids with the supported prefixes
"model_id",
@@ -215,7 +213,6 @@ async def test_bedrock_streaming_text_completion(
assert isinstance(response.inner_content, list)
-@pytest.mark.asyncio
async def test_bedrock_streaming_text_completion_with_unsupported_model(
model_id,
) -> None:
diff --git a/python/tests/unit/connectors/ai/bedrock/services/test_bedrock_text_embedding_generation.py b/python/tests/unit/connectors/ai/bedrock/services/test_bedrock_text_embedding_generation.py
index 99f0678f2c6a..a0ffcd205f0b 100644
--- a/python/tests/unit/connectors/ai/bedrock/services/test_bedrock_text_embedding_generation.py
+++ b/python/tests/unit/connectors/ai/bedrock/services/test_bedrock_text_embedding_generation.py
@@ -112,7 +112,6 @@ def test_prompt_execution_settings_class(mock_client, bedrock_unit_test_env) ->
# endregion
-@pytest.mark.asyncio
@pytest.mark.parametrize(
# These are fake model ids with the supported prefixes
"model_id",
@@ -150,7 +149,6 @@ async def test_bedrock_text_embedding(model_id, mock_bedrock_text_embedding_resp
assert len(response) == 2
-@pytest.mark.asyncio
async def test_bedrock_text_embedding_with_unsupported_model_input_modality(model_id) -> None:
"""Test Bedrock text embedding generation with unsupported model"""
with patch.object(
@@ -167,7 +165,6 @@ async def test_bedrock_text_embedding_with_unsupported_model_input_modality(mode
await bedrock_text_embedding.generate_embeddings(["hello", "world"])
-@pytest.mark.asyncio
async def test_bedrock_text_embedding_with_unsupported_model_output_modality(model_id) -> None:
"""Test Bedrock text embedding generation with unsupported model"""
with patch.object(
@@ -186,7 +183,6 @@ async def test_bedrock_text_embedding_with_unsupported_model_output_modality(mod
await bedrock_text_embedding.generate_embeddings(["hello", "world"])
-@pytest.mark.asyncio
@pytest.mark.parametrize(
# These are fake model ids with the supported prefixes
"model_id",
diff --git a/python/tests/unit/connectors/ai/google/google_ai/conftest.py b/python/tests/unit/connectors/ai/google/google_ai/conftest.py
index 7f27c217713b..636344a97a02 100644
--- a/python/tests/unit/connectors/ai/google/google_ai/conftest.py
+++ b/python/tests/unit/connectors/ai/google/google_ai/conftest.py
@@ -93,7 +93,7 @@ def mock_google_ai_chat_completion_response_with_tool_call() -> AsyncGenerateCon
)
-@pytest_asyncio.fixture()
+@pytest_asyncio.fixture
async def mock_google_ai_streaming_chat_completion_response() -> AsyncGenerateContentResponse:
"""Mock Google AI streaming Chat Completion response."""
candidate = protos.Candidate()
@@ -118,7 +118,7 @@ async def mock_google_ai_streaming_chat_completion_response() -> AsyncGenerateCo
)
-@pytest_asyncio.fixture()
+@pytest_asyncio.fixture
async def mock_google_ai_streaming_chat_completion_response_with_tool_call() -> AsyncGenerateContentResponse:
"""Mock Google AI streaming Chat Completion response with tool call."""
candidate = protos.Candidate()
@@ -170,7 +170,7 @@ def mock_google_ai_text_completion_response() -> AsyncGenerateContentResponse:
)
-@pytest_asyncio.fixture()
+@pytest_asyncio.fixture
async def mock_google_ai_streaming_text_completion_response() -> AsyncGenerateContentResponse:
"""Mock Google AI streaming Text Completion response."""
candidate = protos.Candidate()
diff --git a/python/tests/unit/connectors/ai/google/google_ai/services/test_google_ai_chat_completion.py b/python/tests/unit/connectors/ai/google/google_ai/services/test_google_ai_chat_completion.py
index f60640b9472c..4fedc18d5386 100644
--- a/python/tests/unit/connectors/ai/google/google_ai/services/test_google_ai_chat_completion.py
+++ b/python/tests/unit/connectors/ai/google/google_ai/services/test_google_ai_chat_completion.py
@@ -75,7 +75,8 @@ def test_prompt_execution_settings_class(google_ai_unit_test_env) -> None:
# region chat completion
-@pytest.mark.asyncio
+
+
@patch.object(GenerativeModel, "generate_content_async", new_callable=AsyncMock)
async def test_google_ai_chat_completion(
mock_google_ai_model_generate_content_async,
@@ -108,7 +109,6 @@ async def test_google_ai_chat_completion(
assert responses[0].inner_content == mock_google_ai_chat_completion_response
-@pytest.mark.asyncio
async def test_google_ai_chat_completion_with_function_choice_behavior_fail_verification(
chat_history: ChatHistory,
google_ai_unit_test_env,
@@ -129,7 +129,6 @@ async def test_google_ai_chat_completion_with_function_choice_behavior_fail_veri
)
-@pytest.mark.asyncio
@patch.object(GenerativeModel, "generate_content_async", new_callable=AsyncMock)
async def test_google_ai_chat_completion_with_function_choice_behavior(
mock_google_ai_model_generate_content_async,
@@ -164,7 +163,6 @@ async def test_google_ai_chat_completion_with_function_choice_behavior(
assert responses[0].finish_reason == FinishReason.STOP
-@pytest.mark.asyncio
@patch.object(GenerativeModel, "generate_content_async", new_callable=AsyncMock)
async def test_google_ai_chat_completion_with_function_choice_behavior_no_tool_call(
mock_google_ai_model_generate_content_async,
@@ -204,7 +202,8 @@ async def test_google_ai_chat_completion_with_function_choice_behavior_no_tool_c
# region streaming chat completion
-@pytest.mark.asyncio
+
+
@patch.object(GenerativeModel, "generate_content_async", new_callable=AsyncMock)
async def test_google_ai_streaming_chat_completion(
mock_google_ai_model_generate_content_async,
@@ -234,7 +233,6 @@ async def test_google_ai_streaming_chat_completion(
)
-@pytest.mark.asyncio
async def test_google_ai_streaming_chat_completion_with_function_choice_behavior_fail_verification(
chat_history: ChatHistory,
google_ai_unit_test_env,
@@ -257,7 +255,6 @@ async def test_google_ai_streaming_chat_completion_with_function_choice_behavior
pass
-@pytest.mark.asyncio
@patch.object(GenerativeModel, "generate_content_async", new_callable=AsyncMock)
async def test_google_ai_streaming_chat_completion_with_function_choice_behavior(
mock_google_ai_model_generate_content_async,
@@ -294,7 +291,6 @@ async def test_google_ai_streaming_chat_completion_with_function_choice_behavior
assert mock_google_ai_model_generate_content_async.call_count == 1
-@pytest.mark.asyncio
@patch.object(GenerativeModel, "generate_content_async", new_callable=AsyncMock)
async def test_google_ai_streaming_chat_completion_with_function_choice_behavior_no_tool_call(
mock_google_ai_model_generate_content_async,
diff --git a/python/tests/unit/connectors/ai/google/google_ai/services/test_google_ai_text_completion.py b/python/tests/unit/connectors/ai/google/google_ai/services/test_google_ai_text_completion.py
index 10c9967e046d..27e9ec74d3d0 100644
--- a/python/tests/unit/connectors/ai/google/google_ai/services/test_google_ai_text_completion.py
+++ b/python/tests/unit/connectors/ai/google/google_ai/services/test_google_ai_text_completion.py
@@ -68,7 +68,8 @@ def test_prompt_execution_settings_class(google_ai_unit_test_env) -> None:
# region text completion
-@pytest.mark.asyncio
+
+
@patch.object(GenerativeModel, "generate_content_async", new_callable=AsyncMock)
async def test_google_ai_text_completion(
mock_google_model_generate_content_async,
@@ -99,7 +100,8 @@ async def test_google_ai_text_completion(
# region streaming text completion
-@pytest.mark.asyncio
+
+
@patch.object(GenerativeModel, "generate_content_async", new_callable=AsyncMock)
async def test_google_ai_streaming_text_completion(
mock_google_model_generate_content_async,
diff --git a/python/tests/unit/connectors/ai/google/google_ai/services/test_google_ai_text_embedding.py b/python/tests/unit/connectors/ai/google/google_ai/services/test_google_ai_text_embedding.py
index 6870b95d4b23..8a8321b8dcda 100644
--- a/python/tests/unit/connectors/ai/google/google_ai/services/test_google_ai_text_embedding.py
+++ b/python/tests/unit/connectors/ai/google/google_ai/services/test_google_ai_text_embedding.py
@@ -65,7 +65,6 @@ def test_prompt_execution_settings_class(google_ai_unit_test_env) -> None:
# endregion init
-@pytest.mark.asyncio
@patch("google.generativeai.embed_content_async")
async def test_embedding(mock_embedding_client, google_ai_unit_test_env, prompt):
"""Test that the service initializes and generates embeddings correctly."""
@@ -85,7 +84,6 @@ async def test_embedding(mock_embedding_client, google_ai_unit_test_env, prompt)
mock_embedding_client.assert_called_once_with(model=model_id, content=[prompt])
-@pytest.mark.asyncio
@patch("google.generativeai.embed_content_async")
async def test_embedding_with_settings(mock_embedding_client, google_ai_unit_test_env, prompt):
"""Test that the service initializes and generates embeddings correctly."""
@@ -110,7 +108,6 @@ async def test_embedding_with_settings(mock_embedding_client, google_ai_unit_tes
)
-@pytest.mark.asyncio
@patch("google.generativeai.embed_content_async")
async def test_embedding_without_settings(mock_embedding_client, google_ai_unit_test_env, prompt):
"""Test that the service initializes and generates embeddings correctly without settings."""
@@ -129,7 +126,6 @@ async def test_embedding_without_settings(mock_embedding_client, google_ai_unit_
)
-@pytest.mark.asyncio
@patch("google.generativeai.embed_content_async")
async def test_embedding_list_input(mock_embedding_client, google_ai_unit_test_env, prompt):
"""Test that the service initializes and generates embeddings correctly with a list of prompts."""
@@ -149,7 +145,6 @@ async def test_embedding_list_input(mock_embedding_client, google_ai_unit_test_e
mock_embedding_client.assert_called_once_with(model=model_id, content=[prompt, prompt])
-@pytest.mark.asyncio
@patch("google.generativeai.embed_content_async")
async def test_raw_embedding(mock_embedding_client, google_ai_unit_test_env, prompt):
"""Test that the service initializes and generates embeddings correctly."""
diff --git a/python/tests/unit/connectors/ai/google/vertex_ai/services/test_vertex_ai_chat_completion.py b/python/tests/unit/connectors/ai/google/vertex_ai/services/test_vertex_ai_chat_completion.py
index 99ce39a455f7..6b2f1f1082b7 100644
--- a/python/tests/unit/connectors/ai/google/vertex_ai/services/test_vertex_ai_chat_completion.py
+++ b/python/tests/unit/connectors/ai/google/vertex_ai/services/test_vertex_ai_chat_completion.py
@@ -75,7 +75,8 @@ def test_prompt_execution_settings_class(vertex_ai_unit_test_env) -> None:
# region chat completion
-@pytest.mark.asyncio
+
+
@patch.object(GenerativeModel, "generate_content_async", new_callable=AsyncMock)
async def test_vertex_ai_chat_completion(
mock_vertex_ai_model_generate_content_async,
@@ -108,7 +109,6 @@ async def test_vertex_ai_chat_completion(
assert responses[0].inner_content == mock_vertex_ai_chat_completion_response
-@pytest.mark.asyncio
async def test_vertex_ai_chat_completion_with_function_choice_behavior_fail_verification(
chat_history: ChatHistory,
vertex_ai_unit_test_env,
@@ -129,7 +129,6 @@ async def test_vertex_ai_chat_completion_with_function_choice_behavior_fail_veri
)
-@pytest.mark.asyncio
@patch.object(GenerativeModel, "generate_content_async", new_callable=AsyncMock)
async def test_vertex_ai_chat_completion_with_function_choice_behavior(
mock_vertex_ai_model_generate_content_async,
@@ -164,7 +163,6 @@ async def test_vertex_ai_chat_completion_with_function_choice_behavior(
assert responses[0].finish_reason == FinishReason.STOP
-@pytest.mark.asyncio
@patch.object(GenerativeModel, "generate_content_async", new_callable=AsyncMock)
async def test_vertex_ai_chat_completion_with_function_choice_behavior_no_tool_call(
mock_vertex_ai_model_generate_content_async,
@@ -204,7 +202,8 @@ async def test_vertex_ai_chat_completion_with_function_choice_behavior_no_tool_c
# region streaming chat completion
-@pytest.mark.asyncio
+
+
@patch.object(GenerativeModel, "generate_content_async", new_callable=AsyncMock)
async def test_vertex_ai_streaming_chat_completion(
mock_vertex_ai_model_generate_content_async,
@@ -234,7 +233,6 @@ async def test_vertex_ai_streaming_chat_completion(
)
-@pytest.mark.asyncio
async def test_vertex_ai_streaming_chat_completion_with_function_choice_behavior_fail_verification(
chat_history: ChatHistory,
vertex_ai_unit_test_env,
@@ -257,7 +255,6 @@ async def test_vertex_ai_streaming_chat_completion_with_function_choice_behavior
pass
-@pytest.mark.asyncio
@patch.object(GenerativeModel, "generate_content_async", new_callable=AsyncMock)
async def test_vertex_ai_streaming_chat_completion_with_function_choice_behavior(
mock_vertex_ai_model_generate_content_async,
@@ -294,7 +291,6 @@ async def test_vertex_ai_streaming_chat_completion_with_function_choice_behavior
assert mock_vertex_ai_model_generate_content_async.call_count == 1
-@pytest.mark.asyncio
@patch.object(GenerativeModel, "generate_content_async", new_callable=AsyncMock)
async def test_vertex_ai_streaming_chat_completion_with_function_choice_behavior_no_tool_call(
mock_vertex_ai_model_generate_content_async,
diff --git a/python/tests/unit/connectors/ai/google/vertex_ai/services/test_vertex_ai_text_completion.py b/python/tests/unit/connectors/ai/google/vertex_ai/services/test_vertex_ai_text_completion.py
index 0ad9c61f3444..4894aca5282b 100644
--- a/python/tests/unit/connectors/ai/google/vertex_ai/services/test_vertex_ai_text_completion.py
+++ b/python/tests/unit/connectors/ai/google/vertex_ai/services/test_vertex_ai_text_completion.py
@@ -68,7 +68,8 @@ def test_prompt_execution_settings_class(vertex_ai_unit_test_env) -> None:
# region text completion
-@pytest.mark.asyncio
+
+
@patch.object(GenerativeModel, "generate_content_async", new_callable=AsyncMock)
async def test_vertex_ai_text_completion(
mock_vertex_ai_model_generate_content_async,
@@ -99,7 +100,8 @@ async def test_vertex_ai_text_completion(
# region streaming text completion
-@pytest.mark.asyncio
+
+
@patch.object(GenerativeModel, "generate_content_async", new_callable=AsyncMock)
async def test_vertex_ai_streaming_text_completion(
mock_vertex_ai_model_generate_content_async,
diff --git a/python/tests/unit/connectors/ai/google/vertex_ai/services/test_vertex_ai_text_embedding.py b/python/tests/unit/connectors/ai/google/vertex_ai/services/test_vertex_ai_text_embedding.py
index 4b97fb693eed..61e4ca8c7d19 100644
--- a/python/tests/unit/connectors/ai/google/vertex_ai/services/test_vertex_ai_text_embedding.py
+++ b/python/tests/unit/connectors/ai/google/vertex_ai/services/test_vertex_ai_text_embedding.py
@@ -68,7 +68,6 @@ def test_prompt_execution_settings_class(vertex_ai_unit_test_env) -> None:
# endregion init
-@pytest.mark.asyncio
@patch.object(TextEmbeddingModel, "from_pretrained")
@patch.object(MockTextEmbeddingModel, "get_embeddings_async", new_callable=AsyncMock)
async def test_embedding(mock_embedding_client, mock_from_pretrained, vertex_ai_unit_test_env, prompt):
@@ -89,7 +88,6 @@ async def test_embedding(mock_embedding_client, mock_from_pretrained, vertex_ai_
mock_embedding_client.assert_called_once_with([prompt])
-@pytest.mark.asyncio
@patch.object(TextEmbeddingModel, "from_pretrained")
@patch.object(MockTextEmbeddingModel, "get_embeddings_async", new_callable=AsyncMock)
async def test_embedding_with_settings(mock_embedding_client, mock_from_pretrained, vertex_ai_unit_test_env, prompt):
@@ -115,7 +113,6 @@ async def test_embedding_with_settings(mock_embedding_client, mock_from_pretrain
)
-@pytest.mark.asyncio
@patch.object(TextEmbeddingModel, "from_pretrained")
@patch.object(MockTextEmbeddingModel, "get_embeddings_async", new_callable=AsyncMock)
async def test_embedding_without_settings(mock_embedding_client, mock_from_pretrained, vertex_ai_unit_test_env, prompt):
@@ -131,7 +128,6 @@ async def test_embedding_without_settings(mock_embedding_client, mock_from_pretr
mock_embedding_client.assert_called_once_with([prompt])
-@pytest.mark.asyncio
@patch.object(TextEmbeddingModel, "from_pretrained")
@patch.object(MockTextEmbeddingModel, "get_embeddings_async", new_callable=AsyncMock)
async def test_embedding_list_input(mock_embedding_client, mock_from_pretrained, vertex_ai_unit_test_env, prompt):
@@ -147,7 +143,6 @@ async def test_embedding_list_input(mock_embedding_client, mock_from_pretrained,
mock_embedding_client.assert_called_once_with([prompt, prompt])
-@pytest.mark.asyncio
@patch.object(TextEmbeddingModel, "from_pretrained")
@patch.object(MockTextEmbeddingModel, "get_embeddings_async", new_callable=AsyncMock)
async def test_raw_embedding(mock_embedding_client, mock_from_pretrained, vertex_ai_unit_test_env, prompt):
diff --git a/python/tests/unit/connectors/ai/hugging_face/test_hf_text_completions.py b/python/tests/unit/connectors/ai/hugging_face/test_hf_text_completions.py
index 96099d8cf5b8..ddf8d48caa43 100644
--- a/python/tests/unit/connectors/ai/hugging_face/test_hf_text_completions.py
+++ b/python/tests/unit/connectors/ai/hugging_face/test_hf_text_completions.py
@@ -14,7 +14,6 @@
from semantic_kernel.prompt_template.prompt_template_config import PromptTemplateConfig
-@pytest.mark.asyncio
@pytest.mark.parametrize(
("model_name", "task", "input_str"),
[
@@ -74,7 +73,6 @@ async def test_text_completion(model_name, task, input_str):
assert mock_pipeline.call_args.args[0] == input_str
-@pytest.mark.asyncio
async def test_text_completion_throws():
kernel = Kernel()
@@ -109,7 +107,6 @@ async def test_text_completion_throws():
await kernel.invoke(function_name="TestFunction", plugin_name="TestPlugin", arguments=arguments)
-@pytest.mark.asyncio
@pytest.mark.parametrize(
("model_name", "task", "input_str"),
[
@@ -156,7 +153,6 @@ async def test_text_completion_streaming(model_name, task, input_str):
assert result[0][0].inner_content == "mocked_text"
-@pytest.mark.asyncio
@pytest.mark.parametrize(
("model_name", "task", "input_str"),
[
diff --git a/python/tests/unit/connectors/ai/hugging_face/test_hf_text_embedding.py b/python/tests/unit/connectors/ai/hugging_face/test_hf_text_embedding.py
index ea4c4b6f7a7a..d1f71338c99c 100644
--- a/python/tests/unit/connectors/ai/hugging_face/test_hf_text_embedding.py
+++ b/python/tests/unit/connectors/ai/hugging_face/test_hf_text_embedding.py
@@ -27,7 +27,6 @@ def test_huggingface_text_embedding_initialization():
mock_transformer.assert_called_once_with(model_name_or_path=model_name, device="cpu")
-@pytest.mark.asyncio
async def test_generate_embeddings_success():
model_name = "sentence-transformers/all-MiniLM-L6-v2"
device = -1
@@ -48,7 +47,6 @@ async def test_generate_embeddings_success():
assert (embeddings == mock_embeddings).all()
-@pytest.mark.asyncio
async def test_generate_embeddings_throws():
model_name = "sentence-transformers/all-MiniLM-L6-v2"
device = -1
diff --git a/python/tests/unit/connectors/ai/mistral_ai/services/test_mistralai_chat_completion.py b/python/tests/unit/connectors/ai/mistral_ai/services/test_mistralai_chat_completion.py
index 2500e0628a46..8db675b627bc 100644
--- a/python/tests/unit/connectors/ai/mistral_ai/services/test_mistralai_chat_completion.py
+++ b/python/tests/unit/connectors/ai/mistral_ai/services/test_mistralai_chat_completion.py
@@ -66,7 +66,6 @@ def mock_mistral_ai_client_completion_stream() -> Mistral:
return client
-@pytest.mark.asyncio
async def test_complete_chat_contents(
kernel: Kernel,
mock_settings: MistralAIChatPromptExecutionSettings,
@@ -121,7 +120,6 @@ async def test_complete_chat_contents(
pytest.param(FunctionChoiceBehavior.NoneInvoke(), [[mock_message_text_content]], TextContent, id="none"),
],
)
-@pytest.mark.asyncio
async def test_complete_chat_contents_function_call_behavior_tool_call(
kernel: Kernel,
mock_settings: MistralAIChatPromptExecutionSettings,
@@ -145,7 +143,6 @@ async def test_complete_chat_contents_function_call_behavior_tool_call(
assert all(isinstance(content, expected_result) for content in response[0].items)
-@pytest.mark.asyncio
async def test_complete_chat_contents_function_call_behavior_without_kernel(
mock_settings: MistralAIChatPromptExecutionSettings,
mock_mistral_ai_client_completion: Mistral,
@@ -161,7 +158,6 @@ async def test_complete_chat_contents_function_call_behavior_without_kernel(
await chat_completion_base.get_chat_message_contents(chat_history=chat_history, settings=mock_settings)
-@pytest.mark.asyncio
async def test_complete_chat_stream_contents(
kernel: Kernel,
mock_settings: MistralAIChatPromptExecutionSettings,
@@ -216,7 +212,6 @@ async def test_complete_chat_stream_contents(
pytest.param(FunctionChoiceBehavior.NoneInvoke(), [[mock_message_text_content]], TextContent, id="none"),
],
)
-@pytest.mark.asyncio
async def test_complete_chat_contents_streaming_function_call_behavior_tool_call(
kernel: Kernel,
mock_settings: MistralAIChatPromptExecutionSettings,
@@ -247,7 +242,6 @@ async def test_complete_chat_contents_streaming_function_call_behavior_tool_call
assert all(isinstance(content, expected_result) for content in response[0].items)
-@pytest.mark.asyncio
async def test_mistral_ai_sdk_exception(kernel: Kernel, mock_settings: MistralAIChatPromptExecutionSettings):
chat_history = MagicMock()
arguments = KernelArguments()
@@ -265,7 +259,6 @@ async def test_mistral_ai_sdk_exception(kernel: Kernel, mock_settings: MistralAI
)
-@pytest.mark.asyncio
async def test_mistral_ai_sdk_exception_streaming(kernel: Kernel, mock_settings: MistralAIChatPromptExecutionSettings):
chat_history = MagicMock()
arguments = KernelArguments()
@@ -345,7 +338,6 @@ def test_prompt_execution_settings_class(mistralai_unit_test_env):
assert prompt_execution_settings == MistralAIChatPromptExecutionSettings
-@pytest.mark.asyncio
async def test_with_different_execution_settings(kernel: Kernel, mock_mistral_ai_client_completion: MagicMock):
chat_history = MagicMock()
settings = OpenAIChatPromptExecutionSettings(temperature=0.2, seed=2)
@@ -361,7 +353,6 @@ async def test_with_different_execution_settings(kernel: Kernel, mock_mistral_ai
assert mock_mistral_ai_client_completion.chat.complete_async.call_args.kwargs["seed"] == 2
-@pytest.mark.asyncio
async def test_with_different_execution_settings_stream(
kernel: Kernel, mock_mistral_ai_client_completion_stream: MagicMock
):
diff --git a/python/tests/unit/connectors/ai/mistral_ai/services/test_mistralai_text_embeddings.py b/python/tests/unit/connectors/ai/mistral_ai/services/test_mistralai_text_embeddings.py
index c45718d7d3c8..a8bd69214b7d 100644
--- a/python/tests/unit/connectors/ai/mistral_ai/services/test_mistralai_text_embeddings.py
+++ b/python/tests/unit/connectors/ai/mistral_ai/services/test_mistralai_text_embeddings.py
@@ -85,7 +85,6 @@ def test_embedding_missing_model_constructor(mistralai_unit_test_env):
)
-@pytest.mark.asyncio
async def test_embedding_generate_raw_embedding(mistralai_unit_test_env):
mock_client = AsyncMock(spec=Mistral)
mock_client.embeddings = AsyncMock()
@@ -96,7 +95,6 @@ async def test_embedding_generate_raw_embedding(mistralai_unit_test_env):
assert embedding == [[1, 2, 3, 4, 5]]
-@pytest.mark.asyncio
async def test_embedding_generate_embedding(mistralai_unit_test_env):
mock_client = AsyncMock(spec=Mistral)
mock_client.embeddings = AsyncMock()
@@ -107,7 +105,6 @@ async def test_embedding_generate_embedding(mistralai_unit_test_env):
assert embedding.tolist() == [[1, 2, 3, 4, 5]]
-@pytest.mark.asyncio
async def test_embedding_generate_embedding_exception(mistralai_unit_test_env):
mock_client = AsyncMock(spec=Mistral)
mock_client.embeddings = AsyncMock()
diff --git a/python/tests/unit/connectors/ai/ollama/services/test_ollama_chat_completion.py b/python/tests/unit/connectors/ai/ollama/services/test_ollama_chat_completion.py
index 2e67bf640855..dbdfece29ff2 100644
--- a/python/tests/unit/connectors/ai/ollama/services/test_ollama_chat_completion.py
+++ b/python/tests/unit/connectors/ai/ollama/services/test_ollama_chat_completion.py
@@ -72,7 +72,6 @@ def test_service_url(ollama_unit_test_env):
assert ollama.service_url() == ollama_unit_test_env["OLLAMA_HOST"]
-@pytest.mark.asyncio
@patch("ollama.AsyncClient.__init__", return_value=None) # mock_client
@patch("ollama.AsyncClient.chat") # mock_chat_client
async def test_custom_host(
@@ -104,7 +103,6 @@ async def test_custom_host(
assert chat_responses[0].content == "test_response"
-@pytest.mark.asyncio
@patch("ollama.AsyncClient.__init__", return_value=None) # mock_client
@patch("ollama.AsyncClient.chat") # mock_chat_client
async def test_custom_host_streaming(
@@ -138,7 +136,6 @@ async def test_custom_host_streaming(
assert mock_chat_client.call_count == 1
-@pytest.mark.asyncio
@patch("ollama.AsyncClient.chat")
async def test_chat_completion(mock_chat_client, model_id, service_id, chat_history, default_options):
"""Test that the chat completion service completes correctly."""
@@ -160,7 +157,6 @@ async def test_chat_completion(mock_chat_client, model_id, service_id, chat_hist
)
-@pytest.mark.asyncio
@patch("ollama.AsyncClient.chat")
async def test_chat_completion_wrong_return_type(
mock_chat_client,
@@ -181,7 +177,6 @@ async def test_chat_completion_wrong_return_type(
)
-@pytest.mark.asyncio
@patch("ollama.AsyncClient.chat")
async def test_streaming_chat_completion(
mock_chat_client,
@@ -215,7 +210,6 @@ async def test_streaming_chat_completion(
)
-@pytest.mark.asyncio
@patch("ollama.AsyncClient.chat")
async def test_streaming_chat_completion_wrong_return_type(
mock_chat_client,
diff --git a/python/tests/unit/connectors/ai/ollama/services/test_ollama_text_completion.py b/python/tests/unit/connectors/ai/ollama/services/test_ollama_text_completion.py
index 76f6165a314c..d6f9d966d50d 100644
--- a/python/tests/unit/connectors/ai/ollama/services/test_ollama_text_completion.py
+++ b/python/tests/unit/connectors/ai/ollama/services/test_ollama_text_completion.py
@@ -47,7 +47,6 @@ def test_init_empty_model_id(ollama_unit_test_env):
_ = OllamaTextCompletion(env_file_path="fake_env_file_path.env")
-@pytest.mark.asyncio
@patch("ollama.AsyncClient.__init__", return_value=None) # mock_client
@patch("ollama.AsyncClient.generate") # mock_completion_client
async def test_custom_host(
@@ -65,7 +64,6 @@ async def test_custom_host(
mock_client.assert_called_once_with(host=host)
-@pytest.mark.asyncio
@patch("ollama.AsyncClient.__init__", return_value=None) # mock_client
@patch("ollama.AsyncClient.generate") # mock_completion_client
async def test_custom_host_streaming(
@@ -84,7 +82,6 @@ async def test_custom_host_streaming(
mock_client.assert_called_once_with(host=host)
-@pytest.mark.asyncio
@patch("ollama.AsyncClient.generate")
async def test_completion(mock_completion_client, model_id, service_id, prompt, default_options):
"""Test that the service generates content correctly."""
@@ -105,7 +102,6 @@ async def test_completion(mock_completion_client, model_id, service_id, prompt,
)
-@pytest.mark.asyncio
@patch("ollama.AsyncClient.generate")
async def test_completion_wrong_return_type(
mock_completion_client,
@@ -126,7 +122,6 @@ async def test_completion_wrong_return_type(
)
-@pytest.mark.asyncio
@patch("ollama.AsyncClient.generate")
async def test_streaming_completion(
mock_completion_client,
@@ -159,7 +154,6 @@ async def test_streaming_completion(
)
-@pytest.mark.asyncio
@patch("ollama.AsyncClient.generate")
async def test_streaming_completion_wrong_return_type(
mock_completion_client,
diff --git a/python/tests/unit/connectors/ai/ollama/services/test_ollama_text_embedding.py b/python/tests/unit/connectors/ai/ollama/services/test_ollama_text_embedding.py
index a54f9e26fea2..1eae5d0b55d1 100644
--- a/python/tests/unit/connectors/ai/ollama/services/test_ollama_text_embedding.py
+++ b/python/tests/unit/connectors/ai/ollama/services/test_ollama_text_embedding.py
@@ -36,7 +36,6 @@ def test_init_empty_model_id(ollama_unit_test_env):
_ = OllamaTextEmbedding(env_file_path="fake_env_file_path.env")
-@pytest.mark.asyncio
@patch("ollama.AsyncClient.__init__", return_value=None) # mock_client
@patch("ollama.AsyncClient.embeddings") # mock_embedding_client
async def test_custom_host(mock_embedding_client, mock_client, model_id, host, prompt):
@@ -51,7 +50,6 @@ async def test_custom_host(mock_embedding_client, mock_client, model_id, host, p
mock_client.assert_called_once_with(host=host)
-@pytest.mark.asyncio
@patch("ollama.AsyncClient.embeddings")
async def test_embedding(mock_embedding_client, model_id, prompt):
"""Test that the service initializes and generates embeddings correctly."""
@@ -69,7 +67,6 @@ async def test_embedding(mock_embedding_client, model_id, prompt):
mock_embedding_client.assert_called_once_with(model=model_id, prompt=prompt, options=settings.options)
-@pytest.mark.asyncio
@patch("ollama.AsyncClient.embeddings")
async def test_embedding_list_input(mock_embedding_client, model_id, prompt):
"""Test that the service initializes and generates embeddings correctly with a list of prompts."""
@@ -90,7 +87,6 @@ async def test_embedding_list_input(mock_embedding_client, model_id, prompt):
mock_embedding_client.assert_called_with(model=model_id, prompt=prompt, options=settings.options)
-@pytest.mark.asyncio
@patch("ollama.AsyncClient.embeddings")
async def test_raw_embedding(mock_embedding_client, model_id, prompt):
"""Test that the service initializes and generates embeddings correctly."""
@@ -108,7 +104,6 @@ async def test_raw_embedding(mock_embedding_client, model_id, prompt):
mock_embedding_client.assert_called_once_with(model=model_id, prompt=prompt, options=settings.options)
-@pytest.mark.asyncio
@patch("ollama.AsyncClient.embeddings")
async def test_raw_embedding_list_input(mock_embedding_client, model_id, prompt):
"""Test that the service initializes and generates embeddings correctly with a list of prompts."""
diff --git a/python/tests/unit/connectors/ai/onnx/services/test_onnx_chat_completion.py b/python/tests/unit/connectors/ai/onnx/services/test_onnx_chat_completion.py
index 285b54a51473..5454f4d52504 100644
--- a/python/tests/unit/connectors/ai/onnx/services/test_onnx_chat_completion.py
+++ b/python/tests/unit/connectors/ai/onnx/services/test_onnx_chat_completion.py
@@ -75,7 +75,6 @@ def test_onnx_chat_completion_with_missing_ai_path(self, onnx_unit_test_env):
@patch("builtins.open", new_callable=mock_open, read_data=json.dumps(gen_ai_config))
@patch("onnxruntime_genai.Model")
@patch("onnxruntime_genai.Tokenizer")
- @pytest.mark.asyncio
async def test_onnx_chat_completion(self, gen_ai_config, model, tokenizer):
generator_mock = MagicMock()
generator_mock.__aiter__.return_value = [["H"], ["e"], ["l"], ["l"], ["o"]]
@@ -96,7 +95,6 @@ async def test_onnx_chat_completion(self, gen_ai_config, model, tokenizer):
@patch("builtins.open", new_callable=mock_open, read_data=json.dumps(gen_ai_config))
@patch("onnxruntime_genai.Model")
@patch("onnxruntime_genai.Tokenizer")
- @pytest.mark.asyncio
async def test_onnx_chat_completion_streaming(self, gen_ai_config, model, tokenizer):
generator_mock = MagicMock()
generator_mock.__aiter__.return_value = [["H"], ["e"], ["l"], ["l"], ["o"]]
@@ -151,7 +149,6 @@ def patch_open(*args, **kwargs):
last_image = chat_completion._get_images_from_history(history)
assert last_image == image_content
- @pytest.mark.asyncio
@patch("onnxruntime_genai.Model")
@patch("onnxruntime_genai.Tokenizer")
async def test_onnx_chat_get_image_history_with_not_multimodal(self, model, tokenizer):
diff --git a/python/tests/unit/connectors/ai/onnx/services/test_onnx_text_completion.py b/python/tests/unit/connectors/ai/onnx/services/test_onnx_text_completion.py
index 4635ae687efc..842c34f5cf3b 100644
--- a/python/tests/unit/connectors/ai/onnx/services/test_onnx_text_completion.py
+++ b/python/tests/unit/connectors/ai/onnx/services/test_onnx_text_completion.py
@@ -47,7 +47,6 @@ def test_onnx_chat_completion_with_missing_ai_path(self, onnx_unit_test_env):
@patch("builtins.open", new_callable=mock_open, read_data=json.dumps(gen_ai_config))
@patch("onnxruntime_genai.Model")
@patch("onnxruntime_genai.Tokenizer")
- @pytest.mark.asyncio
async def test_onnx_text_completion(self, gen_ai_config, model, tokenizer):
generator_mock = MagicMock()
generator_mock.__aiter__.return_value = [["H"], ["e"], ["l"], ["l"], ["o"]]
@@ -63,7 +62,6 @@ async def test_onnx_text_completion(self, gen_ai_config, model, tokenizer):
@patch("builtins.open", new_callable=mock_open, read_data=json.dumps(gen_ai_config))
@patch("onnxruntime_genai.Model")
@patch("onnxruntime_genai.Tokenizer")
- @pytest.mark.asyncio
async def test_onnx_text_completion_streaming(self, gen_ai_config, model, tokenizer):
generator_mock = MagicMock()
generator_mock.__aiter__.return_value = [["H"], ["e"], ["l"], ["l"], ["o"]]
diff --git a/python/tests/unit/connectors/ai/open_ai/services/test_azure_audio_to_text.py b/python/tests/unit/connectors/ai/open_ai/services/test_azure_audio_to_text.py
index 121067d5ba61..ac599cd8607f 100644
--- a/python/tests/unit/connectors/ai/open_ai/services/test_azure_audio_to_text.py
+++ b/python/tests/unit/connectors/ai/open_ai/services/test_azure_audio_to_text.py
@@ -75,7 +75,6 @@ def test_azure_audio_to_text_init_with_from_dict(azure_openai_unit_test_env) ->
assert azure_audio_to_text.client.default_headers[key] == value
-@pytest.mark.asyncio
@patch.object(AsyncTranscriptions, "create", return_value=Transcription(text="This is a test audio file."))
async def test_azure_audio_to_text_get_text_contents(mock_transcription_create, azure_openai_unit_test_env) -> None:
audio_content = AudioContent.from_audio_file(
@@ -90,7 +89,6 @@ async def test_azure_audio_to_text_get_text_contents(mock_transcription_create,
assert text_contents[0].ai_model_id == azure_openai_unit_test_env["AZURE_OPENAI_AUDIO_TO_TEXT_DEPLOYMENT_NAME"]
-@pytest.mark.asyncio
async def test_azure_audio_to_text_get_text_contents_invalid_audio_content(azure_openai_unit_test_env):
audio_content = AudioContent()
diff --git a/python/tests/unit/connectors/ai/open_ai/services/test_azure_chat_completion.py b/python/tests/unit/connectors/ai/open_ai/services/test_azure_chat_completion.py
index a5e8ca638aab..731f0b04d2d3 100644
--- a/python/tests/unit/connectors/ai/open_ai/services/test_azure_chat_completion.py
+++ b/python/tests/unit/connectors/ai/open_ai/services/test_azure_chat_completion.py
@@ -170,7 +170,6 @@ def mock_streaming_chat_completion_response() -> AsyncStream[ChatCompletionChunk
return stream
-@pytest.mark.asyncio
@patch.object(AsyncChatCompletions, "create", new_callable=AsyncMock)
async def test_cmc(
mock_create,
@@ -194,7 +193,6 @@ async def test_cmc(
)
-@pytest.mark.asyncio
@patch.object(AsyncChatCompletions, "create", new_callable=AsyncMock)
async def test_cmc_with_logit_bias(
mock_create,
@@ -225,7 +223,6 @@ async def test_cmc_with_logit_bias(
)
-@pytest.mark.asyncio
@patch.object(AsyncChatCompletions, "create", new_callable=AsyncMock)
async def test_cmc_with_stop(
mock_create,
@@ -253,7 +250,6 @@ async def test_cmc_with_stop(
)
-@pytest.mark.asyncio
@patch.object(AsyncChatCompletions, "create", new_callable=AsyncMock)
async def test_azure_on_your_data(
mock_create,
@@ -322,7 +318,6 @@ async def test_azure_on_your_data(
)
-@pytest.mark.asyncio
@patch.object(AsyncChatCompletions, "create", new_callable=AsyncMock)
async def test_azure_on_your_data_string(
mock_create,
@@ -391,7 +386,6 @@ async def test_azure_on_your_data_string(
)
-@pytest.mark.asyncio
@patch.object(AsyncChatCompletions, "create", new_callable=AsyncMock)
async def test_azure_on_your_data_fail(
mock_create,
@@ -449,7 +443,6 @@ async def test_azure_on_your_data_fail(
)
-@pytest.mark.asyncio
@patch.object(AsyncChatCompletions, "create", new_callable=AsyncMock)
async def test_azure_on_your_data_split_messages(
mock_create,
@@ -502,7 +495,6 @@ async def test_azure_on_your_data_split_messages(
assert message == [messages[0]]
-@pytest.mark.asyncio
@patch.object(AsyncChatCompletions, "create", new_callable=AsyncMock)
async def test_cmc_function_calling(
mock_create,
@@ -550,7 +542,6 @@ async def test_cmc_function_calling(
)
-@pytest.mark.asyncio
@patch.object(AsyncChatCompletions, "create", new_callable=AsyncMock)
async def test_cmc_tool_calling(
mock_create,
@@ -599,7 +590,6 @@ async def test_cmc_tool_calling(
)
-@pytest.mark.asyncio
@patch.object(AsyncChatCompletions, "create", new_callable=AsyncMock)
async def test_cmc_tool_calling_parallel_tool_calls(
mock_create,
@@ -676,7 +666,6 @@ def test_tool(self, key: str):
mock_process_function_call.assert_awaited()
-@pytest.mark.asyncio
@patch.object(AsyncChatCompletions, "create", new_callable=AsyncMock)
async def test_cmc_tool_calling_parallel_tool_calls_disabled(
mock_create,
@@ -768,7 +757,6 @@ def test_tool(self, key: str):
) % CONTENT_FILTERED_ERROR_MESSAGE
-@pytest.mark.asyncio
@patch.object(AsyncChatCompletions, "create")
async def test_content_filtering_raises_correct_exception(
mock_create, kernel: Kernel, azure_openai_unit_test_env, chat_history: ChatHistory
@@ -812,7 +800,6 @@ async def test_content_filtering_raises_correct_exception(
assert content_filter_exc.content_filter_result["hate"].severity == ContentFilterResultSeverity.HIGH
-@pytest.mark.asyncio
@patch.object(AsyncChatCompletions, "create")
async def test_content_filtering_without_response_code_raises_with_default_code(
mock_create, kernel: Kernel, azure_openai_unit_test_env, chat_history: ChatHistory
@@ -850,7 +837,6 @@ async def test_content_filtering_without_response_code_raises_with_default_code(
)
-@pytest.mark.asyncio
@patch.object(AsyncChatCompletions, "create")
async def test_bad_request_non_content_filter(
mock_create, kernel: Kernel, azure_openai_unit_test_env, chat_history: ChatHistory
@@ -872,7 +858,6 @@ async def test_bad_request_non_content_filter(
)
-@pytest.mark.asyncio
@patch.object(AsyncChatCompletions, "create")
async def test_no_kernel_provided_throws_error(
mock_create, azure_openai_unit_test_env, chat_history: ChatHistory
@@ -899,7 +884,6 @@ async def test_no_kernel_provided_throws_error(
)
-@pytest.mark.asyncio
@patch.object(AsyncChatCompletions, "create")
async def test_auto_invoke_false_no_kernel_provided_throws_error(
mock_create, azure_openai_unit_test_env, chat_history: ChatHistory
@@ -926,7 +910,6 @@ async def test_auto_invoke_false_no_kernel_provided_throws_error(
)
-@pytest.mark.asyncio
@patch.object(AsyncChatCompletions, "create", new_callable=AsyncMock)
async def test_cmc_streaming(
mock_create,
diff --git a/python/tests/unit/connectors/ai/open_ai/services/test_azure_text_completion.py b/python/tests/unit/connectors/ai/open_ai/services/test_azure_text_completion.py
index e2cdb845b103..225316c40e46 100644
--- a/python/tests/unit/connectors/ai/open_ai/services/test_azure_text_completion.py
+++ b/python/tests/unit/connectors/ai/open_ai/services/test_azure_text_completion.py
@@ -90,7 +90,6 @@ def test_init_with_invalid_endpoint(azure_openai_unit_test_env) -> None:
AzureTextCompletion()
-@pytest.mark.asyncio
@patch.object(AsyncCompletions, "create", new_callable=AsyncMock)
@patch(
"semantic_kernel.connectors.ai.open_ai.services.azure_text_completion.AzureTextCompletion._get_metadata_from_text_response",
@@ -118,7 +117,6 @@ async def test_call_with_parameters(
)
-@pytest.mark.asyncio
@patch.object(AsyncCompletions, "create", new_callable=AsyncMock)
@patch(
"semantic_kernel.connectors.ai.open_ai.services.azure_text_completion.AzureTextCompletion._get_metadata_from_text_response",
diff --git a/python/tests/unit/connectors/ai/open_ai/services/test_azure_text_embedding.py b/python/tests/unit/connectors/ai/open_ai/services/test_azure_text_embedding.py
index 891ccfc38830..7c785d6b000c 100644
--- a/python/tests/unit/connectors/ai/open_ai/services/test_azure_text_embedding.py
+++ b/python/tests/unit/connectors/ai/open_ai/services/test_azure_text_embedding.py
@@ -87,7 +87,6 @@ def test_azure_text_embedding_generates_no_token_with_api_key_in_env(azure_opena
assert mock_get_token.call_count == 0
-@pytest.mark.asyncio
@patch.object(AsyncEmbeddings, "create", new_callable=AsyncMock)
async def test_azure_text_embedding_calls_with_parameters(mock_create, azure_openai_unit_test_env) -> None:
texts = ["hello world", "goodbye world"]
@@ -104,7 +103,6 @@ async def test_azure_text_embedding_calls_with_parameters(mock_create, azure_ope
)
-@pytest.mark.asyncio
@patch.object(AsyncEmbeddings, "create", new_callable=AsyncMock)
async def test_azure_text_embedding_calls_with_batches(mock_create, azure_openai_unit_test_env) -> None:
texts = [i for i in range(0, 5)]
diff --git a/python/tests/unit/connectors/ai/open_ai/services/test_azure_text_to_audio.py b/python/tests/unit/connectors/ai/open_ai/services/test_azure_text_to_audio.py
index 148bb0c33837..25d515addbe7 100644
--- a/python/tests/unit/connectors/ai/open_ai/services/test_azure_text_to_audio.py
+++ b/python/tests/unit/connectors/ai/open_ai/services/test_azure_text_to_audio.py
@@ -73,7 +73,6 @@ def test_azure_text_to_audio_init_with_from_dict(azure_openai_unit_test_env) ->
assert azure_text_to_audio.client.default_headers[key] == value
-@pytest.mark.asyncio
@patch.object(AsyncSpeech, "create", return_value=_legacy_response.HttpxBinaryResponseContent(httpx.Response(200)))
async def test_azure_text_to_audio_get_audio_contents(mock_speech_create, azure_openai_unit_test_env) -> None:
openai_audio_to_text = AzureTextToAudio()
diff --git a/python/tests/unit/connectors/ai/open_ai/services/test_azure_text_to_image.py b/python/tests/unit/connectors/ai/open_ai/services/test_azure_text_to_image.py
index 0b4246004401..58683cbbe6b2 100644
--- a/python/tests/unit/connectors/ai/open_ai/services/test_azure_text_to_image.py
+++ b/python/tests/unit/connectors/ai/open_ai/services/test_azure_text_to_image.py
@@ -78,7 +78,6 @@ def test_azure_text_to_image_init_with_from_dict(azure_openai_unit_test_env) ->
assert azure_text_to_image.client.default_headers[key] == value
-@pytest.mark.asyncio
@patch.object(AsyncImages, "generate", return_value=AsyncMock(spec=ImagesResponse))
async def test_azure_text_to_image_calls_with_parameters(mock_generate, azure_openai_unit_test_env) -> None:
mock_generate.return_value.data = [Image(url="abc")]
diff --git a/python/tests/unit/connectors/ai/open_ai/services/test_openai_audio_to_text.py b/python/tests/unit/connectors/ai/open_ai/services/test_openai_audio_to_text.py
index cd540b923691..d094a6e5b663 100644
--- a/python/tests/unit/connectors/ai/open_ai/services/test_openai_audio_to_text.py
+++ b/python/tests/unit/connectors/ai/open_ai/services/test_openai_audio_to_text.py
@@ -63,7 +63,6 @@ def test_prompt_execution_settings_class(openai_unit_test_env) -> None:
assert openai_audio_to_text.get_prompt_execution_settings_class() == OpenAIAudioToTextExecutionSettings
-@pytest.mark.asyncio
@patch.object(AsyncTranscriptions, "create", return_value=Transcription(text="This is a test audio file."))
async def test_get_text_contents(mock_transcription_create, openai_unit_test_env):
audio_content = AudioContent.from_audio_file(
@@ -78,7 +77,6 @@ async def test_get_text_contents(mock_transcription_create, openai_unit_test_env
assert text_contents[0].ai_model_id == openai_unit_test_env["OPENAI_AUDIO_TO_TEXT_MODEL_ID"]
-@pytest.mark.asyncio
async def test_get_text_contents_invalid_audio_content(openai_unit_test_env):
audio_content = AudioContent()
diff --git a/python/tests/unit/connectors/ai/open_ai/services/test_openai_chat_completion_base.py b/python/tests/unit/connectors/ai/open_ai/services/test_openai_chat_completion_base.py
index 54e02bea0c20..db432e4db8eb 100644
--- a/python/tests/unit/connectors/ai/open_ai/services/test_openai_chat_completion_base.py
+++ b/python/tests/unit/connectors/ai/open_ai/services/test_openai_chat_completion_base.py
@@ -69,7 +69,6 @@ def mock_streaming_chat_completion_response() -> AsyncStream[ChatCompletionChunk
# region Chat Message Content
-@pytest.mark.asyncio
@patch.object(AsyncChatCompletions, "create", new_callable=AsyncMock)
async def test_cmc(
mock_create,
@@ -93,7 +92,6 @@ async def test_cmc(
)
-@pytest.mark.asyncio
@patch.object(AsyncChatCompletions, "create", new_callable=AsyncMock)
async def test_cmc_singular(
mock_create,
@@ -117,7 +115,6 @@ async def test_cmc_singular(
)
-@pytest.mark.asyncio
@patch.object(AsyncChatCompletions, "create", new_callable=AsyncMock)
async def test_cmc_prompt_execution_settings(
mock_create,
@@ -141,7 +138,6 @@ async def test_cmc_prompt_execution_settings(
)
-@pytest.mark.asyncio
@patch.object(AsyncChatCompletions, "create", new_callable=AsyncMock)
async def test_cmc_function_call_behavior(
mock_create,
@@ -192,7 +188,6 @@ async def test_cmc_function_call_behavior(
mock_process_function_call.assert_awaited()
-@pytest.mark.asyncio
@patch.object(AsyncChatCompletions, "create", new_callable=AsyncMock)
async def test_cmc_function_choice_behavior(
mock_create,
@@ -267,7 +262,6 @@ def test_tool(self, key: str):
mock_process_function_call.assert_awaited()
-@pytest.mark.asyncio
@patch.object(AsyncChatCompletions, "create", new_callable=AsyncMock)
async def test_cmc_fcb_parallel_func_calling_disabled(
mock_create,
@@ -344,7 +338,6 @@ def test_tool(self, key: str):
mock_process_function_call.assert_awaited()
-@pytest.mark.asyncio
@patch.object(AsyncChatCompletions, "create", new_callable=AsyncMock)
async def test_cmc_function_choice_behavior_missing_kwargs(
mock_create,
@@ -392,7 +385,6 @@ async def test_cmc_function_choice_behavior_missing_kwargs(
)
-@pytest.mark.asyncio
@patch.object(AsyncChatCompletions, "create", new_callable=AsyncMock)
async def test_cmc_no_fcc_in_response(
mock_create,
@@ -422,7 +414,6 @@ async def test_cmc_no_fcc_in_response(
)
-@pytest.mark.asyncio
@patch.object(AsyncChatCompletions, "create", new_callable=AsyncMock)
async def test_cmc_structured_output_no_fcc(
mock_create,
@@ -448,7 +439,6 @@ class Test:
mock_create.assert_awaited_once()
-@pytest.mark.asyncio
@patch.object(AsyncChatCompletions, "create", new_callable=AsyncMock)
async def test_cmc_run_out_of_auto_invoke_loop(
mock_create: MagicMock,
@@ -493,7 +483,6 @@ async def test_cmc_run_out_of_auto_invoke_loop(
mock_create.call_count == 6
-@pytest.mark.asyncio
@patch.object(AsyncChatCompletions, "create", new_callable=AsyncMock)
async def test_scmc_prompt_execution_settings(
mock_create,
@@ -519,7 +508,6 @@ async def test_scmc_prompt_execution_settings(
)
-@pytest.mark.asyncio
@patch.object(AsyncChatCompletions, "create", new_callable=AsyncMock, side_effect=Exception)
async def test_cmc_general_exception(
mock_create,
@@ -542,7 +530,6 @@ async def test_cmc_general_exception(
# region Streaming
-@pytest.mark.asyncio
@patch.object(AsyncChatCompletions, "create", new_callable=AsyncMock)
async def test_scmc(
mock_create,
@@ -587,7 +574,6 @@ async def test_scmc(
)
-@pytest.mark.asyncio
@patch.object(AsyncChatCompletions, "create", new_callable=AsyncMock)
async def test_scmc_singular(
mock_create,
@@ -632,7 +618,6 @@ async def test_scmc_singular(
)
-@pytest.mark.asyncio
@patch.object(AsyncChatCompletions, "create", new_callable=AsyncMock)
async def test_scmc_structured_output_no_fcc(
mock_create,
@@ -676,7 +661,6 @@ class Test:
mock_create.assert_awaited_once()
-@pytest.mark.asyncio
@patch.object(AsyncChatCompletions, "create", new_callable=AsyncMock)
async def test_scmc_function_call_behavior(
mock_create,
@@ -712,7 +696,6 @@ async def test_scmc_function_call_behavior(
)
-@pytest.mark.asyncio
@patch.object(AsyncChatCompletions, "create", new_callable=AsyncMock)
async def test_scmc_function_choice_behavior(
mock_create,
@@ -772,7 +755,6 @@ def test_tool(self, key: str):
)
-@pytest.mark.asyncio
@patch.object(AsyncChatCompletions, "create", new_callable=AsyncMock)
async def test_scmc_fcb_parallel_tool_call_disabled(
mock_create,
@@ -834,7 +816,6 @@ def test_tool(self, key: str):
)
-@pytest.mark.asyncio
@patch.object(AsyncChatCompletions, "create", new_callable=AsyncMock)
async def test_scmc_function_choice_behavior_missing_kwargs(
mock_create,
@@ -871,7 +852,6 @@ async def test_scmc_function_choice_behavior_missing_kwargs(
]
-@pytest.mark.asyncio
@patch.object(AsyncChatCompletions, "create", new_callable=AsyncMock)
async def test_scmc_no_fcc_in_response(
mock_create,
@@ -905,7 +885,6 @@ async def test_scmc_no_fcc_in_response(
)
-@pytest.mark.asyncio
@patch.object(AsyncChatCompletions, "create", new_callable=AsyncMock)
async def test_scmc_run_out_of_auto_invoke_loop(
mock_create: MagicMock,
@@ -960,7 +939,6 @@ async def test_scmc_run_out_of_auto_invoke_loop(
mock_create.call_count == 6
-@pytest.mark.asyncio
@patch.object(AsyncChatCompletions, "create", new_callable=AsyncMock)
async def test_scmc_no_stream(
mock_create, kernel: Kernel, chat_history: ChatHistory, openai_unit_test_env, mock_chat_completion_response
@@ -985,7 +963,6 @@ async def test_scmc_no_stream(
# region TextContent
-@pytest.mark.asyncio
@patch.object(AsyncChatCompletions, "create", new_callable=AsyncMock)
async def test_tc(
mock_create,
@@ -1007,7 +984,6 @@ async def test_tc(
)
-@pytest.mark.asyncio
@patch.object(AsyncChatCompletions, "create", new_callable=AsyncMock)
async def test_stc(
mock_create,
@@ -1029,7 +1005,6 @@ async def test_stc(
)
-@pytest.mark.asyncio
@patch.object(AsyncChatCompletions, "create", new_callable=AsyncMock)
async def test_stc_with_msgs(
mock_create,
@@ -1056,7 +1031,6 @@ async def test_stc_with_msgs(
# region Autoinvoke
-@pytest.mark.asyncio
@patch.object(AsyncChatCompletions, "create", new_callable=AsyncMock)
async def test_scmc_terminate_through_filter(
mock_create: MagicMock,
diff --git a/python/tests/unit/connectors/ai/open_ai/services/test_openai_text_completion.py b/python/tests/unit/connectors/ai/open_ai/services/test_openai_text_completion.py
index 3c31033e28ce..7e99b89337ec 100644
--- a/python/tests/unit/connectors/ai/open_ai/services/test_openai_text_completion.py
+++ b/python/tests/unit/connectors/ai/open_ai/services/test_openai_text_completion.py
@@ -152,7 +152,6 @@ def streaming_completion_response() -> AsyncStream[TextCompletion]:
return stream
-@pytest.mark.asyncio
@patch.object(AsyncCompletions, "create", new_callable=AsyncMock)
async def test_tc(
mock_create,
@@ -172,7 +171,6 @@ async def test_tc(
)
-@pytest.mark.asyncio
@patch.object(AsyncCompletions, "create", new_callable=AsyncMock)
async def test_tc_singular(
mock_create,
@@ -192,7 +190,6 @@ async def test_tc_singular(
)
-@pytest.mark.asyncio
@patch.object(AsyncCompletions, "create", new_callable=AsyncMock)
async def test_tc_prompt_execution_settings(
mock_create,
@@ -215,7 +212,6 @@ async def test_tc_prompt_execution_settings(
# region Streaming
-@pytest.mark.asyncio
@patch.object(AsyncCompletions, "create", new_callable=AsyncMock)
async def test_stc(
mock_create,
@@ -240,7 +236,6 @@ async def test_stc(
)
-@pytest.mark.asyncio
@patch.object(AsyncCompletions, "create", new_callable=AsyncMock)
async def test_stc_singular(
mock_create,
@@ -265,7 +260,6 @@ async def test_stc_singular(
)
-@pytest.mark.asyncio
@patch.object(AsyncCompletions, "create", new_callable=AsyncMock)
async def test_stc_prompt_execution_settings(
mock_create,
@@ -290,7 +284,6 @@ async def test_stc_prompt_execution_settings(
)
-@pytest.mark.asyncio
@patch.object(AsyncCompletions, "create", new_callable=AsyncMock)
async def test_stc_empty_choices(
mock_create,
diff --git a/python/tests/unit/connectors/ai/open_ai/services/test_openai_text_embedding.py b/python/tests/unit/connectors/ai/open_ai/services/test_openai_text_embedding.py
index bf6c2cb09a47..b6c9c6c7ded7 100644
--- a/python/tests/unit/connectors/ai/open_ai/services/test_openai_text_embedding.py
+++ b/python/tests/unit/connectors/ai/open_ai/services/test_openai_text_embedding.py
@@ -59,7 +59,6 @@ def test_init_with_no_model_id(openai_unit_test_env) -> None:
)
-@pytest.mark.asyncio
@patch.object(AsyncEmbeddings, "create", new_callable=AsyncMock)
async def test_embedding_calls_with_parameters(mock_create, openai_unit_test_env) -> None:
ai_model_id = "test_model_id"
@@ -79,7 +78,6 @@ async def test_embedding_calls_with_parameters(mock_create, openai_unit_test_env
)
-@pytest.mark.asyncio
@patch.object(AsyncEmbeddings, "create", new_callable=AsyncMock)
async def test_embedding_calls_with_settings(mock_create, openai_unit_test_env) -> None:
ai_model_id = "test_model_id"
@@ -97,7 +95,6 @@ async def test_embedding_calls_with_settings(mock_create, openai_unit_test_env)
)
-@pytest.mark.asyncio
@patch.object(AsyncEmbeddings, "create", new_callable=AsyncMock, side_effect=Exception)
async def test_embedding_fail(mock_create, openai_unit_test_env) -> None:
ai_model_id = "test_model_id"
@@ -111,7 +108,6 @@ async def test_embedding_fail(mock_create, openai_unit_test_env) -> None:
await openai_text_embedding.generate_embeddings(texts, dimensions=embedding_dimensions)
-@pytest.mark.asyncio
@patch.object(AsyncEmbeddings, "create", new_callable=AsyncMock)
async def test_embedding_pes(mock_create, openai_unit_test_env) -> None:
ai_model_id = "test_model_id"
diff --git a/python/tests/unit/connectors/ai/open_ai/services/test_openai_text_to_audio.py b/python/tests/unit/connectors/ai/open_ai/services/test_openai_text_to_audio.py
index 959d630b716b..76499794eec6 100644
--- a/python/tests/unit/connectors/ai/open_ai/services/test_openai_text_to_audio.py
+++ b/python/tests/unit/connectors/ai/open_ai/services/test_openai_text_to_audio.py
@@ -60,7 +60,6 @@ def test_prompt_execution_settings_class(openai_unit_test_env) -> None:
assert openai_text_to_audio.get_prompt_execution_settings_class() == OpenAITextToAudioExecutionSettings
-@pytest.mark.asyncio
@patch.object(AsyncSpeech, "create", return_value=_legacy_response.HttpxBinaryResponseContent(httpx.Response(200)))
async def test_get_text_contents(mock_speech_create, openai_unit_test_env):
openai_text_to_audio = OpenAITextToAudio()
diff --git a/python/tests/unit/connectors/ai/open_ai/services/test_openai_text_to_image.py b/python/tests/unit/connectors/ai/open_ai/services/test_openai_text_to_image.py
index f722569e65c0..4a7b15ffb222 100644
--- a/python/tests/unit/connectors/ai/open_ai/services/test_openai_text_to_image.py
+++ b/python/tests/unit/connectors/ai/open_ai/services/test_openai_text_to_image.py
@@ -64,7 +64,6 @@ def test_prompt_execution_settings_class(openai_unit_test_env) -> None:
assert openai_text_to_image.get_prompt_execution_settings_class() == OpenAITextToImageExecutionSettings
-@pytest.mark.asyncio
@patch.object(AsyncImages, "generate", return_value=AsyncMock(spec=ImagesResponse))
async def test_generate_calls_with_parameters(mock_generate, openai_unit_test_env) -> None:
mock_generate.return_value.data = [Image(url="abc")]
@@ -84,7 +83,6 @@ async def test_generate_calls_with_parameters(mock_generate, openai_unit_test_en
)
-@pytest.mark.asyncio
@patch.object(AsyncImages, "generate", new_callable=AsyncMock, side_effect=Exception)
async def test_generate_fail(mock_generate, openai_unit_test_env) -> None:
ai_model_id = "test_model_id"
@@ -95,7 +93,6 @@ async def test_generate_fail(mock_generate, openai_unit_test_env) -> None:
await openai_text_to_image.generate_image(description="painting of flowers in vase", width=width, height=width)
-@pytest.mark.asyncio
async def test_generate_invalid_image_size(openai_unit_test_env) -> None:
ai_model_id = "test_model_id"
width = 100
@@ -105,7 +102,6 @@ async def test_generate_invalid_image_size(openai_unit_test_env) -> None:
await openai_text_to_image.generate_image(description="painting of flowers in vase", width=width, height=width)
-@pytest.mark.asyncio
async def test_generate_empty_description(openai_unit_test_env) -> None:
ai_model_id = "test_model_id"
width = 100
@@ -115,7 +111,6 @@ async def test_generate_empty_description(openai_unit_test_env) -> None:
await openai_text_to_image.generate_image(description="", width=width, height=width)
-@pytest.mark.asyncio
@patch.object(AsyncImages, "generate", new_callable=AsyncMock)
async def test_generate_no_result(mock_generate, openai_unit_test_env) -> None:
mock_generate.return_value = ImagesResponse(created=0, data=[])
diff --git a/python/tests/unit/connectors/memory/azure_ai_search/test_azure_ai_search.py b/python/tests/unit/connectors/memory/azure_ai_search/test_azure_ai_search.py
index 05d770763b02..6bc6102215b5 100644
--- a/python/tests/unit/connectors/memory/azure_ai_search/test_azure_ai_search.py
+++ b/python/tests/unit/connectors/memory/azure_ai_search/test_azure_ai_search.py
@@ -186,7 +186,6 @@ def test_init_with_clients_fail(azure_ai_search_unit_test_env, data_model_defini
)
-@mark.asyncio
async def test_upsert(collection, mock_upsert):
ids = await collection._inner_upsert({"id": "id1", "name": "test"})
assert ids[0] == "id1"
@@ -195,7 +194,6 @@ async def test_upsert(collection, mock_upsert):
assert ids == "id1"
-@mark.asyncio
async def test_get(collection, mock_get):
records = await collection._inner_get(["id1"])
assert records is not None
@@ -204,22 +202,18 @@ async def test_get(collection, mock_get):
assert records is not None
-@mark.asyncio
async def test_delete(collection, mock_delete):
await collection._inner_delete(["id1"])
-@mark.asyncio
async def test_does_collection_exist(collection, mock_list_collection_names):
await collection.does_collection_exist()
-@mark.asyncio
async def test_delete_collection(collection, mock_delete_collection):
await collection.delete_collection()
-@mark.asyncio
async def test_create_index_from_index(collection, mock_create_collection):
from azure.search.documents.indexes.models import SearchIndex
@@ -227,7 +221,6 @@ async def test_create_index_from_index(collection, mock_create_collection):
await collection.create_collection(index=index)
-@mark.asyncio
async def test_create_index_from_definition(collection, mock_create_collection):
from azure.search.documents.indexes.models import SearchIndex
@@ -238,7 +231,6 @@ async def test_create_index_from_definition(collection, mock_create_collection):
await collection.create_collection()
-@mark.asyncio
async def test_create_index_from_index_fail(collection, mock_create_collection):
index = Mock()
with raises(MemoryConnectorException):
@@ -253,14 +245,12 @@ def test_data_model_definition_to_azure_ai_search_index(data_model_definition):
assert len(index.fields) == 3
-@mark.asyncio
@mark.parametrize("exclude_list", [["AZURE_AI_SEARCH_ENDPOINT"]], indirect=True)
async def test_vector_store_fail(azure_ai_search_unit_test_env):
with raises(MemoryConnectorInitializationError):
AzureAISearchStore(env_file_path="test.env")
-@mark.asyncio
async def test_vector_store_list_collection_names(vector_store, mock_list_collection_names):
assert vector_store.search_index_client is not None
collection_names = await vector_store.list_collection_names()
diff --git a/python/tests/unit/connectors/memory/azure_cosmos_db/test_azure_cosmos_db_no_sql_collection.py b/python/tests/unit/connectors/memory/azure_cosmos_db/test_azure_cosmos_db_no_sql_collection.py
index e0ea3e09be05..6c5dc4d1c2b4 100644
--- a/python/tests/unit/connectors/memory/azure_cosmos_db/test_azure_cosmos_db_no_sql_collection.py
+++ b/python/tests/unit/connectors/memory/azure_cosmos_db/test_azure_cosmos_db_no_sql_collection.py
@@ -154,7 +154,6 @@ def test_azure_cosmos_db_no_sql_get_cosmos_client_without_key(
mock_cosmos_client_init.assert_called_once_with(url, credential=ANY)
-@pytest.mark.asyncio
@patch("azure.cosmos.aio.CosmosClient", spec=True)
async def test_azure_cosmos_db_no_sql_collection_create_database_if_not_exists(
mock_cosmos_client,
@@ -185,7 +184,6 @@ async def test_azure_cosmos_db_no_sql_collection_create_database_if_not_exists(
)
-@pytest.mark.asyncio
@patch("azure.cosmos.aio.CosmosClient", spec=True)
async def test_azure_cosmos_db_no_sql_collection_create_database_raise_if_database_not_exists(
mock_cosmos_client,
@@ -210,7 +208,6 @@ async def test_azure_cosmos_db_no_sql_collection_create_database_raise_if_databa
await vector_collection._get_database_proxy()
-@pytest.mark.asyncio
@patch("azure.cosmos.aio.CosmosClient")
@patch("azure.cosmos.aio.DatabaseProxy")
@pytest.mark.parametrize("index_kind, distance_function", [("flat", "cosine_similarity")])
@@ -241,7 +238,6 @@ async def test_azure_cosmos_db_no_sql_collection_create_collection(
)
-@pytest.mark.asyncio
@patch("azure.cosmos.aio.CosmosClient")
@patch("azure.cosmos.aio.DatabaseProxy")
@pytest.mark.parametrize("index_kind, distance_function", [("flat", "cosine_similarity")])
@@ -272,7 +268,6 @@ async def test_azure_cosmos_db_no_sql_collection_create_collection_allow_custom_
)
-@pytest.mark.asyncio
@patch("azure.cosmos.aio.CosmosClient")
@patch("azure.cosmos.aio.DatabaseProxy")
@pytest.mark.parametrize("index_kind, distance_function", [("flat", "cosine_similarity")])
@@ -303,7 +298,6 @@ async def test_azure_cosmos_db_no_sql_collection_create_collection_allow_custom_
)
-@pytest.mark.asyncio
@patch("azure.cosmos.aio.CosmosClient")
@patch("azure.cosmos.aio.DatabaseProxy")
@pytest.mark.parametrize(
@@ -335,7 +329,6 @@ async def test_azure_cosmos_db_no_sql_collection_create_collection_unsupported_v
await vector_collection.create_collection()
-@pytest.mark.asyncio
@patch("azure.cosmos.aio.DatabaseProxy")
async def test_azure_cosmos_db_no_sql_collection_delete_collection(
mock_database_proxy,
@@ -358,7 +351,6 @@ async def test_azure_cosmos_db_no_sql_collection_delete_collection(
mock_database_proxy.delete_container.assert_called_once_with(collection_name)
-@pytest.mark.asyncio
@patch("azure.cosmos.aio.DatabaseProxy")
async def test_azure_cosmos_db_no_sql_collection_delete_collection_fail(
mock_database_proxy,
@@ -379,7 +371,6 @@ async def test_azure_cosmos_db_no_sql_collection_delete_collection_fail(
await vector_collection.delete_collection()
-@pytest.mark.asyncio
@patch("azure.cosmos.aio.ContainerProxy")
async def test_azure_cosmos_db_no_sql_upsert(
mock_container_proxy,
@@ -405,7 +396,6 @@ async def test_azure_cosmos_db_no_sql_upsert(
assert result == item["id"]
-@pytest.mark.asyncio
@patch("azure.cosmos.aio.ContainerProxy")
async def test_azure_cosmos_db_no_sql_upsert_without_id(
mock_container_proxy,
@@ -432,7 +422,6 @@ async def test_azure_cosmos_db_no_sql_upsert_without_id(
assert result == item["key"]
-@pytest.mark.asyncio
@patch("azure.cosmos.aio.ContainerProxy")
async def test_azure_cosmos_db_no_sql_get(
mock_container_proxy,
@@ -459,7 +448,6 @@ async def test_azure_cosmos_db_no_sql_get(
assert record.id == "test_id"
-@pytest.mark.asyncio
@patch("azure.cosmos.aio.ContainerProxy")
async def test_azure_cosmos_db_no_sql_get_without_id(
mock_container_proxy,
@@ -488,7 +476,6 @@ async def test_azure_cosmos_db_no_sql_get_without_id(
assert record.key == "test_key"
-@pytest.mark.asyncio
@patch.object(CosmosClientWrapper, "close", return_value=None)
async def test_client_is_closed(
mock_cosmos_client_close,
diff --git a/python/tests/unit/connectors/memory/azure_cosmos_db/test_azure_cosmos_db_no_sql_store.py b/python/tests/unit/connectors/memory/azure_cosmos_db/test_azure_cosmos_db_no_sql_store.py
index 753cbd8eec3a..7f7f53d155b8 100644
--- a/python/tests/unit/connectors/memory/azure_cosmos_db/test_azure_cosmos_db_no_sql_store.py
+++ b/python/tests/unit/connectors/memory/azure_cosmos_db/test_azure_cosmos_db_no_sql_store.py
@@ -95,7 +95,6 @@ def test_azure_cosmos_db_no_sql_store_get_collection(
)
-@pytest.mark.asyncio
@patch.object(CosmosClientWrapper, "close", return_value=None)
async def test_client_is_closed(mock_cosmos_client_close, azure_cosmos_db_no_sql_unit_test_env) -> None:
"""Test the close method of an AzureCosmosDBNoSQLStore object."""
diff --git a/python/tests/unit/connectors/memory/in_memory/test_in_memory.py b/python/tests/unit/connectors/memory/in_memory/test_in_memory.py
index 381881f7a9e9..4834531c2857 100644
--- a/python/tests/unit/connectors/memory/in_memory/test_in_memory.py
+++ b/python/tests/unit/connectors/memory/in_memory/test_in_memory.py
@@ -19,7 +19,6 @@ def test_store_init():
assert store.vector_record_collections == {}
-@mark.asyncio
async def test_store_get_collection(data_model_definition):
store = InMemoryVectorStore()
collection = store.get_collection("test", dict, data_model_definition)
@@ -30,7 +29,6 @@ async def test_store_get_collection(data_model_definition):
assert (await store.list_collection_names()) == ["test"]
-@mark.asyncio
async def test_upsert(collection):
record = {"id": "testid", "content": "test content", "vector": [0.1, 0.2, 0.3, 0.4, 0.5]}
key = await collection.upsert(record)
@@ -38,7 +36,6 @@ async def test_upsert(collection):
assert collection.inner_storage == {"testid": record}
-@mark.asyncio
async def test_get(collection):
record = {"id": "testid", "content": "test content", "vector": [0.1, 0.2, 0.3, 0.4, 0.5]}
await collection.upsert(record)
@@ -46,13 +43,11 @@ async def test_get(collection):
assert result == record
-@mark.asyncio
async def test_get_missing(collection):
result = await collection.get("testid")
assert result is None
-@mark.asyncio
async def test_delete(collection):
record = {"id": "testid", "content": "test content", "vector": [0.1, 0.2, 0.3, 0.4, 0.5]}
await collection.upsert(record)
@@ -60,12 +55,10 @@ async def test_delete(collection):
assert collection.inner_storage == {}
-@mark.asyncio
async def test_does_collection_exist(collection):
assert await collection.does_collection_exist() is True
-@mark.asyncio
async def test_delete_collection(collection):
record = {"id": "testid", "content": "test content", "vector": [0.1, 0.2, 0.3, 0.4, 0.5]}
await collection.upsert(record)
@@ -74,12 +67,10 @@ async def test_delete_collection(collection):
assert collection.inner_storage == {}
-@mark.asyncio
async def test_create_collection(collection):
await collection.create_collection()
-@mark.asyncio
async def test_text_search(collection):
record = {"id": "testid", "content": "test content", "vector": [0.1, 0.2, 0.3, 0.4, 0.5]}
await collection.upsert(record)
@@ -87,7 +78,6 @@ async def test_text_search(collection):
assert len([res async for res in results.results]) == 1
-@mark.asyncio
async def test_text_search_with_filter(collection):
record = {"id": "testid", "content": "test content", "vector": [0.1, 0.2, 0.3, 0.4, 0.5]}
await collection.upsert(record)
@@ -100,7 +90,6 @@ async def test_text_search_with_filter(collection):
assert len([res async for res in results.results]) == 1
-@mark.asyncio
@mark.parametrize(
"distance_function",
[
diff --git a/python/tests/unit/connectors/memory/postgres/test_postgres_store.py b/python/tests/unit/connectors/memory/postgres/test_postgres_store.py
index 6701df823b97..a2b23bb662c4 100644
--- a/python/tests/unit/connectors/memory/postgres/test_postgres_store.py
+++ b/python/tests/unit/connectors/memory/postgres/test_postgres_store.py
@@ -8,7 +8,7 @@
import pytest_asyncio
from psycopg import AsyncConnection, AsyncCursor
from psycopg_pool import AsyncConnectionPool
-from pytest import fixture, mark
+from pytest import fixture
from semantic_kernel.connectors.ai.open_ai.prompt_execution_settings.open_ai_prompt_execution_settings import (
OpenAIEmbeddingPromptExecutionSettings,
@@ -76,7 +76,6 @@ class SimpleDataModel:
]
-@mark.asyncio
async def test_vector_store_defaults(vector_store: PostgresStore) -> None:
assert vector_store.connection_pool is not None
async with vector_store.connection_pool.connection() as conn:
@@ -89,7 +88,6 @@ def test_vector_store_with_connection_pool(vector_store: PostgresStore) -> None:
assert vector_store.connection_pool == connection_pool
-@mark.asyncio
async def test_list_collection_names(vector_store: PostgresStore, mock_cursor: Mock) -> None:
mock_cursor.fetchall.return_value = [
("test_collection",),
@@ -104,7 +102,6 @@ def test_get_collection(vector_store: PostgresStore) -> None:
assert collection.collection_name == "test_collection"
-@mark.asyncio
async def test_does_collection_exist(vector_store: PostgresStore, mock_cursor: Mock) -> None:
mock_cursor.fetchall.return_value = [("test_collection",)]
collection = vector_store.get_collection("test_collection", SimpleDataModel)
@@ -112,7 +109,6 @@ async def test_does_collection_exist(vector_store: PostgresStore, mock_cursor: M
assert result is True
-@mark.asyncio
async def test_delete_collection(vector_store: PostgresStore, mock_cursor: Mock) -> None:
collection = vector_store.get_collection("test_collection", SimpleDataModel)
await collection.delete_collection()
@@ -125,7 +121,6 @@ async def test_delete_collection(vector_store: PostgresStore, mock_cursor: Mock)
assert statement_str == 'DROP TABLE "public"."test_collection" CASCADE'
-@mark.asyncio
async def test_delete_records(vector_store: PostgresStore, mock_cursor: Mock) -> None:
collection = vector_store.get_collection("test_collection", SimpleDataModel)
await collection.delete_batch([1, 2])
@@ -138,7 +133,6 @@ async def test_delete_records(vector_store: PostgresStore, mock_cursor: Mock) ->
assert statement_str == """DELETE FROM "public"."test_collection" WHERE "id" IN (1, 2)"""
-@mark.asyncio
async def test_create_collection_simple_model(vector_store: PostgresStore, mock_cursor: Mock) -> None:
collection = vector_store.get_collection("test_collection", SimpleDataModel)
await collection.create_collection()
@@ -164,7 +158,6 @@ async def test_create_collection_simple_model(vector_store: PostgresStore, mock_
)
-@mark.asyncio
async def test_create_collection_model_with_python_types(vector_store: PostgresStore, mock_cursor: Mock) -> None:
@vectorstoremodel
@dataclass
@@ -194,7 +187,6 @@ class ModelWithImplicitTypes:
)
-@mark.asyncio
async def test_upsert_records(vector_store: PostgresStore, mock_cursor: Mock) -> None:
collection = vector_store.get_collection("test_collection", SimpleDataModel)
await collection.upsert_batch([
@@ -220,7 +212,6 @@ async def test_upsert_records(vector_store: PostgresStore, mock_cursor: Mock) ->
assert values[2] == (3, [5.0, 6.0, 1.0], '{"key": "value3"}')
-@mark.asyncio
async def test_get_records(vector_store: PostgresStore, mock_cursor: Mock) -> None:
mock_cursor.fetchall.return_value = [
(1, "[1.0, 2.0, 3.0]", {"key": "value1"}),
diff --git a/python/tests/unit/connectors/memory/qdrant/test_qdrant.py b/python/tests/unit/connectors/memory/qdrant/test_qdrant.py
index 4dc4b983ba4e..ce00e7d88c95 100644
--- a/python/tests/unit/connectors/memory/qdrant/test_qdrant.py
+++ b/python/tests/unit/connectors/memory/qdrant/test_qdrant.py
@@ -148,7 +148,6 @@ def test_vector_store_fail():
QdrantStore(location="localhost", url="http://localhost", env_file_path="test.env")
-@mark.asyncio
async def test_store_list_collection_names(vector_store):
collections = await vector_store.list_collection_names()
assert collections == ["test"]
@@ -208,7 +207,6 @@ def test_collection_init_fail(data_model_definition):
)
-@mark.asyncio
@mark.parametrize("collection_to_use", ["collection", "collection_without_named_vectors"])
async def test_upsert(collection_to_use, request):
from qdrant_client.models import PointStruct
@@ -225,7 +223,6 @@ async def test_upsert(collection_to_use, request):
assert ids == "id1"
-@mark.asyncio
async def test_get(collection):
records = await collection._inner_get(["id1"])
assert records is not None
@@ -234,22 +231,18 @@ async def test_get(collection):
assert records is not None
-@mark.asyncio
async def test_delete(collection):
await collection._inner_delete(["id1"])
-@mark.asyncio
async def test_does_collection_exist(collection):
await collection.does_collection_exist()
-@mark.asyncio
async def test_delete_collection(collection):
await collection.delete_collection()
-@mark.asyncio
@mark.parametrize(
"collection_to_use, results",
[
@@ -274,7 +267,6 @@ async def test_create_index_with_named_vectors(collection_to_use, results, mock_
mock_create_collection.assert_called_once_with(**results)
-@mark.asyncio
@mark.parametrize("collection_to_use", ["collection", "collection_without_named_vectors"])
async def test_create_index_fail(collection_to_use, request):
collection = request.getfixturevalue(collection_to_use)
@@ -283,7 +275,6 @@ async def test_create_index_fail(collection_to_use, request):
await collection.create_collection()
-@mark.asyncio
async def test_search(collection):
results = await collection._inner_search(vector=[1.0, 2.0, 3.0], options=VectorSearchOptions(include_vectors=False))
async for result in results.results:
diff --git a/python/tests/unit/connectors/memory/redis/test_redis_store.py b/python/tests/unit/connectors/memory/redis/test_redis_store.py
index a74c78fb0006..f62a8a34e468 100644
--- a/python/tests/unit/connectors/memory/redis/test_redis_store.py
+++ b/python/tests/unit/connectors/memory/redis/test_redis_store.py
@@ -157,7 +157,6 @@ def test_vector_store_fail(redis_unit_test_env):
RedisStore(env_file_path="test.env")
-@mark.asyncio
async def test_store_list_collection_names(vector_store, moc_list_collection_names):
collections = await vector_store.list_collection_names()
assert collections == ["test"]
@@ -240,7 +239,6 @@ def test_collection_fail(redis_unit_test_env, data_model_definition):
)
-@mark.asyncio
@mark.parametrize("type_", ["hashset", "json"])
async def test_upsert(collection_hash, collection_json, type_):
if type_ == "hashset":
@@ -267,7 +265,6 @@ async def test_upsert(collection_hash, collection_json, type_):
assert ids == "id1"
-@mark.asyncio
async def test_upsert_with_prefix(collection_with_prefix_hash, collection_with_prefix_json):
ids = await collection_with_prefix_hash.upsert(
record={"id": "id1", "content": "content", "vector": [1.0, 2.0, 3.0]}
@@ -279,7 +276,6 @@ async def test_upsert_with_prefix(collection_with_prefix_hash, collection_with_p
assert ids == "id1"
-@mark.asyncio
@mark.parametrize("prefix", [True, False])
@mark.parametrize("type_", ["hashset", "json"])
async def test_get(
@@ -296,37 +292,31 @@ async def test_get(
assert records is not None
-@mark.asyncio
@mark.parametrize("type_", ["hashset", "json"])
async def test_delete(collection_hash, collection_json, type_):
collection = collection_hash if type_ == "hashset" else collection_json
await collection._inner_delete(["id1"])
-@mark.asyncio
async def test_does_collection_exist(collection_hash, mock_does_collection_exist):
await collection_hash.does_collection_exist()
-@mark.asyncio
async def test_does_collection_exist_false(collection_hash, mock_does_collection_exist):
mock_does_collection_exist.side_effect = Exception
exists = await collection_hash.does_collection_exist()
assert not exists
-@mark.asyncio
async def test_delete_collection(collection_hash, mock_delete_collection):
await collection_hash.delete_collection()
await collection_hash.delete_collection()
-@mark.asyncio
async def test_create_index(collection_hash, mock_create_collection):
await collection_hash.create_collection()
-@mark.asyncio
async def test_create_index_manual(collection_hash, mock_create_collection):
from redis.commands.search.indexDefinition import IndexDefinition, IndexType
@@ -335,7 +325,6 @@ async def test_create_index_manual(collection_hash, mock_create_collection):
await collection_hash.create_collection(index_definition=index_definition, fields=fields)
-@mark.asyncio
async def test_create_index_fail(collection_hash, mock_create_collection):
with raises(MemoryConnectorException, match="Invalid index type supplied."):
await collection_hash.create_collection(index_definition="index_definition", fields="fields")
diff --git a/python/tests/unit/connectors/memory/weaviate/test_weaviate_collection.py b/python/tests/unit/connectors/memory/weaviate/test_weaviate_collection.py
index faa4c593de72..5ba167d5c6a8 100644
--- a/python/tests/unit/connectors/memory/weaviate/test_weaviate_collection.py
+++ b/python/tests/unit/connectors/memory/weaviate/test_weaviate_collection.py
@@ -200,7 +200,6 @@ def test_weaviate_collection_init_with_lower_case_collection_name(
assert collection.async_client is not None
-@pytest.mark.asyncio
@pytest.mark.parametrize("index_kind, distance_function", [("hnsw", "cosine_distance")])
async def test_weaviate_collection_create_collection(
clear_weaviate_env,
@@ -239,7 +238,6 @@ async def test_weaviate_collection_create_collection(
)
-@pytest.mark.asyncio
@pytest.mark.parametrize(
"collections_side_effects",
[
@@ -268,7 +266,6 @@ async def test_weaviate_collection_create_collection_fail(
await collection.create_collection()
-@pytest.mark.asyncio
async def test_weaviate_collection_delete_collection(
clear_weaviate_env,
data_model_type,
@@ -291,7 +288,6 @@ async def test_weaviate_collection_delete_collection(
mock_async_client.collections.delete.assert_called_once_with(collection_name)
-@pytest.mark.asyncio
@pytest.mark.parametrize(
"collections_side_effects",
[
@@ -320,7 +316,6 @@ async def test_weaviate_collection_delete_collection_fail(
await collection.delete_collection()
-@pytest.mark.asyncio
async def test_weaviate_collection_collection_exist(
clear_weaviate_env,
data_model_type,
@@ -343,7 +338,6 @@ async def test_weaviate_collection_collection_exist(
mock_async_client.collections.exists.assert_called_once_with(collection_name)
-@pytest.mark.asyncio
@pytest.mark.parametrize(
"collections_side_effects",
[
@@ -372,7 +366,6 @@ async def test_weaviate_collection_collection_exist_fail(
await collection.does_collection_exist()
-@pytest.mark.asyncio
async def test_weaviate_collection_serialize_data(
mock_async_client,
clear_weaviate_env,
@@ -405,7 +398,6 @@ async def test_weaviate_collection_serialize_data(
])
-@pytest.mark.asyncio
async def test_weaviate_collection_deserialize_data(
mock_async_client,
clear_weaviate_env,
diff --git a/python/tests/unit/connectors/openapi_plugin/test_openapi_manager.py b/python/tests/unit/connectors/openapi_plugin/test_openapi_manager.py
index 33823aff4006..64e6b9fcc26a 100644
--- a/python/tests/unit/connectors/openapi_plugin/test_openapi_manager.py
+++ b/python/tests/unit/connectors/openapi_plugin/test_openapi_manager.py
@@ -18,7 +18,6 @@
from semantic_kernel.kernel import Kernel
-@pytest.mark.asyncio
async def test_run_openapi_operation_success(kernel: Kernel):
runner = AsyncMock()
operation = MagicMock()
@@ -67,7 +66,6 @@ async def run_openapi_operation(kernel, **kwargs):
run_operation_mock.assert_called_once()
-@pytest.mark.asyncio
async def test_run_openapi_operation_missing_required_param(kernel: Kernel):
runner = AsyncMock()
operation = MagicMock()
@@ -115,7 +113,6 @@ async def run_openapi_operation(kernel, **kwargs):
await run_openapi_operation(kernel, **kwargs)
-@pytest.mark.asyncio
async def test_run_openapi_operation_runner_exception(kernel: Kernel):
runner = AsyncMock()
operation = MagicMock()
@@ -163,7 +160,6 @@ async def run_openapi_operation(kernel, **kwargs):
await run_openapi_operation(kernel, **kwargs)
-@pytest.mark.asyncio
async def test_run_openapi_operation_alternative_name(kernel: Kernel):
runner = AsyncMock()
operation = MagicMock()
@@ -219,7 +215,6 @@ async def run_openapi_operation(kernel, **kwargs):
assert runner.run_operation.call_args[0][1]["param1"] == "value1"
-@pytest.mark.asyncio
@patch("semantic_kernel.connectors.openapi_plugin.openapi_parser.OpenApiParser.parse", return_value=None)
async def test_create_functions_from_openapi_raises_exception(mock_parse):
"""Test that an exception is raised when parsing fails."""
diff --git a/python/tests/unit/connectors/openapi_plugin/test_openapi_runner.py b/python/tests/unit/connectors/openapi_plugin/test_openapi_runner.py
index 935ee40df4dc..1665314a903a 100644
--- a/python/tests/unit/connectors/openapi_plugin/test_openapi_runner.py
+++ b/python/tests/unit/connectors/openapi_plugin/test_openapi_runner.py
@@ -293,7 +293,6 @@ def test_get_first_response_media_type_default():
assert runner._get_first_response_media_type(responses) == runner.media_type_application_json
-@pytest.mark.asyncio
async def test_run_operation():
runner = OpenApiRunner({})
operation = MagicMock()
diff --git a/python/tests/unit/connectors/openapi_plugin/test_sk_openapi.py b/python/tests/unit/connectors/openapi_plugin/test_sk_openapi.py
index 4dbab11ad34a..1d25486b5a86 100644
--- a/python/tests/unit/connectors/openapi_plugin/test_sk_openapi.py
+++ b/python/tests/unit/connectors/openapi_plugin/test_sk_openapi.py
@@ -787,7 +787,6 @@ def test_predicate_callback_applied(openapi_runner_with_predicate_callback):
@patch("aiohttp.ClientSession.request")
-@pytest.mark.asyncio
async def test_run_operation_with_invalid_request(mock_request, openapi_runner):
runner, operations = openapi_runner
operation = operations["getTodoById"]
@@ -799,7 +798,6 @@ async def test_run_operation_with_invalid_request(mock_request, openapi_runner):
@patch("aiohttp.ClientSession.request")
-@pytest.mark.asyncio
async def test_run_operation_with_error(mock_request, openapi_runner):
runner, operations = openapi_runner
operation = operations["addTodo"]
diff --git a/python/tests/unit/connectors/search_engine/test_bing_search_connector.py b/python/tests/unit/connectors/search_engine/test_bing_search_connector.py
index e13c02c0f70e..d4f2e608e807 100644
--- a/python/tests/unit/connectors/search_engine/test_bing_search_connector.py
+++ b/python/tests/unit/connectors/search_engine/test_bing_search_connector.py
@@ -15,7 +15,6 @@ def bing_connector(bing_unit_test_env):
return BingConnector()
-@pytest.mark.asyncio
@pytest.mark.parametrize(
"status_code, response_data, expected_result",
[
@@ -55,7 +54,6 @@ def test_bing_search_connector_init_with_empty_api_key(bing_unit_test_env) -> No
)
-@pytest.mark.asyncio
@patch("httpx.AsyncClient.get")
async def test_search_http_status_error(mock_get, bing_connector):
query = "test query"
@@ -69,7 +67,6 @@ async def test_search_http_status_error(mock_get, bing_connector):
mock_get.assert_awaited_once()
-@pytest.mark.asyncio
@patch("httpx.AsyncClient.get")
async def test_search_request_error(mock_get, bing_connector):
query = "test query"
@@ -83,7 +80,6 @@ async def test_search_request_error(mock_get, bing_connector):
mock_get.assert_awaited_once()
-@pytest.mark.asyncio
@patch("httpx.AsyncClient.get")
async def test_search_general_exception(mock_get, bing_connector):
query = "test query"
@@ -97,14 +93,12 @@ async def test_search_general_exception(mock_get, bing_connector):
mock_get.assert_awaited_once()
-@pytest.mark.asyncio
async def test_search_empty_query(bing_connector):
with pytest.raises(ServiceInvalidRequestError) as excinfo:
await bing_connector.search("", 1, 0)
assert str(excinfo.value) == "query cannot be 'None' or empty."
-@pytest.mark.asyncio
async def test_search_invalid_num_results(bing_connector):
with pytest.raises(ServiceInvalidRequestError) as excinfo:
await bing_connector.search("test", 0, 0)
@@ -115,14 +109,12 @@ async def test_search_invalid_num_results(bing_connector):
assert str(excinfo.value) == "num_results value must be less than 50."
-@pytest.mark.asyncio
async def test_search_invalid_offset(bing_connector):
with pytest.raises(ServiceInvalidRequestError) as excinfo:
await bing_connector.search("test", 1, -1)
assert str(excinfo.value) == "offset must be greater than 0."
-@pytest.mark.asyncio
async def test_search_api_failure(bing_connector):
query = "test query"
num_results = 1
diff --git a/python/tests/unit/connectors/search_engine/test_google_search_connector.py b/python/tests/unit/connectors/search_engine/test_google_search_connector.py
index 8638b05bab23..43a825fd611a 100644
--- a/python/tests/unit/connectors/search_engine/test_google_search_connector.py
+++ b/python/tests/unit/connectors/search_engine/test_google_search_connector.py
@@ -14,7 +14,6 @@ def google_connector(google_search_unit_test_env):
return GoogleConnector()
-@pytest.mark.asyncio
@pytest.mark.parametrize(
"status_code, response_data, expected_result",
[
@@ -62,7 +61,6 @@ def test_google_search_connector_init_with_empty_search_id(google_search_unit_te
)
-@pytest.mark.asyncio
@patch("httpx.AsyncClient.get")
async def test_search_http_status_error(mock_get, google_connector):
query = "test query"
@@ -76,7 +74,6 @@ async def test_search_http_status_error(mock_get, google_connector):
mock_get.assert_awaited_once()
-@pytest.mark.asyncio
@patch("httpx.AsyncClient.get")
async def test_search_request_error(mock_get, google_connector):
query = "test query"
@@ -90,7 +87,6 @@ async def test_search_request_error(mock_get, google_connector):
mock_get.assert_awaited_once()
-@pytest.mark.asyncio
@patch("httpx.AsyncClient.get")
async def test_search_general_exception(mock_get, google_connector):
query = "test query"
@@ -104,13 +100,11 @@ async def test_search_general_exception(mock_get, google_connector):
mock_get.assert_awaited_once()
-@pytest.mark.asyncio
async def test_search_invalid_query(google_connector):
with pytest.raises(ServiceInvalidRequestError, match="query cannot be 'None' or empty."):
await google_connector.search(query="")
-@pytest.mark.asyncio
async def test_search_num_results_less_than_or_equal_to_zero(google_connector):
with pytest.raises(ServiceInvalidRequestError, match="num_results value must be greater than 0."):
await google_connector.search(query="test query", num_results=0)
@@ -119,13 +113,11 @@ async def test_search_num_results_less_than_or_equal_to_zero(google_connector):
await google_connector.search(query="test query", num_results=-1)
-@pytest.mark.asyncio
async def test_search_num_results_greater_than_ten(google_connector):
with pytest.raises(ServiceInvalidRequestError, match="num_results value must be less than or equal to 10."):
await google_connector.search(query="test query", num_results=11)
-@pytest.mark.asyncio
async def test_search_offset_less_than_zero(google_connector):
with pytest.raises(ServiceInvalidRequestError, match="offset must be greater than 0."):
await google_connector.search(query="test query", offset=-1)
diff --git a/python/tests/unit/connectors/utils/test_document_loader.py b/python/tests/unit/connectors/utils/test_document_loader.py
index 349f4c697483..379123b22445 100644
--- a/python/tests/unit/connectors/utils/test_document_loader.py
+++ b/python/tests/unit/connectors/utils/test_document_loader.py
@@ -19,7 +19,6 @@ def http_client():
("user_agent", "expected_user_agent"),
[(None, HTTP_USER_AGENT), (HTTP_USER_AGENT, HTTP_USER_AGENT), ("Custom-Agent", "Custom-Agent")],
)
-@pytest.mark.asyncio
async def test_from_uri_success(http_client, user_agent, expected_user_agent):
url = "https://example.com/document"
response_text = "Document content"
@@ -36,7 +35,6 @@ async def test_from_uri_success(http_client, user_agent, expected_user_agent):
http_client.get.assert_awaited_once_with(url, headers={"User-Agent": expected_user_agent})
-@pytest.mark.asyncio
async def test_from_uri_default_user_agent(http_client):
url = "https://example.com/document"
response_text = "Document content"
@@ -53,7 +51,6 @@ async def test_from_uri_default_user_agent(http_client):
http_client.get.assert_awaited_once_with(url, headers={"User-Agent": HTTP_USER_AGENT})
-@pytest.mark.asyncio
async def test_from_uri_with_auth_callback(http_client):
url = "https://example.com/document"
response_text = "Document content"
@@ -73,7 +70,6 @@ async def auth_callback(client, url):
http_client.get.assert_awaited_once_with(url, headers={"User-Agent": HTTP_USER_AGENT})
-@pytest.mark.asyncio
async def test_from_uri_request_error(http_client):
url = "https://example.com/document"
@@ -84,7 +80,6 @@ async def test_from_uri_request_error(http_client):
http_client.get.assert_awaited_once_with(url, headers={"User-Agent": HTTP_USER_AGENT})
-@pytest.mark.asyncio
@patch("httpx.AsyncClient.get")
async def test_from_uri_http_status_error(mock_get, http_client):
url = "https://example.com/document"
@@ -96,7 +91,6 @@ async def test_from_uri_http_status_error(mock_get, http_client):
mock_get.assert_awaited_once_with(url, headers={"User-Agent": HTTP_USER_AGENT})
-@pytest.mark.asyncio
@patch("httpx.AsyncClient.get")
async def test_from_uri_general_exception(mock_get, http_client):
url = "https://example.com/document"
diff --git a/python/tests/unit/contents/test_chat_history.py b/python/tests/unit/contents/test_chat_history.py
index e7f21be8baf6..54dcc9e98380 100644
--- a/python/tests/unit/contents/test_chat_history.py
+++ b/python/tests/unit/contents/test_chat_history.py
@@ -352,7 +352,6 @@ def test_chat_history_from_rendered_prompt_multi_line():
assert chat_history.messages[1].role == AuthorRole.USER
-@pytest.mark.asyncio
async def test_template_unsafe(chat_history: ChatHistory):
chat_history.add_assistant_message("I am an AI assistant")
@@ -377,7 +376,6 @@ async def test_template_unsafe(chat_history: ChatHistory):
assert chat_history_2.messages[2].role == AuthorRole.USER
-@pytest.mark.asyncio
async def test_template_safe(chat_history: ChatHistory):
chat_history.add_assistant_message("I am an AI assistant")
@@ -401,7 +399,6 @@ async def test_template_safe(chat_history: ChatHistory):
assert chat_history_2.messages[2].role == AuthorRole.USER
-@pytest.mark.asyncio
async def test_template_two_histories(): # ignore: E501
chat_history1 = ChatHistory()
chat_history1.add_assistant_message("I am an AI assistant")
@@ -430,7 +427,6 @@ async def test_template_two_histories(): # ignore: E501
assert chat_history_out.messages[3].role == AuthorRole.ASSISTANT
-@pytest.mark.asyncio
async def test_template_two_histories_one_empty():
chat_history1 = ChatHistory()
chat_history2 = ChatHistory()
@@ -453,7 +449,6 @@ async def test_template_two_histories_one_empty():
assert chat_history_out.messages[2].role == AuthorRole.ASSISTANT
-@pytest.mark.asyncio
async def test_template_history_only(chat_history: ChatHistory):
chat_history.add_assistant_message("I am an AI assistant")
@@ -467,7 +462,6 @@ async def test_template_history_only(chat_history: ChatHistory):
assert chat_history_2.messages[0].role == AuthorRole.ASSISTANT
-@pytest.mark.asyncio
async def test_template_without_chat_history():
template = "{{$input}}"
rendered = await KernelPromptTemplate(
@@ -479,7 +473,6 @@ async def test_template_without_chat_history():
assert chat_history.messages[0].role == AuthorRole.USER
-@pytest.mark.asyncio
async def test_handwritten_xml():
template = 'test content'
rendered = await KernelPromptTemplate(
@@ -490,7 +483,6 @@ async def test_handwritten_xml():
assert chat_history.messages[0].role == AuthorRole.USER
-@pytest.mark.asyncio
async def test_empty_text_content_message():
template = 'test content'
rendered = await KernelPromptTemplate(
@@ -502,7 +494,6 @@ async def test_empty_text_content_message():
assert chat_history.messages[1].role == AuthorRole.USER
-@pytest.mark.asyncio
async def test_handwritten_xml_invalid():
template = ''
rendered = await KernelPromptTemplate(
@@ -513,7 +504,6 @@ async def test_handwritten_xml_invalid():
assert chat_history.messages[0].role == AuthorRole.USER
-@pytest.mark.asyncio
async def test_handwritten_xml_as_arg_safe():
template = "{{$input}}"
rendered = await KernelPromptTemplate(
@@ -531,7 +521,6 @@ async def test_handwritten_xml_as_arg_safe():
assert chat_history.messages[0].role == AuthorRole.USER
-@pytest.mark.asyncio
async def test_handwritten_xml_as_arg_unsafe_template():
template = "{{$input}}"
rendered = await KernelPromptTemplate(
@@ -546,7 +535,6 @@ async def test_handwritten_xml_as_arg_unsafe_template():
assert chat_history.messages[0].role == AuthorRole.USER
-@pytest.mark.asyncio
async def test_handwritten_xml_as_arg_unsafe_variable():
template = "{{$input}}"
rendered = await KernelPromptTemplate(
@@ -565,7 +553,6 @@ async def test_handwritten_xml_as_arg_unsafe_variable():
assert chat_history.messages[0].role == AuthorRole.USER
-@pytest.mark.asyncio
async def test_template_empty_history(chat_history: ChatHistory):
template = "system stuff{{$chat_history}}{{$input}}"
rendered = await KernelPromptTemplate(
diff --git a/python/tests/unit/core_plugins/test_conversation_summary_plugin_unit.py b/python/tests/unit/core_plugins/test_conversation_summary_plugin_unit.py
index 34a3c0450823..e79087bd3e9c 100644
--- a/python/tests/unit/core_plugins/test_conversation_summary_plugin_unit.py
+++ b/python/tests/unit/core_plugins/test_conversation_summary_plugin_unit.py
@@ -2,8 +2,6 @@
from unittest.mock import AsyncMock, Mock
-import pytest
-
from semantic_kernel.connectors.ai.chat_completion_client_base import ChatCompletionClientBase
from semantic_kernel.connectors.ai.prompt_execution_settings import PromptExecutionSettings
from semantic_kernel.contents.chat_message_content import ChatMessageContent
@@ -27,7 +25,6 @@ def test_conversation_summary_plugin_with_deprecated_value(kernel):
assert plugin.return_key == "summary"
-@pytest.mark.asyncio
async def test_summarize_conversation(kernel: Kernel):
service = AsyncMock(spec=ChatCompletionClientBase)
service.service_id = "default"
diff --git a/python/tests/unit/core_plugins/test_http_plugin.py b/python/tests/unit/core_plugins/test_http_plugin.py
index e79d44196319..b1af90a0fd01 100644
--- a/python/tests/unit/core_plugins/test_http_plugin.py
+++ b/python/tests/unit/core_plugins/test_http_plugin.py
@@ -10,13 +10,11 @@
from semantic_kernel.functions.kernel_arguments import KernelArguments
-@pytest.mark.asyncio
async def test_it_can_be_instantiated():
plugin = HttpPlugin()
assert plugin is not None
-@pytest.mark.asyncio
async def test_it_can_be_imported():
kernel = Kernel()
plugin = HttpPlugin()
@@ -28,7 +26,6 @@ async def test_it_can_be_imported():
@patch("aiohttp.ClientSession.get")
-@pytest.mark.asyncio
async def test_get(mock_get):
mock_get.return_value.__aenter__.return_value.text.return_value = "Hello"
mock_get.return_value.__aenter__.return_value.status = 200
@@ -38,7 +35,6 @@ async def test_get(mock_get):
assert response == "Hello"
-@pytest.mark.asyncio
@pytest.mark.parametrize("method", ["get", "post", "put", "delete"])
async def test_fail_no_url(method):
plugin = HttpPlugin()
@@ -46,7 +42,6 @@ async def test_fail_no_url(method):
await getattr(plugin, method)(url="")
-@pytest.mark.asyncio
async def test_get_none_url():
plugin = HttpPlugin()
with pytest.raises(FunctionExecutionException):
@@ -54,7 +49,6 @@ async def test_get_none_url():
@patch("aiohttp.ClientSession.post")
-@pytest.mark.asyncio
async def test_post(mock_post):
mock_post.return_value.__aenter__.return_value.text.return_value = "Hello World !"
mock_post.return_value.__aenter__.return_value.status = 200
@@ -66,7 +60,6 @@ async def test_post(mock_post):
@patch("aiohttp.ClientSession.post")
-@pytest.mark.asyncio
async def test_post_nobody(mock_post):
mock_post.return_value.__aenter__.return_value.text.return_value = "Hello World !"
mock_post.return_value.__aenter__.return_value.status = 200
@@ -78,7 +71,6 @@ async def test_post_nobody(mock_post):
@patch("aiohttp.ClientSession.put")
-@pytest.mark.asyncio
async def test_put(mock_put):
mock_put.return_value.__aenter__.return_value.text.return_value = "Hello World !"
mock_put.return_value.__aenter__.return_value.status = 200
@@ -90,7 +82,6 @@ async def test_put(mock_put):
@patch("aiohttp.ClientSession.put")
-@pytest.mark.asyncio
async def test_put_nobody(mock_put):
mock_put.return_value.__aenter__.return_value.text.return_value = "Hello World !"
mock_put.return_value.__aenter__.return_value.status = 200
@@ -102,7 +93,6 @@ async def test_put_nobody(mock_put):
@patch("aiohttp.ClientSession.delete")
-@pytest.mark.asyncio
async def test_delete(mock_delete):
mock_delete.return_value.__aenter__.return_value.text.return_value = "Hello World !"
mock_delete.return_value.__aenter__.return_value.status = 200
diff --git a/python/tests/unit/core_plugins/test_sessions_python_plugin.py b/python/tests/unit/core_plugins/test_sessions_python_plugin.py
index e04325543787..4c174d3f1077 100644
--- a/python/tests/unit/core_plugins/test_sessions_python_plugin.py
+++ b/python/tests/unit/core_plugins/test_sessions_python_plugin.py
@@ -118,7 +118,6 @@ def test_it_can_be_imported(kernel: Kernel, aca_python_sessions_unit_test_env):
assert kernel.get_plugin(plugin_name="PythonCodeInterpreter").name == "PythonCodeInterpreter"
-@pytest.mark.asyncio
@patch("httpx.AsyncClient.post")
async def test_call_to_container_succeeds(mock_post, aca_python_sessions_unit_test_env):
async def async_return(result):
@@ -155,7 +154,6 @@ async def async_return(result):
mock_post.assert_awaited_once()
-@pytest.mark.asyncio
@patch("httpx.AsyncClient.post")
async def test_call_to_container_fails_raises_exception(mock_post, aca_python_sessions_unit_test_env):
async def async_return(result):
@@ -177,14 +175,12 @@ async def async_return(result):
_ = await plugin.execute_code("print('hello world')")
-@pytest.mark.asyncio
async def test_empty_call_to_container_fails_raises_exception(aca_python_sessions_unit_test_env):
plugin = SessionsPythonTool(auth_callback=auth_callback_test)
with pytest.raises(FunctionExecutionException):
await plugin.execute_code(code="")
-@pytest.mark.asyncio
@patch("httpx.AsyncClient.post")
async def test_upload_file_with_local_path(mock_post, aca_python_sessions_unit_test_env):
"""Test upload_file when providing a local file path."""
@@ -233,7 +229,6 @@ async def async_return(result):
mock_post.assert_awaited_once()
-@pytest.mark.asyncio
@patch("httpx.AsyncClient.post")
async def test_upload_file_with_local_path_and_no_remote(mock_post, aca_python_sessions_unit_test_env):
"""Test upload_file when providing a local file path."""
@@ -281,7 +276,6 @@ async def async_return(result):
mock_post.assert_awaited_once()
-@pytest.mark.asyncio
@patch("httpx.AsyncClient.post")
async def test_upload_file_throws_exception(mock_post, aca_python_sessions_unit_test_env):
"""Test throwing exception during file upload."""
@@ -319,7 +313,6 @@ async def async_raise_http_error(*args, **kwargs):
("./file.py", "/mnt/data/input.py", "/mnt/data/input.py"),
],
)
-@pytest.mark.asyncio
@patch("httpx.AsyncClient.post")
async def test_upload_file_with_buffer(
mock_post, local_file_path, input_remote_file_path, expected_remote_file_path, aca_python_sessions_unit_test_env
@@ -366,7 +359,6 @@ async def async_return(result):
mock_post.assert_awaited_once()
-@pytest.mark.asyncio
async def test_upload_file_fail_with_no_local_path(aca_python_sessions_unit_test_env):
"""Test upload_file when not providing a local file path throws an exception."""
@@ -378,7 +370,6 @@ async def test_upload_file_fail_with_no_local_path(aca_python_sessions_unit_test
)
-@pytest.mark.asyncio
@patch("httpx.AsyncClient.get")
async def test_list_files(mock_get, aca_python_sessions_unit_test_env):
"""Test list_files function."""
@@ -432,7 +423,6 @@ async def async_return(result):
mock_get.assert_awaited_once()
-@pytest.mark.asyncio
@patch("httpx.AsyncClient.get")
async def test_list_files_throws_exception(mock_get, aca_python_sessions_unit_test_env):
"""Test throwing exception during list files."""
@@ -462,7 +452,6 @@ async def async_raise_http_error(*args, **kwargs):
mock_get.assert_awaited_once()
-@pytest.mark.asyncio
@patch("httpx.AsyncClient.get")
async def test_download_file_to_local(mock_get, aca_python_sessions_unit_test_env):
"""Test download_file when saving to a local file path."""
@@ -499,7 +488,6 @@ async def mock_auth_callback():
mock_file().write.assert_called_once_with(b"file data")
-@pytest.mark.asyncio
@patch("httpx.AsyncClient.get")
async def test_download_file_to_buffer(mock_get, aca_python_sessions_unit_test_env):
"""Test download_file when returning as a BufferedReader."""
@@ -530,7 +518,6 @@ async def mock_auth_callback():
mock_get.assert_awaited_once()
-@pytest.mark.asyncio
@patch("httpx.AsyncClient.get")
async def test_download_file_throws_exception(mock_get, aca_python_sessions_unit_test_env):
"""Test throwing exception during download file."""
@@ -592,7 +579,6 @@ def test_sanitize_input(input_code, expected_output, aca_python_sessions_unit_te
assert sanitized_code == expected_output
-@pytest.mark.asyncio
async def test_auth_token(aca_python_sessions_unit_test_env):
async def token_cb():
return "sample_token"
@@ -601,7 +587,6 @@ async def token_cb():
assert await plugin._ensure_auth_token() == "sample_token"
-@pytest.mark.asyncio
async def test_auth_token_fail(aca_python_sessions_unit_test_env):
async def token_cb():
raise ValueError("Could not get token.")
diff --git a/python/tests/unit/core_plugins/test_text_memory_plugin.py b/python/tests/unit/core_plugins/test_text_memory_plugin.py
index 6d3b21674225..0878169da525 100644
--- a/python/tests/unit/core_plugins/test_text_memory_plugin.py
+++ b/python/tests/unit/core_plugins/test_text_memory_plugin.py
@@ -2,7 +2,7 @@
from numpy import array
-from pytest import fixture, mark
+from pytest import fixture
from semantic_kernel import Kernel
from semantic_kernel.connectors.ai.embeddings.embedding_generator_base import EmbeddingGeneratorBase
@@ -24,7 +24,6 @@ def memory() -> SemanticTextMemory:
@fixture
-@mark.asyncio
async def memory_with_records(memory: SemanticTextMemory) -> SemanticTextMemory:
await memory.save_information("generic", "hello world", "1")
return memory
@@ -39,21 +38,18 @@ def test_can_be_imported(kernel: Kernel, memory: SemanticTextMemory):
assert not kernel.get_function(plugin_name="memory_plugin", function_name="recall").is_prompt
-@mark.asyncio
async def test_can_save(memory: SemanticTextMemory):
text_plugin = TextMemoryPlugin(memory)
await text_plugin.save(text="hello you", key="1")
assert text_plugin.memory._storage._store["generic"]["1"].text == "hello you"
-@mark.asyncio
async def test_can_recall(memory_with_records: SemanticTextMemory):
- text_plugin = TextMemoryPlugin(await memory_with_records)
+ text_plugin = TextMemoryPlugin(memory_with_records)
result = await text_plugin.recall(ask="hello world")
assert result == "hello world"
-@mark.asyncio
async def test_can_save_through_function(kernel: Kernel, memory: SemanticTextMemory):
text_plugin = TextMemoryPlugin(memory)
kernel.add_plugin(text_plugin, "memory_plugin")
@@ -61,15 +57,13 @@ async def test_can_save_through_function(kernel: Kernel, memory: SemanticTextMem
assert text_plugin.memory._storage._store["generic"]["1"].text == "hello world"
-@mark.asyncio
async def test_can_recall_through_function(kernel: Kernel, memory_with_records: SemanticTextMemory):
- text_plugin = TextMemoryPlugin(await memory_with_records)
+ text_plugin = TextMemoryPlugin(memory_with_records)
kernel.add_plugin(text_plugin, "memory_plugin")
result = await kernel.invoke(function_name="recall", plugin_name="memory_plugin", ask="hello world")
assert str(result) == "hello world"
-@mark.asyncio
async def test_can_recall_no_result(memory: SemanticTextMemory):
text_plugin = TextMemoryPlugin(memory)
result = await text_plugin.recall(ask="hello world")
diff --git a/python/tests/unit/core_plugins/test_wait_plugin.py b/python/tests/unit/core_plugins/test_wait_plugin.py
index a690faa6142d..1de450f7df68 100644
--- a/python/tests/unit/core_plugins/test_wait_plugin.py
+++ b/python/tests/unit/core_plugins/test_wait_plugin.py
@@ -41,7 +41,6 @@ def test_can_be_instantiated():
assert plugin is not None
-@pytest.mark.asyncio
@pytest.mark.parametrize("wait_time", test_data_good)
async def test_wait_valid_params(wait_time):
plugin = WaitPlugin()
@@ -51,7 +50,6 @@ async def test_wait_valid_params(wait_time):
patched_sleep.assert_called_once_with(abs(float(wait_time)))
-@pytest.mark.asyncio
@pytest.mark.parametrize("wait_time", test_data_bad)
async def test_wait_invalid_params(wait_time):
plugin = WaitPlugin()
diff --git a/python/tests/unit/core_plugins/test_web_search_engine.py b/python/tests/unit/core_plugins/test_web_search_engine.py
index 6f0d56ce0ed4..e64c653e282f 100644
--- a/python/tests/unit/core_plugins/test_web_search_engine.py
+++ b/python/tests/unit/core_plugins/test_web_search_engine.py
@@ -20,7 +20,6 @@ def test_can_be_instantiated(connector):
assert WebSearchEnginePlugin(connector)
-@pytest.mark.asyncio
async def test_search(connector):
plugin = WebSearchEnginePlugin(connector)
results = await plugin.search("test")
diff --git a/python/tests/unit/data/test_text_search.py b/python/tests/unit/data/test_text_search.py
index 9381513deffc..5b03b67e52e9 100644
--- a/python/tests/unit/data/test_text_search.py
+++ b/python/tests/unit/data/test_text_search.py
@@ -59,7 +59,6 @@ async def generator() -> str:
return KernelSearchResults(results=generator(), metadata=kwargs)
-@pytest.mark.asyncio
@pytest.mark.parametrize("search_function", ["search", "get_text_search_result", "get_search_result"])
async def test_create_kernel_function(search_function: str, kernel: Kernel):
test_search = TestSearch()
@@ -98,7 +97,6 @@ def test_create_kernel_function_fail():
)
-@pytest.mark.asyncio
async def test_create_kernel_function_inner(kernel: Kernel):
test_search = TestSearch()
@@ -116,7 +114,6 @@ async def test_create_kernel_function_inner(kernel: Kernel):
assert results.value == ["test"]
-@pytest.mark.asyncio
async def test_create_kernel_function_inner_with_options(kernel: Kernel):
test_search = TestSearch()
@@ -142,7 +139,6 @@ async def test_create_kernel_function_inner_with_options(kernel: Kernel):
assert results.value == ["test"]
-@pytest.mark.asyncio
async def test_create_kernel_function_inner_with_other_options_type(kernel: Kernel):
test_search = TestSearch()
@@ -168,7 +164,6 @@ async def test_create_kernel_function_inner_with_other_options_type(kernel: Kern
assert results.value == ["test"]
-@pytest.mark.asyncio
async def test_create_kernel_function_inner_no_results(kernel: Kernel):
test_search = TestSearch()
@@ -189,7 +184,6 @@ async def test_create_kernel_function_inner_no_results(kernel: Kernel):
await kernel_function.invoke(kernel, None)
-@pytest.mark.asyncio
async def test_create_kernel_function_inner_update_options(kernel: Kernel):
test_search = TestSearch()
diff --git a/python/tests/unit/data/test_vector_store_record_collection.py b/python/tests/unit/data/test_vector_store_record_collection.py
index 35a3ac5270cf..3e94e6c5ea7d 100644
--- a/python/tests/unit/data/test_vector_store_record_collection.py
+++ b/python/tests/unit/data/test_vector_store_record_collection.py
@@ -79,7 +79,6 @@ def test_init(DictVectorStoreRecordCollection, data_model_definition):
assert vsrc._key_field_name == "id"
-@mark.asyncio
@mark.parametrize(
"vector_store_record_collection",
[
@@ -127,7 +126,6 @@ async def test_crud_operations(vector_store_record_collection):
assert len(vector_store_record_collection.inner_storage) == 0
-@mark.asyncio
@mark.parametrize(
"vector_store_record_collection",
[
@@ -165,7 +163,6 @@ async def test_crud_batch_operations(vector_store_record_collection):
assert len(vector_store_record_collection.inner_storage) == 0
-@mark.asyncio
@mark.parametrize(
"vector_store_record_collection",
["definition_container", "definition_container_serialize"],
@@ -186,7 +183,6 @@ async def test_crud_operations_container(vector_store_record_collection):
assert len(vector_store_record_collection.inner_storage) == 0
-@mark.asyncio
@mark.parametrize(
"vector_store_record_collection",
["definition_container", "definition_container_serialize"],
@@ -210,7 +206,6 @@ async def test_crud_batch_operations_container(vector_store_record_collection):
assert len(vector_store_record_collection.inner_storage) == 0
-@mark.asyncio
@mark.parametrize(
"vector_store_record_collection",
["definition_pandas"],
@@ -232,7 +227,6 @@ async def test_crud_operations_pandas(vector_store_record_collection):
assert len(vector_store_record_collection.inner_storage) == 0
-@mark.asyncio
@mark.parametrize(
"vector_store_record_collection",
["definition_pandas"],
@@ -254,7 +248,6 @@ async def test_crud_batch_operations_pandas(vector_store_record_collection):
assert len(vector_store_record_collection.inner_storage) == 0
-@mark.asyncio
async def test_upsert_fail(DictVectorStoreRecordCollection, data_model_definition):
DictVectorStoreRecordCollection._inner_upsert = MagicMock(side_effect=Exception)
vector_store_record_collection = DictVectorStoreRecordCollection(
@@ -270,7 +263,6 @@ async def test_upsert_fail(DictVectorStoreRecordCollection, data_model_definitio
assert len(vector_store_record_collection.inner_storage) == 0
-@mark.asyncio
async def test_get_fail(DictVectorStoreRecordCollection, data_model_definition):
DictVectorStoreRecordCollection._inner_get = MagicMock(side_effect=Exception)
vector_store_record_collection = DictVectorStoreRecordCollection(
@@ -287,7 +279,6 @@ async def test_get_fail(DictVectorStoreRecordCollection, data_model_definition):
await vector_store_record_collection.get_batch(["test_id"])
-@mark.asyncio
async def test_get_fail_multiple(DictVectorStoreRecordCollection, data_model_definition):
vector_store_record_collection = DictVectorStoreRecordCollection(
collection_name="test",
@@ -310,7 +301,6 @@ async def test_get_fail_multiple(DictVectorStoreRecordCollection, data_model_def
await vector_store_record_collection.get("test_id")
-@mark.asyncio
async def test_serialize_fail(DictVectorStoreRecordCollection, data_model_definition):
DictVectorStoreRecordCollection.serialize = MagicMock(side_effect=Exception)
vector_store_record_collection = DictVectorStoreRecordCollection(
@@ -325,7 +315,6 @@ async def test_serialize_fail(DictVectorStoreRecordCollection, data_model_defini
await vector_store_record_collection.upsert_batch([record])
-@mark.asyncio
async def test_deserialize_fail(DictVectorStoreRecordCollection, data_model_definition):
DictVectorStoreRecordCollection.deserialize = MagicMock(side_effect=Exception)
vector_store_record_collection = DictVectorStoreRecordCollection(
@@ -422,7 +411,6 @@ def test_deserialize_dict_data_model_shortcut(DictVectorStoreRecordCollection, d
assert record == {"id": "test_id", "content": "test_content", "vector": [1.0, 2.0, 3.0]}
-@mark.asyncio
@mark.parametrize("vector_store_record_collection", ["type_pydantic"], indirect=True)
async def test_pydantic_fail(vector_store_record_collection):
id = "test_id"
@@ -453,7 +441,6 @@ def test_to_from_dict_fail(vector_store_record_collection):
vector_store_record_collection.deserialize(dict_record)
-@mark.asyncio
async def test_delete_fail(DictVectorStoreRecordCollection, data_model_definition):
DictVectorStoreRecordCollection._inner_delete = MagicMock(side_effect=Exception)
vector_store_record_collection = DictVectorStoreRecordCollection(
@@ -471,7 +458,6 @@ async def test_delete_fail(DictVectorStoreRecordCollection, data_model_definitio
assert len(vector_store_record_collection.inner_storage) == 1
-@mark.asyncio
async def test_collection_operations(vector_store_record_collection):
await vector_store_record_collection.create_collection()
assert await vector_store_record_collection.does_collection_exist()
@@ -483,7 +469,6 @@ async def test_collection_operations(vector_store_record_collection):
await vector_store_record_collection.create_collection_if_not_exists()
-@mark.asyncio
async def test_collection_create_if_not_exists(DictVectorStoreRecordCollection, data_model_definition):
DictVectorStoreRecordCollection.does_collection_exist = AsyncMock(return_value=False)
create_mock = AsyncMock()
@@ -524,7 +509,6 @@ def test_data_model_validation_vector_fail(data_model_type_vanilla, DictVectorSt
)
-@mark.asyncio
async def test_upsert_with_vectorizing(vector_store_record_collection):
record = {"id": "test_id", "content": "test_content"}
record2 = {"id": "test_id", "content": "test_content"}
diff --git a/python/tests/unit/data/test_vector_store_record_utils.py b/python/tests/unit/data/test_vector_store_record_utils.py
index 0f0a5896e4d1..cfb2ea448d64 100644
--- a/python/tests/unit/data/test_vector_store_record_utils.py
+++ b/python/tests/unit/data/test_vector_store_record_utils.py
@@ -2,7 +2,7 @@
from unittest.mock import AsyncMock, MagicMock
-from pytest import mark, raises
+from pytest import raises
from semantic_kernel import Kernel
from semantic_kernel.data import (
@@ -15,7 +15,6 @@
from semantic_kernel.exceptions import VectorStoreModelException
-@mark.asyncio
async def test_add_vector_to_records(data_model_definition):
kernel = MagicMock(spec=Kernel)
kernel.add_embedding_to_object = AsyncMock()
@@ -26,7 +25,6 @@ async def test_add_vector_to_records(data_model_definition):
kernel.add_embedding_to_object.assert_called_once()
-@mark.asyncio
async def test_add_vector_wrong_fields():
data_model = VectorStoreRecordDefinition(
fields={
diff --git a/python/tests/unit/data/test_vector_store_text_search.py b/python/tests/unit/data/test_vector_store_text_search.py
index d96931e2ab68..0f485349d098 100644
--- a/python/tests/unit/data/test_vector_store_text_search.py
+++ b/python/tests/unit/data/test_vector_store_text_search.py
@@ -2,7 +2,7 @@
from unittest.mock import patch
-from pytest import fixture, mark, raises
+from pytest import fixture, raises
from semantic_kernel.connectors.ai.open_ai import AzureTextEmbedding
from semantic_kernel.data import VectorStoreTextSearch
@@ -18,7 +18,6 @@ def vector_collection(DictVectorStoreRecordCollection, data_model_definition):
)
-@mark.asyncio
async def test_from_vectorizable_text_search(vector_collection):
vsts = VectorStoreTextSearch.from_vectorizable_text_search(vector_collection)
assert vsts is not None
@@ -31,7 +30,6 @@ async def test_from_vectorizable_text_search(vector_collection):
assert search_result is not None
-@mark.asyncio
async def test_from_vector_text_search(vector_collection):
vsts = VectorStoreTextSearch.from_vector_text_search(vector_collection)
assert vsts is not None
@@ -44,7 +42,6 @@ async def test_from_vector_text_search(vector_collection):
assert search_result is not None
-@mark.asyncio
async def test_from_vectorized_search(vector_collection, azure_openai_unit_test_env):
with patch(
"semantic_kernel.connectors.ai.open_ai.services.open_ai_text_embedding_base.OpenAITextEmbeddingBase.generate_raw_embeddings",
diff --git a/python/tests/unit/functions/test_kernel_function_from_method.py b/python/tests/unit/functions/test_kernel_function_from_method.py
index 3f9566dc73cf..7e92f702ddf6 100644
--- a/python/tests/unit/functions/test_kernel_function_from_method.py
+++ b/python/tests/unit/functions/test_kernel_function_from_method.py
@@ -162,7 +162,6 @@ def invalid_name():
KernelFunction.from_method(method=invalid_name, plugin_name="MockPlugin")
-@pytest.mark.asyncio
async def test_invoke_non_async(kernel: Kernel):
@kernel_function()
def non_async_function() -> str:
@@ -178,7 +177,6 @@ def non_async_function() -> str:
pass
-@pytest.mark.asyncio
async def test_invoke_async(kernel: Kernel):
@kernel_function()
async def async_function() -> str:
@@ -194,7 +192,6 @@ async def async_function() -> str:
pass
-@pytest.mark.asyncio
async def test_invoke_gen(kernel: Kernel):
@kernel_function()
def gen_function() -> Iterable[str]:
@@ -209,7 +206,6 @@ def gen_function() -> Iterable[str]:
assert partial_result == ""
-@pytest.mark.asyncio
async def test_invoke_gen_async(kernel: Kernel):
@kernel_function()
async def async_gen_function() -> AsyncGenerator[str, Any]:
@@ -224,7 +220,6 @@ async def async_gen_function() -> AsyncGenerator[str, Any]:
assert partial_result == ""
-@pytest.mark.asyncio
async def test_service_execution(kernel: Kernel, openai_unit_test_env):
service = OpenAIChatCompletion(service_id="test", ai_model_id="test")
req_settings = service.get_prompt_execution_settings_class()(service_id="test")
@@ -251,7 +246,6 @@ def my_function(kernel, service, execution_settings, arguments) -> str:
assert result.value == "ok"
-@pytest.mark.asyncio
async def test_required_param_not_supplied(kernel: Kernel):
@kernel_function()
def my_function(input: str) -> str:
@@ -263,7 +257,6 @@ def my_function(input: str) -> str:
await func.invoke(kernel=kernel, arguments=KernelArguments())
-@pytest.mark.asyncio
async def test_service_execution_with_complex_object(kernel: Kernel):
class InputObject(KernelBaseModel):
arg1: str
@@ -289,7 +282,6 @@ class InputObject(KernelBaseModel):
arg2: int
-@pytest.mark.asyncio
async def test_service_execution_with_complex_object_from_str(kernel: Kernel):
@kernel_function(name="function")
def my_function(input_obj: InputObject) -> str:
@@ -306,7 +298,6 @@ def my_function(input_obj: InputObject) -> str:
assert result.value == "test 5"
-@pytest.mark.asyncio
async def test_service_execution_with_complex_object_from_str_mixed(kernel: Kernel):
@kernel_function(name="function")
def my_function(input_obj: InputObject, input_str: str) -> str:
@@ -323,7 +314,6 @@ def my_function(input_obj: InputObject, input_str: str) -> str:
assert result.value == "test test2 5"
-@pytest.mark.asyncio
async def test_service_execution_with_complex_object_from_str_mixed_multi(kernel: Kernel):
@kernel_function(name="function")
def my_function(input_obj: InputObject, input_str: str | int) -> str:
@@ -345,7 +335,6 @@ def test_function_from_lambda():
assert func is not None
-@pytest.mark.asyncio
async def test_function_invoke_return_list_type(kernel: Kernel):
@kernel_function(name="list_func")
def test_list_func() -> list[str]:
@@ -357,7 +346,6 @@ def test_list_func() -> list[str]:
assert str(result) == "test1,test2"
-@pytest.mark.asyncio
async def test_function_invocation_filters(kernel: Kernel):
func = KernelFunctionFromMethod(method=kernel_function(lambda input: input**2, name="square"), plugin_name="math")
kernel.add_function(plugin_name="math", function=func)
@@ -379,7 +367,6 @@ async def custom_filter(context, next):
assert post_call_count == 1
-@pytest.mark.asyncio
async def test_function_invocation_multiple_filters(kernel: Kernel):
call_stack = []
@@ -416,7 +403,6 @@ async def custom_filter2(context, next):
]
-@pytest.mark.asyncio
async def test_function_invocation_filters_streaming(kernel: Kernel):
call_stack = []
@@ -462,7 +448,6 @@ async def override_stream(stream):
]
-@pytest.mark.asyncio
async def test_default_handling(kernel: Kernel):
@kernel_function
def func_default(input: str = "test"):
@@ -474,7 +459,6 @@ def func_default(input: str = "test"):
assert str(res) == "test"
-@pytest.mark.asyncio
async def test_default_handling_2(kernel: Kernel):
@kernel_function
def func_default(base: str, input: str = "test"):
diff --git a/python/tests/unit/functions/test_kernel_function_from_prompt.py b/python/tests/unit/functions/test_kernel_function_from_prompt.py
index 21abc647a0df..d9f8e18282ac 100644
--- a/python/tests/unit/functions/test_kernel_function_from_prompt.py
+++ b/python/tests/unit/functions/test_kernel_function_from_prompt.py
@@ -147,7 +147,6 @@ def test_init_prompt_execution_settings_dict():
assert function.prompt_template.prompt_template_config.template == "test"
-@pytest.mark.asyncio
async def test_invoke_chat_stream(openai_unit_test_env):
kernel = Kernel()
kernel.add_service(OpenAIChatCompletion(service_id="test", ai_model_id="test"))
@@ -176,7 +175,6 @@ async def test_invoke_chat_stream(openai_unit_test_env):
assert str(result) == "test"
-@pytest.mark.asyncio
async def test_invoke_exception(openai_unit_test_env):
kernel = Kernel()
kernel.add_service(OpenAIChatCompletion(service_id="test", ai_model_id="test"))
@@ -206,7 +204,6 @@ async def test_invoke_exception(openai_unit_test_env):
assert isinstance(result.metadata[METADATA_EXCEPTION_KEY], Exception)
-@pytest.mark.asyncio
async def test_invoke_text(openai_unit_test_env):
kernel = Kernel()
kernel.add_service(OpenAITextCompletion(service_id="test", ai_model_id="test"))
@@ -231,7 +228,6 @@ async def test_invoke_text(openai_unit_test_env):
assert str(result) == "test"
-@pytest.mark.asyncio
async def test_invoke_exception_text(openai_unit_test_env):
kernel = Kernel()
kernel.add_service(OpenAITextCompletion(service_id="test", ai_model_id="test"))
@@ -259,7 +255,6 @@ async def test_invoke_exception_text(openai_unit_test_env):
assert isinstance(result.metadata[METADATA_EXCEPTION_KEY], Exception)
-@pytest.mark.asyncio
async def test_invoke_defaults(openai_unit_test_env):
kernel = Kernel()
kernel.add_service(OpenAIChatCompletion(service_id="test", ai_model_id="test"))
@@ -300,7 +295,6 @@ def test_create_with_multiple_settings():
)
-@pytest.mark.asyncio
async def test_create_with_multiple_settings_one_service_registered(openai_unit_test_env):
kernel = Kernel()
kernel.add_service(OpenAIChatCompletion(service_id="test2", ai_model_id="test"))
@@ -356,7 +350,6 @@ def test_from_directory_config_only():
)
-@pytest.mark.asyncio
async def test_prompt_render(kernel: Kernel, openai_unit_test_env):
kernel.add_service(OpenAIChatCompletion(service_id="default", ai_model_id="test"))
function = KernelFunctionFromPrompt(
@@ -371,7 +364,6 @@ async def test_prompt_render(kernel: Kernel, openai_unit_test_env):
assert prompt_render_result.rendered_prompt == "test"
-@pytest.mark.asyncio
async def test_prompt_render_with_filter(kernel: Kernel, openai_unit_test_env):
kernel.add_service(OpenAIChatCompletion(service_id="default", ai_model_id="test"))
diff --git a/python/tests/unit/functions/test_kernel_plugins.py b/python/tests/unit/functions/test_kernel_plugins.py
index 986bbee99aea..fd9102f7a5c9 100644
--- a/python/tests/unit/functions/test_kernel_plugins.py
+++ b/python/tests/unit/functions/test_kernel_plugins.py
@@ -497,7 +497,6 @@ def test_from_object_class(custom_plugin_class):
assert plugin.functions.get("getLightStatus") is not None
-@pytest.mark.asyncio
@patch("semantic_kernel.connectors.openai_plugin.openai_utils.OpenAIUtils.parse_openai_manifest_for_openapi_spec_url")
async def test_from_openai_from_file(mock_parse_openai_manifest):
openai_spec_file = os.path.join(os.path.dirname(__file__), "../../assets/test_plugins")
@@ -525,7 +524,6 @@ async def test_from_openai_from_file(mock_parse_openai_manifest):
assert plugin.functions.get("SetSecret") is not None
-@pytest.mark.asyncio
@patch("httpx.AsyncClient.get")
@patch("semantic_kernel.connectors.openai_plugin.openai_utils.OpenAIUtils.parse_openai_manifest_for_openapi_spec_url")
async def test_from_openai_plugin_from_url(mock_parse_openai_manifest, mock_get):
@@ -563,13 +561,11 @@ async def test_from_openai_plugin_from_url(mock_parse_openai_manifest, mock_get)
mock_get.assert_awaited_once_with(fake_plugin_url, headers={"User-Agent": HTTP_USER_AGENT})
-@pytest.mark.asyncio
async def test_from_openai_fail():
with raises(PluginInitializationError):
await KernelPlugin.from_openai(plugin_name="TestOpenAIPlugin")
-@pytest.mark.asyncio
async def test_from_openai_fail_json_parsing():
with raises(PluginInitializationError):
await KernelPlugin.from_openai(plugin_name="TestOpenAIPlugin", plugin_str="test")
diff --git a/python/tests/unit/kernel/test_kernel.py b/python/tests/unit/kernel/test_kernel.py
index 305ab8b7288d..4180994792dd 100644
--- a/python/tests/unit/kernel/test_kernel.py
+++ b/python/tests/unit/kernel/test_kernel.py
@@ -101,7 +101,6 @@ def test_kernel_init_with_kernel_plugin_list():
# region Invoke Functions
-@pytest.mark.asyncio
async def test_invoke_function(kernel: Kernel, create_mock_function):
mock_function = create_mock_function(name="test_function")
@@ -110,7 +109,6 @@ async def test_invoke_function(kernel: Kernel, create_mock_function):
assert mock_function.call_count == 1
-@pytest.mark.asyncio
async def test_invoke_function_with_cancellation(kernel: Kernel, create_mock_function):
mock_function = create_mock_function(name="test_function")
@@ -125,7 +123,6 @@ async def test_invoke_function_with_cancellation(kernel: Kernel, create_mock_fun
Kernel.invoke.assert_called_once_with(function=mock_function, arguments=KernelArguments())
-@pytest.mark.asyncio
async def test_invoke_functions_by_name(kernel: Kernel, create_mock_function):
mock_function = kernel.add_function(plugin_name="test", function=create_mock_function(name="test_function"))
@@ -138,7 +135,6 @@ async def test_invoke_functions_by_name(kernel: Kernel, create_mock_function):
assert response[0].text == "test"
-@pytest.mark.asyncio
async def test_invoke_functions_by_name_return_function_results(kernel: Kernel, create_mock_function):
mock_function = kernel.add_function(plugin_name="test", function=create_mock_function(name="test_function"))
@@ -153,7 +149,6 @@ async def test_invoke_functions_by_name_return_function_results(kernel: Kernel,
assert isinstance(result, FunctionResult)
-@pytest.mark.asyncio
async def test_invoke_function_fail(kernel: Kernel, create_mock_function):
mock_function = create_mock_function(name="test_function")
kernel.add_plugin(KernelPlugin(name="test", functions=[mock_function]))
@@ -166,7 +161,6 @@ async def test_invoke_function_fail(kernel: Kernel, create_mock_function):
pass
-@pytest.mark.asyncio
async def test_invoke_function_cancelled(kernel: Kernel, create_mock_function):
mock_function = create_mock_function(name="test_function")
mock_function._invoke_internal = AsyncMock(side_effect=OperationCancelledException("Operation cancelled"))
@@ -176,7 +170,6 @@ async def test_invoke_function_cancelled(kernel: Kernel, create_mock_function):
assert result is None
-@pytest.mark.asyncio
async def test_invoke_stream_function(kernel: Kernel, create_mock_function):
mock_function = create_mock_function(name="test_function")
mock_function = kernel.add_function(plugin_name="test", function=mock_function)
@@ -187,7 +180,6 @@ async def test_invoke_stream_function(kernel: Kernel, create_mock_function):
assert mock_function.call_count == 1
-@pytest.mark.asyncio
async def test_invoke_stream_functions_throws_exception(kernel: Kernel, create_mock_function):
mock_function = create_mock_function(name="test_function")
kernel.add_plugin(KernelPlugin(name="test", functions=[mock_function]))
@@ -206,7 +198,6 @@ async def test_invoke_stream_functions_throws_exception(kernel: Kernel, create_m
break
-@pytest.mark.asyncio
async def test_invoke_prompt(kernel: Kernel, create_mock_function):
mock_function = create_mock_function(name="test_function")
with patch(
@@ -217,7 +208,6 @@ async def test_invoke_prompt(kernel: Kernel, create_mock_function):
mock_invoke.invoke.call_count == 1
-@pytest.mark.asyncio
async def test_invoke_prompt_no_prompt_error(kernel: Kernel):
with pytest.raises(TemplateSyntaxError):
await kernel.invoke_prompt(
@@ -227,14 +217,12 @@ async def test_invoke_prompt_no_prompt_error(kernel: Kernel):
)
-@pytest.mark.asyncio
async def test_invoke_prompt_stream_no_prompt_throws(kernel: Kernel):
with pytest.raises(TemplateSyntaxError):
async for _ in kernel.invoke_prompt_stream(prompt=""):
pass
-@pytest.mark.asyncio
async def test_invoke_prompt_stream(kernel: Kernel, create_mock_function):
mock_function = create_mock_function(name="test_function")
with (
@@ -249,7 +237,6 @@ async def test_invoke_prompt_stream(kernel: Kernel, create_mock_function):
assert response.value == "test"
-@pytest.mark.asyncio
async def test_invoke_prompt_stream_returns_function_results(kernel: Kernel, create_mock_function):
mock_function = create_mock_function(name="test_function")
with (
@@ -264,7 +251,6 @@ async def test_invoke_prompt_stream_returns_function_results(kernel: Kernel, cre
assert isinstance(response, FunctionResult)
-@pytest.mark.asyncio
async def test_invoke_prompt_stream_raises_exception(kernel: Kernel, create_mock_function):
mock_function = create_mock_function(name="test_function")
with (
@@ -282,7 +268,6 @@ async def test_invoke_prompt_stream_raises_exception(kernel: Kernel, create_mock
pass
-@pytest.mark.asyncio
async def test_invoke_function_call(kernel: Kernel, get_tool_call_mock):
tool_call_mock = get_tool_call_mock
result_mock = MagicMock(spec=ChatMessageContent)
@@ -312,7 +297,6 @@ async def test_invoke_function_call(kernel: Kernel, get_tool_call_mock):
)
-@pytest.mark.asyncio
async def test_invoke_function_call_throws_during_invoke(kernel: Kernel, get_tool_call_mock):
tool_call_mock = get_tool_call_mock
result_mock = MagicMock(spec=ChatMessageContent)
@@ -343,7 +327,6 @@ async def test_invoke_function_call_throws_during_invoke(kernel: Kernel, get_too
)
-@pytest.mark.asyncio
async def test_invoke_function_call_non_allowed_func_throws(kernel: Kernel, get_tool_call_mock):
tool_call_mock = get_tool_call_mock
result_mock = MagicMock(spec=ChatMessageContent)
@@ -370,7 +353,6 @@ async def test_invoke_function_call_non_allowed_func_throws(kernel: Kernel, get_
)
-@pytest.mark.asyncio
async def test_invoke_function_call_no_name_throws(kernel: Kernel, get_tool_call_mock):
tool_call_mock = get_tool_call_mock
tool_call_mock.name = None
@@ -400,7 +382,6 @@ async def test_invoke_function_call_no_name_throws(kernel: Kernel, get_tool_call
)
-@pytest.mark.asyncio
async def test_invoke_function_call_not_enough_parsed_args(kernel: Kernel, get_tool_call_mock):
tool_call_mock = get_tool_call_mock
tool_call_mock.to_kernel_arguments.return_value = {}
@@ -432,7 +413,6 @@ async def test_invoke_function_call_not_enough_parsed_args(kernel: Kernel, get_t
)
-@pytest.mark.asyncio
async def test_invoke_function_call_with_continuation_on_malformed_arguments(kernel: Kernel, get_tool_call_mock):
tool_call_mock = MagicMock(spec=FunctionCallContent)
tool_call_mock.to_kernel_arguments.side_effect = FunctionCallInvalidArgumentsException("Malformed arguments")
@@ -609,7 +589,6 @@ def func2(arg1: str) -> str:
assert len(plugin.functions) == 2
-@pytest.mark.asyncio
@patch("semantic_kernel.connectors.openai_plugin.openai_utils.OpenAIUtils.parse_openai_manifest_for_openapi_spec_url")
async def test_add_plugin_from_openai(mock_parse_openai_manifest, kernel: Kernel):
base_folder = os.path.join(os.path.dirname(__file__), "../../assets/test_plugins")
diff --git a/python/tests/unit/kernel/test_register_functions.py b/python/tests/unit/kernel/test_register_functions.py
index fa04bc75af4c..052a28eb4a5a 100644
--- a/python/tests/unit/kernel/test_register_functions.py
+++ b/python/tests/unit/kernel/test_register_functions.py
@@ -12,7 +12,6 @@
from semantic_kernel.functions.kernel_function import KernelFunction
-@pytest.mark.asyncio
async def test_register_valid_native_function(kernel: Kernel, decorated_native_function: Callable):
kernel.add_function(plugin_name="TestPlugin", function=decorated_native_function)
registered_func = kernel.get_function(plugin_name="TestPlugin", function_name="getLightStatus")
diff --git a/python/tests/unit/memory/test_azure_cognitive_search_memory_store_unit_tests.py b/python/tests/unit/memory/test_azure_cognitive_search_memory_store_unit_tests.py
index 5371e828b309..ab799ca69b61 100644
--- a/python/tests/unit/memory/test_azure_cognitive_search_memory_store_unit_tests.py
+++ b/python/tests/unit/memory/test_azure_cognitive_search_memory_store_unit_tests.py
@@ -43,7 +43,6 @@ def mock_get_index_client():
yield mock
-@pytest.mark.asyncio
async def test_create_collection_without_encryption_key(
azure_cognitive_search_memory_store: AzureCognitiveSearchMemoryStore,
mock_search_index_client,
@@ -59,7 +58,6 @@ async def test_create_collection_without_encryption_key(
assert created_index.encryption_key is None, "Encryption key should be None"
-@pytest.mark.asyncio
async def test_create_collection_with_encryption_key(
azure_cognitive_search_memory_store: AzureCognitiveSearchMemoryStore,
mock_search_index_client,
diff --git a/python/tests/unit/memory/test_volatile_memory_store.py b/python/tests/unit/memory/test_volatile_memory_store.py
index 8f0ea30041a0..651888fc49f4 100644
--- a/python/tests/unit/memory/test_volatile_memory_store.py
+++ b/python/tests/unit/memory/test_volatile_memory_store.py
@@ -1,12 +1,11 @@
# Copyright (c) Microsoft. All rights reserved.
import numpy as np
-from pytest import mark, raises
+from pytest import raises
from semantic_kernel.memory import VolatileMemoryStore
-@mark.asyncio
async def test_cosine_similarity_valid():
"""Test the cosine similarity computation"""
volatile_memory_store = VolatileMemoryStore()
@@ -22,7 +21,6 @@ async def test_cosine_similarity_valid():
np.testing.assert_allclose(scores, expected_scores)
-@mark.asyncio
async def test_cosine_similarity_zero_query():
volatile_memory_store = VolatileMemoryStore()
# Test case 2: Zero vector as query_embedding
@@ -32,7 +30,6 @@ async def test_cosine_similarity_zero_query():
_ = volatile_memory_store.compute_similarity_scores(query_embedding, collection_embeddings)
-@mark.asyncio
async def test_cosine_similarity_zero_collection():
volatile_memory_store = VolatileMemoryStore()
# Test case 3: Zero vector as collection_embeddings
@@ -42,7 +39,6 @@ async def test_cosine_similarity_zero_collection():
_ = volatile_memory_store.compute_similarity_scores(query_embedding, collection_embeddings)
-@mark.asyncio
async def test_cosine_similarity_partial_zero_collection():
volatile_memory_store = VolatileMemoryStore()
# Test case 4: Partial zero vector as collection_embeddings
diff --git a/python/tests/unit/planners/function_calling_stepwise_planner/test_function_calling_stepwise_planner.py b/python/tests/unit/planners/function_calling_stepwise_planner/test_function_calling_stepwise_planner.py
index 6dd6508972e8..3736a43f4e94 100644
--- a/python/tests/unit/planners/function_calling_stepwise_planner/test_function_calling_stepwise_planner.py
+++ b/python/tests/unit/planners/function_calling_stepwise_planner/test_function_calling_stepwise_planner.py
@@ -74,7 +74,6 @@ def test_initialization():
assert planner.options is not None
-@pytest.mark.asyncio
async def test_invoke_with_empty_question_raises_error():
planner = FunctionCallingStepwisePlanner(service_id="test-service", options=None)
kernel_mock = AsyncMock(Kernel)
@@ -82,7 +81,6 @@ async def test_invoke_with_empty_question_raises_error():
await planner.invoke(kernel_mock, "")
-@pytest.mark.asyncio
async def test_get_initial_plan_callback_usage():
fake_get_initial_plan = MagicMock(return_value="custom initial plan")
options = FunctionCallingStepwisePlannerOptions(get_initial_plan=fake_get_initial_plan)
@@ -91,7 +89,6 @@ async def test_get_initial_plan_callback_usage():
fake_get_initial_plan.assert_called_once()
-@pytest.mark.asyncio
async def test_get_step_prompt_callback_usage():
fake_get_step_prompt = MagicMock(return_value="custom step prompt")
options = FunctionCallingStepwisePlannerOptions(get_step_prompt=fake_get_step_prompt)
@@ -100,7 +97,6 @@ async def test_get_step_prompt_callback_usage():
fake_get_step_prompt.assert_called_once_with()
-@pytest.mark.asyncio
async def test_build_chat_history_for_step():
planner = FunctionCallingStepwisePlanner(service_id="test_service", options=None)
kernel_mock = AsyncMock(Kernel)
@@ -114,7 +110,6 @@ async def test_build_chat_history_for_step():
assert chat_history[0].role == AuthorRole.USER
-@pytest.mark.asyncio
async def test_generate_plan():
planner = FunctionCallingStepwisePlanner(service_id="test_service")
@@ -137,14 +132,12 @@ async def test_generate_plan():
assert result is not None
-@pytest.mark.asyncio
async def test_invoke_with_no_configured_AI_service_raises_exception(kernel: Kernel):
planner = FunctionCallingStepwisePlanner(service_id="test", options=None)
with pytest.raises(PlannerInvalidConfigurationError):
await planner.invoke(kernel, "test question")
-@pytest.mark.asyncio
async def test_invoke_with_function_call_content_and_processing(
get_function_call_content, get_kernel_function_metadata_list
):
@@ -196,7 +189,6 @@ async def test_invoke_with_function_call_content_and_processing(
frc_mock.assert_called_with(function_call_content=other_function_call_content, result="Function result")
-@pytest.mark.asyncio
async def test_invoke_with_function_call_content_and_processing_error(get_kernel_function_metadata_list):
kernel_mock = AsyncMock(spec=Kernel)
question = "Test question"
@@ -249,7 +241,6 @@ async def test_invoke_with_function_call_content_and_processing_error(get_kernel
)
-@pytest.mark.asyncio
async def test_invoke_with_invalid_service_type():
planner = FunctionCallingStepwisePlanner(service_id="test_service", options=None)
kernel_mock = AsyncMock(spec=Kernel)
@@ -258,7 +249,6 @@ async def test_invoke_with_invalid_service_type():
await planner.invoke(kernel_mock, "test question")
-@pytest.mark.asyncio
async def test_invoke_with_no_arguments():
planner = FunctionCallingStepwisePlanner(service_id="test_service", options=None)
kernel_mock = AsyncMock(spec=Kernel)
diff --git a/python/tests/unit/planners/sequential_planner/test_sequential_planner.py b/python/tests/unit/planners/sequential_planner/test_sequential_planner.py
index 0cb00f0b4b3c..a504db2e5521 100644
--- a/python/tests/unit/planners/sequential_planner/test_sequential_planner.py
+++ b/python/tests/unit/planners/sequential_planner/test_sequential_planner.py
@@ -28,7 +28,6 @@ def create_mock_function(
return mock_function
-@pytest.mark.asyncio
@pytest.mark.parametrize("goal", ["Write a poem or joke and send it in an e-mail to Kai."])
async def test_it_can_create_plan(goal, kernel: Kernel):
# Arrange
@@ -92,7 +91,6 @@ async def test_it_can_create_plan(goal, kernel: Kernel):
assert any(step.plugin_name == expectedPlugin for step in plan._steps)
-@pytest.mark.asyncio
async def test_empty_goal_throws(kernel: Kernel):
# Arrange
planner = SequentialPlanner(kernel, service_id="test")
@@ -102,7 +100,6 @@ async def test_empty_goal_throws(kernel: Kernel):
await planner.create_plan("")
-@pytest.mark.asyncio
async def test_invalid_xml_throws(kernel: Kernel):
# Arrange
diff --git a/python/tests/unit/planners/sequential_planner/test_sequential_planner_extensions.py b/python/tests/unit/planners/sequential_planner/test_sequential_planner_extensions.py
index 161be79bb6ca..81b6f090e8e3 100644
--- a/python/tests/unit/planners/sequential_planner/test_sequential_planner_extensions.py
+++ b/python/tests/unit/planners/sequential_planner/test_sequential_planner_extensions.py
@@ -3,8 +3,6 @@
from unittest.mock import Mock
-import pytest
-
from semantic_kernel.connectors.ai.prompt_execution_settings import PromptExecutionSettings
from semantic_kernel.functions.function_result import FunctionResult
from semantic_kernel.functions.kernel_arguments import KernelArguments
@@ -34,7 +32,6 @@ def create_mock_function(
return mock_function
-@pytest.mark.asyncio
async def test_can_call_get_available_functions_with_no_functions(kernel: Kernel):
arguments = KernelArguments()
@@ -49,7 +46,6 @@ async def test_can_call_get_available_functions_with_no_functions(kernel: Kernel
assert result is not None
-@pytest.mark.asyncio
async def test_can_call_get_available_functions_with_functions(kernel: Kernel):
arguments = KernelArguments()
kernel_function_metadata = KernelFunctionMetadata(
@@ -96,7 +92,6 @@ async def test_can_call_get_available_functions_with_functions(kernel: Kernel):
assert result[1] == native_kernel_function_metadata
-@pytest.mark.asyncio
async def test_can_call_get_available_functions_with_default_relevancy(kernel: Kernel):
# Arrange
arguments = KernelArguments()
diff --git a/python/tests/unit/planners/test_plan_execution.py b/python/tests/unit/planners/test_plan_execution.py
index ea338b74316f..30bd883329ad 100644
--- a/python/tests/unit/planners/test_plan_execution.py
+++ b/python/tests/unit/planners/test_plan_execution.py
@@ -1,6 +1,5 @@
# Copyright (c) Microsoft. All rights reserved.
-import pytest
from semantic_kernel.core_plugins.math_plugin import MathPlugin
from semantic_kernel.core_plugins.text_plugin import TextPlugin
@@ -9,14 +8,12 @@
from semantic_kernel.planners import Plan
-@pytest.mark.asyncio
async def test_invoke_empty_plan(kernel: Kernel):
plan = Plan()
result = await plan.invoke(kernel)
assert str(result) == ""
-@pytest.mark.asyncio
async def test_invoke_plan_constructed_with_function(kernel: Kernel):
# import test (text) plugin
kernel.add_plugin(TextPlugin(), "text")
@@ -27,7 +24,6 @@ async def test_invoke_plan_constructed_with_function(kernel: Kernel):
assert str(result) == "HELLO WORLD "
-@pytest.mark.asyncio
async def test_invoke_empty_plan_with_added_function_step(kernel: Kernel):
# import test (text) plugin
kernel.add_plugin(TextPlugin(), "text")
@@ -40,7 +36,6 @@ async def test_invoke_empty_plan_with_added_function_step(kernel: Kernel):
assert str(result) == "HELLO WORLD "
-@pytest.mark.asyncio
async def test_invoke_empty_plan_with_added_plan_step(kernel: Kernel):
# import test (text) plugin
kernel.add_plugin(TextPlugin(), "text")
@@ -53,7 +48,6 @@ async def test_invoke_empty_plan_with_added_plan_step(kernel: Kernel):
assert str(result) == "HELLO WORLD "
-@pytest.mark.asyncio
async def test_invoke_multi_step_plan(kernel: Kernel):
# import test (text) plugin
kernel.add_plugin(TextPlugin(), "text")
@@ -68,7 +62,6 @@ async def test_invoke_multi_step_plan(kernel: Kernel):
assert str(result) == "HELLO WORLD"
-@pytest.mark.asyncio
async def test_invoke_multi_step_plan_with_arguments(kernel: Kernel):
# import test (text) plugin
kernel.add_plugin(MathPlugin(), "math")
diff --git a/python/tests/unit/planners/test_planner_extensions.py b/python/tests/unit/planners/test_planner_extensions.py
index fc92addd3786..a176ce42e2c5 100644
--- a/python/tests/unit/planners/test_planner_extensions.py
+++ b/python/tests/unit/planners/test_planner_extensions.py
@@ -73,7 +73,6 @@ def test_to_embedding_string(function, expected_output):
assert result == expected_output
-@pytest.mark.asyncio
async def test_get_functions_manual():
kernel = MagicMock()
arguments = MagicMock()
@@ -100,7 +99,6 @@ async def test_get_functions_manual():
assert result == expected_output
-@pytest.mark.asyncio
async def test_get_functions_manual_with_custom_get_available_functions():
kernel = MagicMock()
arguments = MagicMock()
@@ -126,7 +124,6 @@ async def test_get_functions_manual_with_custom_get_available_functions():
assert result == expected_output
-@pytest.mark.asyncio
async def test_get_available_functions():
kernel = MagicMock()
arguments = MagicMock()
diff --git a/python/tests/unit/processes/dapr_runtime/test_dapr_kernel_process.py b/python/tests/unit/processes/dapr_runtime/test_dapr_kernel_process.py
index 22081358bf1a..1c2522460a00 100644
--- a/python/tests/unit/processes/dapr_runtime/test_dapr_kernel_process.py
+++ b/python/tests/unit/processes/dapr_runtime/test_dapr_kernel_process.py
@@ -19,7 +19,6 @@ def __init__(self, process):
self.start_with_event = AsyncMock()
-@pytest.mark.asyncio
async def test_start_with_valid_parameters():
state = MagicMock(spec=KernelProcessState)
state.name = "valid_state"
@@ -42,7 +41,6 @@ async def test_start_with_valid_parameters():
result.start_with_event.assert_called_once_with(initial_event)
-@pytest.mark.asyncio
async def test_start_with_invalid_process():
kernel = MagicMock(spec=Kernel)
initial_event = KernelProcessEvent(id="event_1", data="data_1")
@@ -51,7 +49,6 @@ async def test_start_with_invalid_process():
await start(process=None, kernel=kernel, initial_event=initial_event)
-@pytest.mark.asyncio
async def test_start_with_invalid_initial_event():
state = MagicMock(spec=KernelProcessState)
type(state).name = PropertyMock(return_value="valid_state")
@@ -63,7 +60,6 @@ async def test_start_with_invalid_initial_event():
await start(process=process, kernel=kernel, initial_event=None)
-@pytest.mark.asyncio
async def test_start_with_initial_event_as_string():
state = MagicMock(spec=KernelProcessState)
type(state).name = PropertyMock(return_value="valid_state")
diff --git a/python/tests/unit/processes/dapr_runtime/test_dapr_kernel_process_context.py b/python/tests/unit/processes/dapr_runtime/test_dapr_kernel_process_context.py
index f262f74bbedc..570ac670f141 100644
--- a/python/tests/unit/processes/dapr_runtime/test_dapr_kernel_process_context.py
+++ b/python/tests/unit/processes/dapr_runtime/test_dapr_kernel_process_context.py
@@ -43,7 +43,6 @@ def process_context():
yield context, mock_dapr_process
-@pytest.mark.asyncio
async def test_start_with_event(process_context):
context, mock_dapr_process = process_context
@@ -62,7 +61,6 @@ async def test_start_with_event(process_context):
mock_dapr_process.run_once.assert_awaited_once_with(initial_event_json)
-@pytest.mark.asyncio
async def test_send_event(process_context):
context, mock_dapr_process = process_context
@@ -73,7 +71,6 @@ async def test_send_event(process_context):
mock_dapr_process.send_message.assert_awaited_once_with(event)
-@pytest.mark.asyncio
async def test_stop(process_context):
context, mock_dapr_process = process_context
@@ -82,7 +79,6 @@ async def test_stop(process_context):
mock_dapr_process.stop.assert_awaited_once()
-@pytest.mark.asyncio
async def test_get_state(process_context):
context, mock_dapr_process = process_context
diff --git a/python/tests/unit/processes/dapr_runtime/test_process_actor.py b/python/tests/unit/processes/dapr_runtime/test_process_actor.py
index abec885b18ac..78fcb464334f 100644
--- a/python/tests/unit/processes/dapr_runtime/test_process_actor.py
+++ b/python/tests/unit/processes/dapr_runtime/test_process_actor.py
@@ -47,7 +47,6 @@ def clean_structure(data):
return data
-@pytest.mark.asyncio
async def test_initialize_process(actor_context):
input_data = {
"process_info": {
@@ -109,7 +108,6 @@ async def test_initialize_process(actor_context):
actor_context._initialize_process_actor.assert_called_once_with(dapr_process_info_instance, "parent_123")
-@pytest.mark.asyncio
async def test_start_process(actor_context):
actor_context.initialize_task = True
@@ -136,7 +134,6 @@ def test_run_once(actor_context):
assert actor_context.process_task is not None
-@pytest.mark.asyncio
async def test_stop(actor_context):
actor_context.initialize_task = True
actor_context.process_task = asyncio.create_task(asyncio.sleep(1))
diff --git a/python/tests/unit/processes/dapr_runtime/test_step_actor.py b/python/tests/unit/processes/dapr_runtime/test_step_actor.py
index 990f6efaeeaa..4a5c306dc2fa 100644
--- a/python/tests/unit/processes/dapr_runtime/test_step_actor.py
+++ b/python/tests/unit/processes/dapr_runtime/test_step_actor.py
@@ -20,7 +20,6 @@ def actor_context():
return StepActor(ctx, actor_id, kernel)
-@pytest.mark.asyncio
async def test_initialize_step(actor_context):
input_data = json.dumps({
"step_info": {
@@ -42,7 +41,6 @@ async def test_initialize_step(actor_context):
mock_save_state.assert_called_once()
-@pytest.mark.asyncio
async def test_prepare_incoming_messages(actor_context):
message = ProcessMessage(
source_id="source_1",
@@ -71,7 +69,6 @@ async def test_prepare_incoming_messages(actor_context):
mock_save_state.assert_called_once()
-@pytest.mark.asyncio
async def test_process_incoming_messages(actor_context):
actor_context.step_info = DaprStepInfo(
state=KernelProcessStepState(name="Test Step", id="step_123"),
diff --git a/python/tests/unit/processes/kernel_process/test_kernel_process_message_channel.py b/python/tests/unit/processes/kernel_process/test_kernel_process_message_channel.py
index f6fd6b6603bd..e95929f7b4b6 100644
--- a/python/tests/unit/processes/kernel_process/test_kernel_process_message_channel.py
+++ b/python/tests/unit/processes/kernel_process/test_kernel_process_message_channel.py
@@ -2,8 +2,6 @@
from unittest.mock import AsyncMock
-import pytest
-
from semantic_kernel.processes.kernel_process.kernel_process_message_channel import KernelProcessMessageChannel
from semantic_kernel.processes.local_runtime.local_event import KernelProcessEvent
@@ -13,7 +11,6 @@ async def emit_event(self, process_event: KernelProcessEvent) -> None:
pass
-@pytest.mark.asyncio
async def test_emit_event():
# Arrange
event = KernelProcessEvent(id="event_001", data={"key": "value"})
@@ -27,7 +24,6 @@ async def test_emit_event():
channel.emit_event.assert_awaited_once_with(event)
-@pytest.mark.asyncio
async def test_emit_event_with_no_event():
# Arrange
channel = MockKernelProcessMessageChannel()
diff --git a/python/tests/unit/processes/kernel_process/test_kernel_process_step_context.py b/python/tests/unit/processes/kernel_process/test_kernel_process_step_context.py
index a6dd09b7ef88..4693452c5324 100644
--- a/python/tests/unit/processes/kernel_process/test_kernel_process_step_context.py
+++ b/python/tests/unit/processes/kernel_process/test_kernel_process_step_context.py
@@ -16,7 +16,6 @@ async def emit_event(self, process_event: KernelProcessEvent) -> None:
pass
-@pytest.mark.asyncio
async def test_initialization():
# Arrange
channel = MockKernelProcessMessageChannel()
@@ -28,7 +27,6 @@ async def test_initialization():
assert context.step_message_channel == channel
-@pytest.mark.asyncio
async def test_emit_event():
# Arrange
channel = MockKernelProcessMessageChannel()
@@ -43,7 +41,6 @@ async def test_emit_event():
channel.emit_event.assert_called_once_with(event)
-@pytest.mark.asyncio
async def test_emit_event_with_invalid_event():
# Arrange
channel = MockKernelProcessMessageChannel()
diff --git a/python/tests/unit/processes/local_runtime/test_local_kernel_process.py b/python/tests/unit/processes/local_runtime/test_local_kernel_process.py
index 5bb30e24c0bf..7dd0b3120b31 100644
--- a/python/tests/unit/processes/local_runtime/test_local_kernel_process.py
+++ b/python/tests/unit/processes/local_runtime/test_local_kernel_process.py
@@ -14,7 +14,6 @@
from semantic_kernel.processes.local_runtime.local_kernel_process_context import LocalKernelProcessContext
-@pytest.mark.asyncio
async def test_start_method():
# Arrange
state = MagicMock(spec=KernelProcessState)
@@ -44,7 +43,6 @@ async def test_start_method():
assert isinstance(result, LocalKernelProcessContext)
-@pytest.mark.asyncio
async def test_failed_start():
state = MagicMock(spec=KernelProcessState)
state.name = "startable_state"
diff --git a/python/tests/unit/processes/local_runtime/test_local_kernel_process_context.py b/python/tests/unit/processes/local_runtime/test_local_kernel_process_context.py
index 0677ee035bad..2f73faaf2741 100644
--- a/python/tests/unit/processes/local_runtime/test_local_kernel_process_context.py
+++ b/python/tests/unit/processes/local_runtime/test_local_kernel_process_context.py
@@ -29,7 +29,6 @@ def mock_process():
return process
-@pytest.mark.asyncio
async def test_initialization(mock_process, mock_kernel):
# Arrange
mock_process.state.id = "test_id"
@@ -41,7 +40,6 @@ async def test_initialization(mock_process, mock_kernel):
assert context.local_process is not None
-@pytest.mark.asyncio
async def test_initialization_with_missing_kernel_throws(mock_process):
# Arrange
mock_process.state.id = "test_id"
@@ -61,7 +59,6 @@ def test_initialization_raises_value_error_for_missing_process_state(mock_kernel
LocalKernelProcessContext(process=mock_process, kernel=mock_kernel)
-@pytest.mark.asyncio
async def test_start_with_event(mock_process, mock_kernel):
# Arrange
mock_process.state.id = "test_id"
@@ -77,7 +74,6 @@ async def test_start_with_event(mock_process, mock_kernel):
mock_run_once.assert_awaited_once_with(event)
-@pytest.mark.asyncio
async def test_send_event(mock_process, mock_kernel):
# Arrange
mock_process.state.id = "test_id"
@@ -93,7 +89,6 @@ async def test_send_event(mock_process, mock_kernel):
mock_send_message.assert_awaited_once_with(event)
-@pytest.mark.asyncio
async def test_stop(mock_process, mock_kernel):
# Arrange
mock_process.state.id = "test_id"
@@ -108,7 +103,6 @@ async def test_stop(mock_process, mock_kernel):
mock_stop.assert_awaited_once()
-@pytest.mark.asyncio
async def test_get_state(mock_process, mock_kernel):
# Arrange
mock_process.state.id = "test_id"
@@ -126,7 +120,6 @@ async def test_get_state(mock_process, mock_kernel):
mock_get_process_info.assert_awaited_once()
-@pytest.mark.asyncio
async def test_async_context_manager(mock_process, mock_kernel):
# Arrange
mock_process.state.id = "test_id"
diff --git a/python/tests/unit/processes/local_runtime/test_local_process.py b/python/tests/unit/processes/local_runtime/test_local_process.py
index de47189f9281..605f88255dd8 100644
--- a/python/tests/unit/processes/local_runtime/test_local_process.py
+++ b/python/tests/unit/processes/local_runtime/test_local_process.py
@@ -110,7 +110,6 @@ def test_ensure_initialized_already_done(mock_process, mock_kernel, build_model)
mock_initialize_process.assert_not_called()
-@pytest.mark.asyncio
async def test_start(mock_process, mock_kernel, build_model):
# Arrange
local_process = LocalProcess(process=mock_process, kernel=mock_kernel)
@@ -131,7 +130,6 @@ async def test_start(mock_process, mock_kernel, build_model):
assert isinstance(local_process.process_task, asyncio.Task)
-@pytest.mark.asyncio
async def test_run_once(mock_process, mock_kernel, build_model):
# Arrange
local_process = LocalProcess(process=mock_process, kernel=mock_kernel)
@@ -150,7 +148,6 @@ async def test_run_once(mock_process, mock_kernel, build_model):
assert isinstance(local_process.process_task, asyncio.Task)
-@pytest.mark.asyncio
async def test_stop_running_task(mock_process, mock_kernel, build_model):
# Arrange
local_process = LocalProcess(process=mock_process, kernel=mock_kernel)
@@ -163,7 +160,6 @@ async def test_stop_running_task(mock_process, mock_kernel, build_model):
assert local_process.process_task.cancelled()
-@pytest.mark.asyncio
async def test_stop_no_running_task(mock_process, mock_kernel, build_model):
# Arrange
local_process = LocalProcess(process=mock_process, kernel=mock_kernel)
@@ -176,7 +172,6 @@ async def test_stop_no_running_task(mock_process, mock_kernel, build_model):
assert local_process.process_task is None # No action should be taken
-@pytest.mark.asyncio
async def test_send_message(mock_process, mock_kernel, build_model):
# Arrange
local_process = LocalProcess(process=mock_process, kernel=mock_kernel)
@@ -190,7 +185,6 @@ async def test_send_message(mock_process, mock_kernel, build_model):
assert local_process.external_event_queue.get() == process_event
-@pytest.mark.asyncio
async def test_send_message_with_invalid_event(mock_process, mock_kernel, build_model):
# Arrange
local_process = LocalProcess(process=mock_process, kernel=mock_kernel)
@@ -200,7 +194,6 @@ async def test_send_message_with_invalid_event(mock_process, mock_kernel, build_
await local_process.send_message(None)
-@pytest.mark.asyncio
async def test_run_once_with_valid_event(mock_process, mock_kernel, build_model):
# Arrange
local_process = LocalProcess(process=mock_process, kernel=mock_kernel)
@@ -223,7 +216,6 @@ async def mock_coroutine():
assert local_process.process_task.done()
-@pytest.mark.asyncio
async def test_run_once_with_no_event_raises_exception(mock_process, mock_kernel, build_model):
# Arrange
local_process = LocalProcess(process=mock_process, kernel=mock_kernel)
@@ -233,7 +225,6 @@ async def test_run_once_with_no_event_raises_exception(mock_process, mock_kernel
await local_process.run_once(None)
-@pytest.mark.asyncio
async def test_run_once_without_process_task(mock_process, mock_kernel, build_model):
# Arrange
local_process = LocalProcess(process=mock_process, kernel=mock_kernel)
@@ -286,7 +277,6 @@ def test_initialize_process(mock_process, mock_kernel, build_model):
assert len(local_process.steps) == len(mock_process.steps)
-@pytest.mark.asyncio
async def test_handle_message_without_target_event_id(mock_process_with_output_edges, build_model):
# Arrange
local_process = mock_process_with_output_edges
@@ -301,7 +291,6 @@ async def test_handle_message_without_target_event_id(mock_process_with_output_e
assert "The target event id must be specified" in str(exc_info.value)
-@pytest.mark.asyncio
async def test_handle_message_with_valid_event_id(mock_process_with_output_edges, build_model):
# Arrange
local_process = mock_process_with_output_edges
diff --git a/python/tests/unit/prompt_template/test_handlebars_prompt_template.py b/python/tests/unit/prompt_template/test_handlebars_prompt_template.py
index 13468f6d35a0..2cce1ee1927e 100644
--- a/python/tests/unit/prompt_template/test_handlebars_prompt_template.py
+++ b/python/tests/unit/prompt_template/test_handlebars_prompt_template.py
@@ -62,7 +62,6 @@ def test_config_without_prompt():
assert template._template_compiler is None
-@mark.asyncio
async def test_render_without_prompt(kernel: Kernel):
config = PromptTemplateConfig(name="test", description="test", template_format="handlebars")
template = HandlebarsPromptTemplate(prompt_template_config=config)
@@ -70,7 +69,6 @@ async def test_render_without_prompt(kernel: Kernel):
assert rendered == ""
-@mark.asyncio
async def test_it_renders_variables(kernel: Kernel):
template = "Foo {{#if bar}}{{bar}}{{else}}No Bar{{/if}}"
target = create_handlebars_prompt_template(template, allow_dangerously_set_content=True)
@@ -82,7 +80,6 @@ async def test_it_renders_variables(kernel: Kernel):
assert rendered == "Foo No Bar"
-@mark.asyncio
async def test_it_renders_nested_variables(kernel: Kernel):
template = "{{foo.bar}}"
target = create_handlebars_prompt_template(template)
@@ -91,7 +88,6 @@ async def test_it_renders_nested_variables(kernel: Kernel):
assert rendered == "Foo Bar"
-@mark.asyncio
async def test_it_renders_with_comments(kernel: Kernel):
template = "{{! This comment will not show up in the output}}{{bar}}"
target = create_handlebars_prompt_template(template)
@@ -100,7 +96,6 @@ async def test_it_renders_with_comments(kernel: Kernel):
assert rendered == "Bar"
-@mark.asyncio
async def test_it_renders_fail(kernel: Kernel):
template = "{{ plug-func 'test1'}}"
target = create_handlebars_prompt_template(template)
@@ -108,7 +103,6 @@ async def test_it_renders_fail(kernel: Kernel):
await target.render(kernel, KernelArguments())
-@mark.asyncio
async def test_it_renders_list(kernel: Kernel):
template = "List: {{#each items}}{{this}}{{/each}}"
target = create_handlebars_prompt_template(template)
@@ -117,7 +111,6 @@ async def test_it_renders_list(kernel: Kernel):
assert rendered == "List: item1item2item3"
-@mark.asyncio
async def test_it_renders_kernel_functions_arg_from_template(kernel: Kernel, decorated_native_function):
kernel.add_function(plugin_name="plug", function=decorated_native_function)
template = "Function: {{plug-getLightStatus arg1='test'}}"
@@ -127,7 +120,6 @@ async def test_it_renders_kernel_functions_arg_from_template(kernel: Kernel, dec
assert rendered == "Function: test"
-@mark.asyncio
async def test_it_renders_kernel_functions_arg_from_arguments(kernel: Kernel, decorated_native_function):
kernel.add_function(plugin_name="plug", function=decorated_native_function)
template = "Function: {{plug-getLightStatus}}"
@@ -179,7 +171,6 @@ async def test_it_renders_kernel_functions_arg_from_arguments(kernel: Kernel, de
("snakeCase", "'TestString'", "test_string"),
],
)
-@mark.asyncio
async def test_helpers(function, input, expected, kernel: Kernel):
template = f"{{{{ {function} {input} }}}}"
target = create_handlebars_prompt_template(template)
@@ -188,7 +179,6 @@ async def test_helpers(function, input, expected, kernel: Kernel):
assert rendered == expected
-@mark.asyncio
async def test_helpers_set_get(kernel: Kernel):
template = """{{set name="arg" value="test"}}{{get 'arg'}} {{arg}}"""
target = create_handlebars_prompt_template(template)
@@ -197,7 +187,6 @@ async def test_helpers_set_get(kernel: Kernel):
assert rendered == "test test"
-@mark.asyncio
async def test_helpers_set_get_args(kernel: Kernel):
template = """{{set "arg" "test"}}{{get 'arg'}} {{arg}}"""
target = create_handlebars_prompt_template(template)
@@ -206,7 +195,6 @@ async def test_helpers_set_get_args(kernel: Kernel):
assert rendered == "test test"
-@mark.asyncio
async def test_helpers_empty_get(kernel: Kernel):
template = """{{get}}"""
target = create_handlebars_prompt_template(template)
@@ -215,7 +203,6 @@ async def test_helpers_empty_get(kernel: Kernel):
assert rendered == ""
-@mark.asyncio
async def test_helpers_set_get_from_kernel_arguments(kernel: Kernel):
template = """{{set name="arg" value=(get 'arg1') }}{{get 'arg'}} {{arg}} {{arg1}}"""
target = create_handlebars_prompt_template(template)
@@ -224,7 +211,6 @@ async def test_helpers_set_get_from_kernel_arguments(kernel: Kernel):
assert rendered == "test test test"
-@mark.asyncio
async def test_helpers_array_from_args(kernel: Kernel):
template = """{{array arg1 arg2 arg3}}"""
target = create_handlebars_prompt_template(template)
@@ -233,7 +219,6 @@ async def test_helpers_array_from_args(kernel: Kernel):
assert rendered == "['test1', 'test2', 'test3']"
-@mark.asyncio
async def test_helpers_double_open_close(kernel: Kernel):
template = "{{double_open}}{{double_close}}"
target = create_handlebars_prompt_template(template)
@@ -242,7 +227,6 @@ async def test_helpers_double_open_close(kernel: Kernel):
assert rendered == "{{}}"
-@mark.asyncio
async def test_helpers_json(kernel: Kernel):
template = "{{json input_json}}"
target = create_handlebars_prompt_template(template)
@@ -251,7 +235,6 @@ async def test_helpers_json(kernel: Kernel):
assert rendered == '{"key": "value"}'
-@mark.asyncio
async def test_helpers_json_empty(kernel: Kernel):
template = "{{json}}"
target = create_handlebars_prompt_template(template)
@@ -260,7 +243,6 @@ async def test_helpers_json_empty(kernel: Kernel):
assert rendered == ""
-@mark.asyncio
async def test_helpers_message(kernel: Kernel):
template = """
{{#each chat_history}}
@@ -279,7 +261,6 @@ async def test_helpers_message(kernel: Kernel):
assert "Assistant message" in rendered
-@mark.asyncio
async def test_helpers_message_to_prompt(kernel: Kernel):
template = """{{#each chat_history}}{{message_to_prompt}} {{/each}}"""
target = create_handlebars_prompt_template(template)
@@ -303,7 +284,6 @@ async def test_helpers_message_to_prompt(kernel: Kernel):
assert "Tool message" in rendered
-@mark.asyncio
async def test_helpers_message_to_prompt_other(kernel: Kernel):
template = """{{#each other_list}}{{message_to_prompt}} {{/each}}"""
target = create_handlebars_prompt_template(template)
@@ -312,7 +292,6 @@ async def test_helpers_message_to_prompt_other(kernel: Kernel):
assert rendered.strip() == """test1 test2"""
-@mark.asyncio
async def test_helpers_messageToPrompt_other(kernel: Kernel):
template = """{{#each other_list}}{{messageToPrompt}} {{/each}}"""
target = create_handlebars_prompt_template(template)
@@ -321,7 +300,6 @@ async def test_helpers_messageToPrompt_other(kernel: Kernel):
assert rendered.strip() == """test1 test2"""
-@mark.asyncio
async def test_helpers_unless(kernel: Kernel):
template = """{{#unless test}}test2{{/unless}}"""
target = create_handlebars_prompt_template(template)
@@ -329,7 +307,6 @@ async def test_helpers_unless(kernel: Kernel):
assert rendered.strip() == """test2"""
-@mark.asyncio
async def test_helpers_with(kernel: Kernel):
template = """{{#with test}}{{test1}}{{/with}}"""
target = create_handlebars_prompt_template(template)
@@ -337,7 +314,6 @@ async def test_helpers_with(kernel: Kernel):
assert rendered.strip() == """test2"""
-@mark.asyncio
async def test_helpers_lookup(kernel: Kernel):
template = """{{lookup test 'test1'}}"""
target = create_handlebars_prompt_template(template)
@@ -345,7 +321,6 @@ async def test_helpers_lookup(kernel: Kernel):
assert rendered.strip() == """test2"""
-@mark.asyncio
async def test_helpers_chat_history_messages(kernel: Kernel):
template = """{{messages chat_history}}"""
target = create_handlebars_prompt_template(template)
@@ -359,7 +334,6 @@ async def test_helpers_chat_history_messages(kernel: Kernel):
)
-@mark.asyncio
async def test_helpers_chat_history_not_chat_history(kernel: Kernel):
template = """{{messages chat_history}}"""
target = create_handlebars_prompt_template(template)
diff --git a/python/tests/unit/prompt_template/test_handlebars_prompt_template_e2e.py b/python/tests/unit/prompt_template/test_handlebars_prompt_template_e2e.py
index 75c4eaf0258b..5c77625b85e2 100644
--- a/python/tests/unit/prompt_template/test_handlebars_prompt_template_e2e.py
+++ b/python/tests/unit/prompt_template/test_handlebars_prompt_template_e2e.py
@@ -1,8 +1,6 @@
# Copyright (c) Microsoft. All rights reserved.
-from pytest import mark
-
from semantic_kernel import Kernel
from semantic_kernel.contents.chat_history import ChatHistory
from semantic_kernel.functions import kernel_function
@@ -31,7 +29,6 @@ def asis(self, input: str | None = None) -> str:
class TestHandlebarsPromptTemplateEngine:
- @mark.asyncio
async def test_it_supports_variables(self, kernel: Kernel):
# Arrange
input = "template tests"
@@ -45,7 +42,6 @@ async def test_it_supports_variables(self, kernel: Kernel):
expected = template.replace("{{input}}", input).replace("{{ winner }}", winner)
assert expected == result
- @mark.asyncio
async def test_it_allows_to_pass_variables_to_functions(self, kernel: Kernel):
# Arrange
template = "== {{my-check123 input=call}} =="
@@ -58,7 +54,6 @@ async def test_it_allows_to_pass_variables_to_functions(self, kernel: Kernel):
# Assert
assert result == "== 123 ok =="
- @mark.asyncio
async def test_it_allows_to_pass_values_to_functions(self, kernel: Kernel):
# Arrange
template = "== {{my-check123 input=234}} =="
@@ -70,7 +65,6 @@ async def test_it_allows_to_pass_values_to_functions(self, kernel: Kernel):
# Assert
assert result == "== 234 != 123 =="
- @mark.asyncio
async def test_it_allows_to_pass_escaped_values1_to_functions(self, kernel: Kernel):
# Arrange
template = "== {{my-check123 input='a\\'b'}} =="
@@ -81,7 +75,6 @@ async def test_it_allows_to_pass_escaped_values1_to_functions(self, kernel: Kern
# Assert
assert result == "== a'b != 123 =="
- @mark.asyncio
async def test_it_allows_to_pass_escaped_values2_to_functions(self, kernel: Kernel):
# Arrange
template = '== {{my-check123 input="a\\"b"}} =='
@@ -93,7 +86,6 @@ async def test_it_allows_to_pass_escaped_values2_to_functions(self, kernel: Kern
# Assert
assert result == '== a"b != 123 =='
- @mark.asyncio
async def test_chat_history_round_trip(self, kernel: Kernel):
# Arrange
template = """{{#each chat_history}}{{#message role=role}}{{~content~}}{{/message}} {{/each}}"""
diff --git a/python/tests/unit/prompt_template/test_jinja2_prompt_template.py b/python/tests/unit/prompt_template/test_jinja2_prompt_template.py
index cb5a3a34e86e..3b60b362a403 100644
--- a/python/tests/unit/prompt_template/test_jinja2_prompt_template.py
+++ b/python/tests/unit/prompt_template/test_jinja2_prompt_template.py
@@ -47,7 +47,6 @@ def test_config_without_prompt():
assert template._env is None
-@pytest.mark.asyncio
async def test_render_without_prompt(kernel: Kernel):
config = PromptTemplateConfig(name="test", description="test", template_format="jinja2")
template = Jinja2PromptTemplate(prompt_template_config=config)
@@ -55,7 +54,6 @@ async def test_render_without_prompt(kernel: Kernel):
assert rendered == ""
-@pytest.mark.asyncio
async def test_it_renders_variables(kernel: Kernel):
template = "Foo {% if bar %}{{ bar }}{% else %}No Bar{% endif %}"
target = create_jinja2_prompt_template(template)
@@ -67,7 +65,6 @@ async def test_it_renders_variables(kernel: Kernel):
assert rendered == "Foo No Bar"
-@pytest.mark.asyncio
async def test_it_renders_nested_variables(kernel: Kernel):
template = "{{ foo.bar }}"
target = create_jinja2_prompt_template(template)
@@ -76,7 +73,6 @@ async def test_it_renders_nested_variables(kernel: Kernel):
assert rendered == "Foo Bar"
-@pytest.mark.asyncio
async def test_it_renders_with_comments(kernel: Kernel):
template = "{# This comment will not show up in the output #}{{ bar }}"
target = create_jinja2_prompt_template(template)
@@ -85,7 +81,6 @@ async def test_it_renders_with_comments(kernel: Kernel):
assert rendered == "Bar"
-@pytest.mark.asyncio
async def test_it_renders_fail(kernel: Kernel):
template = "{{ plug-func 'test1'}}"
target = create_jinja2_prompt_template(template)
@@ -93,7 +88,6 @@ async def test_it_renders_fail(kernel: Kernel):
await target.render(kernel, KernelArguments())
-@pytest.mark.asyncio
async def test_it_renders_fail_empty_template(kernel: Kernel):
template = "{{ plug-func 'test1'}}"
target = create_jinja2_prompt_template(template)
@@ -102,7 +96,6 @@ async def test_it_renders_fail_empty_template(kernel: Kernel):
await target.render(kernel, KernelArguments())
-@pytest.mark.asyncio
async def test_it_renders_list(kernel: Kernel):
template = "List: {% for item in items %}{{ item }}{% endfor %}"
target = create_jinja2_prompt_template(template)
@@ -111,7 +104,6 @@ async def test_it_renders_list(kernel: Kernel):
assert rendered == "List: item1item2item3"
-@pytest.mark.asyncio
async def test_it_renders_kernel_functions_arg_from_template(kernel: Kernel, decorated_native_function):
kernel.add_function(plugin_name="plug", function=decorated_native_function)
template = "Function: {{ plug_getLightStatus(arg1='test') }}"
@@ -121,7 +113,6 @@ async def test_it_renders_kernel_functions_arg_from_template(kernel: Kernel, dec
assert rendered == "Function: test"
-@pytest.mark.asyncio
async def test_it_renders_kernel_functions_arg_from_arguments(kernel: Kernel, decorated_native_function):
kernel.add_function(plugin_name="plug", function=decorated_native_function)
template = "Function: {{ plug_getLightStatus() }}"
@@ -141,7 +132,6 @@ async def test_it_renders_kernel_functions_arg_from_arguments(kernel: Kernel, de
("snakeCase", "'TestString'", "test_string"),
],
)
-@mark.asyncio
async def test_helpers(function, input, expected, kernel: Kernel):
template = f"{{{{ {function}({input}) }}}}"
target = create_jinja2_prompt_template(template)
@@ -165,7 +155,6 @@ async def test_helpers(function, input, expected, kernel: Kernel):
("not in", "'test', 'test'", "False"),
],
)
-@pytest.mark.asyncio
async def test_builtin_test_filters(function, input, expected, kernel: Kernel):
input_values = input.split(", ")
template = f"""
@@ -190,7 +179,6 @@ async def test_builtin_test_filters(function, input, expected, kernel: Kernel):
("0, 5, 2", "[0, 2, 4]"),
],
)
-@mark.asyncio
async def test_range_function(input, expected, kernel: Kernel):
template = f"{{{{ range({input}) | list }}}}"
target = create_jinja2_prompt_template(template)
@@ -199,7 +187,6 @@ async def test_range_function(input, expected, kernel: Kernel):
assert rendered == expected
-@mark.asyncio
async def test_helpers_set_get(kernel: Kernel):
template = """{% set arg = 'test' %}{{ arg }} {{ arg }}"""
target = create_jinja2_prompt_template(template)
@@ -208,7 +195,6 @@ async def test_helpers_set_get(kernel: Kernel):
assert rendered == "test test"
-@mark.asyncio
async def test_helpers_empty_get(kernel: Kernel):
template = """{{get(default='test')}}"""
target = create_jinja2_prompt_template(template)
@@ -217,7 +203,6 @@ async def test_helpers_empty_get(kernel: Kernel):
assert rendered == "test"
-@mark.asyncio
async def test_helpers_get(kernel: Kernel):
template = """{{get(context=args, name='arg', default='fail')}}"""
target = create_jinja2_prompt_template(template)
@@ -226,7 +211,6 @@ async def test_helpers_get(kernel: Kernel):
assert rendered == "test"
-@mark.asyncio
async def test_helpers_set_get_from_kernel_arguments(kernel: Kernel):
template = """{% set arg = arg1 %}{{ arg }} {{ arg }} {{ arg1 }}"""
target = create_jinja2_prompt_template(template)
@@ -235,7 +219,6 @@ async def test_helpers_set_get_from_kernel_arguments(kernel: Kernel):
assert rendered == "test test test"
-@mark.asyncio
async def test_helpers_array_from_args(kernel: Kernel):
template = """{{array(arg1, arg2, arg3)}}"""
target = create_jinja2_prompt_template(template)
@@ -244,7 +227,6 @@ async def test_helpers_array_from_args(kernel: Kernel):
assert rendered == "['test1', 'test2', 'test3']"
-@mark.asyncio
async def test_helpers_double_open_close_style_one(kernel: Kernel):
template = "{{ '{{' }}{{ '}}' }}"
target = create_jinja2_prompt_template(template)
@@ -253,7 +235,6 @@ async def test_helpers_double_open_close_style_one(kernel: Kernel):
assert rendered == "{{}}"
-@mark.asyncio
async def test_helpers_double_open_close_style_two(kernel: Kernel):
template = """{{double_open()}}{{double_close()}}"""
target = create_jinja2_prompt_template(template)
@@ -262,7 +243,6 @@ async def test_helpers_double_open_close_style_two(kernel: Kernel):
assert rendered == "{{}}"
-@mark.asyncio
async def test_helpers_json_style_two(kernel: Kernel):
template = "{{input_json | tojson}}"
target = create_jinja2_prompt_template(template)
@@ -271,7 +251,6 @@ async def test_helpers_json_style_two(kernel: Kernel):
assert rendered == '{"key": "value"}'
-@mark.asyncio
async def test_helpers_message(kernel: Kernel):
template = """{% for item in chat_history %}{{ message(item) }}{% endfor %}"""
target = create_jinja2_prompt_template(template)
@@ -284,7 +263,6 @@ async def test_helpers_message(kernel: Kernel):
assert "Assistant message" in rendered
-@mark.asyncio
async def test_helpers_message_to_prompt(kernel: Kernel):
template = """
{% for chat in chat_history %}
@@ -311,7 +289,6 @@ async def test_helpers_message_to_prompt(kernel: Kernel):
assert "Tool message" in rendered
-@mark.asyncio
async def test_helpers_message_to_prompt_other(kernel: Kernel):
# NOTE: The template contains an example of how to strip new lines and whitespaces, if needed
template = """
@@ -325,7 +302,6 @@ async def test_helpers_message_to_prompt_other(kernel: Kernel):
assert rendered.strip() == """test1 test2"""
-@mark.asyncio
async def test_helpers_messageToPrompt_other(kernel: Kernel):
template = """
{% for item in other_list -%}
@@ -338,7 +314,6 @@ async def test_helpers_messageToPrompt_other(kernel: Kernel):
assert rendered.strip() == """test1 test2"""
-@mark.asyncio
async def test_helpers_chat_history_messages(kernel: Kernel):
template = """{{ messages(chat_history) }}"""
target = create_jinja2_prompt_template(template)
@@ -352,7 +327,6 @@ async def test_helpers_chat_history_messages(kernel: Kernel):
)
-@mark.asyncio
async def test_helpers_chat_history_messages_non(kernel: Kernel):
template = """{{ messages(chat_history) }}"""
target = create_jinja2_prompt_template(template)
diff --git a/python/tests/unit/prompt_template/test_jinja2_prompt_template_e2e.py b/python/tests/unit/prompt_template/test_jinja2_prompt_template_e2e.py
index c4fd18bfc2a7..9e057b706d70 100644
--- a/python/tests/unit/prompt_template/test_jinja2_prompt_template_e2e.py
+++ b/python/tests/unit/prompt_template/test_jinja2_prompt_template_e2e.py
@@ -1,8 +1,6 @@
# Copyright (c) Microsoft. All rights reserved.
-from pytest import mark
-
from semantic_kernel.contents.chat_history import ChatHistory
from semantic_kernel.functions import kernel_function
from semantic_kernel.functions.kernel_arguments import KernelArguments
@@ -31,7 +29,6 @@ def asis(self, input: str | None = None) -> str:
return input or ""
-@mark.asyncio
async def test_it_supports_variables(kernel: Kernel):
# Arrange
input = "template tests"
@@ -46,7 +43,6 @@ async def test_it_supports_variables(kernel: Kernel):
assert expected == result
-@mark.asyncio
async def test_it_allows_to_pass_variables_to_functions(kernel: Kernel):
# Arrange
template = "== {{ my_check123() }} =="
@@ -60,7 +56,6 @@ async def test_it_allows_to_pass_variables_to_functions(kernel: Kernel):
assert result == "== 123 ok =="
-@mark.asyncio
async def test_it_allows_to_pass_values_to_functions(kernel: Kernel):
# Arrange
template = "== {{ my_check123(input=234) }} =="
@@ -73,7 +68,6 @@ async def test_it_allows_to_pass_values_to_functions(kernel: Kernel):
assert result == "== 234 != 123 =="
-@mark.asyncio
async def test_it_allows_to_pass_escaped_values1_to_functions(kernel: Kernel):
# Arrange
template = """== {{ my_check123(input="a'b") }} =="""
@@ -85,7 +79,6 @@ async def test_it_allows_to_pass_escaped_values1_to_functions(kernel: Kernel):
assert result == "== a'b != 123 =="
-@mark.asyncio
async def test_it_allows_to_pass_escaped_values2_to_functions(kernel: Kernel):
# Arrange
template = '== {{my_check123(input="a\\"b")}} =='
@@ -98,7 +91,6 @@ async def test_it_allows_to_pass_escaped_values2_to_functions(kernel: Kernel):
assert result == '== a"b != 123 =='
-@mark.asyncio
async def test_chat_history_round_trip(kernel: Kernel):
template = """{% for item in chat_history %}{{ message(item) }}{% endfor %}"""
target = create_jinja2_prompt_template(template)
diff --git a/python/tests/unit/prompt_template/test_kernel_prompt_template.py b/python/tests/unit/prompt_template/test_kernel_prompt_template.py
index ad8541a38c2e..6d8b1a1b2bf0 100644
--- a/python/tests/unit/prompt_template/test_kernel_prompt_template.py
+++ b/python/tests/unit/prompt_template/test_kernel_prompt_template.py
@@ -62,7 +62,6 @@ def test_extract_from_empty():
assert len(blocks) == 0
-@pytest.mark.asyncio
async def test_it_renders_code_using_input(kernel: Kernel):
arguments = KernelArguments()
@@ -82,7 +81,6 @@ def my_function(arguments: KernelArguments) -> str:
assert result == "foo-F(INPUT-BAR)-baz"
-@pytest.mark.asyncio
async def test_it_renders_code_using_variables(kernel: Kernel):
arguments = KernelArguments()
@@ -102,7 +100,6 @@ def my_function(myVar: str) -> str:
assert result == "foo-F(BAR)-baz"
-@pytest.mark.asyncio
async def test_it_renders_code_using_variables_async(kernel: Kernel):
arguments = KernelArguments()
@@ -124,7 +121,6 @@ async def my_function(myVar: str) -> str:
assert result == "foo-BAR-baz"
-@pytest.mark.asyncio
async def test_it_renders_code_error(kernel: Kernel):
arguments = KernelArguments()
diff --git a/python/tests/unit/prompt_template/test_prompt_template_e2e.py b/python/tests/unit/prompt_template/test_prompt_template_e2e.py
index a145b29cbc04..fc3a34917597 100644
--- a/python/tests/unit/prompt_template/test_prompt_template_e2e.py
+++ b/python/tests/unit/prompt_template/test_prompt_template_e2e.py
@@ -51,7 +51,6 @@ def asis(self, input: str | None = None) -> str:
return input or ""
-@mark.asyncio
async def test_it_supports_variables(kernel: Kernel):
# Arrange
input = "template tests"
@@ -69,7 +68,6 @@ async def test_it_supports_variables(kernel: Kernel):
assert expected == result
-@mark.asyncio
async def test_it_supports_values(kernel: Kernel):
# Arrange
template = "And the winner\n of {{'template\ntests'}} \nis: {{ \"SK\" }}!"
@@ -86,7 +84,6 @@ async def test_it_supports_values(kernel: Kernel):
assert expected == result
-@mark.asyncio
async def test_it_allows_to_pass_variables_to_functions(kernel: Kernel):
# Arrange
template = "== {{my.check123 $call}} =="
@@ -104,7 +101,6 @@ async def test_it_allows_to_pass_variables_to_functions(kernel: Kernel):
assert result == "== 123 ok =="
-@mark.asyncio
async def test_it_allows_to_pass_values_to_functions(kernel: Kernel):
# Arrange
template = "== {{my.check123 '234'}} =="
@@ -121,7 +117,6 @@ async def test_it_allows_to_pass_values_to_functions(kernel: Kernel):
assert result == "== 234 != 123 =="
-@mark.asyncio
async def test_it_allows_to_pass_escaped_values1_to_functions(kernel: Kernel):
# Arrange
template = "== {{my.check123 'a\\'b'}} =="
@@ -137,7 +132,6 @@ async def test_it_allows_to_pass_escaped_values1_to_functions(kernel: Kernel):
assert result == "== a'b != 123 =="
-@mark.asyncio
async def test_it_allows_to_pass_escaped_values2_to_functions(kernel: Kernel):
# Arrange
template = '== {{my.check123 "a\\"b"}} =='
@@ -154,7 +148,6 @@ async def test_it_allows_to_pass_escaped_values2_to_functions(kernel: Kernel):
assert result == '== a"b != 123 =='
-@mark.asyncio
async def test_does_not_render_message_tags(kernel: Kernel):
system_message = "This is the system message"
user_message = 'First user message'
@@ -184,7 +177,6 @@ async def test_does_not_render_message_tags(kernel: Kernel):
assert expected == result
-@mark.asyncio
async def test_renders_message_tag(kernel: Kernel):
system_message = "This is the system message"
user_message = "First user message"
@@ -222,7 +214,6 @@ async def test_renders_message_tag(kernel: Kernel):
assert expected == result
-@mark.asyncio
async def test_renders_and_disallows_message_injection(kernel: Kernel):
unsafe_input = "This is the newer system message"
safe_input = "This is bold text"
@@ -248,7 +239,6 @@ async def test_renders_and_disallows_message_injection(kernel: Kernel):
assert expected == result
-@mark.asyncio
async def test_renders_and_disallows_message_injection_from_specific_input(kernel: Kernel):
system_message = "This is the system message"
unsafe_input = "This is the newer system message"
@@ -278,7 +268,6 @@ async def test_renders_and_disallows_message_injection_from_specific_input(kerne
assert expected == result
-@mark.asyncio
async def test_renders_message_tags_in_cdata_sections(kernel: Kernel):
unsafe_input1 = "This is the newer system message"
unsafe_input2 = "explain imagehttps://fake-link-to-image/"
@@ -304,7 +293,6 @@ async def test_renders_message_tags_in_cdata_sections(kernel: Kernel):
assert expected == result
-@mark.asyncio
async def test_renders_unsafe_message_tags_in_cdata_sections(kernel: Kernel):
unsafe_input1 = "This is the newer system message"
unsafe_input2 = "explain imagehttps://fake-link-to-image/"
@@ -337,7 +325,6 @@ async def test_renders_unsafe_message_tags_in_cdata_sections(kernel: Kernel):
assert expected == result
-@mark.asyncio
async def test_renders_and_can_be_parsed(kernel: Kernel):
unsafe_input = "This is the newer system message"
safe_input = "This is bold text"
@@ -371,7 +358,6 @@ async def test_renders_and_can_be_parsed(kernel: Kernel):
assert chat_history.messages[3].content == "This is the newest system message"
-@mark.asyncio
async def test_renders_and_can_be_parsed_with_cdata_sections(kernel: Kernel):
unsafe_input1 = "This is the newer system message"
unsafe_input2 = "explain imagehttps://fake-link-to-image/"
@@ -409,7 +395,6 @@ async def test_renders_and_can_be_parsed_with_cdata_sections(kernel: Kernel):
)
-@mark.asyncio
async def test_input_variable_with_code():
unsafe_input = """
```csharp
@@ -439,7 +424,6 @@ async def test_input_variable_with_code():
assert chat_history.messages[1].content == unsafe_input
-@mark.asyncio
async def test_renders_content_with_code(kernel: Kernel):
content = """
```csharp
@@ -477,7 +461,6 @@ async def test_renders_content_with_code(kernel: Kernel):
assert chat_history.messages[1].content == content
-@mark.asyncio
async def test_trusts_all_templates(kernel: Kernel):
system_message = "This is the system message"
unsafe_input = "This is my first messageThis is my second message"
@@ -506,7 +489,6 @@ async def test_trusts_all_templates(kernel: Kernel):
assert expected == result
-@mark.asyncio
async def test_handles_double_encoded_content_in_template(kernel: Kernel):
unsafe_input = "This is my first messageThis is my second message"
template = """
@@ -523,7 +505,6 @@ async def test_handles_double_encoded_content_in_template(kernel: Kernel):
assert expected == result
-@mark.asyncio
@mark.parametrize("template,expected_result", [(t, r) for t, r in _get_template_language_tests(safe=False)])
async def test_it_handle_edge_cases_unsafe(kernel: Kernel, template: str, expected_result: str):
# Arrange
@@ -546,7 +527,6 @@ async def test_it_handle_edge_cases_unsafe(kernel: Kernel, template: str, expect
assert expected_result == result
-@mark.asyncio
@mark.parametrize("template,expected_result", [(t, r) for t, r in _get_template_language_tests(safe=True)])
async def test_it_handle_edge_cases_safe(kernel: Kernel, template: str, expected_result: str):
# Arrange
diff --git a/python/tests/unit/prompt_template/test_template_helper.py b/python/tests/unit/prompt_template/test_template_helper.py
index bb13f5be7430..303ccffdae7a 100644
--- a/python/tests/unit/prompt_template/test_template_helper.py
+++ b/python/tests/unit/prompt_template/test_template_helper.py
@@ -37,7 +37,6 @@ def test_create_helpers(kernel: Kernel):
("semantic-kernel", True, True),
],
)
-@pytest.mark.asyncio
async def test_create_helpers_fail(kernel: Kernel, template_format: str, enable_async: bool, exception: bool):
# Arrange
function = KernelFunctionFromMethod(kernel_function(lambda x: x + 1, name="test"), plugin_name="test")
diff --git a/python/tests/unit/template_engine/blocks/test_code_block.py b/python/tests/unit/template_engine/blocks/test_code_block.py
index 78d65a7cc377..32d5df077686 100644
--- a/python/tests/unit/template_engine/blocks/test_code_block.py
+++ b/python/tests/unit/template_engine/blocks/test_code_block.py
@@ -36,7 +36,6 @@ def test_init():
class TestCodeBlockRendering:
- @mark.asyncio
async def test_it_throws_if_a_plugins_are_empty(self, kernel: Kernel):
target = CodeBlock(
content="functionName",
@@ -45,7 +44,6 @@ async def test_it_throws_if_a_plugins_are_empty(self, kernel: Kernel):
with raises(CodeBlockRenderException, match="Function `functionName` not found"):
await target.render_code(kernel, KernelArguments())
- @mark.asyncio
async def test_it_throws_if_a_function_doesnt_exist(self, kernel: Kernel):
target = CodeBlock(
content="functionName",
@@ -55,7 +53,6 @@ async def test_it_throws_if_a_function_doesnt_exist(self, kernel: Kernel):
with raises(CodeBlockRenderException, match="Function `functionName` not found"):
await target.render_code(kernel, KernelArguments())
- @mark.asyncio
async def test_it_throws_if_a_function_call_throws(self, kernel: Kernel):
@kernel_function(name="funcName")
def invoke():
@@ -75,7 +72,6 @@ def invoke():
with raises(CodeBlockRenderException, match="test.funcName"):
await target.render_code(kernel, KernelArguments())
- @mark.asyncio
async def test_it_renders_code_block_consisting_of_just_a_var_block1(self, kernel: Kernel):
code_block = CodeBlock(
content="$var",
@@ -84,7 +80,6 @@ async def test_it_renders_code_block_consisting_of_just_a_var_block1(self, kerne
assert result == "foo"
- @mark.asyncio
async def test_it_renders_code_block_consisting_of_just_a_val_block1(self, kernel: Kernel):
code_block = CodeBlock(
content="'ciao'",
@@ -93,7 +88,6 @@ async def test_it_renders_code_block_consisting_of_just_a_val_block1(self, kerne
assert result == "ciao"
- @mark.asyncio
async def test_it_invokes_function_cloning_all_variables(self, kernel: Kernel):
# Set up initial context variables
arguments = KernelArguments(input="zero", var1="uno", var2="due")
@@ -142,7 +136,6 @@ def invoke(arguments: KernelArguments):
assert arguments["var1"] == "uno"
assert arguments["var2"] == "due"
- @mark.asyncio
async def test_it_invokes_function_with_custom_variable(self, kernel: Kernel):
# Define custom variable name and value
VAR_NAME = "varName"
@@ -188,7 +181,6 @@ def invoke(arguments: "KernelArguments"):
# Check that the canary value matches the custom variable value
assert canary == VAR_VALUE
- @mark.asyncio
async def test_it_invokes_function_with_custom_value(self, kernel: Kernel):
# Define a value to be used in the test
VALUE = "value"
@@ -228,7 +220,6 @@ def invoke(arguments):
# Check that the canary value matches the value
assert canary == VALUE
- @mark.asyncio
async def test_it_invokes_function_with_multiple_arguments(self, kernel: Kernel):
# Define a value to be used in the test
VALUE = "value"
@@ -269,7 +260,6 @@ def invoke(input, arg1, arg2):
# Check that the canary value matches the value
assert canary == f"{VALUE} arg1 arg2"
- @mark.asyncio
async def test_it_invokes_function_with_only_named_arguments(self, kernel: Kernel):
code_block = CodeBlock(
content=" ",
@@ -306,7 +296,6 @@ def invoke(arg1, arg2):
# Check that the canary value matches the value
assert canary == "arg1 arg2"
- @mark.asyncio
async def test_it_fails_on_function_without_args(self, kernel: Kernel):
code_block = CodeBlock(
content=" ",
diff --git a/python/tests/unit/text/test_function_extension.py b/python/tests/unit/text/test_function_extension.py
index 05667fe85dca..7969d08d2f78 100644
--- a/python/tests/unit/text/test_function_extension.py
+++ b/python/tests/unit/text/test_function_extension.py
@@ -1,6 +1,5 @@
# Copyright (c) Microsoft. All rights reserved.
-import pytest
from semantic_kernel import Kernel
from semantic_kernel.functions.function_result import FunctionResult
@@ -10,7 +9,6 @@
from semantic_kernel.text import aggregate_chunked_results
-@pytest.mark.asyncio
async def test_aggregate_results():
kernel = Kernel()
diff --git a/python/tests/unit/utils/model_diagnostics/test_trace_chat_completion.py b/python/tests/unit/utils/model_diagnostics/test_trace_chat_completion.py
index 4b14c1c92156..4d03fd3543c3 100644
--- a/python/tests/unit/utils/model_diagnostics/test_trace_chat_completion.py
+++ b/python/tests/unit/utils/model_diagnostics/test_trace_chat_completion.py
@@ -80,7 +80,6 @@
)
-@pytest.mark.asyncio
@patch("opentelemetry.trace.INVALID_SPAN") # When no tracer provider is available, the span will be an INVALID_SPAN
async def test_trace_chat_completion(
mock_span,
@@ -146,7 +145,6 @@ async def test_trace_chat_completion(
)
-@pytest.mark.asyncio
@patch("opentelemetry.trace.INVALID_SPAN") # When no tracer provider is available, the span will be an INVALID_SPAN
async def test_trace_chat_completion_exception(
mock_span,
diff --git a/python/tests/unit/utils/model_diagnostics/test_trace_streaming_chat_completion.py b/python/tests/unit/utils/model_diagnostics/test_trace_streaming_chat_completion.py
index 911cd622cf9e..486a7df4b115 100644
--- a/python/tests/unit/utils/model_diagnostics/test_trace_streaming_chat_completion.py
+++ b/python/tests/unit/utils/model_diagnostics/test_trace_streaming_chat_completion.py
@@ -86,7 +86,6 @@
)
-@pytest.mark.asyncio
@patch("opentelemetry.trace.INVALID_SPAN") # When no tracer provider is available, the span will be an INVALID_SPAN
async def test_trace_streaming_chat_completion(
mock_span,
@@ -157,7 +156,6 @@ async def test_trace_streaming_chat_completion(
)
-@pytest.mark.asyncio
@patch("opentelemetry.trace.INVALID_SPAN") # When no tracer provider is available, the span will be an INVALID_SPAN
async def test_trace_streaming_chat_completion_exception(
mock_span,
diff --git a/python/tests/unit/utils/model_diagnostics/test_trace_streaming_text_completion.py b/python/tests/unit/utils/model_diagnostics/test_trace_streaming_text_completion.py
index 2a5fefc73e6b..54321cc16d2d 100644
--- a/python/tests/unit/utils/model_diagnostics/test_trace_streaming_text_completion.py
+++ b/python/tests/unit/utils/model_diagnostics/test_trace_streaming_text_completion.py
@@ -68,7 +68,6 @@
)
-@pytest.mark.asyncio
@patch("opentelemetry.trace.INVALID_SPAN") # When no tracer provider is available, the span will be an INVALID_SPAN
async def test_trace_streaming_text_completion(
mock_span,
@@ -133,7 +132,6 @@ async def test_trace_streaming_text_completion(
)
-@pytest.mark.asyncio
@patch("opentelemetry.trace.INVALID_SPAN") # When no tracer provider is available, the span will be an INVALID_SPAN
async def test_trace_streaming_text_completion_exception(
mock_span,
diff --git a/python/tests/unit/utils/model_diagnostics/test_trace_text_completion.py b/python/tests/unit/utils/model_diagnostics/test_trace_text_completion.py
index fe6d30f25830..cf7160d5c31c 100644
--- a/python/tests/unit/utils/model_diagnostics/test_trace_text_completion.py
+++ b/python/tests/unit/utils/model_diagnostics/test_trace_text_completion.py
@@ -64,7 +64,6 @@
)
-@pytest.mark.asyncio
@patch("opentelemetry.trace.INVALID_SPAN") # When no tracer provider is available, the span will be an INVALID_SPAN
async def test_trace_text_completion(
mock_span,
@@ -126,7 +125,6 @@ async def test_trace_text_completion(
)
-@pytest.mark.asyncio
@patch("opentelemetry.trace.INVALID_SPAN") # When no tracer provider is available, the span will be an INVALID_SPAN
async def test_trace_text_completion_exception(
mock_span,
diff --git a/python/tests/utils.py b/python/tests/utils.py
index 62b0456f676a..fc27ce6e1a31 100644
--- a/python/tests/utils.py
+++ b/python/tests/utils.py
@@ -31,7 +31,7 @@ async def retry(
reset()
return await func()
except Exception as e:
- logger.info(f" On try {i + 1} got this error: {e}")
+ logger.warning(f" On try {i + 1} got this error: {e}")
if i == retries - 1: # Last retry
raise
# Binary exponential backoff
@@ -62,7 +62,7 @@ def is_service_setup_for_testing(env_var_names: list[str], raise_if_not_set: boo
raise_if_not_set = os.getenv("INTEGRATION_TEST_SERVICE_SETUP_EXCEPTION", "false").lower() == "true"
def does_env_var_exist(env_var_name):
- exist = env_var_name in os.environ and os.environ[env_var_name]
+ exist = os.getenv(env_var_name, False)
if not exist and raise_if_not_set:
raise KeyError(f"Environment variable {env_var_name} is not set.")
return exist
diff --git a/python/uv.lock b/python/uv.lock
index 09f00bbd2ec1..471f32675a40 100644
--- a/python/uv.lock
+++ b/python/uv.lock
@@ -22,7 +22,7 @@ supported-markers = [
[[package]]
name = "accelerate"
-version = "1.1.1"
+version = "1.2.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "huggingface-hub", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
@@ -33,23 +33,23 @@ dependencies = [
{ name = "safetensors", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "torch", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/51/0b/179cc63d3a4f52e8cb233f2153a3e5a417522c85ea4b1dd25f6f2b377369/accelerate-1.1.1.tar.gz", hash = "sha256:0d39dfac557052bc735eb2703a0e87742879e1e40b88af8a2f9a93233d4cd7db", size = 335346 }
+sdist = { url = "https://files.pythonhosted.org/packages/d5/8e/a9827d6df00381f4815ddf84d79bb089783a569e29665e4cf03e808ddebc/accelerate-1.2.0.tar.gz", hash = "sha256:4187a9dea21101255ada3a1974532585feeb6ca8b681693dba362d6d25e85ef2", size = 341495 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/d1/d5/0050b2820a1e709ffa623f9a9e8ae42d0903535f2150613cbfeb7f16932a/accelerate-1.1.1-py3-none-any.whl", hash = "sha256:61edd81762131b8d4bede008643fa1e1f3bf59bec710ebda9771443e24feae02", size = 333211 },
+ { url = "https://files.pythonhosted.org/packages/7b/92/e3f810d0910a71979fe7341803e187cbf85e2b50146c8aa3796eb7bc51b4/accelerate-1.2.0-py3-none-any.whl", hash = "sha256:815708367eb83cd682e120da634b2cf318729bff95f30e2f046c086aae20201e", size = 336311 },
]
[[package]]
name = "aiohappyeyeballs"
-version = "2.4.3"
+version = "2.4.4"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/bc/69/2f6d5a019bd02e920a3417689a89887b39ad1e350b562f9955693d900c40/aiohappyeyeballs-2.4.3.tar.gz", hash = "sha256:75cf88a15106a5002a8eb1dab212525c00d1f4c0fa96e551c9fbe6f09a621586", size = 21809 }
+sdist = { url = "https://files.pythonhosted.org/packages/7f/55/e4373e888fdacb15563ef6fa9fa8c8252476ea071e96fb46defac9f18bf2/aiohappyeyeballs-2.4.4.tar.gz", hash = "sha256:5fdd7d87889c63183afc18ce9271f9b0a7d32c2303e394468dd45d514a757745", size = 21977 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/f7/d8/120cd0fe3e8530df0539e71ba9683eade12cae103dd7543e50d15f737917/aiohappyeyeballs-2.4.3-py3-none-any.whl", hash = "sha256:8a7a83727b2756f394ab2895ea0765a0a8c475e3c71e98d43d76f22b4b435572", size = 14742 },
+ { url = "https://files.pythonhosted.org/packages/b9/74/fbb6559de3607b3300b9be3cc64e97548d55678e44623db17820dbd20002/aiohappyeyeballs-2.4.4-py3-none-any.whl", hash = "sha256:a980909d50efcd44795c4afeca523296716d50cd756ddca6af8c65b996e27de8", size = 14756 },
]
[[package]]
name = "aiohttp"
-version = "3.11.7"
+version = "3.11.10"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "aiohappyeyeballs", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
@@ -61,68 +61,68 @@ dependencies = [
{ name = "propcache", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "yarl", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/4b/cb/f9bb10e0cf6f01730b27d370b10cc15822bea4395acd687abc8cc5fed3ed/aiohttp-3.11.7.tar.gz", hash = "sha256:01a8aca4af3da85cea5c90141d23f4b0eee3cbecfd33b029a45a80f28c66c668", size = 7666482 }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/83/7e/fb4723d280b4de2642c57593cb94f942bfdc15def510d12b5d22a1b955a6/aiohttp-3.11.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8bedb1f6cb919af3b6353921c71281b1491f948ca64408871465d889b4ee1b66", size = 706857 },
- { url = "https://files.pythonhosted.org/packages/57/f1/4eb447ad029801b1007ff23025c2bcb2519af2e03085717efa333f1803a5/aiohttp-3.11.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f5022504adab881e2d801a88b748ea63f2a9d130e0b2c430824682a96f6534be", size = 466733 },
- { url = "https://files.pythonhosted.org/packages/ed/7e/e385e54fa3d9360f9d1ea502a5627f2f4bdd141dd227a1f8785335c4fca9/aiohttp-3.11.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e22d1721c978a6494adc824e0916f9d187fa57baeda34b55140315fa2f740184", size = 453993 },
- { url = "https://files.pythonhosted.org/packages/ee/41/660cba8b4b10a9072ae77ce81558cca94d98aaec649a3085e50b8226fc17/aiohttp-3.11.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e993676c71288618eb07e20622572b1250d8713e7e00ab3aabae28cb70f3640d", size = 1576329 },
- { url = "https://files.pythonhosted.org/packages/e1/51/4c59724afde127001b22cf09b28171829329cf2c838cb05f6de521f125cf/aiohttp-3.11.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e13a05db87d3b241c186d0936808d0e4e12decc267c617d54e9c643807e968b6", size = 1630344 },
- { url = "https://files.pythonhosted.org/packages/c7/66/513f15cec950410dbc4439926ea4d9361136df7a97ddffab0deea1b68131/aiohttp-3.11.7-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4ba8d043fed7ffa117024d7ba66fdea011c0e7602327c6d73cacaea38abe4491", size = 1666837 },
- { url = "https://files.pythonhosted.org/packages/7a/c0/3e59d4cd8fd4c0e365d0ec962e0679dfc7629bdf0e67be398ca842ad4661/aiohttp-3.11.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dda3ed0a7869d2fa16aa41f9961ade73aa2c2e3b2fcb0a352524e7b744881889", size = 1580628 },
- { url = "https://files.pythonhosted.org/packages/22/a6/c4aea2cf583821e02f7a92c43f5f554d2334e22b741e21e8f31da2b2386b/aiohttp-3.11.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43bfd25113c1e98aec6c70e26d5f4331efbf4aa9037ba9ad88f090853bf64d7f", size = 1539922 },
- { url = "https://files.pythonhosted.org/packages/7b/54/52f33fc9cecaf28f8400e92d9c22e37939c856c4a8af26a71023ec1de689/aiohttp-3.11.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3dd3e7e7c9ef3e7214f014f1ae260892286647b3cf7c7f1b644a568fd410f8ca", size = 1527342 },
- { url = "https://files.pythonhosted.org/packages/d4/e0/fc91528bfb0283691b0448e93fe64d2416254a9ca34c58c666240440db89/aiohttp-3.11.7-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:78c657ece7a73b976905ab9ec8be9ef2df12ed8984c24598a1791c58ce3b4ce4", size = 1534194 },
- { url = "https://files.pythonhosted.org/packages/34/be/c6d571f46e9ef1720a850dce4c04dbfe38627a64bfdabdefb448c547e267/aiohttp-3.11.7-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:db70a47987e34494b451a334605bee57a126fe8d290511349e86810b4be53b01", size = 1609532 },
- { url = "https://files.pythonhosted.org/packages/3d/af/1da6918c83fb427e0f23401dca03b8d6ec776fb61ad25d2f5a8d564418e6/aiohttp-3.11.7-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:9e67531370a3b07e49b280c1f8c2df67985c790ad2834d1b288a2f13cd341c5f", size = 1630627 },
- { url = "https://files.pythonhosted.org/packages/32/20/fd3f4d8bc60227f1eb2fc20e75679e270ef05f81ae618cd869a68f19a32c/aiohttp-3.11.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9202f184cc0582b1db15056f2225ab4c1e3dac4d9ade50dd0613ac3c46352ac2", size = 1565670 },
- { url = "https://files.pythonhosted.org/packages/b0/9f/db692e10567acb0970618557be3bfe47fe92eac69fa7d3e81315d39b4a8b/aiohttp-3.11.7-cp310-cp310-win32.whl", hash = "sha256:2257bdd5cf54a4039a4337162cd8048f05a724380a2283df34620f55d4e29341", size = 415107 },
- { url = "https://files.pythonhosted.org/packages/0b/8c/9fb539a8a773356df3dbddd77d4a3aff3eda448a602a90e5582d8b1903a4/aiohttp-3.11.7-cp310-cp310-win_amd64.whl", hash = "sha256:b7215bf2b53bc6cb35808149980c2ae80a4ae4e273890ac85459c014d5aa60ac", size = 440569 },
- { url = "https://files.pythonhosted.org/packages/13/7f/272fa1adf68fe2fbebfe686a67b50cfb40d86dfe47d0441aff6f0b7c4c0e/aiohttp-3.11.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:cea52d11e02123f125f9055dfe0ccf1c3857225fb879e4a944fae12989e2aef2", size = 706820 },
- { url = "https://files.pythonhosted.org/packages/79/3c/6d612ef77cdba75364393f04c5c577481e3b5123a774eea447ada1ddd14f/aiohttp-3.11.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3ce18f703b7298e7f7633efd6a90138d99a3f9a656cb52c1201e76cb5d79cf08", size = 466654 },
- { url = "https://files.pythonhosted.org/packages/4f/b8/1052667d4800cd49bb4f869f1ed42f5e9d5acd4676275e64ccc244c9c040/aiohttp-3.11.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:670847ee6aeb3a569cd7cdfbe0c3bec1d44828bbfbe78c5d305f7f804870ef9e", size = 454041 },
- { url = "https://files.pythonhosted.org/packages/9f/07/80fa7302314a6ee1c9278550e9d95b77a4c895999bfbc5364ed0ee28dc7c/aiohttp-3.11.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4dda726f89bfa5c465ba45b76515135a3ece0088dfa2da49b8bb278f3bdeea12", size = 1684778 },
- { url = "https://files.pythonhosted.org/packages/2e/30/a71eb45197ad6bb6af87dfb39be8b56417d24d916047d35ef3f164af87f4/aiohttp-3.11.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c25b74a811dba37c7ea6a14d99eb9402d89c8d739d50748a75f3cf994cf19c43", size = 1740992 },
- { url = "https://files.pythonhosted.org/packages/22/74/0f9394429f3c4197129333a150a85cb2a642df30097a39dd41257f0b3bdc/aiohttp-3.11.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e5522ee72f95661e79db691310290c4618b86dff2d9b90baedf343fd7a08bf79", size = 1781816 },
- { url = "https://files.pythonhosted.org/packages/7f/1a/1e256b39179c98d16d53ac62f64bfcfe7c5b2c1e68b83cddd4165854524f/aiohttp-3.11.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1fbf41a6bbc319a7816ae0f0177c265b62f2a59ad301a0e49b395746eb2a9884", size = 1676692 },
- { url = "https://files.pythonhosted.org/packages/9b/37/f19d2e00efcabb9183b16bd91244de1d9c4ff7bf0fb5b8302e29a78f3286/aiohttp-3.11.7-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:59ee1925b5a5efdf6c4e7be51deee93984d0ac14a6897bd521b498b9916f1544", size = 1619523 },
- { url = "https://files.pythonhosted.org/packages/ae/3c/af50cf5e06b98783fd776f17077f7b7e755d461114af5d6744dc037fc3b0/aiohttp-3.11.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:24054fce8c6d6f33a3e35d1c603ef1b91bbcba73e3f04a22b4f2f27dac59b347", size = 1644084 },
- { url = "https://files.pythonhosted.org/packages/c0/a6/4e0233b085cbf2b6de573515c1eddde82f1c1f17e69347e32a5a5f2617ff/aiohttp-3.11.7-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:351849aca2c6f814575c1a485c01c17a4240413f960df1bf9f5deb0003c61a53", size = 1648332 },
- { url = "https://files.pythonhosted.org/packages/06/20/7062e76e7817318c421c0f9d7b650fb81aaecf6d2f3a9833805b45ec2ea8/aiohttp-3.11.7-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:12724f3a211fa243570e601f65a8831372caf1a149d2f1859f68479f07efec3d", size = 1730912 },
- { url = "https://files.pythonhosted.org/packages/6c/1c/ff6ae4b1789894e6faf8a4e260cd3861cad618dc80ad15326789a7765750/aiohttp-3.11.7-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:7ea4490360b605804bea8173d2d086b6c379d6bb22ac434de605a9cbce006e7d", size = 1752619 },
- { url = "https://files.pythonhosted.org/packages/33/58/ddd5cba5ca245c00b04e9d28a7988b0f0eda02de494f8e62ecd2780655c2/aiohttp-3.11.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e0bf378db07df0a713a1e32381a1b277e62ad106d0dbe17b5479e76ec706d720", size = 1692801 },
- { url = "https://files.pythonhosted.org/packages/b2/fc/32d5e2070b43d3722b7ea65ddc6b03ffa39bcc4b5ab6395a825cde0872ad/aiohttp-3.11.7-cp311-cp311-win32.whl", hash = "sha256:cd8d62cab363dfe713067027a5adb4907515861f1e4ce63e7be810b83668b847", size = 414899 },
- { url = "https://files.pythonhosted.org/packages/ec/7e/50324c6d3df4540f5963def810b9927f220c99864065849a1dfcae77a6ce/aiohttp-3.11.7-cp311-cp311-win_amd64.whl", hash = "sha256:bf0e6cce113596377cadda4e3ac5fb89f095bd492226e46d91b4baef1dd16f60", size = 440938 },
- { url = "https://files.pythonhosted.org/packages/bf/1e/2e96b2526c590dcb99db0b94ac4f9b927ecc07f94735a8a941dee143d48b/aiohttp-3.11.7-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:4bb7493c3e3a36d3012b8564bd0e2783259ddd7ef3a81a74f0dbfa000fce48b7", size = 702326 },
- { url = "https://files.pythonhosted.org/packages/b5/ce/b5d7f3e68849f1f5e0b85af4ac9080b9d3c0a600857140024603653c2209/aiohttp-3.11.7-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e143b0ef9cb1a2b4f74f56d4fbe50caa7c2bb93390aff52f9398d21d89bc73ea", size = 461944 },
- { url = "https://files.pythonhosted.org/packages/28/fa/f4d98db1b7f8f0c3f74bdbd6d0d98cfc89984205cd33f1b8ee3f588ee5ad/aiohttp-3.11.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f7c58a240260822dc07f6ae32a0293dd5bccd618bb2d0f36d51c5dbd526f89c0", size = 454348 },
- { url = "https://files.pythonhosted.org/packages/04/f0/c238dda5dc9a3d12b76636e2cf0ea475890ac3a1c7e4ff0fd6c3cea2fc2d/aiohttp-3.11.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d20cfe63a1c135d26bde8c1d0ea46fd1200884afbc523466d2f1cf517d1fe33", size = 1678795 },
- { url = "https://files.pythonhosted.org/packages/79/ee/3a18f792247e6d95dba13aaedc9dc317c3c6e75f4b88c2dd4b960d20ad2f/aiohttp-3.11.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:12e4d45847a174f77b2b9919719203769f220058f642b08504cf8b1cf185dacf", size = 1734411 },
- { url = "https://files.pythonhosted.org/packages/f5/79/3eb84243087a9a32cae821622c935107b4b55a5b21b76772e8e6c41092e9/aiohttp-3.11.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cf4efa2d01f697a7dbd0509891a286a4af0d86902fc594e20e3b1712c28c0106", size = 1788959 },
- { url = "https://files.pythonhosted.org/packages/91/93/ad77782c5edfa17aafc070bef978fbfb8459b2f150595ffb01b559c136f9/aiohttp-3.11.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ee6a4cdcbf54b8083dc9723cdf5f41f722c00db40ccf9ec2616e27869151129", size = 1687463 },
- { url = "https://files.pythonhosted.org/packages/ba/48/db35bd21b7877efa0be5f28385d8978c55323c5ce7685712e53f3f6c0bd9/aiohttp-3.11.7-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c6095aaf852c34f42e1bd0cf0dc32d1e4b48a90bfb5054abdbb9d64b36acadcb", size = 1618374 },
- { url = "https://files.pythonhosted.org/packages/ba/77/30f87db55c79fd145ed5fd15b92f2e820ce81065d41ae437797aaa550e3b/aiohttp-3.11.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1cf03d27885f8c5ebf3993a220cc84fc66375e1e6e812731f51aab2b2748f4a6", size = 1637021 },
- { url = "https://files.pythonhosted.org/packages/af/76/10b188b78ee18d0595af156d6a238bc60f9d8571f0f546027eb7eaf65b25/aiohttp-3.11.7-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:1a17f6a230f81eb53282503823f59d61dff14fb2a93847bf0399dc8e87817307", size = 1650792 },
- { url = "https://files.pythonhosted.org/packages/fa/33/4411bbb8ad04c47d0f4c7bd53332aaf350e49469cf6b65b132d4becafe27/aiohttp-3.11.7-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:481f10a1a45c5f4c4a578bbd74cff22eb64460a6549819242a87a80788461fba", size = 1696248 },
- { url = "https://files.pythonhosted.org/packages/fe/2d/6135d0dc1851a33d3faa937b20fef81340bc95e8310536d4c7f1f8ecc026/aiohttp-3.11.7-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:db37248535d1ae40735d15bdf26ad43be19e3d93ab3f3dad8507eb0f85bb8124", size = 1729188 },
- { url = "https://files.pythonhosted.org/packages/f5/76/a57ceff577ae26fe9a6f31ac799bc638ecf26e4acdf04295290b9929b349/aiohttp-3.11.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9d18a8b44ec8502a7fde91446cd9c9b95ce7c49f1eacc1fb2358b8907d4369fd", size = 1690038 },
- { url = "https://files.pythonhosted.org/packages/4b/81/b20e09003b6989a7f23a721692137a6143420a151063c750ab2a04878e3c/aiohttp-3.11.7-cp312-cp312-win32.whl", hash = "sha256:3d1c9c15d3999107cbb9b2d76ca6172e6710a12fda22434ee8bd3f432b7b17e8", size = 409887 },
- { url = "https://files.pythonhosted.org/packages/b7/0b/607c98bff1d07bb21e0c39e7711108ef9ff4f2a361a3ec1ce8dce93623a5/aiohttp-3.11.7-cp312-cp312-win_amd64.whl", hash = "sha256:018f1b04883a12e77e7fc161934c0f298865d3a484aea536a6a2ca8d909f0ba0", size = 436462 },
- { url = "https://files.pythonhosted.org/packages/7a/53/8d77186c6a33bd087714df18274cdcf6e36fd69a9e841c85b7e81a20b18e/aiohttp-3.11.7-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:241a6ca732d2766836d62c58c49ca7a93d08251daef0c1e3c850df1d1ca0cbc4", size = 695811 },
- { url = "https://files.pythonhosted.org/packages/62/b6/4c3d107a5406aa6f99f618afea82783f54ce2d9644020f50b9c88f6e823d/aiohttp-3.11.7-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:aa3705a8d14de39898da0fbad920b2a37b7547c3afd2a18b9b81f0223b7d0f68", size = 458530 },
- { url = "https://files.pythonhosted.org/packages/d9/05/dbf0bd3966be8ebed3beb4007a2d1356d79af4fe7c93e54f984df6385193/aiohttp-3.11.7-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9acfc7f652b31853eed3b92095b0acf06fd5597eeea42e939bd23a17137679d5", size = 451371 },
- { url = "https://files.pythonhosted.org/packages/19/6a/2198580314617b6cf9c4b813b84df5832b5f8efedcb8a7e8b321a187233c/aiohttp-3.11.7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dcefcf2915a2dbdbce37e2fc1622129a1918abfe3d06721ce9f6cdac9b6d2eaa", size = 1662905 },
- { url = "https://files.pythonhosted.org/packages/2b/65/08696fd7503f6a6f9f782bd012bf47f36d4ed179a7d8c95dba4726d5cc67/aiohttp-3.11.7-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c1f6490dd1862af5aae6cfcf2a274bffa9a5b32a8f5acb519a7ecf5a99a88866", size = 1713794 },
- { url = "https://files.pythonhosted.org/packages/c8/a3/b9a72dce6f15e2efbc09fa67c1067c4f3a3bb05661c0ae7b40799cde02b7/aiohttp-3.11.7-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1ac5462582d6561c1c1708853a9faf612ff4e5ea5e679e99be36143d6eabd8e", size = 1770757 },
- { url = "https://files.pythonhosted.org/packages/78/7e/8fb371b5f8c4c1eaa0d0a50750c0dd68059f86794aeb36919644815486f5/aiohttp-3.11.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c1a6309005acc4b2bcc577ba3b9169fea52638709ffacbd071f3503264620da", size = 1673136 },
- { url = "https://files.pythonhosted.org/packages/2f/0f/09685d13d2c7634cb808868ea29c170d4dcde4215a4a90fb86491cd3ae25/aiohttp-3.11.7-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f5b973cce96793725ef63eb449adfb74f99c043c718acb76e0d2a447ae369962", size = 1600370 },
- { url = "https://files.pythonhosted.org/packages/00/2e/18fd38b117f9b3a375166ccb70ed43cf7e3dfe2cc947139acc15feefc5a2/aiohttp-3.11.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ce91a24aac80de6be8512fb1c4838a9881aa713f44f4e91dd7bb3b34061b497d", size = 1613459 },
- { url = "https://files.pythonhosted.org/packages/2c/94/10a82abc680d753be33506be699aaa330152ecc4f316eaf081f996ee56c2/aiohttp-3.11.7-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:875f7100ce0e74af51d4139495eec4025affa1a605280f23990b6434b81df1bd", size = 1613924 },
- { url = "https://files.pythonhosted.org/packages/e9/58/897c0561f5c522dda6e173192f1e4f10144e1a7126096f17a3f12b7aa168/aiohttp-3.11.7-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c171fc35d3174bbf4787381716564042a4cbc008824d8195eede3d9b938e29a8", size = 1681164 },
- { url = "https://files.pythonhosted.org/packages/8b/8b/3a48b1cdafa612679d976274355f6a822de90b85d7dba55654ecfb01c979/aiohttp-3.11.7-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:ee9afa1b0d2293c46954f47f33e150798ad68b78925e3710044e0d67a9487791", size = 1712139 },
- { url = "https://files.pythonhosted.org/packages/aa/9d/70ab5b4dd7900db04af72840e033aee06e472b1343e372ea256ed675511c/aiohttp-3.11.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8360c7cc620abb320e1b8d603c39095101391a82b1d0be05fb2225471c9c5c52", size = 1667446 },
- { url = "https://files.pythonhosted.org/packages/cb/98/b5fbcc8f6056f0c56001c75227e6b7ca9ee4f2e5572feca82ff3d65d485d/aiohttp-3.11.7-cp313-cp313-win32.whl", hash = "sha256:7a9318da4b4ada9a67c1dd84d1c0834123081e746bee311a16bb449f363d965e", size = 408689 },
- { url = "https://files.pythonhosted.org/packages/ef/07/4d1504577fa6349dd2e3839e89fb56e5dee38d64efe3d4366e9fcfda0cdb/aiohttp-3.11.7-cp313-cp313-win_amd64.whl", hash = "sha256:fc6da202068e0a268e298d7cd09b6e9f3997736cd9b060e2750963754552a0a9", size = 434809 },
+sdist = { url = "https://files.pythonhosted.org/packages/94/c4/3b5a937b16f6c2a0ada842a9066aad0b7a5708427d4a202a07bf09c67cbb/aiohttp-3.11.10.tar.gz", hash = "sha256:b1fc6b45010a8d0ff9e88f9f2418c6fd408c99c211257334aff41597ebece42e", size = 7668832 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/47/f2/ba44492f257a296c4bb910bf47acf41672421fd455540911b3f13d10d6cd/aiohttp-3.11.10-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cbad88a61fa743c5d283ad501b01c153820734118b65aee2bd7dbb735475ce0d", size = 708322 },
+ { url = "https://files.pythonhosted.org/packages/2b/c7/22b0ed548c8660e978e736671f166907fb272d0a4281b2b6833310bce529/aiohttp-3.11.10-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:80886dac673ceaef499de2f393fc80bb4481a129e6cb29e624a12e3296cc088f", size = 468211 },
+ { url = "https://files.pythonhosted.org/packages/c9/0b/d326251888bb86ff7cb00b171e1cf3b0f0ed695622857f84a98bbc5f254b/aiohttp-3.11.10-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:61b9bae80ed1f338c42f57c16918853dc51775fb5cb61da70d590de14d8b5fb4", size = 455370 },
+ { url = "https://files.pythonhosted.org/packages/4e/83/28feef5a0bda728adf76e0d076566c26c6da3d29f0ccd998d07c260cae9d/aiohttp-3.11.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9e2e576caec5c6a6b93f41626c9c02fc87cd91538b81a3670b2e04452a63def6", size = 1584399 },
+ { url = "https://files.pythonhosted.org/packages/dc/97/6bdd39c4134ef243ffa9fd19a072ac9a0758d64b6d51eaaaaa34e67b8bcb/aiohttp-3.11.10-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02c13415b5732fb6ee7ff64583a5e6ed1c57aa68f17d2bda79c04888dfdc2769", size = 1632131 },
+ { url = "https://files.pythonhosted.org/packages/1b/f1/8c3a1623b9d526986f03d8158c9c856e00531217998275cc6b4a14b2fb85/aiohttp-3.11.10-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4cfce37f31f20800a6a6620ce2cdd6737b82e42e06e6e9bd1b36f546feb3c44f", size = 1668081 },
+ { url = "https://files.pythonhosted.org/packages/9c/3e/a2f4cee0dca934b1d2c4b6a7821040ce4452b9b2e4347c9be6cb10eaa835/aiohttp-3.11.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3bbbfff4c679c64e6e23cb213f57cc2c9165c9a65d63717108a644eb5a7398df", size = 1589313 },
+ { url = "https://files.pythonhosted.org/packages/fd/9c/93e9a8f39c78f0c6d938721101e28c57597046f78057ffced8a3fd571839/aiohttp-3.11.10-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49c7dbbc1a559ae14fc48387a115b7d4bbc84b4a2c3b9299c31696953c2a5219", size = 1544349 },
+ { url = "https://files.pythonhosted.org/packages/68/d2/2054efe02be87a1af92cfcaf6875d7b2c34906c3ee2b90ce82afbc8927a5/aiohttp-3.11.10-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:68386d78743e6570f054fe7949d6cb37ef2b672b4d3405ce91fafa996f7d9b4d", size = 1529018 },
+ { url = "https://files.pythonhosted.org/packages/10/b0/a258bfd5ddd3d9c871a8d24e96531cb6e6f0cd98dc3028f0b98302454b23/aiohttp-3.11.10-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:9ef405356ba989fb57f84cac66f7b0260772836191ccefbb987f414bcd2979d9", size = 1536357 },
+ { url = "https://files.pythonhosted.org/packages/76/7f/8b60b93e7dc58d371813a9b8d451b7c9c9c4350f9c505edf6fae80e0812b/aiohttp-3.11.10-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:5d6958671b296febe7f5f859bea581a21c1d05430d1bbdcf2b393599b1cdce77", size = 1607214 },
+ { url = "https://files.pythonhosted.org/packages/2a/10/97a11dba0f6d16878164b92ce75e2e0196a2fd25560cae8283388a24289b/aiohttp-3.11.10-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:99b7920e7165be5a9e9a3a7f1b680f06f68ff0d0328ff4079e5163990d046767", size = 1628573 },
+ { url = "https://files.pythonhosted.org/packages/45/66/70419d6cb9495ddcebfa54d3db07e6a9716049ef341ded1edd8982f9b7f9/aiohttp-3.11.10-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0dc49f42422163efb7e6f1df2636fe3db72713f6cd94688e339dbe33fe06d61d", size = 1564058 },
+ { url = "https://files.pythonhosted.org/packages/2d/d6/d94506afaea3aca15ab3f4732d666ad80acd5a035a7478aa6377c9816cf3/aiohttp-3.11.10-cp310-cp310-win32.whl", hash = "sha256:40d1c7a7f750b5648642586ba7206999650208dbe5afbcc5284bcec6579c9b91", size = 416360 },
+ { url = "https://files.pythonhosted.org/packages/55/03/731d1116d09ea7a3c6be731ab0eb1faa37b844d3e54fed28e3a6785ba5ab/aiohttp-3.11.10-cp310-cp310-win_amd64.whl", hash = "sha256:68ff6f48b51bd78ea92b31079817aff539f6c8fc80b6b8d6ca347d7c02384e33", size = 441763 },
+ { url = "https://files.pythonhosted.org/packages/db/7c/584d5ca19343c9462d054337828f72628e6dc204424f525df59ebfe75d1e/aiohttp-3.11.10-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:77c4aa15a89847b9891abf97f3d4048f3c2d667e00f8a623c89ad2dccee6771b", size = 708395 },
+ { url = "https://files.pythonhosted.org/packages/cd/2d/61c33e01baeb23aebd07620ee4d780ff40f4c17c42289bf02a405f2ac312/aiohttp-3.11.10-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:909af95a72cedbefe5596f0bdf3055740f96c1a4baa0dd11fd74ca4de0b4e3f1", size = 468281 },
+ { url = "https://files.pythonhosted.org/packages/ab/70/0ddb3a61b835068eb0badbe8016b4b65b966bad5f8af0f2d63998ff4cfa4/aiohttp-3.11.10-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:386fbe79863eb564e9f3615b959e28b222259da0c48fd1be5929ac838bc65683", size = 455345 },
+ { url = "https://files.pythonhosted.org/packages/44/8c/4e14e9c1767d9a6ab1af1fbad9df9c77e050b39b6afe9e8343ec1ba96508/aiohttp-3.11.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3de34936eb1a647aa919655ff8d38b618e9f6b7f250cc19a57a4bf7fd2062b6d", size = 1685464 },
+ { url = "https://files.pythonhosted.org/packages/ef/6e/1bab78ebb4f5a1c54f0fc10f8d52abc06816a9cb1db52b9c908e3d69f9a8/aiohttp-3.11.10-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0c9527819b29cd2b9f52033e7fb9ff08073df49b4799c89cb5754624ecd98299", size = 1743427 },
+ { url = "https://files.pythonhosted.org/packages/5d/5e/c1b03bef621a8cc51ff551ef223c6ac606fabe0e35c950f56d01423ec2aa/aiohttp-3.11.10-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65a96e3e03300b41f261bbfd40dfdbf1c301e87eab7cd61c054b1f2e7c89b9e8", size = 1785188 },
+ { url = "https://files.pythonhosted.org/packages/7c/b8/df6d76a149cbd969a58da478baec0be617287c496c842ddf21fe6bce07b3/aiohttp-3.11.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98f5635f7b74bcd4f6f72fcd85bea2154b323a9f05226a80bc7398d0c90763b0", size = 1674911 },
+ { url = "https://files.pythonhosted.org/packages/ee/8e/e460e7bb820a08cec399971fc3176afc8090dc32fb941f386e0c68bc4ecc/aiohttp-3.11.10-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:03b6002e20938fc6ee0918c81d9e776bebccc84690e2b03ed132331cca065ee5", size = 1619570 },
+ { url = "https://files.pythonhosted.org/packages/c2/ae/3b597e09eae4e75b77ee6c65443593d245bfa067ae6a5d895abaf27cce6c/aiohttp-3.11.10-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6362cc6c23c08d18ddbf0e8c4d5159b5df74fea1a5278ff4f2c79aed3f4e9f46", size = 1653772 },
+ { url = "https://files.pythonhosted.org/packages/b8/d1/99852f2925992c4d7004e590344e5398eb163750de2a7c1fbe07f182d3c8/aiohttp-3.11.10-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:3691ed7726fef54e928fe26344d930c0c8575bc968c3e239c2e1a04bd8cf7838", size = 1649787 },
+ { url = "https://files.pythonhosted.org/packages/39/c0/ea24627e08d722d5a6a00b3f6c9763fe3ad4650b8485f7a7a56ff932e3af/aiohttp-3.11.10-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:31d5093d3acd02b31c649d3a69bb072d539d4c7659b87caa4f6d2bcf57c2fa2b", size = 1732666 },
+ { url = "https://files.pythonhosted.org/packages/f1/27/ab52dee4443ef8bdb26473b53c841caafd2bb637a8d85751694e089913bb/aiohttp-3.11.10-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:8b3cf2dc0f0690a33f2d2b2cb15db87a65f1c609f53c37e226f84edb08d10f52", size = 1754910 },
+ { url = "https://files.pythonhosted.org/packages/cd/08/57c919d6b1f3b70bc14433c080a6152bf99454b636eb8a88552de8baaca9/aiohttp-3.11.10-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:fbbaea811a2bba171197b08eea288b9402faa2bab2ba0858eecdd0a4105753a3", size = 1692502 },
+ { url = "https://files.pythonhosted.org/packages/ae/37/015006f669275735049e0549c37cb79c7a4a9350cbee070bbccb5a5b4b8a/aiohttp-3.11.10-cp311-cp311-win32.whl", hash = "sha256:4b2c7ac59c5698a7a8207ba72d9e9c15b0fc484a560be0788b31312c2c5504e4", size = 416178 },
+ { url = "https://files.pythonhosted.org/packages/cf/8d/7bb48ae503989b15114baf9f9b19398c86ae93d30959065bc061b31331ee/aiohttp-3.11.10-cp311-cp311-win_amd64.whl", hash = "sha256:974d3a2cce5fcfa32f06b13ccc8f20c6ad9c51802bb7f829eae8a1845c4019ec", size = 442269 },
+ { url = "https://files.pythonhosted.org/packages/25/17/1dbe2f619f77795409c1a13ab395b98ed1b215d3e938cacde9b8ffdac53d/aiohttp-3.11.10-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:b78f053a7ecfc35f0451d961dacdc671f4bcbc2f58241a7c820e9d82559844cf", size = 704448 },
+ { url = "https://files.pythonhosted.org/packages/e3/9b/112247ad47e9d7f6640889c6e42cc0ded8c8345dd0033c66bcede799b051/aiohttp-3.11.10-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ab7485222db0959a87fbe8125e233b5a6f01f4400785b36e8a7878170d8c3138", size = 463829 },
+ { url = "https://files.pythonhosted.org/packages/8a/36/a64b583771fc673062a7a1374728a6241d49e2eda5a9041fbf248e18c804/aiohttp-3.11.10-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cf14627232dfa8730453752e9cdc210966490992234d77ff90bc8dc0dce361d5", size = 455774 },
+ { url = "https://files.pythonhosted.org/packages/e5/75/ee1b8f510978b3de5f185c62535b135e4fc3f5a247ca0c2245137a02d800/aiohttp-3.11.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:076bc454a7e6fd646bc82ea7f98296be0b1219b5e3ef8a488afbdd8e81fbac50", size = 1682134 },
+ { url = "https://files.pythonhosted.org/packages/87/46/65e8259432d5f73ca9ebf5edb645ef90e5303724e4e52477516cb4042240/aiohttp-3.11.10-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:482cafb7dc886bebeb6c9ba7925e03591a62ab34298ee70d3dd47ba966370d2c", size = 1736757 },
+ { url = "https://files.pythonhosted.org/packages/03/f6/a6d1e791b7153fb2d101278f7146c0771b0e1569c547f8a8bc3035651984/aiohttp-3.11.10-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bf3d1a519a324af764a46da4115bdbd566b3c73fb793ffb97f9111dbc684fc4d", size = 1793033 },
+ { url = "https://files.pythonhosted.org/packages/a8/e9/1ac90733e36e7848693aece522936a13bf17eeb617da662f94adfafc1c25/aiohttp-3.11.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24213ba85a419103e641e55c27dc7ff03536c4873470c2478cce3311ba1eee7b", size = 1691609 },
+ { url = "https://files.pythonhosted.org/packages/6d/a6/77b33da5a0bc04566c7ddcca94500f2c2a2334eecab4885387fffd1fc600/aiohttp-3.11.10-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b99acd4730ad1b196bfb03ee0803e4adac371ae8efa7e1cbc820200fc5ded109", size = 1619082 },
+ { url = "https://files.pythonhosted.org/packages/48/94/5bf5f927d9a2fedd2c978adfb70a3680e16f46d178361685b56244eb52ed/aiohttp-3.11.10-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:14cdb5a9570be5a04eec2ace174a48ae85833c2aadc86de68f55541f66ce42ab", size = 1641186 },
+ { url = "https://files.pythonhosted.org/packages/99/2d/e85103aa01d1064e51bc50cb51e7b40150a8ff5d34e5a3173a46b241860b/aiohttp-3.11.10-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:7e97d622cb083e86f18317282084bc9fbf261801b0192c34fe4b1febd9f7ae69", size = 1646280 },
+ { url = "https://files.pythonhosted.org/packages/7b/e0/44651fda8c1d865a51b3a81f1956ea55ce16fc568fe7a3e05db7fc22f139/aiohttp-3.11.10-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:012f176945af138abc10c4a48743327a92b4ca9adc7a0e078077cdb5dbab7be0", size = 1701862 },
+ { url = "https://files.pythonhosted.org/packages/4e/1e/0804459ae325a5b95f6f349778fb465f29d2b863e522b6a349db0aaad54c/aiohttp-3.11.10-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:44224d815853962f48fe124748227773acd9686eba6dc102578defd6fc99e8d9", size = 1734373 },
+ { url = "https://files.pythonhosted.org/packages/07/87/b8f6721668cad74bcc9c7cfe6d0230b304d1250196b221e54294a0d78dbe/aiohttp-3.11.10-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c87bf31b7fdab94ae3adbe4a48e711bfc5f89d21cf4c197e75561def39e223bc", size = 1694343 },
+ { url = "https://files.pythonhosted.org/packages/4b/20/42813fc60d9178ba9b1b86c58a5441ddb6cf8ffdfe66387345bff173bcff/aiohttp-3.11.10-cp312-cp312-win32.whl", hash = "sha256:06a8e2ee1cbac16fe61e51e0b0c269400e781b13bcfc33f5425912391a542985", size = 411118 },
+ { url = "https://files.pythonhosted.org/packages/3a/51/df9c263c861ce93998b5ad2ba3212caab2112d5b66dbe91ddbe90c41ded4/aiohttp-3.11.10-cp312-cp312-win_amd64.whl", hash = "sha256:be2b516f56ea883a3e14dda17059716593526e10fb6303189aaf5503937db408", size = 437424 },
+ { url = "https://files.pythonhosted.org/packages/8c/1d/88bfdbe28a3d1ba5b94a235f188f27726caf8ade9a0e13574848f44fe0fe/aiohttp-3.11.10-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8cc5203b817b748adccb07f36390feb730b1bc5f56683445bfe924fc270b8816", size = 697755 },
+ { url = "https://files.pythonhosted.org/packages/86/00/4c4619d6fe5c5be32f74d1422fc719b3e6cd7097af0c9e03877ca9bd4ebc/aiohttp-3.11.10-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5ef359ebc6949e3a34c65ce20230fae70920714367c63afd80ea0c2702902ccf", size = 460440 },
+ { url = "https://files.pythonhosted.org/packages/aa/1c/2f927408f50593a29465d198ec3c57c835c8602330233163e8d89c1093db/aiohttp-3.11.10-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9bca390cb247dbfaec3c664326e034ef23882c3f3bfa5fbf0b56cad0320aaca5", size = 452726 },
+ { url = "https://files.pythonhosted.org/packages/06/6a/ff00ed0a2ba45c34b3c366aa5b0004b1a4adcec5a9b5f67dd0648ee1c88a/aiohttp-3.11.10-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:811f23b3351ca532af598405db1093f018edf81368e689d1b508c57dcc6b6a32", size = 1664944 },
+ { url = "https://files.pythonhosted.org/packages/02/c2/61923f2a7c2e14d7424b3a526e054f0358f57ccdf5573d4d3d033b01921a/aiohttp-3.11.10-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ddf5f7d877615f6a1e75971bfa5ac88609af3b74796ff3e06879e8422729fd01", size = 1717707 },
+ { url = "https://files.pythonhosted.org/packages/8a/08/0d3d074b24d377569ec89d476a95ca918443099c0401bb31b331104e35d1/aiohttp-3.11.10-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6ab29b8a0beb6f8eaf1e5049252cfe74adbaafd39ba91e10f18caeb0e99ffb34", size = 1774890 },
+ { url = "https://files.pythonhosted.org/packages/e8/49/052ada2b6e90ed65f0e6a7e548614621b5f8dcd193cb9415d2e6bcecc94a/aiohttp-3.11.10-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c49a76c1038c2dd116fa443eba26bbb8e6c37e924e2513574856de3b6516be99", size = 1676945 },
+ { url = "https://files.pythonhosted.org/packages/7c/9e/0c48e1a48e072a869b8b5e3920c9f6a8092861524a4a6f159cd7e6fda939/aiohttp-3.11.10-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7f3dc0e330575f5b134918976a645e79adf333c0a1439dcf6899a80776c9ab39", size = 1602959 },
+ { url = "https://files.pythonhosted.org/packages/ab/98/791f979093ff7f67f80344c182cb0ca4c2c60daed397ecaf454cc8d7a5cd/aiohttp-3.11.10-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:efb15a17a12497685304b2d976cb4939e55137df7b09fa53f1b6a023f01fcb4e", size = 1618058 },
+ { url = "https://files.pythonhosted.org/packages/7b/5d/2d4b05feb3fd68eb7c8335f73c81079b56e582633b91002da695ccb439ef/aiohttp-3.11.10-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:db1d0b28fcb7f1d35600150c3e4b490775251dea70f894bf15c678fdd84eda6a", size = 1616289 },
+ { url = "https://files.pythonhosted.org/packages/50/83/68cc28c00fe681dce6150614f105efe98282da19252cd6e32dfa893bb328/aiohttp-3.11.10-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:15fccaf62a4889527539ecb86834084ecf6e9ea70588efde86e8bc775e0e7542", size = 1685239 },
+ { url = "https://files.pythonhosted.org/packages/16/f9/68fc5c8928f63238ce9314f04f3f59d9190a4db924998bb9be99c7aacce8/aiohttp-3.11.10-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:593c114a2221444f30749cc5e5f4012488f56bd14de2af44fe23e1e9894a9c60", size = 1715078 },
+ { url = "https://files.pythonhosted.org/packages/3f/e0/3dd3f0451c532c77e35780bafb2b6469a046bc15a6ec2e039475a1d2f161/aiohttp-3.11.10-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7852bbcb4d0d2f0c4d583f40c3bc750ee033265d80598d0f9cb6f372baa6b836", size = 1672544 },
+ { url = "https://files.pythonhosted.org/packages/a5/b1/3530ab040dd5d7fb016b47115016f9b3a07ea29593b0e07e53dbe06a380c/aiohttp-3.11.10-cp313-cp313-win32.whl", hash = "sha256:65e55ca7debae8faaffee0ebb4b47a51b4075f01e9b641c31e554fd376595c6c", size = 409984 },
+ { url = "https://files.pythonhosted.org/packages/49/1f/deed34e9fca639a7f873d01150d46925d3e1312051eaa591c1aa1f2e6ddc/aiohttp-3.11.10-cp313-cp313-win_amd64.whl", hash = "sha256:beb39a6d60a709ae3fb3516a1581777e7e8b76933bb88c8f4420d875bb0267c6", size = 435837 },
]
[[package]]
@@ -148,7 +148,7 @@ wheels = [
[[package]]
name = "anthropic"
-version = "0.39.0"
+version = "0.40.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "anyio", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
@@ -159,24 +159,24 @@ dependencies = [
{ name = "sniffio", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "typing-extensions", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/79/02/2ea51930009d7537c4648f51d1bb3202ec76704cbb39a2a863ab38bee3dd/anthropic-0.39.0.tar.gz", hash = "sha256:94671cc80765f9ce693f76d63a97ee9bef4c2d6063c044e983d21a2e262f63ba", size = 189339 }
+sdist = { url = "https://files.pythonhosted.org/packages/4d/d9/c39005f04c602607d68d48d1c917b35af8d16b687b7ca427ca787c39d8b9/anthropic-0.40.0.tar.gz", hash = "sha256:3efeca6d9e97813f93ed34322c6c7ea2279bf0824cd0aa71b59ce222665e2b87", size = 190939 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/94/61/2580eaa171cab20708d59d39cadd15f78a6c617759e8d0a12e18fe3302d1/anthropic-0.39.0-py3-none-any.whl", hash = "sha256:ea17093ae0ce0e1768b0c46501d6086b5bcd74ff39d68cd2d6396374e9de7c09", size = 198392 },
+ { url = "https://files.pythonhosted.org/packages/cb/18/a68cfb9a11990377650c36c25b5dfb0baece900e9e505b68e1aa06ad0227/anthropic-0.40.0-py3-none-any.whl", hash = "sha256:442028ae8790ff9e3b6f8912043918755af1230d193904ae2ef78cc22995280c", size = 199484 },
]
[[package]]
name = "anyio"
-version = "4.6.2.post1"
+version = "4.7.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "exceptiongroup", marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version < '3.11' and sys_platform == 'linux') or (python_full_version < '3.11' and sys_platform == 'win32')" },
{ name = "idna", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "sniffio", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
- { name = "typing-extensions", marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version < '3.11' and sys_platform == 'linux') or (python_full_version < '3.11' and sys_platform == 'win32')" },
+ { name = "typing-extensions", marker = "(python_full_version < '3.13' and sys_platform == 'darwin') or (python_full_version < '3.13' and sys_platform == 'linux') or (python_full_version < '3.13' and sys_platform == 'win32')" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/9f/09/45b9b7a6d4e45c6bcb5bf61d19e3ab87df68e0601fa8c5293de3542546cc/anyio-4.6.2.post1.tar.gz", hash = "sha256:4c8bc31ccdb51c7f7bd251f51c609e038d63e34219b44aa86e47576389880b4c", size = 173422 }
+sdist = { url = "https://files.pythonhosted.org/packages/f6/40/318e58f669b1a9e00f5c4453910682e2d9dd594334539c7b7817dabb765f/anyio-4.7.0.tar.gz", hash = "sha256:2f834749c602966b7d456a7567cafcb309f96482b5081d14ac93ccd457f9dd48", size = 177076 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/e4/f5/f2b75d2fc6f1a260f340f0e7c6a060f4dd2961cc16884ed851b0d18da06a/anyio-4.6.2.post1-py3-none-any.whl", hash = "sha256:6d170c36fba3bdd840c73d3868c1e777e33676a69c3a72cf0a0d5d6d8009b61d", size = 90377 },
+ { url = "https://files.pythonhosted.org/packages/a0/7a/4daaf3b6c08ad7ceffea4634ec206faeff697526421c20f07628c7372156/anyio-4.7.0-py3-none-any.whl", hash = "sha256:ea60c3723ab42ba6fff7e8ccb0488c898ec538ff4df1f1d5e642c3601d07e352", size = 93052 },
]
[[package]]
@@ -202,14 +202,11 @@ wheels = [
[[package]]
name = "asttokens"
-version = "2.4.1"
+version = "3.0.0"
source = { registry = "https://pypi.org/simple" }
-dependencies = [
- { name = "six", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
-]
-sdist = { url = "https://files.pythonhosted.org/packages/45/1d/f03bcb60c4a3212e15f99a56085d93093a497718adf828d050b9d675da81/asttokens-2.4.1.tar.gz", hash = "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0", size = 62284 }
+sdist = { url = "https://files.pythonhosted.org/packages/4a/e7/82da0a03e7ba5141f05cce0d302e6eed121ae055e0456ca228bf693984bc/asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7", size = 61978 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/45/86/4736ac618d82a20d87d2f92ae19441ebc7ac9e7a581d7e58bbe79233b24a/asttokens-2.4.1-py2.py3-none-any.whl", hash = "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24", size = 27764 },
+ { url = "https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2", size = 26918 },
]
[[package]]
@@ -323,7 +320,7 @@ wheels = [
[[package]]
name = "azure-search-documents"
-version = "11.6.0b7"
+version = "11.6.0b8"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "azure-common", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
@@ -331,9 +328,9 @@ dependencies = [
{ name = "isodate", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "typing-extensions", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/20/a3/87acbb33f665785ae5ff595a716f3e6c3f3ffc456b5637c047644eb00471/azure_search_documents-11.6.0b7.tar.gz", hash = "sha256:02fbcd78982056dab69ad0c2cad1cf5f9043d0ceb4c73cf373288649c31c9481", size = 334789 }
+sdist = { url = "https://files.pythonhosted.org/packages/85/a0/47b9320e611d023e5d820f346c068cdcb2514ba1fd271881f7dae9c03aa4/azure_search_documents-11.6.0b8.tar.gz", hash = "sha256:5fa84bacbf72b9778ab7a2a43ab5df335fc5516eeb169c36d78ced39a29cfe69", size = 335046 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/a9/89/8d397bea4d6028d00fba3411e6803b0af0d0674cd6831e1a1b324f461a20/azure_search_documents-11.6.0b7-py3-none-any.whl", hash = "sha256:210f4af0636c95726febf3b4bf172aad95cfa46953cdf9c34f31cbb09678fbfe", size = 335298 },
+ { url = "https://files.pythonhosted.org/packages/22/7f/a160150cbeb4e4d1f434ae58d5d1ebb580b1c79e2d4b651be09fb3b7ab10/azure_search_documents-11.6.0b8-py3-none-any.whl", hash = "sha256:edd7af876dc9353d1ede46429547df0a3891beed182308636f0f86a97cce94b5", size = 335433 },
]
[[package]]
@@ -412,30 +409,30 @@ wheels = [
[[package]]
name = "boto3"
-version = "1.35.66"
+version = "1.35.79"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "botocore", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "jmespath", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "s3transfer", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/66/aa/5a6318f61564bd181e6c65855dc78c46139b5e8c5e301256e18eedfbb7af/boto3-1.35.66.tar.gz", hash = "sha256:c392b9168b65e9c23483eaccb5b68d1f960232d7f967a1e00a045ba065ce050d", size = 111093 }
+sdist = { url = "https://files.pythonhosted.org/packages/c1/01/cea53440a882f1d9772e128d205482df0005f9425166dccbb5513953e43a/boto3-1.35.79.tar.gz", hash = "sha256:1fa26217cd33ded82e55aed4460cd55f7223fa647916aa0d3c5d6828e6ec7135", size = 111020 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/01/c8/fcf1ec25b0320af58be3a3d8c0f8ed06513133c65b318895e7eb39ef14ab/boto3-1.35.66-py3-none-any.whl", hash = "sha256:09a610f8cf4d3c22d4ca69c1f89079e3a1c82805ce94fa0eb4ecdd4d2ba6c4bc", size = 139191 },
+ { url = "https://files.pythonhosted.org/packages/87/72/2dcb1f721a146fc85182cf7c683c0697b79eb719cd6fe73793037f6b04e7/boto3-1.35.79-py3-none-any.whl", hash = "sha256:a673b0b6378c9ccbf045a31a43195b175e12aa5c37fb7635fcbfc8f48fb857b3", size = 139180 },
]
[[package]]
name = "botocore"
-version = "1.35.66"
+version = "1.35.79"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "jmespath", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "python-dateutil", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "urllib3", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/87/06/bd0dcda686003598530eebbd0c4d7da67c031db2059a3d51a945e6199ce5/botocore-1.35.66.tar.gz", hash = "sha256:51f43220315f384959f02ea3266740db4d421592dd87576c18824e424b349fdb", size = 13089606 }
+sdist = { url = "https://files.pythonhosted.org/packages/15/4f/ff271a347a3aaa24b41f4893a3f92a8ebfbe26cd96a5b3daaa15995a815b/botocore-1.35.79.tar.gz", hash = "sha256:245bfdda1b1508539ddd1819c67a8a2cc81780adf0715d3de418d64c4247f346", size = 13456479 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/92/f0/372c2474cd198485ac427ccdd54796b05c2e730bdff0523c26012fe40ad7/botocore-1.35.66-py3-none-any.whl", hash = "sha256:d0683e9c18bb6852f768da268086c3749d925332a664db0dd1459cfa7e96e475", size = 12882983 },
+ { url = "https://files.pythonhosted.org/packages/b6/bd/a599c60ab09d23d403f4c476beb6c1a0712ae3460d388c0ec5e2a3f3c84e/botocore-1.35.79-py3-none-any.whl", hash = "sha256:e6b10bb9a357e3f5ca2e60f6dd15a85d311b9a476eb21b3c0c2a3b364a2897c8", size = 13259070 },
]
[[package]]
@@ -652,7 +649,7 @@ wheels = [
[[package]]
name = "chromadb"
-version = "0.5.20"
+version = "0.5.23"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "bcrypt", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
@@ -684,9 +681,9 @@ dependencies = [
{ name = "typing-extensions", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "uvicorn", extra = ["standard"], marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/03/31/6c8e05405bb02b4a1f71f9aa3eef242415565dabf6afc1bde7f64f726963/chromadb-0.5.20.tar.gz", hash = "sha256:19513a23b2d20059866216bfd80195d1d4a160ffba234b8899f5e80978160ca7", size = 33664540 }
+sdist = { url = "https://files.pythonhosted.org/packages/42/64/28daa773f784bcd18de944fe26ed301de844d6ee17188e26a9d6b4baf122/chromadb-0.5.23.tar.gz", hash = "sha256:360a12b9795c5a33cb1f839d14410ccbde662ef1accd36153b0ae22312edabd1", size = 33700455 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/5f/7a/10bf5dc92d13cc03230190fcc5016a0b138d99e5b36b8b89ee0fe1680e10/chromadb-0.5.20-py3-none-any.whl", hash = "sha256:9550ba1b6dce911e35cac2568b301badf4b42f457b99a432bdeec2b6b9dd3680", size = 617884 },
+ { url = "https://files.pythonhosted.org/packages/92/8c/a9eb95a28e6c35a0122417976a9d435eeaceb53f596a8973e33b3dd4cfac/chromadb-0.5.23-py3-none-any.whl", hash = "sha256:ffe5bdd7276d12cb682df0d38a13aa37573e6a3678e71889ac45f539ae05ad7e", size = 628347 },
]
[[package]]
@@ -748,61 +745,61 @@ wheels = [
[[package]]
name = "coverage"
-version = "7.6.7"
-source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/bf/68/26895f8b068e384b1ec9ab122565b913b735e6b4c618b3d265a280607edc/coverage-7.6.7.tar.gz", hash = "sha256:d79d4826e41441c9a118ff045e4bccb9fdbdcb1d02413e7ea6eb5c87b5439d24", size = 799938 }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/62/c9/84898713e61208ddbe71b991d8f311d9ca175629ce5f1a46018acc643572/coverage-7.6.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:108bb458827765d538abcbf8288599fee07d2743357bdd9b9dad456c287e121e", size = 206875 },
- { url = "https://files.pythonhosted.org/packages/f0/69/7dfd65f0e284617f72d974f6dfedc7bc16f86172e5bc6ebc8b63430263f3/coverage-7.6.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c973b2fe4dc445cb865ab369df7521df9c27bf40715c837a113edaa2aa9faf45", size = 207307 },
- { url = "https://files.pythonhosted.org/packages/d1/ce/6e356b2bc751bdaadd77c714336b98ec45ccaf0cfe085b6b25d34f7cceb8/coverage-7.6.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c6b24007c4bcd0b19fac25763a7cac5035c735ae017e9a349b927cfc88f31c1", size = 235744 },
- { url = "https://files.pythonhosted.org/packages/35/49/a7ab3d5a507d32344994cab856784e8d603c0b698070f7667c3ae41e8e50/coverage-7.6.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:acbb8af78f8f91b3b51f58f288c0994ba63c646bc1a8a22ad072e4e7e0a49f1c", size = 233645 },
- { url = "https://files.pythonhosted.org/packages/bd/41/de07328d2e79916fcc6cd53a5a1d18d163483519ab95f7f60fe15276811c/coverage-7.6.7-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad32a981bcdedb8d2ace03b05e4fd8dace8901eec64a532b00b15217d3677dd2", size = 234807 },
- { url = "https://files.pythonhosted.org/packages/e4/cc/2a669319b1295e0c52e8cfbbb163b32188b62f3b0bbe7014ef402b24b7cf/coverage-7.6.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:34d23e28ccb26236718a3a78ba72744212aa383141961dd6825f6595005c8b06", size = 233902 },
- { url = "https://files.pythonhosted.org/packages/68/71/a1bb90cb177358a2d364b3968a2069225f614d6824c3d959dee688ca0902/coverage-7.6.7-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e25bacb53a8c7325e34d45dddd2f2fbae0dbc230d0e2642e264a64e17322a777", size = 232363 },
- { url = "https://files.pythonhosted.org/packages/eb/dc/87551219d3437214523d1c7de0a717bead7a3369ed9bae05a7fd2854476f/coverage-7.6.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:af05bbba896c4472a29408455fe31b3797b4d8648ed0a2ccac03e074a77e2314", size = 233493 },
- { url = "https://files.pythonhosted.org/packages/ca/a4/d74ae3a3fb9e55fe5d9b811ce68a6bd8df3ae0a92c336acbc00075bc24fa/coverage-7.6.7-cp310-cp310-win32.whl", hash = "sha256:796c9b107d11d2d69e1849b2dfe41730134b526a49d3acb98ca02f4985eeff7a", size = 209593 },
- { url = "https://files.pythonhosted.org/packages/77/cb/7984c4d0404e8fcc4ada226b240965ef056e7a20e61a18c9038bf88e7624/coverage-7.6.7-cp310-cp310-win_amd64.whl", hash = "sha256:987a8e3da7da4eed10a20491cf790589a8e5e07656b6dc22d3814c4d88faf163", size = 210398 },
- { url = "https://files.pythonhosted.org/packages/c6/d7/1bf7bb0943237149ad01977190ac5c2e17add1f4fe7cabc06401682137f6/coverage-7.6.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7e61b0e77ff4dddebb35a0e8bb5a68bf0f8b872407d8d9f0c726b65dfabe2469", size = 206979 },
- { url = "https://files.pythonhosted.org/packages/83/eb/863b2cd654353b94c6ad834008df813424bf3e8f110e5f655fe5dc4c423b/coverage-7.6.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1a5407a75ca4abc20d6252efeb238377a71ce7bda849c26c7a9bece8680a5d99", size = 207431 },
- { url = "https://files.pythonhosted.org/packages/35/c9/d7a02a9654c41174fb99402c0fbd9583d0d2cb8714e7f948117fa7f919c4/coverage-7.6.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df002e59f2d29e889c37abd0b9ee0d0e6e38c24f5f55d71ff0e09e3412a340ec", size = 239368 },
- { url = "https://files.pythonhosted.org/packages/11/64/6c43a0ec43e5ddc5e09b0b589e3fd31def05fc463920d084e5af35fe527d/coverage-7.6.7-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:673184b3156cba06154825f25af33baa2671ddae6343f23175764e65a8c4c30b", size = 236769 },
- { url = "https://files.pythonhosted.org/packages/1c/dc/e77d98ae433c556c29328712a07fed0e6d159a63b2ec81039ce0a13a24a3/coverage-7.6.7-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e69ad502f1a2243f739f5bd60565d14a278be58be4c137d90799f2c263e7049a", size = 238634 },
- { url = "https://files.pythonhosted.org/packages/cc/84/50df3a8426d686057496171b4ccdb64528dacc4f42e94dceb7de3c598a69/coverage-7.6.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:60dcf7605c50ea72a14490d0756daffef77a5be15ed1b9fea468b1c7bda1bc3b", size = 237562 },
- { url = "https://files.pythonhosted.org/packages/2e/0f/9560196247574c1ccdab64cb923d69119fd5abd5b3db28d601ab2b452861/coverage-7.6.7-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9c2eb378bebb2c8f65befcb5147877fc1c9fbc640fc0aad3add759b5df79d55d", size = 236197 },
- { url = "https://files.pythonhosted.org/packages/df/14/38b7c081e86e845df1867143ddb6e05bf8395f60ab3923c023a56d97cca1/coverage-7.6.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3c0317288f032221d35fa4cbc35d9f4923ff0dfd176c79c9b356e8ef8ef2dff4", size = 236970 },
- { url = "https://files.pythonhosted.org/packages/8b/f3/af34f814ca3814f798878ae368b638edb91298595470614f5265f3f416fa/coverage-7.6.7-cp311-cp311-win32.whl", hash = "sha256:951aade8297358f3618a6e0660dc74f6b52233c42089d28525749fc8267dccd2", size = 209557 },
- { url = "https://files.pythonhosted.org/packages/5a/9e/5d1080d83d752873bd9dedea5524c0f5fe68a3d5e1e58c590865bd724591/coverage-7.6.7-cp311-cp311-win_amd64.whl", hash = "sha256:5e444b8e88339a2a67ce07d41faabb1d60d1004820cee5a2c2b54e2d8e429a0f", size = 210402 },
- { url = "https://files.pythonhosted.org/packages/84/30/30e9df650b9038962c62d900b093a17414d5b43b4d07d47b8698d9e7ce26/coverage-7.6.7-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f07ff574986bc3edb80e2c36391678a271d555f91fd1d332a1e0f4b5ea4b6ea9", size = 207172 },
- { url = "https://files.pythonhosted.org/packages/88/8b/e28f86412317b9514692fd6f9d8ac6faa12494c3f470c3c63f202e10c756/coverage-7.6.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:49ed5ee4109258973630c1f9d099c7e72c5c36605029f3a91fe9982c6076c82b", size = 207406 },
- { url = "https://files.pythonhosted.org/packages/ac/46/da1bd9a3a893f74f5ce85f35e2755fcb00a80ed21e18d300c54f64938b1c/coverage-7.6.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3e8796434a8106b3ac025fd15417315d7a58ee3e600ad4dbcfddc3f4b14342c", size = 240424 },
- { url = "https://files.pythonhosted.org/packages/f6/12/af8e932496de1997bf4a36785d025ddac6427cbaf6954f26c2edaf21a58a/coverage-7.6.7-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a3b925300484a3294d1c70f6b2b810d6526f2929de954e5b6be2bf8caa1f12c1", size = 237456 },
- { url = "https://files.pythonhosted.org/packages/60/a2/23eb11eb60f825a84397cb94701d6f41d2e8e88ad7d0ba2b4339f38435fb/coverage-7.6.7-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c42ec2c522e3ddd683dec5cdce8e62817afb648caedad9da725001fa530d354", size = 239527 },
- { url = "https://files.pythonhosted.org/packages/47/9e/63b318bc469308a32b0fbd6c80e2ea05dd7a2b7e840a46b3974843083a8c/coverage-7.6.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0266b62cbea568bd5e93a4da364d05de422110cbed5056d69339bd5af5685433", size = 239011 },
- { url = "https://files.pythonhosted.org/packages/99/47/1e84b067df3f021dfbc9cba09ec9acd4cb64938648a234e5bdf3006fd08b/coverage-7.6.7-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e5f2a0f161d126ccc7038f1f3029184dbdf8f018230af17ef6fd6a707a5b881f", size = 237316 },
- { url = "https://files.pythonhosted.org/packages/12/9d/96baaafc948d4a0ef2248a611d41051eea0917ef881d744879dd20be7c4a/coverage-7.6.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c132b5a22821f9b143f87446805e13580b67c670a548b96da945a8f6b4f2efbb", size = 238980 },
- { url = "https://files.pythonhosted.org/packages/87/d9/97af1886ca3f612d0cea2999d33e90d2f5b8fdf9bedc2d3bc75883efec4c/coverage-7.6.7-cp312-cp312-win32.whl", hash = "sha256:7c07de0d2a110f02af30883cd7dddbe704887617d5c27cf373362667445a4c76", size = 209801 },
- { url = "https://files.pythonhosted.org/packages/f8/4d/1e31c2018b1b3738154639f94188b1f54098fbf0f80c7ec104928576d0bb/coverage-7.6.7-cp312-cp312-win_amd64.whl", hash = "sha256:fd49c01e5057a451c30c9b892948976f5d38f2cbd04dc556a82743ba8e27ed8c", size = 210587 },
- { url = "https://files.pythonhosted.org/packages/21/87/c590d0c7eeb884995d9d06b429c5e88e9fcd65d3a6a686d9476cb50b72a9/coverage-7.6.7-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:46f21663e358beae6b368429ffadf14ed0a329996248a847a4322fb2e35d64d3", size = 207199 },
- { url = "https://files.pythonhosted.org/packages/40/ee/c88473c4f69c952f4425fabe045cb78d2027634ce50c9d7f7987d389b604/coverage-7.6.7-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:40cca284c7c310d622a1677f105e8507441d1bb7c226f41978ba7c86979609ab", size = 207454 },
- { url = "https://files.pythonhosted.org/packages/b8/07/afda6e10c50e3a8c21020c5c1d1b4f3d7eff1c190305cef2962adf8de018/coverage-7.6.7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77256ad2345c29fe59ae861aa11cfc74579c88d4e8dbf121cbe46b8e32aec808", size = 239971 },
- { url = "https://files.pythonhosted.org/packages/85/43/bd1934b75e31f2a49665be6a6b7f8bfaff7266ba19721bdb90239f5e9ed7/coverage-7.6.7-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:87ea64b9fa52bf395272e54020537990a28078478167ade6c61da7ac04dc14bc", size = 237119 },
- { url = "https://files.pythonhosted.org/packages/2b/19/7a70458c1624724086195b40628e91bc5b9ca180cdfefcc778285c49c7b2/coverage-7.6.7-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d608a7808793e3615e54e9267519351c3ae204a6d85764d8337bd95993581a8", size = 239109 },
- { url = "https://files.pythonhosted.org/packages/f3/2c/3dee671415ff13c05ca68243b2264fc95a5eea57697cffa7986b68b8f608/coverage-7.6.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdd94501d65adc5c24f8a1a0eda110452ba62b3f4aeaba01e021c1ed9cb8f34a", size = 238769 },
- { url = "https://files.pythonhosted.org/packages/37/ad/e0d1228638711aeacacc98d1197af6226b6d062d12c81a6bcc17d3234533/coverage-7.6.7-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:82c809a62e953867cf57e0548c2b8464207f5f3a6ff0e1e961683e79b89f2c55", size = 236854 },
- { url = "https://files.pythonhosted.org/packages/90/95/6467e9d9765a63c7f142703a7f212f6af114bd73a6c1cffeb7ad7f003a86/coverage-7.6.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:bb684694e99d0b791a43e9fc0fa58efc15ec357ac48d25b619f207c41f2fd384", size = 238701 },
- { url = "https://files.pythonhosted.org/packages/b2/7a/fc11a163f0fd6ce8539d0f1b565873fe6903b900214ff71b5d80d16154c3/coverage-7.6.7-cp313-cp313-win32.whl", hash = "sha256:963e4a08cbb0af6623e61492c0ec4c0ec5c5cf74db5f6564f98248d27ee57d30", size = 209865 },
- { url = "https://files.pythonhosted.org/packages/f2/91/58be3a56efff0c3481e48e2caa56d5d6f3c5c8d385bf4adbecdfd85484b0/coverage-7.6.7-cp313-cp313-win_amd64.whl", hash = "sha256:14045b8bfd5909196a90da145a37f9d335a5d988a83db34e80f41e965fb7cb42", size = 210597 },
- { url = "https://files.pythonhosted.org/packages/34/7e/fed983809c2eccb09c5ddccfdb08efb7f2dd1ae3454dabf1c92c5a2e9946/coverage-7.6.7-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:f2c7a045eef561e9544359a0bf5784b44e55cefc7261a20e730baa9220c83413", size = 207944 },
- { url = "https://files.pythonhosted.org/packages/c7/e0/2c1a157986a3927c3920e8e3938a3fdf33ea22b6f371dc3b679f13f619e2/coverage-7.6.7-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5dd4e4a49d9c72a38d18d641135d2fb0bdf7b726ca60a103836b3d00a1182acd", size = 208215 },
- { url = "https://files.pythonhosted.org/packages/35/2f/77b086b228f6443ae5499467d1629c7428925b390cd171350c403bc00f14/coverage-7.6.7-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c95e0fa3d1547cb6f021ab72f5c23402da2358beec0a8e6d19a368bd7b0fb37", size = 250930 },
- { url = "https://files.pythonhosted.org/packages/60/d8/2ffea937d89ee328fc6e47c2515b890735bdf3f195d507d1c78b5fa96939/coverage-7.6.7-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f63e21ed474edd23f7501f89b53280014436e383a14b9bd77a648366c81dce7b", size = 246647 },
- { url = "https://files.pythonhosted.org/packages/b2/81/efbb3b00a7f7eb5f54a3b3b9f19b26d770a0b7d3870d651f07d2451c5504/coverage-7.6.7-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ead9b9605c54d15be228687552916c89c9683c215370c4a44f1f217d2adcc34d", size = 249006 },
- { url = "https://files.pythonhosted.org/packages/eb/91/ce36990cbefaf7909e96c888ed4d83f3471fc1be3273a5beda10896cde0f/coverage-7.6.7-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:0573f5cbf39114270842d01872952d301027d2d6e2d84013f30966313cadb529", size = 248500 },
- { url = "https://files.pythonhosted.org/packages/75/3f/b8c87dfdd96276870fb4abc7e2957cba7d20d8a435fcd816d807869ec833/coverage-7.6.7-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:e2c8e3384c12dfa19fa9a52f23eb091a8fad93b5b81a41b14c17c78e23dd1d8b", size = 246388 },
- { url = "https://files.pythonhosted.org/packages/a0/51/62273e1d5c25bb8fbef5fbbadc75b4a3e08c11b80516d0a97c25e5cced5b/coverage-7.6.7-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:70a56a2ec1869e6e9fa69ef6b76b1a8a7ef709972b9cc473f9ce9d26b5997ce3", size = 247669 },
- { url = "https://files.pythonhosted.org/packages/75/e5/d7772e56a7eace80e98ac39f2756d4b690fc0ce2384418174e02519a26a8/coverage-7.6.7-cp313-cp313t-win32.whl", hash = "sha256:dbba8210f5067398b2c4d96b4e64d8fb943644d5eb70be0d989067c8ca40c0f8", size = 210510 },
- { url = "https://files.pythonhosted.org/packages/2d/12/f2666e4e36b43221391ffcd971ab0c50e19439c521c2c87cd7e0b49ddba2/coverage-7.6.7-cp313-cp313t-win_amd64.whl", hash = "sha256:dfd14bcae0c94004baba5184d1c935ae0d1231b8409eb6c103a5fd75e8ecdc56", size = 211660 },
- { url = "https://files.pythonhosted.org/packages/e1/ec/dc663f7d34651aca74a531d10800595d9ec28a78b8306705721900b17a23/coverage-7.6.7-pp39.pp310-none-any.whl", hash = "sha256:0ddcb70b3a3a57581b450571b31cb774f23eb9519c2aaa6176d3a84c9fc57671", size = 199113 },
+version = "7.6.9"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/5b/d2/c25011f4d036cf7e8acbbee07a8e09e9018390aee25ba085596c4b83d510/coverage-7.6.9.tar.gz", hash = "sha256:4a8d8977b0c6ef5aeadcb644da9e69ae0dcfe66ec7f368c89c72e058bd71164d", size = 801710 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/49/f3/f830fb53bf7e4f1d5542756f61d9b740352a188f43854aab9409c8cdeb18/coverage-7.6.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:85d9636f72e8991a1706b2b55b06c27545448baf9f6dbf51c4004609aacd7dcb", size = 207024 },
+ { url = "https://files.pythonhosted.org/packages/4e/e3/ea5632a3a6efd00ab0a791adc0f3e48512097a757ee7dcbee5505f57bafa/coverage-7.6.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:608a7fd78c67bee8936378299a6cb9f5149bb80238c7a566fc3e6717a4e68710", size = 207463 },
+ { url = "https://files.pythonhosted.org/packages/e4/ae/18ff8b5580e27e62ebcc888082aa47694c2772782ea7011ddf58e377e98f/coverage-7.6.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:96d636c77af18b5cb664ddf12dab9b15a0cfe9c0bde715da38698c8cea748bfa", size = 235902 },
+ { url = "https://files.pythonhosted.org/packages/6a/52/57030a8d15ab935624d298360f0a6704885578e39f7b4f68569e59f5902d/coverage-7.6.9-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d75cded8a3cff93da9edc31446872d2997e327921d8eed86641efafd350e1df1", size = 233806 },
+ { url = "https://files.pythonhosted.org/packages/d0/c5/4466602195ecaced298d55af1e29abceb812addabefd5bd9116a204f7bab/coverage-7.6.9-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7b15f589593110ae767ce997775d645b47e5cbbf54fd322f8ebea6277466cec", size = 234966 },
+ { url = "https://files.pythonhosted.org/packages/b0/1c/55552c3009b7bf96732e36548596ade771c87f89cf1f5a8e3975b33539b5/coverage-7.6.9-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:44349150f6811b44b25574839b39ae35291f6496eb795b7366fef3bd3cf112d3", size = 234029 },
+ { url = "https://files.pythonhosted.org/packages/bb/7d/da3dca6878701182ea42c51df47a47c80eaef2a76f5aa3e891dc2a8cce3f/coverage-7.6.9-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:d891c136b5b310d0e702e186d70cd16d1119ea8927347045124cb286b29297e5", size = 232494 },
+ { url = "https://files.pythonhosted.org/packages/28/cc/39de85ac1d5652bc34ff2bee39ae251b1fdcaae53fab4b44cab75a432bc0/coverage-7.6.9-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:db1dab894cc139f67822a92910466531de5ea6034ddfd2b11c0d4c6257168073", size = 233611 },
+ { url = "https://files.pythonhosted.org/packages/d1/2b/7eb011a9378911088708f121825a71134d0c15fac96972a0ae7a8f5a4049/coverage-7.6.9-cp310-cp310-win32.whl", hash = "sha256:41ff7b0da5af71a51b53f501a3bac65fb0ec311ebed1632e58fc6107f03b9198", size = 209712 },
+ { url = "https://files.pythonhosted.org/packages/5b/35/c3f40a2269b416db34ce1dedf682a7132c26f857e33596830fa4deebabf9/coverage-7.6.9-cp310-cp310-win_amd64.whl", hash = "sha256:35371f8438028fdccfaf3570b31d98e8d9eda8bb1d6ab9473f5a390969e98717", size = 210553 },
+ { url = "https://files.pythonhosted.org/packages/b1/91/b3dc2f7f38b5cca1236ab6bbb03e84046dd887707b4ec1db2baa47493b3b/coverage-7.6.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:932fc826442132dde42ee52cf66d941f581c685a6313feebed358411238f60f9", size = 207133 },
+ { url = "https://files.pythonhosted.org/packages/0d/2b/53fd6cb34d443429a92b3ec737f4953627e38b3bee2a67a3c03425ba8573/coverage-7.6.9-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:085161be5f3b30fd9b3e7b9a8c301f935c8313dcf928a07b116324abea2c1c2c", size = 207577 },
+ { url = "https://files.pythonhosted.org/packages/74/f2/68edb1e6826f980a124f21ea5be0d324180bf11de6fd1defcf9604f76df0/coverage-7.6.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ccc660a77e1c2bf24ddbce969af9447a9474790160cfb23de6be4fa88e3951c7", size = 239524 },
+ { url = "https://files.pythonhosted.org/packages/d3/83/8fec0ee68c2c4a5ab5f0f8527277f84ed6f2bd1310ae8a19d0c5532253ab/coverage-7.6.9-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c69e42c892c018cd3c8d90da61d845f50a8243062b19d228189b0224150018a9", size = 236925 },
+ { url = "https://files.pythonhosted.org/packages/8b/20/8f50e7c7ad271144afbc2c1c6ec5541a8c81773f59352f8db544cad1a0ec/coverage-7.6.9-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0824a28ec542a0be22f60c6ac36d679e0e262e5353203bea81d44ee81fe9c6d4", size = 238792 },
+ { url = "https://files.pythonhosted.org/packages/6f/62/4ac2e5ad9e7a5c9ec351f38947528e11541f1f00e8a0cdce56f1ba7ae301/coverage-7.6.9-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:4401ae5fc52ad8d26d2a5d8a7428b0f0c72431683f8e63e42e70606374c311a1", size = 237682 },
+ { url = "https://files.pythonhosted.org/packages/58/2f/9d2203f012f3b0533c73336c74134b608742be1ce475a5c72012573cfbb4/coverage-7.6.9-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:98caba4476a6c8d59ec1eb00c7dd862ba9beca34085642d46ed503cc2d440d4b", size = 236310 },
+ { url = "https://files.pythonhosted.org/packages/33/6d/31f6ab0b4f0f781636075f757eb02141ea1b34466d9d1526dbc586ed7078/coverage-7.6.9-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ee5defd1733fd6ec08b168bd4f5387d5b322f45ca9e0e6c817ea6c4cd36313e3", size = 237096 },
+ { url = "https://files.pythonhosted.org/packages/7d/fb/e14c38adebbda9ed8b5f7f8e03340ac05d68d27b24397f8d47478927a333/coverage-7.6.9-cp311-cp311-win32.whl", hash = "sha256:f2d1ec60d6d256bdf298cb86b78dd715980828f50c46701abc3b0a2b3f8a0dc0", size = 209682 },
+ { url = "https://files.pythonhosted.org/packages/a4/11/a782af39b019066af83fdc0e8825faaccbe9d7b19a803ddb753114b429cc/coverage-7.6.9-cp311-cp311-win_amd64.whl", hash = "sha256:0d59fd927b1f04de57a2ba0137166d31c1a6dd9e764ad4af552912d70428c92b", size = 210542 },
+ { url = "https://files.pythonhosted.org/packages/60/52/b16af8989a2daf0f80a88522bd8e8eed90b5fcbdecf02a6888f3e80f6ba7/coverage-7.6.9-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:99e266ae0b5d15f1ca8d278a668df6f51cc4b854513daab5cae695ed7b721cf8", size = 207325 },
+ { url = "https://files.pythonhosted.org/packages/0f/79/6b7826fca8846c1216a113227b9f114ac3e6eacf168b4adcad0cb974aaca/coverage-7.6.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9901d36492009a0a9b94b20e52ebfc8453bf49bb2b27bca2c9706f8b4f5a554a", size = 207563 },
+ { url = "https://files.pythonhosted.org/packages/a7/07/0bc73da0ccaf45d0d64ef86d33b7d7fdeef84b4c44bf6b85fb12c215c5a6/coverage-7.6.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abd3e72dd5b97e3af4246cdada7738ef0e608168de952b837b8dd7e90341f015", size = 240580 },
+ { url = "https://files.pythonhosted.org/packages/71/8a/9761f409910961647d892454687cedbaccb99aae828f49486734a82ede6e/coverage-7.6.9-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff74026a461eb0660366fb01c650c1d00f833a086b336bdad7ab00cc952072b3", size = 237613 },
+ { url = "https://files.pythonhosted.org/packages/8b/10/ee7d696a17ac94f32f2dbda1e17e730bf798ae9931aec1fc01c1944cd4de/coverage-7.6.9-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65dad5a248823a4996724a88eb51d4b31587aa7aa428562dbe459c684e5787ae", size = 239684 },
+ { url = "https://files.pythonhosted.org/packages/16/60/aa1066040d3c52fff051243c2d6ccda264da72dc6d199d047624d395b2b2/coverage-7.6.9-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:22be16571504c9ccea919fcedb459d5ab20d41172056206eb2994e2ff06118a4", size = 239112 },
+ { url = "https://files.pythonhosted.org/packages/4e/e5/69f35344c6f932ba9028bf168d14a79fedb0dd4849b796d43c81ce75a3c9/coverage-7.6.9-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f957943bc718b87144ecaee70762bc2bc3f1a7a53c7b861103546d3a403f0a6", size = 237428 },
+ { url = "https://files.pythonhosted.org/packages/32/20/adc895523c4a28f63441b8ac645abd74f9bdd499d2d175bef5b41fc7f92d/coverage-7.6.9-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0ae1387db4aecb1f485fb70a6c0148c6cdaebb6038f1d40089b1fc84a5db556f", size = 239098 },
+ { url = "https://files.pythonhosted.org/packages/a9/a6/e0e74230c9bb3549ec8ffc137cfd16ea5d56e993d6bffed2218bff6187e3/coverage-7.6.9-cp312-cp312-win32.whl", hash = "sha256:1a330812d9cc7ac2182586f6d41b4d0fadf9be9049f350e0efb275c8ee8eb692", size = 209940 },
+ { url = "https://files.pythonhosted.org/packages/3e/18/cb5b88349d4aa2f41ec78d65f92ea32572b30b3f55bc2b70e87578b8f434/coverage-7.6.9-cp312-cp312-win_amd64.whl", hash = "sha256:b12c6b18269ca471eedd41c1b6a1065b2f7827508edb9a7ed5555e9a56dcfc97", size = 210726 },
+ { url = "https://files.pythonhosted.org/packages/35/26/9abab6539d2191dbda2ce8c97b67d74cbfc966cc5b25abb880ffc7c459bc/coverage-7.6.9-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:899b8cd4781c400454f2f64f7776a5d87bbd7b3e7f7bda0cb18f857bb1334664", size = 207356 },
+ { url = "https://files.pythonhosted.org/packages/44/da/d49f19402240c93453f606e660a6676a2a1fbbaa6870cc23207790aa9697/coverage-7.6.9-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:61f70dc68bd36810972e55bbbe83674ea073dd1dcc121040a08cdf3416c5349c", size = 207614 },
+ { url = "https://files.pythonhosted.org/packages/da/e6/93bb9bf85497816082ec8da6124c25efa2052bd4c887dd3b317b91990c9e/coverage-7.6.9-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a289d23d4c46f1a82d5db4abeb40b9b5be91731ee19a379d15790e53031c014", size = 240129 },
+ { url = "https://files.pythonhosted.org/packages/df/65/6a824b9406fe066835c1274a9949e06f084d3e605eb1a602727a27ec2fe3/coverage-7.6.9-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e216d8044a356fc0337c7a2a0536d6de07888d7bcda76febcb8adc50bdbbd00", size = 237276 },
+ { url = "https://files.pythonhosted.org/packages/9f/79/6c7a800913a9dd23ac8c8da133ebb556771a5a3d4df36b46767b1baffd35/coverage-7.6.9-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c026eb44f744acaa2bda7493dad903aa5bf5fc4f2554293a798d5606710055d", size = 239267 },
+ { url = "https://files.pythonhosted.org/packages/57/e7/834d530293fdc8a63ba8ff70033d5182022e569eceb9aec7fc716b678a39/coverage-7.6.9-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e77363e8425325384f9d49272c54045bbed2f478e9dd698dbc65dbc37860eb0a", size = 238887 },
+ { url = "https://files.pythonhosted.org/packages/15/05/ec9d6080852984f7163c96984444e7cd98b338fd045b191064f943ee1c08/coverage-7.6.9-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:777abfab476cf83b5177b84d7486497e034eb9eaea0d746ce0c1268c71652077", size = 236970 },
+ { url = "https://files.pythonhosted.org/packages/0a/d8/775937670b93156aec29f694ce37f56214ed7597e1a75b4083ee4c32121c/coverage-7.6.9-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:447af20e25fdbe16f26e84eb714ba21d98868705cb138252d28bc400381f6ffb", size = 238831 },
+ { url = "https://files.pythonhosted.org/packages/f4/58/88551cb7fdd5ec98cb6044e8814e38583436b14040a5ece15349c44c8f7c/coverage-7.6.9-cp313-cp313-win32.whl", hash = "sha256:d872ec5aeb086cbea771c573600d47944eea2dcba8be5f3ee649bfe3cb8dc9ba", size = 210000 },
+ { url = "https://files.pythonhosted.org/packages/b7/12/cfbf49b95120872785ff8d56ab1c7fe3970a65e35010c311d7dd35c5fd00/coverage-7.6.9-cp313-cp313-win_amd64.whl", hash = "sha256:fd1213c86e48dfdc5a0cc676551db467495a95a662d2396ecd58e719191446e1", size = 210753 },
+ { url = "https://files.pythonhosted.org/packages/7c/68/c1cb31445599b04bde21cbbaa6d21b47c5823cdfef99eae470dfce49c35a/coverage-7.6.9-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:ba9e7484d286cd5a43744e5f47b0b3fb457865baf07bafc6bee91896364e1419", size = 208091 },
+ { url = "https://files.pythonhosted.org/packages/11/73/84b02c6b19c4a11eb2d5b5eabe926fb26c21c080e0852f5e5a4f01165f9e/coverage-7.6.9-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e5ea1cf0872ee455c03e5674b5bca5e3e68e159379c1af0903e89f5eba9ccc3a", size = 208369 },
+ { url = "https://files.pythonhosted.org/packages/de/e0/ae5d878b72ff26df2e994a5c5b1c1f6a7507d976b23beecb1ed4c85411ef/coverage-7.6.9-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d10e07aa2b91835d6abec555ec8b2733347956991901eea6ffac295f83a30e4", size = 251089 },
+ { url = "https://files.pythonhosted.org/packages/ab/9c/0aaac011aef95a93ef3cb2fba3fde30bc7e68a6635199ed469b1f5ea355a/coverage-7.6.9-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:13a9e2d3ee855db3dd6ea1ba5203316a1b1fd8eaeffc37c5b54987e61e4194ae", size = 246806 },
+ { url = "https://files.pythonhosted.org/packages/f8/19/4d5d3ae66938a7dcb2f58cef3fa5386f838f469575b0bb568c8cc9e3a33d/coverage-7.6.9-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c38bf15a40ccf5619fa2fe8f26106c7e8e080d7760aeccb3722664c8656b030", size = 249164 },
+ { url = "https://files.pythonhosted.org/packages/b3/0b/4ee8a7821f682af9ad440ae3c1e379da89a998883271f088102d7ca2473d/coverage-7.6.9-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:d5275455b3e4627c8e7154feaf7ee0743c2e7af82f6e3b561967b1cca755a0be", size = 248642 },
+ { url = "https://files.pythonhosted.org/packages/8a/12/36ff1d52be18a16b4700f561852e7afd8df56363a5edcfb04cf26a0e19e0/coverage-7.6.9-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:8f8770dfc6e2c6a2d4569f411015c8d751c980d17a14b0530da2d7f27ffdd88e", size = 246516 },
+ { url = "https://files.pythonhosted.org/packages/43/d0/8e258f6c3a527c1655602f4f576215e055ac704de2d101710a71a2affac2/coverage-7.6.9-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8d2dfa71665a29b153a9681edb1c8d9c1ea50dfc2375fb4dac99ea7e21a0bcd9", size = 247783 },
+ { url = "https://files.pythonhosted.org/packages/a9/0d/1e4a48d289429d38aae3babdfcadbf35ca36bdcf3efc8f09b550a845bdb5/coverage-7.6.9-cp313-cp313t-win32.whl", hash = "sha256:5e6b86b5847a016d0fbd31ffe1001b63355ed309651851295315031ea7eb5a9b", size = 210646 },
+ { url = "https://files.pythonhosted.org/packages/26/74/b0729f196f328ac55e42b1e22ec2f16d8bcafe4b8158a26ec9f1cdd1d93e/coverage-7.6.9-cp313-cp313t-win_amd64.whl", hash = "sha256:97ddc94d46088304772d21b060041c97fc16bdda13c6c7f9d8fcd8d5ae0d8611", size = 211815 },
+ { url = "https://files.pythonhosted.org/packages/15/0e/4ac9035ee2ee08d2b703fdad2d84283ec0bad3b46eb4ad6affb150174cb6/coverage-7.6.9-pp39.pp310-none-any.whl", hash = "sha256:f3ca78518bc6bc92828cd11867b121891d75cae4ea9e908d72030609b996db1b", size = 199270 },
]
[package.optional-dependencies]
@@ -812,35 +809,39 @@ toml = [
[[package]]
name = "cryptography"
-version = "43.0.3"
+version = "44.0.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "cffi", marker = "(platform_python_implementation != 'PyPy' and sys_platform == 'darwin') or (platform_python_implementation != 'PyPy' and sys_platform == 'linux') or (platform_python_implementation != 'PyPy' and sys_platform == 'win32')" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/0d/05/07b55d1fa21ac18c3a8c79f764e2514e6f6a9698f1be44994f5adf0d29db/cryptography-43.0.3.tar.gz", hash = "sha256:315b9001266a492a6ff443b61238f956b214dbec9910a081ba5b6646a055a805", size = 686989 }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/1f/f3/01fdf26701a26f4b4dbc337a26883ad5bccaa6f1bbbdd29cd89e22f18a1c/cryptography-43.0.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:bf7a1932ac4176486eab36a19ed4c0492da5d97123f1406cf15e41b05e787d2e", size = 6225303 },
- { url = "https://files.pythonhosted.org/packages/a3/01/4896f3d1b392025d4fcbecf40fdea92d3df8662123f6835d0af828d148fd/cryptography-43.0.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63efa177ff54aec6e1c0aefaa1a241232dcd37413835a9b674b6e3f0ae2bfd3e", size = 3760905 },
- { url = "https://files.pythonhosted.org/packages/0a/be/f9a1f673f0ed4b7f6c643164e513dbad28dd4f2dcdf5715004f172ef24b6/cryptography-43.0.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e1ce50266f4f70bf41a2c6dc4358afadae90e2a1e5342d3c08883df1675374f", size = 3977271 },
- { url = "https://files.pythonhosted.org/packages/4e/49/80c3a7b5514d1b416d7350830e8c422a4d667b6d9b16a9392ebfd4a5388a/cryptography-43.0.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:443c4a81bb10daed9a8f334365fe52542771f25aedaf889fd323a853ce7377d6", size = 3746606 },
- { url = "https://files.pythonhosted.org/packages/0e/16/a28ddf78ac6e7e3f25ebcef69ab15c2c6be5ff9743dd0709a69a4f968472/cryptography-43.0.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:74f57f24754fe349223792466a709f8e0c093205ff0dca557af51072ff47ab18", size = 3986484 },
- { url = "https://files.pythonhosted.org/packages/01/f5/69ae8da70c19864a32b0315049866c4d411cce423ec169993d0434218762/cryptography-43.0.3-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9762ea51a8fc2a88b70cf2995e5675b38d93bf36bd67d91721c309df184f49bd", size = 3852131 },
- { url = "https://files.pythonhosted.org/packages/fd/db/e74911d95c040f9afd3612b1f732e52b3e517cb80de8bf183be0b7d413c6/cryptography-43.0.3-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:81ef806b1fef6b06dcebad789f988d3b37ccaee225695cf3e07648eee0fc6b73", size = 4075647 },
- { url = "https://files.pythonhosted.org/packages/56/48/7b6b190f1462818b324e674fa20d1d5ef3e24f2328675b9b16189cbf0b3c/cryptography-43.0.3-cp37-abi3-win32.whl", hash = "sha256:cbeb489927bd7af4aa98d4b261af9a5bc025bd87f0e3547e11584be9e9427be2", size = 2623873 },
- { url = "https://files.pythonhosted.org/packages/eb/b1/0ebff61a004f7f89e7b65ca95f2f2375679d43d0290672f7713ee3162aff/cryptography-43.0.3-cp37-abi3-win_amd64.whl", hash = "sha256:f46304d6f0c6ab8e52770addfa2fc41e6629495548862279641972b6215451cd", size = 3068039 },
- { url = "https://files.pythonhosted.org/packages/30/d5/c8b32c047e2e81dd172138f772e81d852c51f0f2ad2ae8a24f1122e9e9a7/cryptography-43.0.3-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:8ac43ae87929a5982f5948ceda07001ee5e83227fd69cf55b109144938d96984", size = 6222984 },
- { url = "https://files.pythonhosted.org/packages/2f/78/55356eb9075d0be6e81b59f45c7b48df87f76a20e73893872170471f3ee8/cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:846da004a5804145a5f441b8530b4bf35afbf7da70f82409f151695b127213d5", size = 3762968 },
- { url = "https://files.pythonhosted.org/packages/2a/2c/488776a3dc843f95f86d2f957ca0fc3407d0242b50bede7fad1e339be03f/cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f996e7268af62598f2fc1204afa98a3b5712313a55c4c9d434aef49cadc91d4", size = 3977754 },
- { url = "https://files.pythonhosted.org/packages/7c/04/2345ca92f7a22f601a9c62961741ef7dd0127c39f7310dffa0041c80f16f/cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:f7b178f11ed3664fd0e995a47ed2b5ff0a12d893e41dd0494f406d1cf555cab7", size = 3749458 },
- { url = "https://files.pythonhosted.org/packages/ac/25/e715fa0bc24ac2114ed69da33adf451a38abb6f3f24ec207908112e9ba53/cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:c2e6fc39c4ab499049df3bdf567f768a723a5e8464816e8f009f121a5a9f4405", size = 3988220 },
- { url = "https://files.pythonhosted.org/packages/21/ce/b9c9ff56c7164d8e2edfb6c9305045fbc0df4508ccfdb13ee66eb8c95b0e/cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:e1be4655c7ef6e1bbe6b5d0403526601323420bcf414598955968c9ef3eb7d16", size = 3853898 },
- { url = "https://files.pythonhosted.org/packages/2a/33/b3682992ab2e9476b9c81fff22f02c8b0a1e6e1d49ee1750a67d85fd7ed2/cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:df6b6c6d742395dd77a23ea3728ab62f98379eff8fb61be2744d4679ab678f73", size = 4076592 },
- { url = "https://files.pythonhosted.org/packages/81/1e/ffcc41b3cebd64ca90b28fd58141c5f68c83d48563c88333ab660e002cd3/cryptography-43.0.3-cp39-abi3-win32.whl", hash = "sha256:d56e96520b1020449bbace2b78b603442e7e378a9b3bd68de65c782db1507995", size = 2623145 },
- { url = "https://files.pythonhosted.org/packages/87/5c/3dab83cc4aba1f4b0e733e3f0c3e7d4386440d660ba5b1e3ff995feb734d/cryptography-43.0.3-cp39-abi3-win_amd64.whl", hash = "sha256:0c580952eef9bf68c4747774cde7ec1d85a6e61de97281f2dba83c7d2c806362", size = 3068026 },
- { url = "https://files.pythonhosted.org/packages/6f/db/d8b8a039483f25fc3b70c90bc8f3e1d4497a99358d610c5067bf3bd4f0af/cryptography-43.0.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d03b5621a135bffecad2c73e9f4deb1a0f977b9a8ffe6f8e002bf6c9d07b918c", size = 3144545 },
- { url = "https://files.pythonhosted.org/packages/93/90/116edd5f8ec23b2dc879f7a42443e073cdad22950d3c8ee834e3b8124543/cryptography-43.0.3-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:a2a431ee15799d6db9fe80c82b055bae5a752bef645bba795e8e52687c69efe3", size = 3679828 },
- { url = "https://files.pythonhosted.org/packages/d8/32/1e1d78b316aa22c0ba6493cc271c1c309969e5aa5c22c830a1d7ce3471e6/cryptography-43.0.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:281c945d0e28c92ca5e5930664c1cefd85efe80e5c0d2bc58dd63383fda29f83", size = 3908132 },
- { url = "https://files.pythonhosted.org/packages/91/bb/cd2c13be3332e7af3cdf16154147952d39075b9f61ea5e6b5241bf4bf436/cryptography-43.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:f18c716be16bc1fea8e95def49edf46b82fccaa88587a45f8dc0ff6ab5d8e0a7", size = 2988811 },
+sdist = { url = "https://files.pythonhosted.org/packages/91/4c/45dfa6829acffa344e3967d6006ee4ae8be57af746ae2eba1c431949b32c/cryptography-44.0.0.tar.gz", hash = "sha256:cd4e834f340b4293430701e772ec543b0fbe6c2dea510a5286fe0acabe153a02", size = 710657 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/55/09/8cc67f9b84730ad330b3b72cf867150744bf07ff113cda21a15a1c6d2c7c/cryptography-44.0.0-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:84111ad4ff3f6253820e6d3e58be2cc2a00adb29335d4cacb5ab4d4d34f2a123", size = 6541833 },
+ { url = "https://files.pythonhosted.org/packages/7e/5b/3759e30a103144e29632e7cb72aec28cedc79e514b2ea8896bb17163c19b/cryptography-44.0.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b15492a11f9e1b62ba9d73c210e2416724633167de94607ec6069ef724fad092", size = 3922710 },
+ { url = "https://files.pythonhosted.org/packages/5f/58/3b14bf39f1a0cfd679e753e8647ada56cddbf5acebffe7db90e184c76168/cryptography-44.0.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:831c3c4d0774e488fdc83a1923b49b9957d33287de923d58ebd3cec47a0ae43f", size = 4137546 },
+ { url = "https://files.pythonhosted.org/packages/98/65/13d9e76ca19b0ba5603d71ac8424b5694415b348e719db277b5edc985ff5/cryptography-44.0.0-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:761817a3377ef15ac23cd7834715081791d4ec77f9297ee694ca1ee9c2c7e5eb", size = 3915420 },
+ { url = "https://files.pythonhosted.org/packages/b1/07/40fe09ce96b91fc9276a9ad272832ead0fddedcba87f1190372af8e3039c/cryptography-44.0.0-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3c672a53c0fb4725a29c303be906d3c1fa99c32f58abe008a82705f9ee96f40b", size = 4154498 },
+ { url = "https://files.pythonhosted.org/packages/75/ea/af65619c800ec0a7e4034207aec543acdf248d9bffba0533342d1bd435e1/cryptography-44.0.0-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:4ac4c9f37eba52cb6fbeaf5b59c152ea976726b865bd4cf87883a7e7006cc543", size = 3932569 },
+ { url = "https://files.pythonhosted.org/packages/c7/af/d1deb0c04d59612e3d5e54203159e284d3e7a6921e565bb0eeb6269bdd8a/cryptography-44.0.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ed3534eb1090483c96178fcb0f8893719d96d5274dfde98aa6add34614e97c8e", size = 4016721 },
+ { url = "https://files.pythonhosted.org/packages/bd/69/7ca326c55698d0688db867795134bdfac87136b80ef373aaa42b225d6dd5/cryptography-44.0.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:f3f6fdfa89ee2d9d496e2c087cebef9d4fcbb0ad63c40e821b39f74bf48d9c5e", size = 4240915 },
+ { url = "https://files.pythonhosted.org/packages/ef/d4/cae11bf68c0f981e0413906c6dd03ae7fa864347ed5fac40021df1ef467c/cryptography-44.0.0-cp37-abi3-win32.whl", hash = "sha256:eb33480f1bad5b78233b0ad3e1b0be21e8ef1da745d8d2aecbb20671658b9053", size = 2757925 },
+ { url = "https://files.pythonhosted.org/packages/64/b1/50d7739254d2002acae64eed4fc43b24ac0cc44bf0a0d388d1ca06ec5bb1/cryptography-44.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:abc998e0c0eee3c8a1904221d3f67dcfa76422b23620173e28c11d3e626c21bd", size = 3202055 },
+ { url = "https://files.pythonhosted.org/packages/11/18/61e52a3d28fc1514a43b0ac291177acd1b4de00e9301aaf7ef867076ff8a/cryptography-44.0.0-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:660cb7312a08bc38be15b696462fa7cc7cd85c3ed9c576e81f4dc4d8b2b31591", size = 6542801 },
+ { url = "https://files.pythonhosted.org/packages/1a/07/5f165b6c65696ef75601b781a280fc3b33f1e0cd6aa5a92d9fb96c410e97/cryptography-44.0.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1923cb251c04be85eec9fda837661c67c1049063305d6be5721643c22dd4e2b7", size = 3922613 },
+ { url = "https://files.pythonhosted.org/packages/28/34/6b3ac1d80fc174812486561cf25194338151780f27e438526f9c64e16869/cryptography-44.0.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:404fdc66ee5f83a1388be54300ae978b2efd538018de18556dde92575e05defc", size = 4137925 },
+ { url = "https://files.pythonhosted.org/packages/d0/c7/c656eb08fd22255d21bc3129625ed9cd5ee305f33752ef2278711b3fa98b/cryptography-44.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:c5eb858beed7835e5ad1faba59e865109f3e52b3783b9ac21e7e47dc5554e289", size = 3915417 },
+ { url = "https://files.pythonhosted.org/packages/ef/82/72403624f197af0db6bac4e58153bc9ac0e6020e57234115db9596eee85d/cryptography-44.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f53c2c87e0fb4b0c00fa9571082a057e37690a8f12233306161c8f4b819960b7", size = 4155160 },
+ { url = "https://files.pythonhosted.org/packages/a2/cd/2f3c440913d4329ade49b146d74f2e9766422e1732613f57097fea61f344/cryptography-44.0.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:9e6fc8a08e116fb7c7dd1f040074c9d7b51d74a8ea40d4df2fc7aa08b76b9e6c", size = 3932331 },
+ { url = "https://files.pythonhosted.org/packages/7f/df/8be88797f0a1cca6e255189a57bb49237402b1880d6e8721690c5603ac23/cryptography-44.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:d2436114e46b36d00f8b72ff57e598978b37399d2786fd39793c36c6d5cb1c64", size = 4017372 },
+ { url = "https://files.pythonhosted.org/packages/af/36/5ccc376f025a834e72b8e52e18746b927f34e4520487098e283a719c205e/cryptography-44.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a01956ddfa0a6790d594f5b34fc1bfa6098aca434696a03cfdbe469b8ed79285", size = 4239657 },
+ { url = "https://files.pythonhosted.org/packages/46/b0/f4f7d0d0bcfbc8dd6296c1449be326d04217c57afb8b2594f017eed95533/cryptography-44.0.0-cp39-abi3-win32.whl", hash = "sha256:eca27345e1214d1b9f9490d200f9db5a874479be914199194e746c893788d417", size = 2758672 },
+ { url = "https://files.pythonhosted.org/packages/97/9b/443270b9210f13f6ef240eff73fd32e02d381e7103969dc66ce8e89ee901/cryptography-44.0.0-cp39-abi3-win_amd64.whl", hash = "sha256:708ee5f1bafe76d041b53a4f95eb28cdeb8d18da17e597d46d7833ee59b97ede", size = 3202071 },
+ { url = "https://files.pythonhosted.org/packages/77/d4/fea74422326388bbac0c37b7489a0fcb1681a698c3b875959430ba550daa/cryptography-44.0.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:37d76e6863da3774cd9db5b409a9ecfd2c71c981c38788d3fcfaf177f447b731", size = 3338857 },
+ { url = "https://files.pythonhosted.org/packages/1a/aa/ba8a7467c206cb7b62f09b4168da541b5109838627f582843bbbe0235e8e/cryptography-44.0.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:f677e1268c4e23420c3acade68fac427fffcb8d19d7df95ed7ad17cdef8404f4", size = 3850615 },
+ { url = "https://files.pythonhosted.org/packages/89/fa/b160e10a64cc395d090105be14f399b94e617c879efd401188ce0fea39ee/cryptography-44.0.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f5e7cb1e5e56ca0933b4873c0220a78b773b24d40d186b6738080b73d3d0a756", size = 4081622 },
+ { url = "https://files.pythonhosted.org/packages/47/8f/20ff0656bb0cf7af26ec1d01f780c5cfbaa7666736063378c5f48558b515/cryptography-44.0.0-pp310-pypy310_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:8b3e6eae66cf54701ee7d9c83c30ac0a1e3fa17be486033000f2a73a12ab507c", size = 3867546 },
+ { url = "https://files.pythonhosted.org/packages/38/d9/28edf32ee2fcdca587146bcde90102a7319b2f2c690edfa627e46d586050/cryptography-44.0.0-pp310-pypy310_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:be4ce505894d15d5c5037167ffb7f0ae90b7be6f2a98f9a5c3442395501c32fa", size = 4090937 },
+ { url = "https://files.pythonhosted.org/packages/cc/9d/37e5da7519de7b0b070a3fedd4230fe76d50d2a21403e0f2153d70ac4163/cryptography-44.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:62901fb618f74d7d81bf408c8719e9ec14d863086efe4185afd07c352aee1d2c", size = 3128774 },
]
[[package]]
@@ -876,27 +877,27 @@ wheels = [
[[package]]
name = "debugpy"
-version = "1.8.8"
-source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/e4/5e/7667b95c9d7ddb25c047143a3a47685f9be2a5d3d177a85a730b22dc6e5c/debugpy-1.8.8.zip", hash = "sha256:e6355385db85cbd666be703a96ab7351bc9e6c61d694893206f8001e22aee091", size = 4928684 }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/77/79/677d71c342d5f24baf81d262c9e0c19cac3b17b4e4587c0574eaa3964ab1/debugpy-1.8.8-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:e59b1607c51b71545cb3496876544f7186a7a27c00b436a62f285603cc68d1c6", size = 2088337 },
- { url = "https://files.pythonhosted.org/packages/11/b3/4119fa89b66bcc64a3b186ea52ee7c22bccc5d1765ee890887678b0e3e76/debugpy-1.8.8-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6531d952b565b7cb2fbd1ef5df3d333cf160b44f37547a4e7cf73666aca5d8d", size = 3567953 },
- { url = "https://files.pythonhosted.org/packages/e8/4a/01f70b44af27c13d720446ce9bf14467c90411e90e6c6ffbb7c45845d23d/debugpy-1.8.8-cp310-cp310-win32.whl", hash = "sha256:b01f4a5e5c5fb1d34f4ccba99a20ed01eabc45a4684f4948b5db17a319dfb23f", size = 5128658 },
- { url = "https://files.pythonhosted.org/packages/2b/a5/c4210f3842db0911a49b3030bfc217e0772bfd33d7aa50996bc762e8a334/debugpy-1.8.8-cp310-cp310-win_amd64.whl", hash = "sha256:535f4fb1c024ddca5913bb0eb17880c8f24ba28aa2c225059db145ee557035e9", size = 5157545 },
- { url = "https://files.pythonhosted.org/packages/38/55/6b5596ea6d5490e17abc2896f1fbe83d31205a22629805daccd30686721c/debugpy-1.8.8-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:c399023146e40ae373753a58d1be0a98bf6397fadc737b97ad612886b53df318", size = 2187057 },
- { url = "https://files.pythonhosted.org/packages/3f/f7/c2ee07f6335c3620c1435aef2c4d3d4853f6b7fb0789aa2c52a84498ef90/debugpy-1.8.8-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:09cc7b162586ea2171eea055985da2702b0723f6f907a423c9b2da5996ad67ba", size = 3139844 },
- { url = "https://files.pythonhosted.org/packages/0d/68/01d335338b68bdebab11de573f4631c7bf0404666ccbf474621123497702/debugpy-1.8.8-cp311-cp311-win32.whl", hash = "sha256:eea8821d998ebeb02f0625dd0d76839ddde8cbf8152ebbe289dd7acf2cdc6b98", size = 5049405 },
- { url = "https://files.pythonhosted.org/packages/22/1d/3f69460b4b8f01dace3882513de71a446eb37ee57fe2112be948fadebde8/debugpy-1.8.8-cp311-cp311-win_amd64.whl", hash = "sha256:d4483836da2a533f4b1454dffc9f668096ac0433de855f0c22cdce8c9f7e10c4", size = 5075025 },
- { url = "https://files.pythonhosted.org/packages/c2/04/8e79824c4d9100049bda056aeaf8f2765d1325a4521a87f8bb373c977236/debugpy-1.8.8-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:0cc94186340be87b9ac5a707184ec8f36547fb66636d1029ff4f1cc020e53996", size = 2514549 },
- { url = "https://files.pythonhosted.org/packages/a5/6b/c336d1eba1aedc9f654aefcdfe47ec41657d149f28ca1477c5f9009681c6/debugpy-1.8.8-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64674e95916e53c2e9540a056e5f489e0ad4872645399d778f7c598eacb7b7f9", size = 4229617 },
- { url = "https://files.pythonhosted.org/packages/63/9c/d9276c41e9e14164b31bcba789c87a355c091d0fc2d4e4e36a4881c9aa54/debugpy-1.8.8-cp312-cp312-win32.whl", hash = "sha256:5c6e885dbf12015aed73770f29dec7023cb310d0dc2ba8bfbeb5c8e43f80edc9", size = 5167033 },
- { url = "https://files.pythonhosted.org/packages/6d/1c/fd4bc22196b2d0defaa9f644ea4d676d0cb53b6434091b5fa2d4e49c85f2/debugpy-1.8.8-cp312-cp312-win_amd64.whl", hash = "sha256:19ffbd84e757a6ca0113574d1bf5a2298b3947320a3e9d7d8dc3377f02d9f864", size = 5209968 },
- { url = "https://files.pythonhosted.org/packages/90/45/6745f342bbf41bde7eb5dbf5567b794a4a5498a7a729146cb3101b875b30/debugpy-1.8.8-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:705cd123a773d184860ed8dae99becd879dfec361098edbefb5fc0d3683eb804", size = 2499523 },
- { url = "https://files.pythonhosted.org/packages/5c/39/0374610062a384648db9b7b315d0c906facf23613bfd19527135a7c0a420/debugpy-1.8.8-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:890fd16803f50aa9cb1a9b9b25b5ec321656dd6b78157c74283de241993d086f", size = 4218219 },
- { url = "https://files.pythonhosted.org/packages/cc/19/5b8a68eb9bbafd6bfd27ba0ed93d411f3fd50935ecdd2df242de2110a7c9/debugpy-1.8.8-cp313-cp313-win32.whl", hash = "sha256:90244598214bbe704aa47556ec591d2f9869ff9e042e301a2859c57106649add", size = 5171845 },
- { url = "https://files.pythonhosted.org/packages/cd/04/7381dab68e40ca877d5beffc25ad1a0d3d2557cf7465405435fac9e27ef5/debugpy-1.8.8-cp313-cp313-win_amd64.whl", hash = "sha256:4b93e4832fd4a759a0c465c967214ed0c8a6e8914bced63a28ddb0dd8c5f078b", size = 5206890 },
- { url = "https://files.pythonhosted.org/packages/03/99/ec2190d03df5dbd610418919bd1c3d8e6f61d0a97894e11ade6d3260cfb8/debugpy-1.8.8-py2.py3-none-any.whl", hash = "sha256:ec684553aba5b4066d4de510859922419febc710df7bba04fe9e7ef3de15d34f", size = 5157124 },
+version = "1.8.9"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/88/92/15b454c516c4c53cc8c03967e4be12b65a1ea36db3bb4513a7453f75c8d8/debugpy-1.8.9.zip", hash = "sha256:1339e14c7d980407248f09824d1b25ff5c5616651689f1e0f0e51bdead3ea13e", size = 4921695 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/d0/2e/92fda96b1b773e454daae3e2962726dd9f7aedb1f26d7f2ca353d91a930b/debugpy-1.8.9-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:cfe1e6c6ad7178265f74981edf1154ffce97b69005212fbc90ca22ddfe3d017e", size = 2080529 },
+ { url = "https://files.pythonhosted.org/packages/87/c0/d13cdbae394c7ae65ef93d7ccde2ff364445248e367bda93fc0650c08849/debugpy-1.8.9-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ada7fb65102a4d2c9ab62e8908e9e9f12aed9d76ef44880367bc9308ebe49a0f", size = 3565151 },
+ { url = "https://files.pythonhosted.org/packages/23/40/237c0a7a68cb982dcced4a0199b7c464630f75b9280d6bebde32490135d1/debugpy-1.8.9-cp310-cp310-win32.whl", hash = "sha256:c36856343cbaa448171cba62a721531e10e7ffb0abff838004701454149bc037", size = 5117068 },
+ { url = "https://files.pythonhosted.org/packages/00/89/e0be9f01ee461e3369dde418492244acb1b67adaf04cb5ea98f1380ab101/debugpy-1.8.9-cp310-cp310-win_amd64.whl", hash = "sha256:17c5e0297678442511cf00a745c9709e928ea4ca263d764e90d233208889a19e", size = 5149364 },
+ { url = "https://files.pythonhosted.org/packages/f7/bf/c41b688ad490d644b3bcca505a87ea58ec0442234def9a641ba62dce9c11/debugpy-1.8.9-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:b74a49753e21e33e7cf030883a92fa607bddc4ede1aa4145172debc637780040", size = 2179080 },
+ { url = "https://files.pythonhosted.org/packages/f4/dd/e9de11423db7bde62469fbd932243c64f66d6d87924976f49ec336415522/debugpy-1.8.9-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62d22dacdb0e296966d7d74a7141aaab4bec123fa43d1a35ddcb39bf9fd29d70", size = 3137893 },
+ { url = "https://files.pythonhosted.org/packages/2c/bf/e1f2c81220591728f35585b4abd67e71e9b39b3cb983f428b23d4ca6c22e/debugpy-1.8.9-cp311-cp311-win32.whl", hash = "sha256:8138efff315cd09b8dcd14226a21afda4ca582284bf4215126d87342bba1cc66", size = 5042644 },
+ { url = "https://files.pythonhosted.org/packages/96/20/a407252954fd2812771e4ea3ab523f73889fd5027e305dec5ee4f0af149a/debugpy-1.8.9-cp311-cp311-win_amd64.whl", hash = "sha256:ff54ef77ad9f5c425398efb150239f6fe8e20c53ae2f68367eba7ece1e96226d", size = 5066943 },
+ { url = "https://files.pythonhosted.org/packages/da/ab/1420baf8404d2b499349a44de5037133e06d489009032ce016fedb66eea1/debugpy-1.8.9-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:957363d9a7a6612a37458d9a15e72d03a635047f946e5fceee74b50d52a9c8e2", size = 2504180 },
+ { url = "https://files.pythonhosted.org/packages/58/ec/e0f88c6764314bda7887274e0b980812709b3d6363dcae124a49a9ceaa3c/debugpy-1.8.9-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e565fc54b680292b418bb809f1386f17081d1346dca9a871bf69a8ac4071afe", size = 4224563 },
+ { url = "https://files.pythonhosted.org/packages/dd/49/d9ea004ee2e4531d2b528841689ee2ba01c6a4b58840efd15e57dd866a86/debugpy-1.8.9-cp312-cp312-win32.whl", hash = "sha256:3e59842d6c4569c65ceb3751075ff8d7e6a6ada209ceca6308c9bde932bcef11", size = 5163641 },
+ { url = "https://files.pythonhosted.org/packages/b1/63/c8b0718024c1187a446316037680e1564bf063c6665c815f17b42c244aba/debugpy-1.8.9-cp312-cp312-win_amd64.whl", hash = "sha256:66eeae42f3137eb428ea3a86d4a55f28da9bd5a4a3d369ba95ecc3a92c1bba53", size = 5203862 },
+ { url = "https://files.pythonhosted.org/packages/cc/8d/eb12dcb977a2d166aac6614e60daddd1eef72881a0343717d7deb0d4868c/debugpy-1.8.9-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:957ecffff80d47cafa9b6545de9e016ae8c9547c98a538ee96ab5947115fb3dd", size = 2489077 },
+ { url = "https://files.pythonhosted.org/packages/87/2b/3b7a00d8d2bb891cfa33240575c2d5fc3fa6e0bc75567f4ece59b9d3d6ea/debugpy-1.8.9-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1efbb3ff61487e2c16b3e033bc8595aea578222c08aaf3c4bf0f93fadbd662ee", size = 4219198 },
+ { url = "https://files.pythonhosted.org/packages/5f/a1/f489026a65fabfff8c73bd51b880c130d636e02b1847564141fe3957d94f/debugpy-1.8.9-cp313-cp313-win32.whl", hash = "sha256:7c4d65d03bee875bcb211c76c1d8f10f600c305dbd734beaed4077e902606fee", size = 5163014 },
+ { url = "https://files.pythonhosted.org/packages/e6/84/6070908dd163121358eb9d76fcc94f05bc99d2f89a85fe1b86167bc34ec6/debugpy-1.8.9-cp313-cp313-win_amd64.whl", hash = "sha256:e46b420dc1bea64e5bbedd678148be512442bc589b0111bd799367cde051e71a", size = 5203529 },
+ { url = "https://files.pythonhosted.org/packages/2d/23/3f5804202da11c950dc0caae4a62d0c9aadabdb2daeb5f7aa09838647b5d/debugpy-1.8.9-py2.py3-none-any.whl", hash = "sha256:cc37a6c9987ad743d9c3a14fa1b1a14b7e4e6041f9dd0c8abf8895fe7a97b899", size = 5166094 },
]
[[package]]
@@ -986,19 +987,6 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/4c/a3/ac312faeceffd2d8f86bc6dcb5c401188ba5a01bc88e69bed97578a0dfcd/durationpy-0.9-py3-none-any.whl", hash = "sha256:e65359a7af5cedad07fb77a2dd3f390f8eb0b74cb845589fa6c057086834dd38", size = 3461 },
]
-[[package]]
-name = "environs"
-version = "9.5.0"
-source = { registry = "https://pypi.org/simple" }
-dependencies = [
- { name = "marshmallow", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
- { name = "python-dotenv", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
-]
-sdist = { url = "https://files.pythonhosted.org/packages/d4/e3/c3c6c76f3dbe3e019e9a451b35bf9f44690026a5bb1232f7b77097b72ff5/environs-9.5.0.tar.gz", hash = "sha256:a76307b36fbe856bdca7ee9161e6c466fd7fcffc297109a118c59b54e27e30c9", size = 20795 }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/ca/5e/f0f217dc393372681bfe05c50f06a212e78d0a3fee907a74ab451ec1dcdb/environs-9.5.0-py2.py3-none-any.whl", hash = "sha256:1e549569a3de49c05f856f40bce86979e7d5ffbbc4398e7f338574c220189124", size = 12548 },
-]
-
[[package]]
name = "eval-type-backport"
version = "0.2.0"
@@ -1037,25 +1025,25 @@ wheels = [
[[package]]
name = "fastapi"
-version = "0.115.5"
+version = "0.115.6"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "pydantic", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "starlette", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "typing-extensions", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/ae/29/f71316b9273b6552a263748e49cd7b83898dc9499a663d30c7b9cb853cb8/fastapi-0.115.5.tar.gz", hash = "sha256:0e7a4d0dc0d01c68df21887cce0945e72d3c48b9f4f79dfe7a7d53aa08fbb289", size = 301047 }
+sdist = { url = "https://files.pythonhosted.org/packages/93/72/d83b98cd106541e8f5e5bfab8ef2974ab45a62e8a6c5b5e6940f26d2ed4b/fastapi-0.115.6.tar.gz", hash = "sha256:9ec46f7addc14ea472958a96aae5b5de65f39721a46aaf5705c480d9a8b76654", size = 301336 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/54/c4/148d5046a96c428464557264877ae5a9338a83bbe0df045088749ec89820/fastapi-0.115.5-py3-none-any.whl", hash = "sha256:596b95adbe1474da47049e802f9a65ab2ffa9c2b07e7efee70eb8a66c9f2f796", size = 94866 },
+ { url = "https://files.pythonhosted.org/packages/52/b3/7e4df40e585df024fac2f80d1a2d579c854ac37109675db2b0cc22c0bb9e/fastapi-0.115.6-py3-none-any.whl", hash = "sha256:e9240b29e36fa8f4bb7290316988e90c381e5092e0cbe84e7818cc3713bcf305", size = 94843 },
]
[[package]]
name = "fastjsonschema"
-version = "2.20.0"
+version = "2.21.1"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/03/3f/3ad5e7be13b4b8b55f4477141885ab2364f65d5f6ad5f7a9daffd634d066/fastjsonschema-2.20.0.tar.gz", hash = "sha256:3d48fc5300ee96f5d116f10fe6f28d938e6008f59a6a025c2649475b87f76a23", size = 373056 }
+sdist = { url = "https://files.pythonhosted.org/packages/8b/50/4b769ce1ac4071a1ef6d86b1a3fb56cdc3a37615e8c5519e1af96cdac366/fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4", size = 373939 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/6d/ca/086311cdfc017ec964b2436fe0c98c1f4efcb7e4c328956a22456e497655/fastjsonschema-2.20.0-py3-none-any.whl", hash = "sha256:5875f0b0fa7a0043a91e93a9b8f793bcbbba9691e7fd83dca95c28ba26d21f0a", size = 23543 },
+ { url = "https://files.pythonhosted.org/packages/90/2b/0817a2b257fe88725c25589d89aec060581aabf668707a8d03b2e9e0cb2a/fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667", size = 23924 },
]
[[package]]
@@ -1200,7 +1188,7 @@ wheels = [
[[package]]
name = "google-api-core"
-version = "2.23.0"
+version = "2.24.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "google-auth", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
@@ -1209,9 +1197,9 @@ dependencies = [
{ name = "protobuf", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "requests", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/fa/6b/b98553c2061c4e2186f5bbfb1aa1a6ef13fc0775c096d18595d3c99ba023/google_api_core-2.23.0.tar.gz", hash = "sha256:2ceb087315e6af43f256704b871d99326b1f12a9d6ce99beaedec99ba26a0ace", size = 160094 }
+sdist = { url = "https://files.pythonhosted.org/packages/81/56/d70d66ed1b5ab5f6c27bf80ec889585ad8f865ff32acbafd3b2ef0bfb5d0/google_api_core-2.24.0.tar.gz", hash = "sha256:e255640547a597a4da010876d333208ddac417d60add22b6851a0c66a831fcaf", size = 162647 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/17/a4/c26886d57d90032c5f74c2e80aefdc38ec58551fc46bd4ce79fb2c9389fa/google_api_core-2.23.0-py3-none-any.whl", hash = "sha256:c20100d4c4c41070cf365f1d8ddf5365915291b5eb11b83829fbd1c999b5122f", size = 156554 },
+ { url = "https://files.pythonhosted.org/packages/a1/76/65b8b94e74bf1b6d1cc38d916089670c4da5029d25762441d8c5c19e51dd/google_api_core-2.24.0-py3-none-any.whl", hash = "sha256:10d82ac0fca69c82a25b3efdeefccf6f28e02ebb97925a8cce8edbfe379929d9", size = 158576 },
]
[package.optional-dependencies]
@@ -1222,7 +1210,7 @@ grpc = [
[[package]]
name = "google-api-python-client"
-version = "2.154.0"
+version = "2.155.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "google-api-core", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
@@ -1231,23 +1219,23 @@ dependencies = [
{ name = "httplib2", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "uritemplate", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/b8/fa/861931cf33f3d91d0d17001af3249cfc2af2b5a1b8472604420c025f3339/google_api_python_client-2.154.0.tar.gz", hash = "sha256:1b420062e03bfcaa1c79e2e00a612d29a6a934151ceb3d272fe150a656dc8f17", size = 12070143 }
+sdist = { url = "https://files.pythonhosted.org/packages/c8/7c/95defad65947571c152de64d67689e34185bfcafeb1e9c09d3a58f463027/google_api_python_client-2.155.0.tar.gz", hash = "sha256:25529f89f0d13abcf3c05c089c423fb2858ac16e0b3727543393468d0d7af67c", size = 12195015 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/56/3f/adf5f6b963307765209fc27943516c7c605d250234b01899d524b8f01fe3/google_api_python_client-2.154.0-py2.py3-none-any.whl", hash = "sha256:a521bbbb2ec0ba9d6f307cdd64ed6e21eeac372d1bd7493a4ab5022941f784ad", size = 12573774 },
+ { url = "https://files.pythonhosted.org/packages/4d/6f/d8d446026a6b5a5e1f25604d6b7ddff06dcffcfaea2e95d61a3d5086cbe4/google_api_python_client-2.155.0-py2.py3-none-any.whl", hash = "sha256:83fe9b5aa4160899079d7c93a37be306546a17e6686e2549bcc9584f1a229747", size = 12703592 },
]
[[package]]
name = "google-auth"
-version = "2.36.0"
+version = "2.37.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "cachetools", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "pyasn1-modules", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "rsa", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/6a/71/4c5387d8a3e46e3526a8190ae396659484377a73b33030614dd3b28e7ded/google_auth-2.36.0.tar.gz", hash = "sha256:545e9618f2df0bcbb7dcbc45a546485b1212624716975a1ea5ae8149ce769ab1", size = 268336 }
+sdist = { url = "https://files.pythonhosted.org/packages/46/af/b25763b9d35dfc2c6f9c3ec34d8d3f1ba760af3a7b7e8d5c5f0579522c45/google_auth-2.37.0.tar.gz", hash = "sha256:0054623abf1f9c83492c63d3f47e77f0a544caa3d40b2d98e099a611c2dd5d00", size = 268878 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/2d/9a/3d5087d27865c2f0431b942b5c4500b7d1b744dd3262fdc973a4c39d099e/google_auth-2.36.0-py2.py3-none-any.whl", hash = "sha256:51a15d47028b66fd36e5c64a82d2d57480075bccc7da37cde257fc94177a61fb", size = 209519 },
+ { url = "https://files.pythonhosted.org/packages/8d/8d/4d5d5f9f500499f7bd4c93903b43e8d6976f3fc6f064637ded1a85d09b07/google_auth-2.37.0-py2.py3-none-any.whl", hash = "sha256:42664f18290a6be591be5329a96fe30184be1a1badb7292a7f686a9659de9ca0", size = 209829 },
]
[[package]]
@@ -1265,7 +1253,7 @@ wheels = [
[[package]]
name = "google-cloud-aiplatform"
-version = "1.73.0"
+version = "1.74.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "docstring-parser", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
@@ -1280,9 +1268,9 @@ dependencies = [
{ name = "pydantic", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "shapely", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/1b/af/0fa64dbc7508b45ec82175752fb27641ba7f08fd179cdb811b29311cddf8/google_cloud_aiplatform-1.73.0.tar.gz", hash = "sha256:687d4d6dd26439db42d38b835ea0da7ebb75c20ca8e17666669536b253637e74", size = 7543164 }
+sdist = { url = "https://files.pythonhosted.org/packages/10/67/a404c06c3924e6f08962932fe5f3820938165b7b4eacaa482fe9636acd56/google_cloud_aiplatform-1.74.0.tar.gz", hash = "sha256:2202e4e0cbbd2db02835737a1ae9a51ad7bf75c8ed130a3fdbcfced33525e3f0", size = 7768846 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/1a/5c/6858327c9344561699d2bbe81f4104374df3defc67f97df233142153c6e0/google_cloud_aiplatform-1.73.0-py2.py3-none-any.whl", hash = "sha256:6f9aebc1cb2277048093f17214c5f4ec9129fa347b8b22d784f780b12b8865a9", size = 6270768 },
+ { url = "https://files.pythonhosted.org/packages/95/a8/bc583352dd5020be9651582fe3ebfd46a1e3e2130cb09d638cecf1cd9842/google_cloud_aiplatform-1.74.0-py2.py3-none-any.whl", hash = "sha256:7f37a835e543a4cb4b62505928b983e307c5fee6d949f831cd3804f03c753d87", size = 6454382 },
]
[[package]]
@@ -1334,7 +1322,7 @@ wheels = [
[[package]]
name = "google-cloud-storage"
-version = "2.18.2"
+version = "2.19.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "google-api-core", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
@@ -1344,9 +1332,9 @@ dependencies = [
{ name = "google-resumable-media", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "requests", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/d6/b7/1554cdeb55d9626a4b8720746cba8119af35527b12e1780164f9ba0f659a/google_cloud_storage-2.18.2.tar.gz", hash = "sha256:aaf7acd70cdad9f274d29332673fcab98708d0e1f4dceb5a5356aaef06af4d99", size = 5532864 }
+sdist = { url = "https://files.pythonhosted.org/packages/36/76/4d965702e96bb67976e755bed9828fa50306dca003dbee08b67f41dd265e/google_cloud_storage-2.19.0.tar.gz", hash = "sha256:cd05e9e7191ba6cb68934d8eb76054d9be4562aa89dbc4236feee4d7d51342b2", size = 5535488 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/fc/da/95db7bd4f0bd1644378ac1702c565c0210b004754d925a74f526a710c087/google_cloud_storage-2.18.2-py2.py3-none-any.whl", hash = "sha256:97a4d45c368b7d401ed48c4fdfe86e1e1cb96401c9e199e419d289e2c0370166", size = 130466 },
+ { url = "https://files.pythonhosted.org/packages/d5/94/6db383d8ee1adf45dc6c73477152b82731fa4c4a46d9c1932cc8757e0fd4/google_cloud_storage-2.19.0-py2.py3-none-any.whl", hash = "sha256:aeb971b5c29cf8ab98445082cbfe7b161a1f48ed275822f59ed3f1524ea54fba", size = 131787 },
]
[[package]]
@@ -1438,122 +1426,122 @@ wheels = [
[[package]]
name = "grpcio"
-version = "1.68.0"
-source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/d5/da/132615afbfc722df4bba963844843a205aa298fd5f9a03fa2995e8dddf11/grpcio-1.68.0.tar.gz", hash = "sha256:7e7483d39b4a4fddb9906671e9ea21aaad4f031cdfc349fec76bdfa1e404543a", size = 12682655 }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/57/31/31de69f683298451ec7663cb1e0c36ef07835e9a2b486dfd3665a189f7d1/grpcio-1.68.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:619b5d0f29f4f5351440e9343224c3e19912c21aeda44e0c49d0d147a8d01544", size = 5170661 },
- { url = "https://files.pythonhosted.org/packages/0a/7b/caed06de43176982308404aff36141c0af03d279990baad45195254069cf/grpcio-1.68.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:a59f5822f9459bed098ffbceb2713abbf7c6fd13f2b9243461da5c338d0cd6c3", size = 11077092 },
- { url = "https://files.pythonhosted.org/packages/57/b1/330966311df3097ca153c38e5ecc7fd872c82485ebda2b999c256cfc20e3/grpcio-1.68.0-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:c03d89df516128febc5a7e760d675b478ba25802447624edf7aa13b1e7b11e2a", size = 5689632 },
- { url = "https://files.pythonhosted.org/packages/11/ee/4d2b67b244ecb765cf02ede2e8b8f7d5dbb9d6cd8290d6edc495dbade950/grpcio-1.68.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44bcbebb24363d587472089b89e2ea0ab2e2b4df0e4856ba4c0b087c82412121", size = 6316787 },
- { url = "https://files.pythonhosted.org/packages/d0/64/3a90fac70af2279477483d189007e244fec90ef0ba372043f21f8a6f5b80/grpcio-1.68.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:79f81b7fbfb136247b70465bd836fa1733043fdee539cd6031cb499e9608a110", size = 5941966 },
- { url = "https://files.pythonhosted.org/packages/cc/a4/a30b344da85d680d834fed903e78c44a33028eadb9efae6850a7d398fd9b/grpcio-1.68.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:88fb2925789cfe6daa20900260ef0a1d0a61283dfb2d2fffe6194396a354c618", size = 6646172 },
- { url = "https://files.pythonhosted.org/packages/c7/5a/b97371b4dbecbae31cafee6655f1982193a6e6412da2808c87c9b1734589/grpcio-1.68.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:99f06232b5c9138593ae6f2e355054318717d32a9c09cdc5a2885540835067a1", size = 6212496 },
- { url = "https://files.pythonhosted.org/packages/47/df/dc797a6cb827fc6cf1ed4da812b3721b7705869d84d50d112543bb4ecf1b/grpcio-1.68.0-cp310-cp310-win32.whl", hash = "sha256:a6213d2f7a22c3c30a479fb5e249b6b7e648e17f364598ff64d08a5136fe488b", size = 3649704 },
- { url = "https://files.pythonhosted.org/packages/24/9a/91796bf4d7c6adb867add0ea37f83ea29d8a9743809f3478e5d284926775/grpcio-1.68.0-cp310-cp310-win_amd64.whl", hash = "sha256:15327ab81131ef9b94cb9f45b5bd98803a179c7c61205c8c0ac9aff9d6c4e82a", size = 4399061 },
- { url = "https://files.pythonhosted.org/packages/cf/5f/019594ff8130ce84f9317cfc1e3d2c2beef2b74fd8822c5f1dfe237cb0d5/grpcio-1.68.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:3b2b559beb2d433129441783e5f42e3be40a9e1a89ec906efabf26591c5cd415", size = 5180685 },
- { url = "https://files.pythonhosted.org/packages/7b/59/34dae935bbb42f3e8929c90e9dfff49090cef412cf767cf4f14cd01ded18/grpcio-1.68.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e46541de8425a4d6829ac6c5d9b16c03c292105fe9ebf78cb1c31e8d242f9155", size = 11150577 },
- { url = "https://files.pythonhosted.org/packages/a6/5e/3df718124aadfc5d565c70ebe6a32c9ee747a9ccf211041596dd471fd763/grpcio-1.68.0-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:c1245651f3c9ea92a2db4f95d37b7597db6b246d5892bca6ee8c0e90d76fb73c", size = 5685490 },
- { url = "https://files.pythonhosted.org/packages/4c/57/4e39ac1030875e0497debc9d5a4b3a1478ee1bd957ba4b87c27fcd7a3545/grpcio-1.68.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f1931c7aa85be0fa6cea6af388e576f3bf6baee9e5d481c586980c774debcb4", size = 6316329 },
- { url = "https://files.pythonhosted.org/packages/26/fe/9208707b0c07d28bb9f466340e4f052142fe40d54ea5c2d57870ba0d6860/grpcio-1.68.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b0ff09c81e3aded7a183bc6473639b46b6caa9c1901d6f5e2cba24b95e59e30", size = 5939890 },
- { url = "https://files.pythonhosted.org/packages/05/b9/e344bf744e095e2795fe942ce432add2d03761c3c440a5747705ff5b8efb/grpcio-1.68.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:8c73f9fbbaee1a132487e31585aa83987ddf626426d703ebcb9a528cf231c9b1", size = 6644776 },
- { url = "https://files.pythonhosted.org/packages/ef/bf/0856c5fa93c3e1bd9f42da62a7aa6988c7a8f95f30dc4f9a3d631f75bb8e/grpcio-1.68.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6b2f98165ea2790ea159393a2246b56f580d24d7da0d0342c18a085299c40a75", size = 6211889 },
- { url = "https://files.pythonhosted.org/packages/63/40/eac5203baf7f45c56b16645c81a4c8ed515510fe81322371e8625758239b/grpcio-1.68.0-cp311-cp311-win32.whl", hash = "sha256:e1e7ed311afb351ff0d0e583a66fcb39675be112d61e7cfd6c8269884a98afbc", size = 3650597 },
- { url = "https://files.pythonhosted.org/packages/e4/31/120ec7132e6b82a0df91952f71aa0aa5e9f23d70152b58d96fac9b3e7cfe/grpcio-1.68.0-cp311-cp311-win_amd64.whl", hash = "sha256:e0d2f68eaa0a755edd9a47d40e50dba6df2bceda66960dee1218da81a2834d27", size = 4400445 },
- { url = "https://files.pythonhosted.org/packages/30/66/79508e13feee4182e6f2ea260ad4eea96b8b396bbf81334660142a6eecab/grpcio-1.68.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:8af6137cc4ae8e421690d276e7627cfc726d4293f6607acf9ea7260bd8fc3d7d", size = 5147575 },
- { url = "https://files.pythonhosted.org/packages/41/8d/19ffe12a736f57e9860bad506c0e711dd3c9c7c9f06030cfd87fa3eb6b45/grpcio-1.68.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:4028b8e9a3bff6f377698587d642e24bd221810c06579a18420a17688e421af7", size = 11126767 },
- { url = "https://files.pythonhosted.org/packages/9c/c6/9aa8178d0fa3c893531a3ef38fa65a0e9997047ded9a8a20e3aa5706f923/grpcio-1.68.0-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:f60fa2adf281fd73ae3a50677572521edca34ba373a45b457b5ebe87c2d01e1d", size = 5644649 },
- { url = "https://files.pythonhosted.org/packages/36/91/e2c451a103b8b595d3e3725fc78c76242d38a96cfe22dd9a47c31faba99d/grpcio-1.68.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e18589e747c1e70b60fab6767ff99b2d0c359ea1db8a2cb524477f93cdbedf5b", size = 6292623 },
- { url = "https://files.pythonhosted.org/packages/0b/5f/cbb2c0dfb3f7b893b30d6daca0a7829067f302c55f20b9c470111f48e6e3/grpcio-1.68.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e0d30f3fee9372796f54d3100b31ee70972eaadcc87314be369360248a3dcffe", size = 5905873 },
- { url = "https://files.pythonhosted.org/packages/9d/37/ddc32a46baccac6a0a3cdcabd6908d23dfa526f061a1b81211fe029489c7/grpcio-1.68.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:7e0a3e72c0e9a1acab77bef14a73a416630b7fd2cbd893c0a873edc47c42c8cd", size = 6630863 },
- { url = "https://files.pythonhosted.org/packages/45/69/4f74f67ae33be4422bd20050e09ad8b5318f8827a7eb153507de8fb78aef/grpcio-1.68.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a831dcc343440969aaa812004685ed322cdb526cd197112d0db303b0da1e8659", size = 6200368 },
- { url = "https://files.pythonhosted.org/packages/91/e9/25e51915cd972e8c66daf29644e653135f967d7411eccd2651fa347a6337/grpcio-1.68.0-cp312-cp312-win32.whl", hash = "sha256:5a180328e92b9a0050958ced34dddcb86fec5a8b332f5a229e353dafc16cd332", size = 3637786 },
- { url = "https://files.pythonhosted.org/packages/e2/1d/b1250907a727f08de6508d752f367e4b46d113d4eac9eb919ebd9da6a5d6/grpcio-1.68.0-cp312-cp312-win_amd64.whl", hash = "sha256:2bddd04a790b69f7a7385f6a112f46ea0b34c4746f361ebafe9ca0be567c78e9", size = 4390622 },
- { url = "https://files.pythonhosted.org/packages/fb/2d/d9cbdb75dc99141705f08474e97b181034c2e53a345d94b58e3c55f4dd92/grpcio-1.68.0-cp313-cp313-linux_armv7l.whl", hash = "sha256:fc05759ffbd7875e0ff2bd877be1438dfe97c9312bbc558c8284a9afa1d0f40e", size = 5149697 },
- { url = "https://files.pythonhosted.org/packages/6f/37/a848871a5adba8cd571fa89e8aabc40ca0c475bd78b2e645e1649b20e095/grpcio-1.68.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:15fa1fe25d365a13bc6d52fcac0e3ee1f9baebdde2c9b3b2425f8a4979fccea1", size = 11084394 },
- { url = "https://files.pythonhosted.org/packages/1f/52/b09374aab9c9c2f66627ce7de39eef41d73670aa0f75286d91dcc22a2dd8/grpcio-1.68.0-cp313-cp313-manylinux_2_17_aarch64.whl", hash = "sha256:32a9cb4686eb2e89d97022ecb9e1606d132f85c444354c17a7dbde4a455e4a3b", size = 5645417 },
- { url = "https://files.pythonhosted.org/packages/01/78/ec5ad7c44d7adaf0b932fd41ce8c59a95177a8c79c947c77204600b652db/grpcio-1.68.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dba037ff8d284c8e7ea9a510c8ae0f5b016004f13c3648f72411c464b67ff2fb", size = 6291062 },
- { url = "https://files.pythonhosted.org/packages/f7/7f/7f5a1a8dc63a42b78ca930d195eb0c97aa7a09e8553bb3a07b7cf37f6bc1/grpcio-1.68.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0efbbd849867e0e569af09e165363ade75cf84f5229b2698d53cf22c7a4f9e21", size = 5906505 },
- { url = "https://files.pythonhosted.org/packages/41/7b/0b048b8ad1a09fab5f4567fba2a569fb9106c4c1bb473c009c25659542cb/grpcio-1.68.0-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:4e300e6978df0b65cc2d100c54e097c10dfc7018b9bd890bbbf08022d47f766d", size = 6635069 },
- { url = "https://files.pythonhosted.org/packages/5e/c5/9f0ebc9cfba8309a15a9786c953ce99eaf4e1ca2df402b3c5ecf42493bd4/grpcio-1.68.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:6f9c7ad1a23e1047f827385f4713b5b8c6c7d325705be1dd3e31fb00dcb2f665", size = 6200683 },
- { url = "https://files.pythonhosted.org/packages/ce/e1/d3eba05299d5acdae6c11d056308b885f1d1be0b328baa8233d5d139ec1d/grpcio-1.68.0-cp313-cp313-win32.whl", hash = "sha256:3ac7f10850fd0487fcce169c3c55509101c3bde2a3b454869639df2176b60a03", size = 3637301 },
- { url = "https://files.pythonhosted.org/packages/3c/c1/decb2b368a54c00a6ee815c3f610903f36432e3cb591d43369319826b05e/grpcio-1.68.0-cp313-cp313-win_amd64.whl", hash = "sha256:afbf45a62ba85a720491bfe9b2642f8761ff348006f5ef67e4622621f116b04a", size = 4390939 },
+version = "1.67.1"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/20/53/d9282a66a5db45981499190b77790570617a604a38f3d103d0400974aeb5/grpcio-1.67.1.tar.gz", hash = "sha256:3dc2ed4cabea4dc14d5e708c2b426205956077cc5de419b4d4079315017e9732", size = 12580022 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/4e/cd/f6ca5c49aa0ae7bc6d0757f7dae6f789569e9490a635eaabe02bc02de7dc/grpcio-1.67.1-cp310-cp310-linux_armv7l.whl", hash = "sha256:8b0341d66a57f8a3119b77ab32207072be60c9bf79760fa609c5609f2deb1f3f", size = 5112450 },
+ { url = "https://files.pythonhosted.org/packages/d4/f0/d9bbb4a83cbee22f738ee7a74aa41e09ccfb2dcea2cc30ebe8dab5b21771/grpcio-1.67.1-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:f5a27dddefe0e2357d3e617b9079b4bfdc91341a91565111a21ed6ebbc51b22d", size = 10937518 },
+ { url = "https://files.pythonhosted.org/packages/5b/17/0c5dbae3af548eb76669887642b5f24b232b021afe77eb42e22bc8951d9c/grpcio-1.67.1-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:43112046864317498a33bdc4797ae6a268c36345a910de9b9c17159d8346602f", size = 5633610 },
+ { url = "https://files.pythonhosted.org/packages/17/48/e000614e00153d7b2760dcd9526b95d72f5cfe473b988e78f0ff3b472f6c/grpcio-1.67.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9b929f13677b10f63124c1a410994a401cdd85214ad83ab67cc077fc7e480f0", size = 6240678 },
+ { url = "https://files.pythonhosted.org/packages/64/19/a16762a70eeb8ddfe43283ce434d1499c1c409ceec0c646f783883084478/grpcio-1.67.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7d1797a8a3845437d327145959a2c0c47c05947c9eef5ff1a4c80e499dcc6fa", size = 5884528 },
+ { url = "https://files.pythonhosted.org/packages/6b/dc/bd016aa3684914acd2c0c7fa4953b2a11583c2b844f3d7bae91fa9b98fbb/grpcio-1.67.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:0489063974d1452436139501bf6b180f63d4977223ee87488fe36858c5725292", size = 6583680 },
+ { url = "https://files.pythonhosted.org/packages/1a/93/1441cb14c874f11aa798a816d582f9da82194b6677f0f134ea53d2d5dbeb/grpcio-1.67.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:9fd042de4a82e3e7aca44008ee2fb5da01b3e5adb316348c21980f7f58adc311", size = 6162967 },
+ { url = "https://files.pythonhosted.org/packages/29/e9/9295090380fb4339b7e935b9d005fa9936dd573a22d147c9e5bb2df1b8d4/grpcio-1.67.1-cp310-cp310-win32.whl", hash = "sha256:638354e698fd0c6c76b04540a850bf1db27b4d2515a19fcd5cf645c48d3eb1ed", size = 3616336 },
+ { url = "https://files.pythonhosted.org/packages/ce/de/7c783b8cb8f02c667ca075c49680c4aeb8b054bc69784bcb3e7c1bbf4985/grpcio-1.67.1-cp310-cp310-win_amd64.whl", hash = "sha256:608d87d1bdabf9e2868b12338cd38a79969eaf920c89d698ead08f48de9c0f9e", size = 4352071 },
+ { url = "https://files.pythonhosted.org/packages/59/2c/b60d6ea1f63a20a8d09c6db95c4f9a16497913fb3048ce0990ed81aeeca0/grpcio-1.67.1-cp311-cp311-linux_armv7l.whl", hash = "sha256:7818c0454027ae3384235a65210bbf5464bd715450e30a3d40385453a85a70cb", size = 5119075 },
+ { url = "https://files.pythonhosted.org/packages/b3/9a/e1956f7ca582a22dd1f17b9e26fcb8229051b0ce6d33b47227824772feec/grpcio-1.67.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ea33986b70f83844cd00814cee4451055cd8cab36f00ac64a31f5bb09b31919e", size = 11009159 },
+ { url = "https://files.pythonhosted.org/packages/43/a8/35fbbba580c4adb1d40d12e244cf9f7c74a379073c0a0ca9d1b5338675a1/grpcio-1.67.1-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:c7a01337407dd89005527623a4a72c5c8e2894d22bead0895306b23c6695698f", size = 5629476 },
+ { url = "https://files.pythonhosted.org/packages/77/c9/864d336e167263d14dfccb4dbfa7fce634d45775609895287189a03f1fc3/grpcio-1.67.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:80b866f73224b0634f4312a4674c1be21b2b4afa73cb20953cbbb73a6b36c3cc", size = 6239901 },
+ { url = "https://files.pythonhosted.org/packages/f7/1e/0011408ebabf9bd69f4f87cc1515cbfe2094e5a32316f8714a75fd8ddfcb/grpcio-1.67.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9fff78ba10d4250bfc07a01bd6254a6d87dc67f9627adece85c0b2ed754fa96", size = 5881010 },
+ { url = "https://files.pythonhosted.org/packages/b4/7d/fbca85ee9123fb296d4eff8df566f458d738186d0067dec6f0aa2fd79d71/grpcio-1.67.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:8a23cbcc5bb11ea7dc6163078be36c065db68d915c24f5faa4f872c573bb400f", size = 6580706 },
+ { url = "https://files.pythonhosted.org/packages/75/7a/766149dcfa2dfa81835bf7df623944c1f636a15fcb9b6138ebe29baf0bc6/grpcio-1.67.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1a65b503d008f066e994f34f456e0647e5ceb34cfcec5ad180b1b44020ad4970", size = 6161799 },
+ { url = "https://files.pythonhosted.org/packages/09/13/5b75ae88810aaea19e846f5380611837de411181df51fd7a7d10cb178dcb/grpcio-1.67.1-cp311-cp311-win32.whl", hash = "sha256:e29ca27bec8e163dca0c98084040edec3bc49afd10f18b412f483cc68c712744", size = 3616330 },
+ { url = "https://files.pythonhosted.org/packages/aa/39/38117259613f68f072778c9638a61579c0cfa5678c2558706b10dd1d11d3/grpcio-1.67.1-cp311-cp311-win_amd64.whl", hash = "sha256:786a5b18544622bfb1e25cc08402bd44ea83edfb04b93798d85dca4d1a0b5be5", size = 4354535 },
+ { url = "https://files.pythonhosted.org/packages/6e/25/6f95bd18d5f506364379eabc0d5874873cc7dbdaf0757df8d1e82bc07a88/grpcio-1.67.1-cp312-cp312-linux_armv7l.whl", hash = "sha256:267d1745894200e4c604958da5f856da6293f063327cb049a51fe67348e4f953", size = 5089809 },
+ { url = "https://files.pythonhosted.org/packages/10/3f/d79e32e5d0354be33a12db2267c66d3cfeff700dd5ccdd09fd44a3ff4fb6/grpcio-1.67.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:85f69fdc1d28ce7cff8de3f9c67db2b0ca9ba4449644488c1e0303c146135ddb", size = 10981985 },
+ { url = "https://files.pythonhosted.org/packages/21/f2/36fbc14b3542e3a1c20fb98bd60c4732c55a44e374a4eb68f91f28f14aab/grpcio-1.67.1-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:f26b0b547eb8d00e195274cdfc63ce64c8fc2d3e2d00b12bf468ece41a0423a0", size = 5588770 },
+ { url = "https://files.pythonhosted.org/packages/0d/af/bbc1305df60c4e65de8c12820a942b5e37f9cf684ef5e49a63fbb1476a73/grpcio-1.67.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4422581cdc628f77302270ff839a44f4c24fdc57887dc2a45b7e53d8fc2376af", size = 6214476 },
+ { url = "https://files.pythonhosted.org/packages/92/cf/1d4c3e93efa93223e06a5c83ac27e32935f998bc368e276ef858b8883154/grpcio-1.67.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d7616d2ded471231c701489190379e0c311ee0a6c756f3c03e6a62b95a7146e", size = 5850129 },
+ { url = "https://files.pythonhosted.org/packages/ae/ca/26195b66cb253ac4d5ef59846e354d335c9581dba891624011da0e95d67b/grpcio-1.67.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8a00efecde9d6fcc3ab00c13f816313c040a28450e5e25739c24f432fc6d3c75", size = 6568489 },
+ { url = "https://files.pythonhosted.org/packages/d1/94/16550ad6b3f13b96f0856ee5dfc2554efac28539ee84a51d7b14526da985/grpcio-1.67.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:699e964923b70f3101393710793289e42845791ea07565654ada0969522d0a38", size = 6149369 },
+ { url = "https://files.pythonhosted.org/packages/33/0d/4c3b2587e8ad7f121b597329e6c2620374fccbc2e4e1aa3c73ccc670fde4/grpcio-1.67.1-cp312-cp312-win32.whl", hash = "sha256:4e7b904484a634a0fff132958dabdb10d63e0927398273917da3ee103e8d1f78", size = 3599176 },
+ { url = "https://files.pythonhosted.org/packages/7d/36/0c03e2d80db69e2472cf81c6123aa7d14741de7cf790117291a703ae6ae1/grpcio-1.67.1-cp312-cp312-win_amd64.whl", hash = "sha256:5721e66a594a6c4204458004852719b38f3d5522082be9061d6510b455c90afc", size = 4346574 },
+ { url = "https://files.pythonhosted.org/packages/12/d2/2f032b7a153c7723ea3dea08bffa4bcaca9e0e5bdf643ce565b76da87461/grpcio-1.67.1-cp313-cp313-linux_armv7l.whl", hash = "sha256:aa0162e56fd10a5547fac8774c4899fc3e18c1aa4a4759d0ce2cd00d3696ea6b", size = 5091487 },
+ { url = "https://files.pythonhosted.org/packages/d0/ae/ea2ff6bd2475a082eb97db1104a903cf5fc57c88c87c10b3c3f41a184fc0/grpcio-1.67.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:beee96c8c0b1a75d556fe57b92b58b4347c77a65781ee2ac749d550f2a365dc1", size = 10943530 },
+ { url = "https://files.pythonhosted.org/packages/07/62/646be83d1a78edf8d69b56647327c9afc223e3140a744c59b25fbb279c3b/grpcio-1.67.1-cp313-cp313-manylinux_2_17_aarch64.whl", hash = "sha256:a93deda571a1bf94ec1f6fcda2872dad3ae538700d94dc283c672a3b508ba3af", size = 5589079 },
+ { url = "https://files.pythonhosted.org/packages/d0/25/71513d0a1b2072ce80d7f5909a93596b7ed10348b2ea4fdcbad23f6017bf/grpcio-1.67.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0e6f255980afef598a9e64a24efce87b625e3e3c80a45162d111a461a9f92955", size = 6213542 },
+ { url = "https://files.pythonhosted.org/packages/76/9a/d21236297111052dcb5dc85cd77dc7bf25ba67a0f55ae028b2af19a704bc/grpcio-1.67.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e838cad2176ebd5d4a8bb03955138d6589ce9e2ce5d51c3ada34396dbd2dba8", size = 5850211 },
+ { url = "https://files.pythonhosted.org/packages/2d/fe/70b1da9037f5055be14f359026c238821b9bcf6ca38a8d760f59a589aacd/grpcio-1.67.1-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:a6703916c43b1d468d0756c8077b12017a9fcb6a1ef13faf49e67d20d7ebda62", size = 6572129 },
+ { url = "https://files.pythonhosted.org/packages/74/0d/7df509a2cd2a54814598caf2fb759f3e0b93764431ff410f2175a6efb9e4/grpcio-1.67.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:917e8d8994eed1d86b907ba2a61b9f0aef27a2155bca6cbb322430fc7135b7bb", size = 6149819 },
+ { url = "https://files.pythonhosted.org/packages/0a/08/bc3b0155600898fd10f16b79054e1cca6cb644fa3c250c0fe59385df5e6f/grpcio-1.67.1-cp313-cp313-win32.whl", hash = "sha256:e279330bef1744040db8fc432becc8a727b84f456ab62b744d3fdb83f327e121", size = 3596561 },
+ { url = "https://files.pythonhosted.org/packages/5a/96/44759eca966720d0f3e1b105c43f8ad4590c97bf8eb3cd489656e9590baa/grpcio-1.67.1-cp313-cp313-win_amd64.whl", hash = "sha256:fa0c739ad8b1996bd24823950e3cb5152ae91fca1c09cc791190bf1627ffefba", size = 4346042 },
]
[[package]]
name = "grpcio-health-checking"
-version = "1.68.0"
+version = "1.67.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "grpcio", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "protobuf", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/0b/b4/89b610e6cbbd86c4e11af77dc0bf7d3a4323462263c6307a24fe00f4c096/grpcio_health_checking-1.68.0.tar.gz", hash = "sha256:10064d39cf7307320f5768678fe5631f2eda93ba265b7c1d1e239e4145f3e8d0", size = 16778 }
+sdist = { url = "https://files.pythonhosted.org/packages/64/dd/e3b339fa44dc75b501a1a22cb88f1af5b1f8c964488f19c4de4cfbbf05ba/grpcio_health_checking-1.67.1.tar.gz", hash = "sha256:ca90fa76a6afbb4fda71d734cb9767819bba14928b91e308cffbb0c311eb941e", size = 16775 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/4d/be/bcbeb7ae070f82cb0fa53648f4ff62b3db085fa0f02aec5e88c77d61d6f0/grpcio_health_checking-1.68.0-py3-none-any.whl", hash = "sha256:fa05463b9900910fb2950c81cf6b523e26fcc1aeece9ddba408d6f5be4835216", size = 18924 },
+ { url = "https://files.pythonhosted.org/packages/5c/8d/7a9878dca6616b48093d71c52d0bc79cb2dd1a2698ff6f5ce7406306de12/grpcio_health_checking-1.67.1-py3-none-any.whl", hash = "sha256:93753da5062152660aef2286c9b261e07dd87124a65e4dc9fbd47d1ce966b39d", size = 18924 },
]
[[package]]
name = "grpcio-status"
-version = "1.68.0"
+version = "1.67.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "googleapis-common-protos", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "grpcio", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "protobuf", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/70/95/500b24fc02a98ea16097e978958dd7ab9e16db9316a3f0bdc88d5ff239df/grpcio_status-1.68.0.tar.gz", hash = "sha256:8369823de22ab6a2cddb3804669c149ae7a71819e127c2dca7c2322028d52bea", size = 13666 }
+sdist = { url = "https://files.pythonhosted.org/packages/be/c7/fe0e79a80ac6346e0c6c0a24e9e3cbc3ae1c2a009acffb59eab484a6f69b/grpcio_status-1.67.1.tar.gz", hash = "sha256:2bf38395e028ceeecfd8866b081f61628114b384da7d51ae064ddc8d766a5d11", size = 13673 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/40/ba/dc535631a9dffa421b327ebfc961911af54c396aa5324efd122a94f72464/grpcio_status-1.68.0-py3-none-any.whl", hash = "sha256:0a71b15d989f02df803b4ba85c5bf1f43aeaa58ac021e5f9974b8cadc41f784d", size = 14427 },
+ { url = "https://files.pythonhosted.org/packages/05/18/56999a1da3577d8ccc8698a575d6638e15fe25650cc88b2ce0a087f180b9/grpcio_status-1.67.1-py3-none-any.whl", hash = "sha256:16e6c085950bdacac97c779e6a502ea671232385e6e37f258884d6883392c2bd", size = 14427 },
]
[[package]]
name = "grpcio-tools"
-version = "1.68.0"
+version = "1.67.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "grpcio", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "protobuf", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "setuptools", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/81/40/47299f96fc21b9cd448cbebcbf174b1bedeaa1f82a1e7d4ed144d084d002/grpcio_tools-1.68.0.tar.gz", hash = "sha256:737804ec2225dd4cc27e633b4ca0e963b0795161bf678285fab6586e917fd867", size = 5275538 }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/6e/46/5cb9cf31c6af41517e41438bfc81ca385eb02ec1c8d0187593212e3e2fd0/grpcio_tools-1.68.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:9509a5c3ed3d54fa7ac20748d501cb86668f764605a0a68f275339ee0f1dc1a6", size = 2342737 },
- { url = "https://files.pythonhosted.org/packages/f4/81/224f910ff994d67ed51e40d3f2078473a83b5ddced192ddf5283ee8b1b88/grpcio_tools-1.68.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:59a885091bf29700ba0e14a954d156a18714caaa2006a7f328b18e1ac4b1e721", size = 5556563 },
- { url = "https://files.pythonhosted.org/packages/af/e1/44d45e385149b5daf96cc4bd7865f0d38f6830caf3eb8ba50ce4d4323216/grpcio_tools-1.68.0-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:d3e678162e1d7a8720dc05fdd537fc8df082a50831791f7bb1c6f90095f8368b", size = 2306482 },
- { url = "https://files.pythonhosted.org/packages/9a/7d/f0fc68a081443dc8aa402d21935995c6fd1a84d05466c928a991320e4085/grpcio_tools-1.68.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10d03e3ad4af6284fd27cb14f5a3d52045913c1253e3e24a384ed91bc8adbfcd", size = 2679636 },
- { url = "https://files.pythonhosted.org/packages/d8/e1/6a8c3bf5573cecd99e28f5e5f5405033dceeafe994eaed820bc1616117f4/grpcio_tools-1.68.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1769d7f529de1cc102f7fb900611e3c0b69bdb244fca1075b24d6e5b49024586", size = 2425828 },
- { url = "https://files.pythonhosted.org/packages/51/b7/ceba85990242ebf7bf1f8eb49a98b500577dd2001a6df4ad4cf9f4f84022/grpcio_tools-1.68.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:88640d95ee41921ac7352fa5fadca52a06d7e21fbe53e6a706a9a494f756be7d", size = 3289540 },
- { url = "https://files.pythonhosted.org/packages/09/0b/1e5c737508a4cf876205b804367d31b1e1bb7ab403f2f0b92677dbe1170f/grpcio_tools-1.68.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e903d07bc65232aa9e7704c829aec263e1e139442608e473d7912417a9908e29", size = 2903794 },
- { url = "https://files.pythonhosted.org/packages/69/30/27463dff3ed2a99e7b911e445fdf9e553283c190d698915ba4d983d0a4cd/grpcio_tools-1.68.0-cp310-cp310-win32.whl", hash = "sha256:66b70b37184d40806844f51c2757c6b852511d4ea46a3bf2c7e931a47b455bc6", size = 946371 },
- { url = "https://files.pythonhosted.org/packages/0b/9b/1fc28aa64c990d3fa503c4516cb52fbce34c6c9956df85400a5f6e39e9af/grpcio_tools-1.68.0-cp310-cp310-win_amd64.whl", hash = "sha256:b47ae076ffb29a68e517bc03552bef0d9c973f8e18adadff180b123e973a26ea", size = 1097477 },
- { url = "https://files.pythonhosted.org/packages/f7/60/80a141ab5e3a747f400ba585be9b690e00a232167bf6909fccaedde17bab/grpcio_tools-1.68.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:f65942fab440e99113ce14436deace7554d5aa554ea18358e3a5f3fc47efe322", size = 2342417 },
- { url = "https://files.pythonhosted.org/packages/c4/a2/78a4c5c3e3ae3bd209519da5a4fc6669a5f3d06423d466028d01e7fbbbce/grpcio_tools-1.68.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8fefc6d000e169a97336feded23ce614df3fb9926fc48c7a9ff8ea459d93b5b0", size = 5587871 },
- { url = "https://files.pythonhosted.org/packages/74/58/9da5fd8840d13389805bf52c347e6405665380244c01b26fb5580b743749/grpcio_tools-1.68.0-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:6dd69c9f3ff85eee8d1f71adf7023c638ca8d465633244ac1b7f19bc3668612d", size = 2306367 },
- { url = "https://files.pythonhosted.org/packages/2c/85/3fdd9bc501a6c0f251bda233fec114a115c82603b6535373a5e74c77400c/grpcio_tools-1.68.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7dc5195dc02057668cc22da1ff1aea1811f6fa0deb801b3194dec1fe0bab1cf0", size = 2679524 },
- { url = "https://files.pythonhosted.org/packages/da/21/f2ed730aa8a5e8f4ab7500d4863c6b2a1cbb33beaff717a01ddacff995db/grpcio_tools-1.68.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:849b12bec2320e49e988df104c92217d533e01febac172a4495caab36d9f0edc", size = 2425894 },
- { url = "https://files.pythonhosted.org/packages/58/c4/0bd72a59192cdb6c595c7dd72f3d48eccb5017be625459427dd798e3a381/grpcio_tools-1.68.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:766c2cd2e365e0fc0e559af56f2c2d144d95fd7cb8668a34d533e66d6435eb34", size = 3288925 },
- { url = "https://files.pythonhosted.org/packages/81/c5/ee3d0e45d24c716449b4d84485f7ea39f4a8e670717270fc2bee55b0b21b/grpcio_tools-1.68.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2ec3a2e0afa4866ccc5ba33c071aebaa619245dfdd840cbb74f2b0591868d085", size = 2903913 },
- { url = "https://files.pythonhosted.org/packages/13/7f/85e1ac0a4c4d23a89d6d569f516b39f5a0467b6069fe967382ede41341d2/grpcio_tools-1.68.0-cp311-cp311-win32.whl", hash = "sha256:80b733014eb40d920d836d782e5cdea0dcc90d251a2ffb35ab378ef4f8a42c14", size = 946129 },
- { url = "https://files.pythonhosted.org/packages/48/64/591a4fe11fabc4c43780921b3e72233462810b893240f447cea0dec953ce/grpcio_tools-1.68.0-cp311-cp311-win_amd64.whl", hash = "sha256:f95103e3e4e7fee7c6123bc9e4e925e07ad24d8d09d7c1c916fb6c8d1cb9e726", size = 1097286 },
- { url = "https://files.pythonhosted.org/packages/b1/da/986224ace81c96a693f0e972b7cb330af06625dc57849aff9dcc95c98afa/grpcio_tools-1.68.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:dd9a654af8536b3de8525bff72a245fef62d572eabf96ac946fe850e707cb27d", size = 2342316 },
- { url = "https://files.pythonhosted.org/packages/8e/55/25a9a8e47d0b7f0551309bb9af641f04d076e2995e10866b5e08d0d73628/grpcio_tools-1.68.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0f77957e3a0916a0dd18d57ce6b49d95fc9a5cfed92310f226339c0fda5394f6", size = 5585973 },
- { url = "https://files.pythonhosted.org/packages/a5/db/518695c93b86db44eef2445c245b51f8d3c7413cb22941b4ce5fc0377dc7/grpcio_tools-1.68.0-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:92a09afe64fe26696595de2036e10967876d26b12c894cc9160f00152cacebe7", size = 2306181 },
- { url = "https://files.pythonhosted.org/packages/e8/18/8e395bea3f1ea1da49ca99685e670ec21251e8b6a6d37ced266109b33c32/grpcio_tools-1.68.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:28ebdbad2ef16699d07400b65260240851049a75502eff69a59b127d3ab960f1", size = 2679660 },
- { url = "https://files.pythonhosted.org/packages/e5/f8/7b0bc247c3607c5a3a5f09c81d37b887f684cb3863837eaeacc24835a951/grpcio_tools-1.68.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d3150d784d8050b10dcf5eb06e04fb90747a1547fed3a062a608d940fe57066", size = 2425466 },
- { url = "https://files.pythonhosted.org/packages/64/6a/91f8948b34c245b06ed738a49e0f29948168ecca967aee653f70cd8e9009/grpcio_tools-1.68.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:261d98fd635595de42aadee848f9af46da6654d63791c888891e94f66c5d0682", size = 3289408 },
- { url = "https://files.pythonhosted.org/packages/97/d7/5ff90d41e8036cbcac4c2b4f53d303b778d23f74a3dbb40c625fc0f3e475/grpcio_tools-1.68.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:061345c0079b9471f32230186ab01acb908ea0e577bc1699a8cf47acef8be4af", size = 2903935 },
- { url = "https://files.pythonhosted.org/packages/e1/26/c360f9ce0a0a49f375f2c487ba91daeb85e519ea6e1f9eed04781faabb12/grpcio_tools-1.68.0-cp312-cp312-win32.whl", hash = "sha256:533ce6791a5ba21e35d74c6c25caf4776f5692785a170c01ea1153783ad5af31", size = 946040 },
- { url = "https://files.pythonhosted.org/packages/13/96/dbc239492dac0abad04de84578a068b72f3bdff4c5afbc38a9587738b2ef/grpcio_tools-1.68.0-cp312-cp312-win_amd64.whl", hash = "sha256:56842a0ce74b4b92eb62cd5ee00181b2d3acc58ba0c4fd20d15a5db51f891ba6", size = 1096722 },
- { url = "https://files.pythonhosted.org/packages/29/63/ccdcb96d0f3a473b457f9b1cc78adb0f1226d7fed6cfffbbdeeb3ce88fbb/grpcio_tools-1.68.0-cp313-cp313-linux_armv7l.whl", hash = "sha256:1117a81592542f0c36575082daa6413c57ca39188b18a4c50ec7332616f4b97e", size = 2342127 },
- { url = "https://files.pythonhosted.org/packages/4d/28/1bbc4cd976f518bd45c1c1ec0d1d0a3db35adcdaf5245cbaaa95c2fdf548/grpcio_tools-1.68.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:51e5a090849b30c99a2396d42140b8a3e558eff6cdfa12603f9582e2cd07724e", size = 5573889 },
- { url = "https://files.pythonhosted.org/packages/77/80/2ccdf2fd60b5ab822ff800c315afd5cbaf9368a58882b802cb64865740bb/grpcio_tools-1.68.0-cp313-cp313-manylinux_2_17_aarch64.whl", hash = "sha256:4fe611d89a1836df8936f066d39c7eb03d4241806449ec45d4b8e1c843ae8011", size = 2305568 },
- { url = "https://files.pythonhosted.org/packages/1a/9c/3b8e73b8e60aaacda101a4adfdec837e60a03a1dbf54c7b80f85ceff0c9c/grpcio_tools-1.68.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c10f3faa0cc4d89eb546f53b623837af23e86dc495d3b89510bcc0e0a6c0b8b2", size = 2678660 },
- { url = "https://files.pythonhosted.org/packages/ed/95/19a545674b81ad8b8783807a125f8b51210c29ab0cea6e79a2d21c0077c1/grpcio_tools-1.68.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46b537480b8fd2195d988120a28467601a2a3de2e504043b89fb90318e1eb754", size = 2425008 },
- { url = "https://files.pythonhosted.org/packages/00/c7/9da961471f7ec6f3d437e2bf91fec0247315c0f1151e2412e6d08852f3d4/grpcio_tools-1.68.0-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:17d0c9004ea82b4213955a585401e80c30d4b37a1d4ace32ccdea8db4d3b7d43", size = 3288874 },
- { url = "https://files.pythonhosted.org/packages/f8/22/2147b3c104cba9dda2a28a375f88b27d86fd5f25e249d8e8547ca0ea04ef/grpcio_tools-1.68.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:2919faae04fe47bad57fc9b578aeaab527da260e851f321a253b6b11862254a8", size = 2903220 },
- { url = "https://files.pythonhosted.org/packages/d7/d8/c9e8bd2bf3128608e14bb28266a0d587ebca8bfd8279b956da1f0f939270/grpcio_tools-1.68.0-cp313-cp313-win32.whl", hash = "sha256:ee86157ef899f58ba2fe1055cce0d33bd703e99aa6d5a0895581ac3969f06bfa", size = 945292 },
- { url = "https://files.pythonhosted.org/packages/f1/0d/99bd17898a923d40869a54f80bd79ff1013ef9c014d778c7750aa4493809/grpcio_tools-1.68.0-cp313-cp313-win_amd64.whl", hash = "sha256:d0470ffc6a93c86cdda48edd428d22e2fef17d854788d60d0d5f291038873157", size = 1096010 },
+sdist = { url = "https://files.pythonhosted.org/packages/ae/f9/6facde12a5a8da4398a3a8947f8ba6ef33b408dfc9767c8cefc0074ddd68/grpcio_tools-1.67.1.tar.gz", hash = "sha256:d9657f5ddc62b52f58904e6054b7d8a8909ed08a1e28b734be3a707087bcf004", size = 5159073 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/e5/46/668e681e2e4ca7dc80cb5ad22bc794958c8b604b5b3143f16b94be3c0118/grpcio_tools-1.67.1-cp310-cp310-linux_armv7l.whl", hash = "sha256:c701aaa51fde1f2644bd94941aa94c337adb86f25cd03cf05e37387aaea25800", size = 2308117 },
+ { url = "https://files.pythonhosted.org/packages/d6/56/1c65fb7c836cd40470f1f1a88185973466241fdb42b42b7a83367c268622/grpcio_tools-1.67.1-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:6a722bba714392de2386569c40942566b83725fa5c5450b8910e3832a5379469", size = 5500152 },
+ { url = "https://files.pythonhosted.org/packages/01/ab/caf9c330241d843a83043b023e2996e959cdc2c3ab404b1a9938eb734143/grpcio_tools-1.67.1-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:0c7415235cb154e40b5ae90e2a172a0eb8c774b6876f53947cf0af05c983d549", size = 2282055 },
+ { url = "https://files.pythonhosted.org/packages/75/e6/0cd849d140b58fedb7d3b15d907fe2eefd4dadff09b570dd687d841c5d00/grpcio_tools-1.67.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6a4c459098c4934f9470280baf9ff8b38c365e147f33c8abc26039a948a664a5", size = 2617360 },
+ { url = "https://files.pythonhosted.org/packages/b9/51/bd73cd6515c2e81ba0a29b3cf6f2f62ad94737326f70b32511d1972a383e/grpcio_tools-1.67.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e89bf53a268f55c16989dab1cf0b32a5bff910762f138136ffad4146129b7a10", size = 2416028 },
+ { url = "https://files.pythonhosted.org/packages/47/e5/6a16e23036f625b6d60b579996bb9bb7165485903f934d9d9d73b3f03ef5/grpcio_tools-1.67.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:f09cb3e6bcb140f57b878580cf3b848976f67faaf53d850a7da9bfac12437068", size = 3224906 },
+ { url = "https://files.pythonhosted.org/packages/14/cb/230c17d4372fa46fc799a822f25fa00c8eb3f85cc86e192b9606a17f732f/grpcio_tools-1.67.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:616dd0c6686212ca90ff899bb37eb774798677e43dc6f78c6954470782d37399", size = 2870384 },
+ { url = "https://files.pythonhosted.org/packages/66/fd/6d9dd3bf5982ab7d7e773f055360185e96a96cf95f2cbc7f53ded5912ef5/grpcio_tools-1.67.1-cp310-cp310-win32.whl", hash = "sha256:58a66dbb3f0fef0396737ac09d6571a7f8d96a544ce3ed04c161f3d4fa8d51cc", size = 941138 },
+ { url = "https://files.pythonhosted.org/packages/6a/97/2fd5ebd996c12b2cb1e1202ee4a03cac0a65ba17d29dd34253bfe2079839/grpcio_tools-1.67.1-cp310-cp310-win_amd64.whl", hash = "sha256:89ee7c505bdf152e67c2cced6055aed4c2d4170f53a2b46a7e543d3b90e7b977", size = 1091151 },
+ { url = "https://files.pythonhosted.org/packages/b5/9a/ec06547673c5001c2604637069ff8f287df1aef3f0f8809b09a1c936b049/grpcio_tools-1.67.1-cp311-cp311-linux_armv7l.whl", hash = "sha256:6d80ddd87a2fb7131d242f7d720222ef4f0f86f53ec87b0a6198c343d8e4a86e", size = 2307990 },
+ { url = "https://files.pythonhosted.org/packages/ca/84/4b7c3c27a2972c00b3b6ccaadd349e0f86b7039565d3a4932e219a4d76e0/grpcio_tools-1.67.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:b655425b82df51f3bd9fd3ba1a6282d5c9ce1937709f059cb3d419b224532d89", size = 5526552 },
+ { url = "https://files.pythonhosted.org/packages/a7/2d/a620e4c53a3b808ebecaa5033c2176925ee1c6cbb45c29af8bec9a249822/grpcio_tools-1.67.1-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:250241e6f9d20d0910a46887dfcbf2ec9108efd3b48f3fb95bb42d50d09d03f8", size = 2282137 },
+ { url = "https://files.pythonhosted.org/packages/ec/29/e188b2e438781b37532abb8f10caf5b09c611a0bf9a09940b4cf303afd5b/grpcio_tools-1.67.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6008f5a5add0b6f03082edb597acf20d5a9e4e7c55ea1edac8296c19e6a0ec8d", size = 2617333 },
+ { url = "https://files.pythonhosted.org/packages/86/aa/2bbccd3c34b1fa48b892fbad91525c33a8aa85cbedd50e8b0d17dc260dc3/grpcio_tools-1.67.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5eff9818c3831fa23735db1fa39aeff65e790044d0a312260a0c41ae29cc2d9e", size = 2415806 },
+ { url = "https://files.pythonhosted.org/packages/db/34/99853a8ced1119937d02511476018dc1d6b295a4803d4ead5dbf9c55e9bc/grpcio_tools-1.67.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:262ab7c40113f8c3c246e28e369661ddf616a351cb34169b8ba470c9a9c3b56f", size = 3224765 },
+ { url = "https://files.pythonhosted.org/packages/66/39/8537a8ace8f6242f2058677e56a429587ec731c332985af34f35d496ca58/grpcio_tools-1.67.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1eebd8c746adf5786fa4c3056258c21cc470e1eca51d3ed23a7fb6a697fe4e81", size = 2870446 },
+ { url = "https://files.pythonhosted.org/packages/28/2a/5c04375adccff58647d48675e055895c31811a0ad896e4ba310833e2154d/grpcio_tools-1.67.1-cp311-cp311-win32.whl", hash = "sha256:3eff92fb8ca1dd55e3af0ef02236c648921fb7d0e8ca206b889585804b3659ae", size = 940890 },
+ { url = "https://files.pythonhosted.org/packages/e6/ee/7861339c2cec8d55a5e859cf3682bda34eab5a040f95d0c80f775d6a3279/grpcio_tools-1.67.1-cp311-cp311-win_amd64.whl", hash = "sha256:1ed18281ee17e5e0f9f6ce0c6eb3825ca9b5a0866fc1db2e17fab8aca28b8d9f", size = 1091094 },
+ { url = "https://files.pythonhosted.org/packages/d9/cf/7b1908ca72e484bac555431036292c48d2d6504a45e2789848cb5ff313a8/grpcio_tools-1.67.1-cp312-cp312-linux_armv7l.whl", hash = "sha256:bd5caef3a484e226d05a3f72b2d69af500dca972cf434bf6b08b150880166f0b", size = 2307645 },
+ { url = "https://files.pythonhosted.org/packages/bb/15/0d1efb38af8af7e56b2342322634a3caf5f1337a6c3857a6d14aa590dfdf/grpcio_tools-1.67.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:48a2d63d1010e5b218e8e758ecb2a8d63c0c6016434e9f973df1c3558917020a", size = 5525468 },
+ { url = "https://files.pythonhosted.org/packages/52/42/a810709099f09ade7f32990c0712c555b3d7eab6a05fb62618c17f8fe9da/grpcio_tools-1.67.1-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:baa64a6aa009bffe86309e236c81b02cd4a88c1ebd66f2d92e84e9b97a9ae857", size = 2281768 },
+ { url = "https://files.pythonhosted.org/packages/4c/2a/64ee6cfdf1c32ef8bdd67bf04ae2f745f517f4a546281453ca1f68fa79ca/grpcio_tools-1.67.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4ab318c40b5e3c097a159035fc3e4ecfbe9b3d2c9de189e55468b2c27639a6ab", size = 2617359 },
+ { url = "https://files.pythonhosted.org/packages/79/7f/1ed8cd1529253fef9cf0ef3cd8382641125a5ca2eaa08eaffbb549f84e0b/grpcio_tools-1.67.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50eba3e31f9ac1149463ad9182a37349850904f142cffbd957cd7f54ec320b8e", size = 2415323 },
+ { url = "https://files.pythonhosted.org/packages/8e/08/59f0073c58703c176c15fb1a838763b77c1c06994adba16654b92a666e1b/grpcio_tools-1.67.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:de6fbc071ecc4fe6e354a7939202191c1f1abffe37fbce9b08e7e9a5b93eba3d", size = 3225051 },
+ { url = "https://files.pythonhosted.org/packages/b7/0d/a5d703214fe49d261b4b8f0a64140a4dc1f88560724a38ad937120b899ad/grpcio_tools-1.67.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:db9e87f6ea4b0ce99b2651203480585fd9e8dd0dd122a19e46836e93e3a1b749", size = 2870421 },
+ { url = "https://files.pythonhosted.org/packages/ac/af/41d79cb87eae99c0348e8f1fb3dbed9e40a6f63548b216e99f4d1165fa5c/grpcio_tools-1.67.1-cp312-cp312-win32.whl", hash = "sha256:6a595a872fb720dde924c4e8200f41d5418dd6baab8cc1a3c1e540f8f4596351", size = 940542 },
+ { url = "https://files.pythonhosted.org/packages/66/e5/096e12f5319835aa2bcb746d49ae62220bb48313ca649e89bdbef605c11d/grpcio_tools-1.67.1-cp312-cp312-win_amd64.whl", hash = "sha256:92eebb9b31031604ae97ea7657ae2e43149b0394af7117ad7e15894b6cc136dc", size = 1090425 },
+ { url = "https://files.pythonhosted.org/packages/62/b3/91c88440c978740752d39f1abae83f21408048b98b93652ebd84f974ad3d/grpcio_tools-1.67.1-cp313-cp313-linux_armv7l.whl", hash = "sha256:9a3b9510cc87b6458b05ad49a6dee38df6af37f9ee6aa027aa086537798c3d4a", size = 2307453 },
+ { url = "https://files.pythonhosted.org/packages/05/33/faf3330825463c0409fa3891bc1459bf86a00055b19790211365279538d7/grpcio_tools-1.67.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:9e4c9b9fa9b905f15d414cb7bd007ba7499f8907bdd21231ab287a86b27da81a", size = 5517975 },
+ { url = "https://files.pythonhosted.org/packages/bd/78/461ab34cadbd0b5b9a0b6efedda96b58e0de471e3fa91d8e4a4e31924e1b/grpcio_tools-1.67.1-cp313-cp313-manylinux_2_17_aarch64.whl", hash = "sha256:e11a98b41af4bc88b7a738232b8fa0306ad82c79fa5d7090bb607f183a57856f", size = 2281081 },
+ { url = "https://files.pythonhosted.org/packages/5f/0c/b30bdbcab1795b12e05adf30c20981c14f66198e22044edb15b3c1d9f0bc/grpcio_tools-1.67.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:de0fcfe61c26679d64b1710746f2891f359593f76894fcf492c37148d5694f00", size = 2616929 },
+ { url = "https://files.pythonhosted.org/packages/d3/c2/a77ca68ae768f8d5f1d070ea4afc42fda40401083e7c4f5c08211e84de38/grpcio_tools-1.67.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ae3b3e2ee5aad59dece65a613624c46a84c9582fc3642686537c6dfae8e47dc", size = 2414633 },
+ { url = "https://files.pythonhosted.org/packages/39/70/8d7131dccfe4d7b739c96ada7ea9acde631f58f013eae773791fb490a3eb/grpcio_tools-1.67.1-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:9a630f83505b6471a3094a7a372a1240de18d0cd3e64f4fbf46b361bac2be65b", size = 3224328 },
+ { url = "https://files.pythonhosted.org/packages/2a/28/2d24b933ccf0d6877035aa3d5f8b64aad18c953657dd43c682b5701dc127/grpcio_tools-1.67.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:d85a1fcbacd3e08dc2b3d1d46b749351a9a50899fa35cf2ff040e1faf7d405ad", size = 2869640 },
+ { url = "https://files.pythonhosted.org/packages/37/77/ddd2b4cc896639fb0f85fc21d5684f25080ee28845c5a4031e3dd65fdc92/grpcio_tools-1.67.1-cp313-cp313-win32.whl", hash = "sha256:778470f025f25a1fca5a48c93c0a18af395b46b12dd8df7fca63736b85181f41", size = 939997 },
+ { url = "https://files.pythonhosted.org/packages/96/d0/f0855a0ccb26ffeb41e6db68b5cbb25d7e9ba1f8f19151eef36210e64efc/grpcio_tools-1.67.1-cp313-cp313-win_amd64.whl", hash = "sha256:6961da86e9856b4ddee0bf51ef6636b4bf9c29c0715aa71f3c8f027c45d42654", size = 1089819 },
]
[[package]]
@@ -1580,61 +1568,76 @@ wheels = [
[[package]]
name = "hiredis"
-version = "3.0.0"
+version = "3.1.0"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/8b/80/740fb0dfa7a42416ce8376490f41dcdb1e5deed9c3739dfe4200fad865a9/hiredis-3.0.0.tar.gz", hash = "sha256:fed8581ae26345dea1f1e0d1a96e05041a727a45e7d8d459164583e23c6ac441", size = 87581 }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/1f/cc/41521d38c77f404c31e08a0118f369f37dc6a9e19cf315dbbc8b0b8afaba/hiredis-3.0.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:4b182791c41c5eb1d9ed736f0ff81694b06937ca14b0d4dadde5dadba7ff6dae", size = 81483 },
- { url = "https://files.pythonhosted.org/packages/99/35/0138fe68b0da01ea91ad67910577905b7f4a34b5c11e2f665d44067c52df/hiredis-3.0.0-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:13c275b483a052dd645eb2cb60d6380f1f5215e4c22d6207e17b86be6dd87ffa", size = 44763 },
- { url = "https://files.pythonhosted.org/packages/45/53/64fa74d43c17a406c2dc3cb4f1a3729ac00c5451f31f5940ca577b24afa9/hiredis-3.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c1018cc7f12824506f165027eabb302735b49e63af73eb4d5450c66c88f47026", size = 42452 },
- { url = "https://files.pythonhosted.org/packages/af/b8/40c58b7db70e3850adeac85d5fca67e2fce6bf15c2705ca6af9c8bb32b5d/hiredis-3.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:83a29cc7b21b746cb6a480189e49f49b2072812c445e66a9e38d2004d496b81c", size = 165712 },
- { url = "https://files.pythonhosted.org/packages/ff/8e/7afd36941d58cb0a7f0142ba3a043a5b3743dfff60596e98b355fb048113/hiredis-3.0.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e241fab6332e8fb5f14af00a4a9c6aefa22f19a336c069b7ddbf28ef8341e8d6", size = 176842 },
- { url = "https://files.pythonhosted.org/packages/ff/39/482970200e65cdcea037a595083e145fc089b8368312f6f2b0d3c5a7c266/hiredis-3.0.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1fb8de899f0145d6c4d5d4bd0ee88a78eb980a7ffabd51e9889251b8f58f1785", size = 166127 },
- { url = "https://files.pythonhosted.org/packages/3a/2b/655e8b4b54ff28c88e2ac536d4aa24c9119c6160169c043351a91db69bca/hiredis-3.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b23291951959141173eec10f8573538e9349fa27f47a0c34323d1970bf891ee5", size = 165983 },
- { url = "https://files.pythonhosted.org/packages/81/d8/bc917412f95da9904a83a04263aa2760051c118d0199eac7250623bfcf17/hiredis-3.0.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e421ac9e4b5efc11705a0d5149e641d4defdc07077f748667f359e60dc904420", size = 162249 },
- { url = "https://files.pythonhosted.org/packages/77/93/d6585264bb50f9f79537429fa90f4a2a5c29fd5e70d57dec7705ff161a7c/hiredis-3.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:77c8006c12154c37691b24ff293c077300c22944018c3ff70094a33e10c1d795", size = 160013 },
- { url = "https://files.pythonhosted.org/packages/48/a5/302868a60e963c1b768bd5622f125f5b38a3ea084bdcb374c9251dcc7c02/hiredis-3.0.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:41afc0d3c18b59eb50970479a9c0e5544fb4b95e3a79cf2fbaece6ddefb926fe", size = 159315 },
- { url = "https://files.pythonhosted.org/packages/82/77/c02d516ab8f31d85378916055dbf980ef7ca431d93ba1f7ac11ac4304863/hiredis-3.0.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:04ccae6dcd9647eae6025425ab64edb4d79fde8b9e6e115ebfabc6830170e3b2", size = 171008 },
- { url = "https://files.pythonhosted.org/packages/e1/28/c080805a340b418b1d022fa58465e365636c0ed201837e0fe70cc7beb0d3/hiredis-3.0.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:fe91d62b0594db5ea7d23fc2192182b1a7b6973f628a9b8b2e0a42a2be721ac6", size = 163290 },
- { url = "https://files.pythonhosted.org/packages/6a/f9/caacca69987de597487360565e34dfd191ab23ce147144c13df1f2db6c8d/hiredis-3.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:99516d99316062824a24d145d694f5b0d030c80da693ea6f8c4ecf71a251d8bb", size = 161037 },
- { url = "https://files.pythonhosted.org/packages/88/3a/0d560473ca21facc1de5ba538f655aeae71303afd71f2a5e35fadee0c698/hiredis-3.0.0-cp310-cp310-win32.whl", hash = "sha256:562eaf820de045eb487afaa37e6293fe7eceb5b25e158b5a1974b7e40bf04543", size = 20034 },
- { url = "https://files.pythonhosted.org/packages/9c/af/23c2ce80faffb0ceb1775fe4581829c229400d6faacc0e2567ae179e8bc2/hiredis-3.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:a1c81c89ed765198da27412aa21478f30d54ef69bf5e4480089d9c3f77b8f882", size = 21863 },
- { url = "https://files.pythonhosted.org/packages/42/3e/502e2ce2487673214fbb4cc733b1a279bc71309a689803d9ba8ad6f2fa8f/hiredis-3.0.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:4664dedcd5933364756d7251a7ea86d60246ccf73a2e00912872dacbfcef8978", size = 81442 },
- { url = "https://files.pythonhosted.org/packages/18/0b/171d85b2ee0ac51f94e993a323beffdb6b273b838a4f86d9abaaca22e2f7/hiredis-3.0.0-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:47de0bbccf4c8a9f99d82d225f7672b9dd690d8fd872007b933ef51a302c9fa6", size = 44742 },
- { url = "https://files.pythonhosted.org/packages/6a/67/466e0b16caff07bc8df8f3ff8b0b279f81066e0fb6a201b0ec66288fe5a4/hiredis-3.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e43679eca508ba8240d016d8cca9d27342d70184773c15bea78a23c87a1922f1", size = 42424 },
- { url = "https://files.pythonhosted.org/packages/01/50/e1f21e1cc9426bdf62e9ca8106294fbc3e5d27ddbae2e85e47fb9f251d1b/hiredis-3.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:13c345e7278c210317e77e1934b27b61394fee0dec2e8bd47e71570900f75823", size = 166331 },
- { url = "https://files.pythonhosted.org/packages/98/40/8d8e4e15045ce066570f82f49604c6273b186eda1e5c9b93b450dd25d7b9/hiredis-3.0.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:00018f22f38530768b73ea86c11f47e8d4df65facd4e562bd78773bd1baef35e", size = 177350 },
- { url = "https://files.pythonhosted.org/packages/5d/9c/f7b6d7afa2bd9c6671de853069222d9d874725e387100dfb0f1a22aab122/hiredis-3.0.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4ea3a86405baa8eb0d3639ced6926ad03e07113de54cb00fd7510cb0db76a89d", size = 166794 },
- { url = "https://files.pythonhosted.org/packages/53/0c/1076e0c045412081ec44dc81969373cda15c093a0692e10f2941e154e583/hiredis-3.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c073848d2b1d5561f3903879ccf4e1a70c9b1e7566c7bdcc98d082fa3e7f0a1d", size = 166566 },
- { url = "https://files.pythonhosted.org/packages/05/69/e081b023f86b0128fcf9f76c8ed5a5f9426895ad86de234b0332c18a57b8/hiredis-3.0.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5a8dffb5f5b3415a4669d25de48b617fd9d44b0bccfc4c2ab24b06406ecc9ecb", size = 162561 },
- { url = "https://files.pythonhosted.org/packages/96/e0/7f957fb2158c6f6800b6faa2f90bedcc485ca038a2d42166761d400683a3/hiredis-3.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:22c17c96143c2a62dfd61b13803bc5de2ac526b8768d2141c018b965d0333b66", size = 160472 },
- { url = "https://files.pythonhosted.org/packages/5c/31/d68020aa6276bd1a7436ece96d540ad17c204d97285639e0757ef1c3d430/hiredis-3.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:c3ece960008dab66c6b8bb3a1350764677ee7c74ccd6270aaf1b1caf9ccebb46", size = 159705 },
- { url = "https://files.pythonhosted.org/packages/f7/68/5d101f8ffd764a96c2b959815adebb1e4b7e06db68122f9d3dbbc19b81eb/hiredis-3.0.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f75999ae00a920f7dce6ecae76fa5e8674a3110e5a75f12c7a2c75ae1af53396", size = 171498 },
- { url = "https://files.pythonhosted.org/packages/83/86/66131743a2012f668f84aa2eddc07e7b2462b4a07a753b27125f14e4b8bc/hiredis-3.0.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:e069967cbd5e1900aafc4b5943888f6d34937fc59bf8918a1a546cb729b4b1e4", size = 163951 },
- { url = "https://files.pythonhosted.org/packages/a5/ea/58976d9c21086975a90c7fa2337591ea3903eeb55083e366b5ea36b99ca5/hiredis-3.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0aacc0a78e1d94d843a6d191f224a35893e6bdfeb77a4a89264155015c65f126", size = 161566 },
- { url = "https://files.pythonhosted.org/packages/39/69/cdb255e3d37f82f31f4b7b2db5bbd8500eae8d22c0d7992fe474fd02babd/hiredis-3.0.0-cp311-cp311-win32.whl", hash = "sha256:719c32147ba29528cb451f037bf837dcdda4ff3ddb6cdb12c4216b0973174718", size = 20037 },
- { url = "https://files.pythonhosted.org/packages/9d/cf/40d209e0458ac28a26973d1449df2922c7b8259f7f88d7738d11c87f9ff6/hiredis-3.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:bdc144d56333c52c853c31b4e2e52cfbdb22d3da4374c00f5f3d67c42158970f", size = 21862 },
- { url = "https://files.pythonhosted.org/packages/ae/09/0a3eace00115d8c82a8e7d8e58e60aacec10334f4f1512f09ffbac3252e3/hiredis-3.0.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:484025d2eb8f6348f7876fc5a2ee742f568915039fcb31b478fd5c242bb0fe3a", size = 81540 },
- { url = "https://files.pythonhosted.org/packages/1c/e8/1a7a5ded4fb11e91aafc5ba5518392f22883d54e79c4b47f188fb712ea46/hiredis-3.0.0-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:fcdb552ffd97151dab8e7bc3ab556dfa1512556b48a367db94b5c20253a35ee1", size = 44814 },
- { url = "https://files.pythonhosted.org/packages/3b/f5/4e055dc9b55484644afb18063f28649cdbd19be4f15bc152bd633dccd6f7/hiredis-3.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0bb6f9fd92f147ba11d338ef5c68af4fd2908739c09e51f186e1d90958c68cc1", size = 42478 },
- { url = "https://files.pythonhosted.org/packages/65/7b/e06f55b9dcdf10cb6b3f08d7917d3080096cd83deaef1bd4927720fbb280/hiredis-3.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fa86bf9a0ed339ec9e8a9a9d0ae4dccd8671625c83f9f9f2640729b15e07fbfd", size = 168303 },
- { url = "https://files.pythonhosted.org/packages/f4/16/081e90137bb896acd9dc2e1e68480cc84d652af4d959e75e52d6ce9dd602/hiredis-3.0.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e194a0d5df9456995d8f510eab9f529213e7326af6b94770abf8f8b7952ddcaa", size = 179151 },
- { url = "https://files.pythonhosted.org/packages/1e/0f/f5aba1c82977f4b639e5b450c0d8685333f1200cd1972647eb3f4d972e55/hiredis-3.0.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c8a1df39d74ec507d79c7a82c8063eee60bf80537cdeee652f576059b9cdd15c", size = 168580 },
- { url = "https://files.pythonhosted.org/packages/60/86/aa24c20f6d3038bf244bc60a2fe8cde61fb3c0d6a82e2bed30b08d55f96c/hiredis-3.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f91456507427ba36fd81b2ca11053a8e112c775325acc74e993201ea912d63e9", size = 169147 },
- { url = "https://files.pythonhosted.org/packages/6e/03/a4c7a28b6320ef3e36062c1c51e9d66e889c9e09ee7d7ae38b8a2ffdb365/hiredis-3.0.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9862db92ef67a8a02e0d5370f07d380e14577ecb281b79720e0d7a89aedb9ee5", size = 164722 },
- { url = "https://files.pythonhosted.org/packages/cd/66/d60106b56ba0ddd9789656d204a577591ff0cd91ab94178bb96c84d0d918/hiredis-3.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d10fcd9e0eeab835f492832b2a6edb5940e2f1230155f33006a8dfd3bd2c94e4", size = 162561 },
- { url = "https://files.pythonhosted.org/packages/6a/30/f33f2b782096efe9fe6b24c67a4df13b5055d9c859f615a74fb4f18cce41/hiredis-3.0.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:48727d7d405d03977d01885f317328dc21d639096308de126c2c4e9950cbd3c9", size = 161388 },
- { url = "https://files.pythonhosted.org/packages/45/02/34d9b151f9ea4655bfe00e0230f7db8fd8a52c7b7bd728efdf1c17655860/hiredis-3.0.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:8e0bb6102ebe2efecf8a3292c6660a0e6fac98176af6de67f020bea1c2343717", size = 173561 },
- { url = "https://files.pythonhosted.org/packages/cf/54/68285d208918b6d83e32d872d8dcbf8d479ed2c74b863b836e48a2702a3f/hiredis-3.0.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:df274e3abb4df40f4c7274dd3e587dfbb25691826c948bc98d5fead019dfb001", size = 165914 },
- { url = "https://files.pythonhosted.org/packages/56/4f/5f36865f9f032caf00d603ff9cbde21506d2b1e0e0ce0b5d2ce2851411c9/hiredis-3.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:034925b5fb514f7b11aac38cd55b3fd7e9d3af23bd6497f3f20aa5b8ba58e232", size = 163968 },
- { url = "https://files.pythonhosted.org/packages/d3/ee/c38693bd1dbce34806ecc3536dc425e87e420030de7018194865511860c2/hiredis-3.0.0-cp312-cp312-win32.whl", hash = "sha256:120f2dda469b28d12ccff7c2230225162e174657b49cf4cd119db525414ae281", size = 20189 },
- { url = "https://files.pythonhosted.org/packages/4e/67/f50b45071bb8652fa9a28a84ee470a02042fb7a096a16f3c08842f2a5c2b/hiredis-3.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:e584fe5f4e6681d8762982be055f1534e0170f6308a7a90f58d737bab12ff6a8", size = 21971 },
- { url = "https://files.pythonhosted.org/packages/6c/26/fee1a29d7d0cbb76e27ac0914bb17565b1d7cfa24d58922010a667190afc/hiredis-3.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:50da7a9edf371441dfcc56288d790985ee9840d982750580710a9789b8f4a290", size = 39805 },
- { url = "https://files.pythonhosted.org/packages/c7/da/4e9fadc0615958b58e6632d6e85375062f80b60b268b21fa3f449aeee02e/hiredis-3.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9b285ef6bf1581310b0d5e8f6ce64f790a1c40e89c660e1320b35f7515433672", size = 36883 },
- { url = "https://files.pythonhosted.org/packages/cf/d5/cc88b23e466ee070e0109a3e7d7e7835608ad90f80d8415bf7c8c726e71d/hiredis-3.0.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0dcfa684966f25b335072115de2f920228a3c2caf79d4bfa2b30f6e4f674a948", size = 47867 },
- { url = "https://files.pythonhosted.org/packages/09/5b/848006ee860cf543a8b964c17ef04a61ea16967c9b5f173557286ae1afd2/hiredis-3.0.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a41be8af1fd78ca97bc948d789a09b730d1e7587d07ca53af05758f31f4b985d", size = 48254 },
- { url = "https://files.pythonhosted.org/packages/91/41/ef57d7f6f324ea5052d707a510093ec61fde8c5f271029116490790168cf/hiredis-3.0.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:038756db735e417ab36ee6fd7725ce412385ed2bd0767e8179a4755ea11b804f", size = 55556 },
- { url = "https://files.pythonhosted.org/packages/81/52/150658b3006241f2de243e2ccb7f94cfeb74a855435e872dbde7d87f6842/hiredis-3.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:fcecbd39bd42cef905c0b51c9689c39d0cc8b88b1671e7f40d4fb213423aef3a", size = 21938 },
+sdist = { url = "https://files.pythonhosted.org/packages/38/e5/789cfa8993ced0061a6ef7ea758302ef5cf3439629bf0d39c85a6ede4641/hiredis-3.1.0.tar.gz", hash = "sha256:51d40ac3611091020d7dea6b05ed62cb152bff595fa4f931e7b6479d777acf7c", size = 87616 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/9e/13/636d4eedc20ac6962439f72b4dc7c2906e68c4f1df88cea5ebf916125cd5/hiredis-3.1.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:2892db9db21f0cf7cc298d09f85d3e1f6dc4c4c24463ab67f79bc7a006d51867", size = 81243 },
+ { url = "https://files.pythonhosted.org/packages/18/99/af3f3720c769292d159b12684f867641a47331d918bc3b820162c50c1861/hiredis-3.1.0-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:93cfa6cc25ee2ceb0be81dc61eca9995160b9e16bdb7cca4a00607d57e998918", size = 44499 },
+ { url = "https://files.pythonhosted.org/packages/e5/1a/bc12c0e7688f23c33baad05bbd6fd2b944a35c2d3adad59a794ce7e62d70/hiredis-3.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2af62070aa9433802cae7be7364d5e82f76462c6a2ae34e53008b637aaa9a156", size = 42446 },
+ { url = "https://files.pythonhosted.org/packages/65/8c/95c95a2bd6fb04b549083530c08bb1004c4a18a870c2eb8ac0e7f5b37879/hiredis-3.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:072c162260ebb1d892683107da22d0d5da7a1414739eae4e185cac22fe89627f", size = 165614 },
+ { url = "https://files.pythonhosted.org/packages/e0/34/88c4fafe7c6df13c81c02bc51bda9190830b2e7d0d51e685f054573a2caa/hiredis-3.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c6b232c43e89755ba332c2745ddab059c0bc1a0f01448a3a14d506f8448b1ce6", size = 176743 },
+ { url = "https://files.pythonhosted.org/packages/ca/ae/f6fefb942ab27e33416b9734dc06995d4fd6f4daaf6855da520c851417c3/hiredis-3.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eb5316c9a65c4dde80796aa245b76011bab64eb84461a77b0a61c1bf2970bcc9", size = 166029 },
+ { url = "https://files.pythonhosted.org/packages/84/85/c77ff1a95318e12810f529abe08744c06137de84f17114297773b76825b8/hiredis-3.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e812a4e656bbd1c1c15c844b28259c49e26bb384837e44e8d2aa55412c91d2f7", size = 165884 },
+ { url = "https://files.pythonhosted.org/packages/8b/a2/e98faec792f49361f2913d5b537270d180db67ec19be86324aa1610b1371/hiredis-3.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:93a6c9230e5a5565847130c0e1005c8d3aa5ca681feb0ed542c4651323d32feb", size = 162150 },
+ { url = "https://files.pythonhosted.org/packages/c4/30/242b5795025ecd89c8c14de0bd8da9057e9e31348e5d3e739b63aac37f3e/hiredis-3.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a5f65e89ce50a94d9490d5442a649c6116f53f216c8c14eb37cf9637956482b2", size = 159914 },
+ { url = "https://files.pythonhosted.org/packages/06/46/e5539f1db6e88fa4ebcffc6691713ae45d6d764c7ef8600d943da75d6b6a/hiredis-3.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:9b2d6e33601c67c074c367fdccdd6033e642284e7a56adc130f18f724c378ca8", size = 159216 },
+ { url = "https://files.pythonhosted.org/packages/25/47/f60b4d488bfba93eeaade3c859733f073cde40305c96437ff466b303143a/hiredis-3.1.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:bad3b1e0c83849910f28c95953417106f539277035a4b515d1425f93947bc28f", size = 170914 },
+ { url = "https://files.pythonhosted.org/packages/12/83/2ba481bb58b99a8e921289b1d57e69a4516b954bfd8aab00dd28749a2ed7/hiredis-3.1.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:9646de31f5994e6218311dcf216e971703dbf804c510fd3f84ddb9813c495824", size = 163194 },
+ { url = "https://files.pythonhosted.org/packages/09/9d/e4f886d1db94f7cf0ccfc16e40da9a785fdd37cb6ba4d0b984477ff4d198/hiredis-3.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:59a9230f3aa38a33d09d8171400de202f575d7a38869e5ce2947829bca6fe359", size = 160940 },
+ { url = "https://files.pythonhosted.org/packages/35/f6/fee28cf6eb54ce5c3bd21e1f157c99f451e76e145ac7a9aa04f7df83097d/hiredis-3.1.0-cp310-cp310-win32.whl", hash = "sha256:0322d70f3328b97da14b6e98b18f0090a12ed8a8bf7ae20932e2eb9d1bb0aa2c", size = 20083 },
+ { url = "https://files.pythonhosted.org/packages/75/8a/a86859e5bdef1cab3299bdaeb3facaead074f246383312305a62aa877e97/hiredis-3.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:802474c18e878b3f9905e160a8b7df87d57885758083eda76c5978265acb41aa", size = 21911 },
+ { url = "https://files.pythonhosted.org/packages/7c/85/9f738bab9f446e40a3a29aff0aa7766568b2680407e862667eaa3ec78bfe/hiredis-3.1.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:c339ff4b4739b2a40da463763dd566129762f72926bca611ad9a457a9fe64abd", size = 81205 },
+ { url = "https://files.pythonhosted.org/packages/ad/9c/c64ddce9768c3a95797db10f85ed80f80389693b558801a0256e7c8ea3db/hiredis-3.1.0-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:0ffa2552f704a45954627697a378fc2f559004e53055b82f00daf30bd4305330", size = 44479 },
+ { url = "https://files.pythonhosted.org/packages/65/68/b0d0909f86b01bb7be738be306dc536431f2af90a42155a2fafa05d528b9/hiredis-3.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9acf7f0e7106f631cd618eb60ec9bbd6e43045addd5310f66ba1177209567e59", size = 42422 },
+ { url = "https://files.pythonhosted.org/packages/20/3a/625227d3c26ee69ef0f5881c2e329f19d1d5fe6a880a0b5f7eaf2a1ae6ab/hiredis-3.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea4f5ecf9dbea93c827486f59c606684c3496ea71c7ba9a8131932780696e61a", size = 166230 },
+ { url = "https://files.pythonhosted.org/packages/b9/e1/c14f3c66c42f5746cd54156584dcf60540a9063f351e101e99fd074e80ae/hiredis-3.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:39efab176fca3d5111075f6ba56cd864f18db46d858289d39360c5672e0e5c3e", size = 177251 },
+ { url = "https://files.pythonhosted.org/packages/1d/f4/a1d6972feb3be634ae7cdf719a56d5c7a8334f4202a05935b9c1b53d5ef6/hiredis-3.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1110eae007f30e70a058d743e369c24430327cd01fd97d99519d6794a58dd587", size = 166696 },
+ { url = "https://files.pythonhosted.org/packages/87/6f/630581e3c62a4651cb914da1619ddeb7b07f182e74748277244df914c107/hiredis-3.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b390f63191bcccbb6044d4c118acdf4fa55f38e5658ac4cfd5a33a6f0c07659", size = 166463 },
+ { url = "https://files.pythonhosted.org/packages/fd/7b/bcf5562fa50cdce19169d48bb3bc25690c27fde321f147b68781140c9d5d/hiredis-3.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:72a98ccc7b8ec9ce0100ecf59f45f05d2023606e8e3676b07a316d1c1c364072", size = 162461 },
+ { url = "https://files.pythonhosted.org/packages/f3/bd/902a6ad2832f6a517bc13b2fe30ee1f45714c4922faa6eb61c0113314dbc/hiredis-3.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7c76e751fd1e2f221dec09cdc24040ee486886e943d5d7ffc256e8cf15c75e51", size = 160376 },
+ { url = "https://files.pythonhosted.org/packages/12/07/2f4be5e827d5c7d59061f2dfc882ceceb60eb9a263e8eebfbc0093b9c75d/hiredis-3.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:7d3880f213b6f14e9c69ce52beffd1748eecc8669698c4782761887273b6e1bd", size = 159601 },
+ { url = "https://files.pythonhosted.org/packages/2b/5e/ee606c694ac086ba28753b02d842868118830bcb1fb47e25091484677bec/hiredis-3.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:87c2b3fe7e7c96eba376506a76e11514e07e848f737b254e0973e4b5c3a491e9", size = 171404 },
+ { url = "https://files.pythonhosted.org/packages/c3/1a/c2afd5ebb556ad06fe8ab99d1917709e3b0c4ee07f503ca31dab8d66ef1e/hiredis-3.1.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:d3cfb4089e96f8f8ee9554da93148a9261aa6612ad2cc202c1a494c7b712e31f", size = 163846 },
+ { url = "https://files.pythonhosted.org/packages/89/79/e1f0097a53110622c00c51f747f3edec69e24b74539ff23f68085dc547b4/hiredis-3.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4f12018e5c5f866a1c3f7017cb2d88e5c6f9440df2281e48865a2b6c40f247f4", size = 161469 },
+ { url = "https://files.pythonhosted.org/packages/aa/ca/531e287fc5c066d9f39bbc3a6a50ac34c84425c06bf2001af4bd2337037a/hiredis-3.1.0-cp311-cp311-win32.whl", hash = "sha256:107b66ce977bb2dff8f2239e68344360a75d05fed3d9fa0570ac4d3020ce2396", size = 20086 },
+ { url = "https://files.pythonhosted.org/packages/b1/e1/c555f03a189624ed600118d39ab775e5d507e521a61db1a1dfa1c20f3d02/hiredis-3.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:8f1240bde53d3d1676f0aba61b3661560dc9a681cae24d9de33e650864029aa4", size = 21915 },
+ { url = "https://files.pythonhosted.org/packages/cc/64/9f9c1648853cd34e52b2af04c26cebb7f086cb4cd8ce056fecedd7664be9/hiredis-3.1.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:f7c7f89e0bc4246115754e2eda078a111282f6d6ecc6fb458557b724fe6f2aac", size = 81304 },
+ { url = "https://files.pythonhosted.org/packages/42/18/f70f8366c4abcbb830480d72968502192e422ebd60b7ca5f7739872e78cd/hiredis-3.1.0-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:3dbf9163296fa45fbddcfc4c5900f10e9ddadda37117dbfb641e327e536b53e0", size = 44551 },
+ { url = "https://files.pythonhosted.org/packages/a8/a0/bf584a34a8b8e7194c3386700113cd7380a585c3e37b57b45bcf036a3305/hiredis-3.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:af46a4be0e82df470f68f35316fa16cd1e134d1c5092fc1082e1aad64cce716d", size = 42471 },
+ { url = "https://files.pythonhosted.org/packages/97/90/a709dad5fcfa6a3d0480709fd9e24d1e0ba70cbe4b853a1fe63cf7026207/hiredis-3.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc63d698c43aea500a84d8b083f830c03808b6cf3933ae4d35a27f0a3d881652", size = 168205 },
+ { url = "https://files.pythonhosted.org/packages/14/29/33f943cc874d4cc6269d472b2c8ebb7385008fbde192aa5108d617d99504/hiredis-3.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:676b3d88674134bfaaf70dac181d1790b0f33b3187bfb9da9221e17e0e624f83", size = 179055 },
+ { url = "https://files.pythonhosted.org/packages/2b/b2/a1315d474ec36c89e68ac8a3a258431b6f266af7bc4a31265a9527e494df/hiredis-3.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aed10d9df1e2fb0011db2713ac64497462e9c2c0208b648c97569da772b959ca", size = 168484 },
+ { url = "https://files.pythonhosted.org/packages/a1/4f/14aca28a24463b92274464000691610eb41a9afab1e16a7a739be496f274/hiredis-3.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b5bd8adfe8742e331a94cccd782bffea251fa70d9a709e71f4510f50794d700", size = 169050 },
+ { url = "https://files.pythonhosted.org/packages/77/8d/e5aa6857a70c0e3ca423973ea27065fa3cf2567d25cc397b649a1d45043e/hiredis-3.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9fc4e35b4afb0af6da55495dd0742ad32ab88150428a6ecdbb3085cbd60714e8", size = 164624 },
+ { url = "https://files.pythonhosted.org/packages/62/5d/c167de0a8c841cb4ea0e25a8145bbdb7e33b5028eaf905cd0901381f0a83/hiredis-3.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:89b83e76eb00ab0464e7b0752a3ffcb02626e742e9509bc141424a9c3202e8dc", size = 162461 },
+ { url = "https://files.pythonhosted.org/packages/70/b8/fa7e9ae73237999a5c7eb9f59e6c2198ed65eca5cad948b85e2c82c12cc2/hiredis-3.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:98ebf08c907836b70a8f40e030df8ab6f174dc7f6fa765251d813e89f14069d8", size = 161292 },
+ { url = "https://files.pythonhosted.org/packages/04/af/6b6db2d29e2455e97cbf7e19bae0ef1a6e5b61c08d42377a3511ef9cc3bb/hiredis-3.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:6c840b9cec086328f2ee2cfee0038b5d6bbb514bac7b5e579da6e346eaac056c", size = 173465 },
+ { url = "https://files.pythonhosted.org/packages/dc/50/c49d53832d71e1fdb1fe7c91a99b2d47043655cb0d535437264dccc19e2e/hiredis-3.1.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:c5c44e9fa6f4462d0330cb5f5d46fa652512fc86b41d4d1974d0356f263e9105", size = 165818 },
+ { url = "https://files.pythonhosted.org/packages/5f/47/81992b4b27b59152abf7e279c4adba7a5a0e1d99ccbee674a82c6e65b9bf/hiredis-3.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e665b14ab50aa175cfa306fcb00fffd4e3ff02ceb36ca6a4df00b1246d6a73c4", size = 163871 },
+ { url = "https://files.pythonhosted.org/packages/dd/f6/1ee81c373a2087557c6020bf201b4d27d6aec173c8414c3d06900e91d9bd/hiredis-3.1.0-cp312-cp312-win32.whl", hash = "sha256:bd33db977ac7af97e8d035ffadb163b00546be22e5f1297b2123f5f9bf0f8a21", size = 20206 },
+ { url = "https://files.pythonhosted.org/packages/b7/67/46d5a8d44812c6293c8088d642e473b0dd9e12478ef539eb4a77df643450/hiredis-3.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:37aed4aa9348600145e2d019c7be27855e503ecc4906c6976ff2f3b52e3d5d97", size = 21997 },
+ { url = "https://files.pythonhosted.org/packages/7b/b0/0b4f96f537d259b818e4ee7657616eb6fabc0612eb4150d2253f84e33f8f/hiredis-3.1.0-cp313-cp313-macosx_10_15_universal2.whl", hash = "sha256:b87cddd8107487863fed6994de51e5594a0be267b0b19e213694e99cdd614623", size = 81311 },
+ { url = "https://files.pythonhosted.org/packages/79/85/bd6cb6f7645a3803111a4f07fb2b55a23b836725bc8ec74ac7623fe8bef4/hiredis-3.1.0-cp313-cp313-macosx_10_15_x86_64.whl", hash = "sha256:d302deff8cb63a7feffc1844e4dafc8076e566bbf10c5aaaf0f4fe791b8a6bd0", size = 44550 },
+ { url = "https://files.pythonhosted.org/packages/13/48/b53c5d10d3fd073a2046d096d9d415d61b3564f74b0499ec757ddaf7cddc/hiredis-3.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4a018340c073cf88cb635b2bedff96619df2f666018c655e7911f46fa2c1c178", size = 42471 },
+ { url = "https://files.pythonhosted.org/packages/dd/a0/f9da8e920c1871edf703dfa05dd6781a3c53e5574cd2e4b38a438053a533/hiredis-3.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1e8ba6414ac1ae536129e18c069f3eb497df5a74e136e3566471620a4fa5f95", size = 168219 },
+ { url = "https://files.pythonhosted.org/packages/42/59/82a3625dc9fc77f43b38d272eef8c731e359e535a13b29b83ce220d47f5d/hiredis-3.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a86b9fef256c2beb162244791fdc025aa55f936d6358e86e2020e512fe2e4972", size = 179065 },
+ { url = "https://files.pythonhosted.org/packages/b2/aa/66933e4101198f2e2ae379c091fb9a8131cd3dce7a1e6d8fa5ff51244239/hiredis-3.1.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7acdc68e29a446ad17aadaff19c981a36b3bd8c894c3520412c8a7ab1c3e0de7", size = 168508 },
+ { url = "https://files.pythonhosted.org/packages/7a/da/e1475f4d51225cbc4b04e3be22ecb6da80a536b747aa4bb263af318d8555/hiredis-3.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c7e06baea05de57e1e7548064f505a6964e992674fe61b8f274afe2ac93b6371", size = 168989 },
+ { url = "https://files.pythonhosted.org/packages/34/d7/52dd39b5abb81eb24726934c3b9138cc9a30231fb93da8a3e2f829e3598c/hiredis-3.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:35b5fc061c8a0dbfdb440053280504d6aaa8d9726bd4d1d0e1cfcbbdf0d60b73", size = 164488 },
+ { url = "https://files.pythonhosted.org/packages/13/dd/aecfd9f24015b7e892304d6feb888db25b01492f05730f8f45155887de1f/hiredis-3.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c89d2dcb271d24c44f02264233b75d5db8c58831190fa92456a90b87fa17b748", size = 162476 },
+ { url = "https://files.pythonhosted.org/packages/ff/77/4a5357b29e4c9f573439246d27cabad470ea4367a60a86f01c2a31c7c63f/hiredis-3.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:aa36688c10a08f626fddcf68c2b1b91b0e90b070c26e550a4151a877f5c2d431", size = 161380 },
+ { url = "https://files.pythonhosted.org/packages/aa/5e/b357511490626e9c39b3148612bda945f2cd0c8dcd149f36fd7b9512bff4/hiredis-3.1.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f3982a9c16c1c4bc05a00b65d01ffb8d80ea1a7b6b533be2f1a769d3e989d2c0", size = 173505 },
+ { url = "https://files.pythonhosted.org/packages/3e/82/50c015dcf04ea85a89c4603684da9d95c7850931b5320c02c6f3d7ddd78f/hiredis-3.1.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:d1a6f889514ee2452300c9a06862fceedef22a2891f1c421a27b1ba52ef130b2", size = 165928 },
+ { url = "https://files.pythonhosted.org/packages/82/10/bd8f39423b0cb9624ccaf08d5e9c04f72dd46e9e9fc82e95cec42a42428d/hiredis-3.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8a45ff7915392a55d9386bb235ea1d1eb9960615f301979f02143fc20036b699", size = 163902 },
+ { url = "https://files.pythonhosted.org/packages/0b/77/00b420ad567875e5a4b37a16f1a89fef1a22c6a9e1a12195c77bb5b101dd/hiredis-3.1.0-cp313-cp313-win32.whl", hash = "sha256:539e5bb725b62b76a5319a4e68fc7085f01349abc2316ef3df608ea0883c51d2", size = 20211 },
+ { url = "https://files.pythonhosted.org/packages/cc/04/eaa88433249ddfc282018d3da4198d0b0018e48768e137bfad304aacb1ec/hiredis-3.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:9020fd7e58f489fda6a928c31355add0e665fd6b87b21954e675cf9943eafa32", size = 22004 },
+ { url = "https://files.pythonhosted.org/packages/dd/11/13f2af303ed3891ed459527b0183bb743c43eeffd22b8771e7260a0b0281/hiredis-3.1.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:07ab990d0835f36bf358dbb84db4541ac0a8f533128ec09af8f80a576eef2e88", size = 39509 },
+ { url = "https://files.pythonhosted.org/packages/ba/3e/0938e733ad08b6cabd1c56d973207769278b9d971fe6d5ed6480232a7b37/hiredis-3.1.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:5c54a88eb9d8ebc4e5eefaadbe2102a4f7499f9e413654172f40aefd25350959", size = 36900 },
+ { url = "https://files.pythonhosted.org/packages/a7/a7/39d9521519b69056365892a51e2614275f3ae1f149e2c5d9885a909586fe/hiredis-3.1.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8095ef159896e5999a795b0f80e4d64281301a109e442a8d29cd750ca6bd8303", size = 47771 },
+ { url = "https://files.pythonhosted.org/packages/e5/0a/e82918ac75213a47d8fbdcf7f6e2d3fd09a1eeb4e253d6babe47c00602f7/hiredis-3.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f8ca13e2476ffd6d5be4763f5868133506ddcfa5ce54b4dac231ebdc19be6c6", size = 48160 },
+ { url = "https://files.pythonhosted.org/packages/56/cf/8de09573adcaa0906dd689904e24250561bc792c7f9ae7910f154fbba9b0/hiredis-3.1.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:34d25aa25c10f966d5415795ed271da84605044dbf436c054966cea5442451b3", size = 55458 },
+ { url = "https://files.pythonhosted.org/packages/5d/ff/e1603c3c6926c1fa6ae85595e983d7206def21e455ee6f4578bbf31c479f/hiredis-3.1.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:4180dc5f646b426e5fa1212e1348c167ee2a864b3a70d56579163d64a847dd1e", size = 21976 },
]
[[package]]
@@ -1730,7 +1733,7 @@ http2 = [
[[package]]
name = "huggingface-hub"
-version = "0.26.2"
+version = "0.26.5"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "filelock", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
@@ -1741,9 +1744,9 @@ dependencies = [
{ name = "tqdm", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "typing-extensions", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/d5/a8/882ae5d1cfa7c9c5be32feee4cee56d9873078913953423e47a756da110d/huggingface_hub-0.26.2.tar.gz", hash = "sha256:b100d853465d965733964d123939ba287da60a547087783ddff8a323f340332b", size = 375621 }
+sdist = { url = "https://files.pythonhosted.org/packages/51/21/2be5c66f29e798650a3e66bb350dee63bd9ab02cfc3ed7197cf4a905203e/huggingface_hub-0.26.5.tar.gz", hash = "sha256:1008bd18f60bfb65e8dbc0a97249beeeaa8c99d3c2fa649354df9fa5a13ed83b", size = 375951 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/60/bf/cea0b9720c32fa01b0c4ec4b16b9f4ae34ca106b202ebbae9f03ab98cd8f/huggingface_hub-0.26.2-py3-none-any.whl", hash = "sha256:98c2a5a8e786c7b2cb6fdeb2740893cba4d53e312572ed3d8afafda65b128c46", size = 447536 },
+ { url = "https://files.pythonhosted.org/packages/44/5a/dc6af87c61f89b23439eb95521e4e99862636cfd538ae12fd36be5483e5f/huggingface_hub-0.26.5-py3-none-any.whl", hash = "sha256:fb7386090bbe892072e64b85f7c4479fd2d65eea5f2543327c970d5169e83924", size = 447766 },
]
[[package]]
@@ -1769,11 +1772,11 @@ wheels = [
[[package]]
name = "identify"
-version = "2.6.2"
+version = "2.6.3"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/02/79/7a520fc5011e02ca3f3285b5f6820eaf80443eb73e3733f73c02fb42ba0b/identify-2.6.2.tar.gz", hash = "sha256:fab5c716c24d7a789775228823797296a2994b075fb6080ac83a102772a98cbd", size = 99113 }
+sdist = { url = "https://files.pythonhosted.org/packages/1a/5f/05f0d167be94585d502b4adf8c7af31f1dc0b1c7e14f9938a88fdbbcf4a7/identify-2.6.3.tar.gz", hash = "sha256:62f5dae9b5fef52c84cc188514e9ea4f3f636b1d8799ab5ebc475471f9e47a02", size = 99179 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/e0/86/c4395700f3c5475424fb5c41e20c16be28d10c904aee4d005ba3217fc8e7/identify-2.6.2-py2.py3-none-any.whl", hash = "sha256:c097384259f49e372f4ea00a19719d95ae27dd5ff0fd77ad630aa891306b82f3", size = 98982 },
+ { url = "https://files.pythonhosted.org/packages/c9/f5/09644a3ad803fae9eca8efa17e1f2aef380c7f0b02f7ec4e8d446e51d64a/identify-2.6.3-py2.py3-none-any.whl", hash = "sha256:9edba65473324c2ea9684b1f944fe3191db3345e50b6d04571d10ed164f8d7bd", size = 99049 },
]
[[package]]
@@ -1841,7 +1844,7 @@ wheels = [
[[package]]
name = "ipython"
-version = "8.29.0"
+version = "8.30.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "colorama", marker = "sys_platform == 'win32'" },
@@ -1856,9 +1859,9 @@ dependencies = [
{ name = "traitlets", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "typing-extensions", marker = "(python_full_version < '3.12' and sys_platform == 'darwin') or (python_full_version < '3.12' and sys_platform == 'linux') or (python_full_version < '3.12' and sys_platform == 'win32')" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/85/e0/a3f36dde97e12121106807d80485423ae4c5b27ce60d40d4ab0bab18a9db/ipython-8.29.0.tar.gz", hash = "sha256:40b60e15b22591450eef73e40a027cf77bd652e757523eebc5bd7c7c498290eb", size = 5497513 }
+sdist = { url = "https://files.pythonhosted.org/packages/d8/8b/710af065ab8ed05649afa5bd1e07401637c9ec9fb7cfda9eac7e91e9fbd4/ipython-8.30.0.tar.gz", hash = "sha256:cb0a405a306d2995a5cbb9901894d240784a9f341394c6ba3f4fe8c6eb89ff6e", size = 5592205 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/c5/a5/c15ed187f1b3fac445bb42a2dedd8dec1eee1718b35129242049a13a962f/ipython-8.29.0-py3-none-any.whl", hash = "sha256:0188a1bd83267192123ccea7f4a8ed0a78910535dbaa3f37671dca76ebd429c8", size = 819911 },
+ { url = "https://files.pythonhosted.org/packages/1d/f3/1332ba2f682b07b304ad34cad2f003adcfeb349486103f4b632335074a7c/ipython-8.30.0-py3-none-any.whl", hash = "sha256:85ec56a7e20f6c38fce7727dcca699ae4ffc85985aa7b23635a8008f918ae321", size = 820765 },
]
[[package]]
@@ -1905,58 +1908,61 @@ wheels = [
[[package]]
name = "jiter"
-version = "0.7.1"
-source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/46/e5/50ff23c9bba2722d2f0f55ba51e57f7cbab9a4be758e6b9b263ef51e6024/jiter-0.7.1.tar.gz", hash = "sha256:448cf4f74f7363c34cdef26214da527e8eeffd88ba06d0b80b485ad0667baf5d", size = 162334 }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/36/f5/c6ccaa2331037cbb69d82e3ab2f2beaec485dd9e42a2ac409e6219b2d7f0/jiter-0.7.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:262e96d06696b673fad6f257e6a0abb6e873dc22818ca0e0600f4a1189eb334f", size = 291030 },
- { url = "https://files.pythonhosted.org/packages/31/7e/6abbccd6f22c4d90b836b654a3e12fa56c167f65439249c23ee36644630b/jiter-0.7.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:be6de02939aac5be97eb437f45cfd279b1dc9de358b13ea6e040e63a3221c40d", size = 303756 },
- { url = "https://files.pythonhosted.org/packages/f7/65/a20de47be232547ee8a32f47989ac6a8f912a357af12eb48365ba7497003/jiter-0.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:935f10b802bc1ce2b2f61843e498c7720aa7f4e4bb7797aa8121eab017293c3d", size = 328525 },
- { url = "https://files.pythonhosted.org/packages/5b/73/b62c385cd8389a984449e749840d3ffcac727eadb59d636514b30681144e/jiter-0.7.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9cd3cccccabf5064e4bb3099c87bf67db94f805c1e62d1aefd2b7476e90e0ee2", size = 347344 },
- { url = "https://files.pythonhosted.org/packages/75/b7/6cd1e8b42a1dbc9d4c3a05401a80383ddb5d3d740015bf786cfb0a1c36db/jiter-0.7.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4aa919ebfc5f7b027cc368fe3964c0015e1963b92e1db382419dadb098a05192", size = 373480 },
- { url = "https://files.pythonhosted.org/packages/a2/5e/6bb5d28e9e7e046737b617ad9a05777ffa45d5ba355edd116efdad1fcd14/jiter-0.7.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ae2d01e82c94491ce4d6f461a837f63b6c4e6dd5bb082553a70c509034ff3d4", size = 390794 },
- { url = "https://files.pythonhosted.org/packages/1d/0c/e7ac4ac5327eff2b93bcd70e74ca76a0d6b0a6d2fc27f40707ddabfe7739/jiter-0.7.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f9568cd66dbbdab67ae1b4c99f3f7da1228c5682d65913e3f5f95586b3cb9a9", size = 325247 },
- { url = "https://files.pythonhosted.org/packages/72/19/0188794f2e3f8aedd16e4758fff810438f9f4207977553a8453c7e7382c4/jiter-0.7.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9ecbf4e20ec2c26512736284dc1a3f8ed79b6ca7188e3b99032757ad48db97dc", size = 365216 },
- { url = "https://files.pythonhosted.org/packages/55/dd/f4c0c9bbff937fd90de576df44feb310a533b9389a7b61542261fd9b29be/jiter-0.7.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b1a0508fddc70ce00b872e463b387d49308ef02b0787992ca471c8d4ba1c0fa1", size = 514977 },
- { url = "https://files.pythonhosted.org/packages/82/56/f1dc02e26f780aa8e1c7bd856a7cd8d343c8e0e8111bdab2d2c0b77972c7/jiter-0.7.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f84c9996664c460f24213ff1e5881530abd8fafd82058d39af3682d5fd2d6316", size = 498020 },
- { url = "https://files.pythonhosted.org/packages/16/b7/489465de0f73896a3507c028faff791f16e0010c790264717fb557d299cb/jiter-0.7.1-cp310-none-win32.whl", hash = "sha256:c915e1a1960976ba4dfe06551ea87063b2d5b4d30759012210099e712a414d9f", size = 198725 },
- { url = "https://files.pythonhosted.org/packages/b6/1b/79d038a632e2d00657ca4965b6f93454eb0e563ad9168f40050f320e5460/jiter-0.7.1-cp310-none-win_amd64.whl", hash = "sha256:75bf3b7fdc5c0faa6ffffcf8028a1f974d126bac86d96490d1b51b3210aa0f3f", size = 201730 },
- { url = "https://files.pythonhosted.org/packages/26/e5/18b30b3015ae1df916cadd42b428f9a47a7277a52b041e4caf939e6c3c21/jiter-0.7.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:ad04a23a91f3d10d69d6c87a5f4471b61c2c5cd6e112e85136594a02043f462c", size = 291198 },
- { url = "https://files.pythonhosted.org/packages/7d/e3/a70e5b98602d24c617e829d6714b3e4f7f9912fdc2844682653dafb5eba0/jiter-0.7.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e47a554de88dff701226bb5722b7f1b6bccd0b98f1748459b7e56acac2707a5", size = 303513 },
- { url = "https://files.pythonhosted.org/packages/34/35/c44064c12e2d189dd3a6135e3b4f9f64167d81abada4eeb0dd75313ad9ad/jiter-0.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e44fff69c814a2e96a20b4ecee3e2365e9b15cf5fe4e00869d18396daa91dab", size = 328470 },
- { url = "https://files.pythonhosted.org/packages/de/88/55747df3d3472a08d25ab59752cc7a2682c9bfb38d8dbe00d5fadc35ae49/jiter-0.7.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:df0a1d05081541b45743c965436f8b5a1048d6fd726e4a030113a2699a6046ea", size = 347484 },
- { url = "https://files.pythonhosted.org/packages/8e/f6/afa8d156b7c166dceae66e01d0aa9933f7c3afcc5af3901e717237e5b98c/jiter-0.7.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f22cf8f236a645cb6d8ffe2a64edb5d2b66fb148bf7c75eea0cb36d17014a7bc", size = 373483 },
- { url = "https://files.pythonhosted.org/packages/b7/ab/38c652c71bfd7a8e00fc0962a6985186e9741cfd9dde00a0d8c0138a9c07/jiter-0.7.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:da8589f50b728ea4bf22e0632eefa125c8aa9c38ed202a5ee6ca371f05eeb3ff", size = 390563 },
- { url = "https://files.pythonhosted.org/packages/62/02/1dacf3b95d13f36298a261723c52b45701db485ee104f7677cb931697395/jiter-0.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f20de711224f2ca2dbb166a8d512f6ff48c9c38cc06b51f796520eb4722cc2ce", size = 325508 },
- { url = "https://files.pythonhosted.org/packages/b9/a8/ac3509099030304b28c226b432347f5420297e8bec4cb1f27f716a4f23cf/jiter-0.7.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8a9803396032117b85ec8cbf008a54590644a062fedd0425cbdb95e4b2b60479", size = 365355 },
- { url = "https://files.pythonhosted.org/packages/92/fe/85fc2dd31473bf71b1e78311d09bb1f90211b5b327b9b884684d45e9ae48/jiter-0.7.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3d8bae77c82741032e9d89a4026479061aba6e646de3bf5f2fc1ae2bbd9d06e0", size = 514802 },
- { url = "https://files.pythonhosted.org/packages/06/8c/fa1f8b98618b476c346ad57e9eb85293cd2acd7680926b2f27f884c7aebc/jiter-0.7.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3dc9939e576bbc68c813fc82f6620353ed68c194c7bcf3d58dc822591ec12490", size = 497983 },
- { url = "https://files.pythonhosted.org/packages/ee/13/0e726eaee6c5dcd14582d28e90a1381ff4ab1c6b583e597f4e0d4a0950bd/jiter-0.7.1-cp311-none-win32.whl", hash = "sha256:f7605d24cd6fab156ec89e7924578e21604feee9c4f1e9da34d8b67f63e54892", size = 198800 },
- { url = "https://files.pythonhosted.org/packages/2b/30/6a79fd25f36660cec4fb46c5fd0d52375584fdc7a874889b24111cb666af/jiter-0.7.1-cp311-none-win_amd64.whl", hash = "sha256:f3ea649e7751a1a29ea5ecc03c4ada0a833846c59c6da75d747899f9b48b7282", size = 203785 },
- { url = "https://files.pythonhosted.org/packages/10/b3/de89eae8f57dc0ee5f6e3aa1ffcdee0364ef9ef85be81006fd17d7710ffa/jiter-0.7.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:ad36a1155cbd92e7a084a568f7dc6023497df781adf2390c345dd77a120905ca", size = 291900 },
- { url = "https://files.pythonhosted.org/packages/c0/ff/0d804eff4751fceeabc6311d4b07e956daa06fa58f05931887dc7454466b/jiter-0.7.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7ba52e6aaed2dc5c81a3d9b5e4ab95b039c4592c66ac973879ba57c3506492bb", size = 304390 },
- { url = "https://files.pythonhosted.org/packages/e8/26/c258bef532d113a7ac26242893fc9760040a4846dec731098b7f5ac3fca7/jiter-0.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2b7de0b6f6728b678540c7927587e23f715284596724be203af952418acb8a2d", size = 328710 },
- { url = "https://files.pythonhosted.org/packages/71/92/644dc215cbb9816112e28f3b43a8c8e769f083434a05fc3afd269c444f51/jiter-0.7.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9463b62bd53c2fb85529c700c6a3beb2ee54fde8bef714b150601616dcb184a6", size = 347569 },
- { url = "https://files.pythonhosted.org/packages/c6/02/795a3535262c54595bd97e375cc03b443717febb37723a7f9c077049825b/jiter-0.7.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:627164ec01d28af56e1f549da84caf0fe06da3880ebc7b7ee1ca15df106ae172", size = 373641 },
- { url = "https://files.pythonhosted.org/packages/7d/35/c7e9a06a49116e3618954f6c8a26816a7959c0f9e5617b0073e4145c5d6d/jiter-0.7.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:25d0e5bf64e368b0aa9e0a559c3ab2f9b67e35fe7269e8a0d81f48bbd10e8963", size = 388828 },
- { url = "https://files.pythonhosted.org/packages/fb/05/894144e4cbc1b9d46756db512268a90f84fc1d8bd28f1a17e0fef5aaf5c5/jiter-0.7.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c244261306f08f8008b3087059601997016549cb8bb23cf4317a4827f07b7d74", size = 325511 },
- { url = "https://files.pythonhosted.org/packages/19/d3/e6674ac34de53787504e4fb309084f824df321f24113121d94bf53808be3/jiter-0.7.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7ded4e4b75b68b843b7cea5cd7c55f738c20e1394c68c2cb10adb655526c5f1b", size = 365940 },
- { url = "https://files.pythonhosted.org/packages/e9/ca/c773f0ce186090cc69a2c97b8dab3dad14ae9988a657a20d879458a8407e/jiter-0.7.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:80dae4f1889b9d09e5f4de6b58c490d9c8ce7730e35e0b8643ab62b1538f095c", size = 515430 },
- { url = "https://files.pythonhosted.org/packages/16/5f/c98f6e6362fbc7c87ad384ba8506983fca9bb55ea0af7efcb23e7dd22817/jiter-0.7.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5970cf8ec943b51bce7f4b98d2e1ed3ada170c2a789e2db3cb484486591a176a", size = 497389 },
- { url = "https://files.pythonhosted.org/packages/30/60/f60e12469afc9096bac3df0fda53de707ed5105d84322a0d1bc4ad03ee3e/jiter-0.7.1-cp312-none-win32.whl", hash = "sha256:701d90220d6ecb3125d46853c8ca8a5bc158de8c49af60fd706475a49fee157e", size = 198546 },
- { url = "https://files.pythonhosted.org/packages/01/d2/d8ec257544f7991384a46fccee6abdc5065cfede26354bb2c86251858a92/jiter-0.7.1-cp312-none-win_amd64.whl", hash = "sha256:7824c3ecf9ecf3321c37f4e4d4411aad49c666ee5bc2a937071bdd80917e4533", size = 202792 },
- { url = "https://files.pythonhosted.org/packages/b5/cf/00a93a9968fc21b9ecfcabb130a8c822138594ac4a00b7bff9cbb38daa7f/jiter-0.7.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:097676a37778ba3c80cb53f34abd6943ceb0848263c21bf423ae98b090f6c6ba", size = 291039 },
- { url = "https://files.pythonhosted.org/packages/22/9a/0eb3eddffeca703f6adaaf117ba93ac3336fb323206259a86c2993cec9ad/jiter-0.7.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3298af506d4271257c0a8f48668b0f47048d69351675dd8500f22420d4eec378", size = 302468 },
- { url = "https://files.pythonhosted.org/packages/b1/95/b4da75e93752edfd6dd0df8f7723a6575e8a8bdce2e82f4458eb5564936a/jiter-0.7.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:12fd88cfe6067e2199964839c19bd2b422ca3fd792949b8f44bb8a4e7d21946a", size = 328401 },
- { url = "https://files.pythonhosted.org/packages/28/af/7fa53804a2e7e309ce66822c9484fd7d4f8ef452be3937aab8a93a82c54b/jiter-0.7.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:dacca921efcd21939123c8ea8883a54b9fa7f6545c8019ffcf4f762985b6d0c8", size = 347237 },
- { url = "https://files.pythonhosted.org/packages/30/0c/0b89bd3dce7d330d8ee878b0a95899b73e30cb55d2b2c41998276350d4a0/jiter-0.7.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de3674a5fe1f6713a746d25ad9c32cd32fadc824e64b9d6159b3b34fd9134143", size = 373558 },
- { url = "https://files.pythonhosted.org/packages/24/96/c75633b99d57dd8b8457f88f51201805c93b314e369fba69829d726bc2a5/jiter-0.7.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65df9dbae6d67e0788a05b4bad5706ad40f6f911e0137eb416b9eead6ba6f044", size = 388251 },
- { url = "https://files.pythonhosted.org/packages/64/39/369e6ff198003f55acfcdb58169c774473082d3303cddcd24334af534c4e/jiter-0.7.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ba9a358d59a0a55cccaa4957e6ae10b1a25ffdabda863c0343c51817610501d", size = 325020 },
- { url = "https://files.pythonhosted.org/packages/80/26/0c386fa233a78997db5fa7b362e6f35a37d2656d09e521b0600f29933992/jiter-0.7.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:576eb0f0c6207e9ede2b11ec01d9c2182973986514f9c60bc3b3b5d5798c8f50", size = 365211 },
- { url = "https://files.pythonhosted.org/packages/21/4e/bfebe799924a39f181874b5e9041b792ee67768a8b160814e016a7c9a40d/jiter-0.7.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:e550e29cdf3577d2c970a18f3959e6b8646fd60ef1b0507e5947dc73703b5627", size = 514904 },
- { url = "https://files.pythonhosted.org/packages/a7/81/b3c72c6691acd29cf707df1a0b300e6726385b3c1ced8dc20424c4452699/jiter-0.7.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:81d968dbf3ce0db2e0e4dec6b0a0d5d94f846ee84caf779b07cab49f5325ae43", size = 497102 },
- { url = "https://files.pythonhosted.org/packages/1e/c3/766f9ec97df0441597878c7949da2b241a12a381c3affa7ca761734c8c74/jiter-0.7.1-cp313-none-win32.whl", hash = "sha256:f892e547e6e79a1506eb571a676cf2f480a4533675f834e9ae98de84f9b941ac", size = 198119 },
- { url = "https://files.pythonhosted.org/packages/76/01/cbc0136784a3ffefb5ca5326f8167780c5c3de0c81b6b81b773a973c571e/jiter-0.7.1-cp313-none-win_amd64.whl", hash = "sha256:0302f0940b1455b2a7fb0409b8d5b31183db70d2b07fd177906d83bf941385d1", size = 199236 },
+version = "0.8.2"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/f8/70/90bc7bd3932e651486861df5c8ffea4ca7c77d28e8532ddefe2abc561a53/jiter-0.8.2.tar.gz", hash = "sha256:cd73d3e740666d0e639f678adb176fad25c1bcbdae88d8d7b857e1783bb4212d", size = 163007 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/f2/f3/8c11e0e87bd5934c414f9b1cfae3cbfd4a938d4669d57cb427e1c4d11a7f/jiter-0.8.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:ca8577f6a413abe29b079bc30f907894d7eb07a865c4df69475e868d73e71c7b", size = 303381 },
+ { url = "https://files.pythonhosted.org/packages/ea/28/4cd3f0bcbf40e946bc6a62a82c951afc386a25673d3d8d5ee461f1559bbe/jiter-0.8.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b25bd626bde7fb51534190c7e3cb97cee89ee76b76d7585580e22f34f5e3f393", size = 311718 },
+ { url = "https://files.pythonhosted.org/packages/0d/17/57acab00507e60bd954eaec0837d9d7b119b4117ff49b8a62f2b646f32ed/jiter-0.8.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5c826a221851a8dc028eb6d7d6429ba03184fa3c7e83ae01cd6d3bd1d4bd17d", size = 335465 },
+ { url = "https://files.pythonhosted.org/packages/74/b9/1a3ddd2bc95ae17c815b021521020f40c60b32137730126bada962ef32b4/jiter-0.8.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d35c864c2dff13dfd79fb070fc4fc6235d7b9b359efe340e1261deb21b9fcb66", size = 355570 },
+ { url = "https://files.pythonhosted.org/packages/78/69/6d29e2296a934199a7d0dde673ecccf98c9c8db44caf0248b3f2b65483cb/jiter-0.8.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f557c55bc2b7676e74d39d19bcb8775ca295c7a028246175d6a8b431e70835e5", size = 381383 },
+ { url = "https://files.pythonhosted.org/packages/22/d7/fbc4c3fb1bf65f9be22a32759b539f88e897aeb13fe84ab0266e4423487a/jiter-0.8.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:580ccf358539153db147e40751a0b41688a5ceb275e6f3e93d91c9467f42b2e3", size = 390454 },
+ { url = "https://files.pythonhosted.org/packages/4d/a0/3993cda2e267fe679b45d0bcc2cef0b4504b0aa810659cdae9737d6bace9/jiter-0.8.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af102d3372e917cffce49b521e4c32c497515119dc7bd8a75665e90a718bbf08", size = 345039 },
+ { url = "https://files.pythonhosted.org/packages/b9/ef/69c18562b4c09ce88fab5df1dcaf643f6b1a8b970b65216e7221169b81c4/jiter-0.8.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cadcc978f82397d515bb2683fc0d50103acff2a180552654bb92d6045dec2c49", size = 376200 },
+ { url = "https://files.pythonhosted.org/packages/4d/17/0b5a8de46a6ab4d836f70934036278b49b8530c292b29dde3483326d4555/jiter-0.8.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ba5bdf56969cad2019d4e8ffd3f879b5fdc792624129741d3d83fc832fef8c7d", size = 511158 },
+ { url = "https://files.pythonhosted.org/packages/6c/b2/c401a0a2554b36c9e6d6e4876b43790d75139cf3936f0222e675cbc23451/jiter-0.8.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3b94a33a241bee9e34b8481cdcaa3d5c2116f575e0226e421bed3f7a6ea71cff", size = 503956 },
+ { url = "https://files.pythonhosted.org/packages/d4/02/a0291ed7d72c0ac130f172354ee3cf0b2556b69584de391463a8ee534f40/jiter-0.8.2-cp310-cp310-win32.whl", hash = "sha256:6e5337bf454abddd91bd048ce0dca5134056fc99ca0205258766db35d0a2ea43", size = 202846 },
+ { url = "https://files.pythonhosted.org/packages/ad/20/8c988831ae4bf437e29f1671e198fc99ba8fe49f2895f23789acad1d1811/jiter-0.8.2-cp310-cp310-win_amd64.whl", hash = "sha256:4a9220497ca0cb1fe94e3f334f65b9b5102a0b8147646118f020d8ce1de70105", size = 204414 },
+ { url = "https://files.pythonhosted.org/packages/cb/b0/c1a7caa7f9dc5f1f6cfa08722867790fe2d3645d6e7170ca280e6e52d163/jiter-0.8.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:2dd61c5afc88a4fda7d8b2cf03ae5947c6ac7516d32b7a15bf4b49569a5c076b", size = 303666 },
+ { url = "https://files.pythonhosted.org/packages/f5/97/0468bc9eeae43079aaa5feb9267964e496bf13133d469cfdc135498f8dd0/jiter-0.8.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a6c710d657c8d1d2adbbb5c0b0c6bfcec28fd35bd6b5f016395f9ac43e878a15", size = 311934 },
+ { url = "https://files.pythonhosted.org/packages/e5/69/64058e18263d9a5f1e10f90c436853616d5f047d997c37c7b2df11b085ec/jiter-0.8.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9584de0cd306072635fe4b89742bf26feae858a0683b399ad0c2509011b9dc0", size = 335506 },
+ { url = "https://files.pythonhosted.org/packages/9d/14/b747f9a77b8c0542141d77ca1e2a7523e854754af2c339ac89a8b66527d6/jiter-0.8.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5a90a923338531b7970abb063cfc087eebae6ef8ec8139762007188f6bc69a9f", size = 355849 },
+ { url = "https://files.pythonhosted.org/packages/53/e2/98a08161db7cc9d0e39bc385415890928ff09709034982f48eccfca40733/jiter-0.8.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d21974d246ed0181558087cd9f76e84e8321091ebfb3a93d4c341479a736f099", size = 381700 },
+ { url = "https://files.pythonhosted.org/packages/7a/38/1674672954d35bce3b1c9af99d5849f9256ac8f5b672e020ac7821581206/jiter-0.8.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:32475a42b2ea7b344069dc1e81445cfc00b9d0e3ca837f0523072432332e9f74", size = 389710 },
+ { url = "https://files.pythonhosted.org/packages/f8/9b/92f9da9a9e107d019bcf883cd9125fa1690079f323f5a9d5c6986eeec3c0/jiter-0.8.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b9931fd36ee513c26b5bf08c940b0ac875de175341cbdd4fa3be109f0492586", size = 345553 },
+ { url = "https://files.pythonhosted.org/packages/44/a6/6d030003394e9659cd0d7136bbeabd82e869849ceccddc34d40abbbbb269/jiter-0.8.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ce0820f4a3a59ddced7fce696d86a096d5cc48d32a4183483a17671a61edfddc", size = 376388 },
+ { url = "https://files.pythonhosted.org/packages/ad/8d/87b09e648e4aca5f9af89e3ab3cfb93db2d1e633b2f2931ede8dabd9b19a/jiter-0.8.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8ffc86ae5e3e6a93765d49d1ab47b6075a9c978a2b3b80f0f32628f39caa0c88", size = 511226 },
+ { url = "https://files.pythonhosted.org/packages/77/95/8008ebe4cdc82eac1c97864a8042ca7e383ed67e0ec17bfd03797045c727/jiter-0.8.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5127dc1abd809431172bc3fbe8168d6b90556a30bb10acd5ded41c3cfd6f43b6", size = 504134 },
+ { url = "https://files.pythonhosted.org/packages/26/0d/3056a74de13e8b2562e4d526de6dac2f65d91ace63a8234deb9284a1d24d/jiter-0.8.2-cp311-cp311-win32.whl", hash = "sha256:66227a2c7b575720c1871c8800d3a0122bb8ee94edb43a5685aa9aceb2782d44", size = 203103 },
+ { url = "https://files.pythonhosted.org/packages/4e/1e/7f96b798f356e531ffc0f53dd2f37185fac60fae4d6c612bbbd4639b90aa/jiter-0.8.2-cp311-cp311-win_amd64.whl", hash = "sha256:cde031d8413842a1e7501e9129b8e676e62a657f8ec8166e18a70d94d4682855", size = 206717 },
+ { url = "https://files.pythonhosted.org/packages/a1/17/c8747af8ea4e045f57d6cfd6fc180752cab9bc3de0e8a0c9ca4e8af333b1/jiter-0.8.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:e6ec2be506e7d6f9527dae9ff4b7f54e68ea44a0ef6b098256ddf895218a2f8f", size = 302027 },
+ { url = "https://files.pythonhosted.org/packages/3c/c1/6da849640cd35a41e91085723b76acc818d4b7d92b0b6e5111736ce1dd10/jiter-0.8.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:76e324da7b5da060287c54f2fabd3db5f76468006c811831f051942bf68c9d44", size = 310326 },
+ { url = "https://files.pythonhosted.org/packages/06/99/a2bf660d8ccffee9ad7ed46b4f860d2108a148d0ea36043fd16f4dc37e94/jiter-0.8.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:180a8aea058f7535d1c84183c0362c710f4750bef66630c05f40c93c2b152a0f", size = 334242 },
+ { url = "https://files.pythonhosted.org/packages/a7/5f/cea1c17864828731f11427b9d1ab7f24764dbd9aaf4648a7f851164d2718/jiter-0.8.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:025337859077b41548bdcbabe38698bcd93cfe10b06ff66617a48ff92c9aec60", size = 356654 },
+ { url = "https://files.pythonhosted.org/packages/e9/13/62774b7e5e7f5d5043efe1d0f94ead66e6d0f894ae010adb56b3f788de71/jiter-0.8.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ecff0dc14f409599bbcafa7e470c00b80f17abc14d1405d38ab02e4b42e55b57", size = 379967 },
+ { url = "https://files.pythonhosted.org/packages/ec/fb/096b34c553bb0bd3f2289d5013dcad6074948b8d55212aa13a10d44c5326/jiter-0.8.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ffd9fee7d0775ebaba131f7ca2e2d83839a62ad65e8e02fe2bd8fc975cedeb9e", size = 389252 },
+ { url = "https://files.pythonhosted.org/packages/17/61/beea645c0bf398ced8b199e377b61eb999d8e46e053bb285c91c3d3eaab0/jiter-0.8.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14601dcac4889e0a1c75ccf6a0e4baf70dbc75041e51bcf8d0e9274519df6887", size = 345490 },
+ { url = "https://files.pythonhosted.org/packages/d5/df/834aa17ad5dcc3cf0118821da0a0cf1589ea7db9832589278553640366bc/jiter-0.8.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:92249669925bc1c54fcd2ec73f70f2c1d6a817928480ee1c65af5f6b81cdf12d", size = 376991 },
+ { url = "https://files.pythonhosted.org/packages/67/80/87d140399d382fb4ea5b3d56e7ecaa4efdca17cd7411ff904c1517855314/jiter-0.8.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e725edd0929fa79f8349ab4ec7f81c714df51dc4e991539a578e5018fa4a7152", size = 510822 },
+ { url = "https://files.pythonhosted.org/packages/5c/37/3394bb47bac1ad2cb0465601f86828a0518d07828a650722e55268cdb7e6/jiter-0.8.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:bf55846c7b7a680eebaf9c3c48d630e1bf51bdf76c68a5f654b8524335b0ad29", size = 503730 },
+ { url = "https://files.pythonhosted.org/packages/f9/e2/253fc1fa59103bb4e3aa0665d6ceb1818df1cd7bf3eb492c4dad229b1cd4/jiter-0.8.2-cp312-cp312-win32.whl", hash = "sha256:7efe4853ecd3d6110301665a5178b9856be7e2a9485f49d91aa4d737ad2ae49e", size = 203375 },
+ { url = "https://files.pythonhosted.org/packages/41/69/6d4bbe66b3b3b4507e47aa1dd5d075919ad242b4b1115b3f80eecd443687/jiter-0.8.2-cp312-cp312-win_amd64.whl", hash = "sha256:83c0efd80b29695058d0fd2fa8a556490dbce9804eac3e281f373bbc99045f6c", size = 204740 },
+ { url = "https://files.pythonhosted.org/packages/6c/b0/bfa1f6f2c956b948802ef5a021281978bf53b7a6ca54bb126fd88a5d014e/jiter-0.8.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:ca1f08b8e43dc3bd0594c992fb1fd2f7ce87f7bf0d44358198d6da8034afdf84", size = 301190 },
+ { url = "https://files.pythonhosted.org/packages/a4/8f/396ddb4e292b5ea57e45ade5dc48229556b9044bad29a3b4b2dddeaedd52/jiter-0.8.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5672a86d55416ccd214c778efccf3266b84f87b89063b582167d803246354be4", size = 309334 },
+ { url = "https://files.pythonhosted.org/packages/7f/68/805978f2f446fa6362ba0cc2e4489b945695940656edd844e110a61c98f8/jiter-0.8.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58dc9bc9767a1101f4e5e22db1b652161a225874d66f0e5cb8e2c7d1c438b587", size = 333918 },
+ { url = "https://files.pythonhosted.org/packages/b3/99/0f71f7be667c33403fa9706e5b50583ae5106d96fab997fa7e2f38ee8347/jiter-0.8.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:37b2998606d6dadbb5ccda959a33d6a5e853252d921fec1792fc902351bb4e2c", size = 356057 },
+ { url = "https://files.pythonhosted.org/packages/8d/50/a82796e421a22b699ee4d2ce527e5bcb29471a2351cbdc931819d941a167/jiter-0.8.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4ab9a87f3784eb0e098f84a32670cfe4a79cb6512fd8f42ae3d0709f06405d18", size = 379790 },
+ { url = "https://files.pythonhosted.org/packages/3c/31/10fb012b00f6d83342ca9e2c9618869ab449f1aa78c8f1b2193a6b49647c/jiter-0.8.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:79aec8172b9e3c6d05fd4b219d5de1ac616bd8da934107325a6c0d0e866a21b6", size = 388285 },
+ { url = "https://files.pythonhosted.org/packages/c8/81/f15ebf7de57be488aa22944bf4274962aca8092e4f7817f92ffa50d3ee46/jiter-0.8.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:711e408732d4e9a0208008e5892c2966b485c783cd2d9a681f3eb147cf36c7ef", size = 344764 },
+ { url = "https://files.pythonhosted.org/packages/b3/e8/0cae550d72b48829ba653eb348cdc25f3f06f8a62363723702ec18e7be9c/jiter-0.8.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:653cf462db4e8c41995e33d865965e79641ef45369d8a11f54cd30888b7e6ff1", size = 376620 },
+ { url = "https://files.pythonhosted.org/packages/b8/50/e5478ff9d82534a944c03b63bc217c5f37019d4a34d288db0f079b13c10b/jiter-0.8.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:9c63eaef32b7bebac8ebebf4dabebdbc6769a09c127294db6babee38e9f405b9", size = 510402 },
+ { url = "https://files.pythonhosted.org/packages/8e/1e/3de48bbebbc8f7025bd454cedc8c62378c0e32dd483dece5f4a814a5cb55/jiter-0.8.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:eb21aaa9a200d0a80dacc7a81038d2e476ffe473ffdd9c91eb745d623561de05", size = 503018 },
+ { url = "https://files.pythonhosted.org/packages/d5/cd/d5a5501d72a11fe3e5fd65c78c884e5164eefe80077680533919be22d3a3/jiter-0.8.2-cp313-cp313-win32.whl", hash = "sha256:789361ed945d8d42850f919342a8665d2dc79e7e44ca1c97cc786966a21f627a", size = 203190 },
+ { url = "https://files.pythonhosted.org/packages/51/bf/e5ca301245ba951447e3ad677a02a64a8845b185de2603dabd83e1e4b9c6/jiter-0.8.2-cp313-cp313-win_amd64.whl", hash = "sha256:ab7f43235d71e03b941c1630f4b6e3055d46b6cb8728a17663eaac9d8e83a865", size = 203551 },
+ { url = "https://files.pythonhosted.org/packages/2f/3c/71a491952c37b87d127790dd7a0b1ebea0514c6b6ad30085b16bbe00aee6/jiter-0.8.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:b426f72cd77da3fec300ed3bc990895e2dd6b49e3bfe6c438592a3ba660e41ca", size = 308347 },
+ { url = "https://files.pythonhosted.org/packages/a0/4c/c02408042e6a7605ec063daed138e07b982fdb98467deaaf1c90950cf2c6/jiter-0.8.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2dd880785088ff2ad21ffee205e58a8c1ddabc63612444ae41e5e4b321b39c0", size = 342875 },
+ { url = "https://files.pythonhosted.org/packages/91/61/c80ef80ed8a0a21158e289ef70dac01e351d929a1c30cb0f49be60772547/jiter-0.8.2-cp313-cp313t-win_amd64.whl", hash = "sha256:3ac9f578c46f22405ff7f8b1f5848fb753cc4b8377fbec8470a7dc3997ca7566", size = 202374 },
]
[[package]]
@@ -2189,18 +2195,6 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739 },
]
-[[package]]
-name = "marshmallow"
-version = "3.23.1"
-source = { registry = "https://pypi.org/simple" }
-dependencies = [
- { name = "packaging", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
-]
-sdist = { url = "https://files.pythonhosted.org/packages/6d/30/14d8609f65c8aeddddd3181c06d2c9582da6278f063b27c910bbf9903441/marshmallow-3.23.1.tar.gz", hash = "sha256:3a8dfda6edd8dcdbf216c0ede1d1e78d230a6dc9c5a088f58c4083b974a0d468", size = 177488 }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/ac/a7/a78ff54e67ef92a3d12126b98eb98ab8abab3de4a8c46d240c87e514d6bb/marshmallow-3.23.1-py3-none-any.whl", hash = "sha256:fece2eb2c941180ea1b7fcbd4a83c51bfdd50093fdd3ad2585ee5e1df2508491", size = 49488 },
-]
-
[[package]]
name = "matplotlib-inline"
version = "0.1.7"
@@ -2248,7 +2242,7 @@ wheels = [
[[package]]
name = "mistralai"
-version = "1.2.3"
+version = "1.2.5"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "eval-type-backport", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
@@ -2258,9 +2252,9 @@ dependencies = [
{ name = "python-dateutil", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "typing-inspect", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/99/60/098c39cdbd994a76b8d36966bc3719b83f7d75b9459fd532b1d5944cb8d4/mistralai-1.2.3.tar.gz", hash = "sha256:096b1406f62d8262d06d3f2f826714b2da87540c9e8d829864702918149c3615", size = 129710 }
+sdist = { url = "https://files.pythonhosted.org/packages/55/34/95efe73fd3cd0d5f3f0198b2bfc570dfe485aa5045100aa97fa176dcb653/mistralai-1.2.5.tar.gz", hash = "sha256:05d4130f79704e3b19c0b6320944a348547879fce6894feeb72d9e9d0ee65151", size = 132348 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/8c/d7/629cdb94c53e37ac2c4d5955ca1555ea675af339baca8aff18e54a7998ec/mistralai-1.2.3-py3-none-any.whl", hash = "sha256:23902852829d1961f73cf1ecd387e8940f909f5b507c5f7fd32c7dae1a033119", size = 256913 },
+ { url = "https://files.pythonhosted.org/packages/85/08/279a3afe0b319c283ae6d1ee8d42c606855093579e93e51cce2f6ced91a7/mistralai-1.2.5-py3-none-any.whl", hash = "sha256:5f0ef2680ead0329569111face1bf2ff7c67c454d43aa0e21324a8faf6c3ab22", size = 260045 },
]
[[package]]
@@ -2550,7 +2544,7 @@ wheels = [
[[package]]
name = "nbclient"
-version = "0.10.0"
+version = "0.10.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "jupyter-client", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
@@ -2558,9 +2552,9 @@ dependencies = [
{ name = "nbformat", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "traitlets", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/e2/d2/39bc36604f24bccd44d374ac34769bc58c53a1da5acd1e83f0165aa4940e/nbclient-0.10.0.tar.gz", hash = "sha256:4b3f1b7dba531e498449c4db4f53da339c91d449dc11e9af3a43b4eb5c5abb09", size = 62246 }
+sdist = { url = "https://files.pythonhosted.org/packages/06/db/25929926860ba8a3f6123d2d0a235e558e0e4be7b46e9db063a7dfefa0a2/nbclient-0.10.1.tar.gz", hash = "sha256:3e93e348ab27e712acd46fccd809139e356eb9a31aab641d1a7991a6eb4e6f68", size = 62273 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/66/e8/00517a23d3eeaed0513e718fbc94aab26eaa1758f5690fc8578839791c79/nbclient-0.10.0-py3-none-any.whl", hash = "sha256:f13e3529332a1f1f81d82a53210322476a168bb7090a0289c795fe9cc11c9d3f", size = 25318 },
+ { url = "https://files.pythonhosted.org/packages/26/1a/ed6d1299b1a00c1af4a033fdee565f533926d819e084caf0d2832f6f87c6/nbclient-0.10.1-py3-none-any.whl", hash = "sha256:949019b9240d66897e442888cfb618f69ef23dc71c01cb5fced8499c2cfc084d", size = 25344 },
]
[[package]]
@@ -2633,64 +2627,64 @@ wheels = [
[[package]]
name = "numpy"
-version = "2.1.3"
-source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/25/ca/1166b75c21abd1da445b97bf1fa2f14f423c6cfb4fc7c4ef31dccf9f6a94/numpy-2.1.3.tar.gz", hash = "sha256:aa08e04e08aaf974d4458def539dece0d28146d866a39da5639596f4921fd761", size = 20166090 }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/f1/80/d572a4737626372915bca41c3afbfec9d173561a39a0a61bacbbfd1dafd4/numpy-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c894b4305373b9c5576d7a12b473702afdf48ce5369c074ba304cc5ad8730dff", size = 21152472 },
- { url = "https://files.pythonhosted.org/packages/6f/bb/7bfba10c791ae3bb6716da77ad85a82d5fac07fc96fb0023ef0571df9d20/numpy-2.1.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b47fbb433d3260adcd51eb54f92a2ffbc90a4595f8970ee00e064c644ac788f5", size = 13747967 },
- { url = "https://files.pythonhosted.org/packages/da/d6/2df7bde35f0478455f0be5934877b3e5a505f587b00230f54a519a6b55a5/numpy-2.1.3-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:825656d0743699c529c5943554d223c021ff0494ff1442152ce887ef4f7561a1", size = 5354921 },
- { url = "https://files.pythonhosted.org/packages/d1/bb/75b945874f931494891eac6ca06a1764d0e8208791f3addadb2963b83527/numpy-2.1.3-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:6a4825252fcc430a182ac4dee5a505053d262c807f8a924603d411f6718b88fd", size = 6888603 },
- { url = "https://files.pythonhosted.org/packages/68/a7/fde73636f6498dbfa6d82fc336164635fe592f1ad0d13285fcb6267fdc1c/numpy-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e711e02f49e176a01d0349d82cb5f05ba4db7d5e7e0defd026328e5cfb3226d3", size = 13889862 },
- { url = "https://files.pythonhosted.org/packages/05/db/5d9c91b2e1e2e72be1369278f696356d44975befcae830daf2e667dcb54f/numpy-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78574ac2d1a4a02421f25da9559850d59457bac82f2b8d7a44fe83a64f770098", size = 16328151 },
- { url = "https://files.pythonhosted.org/packages/3e/6a/7eb732109b53ae64a29e25d7e68eb9d6611037f6354875497008a49e74d3/numpy-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c7662f0e3673fe4e832fe07b65c50342ea27d989f92c80355658c7f888fcc83c", size = 16704107 },
- { url = "https://files.pythonhosted.org/packages/88/cc/278113b66a1141053cbda6f80e4200c6da06b3079c2d27bda1fde41f2c1f/numpy-2.1.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:fa2d1337dc61c8dc417fbccf20f6d1e139896a30721b7f1e832b2bb6ef4eb6c4", size = 14385789 },
- { url = "https://files.pythonhosted.org/packages/f5/69/eb20f5e1bfa07449bc67574d2f0f7c1e6b335fb41672e43861a7727d85f2/numpy-2.1.3-cp310-cp310-win32.whl", hash = "sha256:72dcc4a35a8515d83e76b58fdf8113a5c969ccd505c8a946759b24e3182d1f23", size = 6536706 },
- { url = "https://files.pythonhosted.org/packages/8e/8b/1c131ab5a94c1086c289c6e1da1d843de9dbd95fe5f5ee6e61904c9518e2/numpy-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:ecc76a9ba2911d8d37ac01de72834d8849e55473457558e12995f4cd53e778e0", size = 12864165 },
- { url = "https://files.pythonhosted.org/packages/ad/81/c8167192eba5247593cd9d305ac236847c2912ff39e11402e72ae28a4985/numpy-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4d1167c53b93f1f5d8a139a742b3c6f4d429b54e74e6b57d0eff40045187b15d", size = 21156252 },
- { url = "https://files.pythonhosted.org/packages/da/74/5a60003fc3d8a718d830b08b654d0eea2d2db0806bab8f3c2aca7e18e010/numpy-2.1.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c80e4a09b3d95b4e1cac08643f1152fa71a0a821a2d4277334c88d54b2219a41", size = 13784119 },
- { url = "https://files.pythonhosted.org/packages/47/7c/864cb966b96fce5e63fcf25e1e4d957fe5725a635e5f11fe03f39dd9d6b5/numpy-2.1.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:576a1c1d25e9e02ed7fa5477f30a127fe56debd53b8d2c89d5578f9857d03ca9", size = 5352978 },
- { url = "https://files.pythonhosted.org/packages/09/ac/61d07930a4993dd9691a6432de16d93bbe6aa4b1c12a5e573d468eefc1ca/numpy-2.1.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:973faafebaae4c0aaa1a1ca1ce02434554d67e628b8d805e61f874b84e136b09", size = 6892570 },
- { url = "https://files.pythonhosted.org/packages/27/2f/21b94664f23af2bb52030653697c685022119e0dc93d6097c3cb45bce5f9/numpy-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:762479be47a4863e261a840e8e01608d124ee1361e48b96916f38b119cfda04a", size = 13896715 },
- { url = "https://files.pythonhosted.org/packages/7a/f0/80811e836484262b236c684a75dfc4ba0424bc670e765afaa911468d9f39/numpy-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc6f24b3d1ecc1eebfbf5d6051faa49af40b03be1aaa781ebdadcbc090b4539b", size = 16339644 },
- { url = "https://files.pythonhosted.org/packages/fa/81/ce213159a1ed8eb7d88a2a6ef4fbdb9e4ffd0c76b866c350eb4e3c37e640/numpy-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:17ee83a1f4fef3c94d16dc1802b998668b5419362c8a4f4e8a491de1b41cc3ee", size = 16712217 },
- { url = "https://files.pythonhosted.org/packages/7d/84/4de0b87d5a72f45556b2a8ee9fc8801e8518ec867fc68260c1f5dcb3903f/numpy-2.1.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:15cb89f39fa6d0bdfb600ea24b250e5f1a3df23f901f51c8debaa6a5d122b2f0", size = 14399053 },
- { url = "https://files.pythonhosted.org/packages/7e/1c/e5fabb9ad849f9d798b44458fd12a318d27592d4bc1448e269dec070ff04/numpy-2.1.3-cp311-cp311-win32.whl", hash = "sha256:d9beb777a78c331580705326d2367488d5bc473b49a9bc3036c154832520aca9", size = 6534741 },
- { url = "https://files.pythonhosted.org/packages/1e/48/a9a4b538e28f854bfb62e1dea3c8fea12e90216a276c7777ae5345ff29a7/numpy-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:d89dd2b6da69c4fff5e39c28a382199ddedc3a5be5390115608345dec660b9e2", size = 12869487 },
- { url = "https://files.pythonhosted.org/packages/8a/f0/385eb9970309643cbca4fc6eebc8bb16e560de129c91258dfaa18498da8b/numpy-2.1.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f55ba01150f52b1027829b50d70ef1dafd9821ea82905b63936668403c3b471e", size = 20849658 },
- { url = "https://files.pythonhosted.org/packages/54/4a/765b4607f0fecbb239638d610d04ec0a0ded9b4951c56dc68cef79026abf/numpy-2.1.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:13138eadd4f4da03074851a698ffa7e405f41a0845a6b1ad135b81596e4e9958", size = 13492258 },
- { url = "https://files.pythonhosted.org/packages/bd/a7/2332679479c70b68dccbf4a8eb9c9b5ee383164b161bee9284ac141fbd33/numpy-2.1.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:a6b46587b14b888e95e4a24d7b13ae91fa22386c199ee7b418f449032b2fa3b8", size = 5090249 },
- { url = "https://files.pythonhosted.org/packages/c1/67/4aa00316b3b981a822c7a239d3a8135be2a6945d1fd11d0efb25d361711a/numpy-2.1.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:0fa14563cc46422e99daef53d725d0c326e99e468a9320a240affffe87852564", size = 6621704 },
- { url = "https://files.pythonhosted.org/packages/5e/da/1a429ae58b3b6c364eeec93bf044c532f2ff7b48a52e41050896cf15d5b1/numpy-2.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8637dcd2caa676e475503d1f8fdb327bc495554e10838019651b76d17b98e512", size = 13606089 },
- { url = "https://files.pythonhosted.org/packages/9e/3e/3757f304c704f2f0294a6b8340fcf2be244038be07da4cccf390fa678a9f/numpy-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2312b2aa89e1f43ecea6da6ea9a810d06aae08321609d8dc0d0eda6d946a541b", size = 16043185 },
- { url = "https://files.pythonhosted.org/packages/43/97/75329c28fea3113d00c8d2daf9bc5828d58d78ed661d8e05e234f86f0f6d/numpy-2.1.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a38c19106902bb19351b83802531fea19dee18e5b37b36454f27f11ff956f7fc", size = 16410751 },
- { url = "https://files.pythonhosted.org/packages/ad/7a/442965e98b34e0ae9da319f075b387bcb9a1e0658276cc63adb8c9686f7b/numpy-2.1.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:02135ade8b8a84011cbb67dc44e07c58f28575cf9ecf8ab304e51c05528c19f0", size = 14082705 },
- { url = "https://files.pythonhosted.org/packages/ac/b6/26108cf2cfa5c7e03fb969b595c93131eab4a399762b51ce9ebec2332e80/numpy-2.1.3-cp312-cp312-win32.whl", hash = "sha256:e6988e90fcf617da2b5c78902fe8e668361b43b4fe26dbf2d7b0f8034d4cafb9", size = 6239077 },
- { url = "https://files.pythonhosted.org/packages/a6/84/fa11dad3404b7634aaab50733581ce11e5350383311ea7a7010f464c0170/numpy-2.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:0d30c543f02e84e92c4b1f415b7c6b5326cbe45ee7882b6b77db7195fb971e3a", size = 12566858 },
- { url = "https://files.pythonhosted.org/packages/4d/0b/620591441457e25f3404c8057eb924d04f161244cb8a3680d529419aa86e/numpy-2.1.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:96fe52fcdb9345b7cd82ecd34547fca4321f7656d500eca497eb7ea5a926692f", size = 20836263 },
- { url = "https://files.pythonhosted.org/packages/45/e1/210b2d8b31ce9119145433e6ea78046e30771de3fe353f313b2778142f34/numpy-2.1.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f653490b33e9c3a4c1c01d41bc2aef08f9475af51146e4a7710c450cf9761598", size = 13507771 },
- { url = "https://files.pythonhosted.org/packages/55/44/aa9ee3caee02fa5a45f2c3b95cafe59c44e4b278fbbf895a93e88b308555/numpy-2.1.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:dc258a761a16daa791081d026f0ed4399b582712e6fc887a95af09df10c5ca57", size = 5075805 },
- { url = "https://files.pythonhosted.org/packages/78/d6/61de6e7e31915ba4d87bbe1ae859e83e6582ea14c6add07c8f7eefd8488f/numpy-2.1.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:016d0f6f5e77b0f0d45d77387ffa4bb89816b57c835580c3ce8e099ef830befe", size = 6608380 },
- { url = "https://files.pythonhosted.org/packages/3e/46/48bdf9b7241e317e6cf94276fe11ba673c06d1fdf115d8b4ebf616affd1a/numpy-2.1.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c181ba05ce8299c7aa3125c27b9c2167bca4a4445b7ce73d5febc411ca692e43", size = 13602451 },
- { url = "https://files.pythonhosted.org/packages/70/50/73f9a5aa0810cdccda9c1d20be3cbe4a4d6ea6bfd6931464a44c95eef731/numpy-2.1.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5641516794ca9e5f8a4d17bb45446998c6554704d888f86df9b200e66bdcce56", size = 16039822 },
- { url = "https://files.pythonhosted.org/packages/ad/cd/098bc1d5a5bc5307cfc65ee9369d0ca658ed88fbd7307b0d49fab6ca5fa5/numpy-2.1.3-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ea4dedd6e394a9c180b33c2c872b92f7ce0f8e7ad93e9585312b0c5a04777a4a", size = 16411822 },
- { url = "https://files.pythonhosted.org/packages/83/a2/7d4467a2a6d984549053b37945620209e702cf96a8bc658bc04bba13c9e2/numpy-2.1.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b0df3635b9c8ef48bd3be5f862cf71b0a4716fa0e702155c45067c6b711ddcef", size = 14079598 },
- { url = "https://files.pythonhosted.org/packages/e9/6a/d64514dcecb2ee70bfdfad10c42b76cab657e7ee31944ff7a600f141d9e9/numpy-2.1.3-cp313-cp313-win32.whl", hash = "sha256:50ca6aba6e163363f132b5c101ba078b8cbd3fa92c7865fd7d4d62d9779ac29f", size = 6236021 },
- { url = "https://files.pythonhosted.org/packages/bb/f9/12297ed8d8301a401e7d8eb6b418d32547f1d700ed3c038d325a605421a4/numpy-2.1.3-cp313-cp313-win_amd64.whl", hash = "sha256:747641635d3d44bcb380d950679462fae44f54b131be347d5ec2bce47d3df9ed", size = 12560405 },
- { url = "https://files.pythonhosted.org/packages/a7/45/7f9244cd792e163b334e3a7f02dff1239d2890b6f37ebf9e82cbe17debc0/numpy-2.1.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:996bb9399059c5b82f76b53ff8bb686069c05acc94656bb259b1d63d04a9506f", size = 20859062 },
- { url = "https://files.pythonhosted.org/packages/b1/b4/a084218e7e92b506d634105b13e27a3a6645312b93e1c699cc9025adb0e1/numpy-2.1.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:45966d859916ad02b779706bb43b954281db43e185015df6eb3323120188f9e4", size = 13515839 },
- { url = "https://files.pythonhosted.org/packages/27/45/58ed3f88028dcf80e6ea580311dc3edefdd94248f5770deb980500ef85dd/numpy-2.1.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:baed7e8d7481bfe0874b566850cb0b85243e982388b7b23348c6db2ee2b2ae8e", size = 5116031 },
- { url = "https://files.pythonhosted.org/packages/37/a8/eb689432eb977d83229094b58b0f53249d2209742f7de529c49d61a124a0/numpy-2.1.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:a9f7f672a3388133335589cfca93ed468509cb7b93ba3105fce780d04a6576a0", size = 6629977 },
- { url = "https://files.pythonhosted.org/packages/42/a3/5355ad51ac73c23334c7caaed01adadfda49544f646fcbfbb4331deb267b/numpy-2.1.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7aac50327da5d208db2eec22eb11e491e3fe13d22653dce51b0f4109101b408", size = 13575951 },
- { url = "https://files.pythonhosted.org/packages/c4/70/ea9646d203104e647988cb7d7279f135257a6b7e3354ea6c56f8bafdb095/numpy-2.1.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4394bc0dbd074b7f9b52024832d16e019decebf86caf909d94f6b3f77a8ee3b6", size = 16022655 },
- { url = "https://files.pythonhosted.org/packages/14/ce/7fc0612903e91ff9d0b3f2eda4e18ef9904814afcae5b0f08edb7f637883/numpy-2.1.3-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:50d18c4358a0a8a53f12a8ba9d772ab2d460321e6a93d6064fc22443d189853f", size = 16399902 },
- { url = "https://files.pythonhosted.org/packages/ef/62/1d3204313357591c913c32132a28f09a26357e33ea3c4e2fe81269e0dca1/numpy-2.1.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:14e253bd43fc6b37af4921b10f6add6925878a42a0c5fe83daee390bca80bc17", size = 14067180 },
- { url = "https://files.pythonhosted.org/packages/24/d7/78a40ed1d80e23a774cb8a34ae8a9493ba1b4271dde96e56ccdbab1620ef/numpy-2.1.3-cp313-cp313t-win32.whl", hash = "sha256:08788d27a5fd867a663f6fc753fd7c3ad7e92747efc73c53bca2f19f8bc06f48", size = 6291907 },
- { url = "https://files.pythonhosted.org/packages/86/09/a5ab407bd7f5f5599e6a9261f964ace03a73e7c6928de906981c31c38082/numpy-2.1.3-cp313-cp313t-win_amd64.whl", hash = "sha256:2564fbdf2b99b3f815f2107c1bbc93e2de8ee655a69c261363a1172a79a257d4", size = 12644098 },
- { url = "https://files.pythonhosted.org/packages/00/e7/8d8bb791b62586cc432ecbb70632b4f23b7b7c88df41878de7528264f6d7/numpy-2.1.3-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:4f2015dfe437dfebbfce7c85c7b53d81ba49e71ba7eadbf1df40c915af75979f", size = 20983893 },
- { url = "https://files.pythonhosted.org/packages/5e/f3/cb8118a044b5007586245a650360c9f5915b2f4232dd7658bb7a63dd1d02/numpy-2.1.3-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:3522b0dfe983a575e6a9ab3a4a4dfe156c3e428468ff08ce582b9bb6bd1d71d4", size = 6752501 },
- { url = "https://files.pythonhosted.org/packages/53/f5/365b46439b518d2ec6ebb880cc0edf90f225145dfd4db7958334f7164530/numpy-2.1.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c006b607a865b07cd981ccb218a04fc86b600411d83d6fc261357f1c0966755d", size = 16142601 },
- { url = "https://files.pythonhosted.org/packages/03/c2/d1fee6ba999aa7cd41ca6856937f2baaf604c3eec1565eae63451ec31e5e/numpy-2.1.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:e14e26956e6f1696070788252dcdff11b4aca4c3e8bd166e0df1bb8f315a67cb", size = 12771397 },
+version = "2.2.0"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/47/1b/1d565e0f6e156e1522ab564176b8b29d71e13d8caf003a08768df3d5cec5/numpy-2.2.0.tar.gz", hash = "sha256:140dd80ff8981a583a60980be1a655068f8adebf7a45a06a6858c873fcdcd4a0", size = 20225497 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/c7/81/3882353e097204fe4d7a5fe026b694b0104b78f930c969faadeed1538e00/numpy-2.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1e25507d85da11ff5066269d0bd25d06e0a0f2e908415534f3e603d2a78e4ffa", size = 21212476 },
+ { url = "https://files.pythonhosted.org/packages/2c/64/5577dc71240272749e07fcacb47c0f29e31ba4fbd1613fefbd1aa88efc29/numpy-2.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a62eb442011776e4036af5c8b1a00b706c5bc02dc15eb5344b0c750428c94219", size = 14351441 },
+ { url = "https://files.pythonhosted.org/packages/c9/43/850c040481c19c1c2289203a606df1a202eeb3aa81440624bac891024f83/numpy-2.2.0-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:b606b1aaf802e6468c2608c65ff7ece53eae1a6874b3765f69b8ceb20c5fa78e", size = 5390304 },
+ { url = "https://files.pythonhosted.org/packages/73/96/a4c8a86300dbafc7e4f44d8986f8b64950b7f4640a2dc5c91e036afe28c6/numpy-2.2.0-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:36b2b43146f646642b425dd2027730f99bac962618ec2052932157e213a040e9", size = 6925476 },
+ { url = "https://files.pythonhosted.org/packages/0c/0a/22129c3107c4fb237f97876df4399a5c3a83f3d95f86e0353ae6fbbd202f/numpy-2.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7fe8f3583e0607ad4e43a954e35c1748b553bfe9fdac8635c02058023277d1b3", size = 14329997 },
+ { url = "https://files.pythonhosted.org/packages/4c/49/c2adeccc8a47bcd9335ec000dfcb4de34a7c34aeaa23af57cd504017e8c3/numpy-2.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:122fd2fcfafdefc889c64ad99c228d5a1f9692c3a83f56c292618a59aa60ae83", size = 16378908 },
+ { url = "https://files.pythonhosted.org/packages/8d/85/b65f4596748cc5468c0a978a16b3be45f6bcec78339b0fe7bce71d121d89/numpy-2.2.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3f2f5cddeaa4424a0a118924b988746db6ffa8565e5829b1841a8a3bd73eb59a", size = 15540949 },
+ { url = "https://files.pythonhosted.org/packages/ff/b3/3b18321c94a6a6a1d972baf1b39a6de50e65c991002c014ffbcce7e09be8/numpy-2.2.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7fe4bb0695fe986a9e4deec3b6857003b4cfe5c5e4aac0b95f6a658c14635e31", size = 18167677 },
+ { url = "https://files.pythonhosted.org/packages/41/f0/fa2a76e893a05764e4474f6011575c4e4ccf32af9c95bfcc8ef4b8a99f69/numpy-2.2.0-cp310-cp310-win32.whl", hash = "sha256:b30042fe92dbd79f1ba7f6898fada10bdaad1847c44f2dff9a16147e00a93661", size = 6570288 },
+ { url = "https://files.pythonhosted.org/packages/97/4e/0b7debcd013214db224997b0d3e39bb7b3656d37d06dfc31bb57d42d143b/numpy-2.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:54dc1d6d66f8d37843ed281773c7174f03bf7ad826523f73435deb88ba60d2d4", size = 12912730 },
+ { url = "https://files.pythonhosted.org/packages/80/1b/736023977a96e787c4e7653a1ac2d31d4f6ab6b4048f83c8359f7c0af2e3/numpy-2.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9874bc2ff574c40ab7a5cbb7464bf9b045d617e36754a7bc93f933d52bd9ffc6", size = 21216607 },
+ { url = "https://files.pythonhosted.org/packages/85/4f/5f0be4c5c93525e663573bab9e29bd88a71f85de3a0d01413ee05bce0c2f/numpy-2.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0da8495970f6b101ddd0c38ace92edea30e7e12b9a926b57f5fabb1ecc25bb90", size = 14387756 },
+ { url = "https://files.pythonhosted.org/packages/36/78/c38af7833c4f29999cdacdf12452b43b660cd25a1990ea9a7edf1fb01f17/numpy-2.2.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:0557eebc699c1c34cccdd8c3778c9294e8196df27d713706895edc6f57d29608", size = 5388483 },
+ { url = "https://files.pythonhosted.org/packages/e9/b5/306ac6ee3f8f0c51abd3664ee8a9b8e264cbf179a860674827151ecc0a9c/numpy-2.2.0-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:3579eaeb5e07f3ded59298ce22b65f877a86ba8e9fe701f5576c99bb17c283da", size = 6929721 },
+ { url = "https://files.pythonhosted.org/packages/ea/15/e33a7d86d8ce91de82c34ce94a87f2b8df891e603675e83ec7039325ff10/numpy-2.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40deb10198bbaa531509aad0cd2f9fadb26c8b94070831e2208e7df543562b74", size = 14334667 },
+ { url = "https://files.pythonhosted.org/packages/52/33/10825f580f42a353f744abc450dcd2a4b1e6f1931abb0ccbd1d63bd3993c/numpy-2.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c2aed8fcf8abc3020d6a9ccb31dbc9e7d7819c56a348cc88fd44be269b37427e", size = 16390204 },
+ { url = "https://files.pythonhosted.org/packages/b4/24/36cce77559572bdc6c8bcdd2f3e0db03c7079d14b9a1cd342476d7f451e8/numpy-2.2.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a222d764352c773aa5ebde02dd84dba3279c81c6db2e482d62a3fa54e5ece69b", size = 15556123 },
+ { url = "https://files.pythonhosted.org/packages/05/51/2d706d14adee8f5c70c5de3831673d4d57051fc9ac6f3f6bff8811d2f9bd/numpy-2.2.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4e58666988605e251d42c2818c7d3d8991555381be26399303053b58a5bbf30d", size = 18179898 },
+ { url = "https://files.pythonhosted.org/packages/8a/e7/ea8b7652564113f218e75b296e3545a256d88b233021f792fd08591e8f33/numpy-2.2.0-cp311-cp311-win32.whl", hash = "sha256:4723a50e1523e1de4fccd1b9a6dcea750c2102461e9a02b2ac55ffeae09a4410", size = 6568146 },
+ { url = "https://files.pythonhosted.org/packages/d0/06/3d1ff6ed377cb0340baf90487a35f15f9dc1db8e0a07de2bf2c54a8e490f/numpy-2.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:16757cf28621e43e252c560d25b15f18a2f11da94fea344bf26c599b9cf54b73", size = 12916677 },
+ { url = "https://files.pythonhosted.org/packages/7f/bc/a20dc4e1d051149052762e7647455311865d11c603170c476d1e910a353e/numpy-2.2.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cff210198bb4cae3f3c100444c5eaa573a823f05c253e7188e1362a5555235b3", size = 20909153 },
+ { url = "https://files.pythonhosted.org/packages/60/3d/ac4fb63f36db94f4c7db05b45e3ecb3f88f778ca71850664460c78cfde41/numpy-2.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:58b92a5828bd4d9aa0952492b7de803135038de47343b2aa3cc23f3b71a3dc4e", size = 14095021 },
+ { url = "https://files.pythonhosted.org/packages/41/6d/a654d519d24e4fcc7a83d4a51209cda086f26cf30722b3d8ffc1aa9b775e/numpy-2.2.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:ebe5e59545401fbb1b24da76f006ab19734ae71e703cdb4a8b347e84a0cece67", size = 5125491 },
+ { url = "https://files.pythonhosted.org/packages/e6/22/fab7e1510a62e5092f4e6507a279020052b89f11d9cfe52af7f52c243b04/numpy-2.2.0-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:e2b8cd48a9942ed3f85b95ca4105c45758438c7ed28fff1e4ce3e57c3b589d8e", size = 6658534 },
+ { url = "https://files.pythonhosted.org/packages/fc/29/a3d938ddc5a534cd53df7ab79d20a68db8c67578de1df0ae0118230f5f54/numpy-2.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:57fcc997ffc0bef234b8875a54d4058afa92b0b0c4223fc1f62f24b3b5e86038", size = 14046306 },
+ { url = "https://files.pythonhosted.org/packages/90/24/d0bbb56abdd8934f30384632e3c2ca1ebfeb5d17e150c6e366ba291de36b/numpy-2.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85ad7d11b309bd132d74397fcf2920933c9d1dc865487128f5c03d580f2c3d03", size = 16095819 },
+ { url = "https://files.pythonhosted.org/packages/99/9c/58a673faa9e8a0e77248e782f7a17410cf7259b326265646fd50ed49c4e1/numpy-2.2.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:cb24cca1968b21355cc6f3da1a20cd1cebd8a023e3c5b09b432444617949085a", size = 15243215 },
+ { url = "https://files.pythonhosted.org/packages/9c/61/f311693f78cbf635cfb69ce9e1e857ff83937a27d93c96ac5932fd33e330/numpy-2.2.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0798b138c291d792f8ea40fe3768610f3c7dd2574389e37c3f26573757c8f7ef", size = 17860175 },
+ { url = "https://files.pythonhosted.org/packages/11/3e/491c34262cb1fc9dd13a00beb80d755ee0517b17db20e54cac7aa524533e/numpy-2.2.0-cp312-cp312-win32.whl", hash = "sha256:afe8fb968743d40435c3827632fd36c5fbde633b0423da7692e426529b1759b1", size = 6273281 },
+ { url = "https://files.pythonhosted.org/packages/89/ea/00537f599eb230771157bc509f6ea5b2dddf05d4b09f9d2f1d7096a18781/numpy-2.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:3a4199f519e57d517ebd48cb76b36c82da0360781c6a0353e64c0cac30ecaad3", size = 12613227 },
+ { url = "https://files.pythonhosted.org/packages/bd/4c/0d1eef206545c994289e7a9de21b642880a11e0ed47a2b0c407c688c4f69/numpy-2.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f8c8b141ef9699ae777c6278b52c706b653bf15d135d302754f6b2e90eb30367", size = 20895707 },
+ { url = "https://files.pythonhosted.org/packages/16/cb/88f6c1e6df83002c421d5f854ccf134aa088aa997af786a5dac3f32ec99b/numpy-2.2.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0f0986e917aca18f7a567b812ef7ca9391288e2acb7a4308aa9d265bd724bdae", size = 14110592 },
+ { url = "https://files.pythonhosted.org/packages/b4/54/817e6894168a43f33dca74199ba0dd0f1acd99aa6323ed6d323d63d640a2/numpy-2.2.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:1c92113619f7b272838b8d6702a7f8ebe5edea0df48166c47929611d0b4dea69", size = 5110858 },
+ { url = "https://files.pythonhosted.org/packages/c7/99/00d8a1a8eb70425bba7880257ed73fed08d3e8d05da4202fb6b9a81d5ee4/numpy-2.2.0-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:5a145e956b374e72ad1dff82779177d4a3c62bc8248f41b80cb5122e68f22d13", size = 6645143 },
+ { url = "https://files.pythonhosted.org/packages/34/86/5b9c2b7c56e7a9d9297a0a4be0b8433f498eba52a8f5892d9132b0f64627/numpy-2.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18142b497d70a34b01642b9feabb70156311b326fdddd875a9981f34a369b671", size = 14042812 },
+ { url = "https://files.pythonhosted.org/packages/df/54/13535f74391dbe5f479ceed96f1403267be302c840040700d4fd66688089/numpy-2.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a7d41d1612c1a82b64697e894b75db6758d4f21c3ec069d841e60ebe54b5b571", size = 16093419 },
+ { url = "https://files.pythonhosted.org/packages/dd/37/dfb2056842ac61315f225aa56f455da369f5223e4c5a38b91d20da1b628b/numpy-2.2.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a98f6f20465e7618c83252c02041517bd2f7ea29be5378f09667a8f654a5918d", size = 15238969 },
+ { url = "https://files.pythonhosted.org/packages/5a/3d/d20d24ee313992f0b7e7b9d9eef642d9b545d39d5b91c4a2cc8c98776328/numpy-2.2.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e09d40edfdb4e260cb1567d8ae770ccf3b8b7e9f0d9b5c2a9992696b30ce2742", size = 17855705 },
+ { url = "https://files.pythonhosted.org/packages/5b/40/944c9ee264f875a2db6f79380944fd2b5bb9d712bb4a134d11f45ad5b693/numpy-2.2.0-cp313-cp313-win32.whl", hash = "sha256:3905a5fffcc23e597ee4d9fb3fcd209bd658c352657548db7316e810ca80458e", size = 6270078 },
+ { url = "https://files.pythonhosted.org/packages/30/04/e1ee6f8b22034302d4c5c24e15782bdedf76d90b90f3874ed0b48525def0/numpy-2.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:a184288538e6ad699cbe6b24859206e38ce5fba28f3bcfa51c90d0502c1582b2", size = 12605791 },
+ { url = "https://files.pythonhosted.org/packages/ef/fb/51d458625cd6134d60ac15180ae50995d7d21b0f2f92a6286ae7b0792d19/numpy-2.2.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:7832f9e8eb00be32f15fdfb9a981d6955ea9adc8574c521d48710171b6c55e95", size = 20920160 },
+ { url = "https://files.pythonhosted.org/packages/b4/34/162ae0c5d2536ea4be98c813b5161c980f0443cd5765fde16ddfe3450140/numpy-2.2.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f0dd071b95bbca244f4cb7f70b77d2ff3aaaba7fa16dc41f58d14854a6204e6c", size = 14119064 },
+ { url = "https://files.pythonhosted.org/packages/17/6c/4195dd0e1c41c55f466d516e17e9e28510f32af76d23061ea3da67438e3c/numpy-2.2.0-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:b0b227dcff8cdc3efbce66d4e50891f04d0a387cce282fe1e66199146a6a8fca", size = 5152778 },
+ { url = "https://files.pythonhosted.org/packages/2f/47/ea804ae525832c8d05ed85b560dfd242d34e4bb0962bc269ccaa720fb934/numpy-2.2.0-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:6ab153263a7c5ccaf6dfe7e53447b74f77789f28ecb278c3b5d49db7ece10d6d", size = 6667605 },
+ { url = "https://files.pythonhosted.org/packages/76/99/34d20e50b3d894bb16b5374bfbee399ab8ff3a33bf1e1f0b8acfe7bbd70d/numpy-2.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e500aba968a48e9019e42c0c199b7ec0696a97fa69037bea163b55398e390529", size = 14013275 },
+ { url = "https://files.pythonhosted.org/packages/69/8f/a1df7bd02d434ab82539517d1b98028985700cfc4300bc5496fb140ca648/numpy-2.2.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:440cfb3db4c5029775803794f8638fbdbf71ec702caf32735f53b008e1eaece3", size = 16074900 },
+ { url = "https://files.pythonhosted.org/packages/04/94/b419e7a76bf21a00fcb03c613583f10e389fdc8dfe420412ff5710c8ad3d/numpy-2.2.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a55dc7a7f0b6198b07ec0cd445fbb98b05234e8b00c5ac4874a63372ba98d4ab", size = 15219122 },
+ { url = "https://files.pythonhosted.org/packages/65/d9/dddf398b2b6c5d750892a207a469c2854a8db0f033edaf72103af8cf05aa/numpy-2.2.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4bddbaa30d78c86329b26bd6aaaea06b1e47444da99eddac7bf1e2fab717bd72", size = 17851668 },
+ { url = "https://files.pythonhosted.org/packages/d4/dc/09a4e5819a9782a213c0eb4eecacdc1cd75ad8dac99279b04cfccb7eeb0a/numpy-2.2.0-cp313-cp313t-win32.whl", hash = "sha256:30bf971c12e4365153afb31fc73f441d4da157153f3400b82db32d04de1e4066", size = 6325288 },
+ { url = "https://files.pythonhosted.org/packages/ce/e1/e0d06ec34036c92b43aef206efe99a5f5f04e12c776eab82a36e00c40afc/numpy-2.2.0-cp313-cp313t-win_amd64.whl", hash = "sha256:d35717333b39d1b6bb8433fa758a55f1081543de527171543a2b710551d40881", size = 12692303 },
+ { url = "https://files.pythonhosted.org/packages/f3/18/6d4e1274f221073058b621f4df8050958b7564b24b4fa25be9f1b7639274/numpy-2.2.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e12c6c1ce84628c52d6367863773f7c8c8241be554e8b79686e91a43f1733773", size = 21043901 },
+ { url = "https://files.pythonhosted.org/packages/19/3e/2b20599e7ead7ae1b89a77bb34f88c5ec12e43fbb320576ed646388d2cb7/numpy-2.2.0-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:b6207dc8fb3c8cb5668e885cef9ec7f70189bec4e276f0ff70d5aa078d32c88e", size = 6789122 },
+ { url = "https://files.pythonhosted.org/packages/c9/5a/378954132c192fafa6c3d5c160092a427c7562e5bda0cc6ad9cc37008a7a/numpy-2.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a50aeff71d0f97b6450d33940c7181b08be1441c6c193e678211bff11aa725e7", size = 16194018 },
+ { url = "https://files.pythonhosted.org/packages/67/17/209bda34fc83f3436834392f44643e66dcf3c77465f232102e7f1c7d8eae/numpy-2.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:df12a1f99b99f569a7c2ae59aa2d31724e8d835fc7f33e14f4792e3071d11221", size = 12819486 },
]
[[package]]
@@ -2824,15 +2818,15 @@ wheels = [
[[package]]
name = "ollama"
-version = "0.4.2"
+version = "0.4.4"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "httpx", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "pydantic", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/92/cf/d3035090602cf325d200e85df355253b6210ae81e6c6e21b57ece76c2b16/ollama-0.4.2.tar.gz", hash = "sha256:5dffc826737a1d121c9ae371439cace20ab02ec4b0840fd55c56efa9a3fb3646", size = 13098 }
+sdist = { url = "https://files.pythonhosted.org/packages/d8/55/af1d77457cbd4b0de93a6a0c4367de327c057ecfdd4efd19a428516b56d4/ollama-0.4.4.tar.gz", hash = "sha256:e1db064273c739babc2dde9ea84029c4a43415354741b6c50939ddd3dd0f7ffb", size = 13065 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/da/8e/b651790e301c555fe76869308f9c8af1014146ce4187291cf13eb8109096/ollama-0.4.2-py3-none-any.whl", hash = "sha256:3059fe1fe34e24c782e9e8eebf69bcd2d7037007cb4b3cfda4b32bfee36ae2ef", size = 13138 },
+ { url = "https://files.pythonhosted.org/packages/d3/01/815774a30d0047d464add27e2824a5b1d02ea4ad021c83590cd753e5f511/ollama-0.4.4-py3-none-any.whl", hash = "sha256:0f466e845e2205a1cbf5a2fef4640027b90beaa3b06c574426d8b6b17fd6e139", size = 13155 },
]
[[package]]
@@ -2873,26 +2867,26 @@ wheels = [
[[package]]
name = "onnxruntime-genai"
-version = "0.5.1"
+version = "0.5.2"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "numpy", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "onnxruntime", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
]
wheels = [
- { url = "https://files.pythonhosted.org/packages/be/7d/ff40bbae602bc667fe60ad739dca0a1759d14323b6ff285b6e10a0429d41/onnxruntime_genai-0.5.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9dbe45488608a81adf5f01d7ab1384c75833784167787d9aa8992290465c878b", size = 1380415 },
- { url = "https://files.pythonhosted.org/packages/4a/a5/47dfb20e54982c16577b282f777e48e510b4da5738e13b38d9238e22f34c/onnxruntime_genai-0.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:92f753787b3c8e98e2039d7cc233aeebbdd2dbfaa6b5fe1dc4bfb2e984ea0430", size = 776281 },
- { url = "https://files.pythonhosted.org/packages/1e/6a/ac5391cecf7729247391f2e76cbb095733493e4fb8667e1cabd48f2a87fc/onnxruntime_genai-0.5.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4b399f4122371051a5ed6dea529e4ecf5697e27fe49bb0cc0714c40f81581af7", size = 1380528 },
- { url = "https://files.pythonhosted.org/packages/d9/d5/d361760378403f5b71a9e487a20ef550dbe7874d7a91472ed9e82c3a2c41/onnxruntime_genai-0.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:a4d6e349f5fc89aa0524b0cd722fe381dafe2e8e6f3128540cf6ce71922a73ef", size = 776315 },
- { url = "https://files.pythonhosted.org/packages/b4/11/2ba0398223955dac82d84417b492a9ae0be23e05569d444c6b7a07c97c00/onnxruntime_genai-0.5.1-cp311-cp311-win_arm64.whl", hash = "sha256:e8d0e5ff3d07bdce91eba57ff38baa08c3ad53045f5191c82c88eae5b4119b41", size = 751537 },
- { url = "https://files.pythonhosted.org/packages/dd/3a/5cc18cfc54bd074e4f15a28d8c0da8595f18f1149b27b295b3738ff7b9e4/onnxruntime_genai-0.5.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:30487396cf5d2c806a9993e2096c6eaab6bc9d55869af48a11e8c783fac65b41", size = 1380996 },
- { url = "https://files.pythonhosted.org/packages/a3/11/84a65930fc9e3c38751bb402abc47b473ab55dc0352610b362ccc073fb1c/onnxruntime_genai-0.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:be10c977e28355f316439416bd86ea007f51c728fa9653afff2758f41c9abc8c", size = 776969 },
- { url = "https://files.pythonhosted.org/packages/95/2e/ef708e666f5c636d0100e120a6d0a6e5faec1ff2872ead2c7a4be8db102f/onnxruntime_genai-0.5.1-cp312-cp312-win_arm64.whl", hash = "sha256:8b77790d105b0f80b0548f5125600f6e22e711f7a9e0054ed96f43ff8674d1ca", size = 751229 },
+ { url = "https://files.pythonhosted.org/packages/12/5b/6f08f9435f0c3977046cb4292ab1e836c22cd7d56fc87ace4d2a90dfb828/onnxruntime_genai-0.5.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bd7954f9dc829e69dabd7f676443529ac18171ec8077438c16364d381733070e", size = 1380370 },
+ { url = "https://files.pythonhosted.org/packages/57/d6/91e486424f924c2a99e8f1bd201180979101ecc09bee1ca7f53dae1c8a38/onnxruntime_genai-0.5.2-cp310-cp310-win_amd64.whl", hash = "sha256:4d2968df6d8064664a5f095006c70520f4ca689204b695e88951f088477bc1e0", size = 776263 },
+ { url = "https://files.pythonhosted.org/packages/6a/17/a29c0cf89d90374234b8e510fcb970f2e043b42689b5ea23cbdab5a414b6/onnxruntime_genai-0.5.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:88edb36c9e2d670316f1e6e4ce27a86f212648a92053a94a31f88b1f4d6c0935", size = 1380461 },
+ { url = "https://files.pythonhosted.org/packages/59/b1/acb1daf1a08c8098c828e7ea9e187b9728a8fc151a4df4911f988c08a874/onnxruntime_genai-0.5.2-cp311-cp311-win_amd64.whl", hash = "sha256:09b697f955616156948f21366d13d02884a15521926f68a259722d9fa4437db4", size = 776308 },
+ { url = "https://files.pythonhosted.org/packages/22/57/d249827c3e37abe528674bfa97de4c61b18afb452d2afced690a745e0866/onnxruntime_genai-0.5.2-cp311-cp311-win_arm64.whl", hash = "sha256:893be15d2113438e60b8a1c0095892e0fd4f2b01dd470d6197337db2a5778c88", size = 751552 },
+ { url = "https://files.pythonhosted.org/packages/79/3d/43211c8a66d7ce54dea137ad7bec30767e3f2dc5e1e22befdcca290ebbe0/onnxruntime_genai-0.5.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bb5b9650512e21a71d965e582d616b33df07978b0c3ecbd5bef0912a7b5f7832", size = 1380898 },
+ { url = "https://files.pythonhosted.org/packages/9f/7b/53b217ed0db401877fafa2f63d2ce7de754899f2bdf4cb415931e2019f18/onnxruntime_genai-0.5.2-cp312-cp312-win_amd64.whl", hash = "sha256:422e9af27f182247378e9423f5745becfaffcdf7a4f452da17fd5d9390770ca7", size = 776974 },
+ { url = "https://files.pythonhosted.org/packages/08/c1/a69aeba29f40febd8d70d45044d4eb97905beb37fc8491b1628c8714ecc1/onnxruntime_genai-0.5.2-cp312-cp312-win_arm64.whl", hash = "sha256:315b23cb04749202c9cc3eb34f281bb4943de477a5aa46c99b940603b6a5d272", size = 751246 },
]
[[package]]
name = "openai"
-version = "1.55.0"
+version = "1.57.2"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "anyio", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
@@ -2904,9 +2898,9 @@ dependencies = [
{ name = "tqdm", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "typing-extensions", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/f8/7b/b1a3b6fa17dc523c603121dd23615bcd895a9fc3ab23be92307b9347bc50/openai-1.55.0.tar.gz", hash = "sha256:6c0975ac8540fe639d12b4ff5a8e0bf1424c844c4a4251148f59f06c4b2bd5db", size = 313963 }
+sdist = { url = "https://files.pythonhosted.org/packages/a9/b6/9a404e1d1043cabbffb020f9d850a44a31f30f284444a528d9a1f0eec9df/openai-1.57.2.tar.gz", hash = "sha256:5f49fd0f38e9f2131cda7deb45dafdd1aee4f52a637e190ce0ecf40147ce8cee", size = 315752 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/81/b2/9d8939c9ef73e6a2d5cb3366ef3fabd728a8de4729210d9af785c0edc6ec/openai-1.55.0-py3-none-any.whl", hash = "sha256:446e08918f8dd70d8723274be860404c8c7cc46b91b93bbc0ef051f57eb503c1", size = 389528 },
+ { url = "https://files.pythonhosted.org/packages/37/e7/95437fb676381e927d4cb3f9f8dd90ed24cfd264f572db4d395037428594/openai-1.57.2-py3-none-any.whl", hash = "sha256:f7326283c156fdee875746e7e54d36959fb198eadc683952ee05e3302fbd638d", size = 389873 },
]
[[package]]
@@ -2959,32 +2953,32 @@ wheels = [
[[package]]
name = "opentelemetry-api"
-version = "1.28.2"
+version = "1.29.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "deprecated", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "importlib-metadata", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/51/34/e4e9245c868c6490a46ffedf6bd5b0f512bbc0a848b19e3a51f6bbad648c/opentelemetry_api-1.28.2.tar.gz", hash = "sha256:ecdc70c7139f17f9b0cf3742d57d7020e3e8315d6cffcdf1a12a905d45b19cc0", size = 62796 }
+sdist = { url = "https://files.pythonhosted.org/packages/bc/8e/b886a5e9861afa188d1fe671fb96ff9a1d90a23d57799331e137cc95d573/opentelemetry_api-1.29.0.tar.gz", hash = "sha256:d04a6cf78aad09614f52964ecb38021e248f5714dc32c2e0d8fd99517b4d69cf", size = 62900 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/4d/58/b17393cdfc149e14ee84c662abf921993dcce8058628359ef1f49e2abb97/opentelemetry_api-1.28.2-py3-none-any.whl", hash = "sha256:6fcec89e265beb258fe6b1acaaa3c8c705a934bd977b9f534a2b7c0d2d4275a6", size = 64302 },
+ { url = "https://files.pythonhosted.org/packages/43/53/5249ea860d417a26a3a6f1bdedfc0748c4f081a3adaec3d398bc0f7c6a71/opentelemetry_api-1.29.0-py3-none-any.whl", hash = "sha256:5fcd94c4141cc49c736271f3e1efb777bebe9cc535759c54c936cca4f1b312b8", size = 64304 },
]
[[package]]
name = "opentelemetry-exporter-otlp-proto-common"
-version = "1.28.2"
+version = "1.29.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "opentelemetry-proto", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/60/cd/cd990f891b64e7698b8a6b6ab90dfac7f957db5a3d06788acd52f73ad4c0/opentelemetry_exporter_otlp_proto_common-1.28.2.tar.gz", hash = "sha256:7aebaa5fc9ff6029374546df1f3a62616fda07fccd9c6a8b7892ec130dd8baca", size = 19136 }
+sdist = { url = "https://files.pythonhosted.org/packages/b1/58/f7fd7eaf592b2521999a4271ab3ce1c82fe37fe9b0dc25c348398d95d66a/opentelemetry_exporter_otlp_proto_common-1.29.0.tar.gz", hash = "sha256:e7c39b5dbd1b78fe199e40ddfe477e6983cb61aa74ba836df09c3869a3e3e163", size = 19133 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/2a/4d/769f3b1b1c6af5e603da50349ba31af757897540a75d666de22d39461055/opentelemetry_exporter_otlp_proto_common-1.28.2-py3-none-any.whl", hash = "sha256:545b1943b574f666c35b3d6cc67cb0b111060727e93a1e2866e346b33bff2a12", size = 18460 },
+ { url = "https://files.pythonhosted.org/packages/9e/75/7609bda3d72bf307839570b226180513e854c01443ebe265ed732a4980fc/opentelemetry_exporter_otlp_proto_common-1.29.0-py3-none-any.whl", hash = "sha256:a9d7376c06b4da9cf350677bcddb9618ed4b8255c3f6476975f5e38274ecd3aa", size = 18459 },
]
[[package]]
name = "opentelemetry-exporter-otlp-proto-grpc"
-version = "1.28.2"
+version = "1.29.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "deprecated", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
@@ -2995,14 +2989,14 @@ dependencies = [
{ name = "opentelemetry-proto", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "opentelemetry-sdk", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/f7/4c/b5374467e97f2b290611de746d0e6cab3a07aec865d6b99d11535cd60059/opentelemetry_exporter_otlp_proto_grpc-1.28.2.tar.gz", hash = "sha256:07c10378380bbb01a7f621a5ce833fc1fab816e971140cd3ea1cd587840bc0e6", size = 26227 }
+sdist = { url = "https://files.pythonhosted.org/packages/41/aa/b3f2190613141f35fe15145bf438334fdd1eac8aeeee4f7ecbc887999443/opentelemetry_exporter_otlp_proto_grpc-1.29.0.tar.gz", hash = "sha256:3d324d07d64574d72ed178698de3d717f62a059a93b6b7685ee3e303384e73ea", size = 26224 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/dd/7e/6af5a7de87988cfc951db86f7fd0ecaabc20bc112fd9cfe06b8a01f11400/opentelemetry_exporter_otlp_proto_grpc-1.28.2-py3-none-any.whl", hash = "sha256:6083d9300863aab35bfce7c172d5fc1007686e6f8dff366eae460cd9a21592e2", size = 18518 },
+ { url = "https://files.pythonhosted.org/packages/f2/de/4b4127a25d1594851d99032f3a9acb09cb512d11edec713410fb906607f4/opentelemetry_exporter_otlp_proto_grpc-1.29.0-py3-none-any.whl", hash = "sha256:5a2a3a741a2543ed162676cf3eefc2b4150e6f4f0a193187afb0d0e65039c69c", size = 18520 },
]
[[package]]
name = "opentelemetry-instrumentation"
-version = "0.49b2"
+version = "0.50b0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "opentelemetry-api", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
@@ -3010,14 +3004,14 @@ dependencies = [
{ name = "packaging", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "wrapt", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/6f/1f/9fa51f6f64f4d179f4e3370eb042176ff7717682428552f5e1f4c5efcc09/opentelemetry_instrumentation-0.49b2.tar.gz", hash = "sha256:8cf00cc8d9d479e4b72adb9bd267ec544308c602b7188598db5a687e77b298e2", size = 26480 }
+sdist = { url = "https://files.pythonhosted.org/packages/79/2e/2e59a7cb636dc394bd7cf1758ada5e8ed87590458ca6bb2f9c26e0243847/opentelemetry_instrumentation-0.50b0.tar.gz", hash = "sha256:7d98af72de8dec5323e5202e46122e5f908592b22c6d24733aad619f07d82979", size = 26539 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/ef/e3/ad23372525653b0221212d5e2a71bd97aae64cc35f90cbf0c70de57dfa4e/opentelemetry_instrumentation-0.49b2-py3-none-any.whl", hash = "sha256:f6d782b0ef9fef4a4c745298651c65f5c532c34cd4c40d230ab5b9f3b3b4d151", size = 30693 },
+ { url = "https://files.pythonhosted.org/packages/ff/b1/55a77152a83ec8998e520a3a575f44af1020cfe4bdc000b7538583293b85/opentelemetry_instrumentation-0.50b0-py3-none-any.whl", hash = "sha256:b8f9fc8812de36e1c6dffa5bfc6224df258841fb387b6dfe5df15099daa10630", size = 30728 },
]
[[package]]
name = "opentelemetry-instrumentation-asgi"
-version = "0.49b2"
+version = "0.50b0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "asgiref", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
@@ -3026,14 +3020,14 @@ dependencies = [
{ name = "opentelemetry-semantic-conventions", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "opentelemetry-util-http", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/84/42/079079bd7c0423bfab987a6457e34468b6ddccf501d3c91d2795c200d65d/opentelemetry_instrumentation_asgi-0.49b2.tar.gz", hash = "sha256:2af5faf062878330714efe700127b837038c4d9d3b70b451ab2424d5076d6c1c", size = 24106 }
+sdist = { url = "https://files.pythonhosted.org/packages/49/cc/a7b2fd243c6d2621803092eba62e450071b6752dfe4f64f530bbfd91a328/opentelemetry_instrumentation_asgi-0.50b0.tar.gz", hash = "sha256:3ca4cb5616ae6a3e8ce86e7d5c360a8d8cc8ed722cf3dc8a5e44300774e87d49", size = 24105 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/3f/82/06a56e786de3ea0ef4703ed313d9d8395fb4bc9ae740cc71415178ae8bff/opentelemetry_instrumentation_asgi-0.49b2-py3-none-any.whl", hash = "sha256:c8ede13ed781402458a800411cb7ec16a25386dc21de8e5b9a568b386a1dc5f4", size = 16305 },
+ { url = "https://files.pythonhosted.org/packages/d2/81/0899c6b56b1023835f266d909250d439174afa0c34ed5944c5021d3da263/opentelemetry_instrumentation_asgi-0.50b0-py3-none-any.whl", hash = "sha256:2ba1297f746e55dec5a17fe825689da0613662fb25c004c3965a6c54b1d5be22", size = 16304 },
]
[[package]]
name = "opentelemetry-instrumentation-fastapi"
-version = "0.49b2"
+version = "0.50b0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "opentelemetry-api", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
@@ -3042,102 +3036,113 @@ dependencies = [
{ name = "opentelemetry-semantic-conventions", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "opentelemetry-util-http", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/87/ed/a1275d5aac63edfad0afb012d2d5917412f09ac5f773c86b465b2b0d2549/opentelemetry_instrumentation_fastapi-0.49b2.tar.gz", hash = "sha256:3aa81ed7acf6aa5236d96e90a1218c5e84a9c0dce8fa63bf34ceee6218354b63", size = 19217 }
+sdist = { url = "https://files.pythonhosted.org/packages/8d/f8/1917b0b3e414e23c7d71c9a33f0ce020f94bc47d22a30f54ace704e07588/opentelemetry_instrumentation_fastapi-0.50b0.tar.gz", hash = "sha256:16b9181682136da210295def2bb304a32fb9bdee9a935cdc9da43567f7c1149e", size = 19214 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/d3/a9/ef2678c16caf5dc2f84628bfafdbc90139e3c78d9017afd07fbd51b1eeef/opentelemetry_instrumentation_fastapi-0.49b2-py3-none-any.whl", hash = "sha256:c66331d05bf806d7ca4f9579c1db7383aad31a9f6665dbaa2b7c9a4c1e830892", size = 12082 },
+ { url = "https://files.pythonhosted.org/packages/cb/d6/37784bb30b213e2dd6838b9f96c2940907022c1b75ef1ff18a99afe42433/opentelemetry_instrumentation_fastapi-0.50b0-py3-none-any.whl", hash = "sha256:8f03b738495e4705fbae51a2826389c7369629dace89d0f291c06ffefdff5e52", size = 12079 },
]
[[package]]
name = "opentelemetry-proto"
-version = "1.28.2"
+version = "1.29.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "protobuf", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/d0/45/96c4f34c79fd87dc8a1c0c432f23a5a202729f21e4e63c8b36fc8e57767a/opentelemetry_proto-1.28.2.tar.gz", hash = "sha256:7c0d125a6b71af88bfeeda16bfdd0ff63dc2cf0039baf6f49fa133b203e3f566", size = 34316 }
+sdist = { url = "https://files.pythonhosted.org/packages/80/52/fd3b3d79e1b00ad2dcac92db6885e49bedbf7a6828647954e4952d653132/opentelemetry_proto-1.29.0.tar.gz", hash = "sha256:3c136aa293782e9b44978c738fff72877a4b78b5d21a64e879898db7b2d93e5d", size = 34320 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/1d/12/646f48d6d698a6df0437a22b591387440dc4888c8752d1a1300f730da710/opentelemetry_proto-1.28.2-py3-none-any.whl", hash = "sha256:0837498f59db55086462915e5898d0b1a18c1392f6db4d7e937143072a72370c", size = 55818 },
+ { url = "https://files.pythonhosted.org/packages/bd/66/a500e38ee322d89fce61c74bd7769c8ef3bebc6c2f43fda5f3fc3441286d/opentelemetry_proto-1.29.0-py3-none-any.whl", hash = "sha256:495069c6f5495cbf732501cdcd3b7f60fda2b9d3d4255706ca99b7ca8dec53ff", size = 55818 },
]
[[package]]
name = "opentelemetry-sdk"
-version = "1.28.2"
+version = "1.29.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "opentelemetry-api", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "opentelemetry-semantic-conventions", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "typing-extensions", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/4b/f4/840a5af4efe48d7fb4c456ad60fd624673e871a60d6494f7ff8a934755d4/opentelemetry_sdk-1.28.2.tar.gz", hash = "sha256:5fed24c5497e10df30282456fe2910f83377797511de07d14cec0d3e0a1a3110", size = 157272 }
+sdist = { url = "https://files.pythonhosted.org/packages/0c/5a/1ed4c3cf6c09f80565fc085f7e8efa0c222712fd2a9412d07424705dcf72/opentelemetry_sdk-1.29.0.tar.gz", hash = "sha256:b0787ce6aade6ab84315302e72bd7a7f2f014b0fb1b7c3295b88afe014ed0643", size = 157229 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/da/8b/4f2b418496c08016d4384f9b1c4725a8af7faafa248d624be4bb95993ce1/opentelemetry_sdk-1.28.2-py3-none-any.whl", hash = "sha256:93336c129556f1e3ccd21442b94d3521759541521861b2214c499571b85cb71b", size = 118757 },
+ { url = "https://files.pythonhosted.org/packages/d1/1d/512b86af21795fb463726665e2f61db77d384e8779fdcf4cb0ceec47866d/opentelemetry_sdk-1.29.0-py3-none-any.whl", hash = "sha256:173be3b5d3f8f7d671f20ea37056710217959e774e2749d984355d1f9391a30a", size = 118078 },
]
[[package]]
name = "opentelemetry-semantic-conventions"
-version = "0.49b2"
+version = "0.50b0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "deprecated", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "opentelemetry-api", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/7d/0a/e3b93f94aa3223c6fd8e743502a1fefd4fb3a753d8f501ce2a418f7c0bd4/opentelemetry_semantic_conventions-0.49b2.tar.gz", hash = "sha256:44e32ce6a5bb8d7c0c617f84b9dc1c8deda1045a07dc16a688cc7cbeab679997", size = 95213 }
+sdist = { url = "https://files.pythonhosted.org/packages/e7/4e/d7c7c91ff47cd96fe4095dd7231701aec7347426fd66872ff320d6cd1fcc/opentelemetry_semantic_conventions-0.50b0.tar.gz", hash = "sha256:02dc6dbcb62f082de9b877ff19a3f1ffaa3c306300fa53bfac761c4567c83d38", size = 100459 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/b1/be/6661c8f76708bb3ba38c90be8fa8d7ffe17ccbc5cbbc229334f5535f6448/opentelemetry_semantic_conventions-0.49b2-py3-none-any.whl", hash = "sha256:51e7e1d0daa958782b6c2a8ed05e5f0e7dd0716fc327ac058777b8659649ee54", size = 159199 },
+ { url = "https://files.pythonhosted.org/packages/da/fb/dc15fad105450a015e913cfa4f5c27b6a5f1bea8fb649f8cae11e699c8af/opentelemetry_semantic_conventions-0.50b0-py3-none-any.whl", hash = "sha256:e87efba8fdb67fb38113efea6a349531e75ed7ffc01562f65b802fcecb5e115e", size = 166602 },
]
[[package]]
name = "opentelemetry-util-http"
-version = "0.49b2"
+version = "0.50b0"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/96/28/ac5b1a0fd210ecb6c86c5e04256ba09c8308eb41e116097b9e2714d4b8dd/opentelemetry_util_http-0.49b2.tar.gz", hash = "sha256:5958c7009f79146bbe98b0fdb23d9d7bf1ea9cd154a1c199029b1a89e0557199", size = 7861 }
+sdist = { url = "https://files.pythonhosted.org/packages/69/10/ce3f0d1157cedbd819194f0b27a6bbb7c19a8bceb3941e4a4775014076cf/opentelemetry_util_http-0.50b0.tar.gz", hash = "sha256:dc4606027e1bc02aabb9533cc330dd43f874fca492e4175c31d7154f341754af", size = 7859 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/19/22/9128f10d1c2868ee42df7e10937d00f154a69bee87c416ca9b20a6af6c54/opentelemetry_util_http-0.49b2-py3-none-any.whl", hash = "sha256:e325d6511c6bee7b43170eb0c93261a210ec57e20ab1d7a99838515ef6d2bf58", size = 6941 },
+ { url = "https://files.pythonhosted.org/packages/64/8a/9e1b54f50d1fddebbeac9a9b0632f8db6ece7add904fb593ee2e268ee4de/opentelemetry_util_http-0.50b0-py3-none-any.whl", hash = "sha256:21f8aedac861ffa3b850f8c0a6c373026189eb8630ac6e14a2bf8c55695cc090", size = 6942 },
]
[[package]]
name = "orjson"
-version = "3.10.11"
-source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/db/3a/10320029954badc7eaa338a15ee279043436f396e965dafc169610e4933f/orjson-3.10.11.tar.gz", hash = "sha256:e35b6d730de6384d5b2dab5fd23f0d76fae8bbc8c353c2f78210aa5fa4beb3ef", size = 5444879 }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/3e/63/f7d412e09f6e2c4e2562ddc44e86f2316a7ce9d7f353afa7cbce4f6a78d5/orjson-3.10.11-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:6dade64687f2bd7c090281652fe18f1151292d567a9302b34c2dbb92a3872f1f", size = 266434 },
- { url = "https://files.pythonhosted.org/packages/a2/6a/3dfcd3a8c0e588581c8d1f3d9002cca970432da8a8096c1a42b99914a34d/orjson-3.10.11-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82f07c550a6ccd2b9290849b22316a609023ed851a87ea888c0456485a7d196a", size = 151884 },
- { url = "https://files.pythonhosted.org/packages/41/02/8981bc5ccbc04a2bd49cd86224d5b1e2c7417fb33e83590c66c3a028ede5/orjson-3.10.11-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bd9a187742d3ead9df2e49240234d728c67c356516cf4db018833a86f20ec18c", size = 167371 },
- { url = "https://files.pythonhosted.org/packages/df/3f/772a12a417444eccc54fa597955b689848eb121d5e43dd7da9f6658c314d/orjson-3.10.11-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:77b0fed6f209d76c1c39f032a70df2d7acf24b1812ca3e6078fd04e8972685a3", size = 154367 },
- { url = "https://files.pythonhosted.org/packages/8a/63/d0d6ba28410ec603fc31726a49dc782c72c0a64f4cd0a6734a6d8bc07a4a/orjson-3.10.11-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:63fc9d5fe1d4e8868f6aae547a7b8ba0a2e592929245fff61d633f4caccdcdd6", size = 165726 },
- { url = "https://files.pythonhosted.org/packages/97/6e/d291bf382173af7788b368e4c22d02c7bdb9b7ac29b83e92930841321c16/orjson-3.10.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65cd3e3bb4fbb4eddc3c1e8dce10dc0b73e808fcb875f9fab40c81903dd9323e", size = 142522 },
- { url = "https://files.pythonhosted.org/packages/6d/3b/7364c10fcadf7c08e3658fe7103bf3b0408783f91022be4691fbe0b5ba1d/orjson-3.10.11-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:6f67c570602300c4befbda12d153113b8974a3340fdcf3d6de095ede86c06d92", size = 146931 },
- { url = "https://files.pythonhosted.org/packages/95/8c/43f454e642cc85ef845cda6efcfddc6b5fe46b897b692412022012e1272c/orjson-3.10.11-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1f39728c7f7d766f1f5a769ce4d54b5aaa4c3f92d5b84817053cc9995b977acc", size = 142900 },
- { url = "https://files.pythonhosted.org/packages/bb/29/ca24efe043501b4a4584d728fdc65af5cfc070ab9021a07fb195bce98919/orjson-3.10.11-cp310-none-win32.whl", hash = "sha256:1789d9db7968d805f3d94aae2c25d04014aae3a2fa65b1443117cd462c6da647", size = 144456 },
- { url = "https://files.pythonhosted.org/packages/b7/ec/f15dc012928459cfb96ed86178d92fddb5c01847f2c53fd8be2fa62dee6c/orjson-3.10.11-cp310-none-win_amd64.whl", hash = "sha256:5576b1e5a53a5ba8f8df81872bb0878a112b3ebb1d392155f00f54dd86c83ff6", size = 136442 },
- { url = "https://files.pythonhosted.org/packages/1e/25/c869a1fbd481dcb02c70032fd6a7243de7582bc48c7cae03d6f0985a11c0/orjson-3.10.11-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:1444f9cb7c14055d595de1036f74ecd6ce15f04a715e73f33bb6326c9cef01b6", size = 266432 },
- { url = "https://files.pythonhosted.org/packages/6a/a4/2307155ee92457d28345308f7d8c0e712348404723025613adeffcb531d0/orjson-3.10.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cdec57fe3b4bdebcc08a946db3365630332dbe575125ff3d80a3272ebd0ddafe", size = 151884 },
- { url = "https://files.pythonhosted.org/packages/aa/82/daf1b2596dd49fe44a1bd92367568faf6966dcb5d7f99fd437c3d0dc2de6/orjson-3.10.11-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4eed32f33a0ea6ef36ccc1d37f8d17f28a1d6e8eefae5928f76aff8f1df85e67", size = 167371 },
- { url = "https://files.pythonhosted.org/packages/63/a8/680578e4589be5fdcfe0186bdd7dc6fe4a39d30e293a9da833cbedd5a56e/orjson-3.10.11-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80df27dd8697242b904f4ea54820e2d98d3f51f91e97e358fc13359721233e4b", size = 154368 },
- { url = "https://files.pythonhosted.org/packages/6e/ce/9cb394b5b01ef34579eeca6d704b21f97248f607067ce95a24ba9ea2698e/orjson-3.10.11-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:705f03cee0cb797256d54de6695ef219e5bc8c8120b6654dd460848d57a9af3d", size = 165725 },
- { url = "https://files.pythonhosted.org/packages/49/24/55eeb05cfb36b9e950d05743e6f6fdb7d5f33ca951a27b06ea6d03371aed/orjson-3.10.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03246774131701de8e7059b2e382597da43144a9a7400f178b2a32feafc54bd5", size = 142522 },
- { url = "https://files.pythonhosted.org/packages/94/0c/3a6a289e56dcc9fe67dc6b6d33c91dc5491f9ec4a03745efd739d2acf0ff/orjson-3.10.11-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8b5759063a6c940a69c728ea70d7c33583991c6982915a839c8da5f957e0103a", size = 146934 },
- { url = "https://files.pythonhosted.org/packages/1d/5c/a08c0e90a91e2526029a4681ff8c6fc4495b8bab77d48801144e378c7da9/orjson-3.10.11-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:677f23e32491520eebb19c99bb34675daf5410c449c13416f7f0d93e2cf5f981", size = 142904 },
- { url = "https://files.pythonhosted.org/packages/2c/c9/710286a60b14e88288ca014d43befb08bb0a4a6a0f51b875f8c2f05e8205/orjson-3.10.11-cp311-none-win32.whl", hash = "sha256:a11225d7b30468dcb099498296ffac36b4673a8398ca30fdaec1e6c20df6aa55", size = 144459 },
- { url = "https://files.pythonhosted.org/packages/7d/68/ef7b920e0a09e02b1a30daca1b4864938463797995c2fabe457c1500220a/orjson-3.10.11-cp311-none-win_amd64.whl", hash = "sha256:df8c677df2f9f385fcc85ab859704045fa88d4668bc9991a527c86e710392bec", size = 136444 },
- { url = "https://files.pythonhosted.org/packages/78/f2/a712dbcef6d84ff53e13056e7dc69d9d4844bd1e35e51b7431679ddd154d/orjson-3.10.11-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:360a4e2c0943da7c21505e47cf6bd725588962ff1d739b99b14e2f7f3545ba51", size = 266505 },
- { url = "https://files.pythonhosted.org/packages/94/54/53970831786d71f98fdc13c0f80451324c9b5c20fbf42f42ef6147607ee7/orjson-3.10.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:496e2cb45de21c369079ef2d662670a4892c81573bcc143c4205cae98282ba97", size = 151745 },
- { url = "https://files.pythonhosted.org/packages/35/38/482667da1ca7ef95d44d4d2328257a144fd2752383e688637c53ed474d2a/orjson-3.10.11-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7dfa8db55c9792d53c5952900c6a919cfa377b4f4534c7a786484a6a4a350c19", size = 167274 },
- { url = "https://files.pythonhosted.org/packages/23/2f/5bb0a03e819781d82dadb733fde8ebbe20d1777d1a33715d45ada4d82ce8/orjson-3.10.11-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:51f3382415747e0dbda9dade6f1e1a01a9d37f630d8c9049a8ed0e385b7a90c0", size = 154605 },
- { url = "https://files.pythonhosted.org/packages/49/e9/14cc34d45c7bd51665aff9b1bb6b83475a61c52edb0d753fffe1adc97764/orjson-3.10.11-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f35a1b9f50a219f470e0e497ca30b285c9f34948d3c8160d5ad3a755d9299433", size = 165874 },
- { url = "https://files.pythonhosted.org/packages/7b/61/c2781ecf90f99623e97c67a31e8553f38a1ecebaf3189485726ac8641576/orjson-3.10.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2f3b7c5803138e67028dde33450e054c87e0703afbe730c105f1fcd873496d5", size = 142813 },
- { url = "https://files.pythonhosted.org/packages/4d/4f/18c83f78b501b6608569b1610fcb5a25c9bb9ab6a7eb4b3a55131e0fba37/orjson-3.10.11-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f91d9eb554310472bd09f5347950b24442600594c2edc1421403d7610a0998fd", size = 146762 },
- { url = "https://files.pythonhosted.org/packages/ba/19/ea80d5b575abd3f76a790409c2b7b8a60f3fc9447965c27d09613b8bddf4/orjson-3.10.11-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dfbb2d460a855c9744bbc8e36f9c3a997c4b27d842f3d5559ed54326e6911f9b", size = 143186 },
- { url = "https://files.pythonhosted.org/packages/2c/f5/d835fee01a0284d4b78effc24d16e7609daac2ff6b6851ca1bdd3b6194fc/orjson-3.10.11-cp312-none-win32.whl", hash = "sha256:d4a62c49c506d4d73f59514986cadebb7e8d186ad510c518f439176cf8d5359d", size = 144489 },
- { url = "https://files.pythonhosted.org/packages/03/60/748e0e205060dec74328dfd835e47902eb5522ae011766da76bfff64e2f4/orjson-3.10.11-cp312-none-win_amd64.whl", hash = "sha256:f1eec3421a558ff7a9b010a6c7effcfa0ade65327a71bb9b02a1c3b77a247284", size = 136614 },
- { url = "https://files.pythonhosted.org/packages/13/92/400970baf46b987c058469e9e779fb7a40d54a5754914d3634cca417e054/orjson-3.10.11-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:c46294faa4e4d0eb73ab68f1a794d2cbf7bab33b1dda2ac2959ffb7c61591899", size = 266402 },
- { url = "https://files.pythonhosted.org/packages/3c/fa/f126fc2d817552bd1f67466205abdcbff64eab16f6844fe6df2853528675/orjson-3.10.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52e5834d7d6e58a36846e059d00559cb9ed20410664f3ad156cd2cc239a11230", size = 140826 },
- { url = "https://files.pythonhosted.org/packages/ad/18/9b9664d7d4af5b4fe9fe6600b7654afc0684bba528260afdde10c4a530aa/orjson-3.10.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2fc947e5350fdce548bfc94f434e8760d5cafa97fb9c495d2fef6757aa02ec0", size = 142593 },
- { url = "https://files.pythonhosted.org/packages/20/f9/a30c68f12778d5e58e6b5cdd26f86ee2d0babce1a475073043f46fdd8402/orjson-3.10.11-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0efabbf839388a1dab5b72b5d3baedbd6039ac83f3b55736eb9934ea5494d258", size = 146777 },
- { url = "https://files.pythonhosted.org/packages/f2/97/12047b0c0e9b391d589fb76eb40538f522edc664f650f8e352fdaaf77ff5/orjson-3.10.11-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a3f29634260708c200c4fe148e42b4aae97d7b9fee417fbdd74f8cfc265f15b0", size = 142961 },
- { url = "https://files.pythonhosted.org/packages/a4/97/d904e26c1cabf2dd6ab1b0909e9b790af28a7f0fcb9d8378d7320d4869eb/orjson-3.10.11-cp313-none-win32.whl", hash = "sha256:1a1222ffcee8a09476bbdd5d4f6f33d06d0d6642df2a3d78b7a195ca880d669b", size = 144486 },
- { url = "https://files.pythonhosted.org/packages/42/62/3760bd1e6e949321d99bab238d08db2b1266564d2f708af668f57109bb36/orjson-3.10.11-cp313-none-win_amd64.whl", hash = "sha256:bc274ac261cc69260913b2d1610760e55d3c0801bb3457ba7b9004420b6b4270", size = 136361 },
+version = "3.10.12"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/e0/04/bb9f72987e7f62fb591d6c880c0caaa16238e4e530cbc3bdc84a7372d75f/orjson-3.10.12.tar.gz", hash = "sha256:0a78bbda3aea0f9f079057ee1ee8a1ecf790d4f1af88dd67493c6b8ee52506ff", size = 5438647 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/72/d2/78652b67f86d093dca984ce3fa5bf819ee1462627da83e7d0b784a9a7c45/orjson-3.10.12-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:ece01a7ec71d9940cc654c482907a6b65df27251255097629d0dea781f255c6d", size = 248688 },
+ { url = "https://files.pythonhosted.org/packages/70/cb/f8b6a52f3bc724edf8a62d8d1d8ee17cf19d6ae1cac89f077f0e7c30f396/orjson-3.10.12-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c34ec9aebc04f11f4b978dd6caf697a2df2dd9b47d35aa4cc606cabcb9df69d7", size = 136952 },
+ { url = "https://files.pythonhosted.org/packages/a6/43/c55700df9814545bc8c35d87395ec4b9ee473a3c1f5ed72f8d3ad0298ee9/orjson-3.10.12-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fd6ec8658da3480939c79b9e9e27e0db31dffcd4ba69c334e98c9976ac29140e", size = 149089 },
+ { url = "https://files.pythonhosted.org/packages/07/da/e7e7d73bd971710b736fbd8330b8830c5fa4fc0ac003b31af61f03b26dfc/orjson-3.10.12-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f17e6baf4cf01534c9de8a16c0c611f3d94925d1701bf5f4aff17003677d8ced", size = 140479 },
+ { url = "https://files.pythonhosted.org/packages/08/49/c9dfddba56ff24eecfacf2f01a76cae4d249ac2995b1359bf63a74b1b318/orjson-3.10.12-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6402ebb74a14ef96f94a868569f5dccf70d791de49feb73180eb3c6fda2ade56", size = 156564 },
+ { url = "https://files.pythonhosted.org/packages/96/df/174d2eff227dc23b4540a0c2efa6ec8fe406c442c4b7f0f556242f026d1f/orjson-3.10.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0000758ae7c7853e0a4a6063f534c61656ebff644391e1f81698c1b2d2fc8cd2", size = 131282 },
+ { url = "https://files.pythonhosted.org/packages/6a/96/8628c53a52e2a0a1ee861d809092df72aabbd312c71de9ad6d49e2c039ab/orjson-3.10.12-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:888442dcee99fd1e5bd37a4abb94930915ca6af4db50e23e746cdf4d1e63db13", size = 139764 },
+ { url = "https://files.pythonhosted.org/packages/38/17/08becb49e59e7bb7b29dc1dad19bc0c48635e627ee27e60eb5b64efcf7b1/orjson-3.10.12-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c1f7a3ce79246aa0e92f5458d86c54f257fb5dfdc14a192651ba7ec2c00f8a05", size = 131913 },
+ { url = "https://files.pythonhosted.org/packages/2a/05/f32acc2500e3fafee9445eb8b2a6ff19c4641035e6059c6c8d7bdb3abc9e/orjson-3.10.12-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:802a3935f45605c66fb4a586488a38af63cb37aaad1c1d94c982c40dcc452e85", size = 415782 },
+ { url = "https://files.pythonhosted.org/packages/06/03/6cc740d998d8bb60e75d4b7e228d18964475239ac842cc1865d49d092545/orjson-3.10.12-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:1da1ef0113a2be19bb6c557fb0ec2d79c92ebd2fed4cfb1b26bab93f021fb885", size = 142383 },
+ { url = "https://files.pythonhosted.org/packages/f8/30/39cac82547fe021615376245c558b216d3ae8c99bd6b2274f312e49f1c94/orjson-3.10.12-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7a3273e99f367f137d5b3fecb5e9f45bcdbfac2a8b2f32fbc72129bbd48789c2", size = 130661 },
+ { url = "https://files.pythonhosted.org/packages/95/29/c6837f4fc1eaa742eaf5abcd767ab6805493f44fe1f72b37c1743706c1d8/orjson-3.10.12-cp310-none-win32.whl", hash = "sha256:475661bf249fd7907d9b0a2a2421b4e684355a77ceef85b8352439a9163418c3", size = 143625 },
+ { url = "https://files.pythonhosted.org/packages/f6/62/c6b955f2144421108fa441b5471e1d5f8654a7df9840b261106e04d5d15c/orjson-3.10.12-cp310-none-win_amd64.whl", hash = "sha256:87251dc1fb2b9e5ab91ce65d8f4caf21910d99ba8fb24b49fd0c118b2362d509", size = 135075 },
+ { url = "https://files.pythonhosted.org/packages/d3/48/7c3cd094488f5a3bc58488555244609a8c4d105bc02f2b77e509debf0450/orjson-3.10.12-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:a734c62efa42e7df94926d70fe7d37621c783dea9f707a98cdea796964d4cf74", size = 248687 },
+ { url = "https://files.pythonhosted.org/packages/ff/90/e55f0e25c7fdd1f82551fe787f85df6f378170caca863c04c810cd8f2730/orjson-3.10.12-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:750f8b27259d3409eda8350c2919a58b0cfcd2054ddc1bd317a643afc646ef23", size = 136953 },
+ { url = "https://files.pythonhosted.org/packages/2a/b3/109c020cf7fee747d400de53b43b183ca9d3ebda3906ad0b858eb5479718/orjson-3.10.12-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb52c22bfffe2857e7aa13b4622afd0dd9d16ea7cc65fd2bf318d3223b1b6252", size = 149090 },
+ { url = "https://files.pythonhosted.org/packages/96/d4/35c0275dc1350707d182a1b5da16d1184b9439848060af541285407f18f9/orjson-3.10.12-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:440d9a337ac8c199ff8251e100c62e9488924c92852362cd27af0e67308c16ef", size = 140480 },
+ { url = "https://files.pythonhosted.org/packages/3b/79/f863ff460c291ad2d882cc3b580cc444bd4ec60c9df55f6901e6c9a3f519/orjson-3.10.12-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9e15c06491c69997dfa067369baab3bf094ecb74be9912bdc4339972323f252", size = 156564 },
+ { url = "https://files.pythonhosted.org/packages/98/7e/8d5835449ddd873424ee7b1c4ba73a0369c1055750990d824081652874d6/orjson-3.10.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:362d204ad4b0b8724cf370d0cd917bb2dc913c394030da748a3bb632445ce7c4", size = 131279 },
+ { url = "https://files.pythonhosted.org/packages/46/f5/d34595b6d7f4f984c6fef289269a7f98abcdc2445ebdf90e9273487dda6b/orjson-3.10.12-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2b57cbb4031153db37b41622eac67329c7810e5f480fda4cfd30542186f006ae", size = 139764 },
+ { url = "https://files.pythonhosted.org/packages/b3/5b/ee6e9ddeab54a7b7806768151c2090a2d36025bc346a944f51cf172ef7f7/orjson-3.10.12-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:165c89b53ef03ce0d7c59ca5c82fa65fe13ddf52eeb22e859e58c237d4e33b9b", size = 131915 },
+ { url = "https://files.pythonhosted.org/packages/c4/45/febee5951aef6db5cd8cdb260548101d7ece0ca9d4ddadadf1766306b7a4/orjson-3.10.12-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:5dee91b8dfd54557c1a1596eb90bcd47dbcd26b0baaed919e6861f076583e9da", size = 415783 },
+ { url = "https://files.pythonhosted.org/packages/27/a5/5a8569e49f3a6c093bee954a3de95062a231196f59e59df13a48e2420081/orjson-3.10.12-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:77a4e1cfb72de6f905bdff061172adfb3caf7a4578ebf481d8f0530879476c07", size = 142387 },
+ { url = "https://files.pythonhosted.org/packages/6e/05/02550fb38c5bf758f3994f55401233a2ef304e175f473f2ac6dbf464cc8b/orjson-3.10.12-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:038d42c7bc0606443459b8fe2d1f121db474c49067d8d14c6a075bbea8bf14dd", size = 130664 },
+ { url = "https://files.pythonhosted.org/packages/8c/f4/ba31019d0646ce51f7ac75af6dabf98fd89dbf8ad87a9086da34710738e7/orjson-3.10.12-cp311-none-win32.whl", hash = "sha256:03b553c02ab39bed249bedd4abe37b2118324d1674e639b33fab3d1dafdf4d79", size = 143623 },
+ { url = "https://files.pythonhosted.org/packages/83/fe/babf08842b989acf4c46103fefbd7301f026423fab47e6f3ba07b54d7837/orjson-3.10.12-cp311-none-win_amd64.whl", hash = "sha256:8b8713b9e46a45b2af6b96f559bfb13b1e02006f4242c156cbadef27800a55a8", size = 135074 },
+ { url = "https://files.pythonhosted.org/packages/a1/2f/989adcafad49afb535da56b95d8f87d82e748548b2a86003ac129314079c/orjson-3.10.12-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:53206d72eb656ca5ac7d3a7141e83c5bbd3ac30d5eccfe019409177a57634b0d", size = 248678 },
+ { url = "https://files.pythonhosted.org/packages/69/b9/8c075e21a50c387649db262b618ebb7e4d40f4197b949c146fc225dd23da/orjson-3.10.12-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac8010afc2150d417ebda810e8df08dd3f544e0dd2acab5370cfa6bcc0662f8f", size = 136763 },
+ { url = "https://files.pythonhosted.org/packages/87/d3/78edf10b4ab14c19f6d918cf46a145818f4aca2b5a1773c894c5490d3a4c/orjson-3.10.12-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed459b46012ae950dd2e17150e838ab08215421487371fa79d0eced8d1461d70", size = 149137 },
+ { url = "https://files.pythonhosted.org/packages/16/81/5db8852bdf990a0ddc997fa8f16b80895b8cc77c0fe3701569ed2b4b9e78/orjson-3.10.12-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8dcb9673f108a93c1b52bfc51b0af422c2d08d4fc710ce9c839faad25020bb69", size = 140567 },
+ { url = "https://files.pythonhosted.org/packages/fa/a6/9ce1e3e3db918512efadad489630c25841eb148513d21dab96f6b4157fa1/orjson-3.10.12-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:22a51ae77680c5c4652ebc63a83d5255ac7d65582891d9424b566fb3b5375ee9", size = 156620 },
+ { url = "https://files.pythonhosted.org/packages/47/d4/05133d6bea24e292d2f7628b1e19986554f7d97b6412b3e51d812e38db2d/orjson-3.10.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:910fdf2ac0637b9a77d1aad65f803bac414f0b06f720073438a7bd8906298192", size = 131555 },
+ { url = "https://files.pythonhosted.org/packages/b9/7a/b3fbffda8743135c7811e95dc2ab7cdbc5f04999b83c2957d046f1b3fac9/orjson-3.10.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:24ce85f7100160936bc2116c09d1a8492639418633119a2224114f67f63a4559", size = 139743 },
+ { url = "https://files.pythonhosted.org/packages/b5/13/95bbcc9a6584aa083da5ce5004ce3d59ea362a542a0b0938d884fd8790b6/orjson-3.10.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8a76ba5fc8dd9c913640292df27bff80a685bed3a3c990d59aa6ce24c352f8fc", size = 131733 },
+ { url = "https://files.pythonhosted.org/packages/e8/29/dddbb2ea6e7af426fcc3da65a370618a88141de75c6603313d70768d1df1/orjson-3.10.12-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:ff70ef093895fd53f4055ca75f93f047e088d1430888ca1229393a7c0521100f", size = 415788 },
+ { url = "https://files.pythonhosted.org/packages/53/df/4aea59324ac539975919b4705ee086aced38e351a6eb3eea0f5071dd5661/orjson-3.10.12-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f4244b7018b5753ecd10a6d324ec1f347da130c953a9c88432c7fbc8875d13be", size = 142347 },
+ { url = "https://files.pythonhosted.org/packages/55/55/a52d83d7c49f8ff44e0daab10554490447d6c658771569e1c662aa7057fe/orjson-3.10.12-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:16135ccca03445f37921fa4b585cff9a58aa8d81ebcb27622e69bfadd220b32c", size = 130829 },
+ { url = "https://files.pythonhosted.org/packages/a1/8b/b1beb1624dd4adf7d72e2d9b73c4b529e7851c0c754f17858ea13e368b33/orjson-3.10.12-cp312-none-win32.whl", hash = "sha256:2d879c81172d583e34153d524fcba5d4adafbab8349a7b9f16ae511c2cee8708", size = 143659 },
+ { url = "https://files.pythonhosted.org/packages/13/91/634c9cd0bfc6a857fc8fab9bf1a1bd9f7f3345e0d6ca5c3d4569ceb6dcfa/orjson-3.10.12-cp312-none-win_amd64.whl", hash = "sha256:fc23f691fa0f5c140576b8c365bc942d577d861a9ee1142e4db468e4e17094fb", size = 135221 },
+ { url = "https://files.pythonhosted.org/packages/1b/bb/3f560735f46fa6f875a9d7c4c2171a58cfb19f56a633d5ad5037a924f35f/orjson-3.10.12-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:47962841b2a8aa9a258b377f5188db31ba49af47d4003a32f55d6f8b19006543", size = 248662 },
+ { url = "https://files.pythonhosted.org/packages/a3/df/54817902350636cc9270db20486442ab0e4db33b38555300a1159b439d16/orjson-3.10.12-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6334730e2532e77b6054e87ca84f3072bee308a45a452ea0bffbbbc40a67e296", size = 126055 },
+ { url = "https://files.pythonhosted.org/packages/2e/77/55835914894e00332601a74540840f7665e81f20b3e2b9a97614af8565ed/orjson-3.10.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:accfe93f42713c899fdac2747e8d0d5c659592df2792888c6c5f829472e4f85e", size = 131507 },
+ { url = "https://files.pythonhosted.org/packages/33/9e/b91288361898e3158062a876b5013c519a5d13e692ac7686e3486c4133ab/orjson-3.10.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a7974c490c014c48810d1dede6c754c3cc46598da758c25ca3b4001ac45b703f", size = 131686 },
+ { url = "https://files.pythonhosted.org/packages/b2/15/08ce117d60a4d2d3fd24e6b21db463139a658e9f52d22c9c30af279b4187/orjson-3.10.12-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:3f250ce7727b0b2682f834a3facff88e310f52f07a5dcfd852d99637d386e79e", size = 415710 },
+ { url = "https://files.pythonhosted.org/packages/71/af/c09da5ed58f9c002cf83adff7a4cdf3e6cee742aa9723395f8dcdb397233/orjson-3.10.12-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:f31422ff9486ae484f10ffc51b5ab2a60359e92d0716fcce1b3593d7bb8a9af6", size = 142305 },
+ { url = "https://files.pythonhosted.org/packages/17/d1/8612038d44f33fae231e9ba480d273bac2b0383ce9e77cb06bede1224ae3/orjson-3.10.12-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5f29c5d282bb2d577c2a6bbde88d8fdcc4919c593f806aac50133f01b733846e", size = 130815 },
+ { url = "https://files.pythonhosted.org/packages/67/2c/d5f87834be3591555cfaf9aecdf28f480a6f0b4afeaac53bad534bf9518f/orjson-3.10.12-cp313-none-win32.whl", hash = "sha256:f45653775f38f63dc0e6cd4f14323984c3149c05d6007b58cb154dd080ddc0dc", size = 143664 },
+ { url = "https://files.pythonhosted.org/packages/6a/05/7d768fa3ca23c9b3e1e09117abeded1501119f1d8de0ab722938c91ab25d/orjson-3.10.12-cp313-none-win_amd64.whl", hash = "sha256:229994d0c376d5bdc91d92b3c9e6be2f1fbabd4cc1b59daae1443a46ee5e9825", size = 134944 },
]
[[package]]
@@ -3391,7 +3396,7 @@ wheels = [
[[package]]
name = "posthog"
-version = "3.7.2"
+version = "3.7.4"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "backoff", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
@@ -3400,9 +3405,9 @@ dependencies = [
{ name = "requests", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "six", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/07/ca/4dffc561503817e7496bf86b8bec843cb177989ca8db06a79dfcbe88e203/posthog-3.7.2.tar.gz", hash = "sha256:49e2bca912a20e5bf83e28ec199917a6d4e74188666c9c62f89c573bfbfe804d", size = 49693 }
+sdist = { url = "https://files.pythonhosted.org/packages/77/a0/7607d4fd7c52b086671d8618e76cb5b9a642311fd6f352ebd7eb035319f2/posthog-3.7.4.tar.gz", hash = "sha256:19384bd09d330f9787a7e2446aba14c8057ece56144970ea2791072d4e40cd36", size = 50174 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/71/23/1e7b25c4b8181da03431c57f234f6b8c883fe9b68128110e217e870d1250/posthog-3.7.2-py2.py3-none-any.whl", hash = "sha256:28bfc9d0b93956586067346c87d11d060fdc186159e9c700c375cab5c52402f8", size = 54400 },
+ { url = "https://files.pythonhosted.org/packages/d3/f2/5ee24cd69e2120bf87356c02ace0438b4e4fb78229fddcbf6f1c6be377d5/posthog-3.7.4-py2.py3-none-any.whl", hash = "sha256:21c18c6bf43b2de303ea4cd6e95804cc0f24c20cb2a96a8fd09da2ed50b62faa", size = 54777 },
]
[[package]]
@@ -3451,75 +3456,75 @@ wheels = [
[[package]]
name = "propcache"
-version = "0.2.0"
-source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/a9/4d/5e5a60b78dbc1d464f8a7bbaeb30957257afdc8512cbb9dfd5659304f5cd/propcache-0.2.0.tar.gz", hash = "sha256:df81779732feb9d01e5d513fad0122efb3d53bbc75f61b2a4f29a020bc985e70", size = 40951 }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/3a/08/1963dfb932b8d74d5b09098507b37e9b96c835ba89ab8aad35aa330f4ff3/propcache-0.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:c5869b8fd70b81835a6f187c5fdbe67917a04d7e52b6e7cc4e5fe39d55c39d58", size = 80712 },
- { url = "https://files.pythonhosted.org/packages/e6/59/49072aba9bf8a8ed958e576182d46f038e595b17ff7408bc7e8807e721e1/propcache-0.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:952e0d9d07609d9c5be361f33b0d6d650cd2bae393aabb11d9b719364521984b", size = 46301 },
- { url = "https://files.pythonhosted.org/packages/33/a2/6b1978c2e0d80a678e2c483f45e5443c15fe5d32c483902e92a073314ef1/propcache-0.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:33ac8f098df0585c0b53009f039dfd913b38c1d2edafed0cedcc0c32a05aa110", size = 45581 },
- { url = "https://files.pythonhosted.org/packages/43/95/55acc9adff8f997c7572f23d41993042290dfb29e404cdadb07039a4386f/propcache-0.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97e48e8875e6c13909c800fa344cd54cc4b2b0db1d5f911f840458a500fde2c2", size = 208659 },
- { url = "https://files.pythonhosted.org/packages/bd/2c/ef7371ff715e6cd19ea03fdd5637ecefbaa0752fee5b0f2fe8ea8407ee01/propcache-0.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:388f3217649d6d59292b722d940d4d2e1e6a7003259eb835724092a1cca0203a", size = 222613 },
- { url = "https://files.pythonhosted.org/packages/5e/1c/fef251f79fd4971a413fa4b1ae369ee07727b4cc2c71e2d90dfcde664fbb/propcache-0.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f571aea50ba5623c308aa146eb650eebf7dbe0fd8c5d946e28343cb3b5aad577", size = 221067 },
- { url = "https://files.pythonhosted.org/packages/8d/e7/22e76ae6fc5a1708bdce92bdb49de5ebe89a173db87e4ef597d6bbe9145a/propcache-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3dfafb44f7bb35c0c06eda6b2ab4bfd58f02729e7c4045e179f9a861b07c9850", size = 208920 },
- { url = "https://files.pythonhosted.org/packages/04/3e/f10aa562781bcd8a1e0b37683a23bef32bdbe501d9cc7e76969becaac30d/propcache-0.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a3ebe9a75be7ab0b7da2464a77bb27febcb4fab46a34f9288f39d74833db7f61", size = 200050 },
- { url = "https://files.pythonhosted.org/packages/d0/98/8ac69f638358c5f2a0043809c917802f96f86026e86726b65006830f3dc6/propcache-0.2.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d2f0d0f976985f85dfb5f3d685697ef769faa6b71993b46b295cdbbd6be8cc37", size = 202346 },
- { url = "https://files.pythonhosted.org/packages/ee/78/4acfc5544a5075d8e660af4d4e468d60c418bba93203d1363848444511ad/propcache-0.2.0-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:a3dc1a4b165283bd865e8f8cb5f0c64c05001e0718ed06250d8cac9bec115b48", size = 199750 },
- { url = "https://files.pythonhosted.org/packages/a2/8f/90ada38448ca2e9cf25adc2fe05d08358bda1b9446f54a606ea38f41798b/propcache-0.2.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:9e0f07b42d2a50c7dd2d8675d50f7343d998c64008f1da5fef888396b7f84630", size = 201279 },
- { url = "https://files.pythonhosted.org/packages/08/31/0e299f650f73903da851f50f576ef09bfffc8e1519e6a2f1e5ed2d19c591/propcache-0.2.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:e63e3e1e0271f374ed489ff5ee73d4b6e7c60710e1f76af5f0e1a6117cd26394", size = 211035 },
- { url = "https://files.pythonhosted.org/packages/85/3e/e356cc6b09064bff1c06d0b2413593e7c925726f0139bc7acef8a21e87a8/propcache-0.2.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:56bb5c98f058a41bb58eead194b4db8c05b088c93d94d5161728515bd52b052b", size = 215565 },
- { url = "https://files.pythonhosted.org/packages/8b/54/4ef7236cd657e53098bd05aa59cbc3cbf7018fba37b40eaed112c3921e51/propcache-0.2.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7665f04d0c7f26ff8bb534e1c65068409bf4687aa2534faf7104d7182debb336", size = 207604 },
- { url = "https://files.pythonhosted.org/packages/1f/27/d01d7799c068443ee64002f0655d82fb067496897bf74b632e28ee6a32cf/propcache-0.2.0-cp310-cp310-win32.whl", hash = "sha256:7cf18abf9764746b9c8704774d8b06714bcb0a63641518a3a89c7f85cc02c2ad", size = 40526 },
- { url = "https://files.pythonhosted.org/packages/bb/44/6c2add5eeafb7f31ff0d25fbc005d930bea040a1364cf0f5768750ddf4d1/propcache-0.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:cfac69017ef97db2438efb854edf24f5a29fd09a536ff3a992b75990720cdc99", size = 44958 },
- { url = "https://files.pythonhosted.org/packages/e0/1c/71eec730e12aec6511e702ad0cd73c2872eccb7cad39de8ba3ba9de693ef/propcache-0.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:63f13bf09cc3336eb04a837490b8f332e0db41da66995c9fd1ba04552e516354", size = 80811 },
- { url = "https://files.pythonhosted.org/packages/89/c3/7e94009f9a4934c48a371632197406a8860b9f08e3f7f7d922ab69e57a41/propcache-0.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:608cce1da6f2672a56b24a015b42db4ac612ee709f3d29f27a00c943d9e851de", size = 46365 },
- { url = "https://files.pythonhosted.org/packages/c0/1d/c700d16d1d6903aeab28372fe9999762f074b80b96a0ccc953175b858743/propcache-0.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:466c219deee4536fbc83c08d09115249db301550625c7fef1c5563a584c9bc87", size = 45602 },
- { url = "https://files.pythonhosted.org/packages/2e/5e/4a3e96380805bf742712e39a4534689f4cddf5fa2d3a93f22e9fd8001b23/propcache-0.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc2db02409338bf36590aa985a461b2c96fce91f8e7e0f14c50c5fcc4f229016", size = 236161 },
- { url = "https://files.pythonhosted.org/packages/a5/85/90132481183d1436dff6e29f4fa81b891afb6cb89a7306f32ac500a25932/propcache-0.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a6ed8db0a556343d566a5c124ee483ae113acc9a557a807d439bcecc44e7dfbb", size = 244938 },
- { url = "https://files.pythonhosted.org/packages/4a/89/c893533cb45c79c970834274e2d0f6d64383ec740be631b6a0a1d2b4ddc0/propcache-0.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:91997d9cb4a325b60d4e3f20967f8eb08dfcb32b22554d5ef78e6fd1dda743a2", size = 243576 },
- { url = "https://files.pythonhosted.org/packages/8c/56/98c2054c8526331a05f205bf45cbb2cda4e58e56df70e76d6a509e5d6ec6/propcache-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c7dde9e533c0a49d802b4f3f218fa9ad0a1ce21f2c2eb80d5216565202acab4", size = 236011 },
- { url = "https://files.pythonhosted.org/packages/2d/0c/8b8b9f8a6e1abd869c0fa79b907228e7abb966919047d294ef5df0d136cf/propcache-0.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffcad6c564fe6b9b8916c1aefbb37a362deebf9394bd2974e9d84232e3e08504", size = 224834 },
- { url = "https://files.pythonhosted.org/packages/18/bb/397d05a7298b7711b90e13108db697732325cafdcd8484c894885c1bf109/propcache-0.2.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:97a58a28bcf63284e8b4d7b460cbee1edaab24634e82059c7b8c09e65284f178", size = 224946 },
- { url = "https://files.pythonhosted.org/packages/25/19/4fc08dac19297ac58135c03770b42377be211622fd0147f015f78d47cd31/propcache-0.2.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:945db8ee295d3af9dbdbb698cce9bbc5c59b5c3fe328bbc4387f59a8a35f998d", size = 217280 },
- { url = "https://files.pythonhosted.org/packages/7e/76/c79276a43df2096ce2aba07ce47576832b1174c0c480fe6b04bd70120e59/propcache-0.2.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:39e104da444a34830751715f45ef9fc537475ba21b7f1f5b0f4d71a3b60d7fe2", size = 220088 },
- { url = "https://files.pythonhosted.org/packages/c3/9a/8a8cf428a91b1336b883f09c8b884e1734c87f724d74b917129a24fe2093/propcache-0.2.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:c5ecca8f9bab618340c8e848d340baf68bcd8ad90a8ecd7a4524a81c1764b3db", size = 233008 },
- { url = "https://files.pythonhosted.org/packages/25/7b/768a8969abd447d5f0f3333df85c6a5d94982a1bc9a89c53c154bf7a8b11/propcache-0.2.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:c436130cc779806bdf5d5fae0d848713105472b8566b75ff70048c47d3961c5b", size = 237719 },
- { url = "https://files.pythonhosted.org/packages/ed/0d/e5d68ccc7976ef8b57d80613ac07bbaf0614d43f4750cf953f0168ef114f/propcache-0.2.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:191db28dc6dcd29d1a3e063c3be0b40688ed76434622c53a284e5427565bbd9b", size = 227729 },
- { url = "https://files.pythonhosted.org/packages/05/64/17eb2796e2d1c3d0c431dc5f40078d7282f4645af0bb4da9097fbb628c6c/propcache-0.2.0-cp311-cp311-win32.whl", hash = "sha256:5f2564ec89058ee7c7989a7b719115bdfe2a2fb8e7a4543b8d1c0cc4cf6478c1", size = 40473 },
- { url = "https://files.pythonhosted.org/packages/83/c5/e89fc428ccdc897ade08cd7605f174c69390147526627a7650fb883e0cd0/propcache-0.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:6e2e54267980349b723cff366d1e29b138b9a60fa376664a157a342689553f71", size = 44921 },
- { url = "https://files.pythonhosted.org/packages/7c/46/a41ca1097769fc548fc9216ec4c1471b772cc39720eb47ed7e38ef0006a9/propcache-0.2.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:2ee7606193fb267be4b2e3b32714f2d58cad27217638db98a60f9efb5efeccc2", size = 80800 },
- { url = "https://files.pythonhosted.org/packages/75/4f/93df46aab9cc473498ff56be39b5f6ee1e33529223d7a4d8c0a6101a9ba2/propcache-0.2.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:91ee8fc02ca52e24bcb77b234f22afc03288e1dafbb1f88fe24db308910c4ac7", size = 46443 },
- { url = "https://files.pythonhosted.org/packages/0b/17/308acc6aee65d0f9a8375e36c4807ac6605d1f38074b1581bd4042b9fb37/propcache-0.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2e900bad2a8456d00a113cad8c13343f3b1f327534e3589acc2219729237a2e8", size = 45676 },
- { url = "https://files.pythonhosted.org/packages/65/44/626599d2854d6c1d4530b9a05e7ff2ee22b790358334b475ed7c89f7d625/propcache-0.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f52a68c21363c45297aca15561812d542f8fc683c85201df0bebe209e349f793", size = 246191 },
- { url = "https://files.pythonhosted.org/packages/f2/df/5d996d7cb18df076debae7d76ac3da085c0575a9f2be6b1f707fe227b54c/propcache-0.2.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1e41d67757ff4fbc8ef2af99b338bfb955010444b92929e9e55a6d4dcc3c4f09", size = 251791 },
- { url = "https://files.pythonhosted.org/packages/2e/6d/9f91e5dde8b1f662f6dd4dff36098ed22a1ef4e08e1316f05f4758f1576c/propcache-0.2.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a64e32f8bd94c105cc27f42d3b658902b5bcc947ece3c8fe7bc1b05982f60e89", size = 253434 },
- { url = "https://files.pythonhosted.org/packages/3c/e9/1b54b7e26f50b3e0497cd13d3483d781d284452c2c50dd2a615a92a087a3/propcache-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:55346705687dbd7ef0d77883ab4f6fabc48232f587925bdaf95219bae072491e", size = 248150 },
- { url = "https://files.pythonhosted.org/packages/a7/ef/a35bf191c8038fe3ce9a414b907371c81d102384eda5dbafe6f4dce0cf9b/propcache-0.2.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:00181262b17e517df2cd85656fcd6b4e70946fe62cd625b9d74ac9977b64d8d9", size = 233568 },
- { url = "https://files.pythonhosted.org/packages/97/d9/d00bb9277a9165a5e6d60f2142cd1a38a750045c9c12e47ae087f686d781/propcache-0.2.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6994984550eaf25dd7fc7bd1b700ff45c894149341725bb4edc67f0ffa94efa4", size = 229874 },
- { url = "https://files.pythonhosted.org/packages/8e/78/c123cf22469bdc4b18efb78893e69c70a8b16de88e6160b69ca6bdd88b5d/propcache-0.2.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:56295eb1e5f3aecd516d91b00cfd8bf3a13991de5a479df9e27dd569ea23959c", size = 225857 },
- { url = "https://files.pythonhosted.org/packages/31/1b/fd6b2f1f36d028820d35475be78859d8c89c8f091ad30e377ac49fd66359/propcache-0.2.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:439e76255daa0f8151d3cb325f6dd4a3e93043e6403e6491813bcaaaa8733887", size = 227604 },
- { url = "https://files.pythonhosted.org/packages/99/36/b07be976edf77a07233ba712e53262937625af02154353171716894a86a6/propcache-0.2.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:f6475a1b2ecb310c98c28d271a30df74f9dd436ee46d09236a6b750a7599ce57", size = 238430 },
- { url = "https://files.pythonhosted.org/packages/0d/64/5822f496c9010e3966e934a011ac08cac8734561842bc7c1f65586e0683c/propcache-0.2.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:3444cdba6628accf384e349014084b1cacd866fbb88433cd9d279d90a54e0b23", size = 244814 },
- { url = "https://files.pythonhosted.org/packages/fd/bd/8657918a35d50b18a9e4d78a5df7b6c82a637a311ab20851eef4326305c1/propcache-0.2.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4a9d9b4d0a9b38d1c391bb4ad24aa65f306c6f01b512e10a8a34a2dc5675d348", size = 235922 },
- { url = "https://files.pythonhosted.org/packages/a8/6f/ec0095e1647b4727db945213a9f395b1103c442ef65e54c62e92a72a3f75/propcache-0.2.0-cp312-cp312-win32.whl", hash = "sha256:69d3a98eebae99a420d4b28756c8ce6ea5a29291baf2dc9ff9414b42676f61d5", size = 40177 },
- { url = "https://files.pythonhosted.org/packages/20/a2/bd0896fdc4f4c1db46d9bc361c8c79a9bf08ccc08ba054a98e38e7ba1557/propcache-0.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:ad9c9b99b05f163109466638bd30ada1722abb01bbb85c739c50b6dc11f92dc3", size = 44446 },
- { url = "https://files.pythonhosted.org/packages/a8/a7/5f37b69197d4f558bfef5b4bceaff7c43cc9b51adf5bd75e9081d7ea80e4/propcache-0.2.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ecddc221a077a8132cf7c747d5352a15ed763b674c0448d811f408bf803d9ad7", size = 78120 },
- { url = "https://files.pythonhosted.org/packages/c8/cd/48ab2b30a6b353ecb95a244915f85756d74f815862eb2ecc7a518d565b48/propcache-0.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0e53cb83fdd61cbd67202735e6a6687a7b491c8742dfc39c9e01e80354956763", size = 45127 },
- { url = "https://files.pythonhosted.org/packages/a5/ba/0a1ef94a3412aab057bd996ed5f0ac7458be5bf469e85c70fa9ceb43290b/propcache-0.2.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:92fe151145a990c22cbccf9ae15cae8ae9eddabfc949a219c9f667877e40853d", size = 44419 },
- { url = "https://files.pythonhosted.org/packages/b4/6c/ca70bee4f22fa99eacd04f4d2f1699be9d13538ccf22b3169a61c60a27fa/propcache-0.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6a21ef516d36909931a2967621eecb256018aeb11fc48656e3257e73e2e247a", size = 229611 },
- { url = "https://files.pythonhosted.org/packages/19/70/47b872a263e8511ca33718d96a10c17d3c853aefadeb86dc26e8421184b9/propcache-0.2.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3f88a4095e913f98988f5b338c1d4d5d07dbb0b6bad19892fd447484e483ba6b", size = 234005 },
- { url = "https://files.pythonhosted.org/packages/4f/be/3b0ab8c84a22e4a3224719099c1229ddfdd8a6a1558cf75cb55ee1e35c25/propcache-0.2.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5a5b3bb545ead161be780ee85a2b54fdf7092815995661947812dde94a40f6fb", size = 237270 },
- { url = "https://files.pythonhosted.org/packages/04/d8/f071bb000d4b8f851d312c3c75701e586b3f643fe14a2e3409b1b9ab3936/propcache-0.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67aeb72e0f482709991aa91345a831d0b707d16b0257e8ef88a2ad246a7280bf", size = 231877 },
- { url = "https://files.pythonhosted.org/packages/93/e7/57a035a1359e542bbb0a7df95aad6b9871ebee6dce2840cb157a415bd1f3/propcache-0.2.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3c997f8c44ec9b9b0bcbf2d422cc00a1d9b9c681f56efa6ca149a941e5560da2", size = 217848 },
- { url = "https://files.pythonhosted.org/packages/f0/93/d1dea40f112ec183398fb6c42fde340edd7bab202411c4aa1a8289f461b6/propcache-0.2.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:2a66df3d4992bc1d725b9aa803e8c5a66c010c65c741ad901e260ece77f58d2f", size = 216987 },
- { url = "https://files.pythonhosted.org/packages/62/4c/877340871251145d3522c2b5d25c16a1690ad655fbab7bb9ece6b117e39f/propcache-0.2.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:3ebbcf2a07621f29638799828b8d8668c421bfb94c6cb04269130d8de4fb7136", size = 212451 },
- { url = "https://files.pythonhosted.org/packages/7c/bb/a91b72efeeb42906ef58ccf0cdb87947b54d7475fee3c93425d732f16a61/propcache-0.2.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:1235c01ddaa80da8235741e80815ce381c5267f96cc49b1477fdcf8c047ef325", size = 212879 },
- { url = "https://files.pythonhosted.org/packages/9b/7f/ee7fea8faac57b3ec5d91ff47470c6c5d40d7f15d0b1fccac806348fa59e/propcache-0.2.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:3947483a381259c06921612550867b37d22e1df6d6d7e8361264b6d037595f44", size = 222288 },
- { url = "https://files.pythonhosted.org/packages/ff/d7/acd67901c43d2e6b20a7a973d9d5fd543c6e277af29b1eb0e1f7bd7ca7d2/propcache-0.2.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:d5bed7f9805cc29c780f3aee05de3262ee7ce1f47083cfe9f77471e9d6777e83", size = 228257 },
- { url = "https://files.pythonhosted.org/packages/8d/6f/6272ecc7a8daad1d0754cfc6c8846076a8cb13f810005c79b15ce0ef0cf2/propcache-0.2.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e4a91d44379f45f5e540971d41e4626dacd7f01004826a18cb048e7da7e96544", size = 221075 },
- { url = "https://files.pythonhosted.org/packages/7c/bd/c7a6a719a6b3dd8b3aeadb3675b5783983529e4a3185946aa444d3e078f6/propcache-0.2.0-cp313-cp313-win32.whl", hash = "sha256:f902804113e032e2cdf8c71015651c97af6418363bea8d78dc0911d56c335032", size = 39654 },
- { url = "https://files.pythonhosted.org/packages/88/e7/0eef39eff84fa3e001b44de0bd41c7c0e3432e7648ffd3d64955910f002d/propcache-0.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:8f188cfcc64fb1266f4684206c9de0e80f54622c3f22a910cbd200478aeae61e", size = 43705 },
- { url = "https://files.pythonhosted.org/packages/3d/b6/e6d98278f2d49b22b4d033c9f792eda783b9ab2094b041f013fc69bcde87/propcache-0.2.0-py3-none-any.whl", hash = "sha256:2ccc28197af5313706511fab3a8b66dcd6da067a1331372c82ea1cb74285e036", size = 11603 },
+version = "0.2.1"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/20/c8/2a13f78d82211490855b2fb303b6721348d0787fdd9a12ac46d99d3acde1/propcache-0.2.1.tar.gz", hash = "sha256:3f77ce728b19cb537714499928fe800c3dda29e8d9428778fc7c186da4c09a64", size = 41735 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/a7/a5/0ea64c9426959ef145a938e38c832fc551843481d356713ececa9a8a64e8/propcache-0.2.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6b3f39a85d671436ee3d12c017f8fdea38509e4f25b28eb25877293c98c243f6", size = 79296 },
+ { url = "https://files.pythonhosted.org/packages/76/5a/916db1aba735f55e5eca4733eea4d1973845cf77dfe67c2381a2ca3ce52d/propcache-0.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39d51fbe4285d5db5d92a929e3e21536ea3dd43732c5b177c7ef03f918dff9f2", size = 45622 },
+ { url = "https://files.pythonhosted.org/packages/2d/62/685d3cf268b8401ec12b250b925b21d152b9d193b7bffa5fdc4815c392c2/propcache-0.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6445804cf4ec763dc70de65a3b0d9954e868609e83850a47ca4f0cb64bd79fea", size = 45133 },
+ { url = "https://files.pythonhosted.org/packages/4d/3d/31c9c29ee7192defc05aa4d01624fd85a41cf98e5922aaed206017329944/propcache-0.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9479aa06a793c5aeba49ce5c5692ffb51fcd9a7016e017d555d5e2b0045d212", size = 204809 },
+ { url = "https://files.pythonhosted.org/packages/10/a1/e4050776f4797fc86140ac9a480d5dc069fbfa9d499fe5c5d2fa1ae71f07/propcache-0.2.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9631c5e8b5b3a0fda99cb0d29c18133bca1e18aea9effe55adb3da1adef80d3", size = 219109 },
+ { url = "https://files.pythonhosted.org/packages/c9/c0/e7ae0df76343d5e107d81e59acc085cea5fd36a48aa53ef09add7503e888/propcache-0.2.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3156628250f46a0895f1f36e1d4fbe062a1af8718ec3ebeb746f1d23f0c5dc4d", size = 217368 },
+ { url = "https://files.pythonhosted.org/packages/fc/e1/e0a2ed6394b5772508868a977d3238f4afb2eebaf9976f0b44a8d347ad63/propcache-0.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b6fb63ae352e13748289f04f37868099e69dba4c2b3e271c46061e82c745634", size = 205124 },
+ { url = "https://files.pythonhosted.org/packages/50/c1/e388c232d15ca10f233c778bbdc1034ba53ede14c207a72008de45b2db2e/propcache-0.2.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:887d9b0a65404929641a9fabb6452b07fe4572b269d901d622d8a34a4e9043b2", size = 195463 },
+ { url = "https://files.pythonhosted.org/packages/0a/fd/71b349b9def426cc73813dbd0f33e266de77305e337c8c12bfb0a2a82bfb/propcache-0.2.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a96dc1fa45bd8c407a0af03b2d5218392729e1822b0c32e62c5bf7eeb5fb3958", size = 198358 },
+ { url = "https://files.pythonhosted.org/packages/02/f2/d7c497cd148ebfc5b0ae32808e6c1af5922215fe38c7a06e4e722fe937c8/propcache-0.2.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:a7e65eb5c003a303b94aa2c3852ef130230ec79e349632d030e9571b87c4698c", size = 195560 },
+ { url = "https://files.pythonhosted.org/packages/bb/57/f37041bbe5e0dfed80a3f6be2612a3a75b9cfe2652abf2c99bef3455bbad/propcache-0.2.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:999779addc413181912e984b942fbcc951be1f5b3663cd80b2687758f434c583", size = 196895 },
+ { url = "https://files.pythonhosted.org/packages/83/36/ae3cc3e4f310bff2f064e3d2ed5558935cc7778d6f827dce74dcfa125304/propcache-0.2.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:19a0f89a7bb9d8048d9c4370c9c543c396e894c76be5525f5e1ad287f1750ddf", size = 207124 },
+ { url = "https://files.pythonhosted.org/packages/8c/c4/811b9f311f10ce9d31a32ff14ce58500458443627e4df4ae9c264defba7f/propcache-0.2.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:1ac2f5fe02fa75f56e1ad473f1175e11f475606ec9bd0be2e78e4734ad575034", size = 210442 },
+ { url = "https://files.pythonhosted.org/packages/18/dd/a1670d483a61ecac0d7fc4305d91caaac7a8fc1b200ea3965a01cf03bced/propcache-0.2.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:574faa3b79e8ebac7cb1d7930f51184ba1ccf69adfdec53a12f319a06030a68b", size = 203219 },
+ { url = "https://files.pythonhosted.org/packages/f9/2d/30ced5afde41b099b2dc0c6573b66b45d16d73090e85655f1a30c5a24e07/propcache-0.2.1-cp310-cp310-win32.whl", hash = "sha256:03ff9d3f665769b2a85e6157ac8b439644f2d7fd17615a82fa55739bc97863f4", size = 40313 },
+ { url = "https://files.pythonhosted.org/packages/23/84/bd9b207ac80da237af77aa6e153b08ffa83264b1c7882495984fcbfcf85c/propcache-0.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:2d3af2e79991102678f53e0dbf4c35de99b6b8b58f29a27ca0325816364caaba", size = 44428 },
+ { url = "https://files.pythonhosted.org/packages/bc/0f/2913b6791ebefb2b25b4efd4bb2299c985e09786b9f5b19184a88e5778dd/propcache-0.2.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1ffc3cca89bb438fb9c95c13fc874012f7b9466b89328c3c8b1aa93cdcfadd16", size = 79297 },
+ { url = "https://files.pythonhosted.org/packages/cf/73/af2053aeccd40b05d6e19058419ac77674daecdd32478088b79375b9ab54/propcache-0.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f174bbd484294ed9fdf09437f889f95807e5f229d5d93588d34e92106fbf6717", size = 45611 },
+ { url = "https://files.pythonhosted.org/packages/3c/09/8386115ba7775ea3b9537730e8cf718d83bbf95bffe30757ccf37ec4e5da/propcache-0.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:70693319e0b8fd35dd863e3e29513875eb15c51945bf32519ef52927ca883bc3", size = 45146 },
+ { url = "https://files.pythonhosted.org/packages/03/7a/793aa12f0537b2e520bf09f4c6833706b63170a211ad042ca71cbf79d9cb/propcache-0.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b480c6a4e1138e1aa137c0079b9b6305ec6dcc1098a8ca5196283e8a49df95a9", size = 232136 },
+ { url = "https://files.pythonhosted.org/packages/f1/38/b921b3168d72111769f648314100558c2ea1d52eb3d1ba7ea5c4aa6f9848/propcache-0.2.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d27b84d5880f6d8aa9ae3edb253c59d9f6642ffbb2c889b78b60361eed449787", size = 239706 },
+ { url = "https://files.pythonhosted.org/packages/14/29/4636f500c69b5edea7786db3c34eb6166f3384b905665ce312a6e42c720c/propcache-0.2.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:857112b22acd417c40fa4595db2fe28ab900c8c5fe4670c7989b1c0230955465", size = 238531 },
+ { url = "https://files.pythonhosted.org/packages/85/14/01fe53580a8e1734ebb704a3482b7829a0ef4ea68d356141cf0994d9659b/propcache-0.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf6c4150f8c0e32d241436526f3c3f9cbd34429492abddbada2ffcff506c51af", size = 231063 },
+ { url = "https://files.pythonhosted.org/packages/33/5c/1d961299f3c3b8438301ccfbff0143b69afcc30c05fa28673cface692305/propcache-0.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:66d4cfda1d8ed687daa4bc0274fcfd5267873db9a5bc0418c2da19273040eeb7", size = 220134 },
+ { url = "https://files.pythonhosted.org/packages/00/d0/ed735e76db279ba67a7d3b45ba4c654e7b02bc2f8050671ec365d8665e21/propcache-0.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c2f992c07c0fca81655066705beae35fc95a2fa7366467366db627d9f2ee097f", size = 220009 },
+ { url = "https://files.pythonhosted.org/packages/75/90/ee8fab7304ad6533872fee982cfff5a53b63d095d78140827d93de22e2d4/propcache-0.2.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:4a571d97dbe66ef38e472703067021b1467025ec85707d57e78711c085984e54", size = 212199 },
+ { url = "https://files.pythonhosted.org/packages/eb/ec/977ffaf1664f82e90737275873461695d4c9407d52abc2f3c3e24716da13/propcache-0.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:bb6178c241278d5fe853b3de743087be7f5f4c6f7d6d22a3b524d323eecec505", size = 214827 },
+ { url = "https://files.pythonhosted.org/packages/57/48/031fb87ab6081764054821a71b71942161619549396224cbb242922525e8/propcache-0.2.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:ad1af54a62ffe39cf34db1aa6ed1a1873bd548f6401db39d8e7cd060b9211f82", size = 228009 },
+ { url = "https://files.pythonhosted.org/packages/1a/06/ef1390f2524850838f2390421b23a8b298f6ce3396a7cc6d39dedd4047b0/propcache-0.2.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:e7048abd75fe40712005bcfc06bb44b9dfcd8e101dda2ecf2f5aa46115ad07ca", size = 231638 },
+ { url = "https://files.pythonhosted.org/packages/38/2a/101e6386d5a93358395da1d41642b79c1ee0f3b12e31727932b069282b1d/propcache-0.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:160291c60081f23ee43d44b08a7e5fb76681221a8e10b3139618c5a9a291b84e", size = 222788 },
+ { url = "https://files.pythonhosted.org/packages/db/81/786f687951d0979007e05ad9346cd357e50e3d0b0f1a1d6074df334b1bbb/propcache-0.2.1-cp311-cp311-win32.whl", hash = "sha256:819ce3b883b7576ca28da3861c7e1a88afd08cc8c96908e08a3f4dd64a228034", size = 40170 },
+ { url = "https://files.pythonhosted.org/packages/cf/59/7cc7037b295d5772eceb426358bb1b86e6cab4616d971bd74275395d100d/propcache-0.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:edc9fc7051e3350643ad929df55c451899bb9ae6d24998a949d2e4c87fb596d3", size = 44404 },
+ { url = "https://files.pythonhosted.org/packages/4c/28/1d205fe49be8b1b4df4c50024e62480a442b1a7b818e734308bb0d17e7fb/propcache-0.2.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:081a430aa8d5e8876c6909b67bd2d937bfd531b0382d3fdedb82612c618bc41a", size = 79588 },
+ { url = "https://files.pythonhosted.org/packages/21/ee/fc4d893f8d81cd4971affef2a6cb542b36617cd1d8ce56b406112cb80bf7/propcache-0.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d2ccec9ac47cf4e04897619c0e0c1a48c54a71bdf045117d3a26f80d38ab1fb0", size = 45825 },
+ { url = "https://files.pythonhosted.org/packages/4a/de/bbe712f94d088da1d237c35d735f675e494a816fd6f54e9db2f61ef4d03f/propcache-0.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:14d86fe14b7e04fa306e0c43cdbeebe6b2c2156a0c9ce56b815faacc193e320d", size = 45357 },
+ { url = "https://files.pythonhosted.org/packages/7f/14/7ae06a6cf2a2f1cb382586d5a99efe66b0b3d0c6f9ac2f759e6f7af9d7cf/propcache-0.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:049324ee97bb67285b49632132db351b41e77833678432be52bdd0289c0e05e4", size = 241869 },
+ { url = "https://files.pythonhosted.org/packages/cc/59/227a78be960b54a41124e639e2c39e8807ac0c751c735a900e21315f8c2b/propcache-0.2.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1cd9a1d071158de1cc1c71a26014dcdfa7dd3d5f4f88c298c7f90ad6f27bb46d", size = 247884 },
+ { url = "https://files.pythonhosted.org/packages/84/58/f62b4ffaedf88dc1b17f04d57d8536601e4e030feb26617228ef930c3279/propcache-0.2.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98110aa363f1bb4c073e8dcfaefd3a5cea0f0834c2aab23dda657e4dab2f53b5", size = 248486 },
+ { url = "https://files.pythonhosted.org/packages/1c/07/ebe102777a830bca91bbb93e3479cd34c2ca5d0361b83be9dbd93104865e/propcache-0.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:647894f5ae99c4cf6bb82a1bb3a796f6e06af3caa3d32e26d2350d0e3e3faf24", size = 243649 },
+ { url = "https://files.pythonhosted.org/packages/ed/bc/4f7aba7f08f520376c4bb6a20b9a981a581b7f2e385fa0ec9f789bb2d362/propcache-0.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bfd3223c15bebe26518d58ccf9a39b93948d3dcb3e57a20480dfdd315356baff", size = 229103 },
+ { url = "https://files.pythonhosted.org/packages/fe/d5/04ac9cd4e51a57a96f78795e03c5a0ddb8f23ec098b86f92de028d7f2a6b/propcache-0.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d71264a80f3fcf512eb4f18f59423fe82d6e346ee97b90625f283df56aee103f", size = 226607 },
+ { url = "https://files.pythonhosted.org/packages/e3/f0/24060d959ea41d7a7cc7fdbf68b31852331aabda914a0c63bdb0e22e96d6/propcache-0.2.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:e73091191e4280403bde6c9a52a6999d69cdfde498f1fdf629105247599b57ec", size = 221153 },
+ { url = "https://files.pythonhosted.org/packages/77/a7/3ac76045a077b3e4de4859a0753010765e45749bdf53bd02bc4d372da1a0/propcache-0.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3935bfa5fede35fb202c4b569bb9c042f337ca4ff7bd540a0aa5e37131659348", size = 222151 },
+ { url = "https://files.pythonhosted.org/packages/e7/af/5e29da6f80cebab3f5a4dcd2a3240e7f56f2c4abf51cbfcc99be34e17f0b/propcache-0.2.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:f508b0491767bb1f2b87fdfacaba5f7eddc2f867740ec69ece6d1946d29029a6", size = 233812 },
+ { url = "https://files.pythonhosted.org/packages/8c/89/ebe3ad52642cc5509eaa453e9f4b94b374d81bae3265c59d5c2d98efa1b4/propcache-0.2.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:1672137af7c46662a1c2be1e8dc78cb6d224319aaa40271c9257d886be4363a6", size = 238829 },
+ { url = "https://files.pythonhosted.org/packages/e9/2f/6b32f273fa02e978b7577159eae7471b3cfb88b48563b1c2578b2d7ca0bb/propcache-0.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b74c261802d3d2b85c9df2dfb2fa81b6f90deeef63c2db9f0e029a3cac50b518", size = 230704 },
+ { url = "https://files.pythonhosted.org/packages/5c/2e/f40ae6ff5624a5f77edd7b8359b208b5455ea113f68309e2b00a2e1426b6/propcache-0.2.1-cp312-cp312-win32.whl", hash = "sha256:d09c333d36c1409d56a9d29b3a1b800a42c76a57a5a8907eacdbce3f18768246", size = 40050 },
+ { url = "https://files.pythonhosted.org/packages/3b/77/a92c3ef994e47180862b9d7d11e37624fb1c00a16d61faf55115d970628b/propcache-0.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:c214999039d4f2a5b2073ac506bba279945233da8c786e490d411dfc30f855c1", size = 44117 },
+ { url = "https://files.pythonhosted.org/packages/0f/2a/329e0547cf2def8857157f9477669043e75524cc3e6251cef332b3ff256f/propcache-0.2.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aca405706e0b0a44cc6bfd41fbe89919a6a56999157f6de7e182a990c36e37bc", size = 77002 },
+ { url = "https://files.pythonhosted.org/packages/12/2d/c4df5415e2382f840dc2ecbca0eeb2293024bc28e57a80392f2012b4708c/propcache-0.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:12d1083f001ace206fe34b6bdc2cb94be66d57a850866f0b908972f90996b3e9", size = 44639 },
+ { url = "https://files.pythonhosted.org/packages/d0/5a/21aaa4ea2f326edaa4e240959ac8b8386ea31dedfdaa636a3544d9e7a408/propcache-0.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d93f3307ad32a27bda2e88ec81134b823c240aa3abb55821a8da553eed8d9439", size = 44049 },
+ { url = "https://files.pythonhosted.org/packages/4e/3e/021b6cd86c0acc90d74784ccbb66808b0bd36067a1bf3e2deb0f3845f618/propcache-0.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba278acf14471d36316159c94a802933d10b6a1e117b8554fe0d0d9b75c9d536", size = 224819 },
+ { url = "https://files.pythonhosted.org/packages/3c/57/c2fdeed1b3b8918b1770a133ba5c43ad3d78e18285b0c06364861ef5cc38/propcache-0.2.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4e6281aedfca15301c41f74d7005e6e3f4ca143584ba696ac69df4f02f40d629", size = 229625 },
+ { url = "https://files.pythonhosted.org/packages/9d/81/70d4ff57bf2877b5780b466471bebf5892f851a7e2ca0ae7ffd728220281/propcache-0.2.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5b750a8e5a1262434fb1517ddf64b5de58327f1adc3524a5e44c2ca43305eb0b", size = 232934 },
+ { url = "https://files.pythonhosted.org/packages/3c/b9/bb51ea95d73b3fb4100cb95adbd4e1acaf2cbb1fd1083f5468eeb4a099a8/propcache-0.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf72af5e0fb40e9babf594308911436c8efde3cb5e75b6f206c34ad18be5c052", size = 227361 },
+ { url = "https://files.pythonhosted.org/packages/f1/20/3c6d696cd6fd70b29445960cc803b1851a1131e7a2e4ee261ee48e002bcd/propcache-0.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b2d0a12018b04f4cb820781ec0dffb5f7c7c1d2a5cd22bff7fb055a2cb19ebce", size = 213904 },
+ { url = "https://files.pythonhosted.org/packages/a1/cb/1593bfc5ac6d40c010fa823f128056d6bc25b667f5393781e37d62f12005/propcache-0.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e800776a79a5aabdb17dcc2346a7d66d0777e942e4cd251defeb084762ecd17d", size = 212632 },
+ { url = "https://files.pythonhosted.org/packages/6d/5c/e95617e222be14a34c709442a0ec179f3207f8a2b900273720501a70ec5e/propcache-0.2.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:4160d9283bd382fa6c0c2b5e017acc95bc183570cd70968b9202ad6d8fc48dce", size = 207897 },
+ { url = "https://files.pythonhosted.org/packages/8e/3b/56c5ab3dc00f6375fbcdeefdede5adf9bee94f1fab04adc8db118f0f9e25/propcache-0.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:30b43e74f1359353341a7adb783c8f1b1c676367b011709f466f42fda2045e95", size = 208118 },
+ { url = "https://files.pythonhosted.org/packages/86/25/d7ef738323fbc6ebcbce33eb2a19c5e07a89a3df2fded206065bd5e868a9/propcache-0.2.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:58791550b27d5488b1bb52bc96328456095d96206a250d28d874fafe11b3dfaf", size = 217851 },
+ { url = "https://files.pythonhosted.org/packages/b3/77/763e6cef1852cf1ba740590364ec50309b89d1c818e3256d3929eb92fabf/propcache-0.2.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:0f022d381747f0dfe27e99d928e31bc51a18b65bb9e481ae0af1380a6725dd1f", size = 222630 },
+ { url = "https://files.pythonhosted.org/packages/4f/e9/0f86be33602089c701696fbed8d8c4c07b6ee9605c5b7536fd27ed540c5b/propcache-0.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:297878dc9d0a334358f9b608b56d02e72899f3b8499fc6044133f0d319e2ec30", size = 216269 },
+ { url = "https://files.pythonhosted.org/packages/cc/02/5ac83217d522394b6a2e81a2e888167e7ca629ef6569a3f09852d6dcb01a/propcache-0.2.1-cp313-cp313-win32.whl", hash = "sha256:ddfab44e4489bd79bda09d84c430677fc7f0a4939a73d2bba3073036f487a0a6", size = 39472 },
+ { url = "https://files.pythonhosted.org/packages/f4/33/d6f5420252a36034bc8a3a01171bc55b4bff5df50d1c63d9caa50693662f/propcache-0.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:556fc6c10989f19a179e4321e5d678db8eb2924131e64652a51fe83e4c3db0e1", size = 43363 },
+ { url = "https://files.pythonhosted.org/packages/41/b6/c5319caea262f4821995dca2107483b94a3345d4607ad797c76cb9c36bcc/propcache-0.2.1-py3-none-any.whl", hash = "sha256:52277518d6aae65536e9cea52d4e7fd2f7a66f4aa2d30ed3f2fcea620ace3c54", size = 11818 },
]
[[package]]
@@ -3536,16 +3541,16 @@ wheels = [
[[package]]
name = "protobuf"
-version = "5.28.3"
+version = "5.29.1"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/74/6e/e69eb906fddcb38f8530a12f4b410699972ab7ced4e21524ece9d546ac27/protobuf-5.28.3.tar.gz", hash = "sha256:64badbc49180a5e401f373f9ce7ab1d18b63f7dd4a9cdc43c92b9f0b481cef7b", size = 422479 }
+sdist = { url = "https://files.pythonhosted.org/packages/d2/4f/1639b7b1633d8fd55f216ba01e21bf2c43384ab25ef3ddb35d85a52033e8/protobuf-5.29.1.tar.gz", hash = "sha256:683be02ca21a6ffe80db6dd02c0b5b2892322c59ca57fd6c872d652cb80549cb", size = 424965 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/d1/c5/05163fad52d7c43e124a545f1372d18266db36036377ad29de4271134a6a/protobuf-5.28.3-cp310-abi3-win32.whl", hash = "sha256:0c4eec6f987338617072592b97943fdbe30d019c56126493111cf24344c1cc24", size = 419624 },
- { url = "https://files.pythonhosted.org/packages/9c/4c/4563ebe001ff30dca9d7ed12e471fa098d9759712980cde1fd03a3a44fb7/protobuf-5.28.3-cp310-abi3-win_amd64.whl", hash = "sha256:91fba8f445723fcf400fdbe9ca796b19d3b1242cd873907979b9ed71e4afe868", size = 431464 },
- { url = "https://files.pythonhosted.org/packages/1c/f2/baf397f3dd1d3e4af7e3f5a0382b868d25ac068eefe1ebde05132333436c/protobuf-5.28.3-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:a3f6857551e53ce35e60b403b8a27b0295f7d6eb63d10484f12bc6879c715687", size = 414743 },
- { url = "https://files.pythonhosted.org/packages/85/50/cd61a358ba1601f40e7d38bcfba22e053f40ef2c50d55b55926aecc8fec7/protobuf-5.28.3-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:3fa2de6b8b29d12c61911505d893afe7320ce7ccba4df913e2971461fa36d584", size = 316511 },
- { url = "https://files.pythonhosted.org/packages/5d/ae/3257b09328c0b4e59535e497b0c7537d4954038bdd53a2f0d2f49d15a7c4/protobuf-5.28.3-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:712319fbdddb46f21abb66cd33cb9e491a5763b2febd8f228251add221981135", size = 316624 },
- { url = "https://files.pythonhosted.org/packages/ad/c3/2377c159e28ea89a91cf1ca223f827ae8deccb2c9c401e5ca233cd73002f/protobuf-5.28.3-py3-none-any.whl", hash = "sha256:cee1757663fa32a1ee673434fcf3bf24dd54763c79690201208bafec62f19eed", size = 169511 },
+ { url = "https://files.pythonhosted.org/packages/50/c7/28669b04691a376cf7d0617d612f126aa0fff763d57df0142f9bf474c5b8/protobuf-5.29.1-cp310-abi3-win32.whl", hash = "sha256:22c1f539024241ee545cbcb00ee160ad1877975690b16656ff87dde107b5f110", size = 422706 },
+ { url = "https://files.pythonhosted.org/packages/e3/33/dc7a7712f457456b7e0b16420ab8ba1cc8686751d3f28392eb43d0029ab9/protobuf-5.29.1-cp310-abi3-win_amd64.whl", hash = "sha256:1fc55267f086dd4050d18ef839d7bd69300d0d08c2a53ca7df3920cc271a3c34", size = 434505 },
+ { url = "https://files.pythonhosted.org/packages/e5/39/44239fb1c6ec557e1731d996a5de89a9eb1ada7a92491fcf9c5d714052ed/protobuf-5.29.1-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:d473655e29c0c4bbf8b69e9a8fb54645bc289dead6d753b952e7aa660254ae18", size = 417822 },
+ { url = "https://files.pythonhosted.org/packages/fb/4a/ec56f101d38d4bef2959a9750209809242d86cf8b897db00f2f98bfa360e/protobuf-5.29.1-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:b5ba1d0e4c8a40ae0496d0e2ecfdbb82e1776928a205106d14ad6985a09ec155", size = 319572 },
+ { url = "https://files.pythonhosted.org/packages/04/52/c97c58a33b3d6c89a8138788576d372a90a6556f354799971c6b4d16d871/protobuf-5.29.1-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:8ee1461b3af56145aca2800e6a3e2f928108c749ba8feccc6f5dd0062c410c0d", size = 319671 },
+ { url = "https://files.pythonhosted.org/packages/3b/24/c8c49df8f6587719e1d400109b16c10c6902d0c9adddc8fff82840146f99/protobuf-5.29.1-py3-none-any.whl", hash = "sha256:32600ddb9c2a53dedc25b8581ea0f1fd8ea04956373c0c07577ce58d312522e0", size = 172547 },
]
[[package]]
@@ -3667,44 +3672,44 @@ wheels = [
[[package]]
name = "pyarrow"
-version = "18.0.0"
-source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/ec/41/6bfd027410ba2cc35da4682394fdc4285dc345b1d99f7bd55e96255d0c7d/pyarrow-18.0.0.tar.gz", hash = "sha256:a6aa027b1a9d2970cf328ccd6dbe4a996bc13c39fd427f502782f5bdb9ca20f5", size = 1118457 }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/9e/de/f11a218ecc75e7af307058cb68cecff52b261d00cb59abf3ecdb51863cf1/pyarrow-18.0.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:2333f93260674e185cfbf208d2da3007132572e56871f451ba1a556b45dae6e2", size = 29508785 },
- { url = "https://files.pythonhosted.org/packages/d1/c9/de5d8997aa1c140043006beefe527ed377c8820192f14866f31f3659ffcb/pyarrow-18.0.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:4c381857754da44326f3a49b8b199f7f87a51c2faacd5114352fc78de30d3aba", size = 30813634 },
- { url = "https://files.pythonhosted.org/packages/b8/07/d1c7e83ab5be551ecd6acafa9dfbabd486038d351ef99c25fa9e7736f582/pyarrow-18.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:603cd8ad4976568954598ef0a6d4ed3dfb78aff3d57fa8d6271f470f0ce7d34f", size = 39179444 },
- { url = "https://files.pythonhosted.org/packages/ad/ed/c601fb60c4360fcc49a40b8db5c600c17670a26e3a803d8c9ab01c7023c8/pyarrow-18.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58a62549a3e0bc9e03df32f350e10e1efb94ec6cf63e3920c3385b26663948ce", size = 40092678 },
- { url = "https://files.pythonhosted.org/packages/e8/8b/f9fee7f9a69896ad888e2545a1b75bae205acdcc9feb18671f5c48880820/pyarrow-18.0.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:bc97316840a349485fbb137eb8d0f4d7057e1b2c1272b1a20eebbbe1848f5122", size = 38590888 },
- { url = "https://files.pythonhosted.org/packages/90/d2/ea2413fcf338634530b71c617d45c87b004149575d142d906c0f92b618e0/pyarrow-18.0.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:2e549a748fa8b8715e734919923f69318c953e077e9c02140ada13e59d043310", size = 40025239 },
- { url = "https://files.pythonhosted.org/packages/d9/0b/7ef63050a163ea2cb14ca0506bae8a2f6aab6760857cb4a99a4a8a55de09/pyarrow-18.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:606e9a3dcb0f52307c5040698ea962685fb1c852d72379ee9412be7de9c5f9e2", size = 25102382 },
- { url = "https://files.pythonhosted.org/packages/d6/63/a4854246fb3d1387e176e2989d919b8186ce3806ca244fbed27217608708/pyarrow-18.0.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:d5795e37c0a33baa618c5e054cd61f586cf76850a251e2b21355e4085def6280", size = 29532160 },
- { url = "https://files.pythonhosted.org/packages/53/dc/9a6672fb35d36323f4548b08064fb264353024538f60adaedf0c6df6b31d/pyarrow-18.0.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:5f0510608ccd6e7f02ca8596962afb8c6cc84c453e7be0da4d85f5f4f7b0328a", size = 30844030 },
- { url = "https://files.pythonhosted.org/packages/8e/f9/cfcee70dcb48bc0fee6265a5d2502ea85ccdab54957fd2dd5b327dfc8807/pyarrow-18.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:616ea2826c03c16e87f517c46296621a7c51e30400f6d0a61be645f203aa2b93", size = 39177238 },
- { url = "https://files.pythonhosted.org/packages/17/de/cd37c379dc1aa379956b15d9c89ff920cf48c239f64fbed0ca97dffa3acc/pyarrow-18.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a1824f5b029ddd289919f354bc285992cb4e32da518758c136271cf66046ef22", size = 40089208 },
- { url = "https://files.pythonhosted.org/packages/dd/80/83453dcceaa49d7aa42b0b6aaa7a0797231b9aee1cc213f286e0be3bdf89/pyarrow-18.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:6dd1b52d0d58dd8f685ced9971eb49f697d753aa7912f0a8f50833c7a7426319", size = 38606715 },
- { url = "https://files.pythonhosted.org/packages/18/f4/5687ead1672920b5ed8840398551cc3a96a1389be68b68d18aca3944e525/pyarrow-18.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:320ae9bd45ad7ecc12ec858b3e8e462578de060832b98fc4d671dee9f10d9954", size = 40040879 },
- { url = "https://files.pythonhosted.org/packages/49/11/ea314ad45f45d3245f0768dba711fd3d5deb25a9e08af298d0924ab94aee/pyarrow-18.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:2c992716cffb1088414f2b478f7af0175fd0a76fea80841b1706baa8fb0ebaad", size = 25105360 },
- { url = "https://files.pythonhosted.org/packages/e4/ea/a7f77688e6c529723b37589af4db3e7179414e223878301907c5bd49d6bc/pyarrow-18.0.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:e7ab04f272f98ebffd2a0661e4e126036f6936391ba2889ed2d44c5006237802", size = 29493113 },
- { url = "https://files.pythonhosted.org/packages/79/8a/a3af902af623a1cf4f9d4d27d81e634caf1585a819b7530728a8147e391c/pyarrow-18.0.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:03f40b65a43be159d2f97fd64dc998f769d0995a50c00f07aab58b0b3da87e1f", size = 30833386 },
- { url = "https://files.pythonhosted.org/packages/46/1e/f38b22e12e2ce9ee7c9d805ce234f68b23a0568b9a6bea223e3a99ca0068/pyarrow-18.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:be08af84808dff63a76860847c48ec0416928a7b3a17c2f49a072cac7c45efbd", size = 39170798 },
- { url = "https://files.pythonhosted.org/packages/f8/fb/fd0ef3e0f03227ab183f8dc941f4ef59636d8c382e246954601dd29cf1b0/pyarrow-18.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c70c1965cde991b711a98448ccda3486f2a336457cf4ec4dca257a926e149c9", size = 40103326 },
- { url = "https://files.pythonhosted.org/packages/7c/bd/5de139adba486db5ccc1b7ecab51e328a9dce354c82c6d26c2f642b178d3/pyarrow-18.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:00178509f379415a3fcf855af020e3340254f990a8534294ec3cf674d6e255fd", size = 38583592 },
- { url = "https://files.pythonhosted.org/packages/8d/1f/9bb3b3a644892d631dbbe99053cdb5295092d2696b4bcd3d21f29624c689/pyarrow-18.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:a71ab0589a63a3e987beb2bc172e05f000a5c5be2636b4b263c44034e215b5d7", size = 40043128 },
- { url = "https://files.pythonhosted.org/packages/74/39/323621402c2b1ce7ba600d03c81cf9645b862350d7c495f3fcef37850d1d/pyarrow-18.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:fe92efcdbfa0bcf2fa602e466d7f2905500f33f09eb90bf0bcf2e6ca41b574c8", size = 25075300 },
- { url = "https://files.pythonhosted.org/packages/13/38/4a8f8e97301adbb51c0bae7e0bc39e6878609c9337543bbbd2e9b1b3046e/pyarrow-18.0.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:907ee0aa8ca576f5e0cdc20b5aeb2ad4d3953a3b4769fc4b499e00ef0266f02f", size = 29475921 },
- { url = "https://files.pythonhosted.org/packages/11/75/43aad9b0678dfcdf5cc4d632f0ead92abe5666ce5b5cc985abab75e0d410/pyarrow-18.0.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:66dcc216ebae2eb4c37b223feaf82f15b69d502821dde2da138ec5a3716e7463", size = 30811777 },
- { url = "https://files.pythonhosted.org/packages/1e/b7/477bcba6ff7e65d8045d0b6c04b36f12051385f533189617a652f551e742/pyarrow-18.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc1daf7c425f58527900876354390ee41b0ae962a73ad0959b9d829def583bb1", size = 39163582 },
- { url = "https://files.pythonhosted.org/packages/c8/a7/37be6828370a98b3ed1125daf41dc651b27e2a9506a3682da305db757f32/pyarrow-18.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:871b292d4b696b09120ed5bde894f79ee2a5f109cb84470546471df264cae136", size = 40095799 },
- { url = "https://files.pythonhosted.org/packages/5a/a0/a4eb68c3495c5e72b404c9106c4af2d02860b0a64bc9450023ed9a412c0b/pyarrow-18.0.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:082ba62bdcb939824ba1ce10b8acef5ab621da1f4c4805e07bfd153617ac19d4", size = 38575191 },
- { url = "https://files.pythonhosted.org/packages/95/1f/6c629156ed4b8e2262da57868930cbb8cffba318b8413043acd02db9ad97/pyarrow-18.0.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:2c664ab88b9766413197733c1720d3dcd4190e8fa3bbdc3710384630a0a7207b", size = 40031824 },
- { url = "https://files.pythonhosted.org/packages/00/4f/5add0884b3ee6f4f1875e9cd0e69a30905798fa1497a80ab6df4645b54b4/pyarrow-18.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:dc892be34dbd058e8d189b47db1e33a227d965ea8805a235c8a7286f7fd17d3a", size = 25068305 },
- { url = "https://files.pythonhosted.org/packages/84/f7/fa53f3062dd2e390b8b021ce2d8de064a141b4bffc2add05471b5b2ee0eb/pyarrow-18.0.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:28f9c39a56d2c78bf6b87dcc699d520ab850919d4a8c7418cd20eda49874a2ea", size = 29503390 },
- { url = "https://files.pythonhosted.org/packages/2b/d3/03bc8a5356d95098878c0fa076e69992c6abc212898cd7286cfeab0f2c60/pyarrow-18.0.0-cp313-cp313t-macosx_12_0_x86_64.whl", hash = "sha256:f1a198a50c409ab2d009fbf20956ace84567d67f2c5701511d4dd561fae6f32e", size = 30806216 },
- { url = "https://files.pythonhosted.org/packages/75/04/3b27d1352d3252abf42b0a83a2e7f6fcb7665cc98a5d3777f427eaa166bc/pyarrow-18.0.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5bd7fd32e3ace012d43925ea4fc8bd1b02cc6cc1e9813b518302950e89b5a22", size = 39086243 },
- { url = "https://files.pythonhosted.org/packages/30/97/861dfbe3987156f817f3d7e6feb239de1e085a6b576f62454b7bc42c2713/pyarrow-18.0.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:336addb8b6f5208be1b2398442c703a710b6b937b1a046065ee4db65e782ff5a", size = 40055188 },
- { url = "https://files.pythonhosted.org/packages/25/3a/14f024a1c8fb5ff67d79b616fe218bbfa06f23f198e762c6a900a843796a/pyarrow-18.0.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:45476490dd4adec5472c92b4d253e245258745d0ccaabe706f8d03288ed60a79", size = 38511444 },
- { url = "https://files.pythonhosted.org/packages/92/a2/81c1dd744b322c0c548f793deb521bf23500806d754128ddf6f978736dff/pyarrow-18.0.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:b46591222c864e7da7faa3b19455196416cd8355ff6c2cc2e65726a760a3c420", size = 40006508 },
+version = "18.1.0"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/7f/7b/640785a9062bb00314caa8a387abce547d2a420cf09bd6c715fe659ccffb/pyarrow-18.1.0.tar.gz", hash = "sha256:9386d3ca9c145b5539a1cfc75df07757dff870168c959b473a0bccbc3abc8c73", size = 1118671 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/1a/bb/8d4a1573f66e0684f190dd2b55fd0b97a7214de8882d58a3867e777bf640/pyarrow-18.1.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:e21488d5cfd3d8b500b3238a6c4b075efabc18f0f6d80b29239737ebd69caa6c", size = 29531620 },
+ { url = "https://files.pythonhosted.org/packages/30/90/893acfad917533b624a97b9e498c0e8393908508a0a72d624fe935e632bf/pyarrow-18.1.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:b516dad76f258a702f7ca0250885fc93d1fa5ac13ad51258e39d402bd9e2e1e4", size = 30836521 },
+ { url = "https://files.pythonhosted.org/packages/a3/2a/526545a7464b5fb2fa6e2c4bad16ca90e59e1843025c534fd907b7f73e5a/pyarrow-18.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f443122c8e31f4c9199cb23dca29ab9427cef990f283f80fe15b8e124bcc49b", size = 39213905 },
+ { url = "https://files.pythonhosted.org/packages/8a/77/4b3fab91a30e19e233e738d0c5eca5a8f6dd05758bc349a2ca262c65de79/pyarrow-18.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0a03da7f2758645d17b7b4f83c8bffeae5bbb7f974523fe901f36288d2eab71", size = 40128881 },
+ { url = "https://files.pythonhosted.org/packages/aa/e2/a88e16c5e45e562449c52305bd3bc2f9d704295322d3434656e7ccac1444/pyarrow-18.1.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:ba17845efe3aa358ec266cf9cc2800fa73038211fb27968bfa88acd09261a470", size = 38627517 },
+ { url = "https://files.pythonhosted.org/packages/6d/84/8037c20005ccc7b869726465be0957bd9c29cfc88612962030f08292ad06/pyarrow-18.1.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:3c35813c11a059056a22a3bef520461310f2f7eea5c8a11ef9de7062a23f8d56", size = 40060187 },
+ { url = "https://files.pythonhosted.org/packages/2a/38/d6435c723ff73df8ae74626ea778262fbcc2b9b0d1a4f3db915b61711b05/pyarrow-18.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:9736ba3c85129d72aefa21b4f3bd715bc4190fe4426715abfff90481e7d00812", size = 25118314 },
+ { url = "https://files.pythonhosted.org/packages/9e/4d/a4988e7d82f4fbc797715db4185939a658eeffb07a25bab7262bed1ea076/pyarrow-18.1.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:eaeabf638408de2772ce3d7793b2668d4bb93807deed1725413b70e3156a7854", size = 29554860 },
+ { url = "https://files.pythonhosted.org/packages/59/03/3a42c5c1e4bd4c900ab62aa1ff6b472bdb159ba8f1c3e5deadab7222244f/pyarrow-18.1.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:3b2e2239339c538f3464308fd345113f886ad031ef8266c6f004d49769bb074c", size = 30867076 },
+ { url = "https://files.pythonhosted.org/packages/75/7e/332055ac913373e89256dce9d14b7708f55f7bd5be631456c897f0237738/pyarrow-18.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f39a2e0ed32a0970e4e46c262753417a60c43a3246972cfc2d3eb85aedd01b21", size = 39212135 },
+ { url = "https://files.pythonhosted.org/packages/8c/64/5099cdb325828722ef7ffeba9a4696f238eb0cdeae227f831c2d77fcf1bd/pyarrow-18.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e31e9417ba9c42627574bdbfeada7217ad8a4cbbe45b9d6bdd4b62abbca4c6f6", size = 40125195 },
+ { url = "https://files.pythonhosted.org/packages/83/88/1938d783727db1b178ff71bc6a6143d7939e406db83a9ec23cad3dad325c/pyarrow-18.1.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:01c034b576ce0eef554f7c3d8c341714954be9b3f5d5bc7117006b85fcf302fe", size = 38641884 },
+ { url = "https://files.pythonhosted.org/packages/5e/b5/9e14e9f7590e0eaa435ecea84dabb137284a4dbba7b3c337b58b65b76d95/pyarrow-18.1.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:f266a2c0fc31995a06ebd30bcfdb7f615d7278035ec5b1cd71c48d56daaf30b0", size = 40076877 },
+ { url = "https://files.pythonhosted.org/packages/4d/a3/817ac7fe0891a2d66e247e223080f3a6a262d8aefd77e11e8c27e6acf4e1/pyarrow-18.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:d4f13eee18433f99adefaeb7e01d83b59f73360c231d4782d9ddfaf1c3fbde0a", size = 25119811 },
+ { url = "https://files.pythonhosted.org/packages/6a/50/12829e7111b932581e51dda51d5cb39207a056c30fe31ef43f14c63c4d7e/pyarrow-18.1.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:9f3a76670b263dc41d0ae877f09124ab96ce10e4e48f3e3e4257273cee61ad0d", size = 29514620 },
+ { url = "https://files.pythonhosted.org/packages/d1/41/468c944eab157702e96abab3d07b48b8424927d4933541ab43788bb6964d/pyarrow-18.1.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:da31fbca07c435be88a0c321402c4e31a2ba61593ec7473630769de8346b54ee", size = 30856494 },
+ { url = "https://files.pythonhosted.org/packages/68/f9/29fb659b390312a7345aeb858a9d9c157552a8852522f2c8bad437c29c0a/pyarrow-18.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:543ad8459bc438efc46d29a759e1079436290bd583141384c6f7a1068ed6f992", size = 39203624 },
+ { url = "https://files.pythonhosted.org/packages/6e/f6/19360dae44200e35753c5c2889dc478154cd78e61b1f738514c9f131734d/pyarrow-18.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0743e503c55be0fdb5c08e7d44853da27f19dc854531c0570f9f394ec9671d54", size = 40139341 },
+ { url = "https://files.pythonhosted.org/packages/bb/e6/9b3afbbcf10cc724312e824af94a2e993d8ace22994d823f5c35324cebf5/pyarrow-18.1.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:d4b3d2a34780645bed6414e22dda55a92e0fcd1b8a637fba86800ad737057e33", size = 38618629 },
+ { url = "https://files.pythonhosted.org/packages/3a/2e/3b99f8a3d9e0ccae0e961978a0d0089b25fb46ebbcfb5ebae3cca179a5b3/pyarrow-18.1.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:c52f81aa6f6575058d8e2c782bf79d4f9fdc89887f16825ec3a66607a5dd8e30", size = 40078661 },
+ { url = "https://files.pythonhosted.org/packages/76/52/f8da04195000099d394012b8d42c503d7041b79f778d854f410e5f05049a/pyarrow-18.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:0ad4892617e1a6c7a551cfc827e072a633eaff758fa09f21c4ee548c30bcaf99", size = 25092330 },
+ { url = "https://files.pythonhosted.org/packages/cb/87/aa4d249732edef6ad88899399047d7e49311a55749d3c373007d034ee471/pyarrow-18.1.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:84e314d22231357d473eabec709d0ba285fa706a72377f9cc8e1cb3c8013813b", size = 29497406 },
+ { url = "https://files.pythonhosted.org/packages/3c/c7/ed6adb46d93a3177540e228b5ca30d99fc8ea3b13bdb88b6f8b6467e2cb7/pyarrow-18.1.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:f591704ac05dfd0477bb8f8e0bd4b5dc52c1cadf50503858dce3a15db6e46ff2", size = 30835095 },
+ { url = "https://files.pythonhosted.org/packages/41/d7/ed85001edfb96200ff606943cff71d64f91926ab42828676c0fc0db98963/pyarrow-18.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:acb7564204d3c40babf93a05624fc6a8ec1ab1def295c363afc40b0c9e66c191", size = 39194527 },
+ { url = "https://files.pythonhosted.org/packages/59/16/35e28eab126342fa391593415d79477e89582de411bb95232f28b131a769/pyarrow-18.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:74de649d1d2ccb778f7c3afff6085bd5092aed4c23df9feeb45dd6b16f3811aa", size = 40131443 },
+ { url = "https://files.pythonhosted.org/packages/0c/95/e855880614c8da20f4cd74fa85d7268c725cf0013dc754048593a38896a0/pyarrow-18.1.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:f96bd502cb11abb08efea6dab09c003305161cb6c9eafd432e35e76e7fa9b90c", size = 38608750 },
+ { url = "https://files.pythonhosted.org/packages/54/9d/f253554b1457d4fdb3831b7bd5f8f00f1795585a606eabf6fec0a58a9c38/pyarrow-18.1.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:36ac22d7782554754a3b50201b607d553a8d71b78cdf03b33c1125be4b52397c", size = 40066690 },
+ { url = "https://files.pythonhosted.org/packages/2f/58/8912a2563e6b8273e8aa7b605a345bba5a06204549826f6493065575ebc0/pyarrow-18.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:25dbacab8c5952df0ca6ca0af28f50d45bd31c1ff6fcf79e2d120b4a65ee7181", size = 25081054 },
+ { url = "https://files.pythonhosted.org/packages/82/f9/d06ddc06cab1ada0c2f2fd205ac8c25c2701182de1b9c4bf7a0a44844431/pyarrow-18.1.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:6a276190309aba7bc9d5bd2933230458b3521a4317acfefe69a354f2fe59f2bc", size = 29525542 },
+ { url = "https://files.pythonhosted.org/packages/ab/94/8917e3b961810587ecbdaa417f8ebac0abb25105ae667b7aa11c05876976/pyarrow-18.1.0-cp313-cp313t-macosx_12_0_x86_64.whl", hash = "sha256:ad514dbfcffe30124ce655d72771ae070f30bf850b48bc4d9d3b25993ee0e386", size = 30829412 },
+ { url = "https://files.pythonhosted.org/packages/5e/e3/3b16c3190f3d71d3b10f6758d2d5f7779ef008c4fd367cedab3ed178a9f7/pyarrow-18.1.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aebc13a11ed3032d8dd6e7171eb6e86d40d67a5639d96c35142bd568b9299324", size = 39119106 },
+ { url = "https://files.pythonhosted.org/packages/1d/d6/5d704b0d25c3c79532f8c0639f253ec2803b897100f64bcb3f53ced236e5/pyarrow-18.1.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6cf5c05f3cee251d80e98726b5c7cc9f21bab9e9783673bac58e6dfab57ecc8", size = 40090940 },
+ { url = "https://files.pythonhosted.org/packages/37/29/366bc7e588220d74ec00e497ac6710c2833c9176f0372fe0286929b2d64c/pyarrow-18.1.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:11b676cd410cf162d3f6a70b43fb9e1e40affbc542a1e9ed3681895f2962d3d9", size = 38548177 },
+ { url = "https://files.pythonhosted.org/packages/c8/11/fabf6ecabb1fe5b7d96889228ca2a9158c4c3bb732e3b8ee3f7f6d40b703/pyarrow-18.1.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:b76130d835261b38f14fc41fdfb39ad8d672afb84c447126b84d5472244cfaba", size = 40043567 },
]
[[package]]
@@ -3851,11 +3856,11 @@ wheels = [
[[package]]
name = "pyjwt"
-version = "2.10.0"
+version = "2.10.1"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/b5/05/324952ded002de746f87b21066b9373080bb5058f64cf01c4d62784b8186/pyjwt-2.10.0.tar.gz", hash = "sha256:7628a7eb7938959ac1b26e819a1df0fd3259505627b575e4bad6d08f76db695c", size = 87687 }
+sdist = { url = "https://files.pythonhosted.org/packages/e7/46/bd74733ff231675599650d3e47f361794b22ef3e3770998dda30d3b63726/pyjwt-2.10.1.tar.gz", hash = "sha256:3cc5772eb20009233caf06e9d8a0577824723b44e6648ee0a2aedb6cf9381953", size = 87785 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/6f/1d/ef9b066e7ef60494c94173dc9f0b9adf5d9ec5f888109f5c669f53d4144b/PyJWT-2.10.0-py3-none-any.whl", hash = "sha256:543b77207db656de204372350926bed5a86201c4cbff159f623f79c7bb487a15", size = 23002 },
+ { url = "https://files.pythonhosted.org/packages/61/ad/689f02752eeec26aed679477e80e632ef1b682313be70793d798c1d5fc8f/PyJWT-2.10.1-py3-none-any.whl", hash = "sha256:dcdd193e30abefd5debf142f9adfcdd2b58004e644f25406ffaebd50bd98dacb", size = 22997 },
]
[package.optional-dependencies]
@@ -3871,20 +3876,20 @@ sdist = { url = "https://files.pythonhosted.org/packages/ce/af/409edba35fc597f1e
[[package]]
name = "pymilvus"
-version = "2.4.9"
+version = "2.5.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "environs", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "grpcio", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "milvus-lite", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" },
{ name = "pandas", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "protobuf", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
+ { name = "python-dotenv", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "setuptools", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "ujson", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/1c/e4/208ac8d384bdcfa1a2983a6394705edccfd15a99f6f0e478ea0400fc1c73/pymilvus-2.4.9.tar.gz", hash = "sha256:0937663700007c23a84cfc0656160b301f6ff9247aaec4c96d599a6b43572136", size = 1219775 }
+sdist = { url = "https://files.pythonhosted.org/packages/f7/3d/e6b593cf456e4300e3aa58b76e55f392166c5df2ea3605666ad6200503fb/pymilvus-2.5.0.tar.gz", hash = "sha256:4da14a3bd957a4921166f9355fd1f1ac5c5e4e80b46f12f64d9c9a6dcb8cb395", size = 1238729 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/0e/98/0d79ebcc04e8a469f796e644302edee4368927a268f11afc298b6bd76e1f/pymilvus-2.4.9-py3-none-any.whl", hash = "sha256:45313607d2c164064bdc44e0f933cb6d6afa92e9efcc7f357c5240c57db58fbe", size = 201144 },
+ { url = "https://files.pythonhosted.org/packages/01/f1/76af6c8e1481879f5e0c0d885ab899ab8869fd939b27ac7a0b6c3b3b4ebe/pymilvus-2.5.0-py3-none-any.whl", hash = "sha256:a0e8653d8fe78019abfda79b3404ef7423f312501e8cbd7dc728051ce8732652", size = 212848 },
]
[[package]]
@@ -3969,7 +3974,7 @@ wheels = [
[[package]]
name = "pytest"
-version = "8.3.3"
+version = "8.3.4"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "colorama", marker = "sys_platform == 'win32'" },
@@ -3979,9 +3984,9 @@ dependencies = [
{ name = "pluggy", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "tomli", marker = "(python_full_version < '3.11' and sys_platform == 'darwin') or (python_full_version < '3.11' and sys_platform == 'linux') or (python_full_version < '3.11' and sys_platform == 'win32')" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/8b/6c/62bbd536103af674e227c41a8f3dcd022d591f6eed5facb5a0f31ee33bbc/pytest-8.3.3.tar.gz", hash = "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181", size = 1442487 }
+sdist = { url = "https://files.pythonhosted.org/packages/05/35/30e0d83068951d90a01852cb1cef56e5d8a09d20c7f511634cc2f7e0372a/pytest-8.3.4.tar.gz", hash = "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761", size = 1445919 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/6b/77/7440a06a8ead44c7757a64362dd22df5760f9b12dc5f11b6188cd2fc27a0/pytest-8.3.3-py3-none-any.whl", hash = "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2", size = 342341 },
+ { url = "https://files.pythonhosted.org/packages/11/92/76a1c94d3afee238333bc0a42b82935dd8f9cf8ce9e336ff87ee14d9e1cf/pytest-8.3.4-py3-none-any.whl", hash = "sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6", size = 343083 },
]
[[package]]
@@ -4009,6 +4014,18 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/36/3b/48e79f2cd6a61dbbd4807b4ed46cb564b4fd50a76166b1c4ea5c1d9e2371/pytest_cov-6.0.0-py3-none-any.whl", hash = "sha256:eee6f1b9e61008bd34975a4d5bab25801eb31898b032dd55addc93e96fcaaa35", size = 22949 },
]
+[[package]]
+name = "pytest-timeout"
+version = "2.3.1"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "pytest", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/93/0d/04719abc7a4bdb3a7a1f968f24b0f5253d698c9cc94975330e9d3145befb/pytest-timeout-2.3.1.tar.gz", hash = "sha256:12397729125c6ecbdaca01035b9e5239d4db97352320af155b3f5de1ba5165d9", size = 17697 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/03/27/14af9ef8321f5edc7527e47def2a21d8118c6f329a9342cc61387a0c0599/pytest_timeout-2.3.1-py3-none-any.whl", hash = "sha256:68188cb703edfc6a18fad98dc25a3c61e9f24d644b0b70f33af545219fc7813e", size = 14148 },
+]
+
[[package]]
name = "pytest-xdist"
version = "3.6.1"
@@ -4029,14 +4046,14 @@ psutil = [
[[package]]
name = "python-dateutil"
-version = "2.8.2"
+version = "2.9.0.post0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "six", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/4c/c4/13b4776ea2d76c115c1d1b84579f3764ee6d57204f6be27119f13a61d0a9/python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", size = 357324 }
+sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/36/7a/87837f39d0296e723bb9b62bbb257d0355c7f6128853c78955f57342a56d/python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9", size = 247702 },
+ { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892 },
]
[[package]]
@@ -4213,14 +4230,14 @@ wheels = [
[[package]]
name = "redis"
-version = "5.2.0"
+version = "5.2.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "async-timeout", marker = "(python_full_version < '3.11.3' and sys_platform == 'darwin') or (python_full_version < '3.11.3' and sys_platform == 'linux') or (python_full_version < '3.11.3' and sys_platform == 'win32')" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/53/17/2f4a87ffa4cd93714cf52edfa3ea94589e9de65f71e9f99cbcfa84347a53/redis-5.2.0.tar.gz", hash = "sha256:0b1087665a771b1ff2e003aa5bdd354f15a70c9e25d5a7dbf9c722c16528a7b0", size = 4607878 }
+sdist = { url = "https://files.pythonhosted.org/packages/47/da/d283a37303a995cd36f8b92db85135153dc4f7a8e4441aa827721b442cfb/redis-5.2.1.tar.gz", hash = "sha256:16f2e22dff21d5125e8481515e386711a34cbec50f0e44413dd7d9c060a54e0f", size = 4608355 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/12/f5/ffa560ecc4bafbf25f7961c3d6f50d627a90186352e27e7d0ba5b1f6d87d/redis-5.2.0-py3-none-any.whl", hash = "sha256:ae174f2bb3b1bf2b09d54bf3e51fbc1469cf6c10aa03e21141f51969801a7897", size = 261428 },
+ { url = "https://files.pythonhosted.org/packages/3c/5f/fa26b9b2672cbe30e07d9a5bdf39cf16e3b80b42916757c5f92bca88e4ba/redis-5.2.1-py3-none-any.whl", hash = "sha256:ee7e1056b9aea0f04c6c2ed59452947f34c4940ee025f5dd83e6a6418b6989e4", size = 261502 },
]
[package.optional-dependencies]
@@ -4230,7 +4247,7 @@ hiredis = [
[[package]]
name = "redisvl"
-version = "0.3.6"
+version = "0.3.7"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "coloredlogs", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
@@ -4242,9 +4259,9 @@ dependencies = [
{ name = "tabulate", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "tenacity", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/a0/ca/0194d860791f852414b74c915f7584c932cffabcb871d23f28cf473b00b8/redisvl-0.3.6.tar.gz", hash = "sha256:a41f753601880822627eecfb997f065ed17cdf9717a9fb108a0ae6f3785795fc", size = 71318 }
+sdist = { url = "https://files.pythonhosted.org/packages/65/da/22f760f6a40285243012d454a6cbf1eb039792dbf19ce126a5bd147fd5d6/redisvl-0.3.7.tar.gz", hash = "sha256:b237043e973a10d0c680b4d8301f4e3589e5dbe1d328ee1d35dbd7e5617a0c8d", size = 72561 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/d2/a7/7049c4d2d1ac8bc879cd1ce124bae70beb1cb5ef7ca74bdcf33a2046c7c7/redisvl-0.3.6-py3-none-any.whl", hash = "sha256:9fe24d6eb18026b5257deed147d38345548afe5722e66b76d1851d9f98439ff9", size = 96108 },
+ { url = "https://files.pythonhosted.org/packages/c1/9f/7015d67dee68f858c56b980ba18942a4e27d1f474ca27ec870989e768bca/redisvl-0.3.7-py3-none-any.whl", hash = "sha256:b841e36a14613e79922ceef31f6c7883b21ecbfaa8cf6de8413b5d70a844866a", size = 98407 },
]
[[package]]
@@ -4385,74 +4402,87 @@ wheels = [
[[package]]
name = "rpds-py"
-version = "0.21.0"
-source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/23/80/afdf96daf9b27d61483ef05b38f282121db0e38f5fd4e89f40f5c86c2a4f/rpds_py-0.21.0.tar.gz", hash = "sha256:ed6378c9d66d0de903763e7706383d60c33829581f0adff47b6535f1802fa6db", size = 26335 }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/4c/a4/91747f902f166c589f1753cbd8bda713aceb75817c8bb597058a38aa85e6/rpds_py-0.21.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:a017f813f24b9df929674d0332a374d40d7f0162b326562daae8066b502d0590", size = 327473 },
- { url = "https://files.pythonhosted.org/packages/8a/72/75a30a07f96ae210e732c50c7339e742945fdc83661e65a1c80fcf39ceea/rpds_py-0.21.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:20cc1ed0bcc86d8e1a7e968cce15be45178fd16e2ff656a243145e0b439bd250", size = 318359 },
- { url = "https://files.pythonhosted.org/packages/dc/63/87d469d7628cd71366fd1baa32573acd37385843b8d39b6e2b69f16eec48/rpds_py-0.21.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad116dda078d0bc4886cb7840e19811562acdc7a8e296ea6ec37e70326c1b41c", size = 361377 },
- { url = "https://files.pythonhosted.org/packages/dd/b1/78da258a4cafa1d8606a21b7d9ed4cc9d72d1c663583060ab02444b9bd9c/rpds_py-0.21.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:808f1ac7cf3b44f81c9475475ceb221f982ef548e44e024ad5f9e7060649540e", size = 369494 },
- { url = "https://files.pythonhosted.org/packages/44/47/6fdb7273cc80066d434e83cd49a3cfedb6d96ff70908480870877fb64b1e/rpds_py-0.21.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de552f4a1916e520f2703ec474d2b4d3f86d41f353e7680b597512ffe7eac5d0", size = 403639 },
- { url = "https://files.pythonhosted.org/packages/5f/4a/8c6c46afc050b5243be579be7f7b194d00b9731e83cc0845e9c70db127bb/rpds_py-0.21.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:efec946f331349dfc4ae9d0e034c263ddde19414fe5128580f512619abed05f1", size = 430551 },
- { url = "https://files.pythonhosted.org/packages/d4/31/2dd40abc26fc0fc037b86006583276dc375d38ac821d4ca2394274e8045b/rpds_py-0.21.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b80b4690bbff51a034bfde9c9f6bf9357f0a8c61f548942b80f7b66356508bf5", size = 360795 },
- { url = "https://files.pythonhosted.org/packages/9d/2a/665b9ebef76f54764f1437ac03373a95a69480b7ce56c480360f88730cae/rpds_py-0.21.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:085ed25baac88953d4283e5b5bd094b155075bb40d07c29c4f073e10623f9f2e", size = 382663 },
- { url = "https://files.pythonhosted.org/packages/e8/8c/e056f0c887d29baa256f8c8d7f7079a72d80395c35c14219de45ab19dce2/rpds_py-0.21.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:daa8efac2a1273eed2354397a51216ae1e198ecbce9036fba4e7610b308b6153", size = 546477 },
- { url = "https://files.pythonhosted.org/packages/33/11/588568f6c2ed5c9d6d121c188c71ca0f76e0e369a6d66f835737189e5a75/rpds_py-0.21.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:95a5bad1ac8a5c77b4e658671642e4af3707f095d2b78a1fdd08af0dfb647624", size = 549477 },
- { url = "https://files.pythonhosted.org/packages/15/86/c1401e2f70fbdf963c2ac9157994ebeb00c101ddf87975a90507f27cb2f4/rpds_py-0.21.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3e53861b29a13d5b70116ea4230b5f0f3547b2c222c5daa090eb7c9c82d7f664", size = 527966 },
- { url = "https://files.pythonhosted.org/packages/66/f2/452420f1493112825e975c87b3b4fd8b334e0e228cdb641597a92e0c3267/rpds_py-0.21.0-cp310-none-win32.whl", hash = "sha256:ea3a6ac4d74820c98fcc9da4a57847ad2cc36475a8bd9683f32ab6d47a2bd682", size = 200978 },
- { url = "https://files.pythonhosted.org/packages/35/4c/674b2e2d75607acdbc7a162ace36dcaad225c9e760cef5defa5c0f5ddd2d/rpds_py-0.21.0-cp310-none-win_amd64.whl", hash = "sha256:b8f107395f2f1d151181880b69a2869c69e87ec079c49c0016ab96860b6acbe5", size = 218549 },
- { url = "https://files.pythonhosted.org/packages/80/61/615929ea79f5fd0b3aca000411a33bcc1753607ccc1af0ce7b05b56e6e56/rpds_py-0.21.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:5555db3e618a77034954b9dc547eae94166391a98eb867905ec8fcbce1308d95", size = 327267 },
- { url = "https://files.pythonhosted.org/packages/a5/f5/28e89dda55b731d78cbfea284dc9789d265a8a06523f0adf60e9b05cade7/rpds_py-0.21.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:97ef67d9bbc3e15584c2f3c74bcf064af36336c10d2e21a2131e123ce0f924c9", size = 318227 },
- { url = "https://files.pythonhosted.org/packages/e4/ef/eb90feb3e384543c48e2f867551075c43a429aa4c9a44e9c4bd71f4f786b/rpds_py-0.21.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ab2c2a26d2f69cdf833174f4d9d86118edc781ad9a8fa13970b527bf8236027", size = 361235 },
- { url = "https://files.pythonhosted.org/packages/ed/e7/8ea2d3d3398266c5c8ddd957d86003493b6d14f8f158b726dd09c8f43dee/rpds_py-0.21.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4e8921a259f54bfbc755c5bbd60c82bb2339ae0324163f32868f63f0ebb873d9", size = 369467 },
- { url = "https://files.pythonhosted.org/packages/51/25/a286abda9da7820c971a0b1abcf1d31fb81c44a1088a128ad26c77206622/rpds_py-0.21.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8a7ff941004d74d55a47f916afc38494bd1cfd4b53c482b77c03147c91ac0ac3", size = 403482 },
- { url = "https://files.pythonhosted.org/packages/7a/1e/9c3c0463fe142456dcd9e9be0ffd15b66a77adfcdf3ecf94fa2b12d95fcb/rpds_py-0.21.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5145282a7cd2ac16ea0dc46b82167754d5e103a05614b724457cffe614f25bd8", size = 429943 },
- { url = "https://files.pythonhosted.org/packages/e1/fd/f1fd7e77fef8e5a442ce7fd80ba957730877515fe18d7195f646408a60ce/rpds_py-0.21.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de609a6f1b682f70bb7163da745ee815d8f230d97276db049ab447767466a09d", size = 360437 },
- { url = "https://files.pythonhosted.org/packages/55/83/347932db075847f4f8172c3b53ad70fe725edd9058f0d4098080ad45e3bc/rpds_py-0.21.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:40c91c6e34cf016fa8e6b59d75e3dbe354830777fcfd74c58b279dceb7975b75", size = 382400 },
- { url = "https://files.pythonhosted.org/packages/22/9b/2a6eeab4e6752adba751cfee19bdf35d11e1073509f74883cbf14d42d682/rpds_py-0.21.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d2132377f9deef0c4db89e65e8bb28644ff75a18df5293e132a8d67748397b9f", size = 546560 },
- { url = "https://files.pythonhosted.org/packages/3c/19/6e51a141fe6f017d07b7d899b10a4af9e0f268deffacc1107d70fcd9257b/rpds_py-0.21.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0a9e0759e7be10109645a9fddaaad0619d58c9bf30a3f248a2ea57a7c417173a", size = 549334 },
- { url = "https://files.pythonhosted.org/packages/cf/40/4ae09a07e4531278e6bee41ef3e4f166c23468135afc2c6c98917bfc28e6/rpds_py-0.21.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9e20da3957bdf7824afdd4b6eeb29510e83e026473e04952dca565170cd1ecc8", size = 527855 },
- { url = "https://files.pythonhosted.org/packages/eb/45/2135be31543677687a426117c56d8b33e8b581bc4a8b7abfa53721012162/rpds_py-0.21.0-cp311-none-win32.whl", hash = "sha256:f71009b0d5e94c0e86533c0b27ed7cacc1239cb51c178fd239c3cfefefb0400a", size = 200968 },
- { url = "https://files.pythonhosted.org/packages/68/fa/e66c3aaf13ef91c203ba47c102cd7c5dca92dde8837e5093577968d6d36d/rpds_py-0.21.0-cp311-none-win_amd64.whl", hash = "sha256:e168afe6bf6ab7ab46c8c375606298784ecbe3ba31c0980b7dcbb9631dcba97e", size = 218502 },
- { url = "https://files.pythonhosted.org/packages/d9/5a/3aa6f5d8bacbe4f55ebf9a3c9628dad40cdb57f845124cf13c78895ea156/rpds_py-0.21.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:30b912c965b2aa76ba5168fd610087bad7fcde47f0a8367ee8f1876086ee6d1d", size = 329516 },
- { url = "https://files.pythonhosted.org/packages/df/c0/67c8c8ac850c6e3681e356a59d46315bf73bc77cb50c9a32db8ae44325b7/rpds_py-0.21.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ca9989d5d9b1b300bc18e1801c67b9f6d2c66b8fd9621b36072ed1df2c977f72", size = 321245 },
- { url = "https://files.pythonhosted.org/packages/64/83/bf31341f21fa594035891ff04a497dc86b210cc1a903a9cc01b097cc614f/rpds_py-0.21.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f54e7106f0001244a5f4cf810ba8d3f9c542e2730821b16e969d6887b664266", size = 363951 },
- { url = "https://files.pythonhosted.org/packages/a2/e1/8218bba36737621262df316fbb729639af25ff611cc07bfeaadc1bfa6292/rpds_py-0.21.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fed5dfefdf384d6fe975cc026886aece4f292feaf69d0eeb716cfd3c5a4dd8be", size = 373113 },
- { url = "https://files.pythonhosted.org/packages/39/8d/4afcd688e3ad33ec273900f42e6a41e9bd9f43cfc509b6d498683d2d0338/rpds_py-0.21.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:590ef88db231c9c1eece44dcfefd7515d8bf0d986d64d0caf06a81998a9e8cab", size = 405944 },
- { url = "https://files.pythonhosted.org/packages/fa/65/3326efa721b6ecd70262aab69a26c9bc19398cdb0a2a416ef30b58326460/rpds_py-0.21.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f983e4c2f603c95dde63df633eec42955508eefd8d0f0e6d236d31a044c882d7", size = 422874 },
- { url = "https://files.pythonhosted.org/packages/31/fb/48a647d0afab74289dd21a4128002d58684c22600a22c4bfb76cb9e3bfb0/rpds_py-0.21.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b229ce052ddf1a01c67d68166c19cb004fb3612424921b81c46e7ea7ccf7c3bf", size = 364227 },
- { url = "https://files.pythonhosted.org/packages/f1/b0/1cdd179d7382dd52d65b1fd19c54d090b6bd0688dfbe259bb5ab7548c359/rpds_py-0.21.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ebf64e281a06c904a7636781d2e973d1f0926a5b8b480ac658dc0f556e7779f4", size = 386447 },
- { url = "https://files.pythonhosted.org/packages/dc/41/84ace07f31aac3a96b73a374d89106cf252f7d3274e7cae85d17a27c602d/rpds_py-0.21.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:998a8080c4495e4f72132f3d66ff91f5997d799e86cec6ee05342f8f3cda7dca", size = 549386 },
- { url = "https://files.pythonhosted.org/packages/33/ce/bf51bc5a3aa539171ea8c7737ab5ac06cef54c79b6b2a0511afc41533c89/rpds_py-0.21.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:98486337f7b4f3c324ab402e83453e25bb844f44418c066623db88e4c56b7c7b", size = 554777 },
- { url = "https://files.pythonhosted.org/packages/76/b1/950568e55a94c2979c2b61ec24e76e648a525fbc7551ccfc1f2841e39d44/rpds_py-0.21.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a78d8b634c9df7f8d175451cfeac3810a702ccb85f98ec95797fa98b942cea11", size = 530918 },
- { url = "https://files.pythonhosted.org/packages/78/84/93f00e3613426c8a7a9ca16782d2828f2ac55296dd5c6b599379d9f59ee2/rpds_py-0.21.0-cp312-none-win32.whl", hash = "sha256:a58ce66847711c4aa2ecfcfaff04cb0327f907fead8945ffc47d9407f41ff952", size = 203112 },
- { url = "https://files.pythonhosted.org/packages/e6/08/7a186847dd78881a781d2be9b42c8e49c3261c0f4a6d0289ba9a1e4cde71/rpds_py-0.21.0-cp312-none-win_amd64.whl", hash = "sha256:e860f065cc4ea6f256d6f411aba4b1251255366e48e972f8a347cf88077b24fd", size = 220735 },
- { url = "https://files.pythonhosted.org/packages/32/3a/e69ec108eefb9b1f19ee00dde7a800b485942e62b123f01d9156a6d8569c/rpds_py-0.21.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:ee4eafd77cc98d355a0d02f263efc0d3ae3ce4a7c24740010a8b4012bbb24937", size = 329206 },
- { url = "https://files.pythonhosted.org/packages/f6/c0/fa689498fa3415565306398c8d2a596207c2a13d3cc03724f32514bddfbc/rpds_py-0.21.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:688c93b77e468d72579351a84b95f976bd7b3e84aa6686be6497045ba84be560", size = 320245 },
- { url = "https://files.pythonhosted.org/packages/68/d0/466b61007005f1b2fd8501f23e4bdee4d71c7381b61358750920d1882ac9/rpds_py-0.21.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c38dbf31c57032667dd5a2f0568ccde66e868e8f78d5a0d27dcc56d70f3fcd3b", size = 363585 },
- { url = "https://files.pythonhosted.org/packages/1e/e2/787ea3a0f4b197893c62c254e6f14929c40bbcff86922928ac4eafaa8edf/rpds_py-0.21.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2d6129137f43f7fa02d41542ffff4871d4aefa724a5fe38e2c31a4e0fd343fb0", size = 372302 },
- { url = "https://files.pythonhosted.org/packages/b5/ef/99f2cfe6aa128c21f1b30c66ecd348cbd59792953ca35eeb6efa38b88aa1/rpds_py-0.21.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:520ed8b99b0bf86a176271f6fe23024323862ac674b1ce5b02a72bfeff3fff44", size = 405344 },
- { url = "https://files.pythonhosted.org/packages/30/3c/9d12d0b76ecfe80a7ba4770459828dda495d72b18cafd6dfd54c67b2e282/rpds_py-0.21.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aaeb25ccfb9b9014a10eaf70904ebf3f79faaa8e60e99e19eef9f478651b9b74", size = 422322 },
- { url = "https://files.pythonhosted.org/packages/f9/22/387aec1cd6e124adbc3b1f40c4e4152c3963ae47d78d3ca650102ea72c4f/rpds_py-0.21.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af04ac89c738e0f0f1b913918024c3eab6e3ace989518ea838807177d38a2e94", size = 363739 },
- { url = "https://files.pythonhosted.org/packages/d1/3e/0ad65b776db13d13f002ab363fe3821cd1adec500d8e05e0a81047a75f9d/rpds_py-0.21.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b9b76e2afd585803c53c5b29e992ecd183f68285b62fe2668383a18e74abe7a3", size = 386579 },
- { url = "https://files.pythonhosted.org/packages/4f/3b/c68c1067b24a7df47edcc0325a825908601aba399e2d372a156edc631ad1/rpds_py-0.21.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5afb5efde74c54724e1a01118c6e5c15e54e642c42a1ba588ab1f03544ac8c7a", size = 548924 },
- { url = "https://files.pythonhosted.org/packages/ab/1c/35f1a5cce4bca71c49664f00140010a96b126e5f443ebaf6db741c25b9b7/rpds_py-0.21.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:52c041802a6efa625ea18027a0723676a778869481d16803481ef6cc02ea8cb3", size = 554217 },
- { url = "https://files.pythonhosted.org/packages/c8/d0/48154c152f9adb8304b21d867d28e79be3b352633fb195c03c7107a4da9a/rpds_py-0.21.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ee1e4fc267b437bb89990b2f2abf6c25765b89b72dd4a11e21934df449e0c976", size = 530540 },
- { url = "https://files.pythonhosted.org/packages/50/e8/78847f4e112e99fd5b7bc30fea3e4a44c20b811473d6755f944c5bf0aec7/rpds_py-0.21.0-cp313-none-win32.whl", hash = "sha256:0c025820b78817db6a76413fff6866790786c38f95ea3f3d3c93dbb73b632202", size = 202604 },
- { url = "https://files.pythonhosted.org/packages/60/31/083e6337775e133fb0217ed0ab0752380efa6e5112f2250d592d4135a228/rpds_py-0.21.0-cp313-none-win_amd64.whl", hash = "sha256:320c808df533695326610a1b6a0a6e98f033e49de55d7dc36a13c8a30cfa756e", size = 220448 },
- { url = "https://files.pythonhosted.org/packages/ff/d3/ffb04445d29c03d380047c62bed01b979adb9204424e2c833817012f679e/rpds_py-0.21.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:6b4ef7725386dc0762857097f6b7266a6cdd62bfd209664da6712cb26acef035", size = 328265 },
- { url = "https://files.pythonhosted.org/packages/dc/9d/894ff29a2be8f85fd1acff6e0c1b52b629aee019da8651125af9ee4894e1/rpds_py-0.21.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:6bc0e697d4d79ab1aacbf20ee5f0df80359ecf55db33ff41481cf3e24f206919", size = 319238 },
- { url = "https://files.pythonhosted.org/packages/43/3d/0e5b835c22933a5bdc4413e4a91de55a8c1ef33f55eb2514a5cf24729173/rpds_py-0.21.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da52d62a96e61c1c444f3998c434e8b263c384f6d68aca8274d2e08d1906325c", size = 362136 },
- { url = "https://files.pythonhosted.org/packages/67/81/c9f29da910ac19758f170633c0937fc2f0898b84389bd05bfc255c985f19/rpds_py-0.21.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:98e4fe5db40db87ce1c65031463a760ec7906ab230ad2249b4572c2fc3ef1f9f", size = 370411 },
- { url = "https://files.pythonhosted.org/packages/a8/df/b989044f90b81093e454eb54799e7ee5b085ebf957a75d07d5e21eac2fb5/rpds_py-0.21.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:30bdc973f10d28e0337f71d202ff29345320f8bc49a31c90e6c257e1ccef4333", size = 404598 },
- { url = "https://files.pythonhosted.org/packages/8f/09/f79cd575f503932f41138c4bec4c902eb3b71ea8570436688145cc77b8ef/rpds_py-0.21.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:faa5e8496c530f9c71f2b4e1c49758b06e5f4055e17144906245c99fa6d45356", size = 430224 },
- { url = "https://files.pythonhosted.org/packages/34/46/7fae3500bc188df2feee09dd72df262b97d31e8e4bd2ff4a8be4e28bf1d3/rpds_py-0.21.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32eb88c30b6a4f0605508023b7141d043a79b14acb3b969aa0b4f99b25bc7d4a", size = 361660 },
- { url = "https://files.pythonhosted.org/packages/5b/1d/d850242d30e68f99ad80815576f38b378b5aba393613e3357ed5e593499e/rpds_py-0.21.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a89a8ce9e4e75aeb7fa5d8ad0f3fecdee813802592f4f46a15754dcb2fd6b061", size = 384008 },
- { url = "https://files.pythonhosted.org/packages/c9/16/df4cfd1de216c25de24f8631f17380f8edee92201ec7810d1e2ba1dd9f85/rpds_py-0.21.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:241e6c125568493f553c3d0fdbb38c74babf54b45cef86439d4cd97ff8feb34d", size = 546855 },
- { url = "https://files.pythonhosted.org/packages/c0/b8/03d4561095d4fbf2ab62ed651a2b5cb674fe5245b1ab2f7909e8056bd014/rpds_py-0.21.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:3b766a9f57663396e4f34f5140b3595b233a7b146e94777b97a8413a1da1be18", size = 550599 },
- { url = "https://files.pythonhosted.org/packages/f4/54/d93867e2bf4acf57314798181faf3bd7d1a4f51a3aa81cb6211d56f74d3f/rpds_py-0.21.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:af4a644bf890f56e41e74be7d34e9511e4954894d544ec6b8efe1e21a1a8da6c", size = 528963 },
- { url = "https://files.pythonhosted.org/packages/66/86/6f72984a284d720d84fba5ee7b0d1b0d320978b516497cbfd6e335e95a3e/rpds_py-0.21.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:3e30a69a706e8ea20444b98a49f386c17b26f860aa9245329bab0851ed100677", size = 219621 },
+version = "0.22.3"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/01/80/cce854d0921ff2f0a9fa831ba3ad3c65cee3a46711addf39a2af52df2cfd/rpds_py-0.22.3.tar.gz", hash = "sha256:e32fee8ab45d3c2db6da19a5323bc3362237c8b653c70194414b892fd06a080d", size = 26771 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/42/2a/ead1d09e57449b99dcc190d8d2323e3a167421d8f8fdf0f217c6f6befe47/rpds_py-0.22.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:6c7b99ca52c2c1752b544e310101b98a659b720b21db00e65edca34483259967", size = 359514 },
+ { url = "https://files.pythonhosted.org/packages/8f/7e/1254f406b7793b586c68e217a6a24ec79040f85e030fff7e9049069284f4/rpds_py-0.22.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:be2eb3f2495ba669d2a985f9b426c1797b7d48d6963899276d22f23e33d47e37", size = 349031 },
+ { url = "https://files.pythonhosted.org/packages/aa/da/17c6a2c73730d426df53675ff9cc6653ac7a60b6438d03c18e1c822a576a/rpds_py-0.22.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70eb60b3ae9245ddea20f8a4190bd79c705a22f8028aaf8bbdebe4716c3fab24", size = 381485 },
+ { url = "https://files.pythonhosted.org/packages/aa/13/2dbacd820466aa2a3c4b747afb18d71209523d353cf865bf8f4796c969ea/rpds_py-0.22.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4041711832360a9b75cfb11b25a6a97c8fb49c07b8bd43d0d02b45d0b499a4ff", size = 386794 },
+ { url = "https://files.pythonhosted.org/packages/6d/62/96905d0a35ad4e4bc3c098b2f34b2e7266e211d08635baa690643d2227be/rpds_py-0.22.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:64607d4cbf1b7e3c3c8a14948b99345eda0e161b852e122c6bb71aab6d1d798c", size = 423523 },
+ { url = "https://files.pythonhosted.org/packages/eb/1b/d12770f2b6a9fc2c3ec0d810d7d440f6d465ccd8b7f16ae5385952c28b89/rpds_py-0.22.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e69b0a0e2537f26d73b4e43ad7bc8c8efb39621639b4434b76a3de50c6966e", size = 446695 },
+ { url = "https://files.pythonhosted.org/packages/4d/cf/96f1fd75512a017f8e07408b6d5dbeb492d9ed46bfe0555544294f3681b3/rpds_py-0.22.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc27863442d388870c1809a87507727b799c8460573cfbb6dc0eeaef5a11b5ec", size = 381959 },
+ { url = "https://files.pythonhosted.org/packages/ab/f0/d1c5b501c8aea85aeb938b555bfdf7612110a2f8cdc21ae0482c93dd0c24/rpds_py-0.22.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e79dd39f1e8c3504be0607e5fc6e86bb60fe3584bec8b782578c3b0fde8d932c", size = 410420 },
+ { url = "https://files.pythonhosted.org/packages/33/3b/45b6c58fb6aad5a569ae40fb890fc494c6b02203505a5008ee6dc68e65f7/rpds_py-0.22.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e0fa2d4ec53dc51cf7d3bb22e0aa0143966119f42a0c3e4998293a3dd2856b09", size = 557620 },
+ { url = "https://files.pythonhosted.org/packages/83/62/3fdd2d3d47bf0bb9b931c4c73036b4ab3ec77b25e016ae26fab0f02be2af/rpds_py-0.22.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fda7cb070f442bf80b642cd56483b5548e43d366fe3f39b98e67cce780cded00", size = 584202 },
+ { url = "https://files.pythonhosted.org/packages/04/f2/5dced98b64874b84ca824292f9cee2e3f30f3bcf231d15a903126684f74d/rpds_py-0.22.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cff63a0272fcd259dcc3be1657b07c929c466b067ceb1c20060e8d10af56f5bf", size = 552787 },
+ { url = "https://files.pythonhosted.org/packages/67/13/2273dea1204eda0aea0ef55145da96a9aa28b3f88bb5c70e994f69eda7c3/rpds_py-0.22.3-cp310-cp310-win32.whl", hash = "sha256:9bd7228827ec7bb817089e2eb301d907c0d9827a9e558f22f762bb690b131652", size = 220088 },
+ { url = "https://files.pythonhosted.org/packages/4e/80/8c8176b67ad7f4a894967a7a4014ba039626d96f1d4874d53e409b58d69f/rpds_py-0.22.3-cp310-cp310-win_amd64.whl", hash = "sha256:9beeb01d8c190d7581a4d59522cd3d4b6887040dcfc744af99aa59fef3e041a8", size = 231737 },
+ { url = "https://files.pythonhosted.org/packages/15/ad/8d1ddf78f2805a71253fcd388017e7b4a0615c22c762b6d35301fef20106/rpds_py-0.22.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d20cfb4e099748ea39e6f7b16c91ab057989712d31761d3300d43134e26e165f", size = 359773 },
+ { url = "https://files.pythonhosted.org/packages/c8/75/68c15732293a8485d79fe4ebe9045525502a067865fa4278f178851b2d87/rpds_py-0.22.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:68049202f67380ff9aa52f12e92b1c30115f32e6895cd7198fa2a7961621fc5a", size = 349214 },
+ { url = "https://files.pythonhosted.org/packages/3c/4c/7ce50f3070083c2e1b2bbd0fb7046f3da55f510d19e283222f8f33d7d5f4/rpds_py-0.22.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb4f868f712b2dd4bcc538b0a0c1f63a2b1d584c925e69a224d759e7070a12d5", size = 380477 },
+ { url = "https://files.pythonhosted.org/packages/9a/e9/835196a69cb229d5c31c13b8ae603bd2da9a6695f35fe4270d398e1db44c/rpds_py-0.22.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bc51abd01f08117283c5ebf64844a35144a0843ff7b2983e0648e4d3d9f10dbb", size = 386171 },
+ { url = "https://files.pythonhosted.org/packages/f9/8e/33fc4eba6683db71e91e6d594a2cf3a8fbceb5316629f0477f7ece5e3f75/rpds_py-0.22.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0f3cec041684de9a4684b1572fe28c7267410e02450f4561700ca5a3bc6695a2", size = 422676 },
+ { url = "https://files.pythonhosted.org/packages/37/47/2e82d58f8046a98bb9497a8319604c92b827b94d558df30877c4b3c6ccb3/rpds_py-0.22.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7ef9d9da710be50ff6809fed8f1963fecdfecc8b86656cadfca3bc24289414b0", size = 446152 },
+ { url = "https://files.pythonhosted.org/packages/e1/78/79c128c3e71abbc8e9739ac27af11dc0f91840a86fce67ff83c65d1ba195/rpds_py-0.22.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59f4a79c19232a5774aee369a0c296712ad0e77f24e62cad53160312b1c1eaa1", size = 381300 },
+ { url = "https://files.pythonhosted.org/packages/c9/5b/2e193be0e8b228c1207f31fa3ea79de64dadb4f6a4833111af8145a6bc33/rpds_py-0.22.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1a60bce91f81ddaac922a40bbb571a12c1070cb20ebd6d49c48e0b101d87300d", size = 409636 },
+ { url = "https://files.pythonhosted.org/packages/c2/3f/687c7100b762d62186a1c1100ffdf99825f6fa5ea94556844bbbd2d0f3a9/rpds_py-0.22.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e89391e6d60251560f0a8f4bd32137b077a80d9b7dbe6d5cab1cd80d2746f648", size = 556708 },
+ { url = "https://files.pythonhosted.org/packages/8c/a2/c00cbc4b857e8b3d5e7f7fc4c81e23afd8c138b930f4f3ccf9a41a23e9e4/rpds_py-0.22.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e3fb866d9932a3d7d0c82da76d816996d1667c44891bd861a0f97ba27e84fc74", size = 583554 },
+ { url = "https://files.pythonhosted.org/packages/d0/08/696c9872cf56effdad9ed617ac072f6774a898d46b8b8964eab39ec562d2/rpds_py-0.22.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1352ae4f7c717ae8cba93421a63373e582d19d55d2ee2cbb184344c82d2ae55a", size = 552105 },
+ { url = "https://files.pythonhosted.org/packages/18/1f/4df560be1e994f5adf56cabd6c117e02de7c88ee238bb4ce03ed50da9d56/rpds_py-0.22.3-cp311-cp311-win32.whl", hash = "sha256:b0b4136a252cadfa1adb705bb81524eee47d9f6aab4f2ee4fa1e9d3cd4581f64", size = 220199 },
+ { url = "https://files.pythonhosted.org/packages/b8/1b/c29b570bc5db8237553002788dc734d6bd71443a2ceac2a58202ec06ef12/rpds_py-0.22.3-cp311-cp311-win_amd64.whl", hash = "sha256:8bd7c8cfc0b8247c8799080fbff54e0b9619e17cdfeb0478ba7295d43f635d7c", size = 231775 },
+ { url = "https://files.pythonhosted.org/packages/75/47/3383ee3bd787a2a5e65a9b9edc37ccf8505c0a00170e3a5e6ea5fbcd97f7/rpds_py-0.22.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:27e98004595899949bd7a7b34e91fa7c44d7a97c40fcaf1d874168bb652ec67e", size = 352334 },
+ { url = "https://files.pythonhosted.org/packages/40/14/aa6400fa8158b90a5a250a77f2077c0d0cd8a76fce31d9f2b289f04c6dec/rpds_py-0.22.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1978d0021e943aae58b9b0b196fb4895a25cc53d3956b8e35e0b7682eefb6d56", size = 342111 },
+ { url = "https://files.pythonhosted.org/packages/7d/06/395a13bfaa8a28b302fb433fb285a67ce0ea2004959a027aea8f9c52bad4/rpds_py-0.22.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:655ca44a831ecb238d124e0402d98f6212ac527a0ba6c55ca26f616604e60a45", size = 384286 },
+ { url = "https://files.pythonhosted.org/packages/43/52/d8eeaffab047e6b7b7ef7f00d5ead074a07973968ffa2d5820fa131d7852/rpds_py-0.22.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:feea821ee2a9273771bae61194004ee2fc33f8ec7db08117ef9147d4bbcbca8e", size = 391739 },
+ { url = "https://files.pythonhosted.org/packages/83/31/52dc4bde85c60b63719610ed6f6d61877effdb5113a72007679b786377b8/rpds_py-0.22.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:22bebe05a9ffc70ebfa127efbc429bc26ec9e9b4ee4d15a740033efda515cf3d", size = 427306 },
+ { url = "https://files.pythonhosted.org/packages/70/d5/1bab8e389c2261dba1764e9e793ed6830a63f830fdbec581a242c7c46bda/rpds_py-0.22.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3af6e48651c4e0d2d166dc1b033b7042ea3f871504b6805ba5f4fe31581d8d38", size = 442717 },
+ { url = "https://files.pythonhosted.org/packages/82/a1/a45f3e30835b553379b3a56ea6c4eb622cf11e72008229af840e4596a8ea/rpds_py-0.22.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e67ba3c290821343c192f7eae1d8fd5999ca2dc99994114643e2f2d3e6138b15", size = 385721 },
+ { url = "https://files.pythonhosted.org/packages/a6/27/780c942de3120bdd4d0e69583f9c96e179dfff082f6ecbb46b8d6488841f/rpds_py-0.22.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:02fbb9c288ae08bcb34fb41d516d5eeb0455ac35b5512d03181d755d80810059", size = 415824 },
+ { url = "https://files.pythonhosted.org/packages/94/0b/aa0542ca88ad20ea719b06520f925bae348ea5c1fdf201b7e7202d20871d/rpds_py-0.22.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f56a6b404f74ab372da986d240e2e002769a7d7102cc73eb238a4f72eec5284e", size = 561227 },
+ { url = "https://files.pythonhosted.org/packages/0d/92/3ed77d215f82c8f844d7f98929d56cc321bb0bcfaf8f166559b8ec56e5f1/rpds_py-0.22.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0a0461200769ab3b9ab7e513f6013b7a97fdeee41c29b9db343f3c5a8e2b9e61", size = 587424 },
+ { url = "https://files.pythonhosted.org/packages/09/42/cacaeb047a22cab6241f107644f230e2935d4efecf6488859a7dd82fc47d/rpds_py-0.22.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8633e471c6207a039eff6aa116e35f69f3156b3989ea3e2d755f7bc41754a4a7", size = 555953 },
+ { url = "https://files.pythonhosted.org/packages/e6/52/c921dc6d5f5d45b212a456c1f5b17df1a471127e8037eb0972379e39dff4/rpds_py-0.22.3-cp312-cp312-win32.whl", hash = "sha256:593eba61ba0c3baae5bc9be2f5232430453fb4432048de28399ca7376de9c627", size = 221339 },
+ { url = "https://files.pythonhosted.org/packages/f2/c7/f82b5be1e8456600395366f86104d1bd8d0faed3802ad511ef6d60c30d98/rpds_py-0.22.3-cp312-cp312-win_amd64.whl", hash = "sha256:d115bffdd417c6d806ea9069237a4ae02f513b778e3789a359bc5856e0404cc4", size = 235786 },
+ { url = "https://files.pythonhosted.org/packages/d0/bf/36d5cc1f2c609ae6e8bf0fc35949355ca9d8790eceb66e6385680c951e60/rpds_py-0.22.3-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:ea7433ce7e4bfc3a85654aeb6747babe3f66eaf9a1d0c1e7a4435bbdf27fea84", size = 351657 },
+ { url = "https://files.pythonhosted.org/packages/24/2a/f1e0fa124e300c26ea9382e59b2d582cba71cedd340f32d1447f4f29fa4e/rpds_py-0.22.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6dd9412824c4ce1aca56c47b0991e65bebb7ac3f4edccfd3f156150c96a7bf25", size = 341829 },
+ { url = "https://files.pythonhosted.org/packages/cf/c2/0da1231dd16953845bed60d1a586fcd6b15ceaeb965f4d35cdc71f70f606/rpds_py-0.22.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20070c65396f7373f5df4005862fa162db5d25d56150bddd0b3e8214e8ef45b4", size = 384220 },
+ { url = "https://files.pythonhosted.org/packages/c7/73/a4407f4e3a00a9d4b68c532bf2d873d6b562854a8eaff8faa6133b3588ec/rpds_py-0.22.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0b09865a9abc0ddff4e50b5ef65467cd94176bf1e0004184eb915cbc10fc05c5", size = 391009 },
+ { url = "https://files.pythonhosted.org/packages/a9/c3/04b7353477ab360fe2563f5f0b176d2105982f97cd9ae80a9c5a18f1ae0f/rpds_py-0.22.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3453e8d41fe5f17d1f8e9c383a7473cd46a63661628ec58e07777c2fff7196dc", size = 426989 },
+ { url = "https://files.pythonhosted.org/packages/8d/e6/e4b85b722bcf11398e17d59c0f6049d19cd606d35363221951e6d625fcb0/rpds_py-0.22.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f5d36399a1b96e1a5fdc91e0522544580dbebeb1f77f27b2b0ab25559e103b8b", size = 441544 },
+ { url = "https://files.pythonhosted.org/packages/27/fc/403e65e56f65fff25f2973216974976d3f0a5c3f30e53758589b6dc9b79b/rpds_py-0.22.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:009de23c9c9ee54bf11303a966edf4d9087cd43a6003672e6aa7def643d06518", size = 385179 },
+ { url = "https://files.pythonhosted.org/packages/57/9b/2be9ff9700d664d51fd96b33d6595791c496d2778cb0b2a634f048437a55/rpds_py-0.22.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1aef18820ef3e4587ebe8b3bc9ba6e55892a6d7b93bac6d29d9f631a3b4befbd", size = 415103 },
+ { url = "https://files.pythonhosted.org/packages/bb/a5/03c2ad8ca10994fcf22dd2150dd1d653bc974fa82d9a590494c84c10c641/rpds_py-0.22.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f60bd8423be1d9d833f230fdbccf8f57af322d96bcad6599e5a771b151398eb2", size = 560916 },
+ { url = "https://files.pythonhosted.org/packages/ba/2e/be4fdfc8b5b576e588782b56978c5b702c5a2307024120d8aeec1ab818f0/rpds_py-0.22.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:62d9cfcf4948683a18a9aff0ab7e1474d407b7bab2ca03116109f8464698ab16", size = 587062 },
+ { url = "https://files.pythonhosted.org/packages/67/e0/2034c221937709bf9c542603d25ad43a68b4b0a9a0c0b06a742f2756eb66/rpds_py-0.22.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9253fc214112405f0afa7db88739294295f0e08466987f1d70e29930262b4c8f", size = 555734 },
+ { url = "https://files.pythonhosted.org/packages/ea/ce/240bae07b5401a22482b58e18cfbabaa392409b2797da60223cca10d7367/rpds_py-0.22.3-cp313-cp313-win32.whl", hash = "sha256:fb0ba113b4983beac1a2eb16faffd76cb41e176bf58c4afe3e14b9c681f702de", size = 220663 },
+ { url = "https://files.pythonhosted.org/packages/cb/f0/d330d08f51126330467edae2fa4efa5cec8923c87551a79299380fdea30d/rpds_py-0.22.3-cp313-cp313-win_amd64.whl", hash = "sha256:c58e2339def52ef6b71b8f36d13c3688ea23fa093353f3a4fee2556e62086ec9", size = 235503 },
+ { url = "https://files.pythonhosted.org/packages/f7/c4/dbe1cc03df013bf2feb5ad00615038050e7859f381e96fb5b7b4572cd814/rpds_py-0.22.3-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:f82a116a1d03628a8ace4859556fb39fd1424c933341a08ea3ed6de1edb0283b", size = 347698 },
+ { url = "https://files.pythonhosted.org/packages/a4/3a/684f66dd6b0f37499cad24cd1c0e523541fd768576fa5ce2d0a8799c3cba/rpds_py-0.22.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3dfcbc95bd7992b16f3f7ba05af8a64ca694331bd24f9157b49dadeeb287493b", size = 337330 },
+ { url = "https://files.pythonhosted.org/packages/82/eb/e022c08c2ce2e8f7683baa313476492c0e2c1ca97227fe8a75d9f0181e95/rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59259dc58e57b10e7e18ce02c311804c10c5a793e6568f8af4dead03264584d1", size = 380022 },
+ { url = "https://files.pythonhosted.org/packages/e4/21/5a80e653e4c86aeb28eb4fea4add1f72e1787a3299687a9187105c3ee966/rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5725dd9cc02068996d4438d397e255dcb1df776b7ceea3b9cb972bdb11260a83", size = 390754 },
+ { url = "https://files.pythonhosted.org/packages/37/a4/d320a04ae90f72d080b3d74597074e62be0a8ecad7d7321312dfe2dc5a6a/rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99b37292234e61325e7a5bb9689e55e48c3f5f603af88b1642666277a81f1fbd", size = 423840 },
+ { url = "https://files.pythonhosted.org/packages/87/70/674dc47d93db30a6624279284e5631be4c3a12a0340e8e4f349153546728/rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:27b1d3b3915a99208fee9ab092b8184c420f2905b7d7feb4aeb5e4a9c509b8a1", size = 438970 },
+ { url = "https://files.pythonhosted.org/packages/3f/64/9500f4d66601d55cadd21e90784cfd5d5f4560e129d72e4339823129171c/rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f612463ac081803f243ff13cccc648578e2279295048f2a8d5eb430af2bae6e3", size = 383146 },
+ { url = "https://files.pythonhosted.org/packages/4d/45/630327addb1d17173adcf4af01336fd0ee030c04798027dfcb50106001e0/rpds_py-0.22.3-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f73d3fef726b3243a811121de45193c0ca75f6407fe66f3f4e183c983573e130", size = 408294 },
+ { url = "https://files.pythonhosted.org/packages/5f/ef/8efb3373cee54ea9d9980b772e5690a0c9e9214045a4e7fa35046e399fee/rpds_py-0.22.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:3f21f0495edea7fdbaaa87e633a8689cd285f8f4af5c869f27bc8074638ad69c", size = 556345 },
+ { url = "https://files.pythonhosted.org/packages/54/01/151d3b9ef4925fc8f15bfb131086c12ec3c3d6dd4a4f7589c335bf8e85ba/rpds_py-0.22.3-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:1e9663daaf7a63ceccbbb8e3808fe90415b0757e2abddbfc2e06c857bf8c5e2b", size = 582292 },
+ { url = "https://files.pythonhosted.org/packages/30/89/35fc7a6cdf3477d441c7aca5e9bbf5a14e0f25152aed7f63f4e0b141045d/rpds_py-0.22.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:a76e42402542b1fae59798fab64432b2d015ab9d0c8c47ba7addddbaf7952333", size = 553855 },
+ { url = "https://files.pythonhosted.org/packages/8f/e0/830c02b2457c4bd20a8c5bb394d31d81f57fbefce2dbdd2e31feff4f7003/rpds_py-0.22.3-cp313-cp313t-win32.whl", hash = "sha256:69803198097467ee7282750acb507fba35ca22cc3b85f16cf45fb01cb9097730", size = 219100 },
+ { url = "https://files.pythonhosted.org/packages/f8/30/7ac943f69855c2db77407ae363484b915d861702dbba1aa82d68d57f42be/rpds_py-0.22.3-cp313-cp313t-win_amd64.whl", hash = "sha256:f5cf2a0c2bdadf3791b5c205d55a37a54025c6e18a71c71f82bb536cf9a454bf", size = 233794 },
+ { url = "https://files.pythonhosted.org/packages/8b/63/e29f8ee14fcf383574f73b6bbdcbec0fbc2e5fc36b4de44d1ac389b1de62/rpds_py-0.22.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d48424e39c2611ee1b84ad0f44fb3b2b53d473e65de061e3f460fc0be5f1939d", size = 360786 },
+ { url = "https://files.pythonhosted.org/packages/d3/e0/771ee28b02a24e81c8c0e645796a371350a2bb6672753144f36ae2d2afc9/rpds_py-0.22.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:24e8abb5878e250f2eb0d7859a8e561846f98910326d06c0d51381fed59357bd", size = 350589 },
+ { url = "https://files.pythonhosted.org/packages/cf/49/abad4c4a1e6f3adf04785a99c247bfabe55ed868133e2d1881200aa5d381/rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b232061ca880db21fa14defe219840ad9b74b6158adb52ddf0e87bead9e8493", size = 381848 },
+ { url = "https://files.pythonhosted.org/packages/3a/7d/f4bc6d6fbe6af7a0d2b5f2ee77079efef7c8528712745659ec0026888998/rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac0a03221cdb5058ce0167ecc92a8c89e8d0decdc9e99a2ec23380793c4dcb96", size = 387879 },
+ { url = "https://files.pythonhosted.org/packages/13/b0/575c797377fdcd26cedbb00a3324232e4cb2c5d121f6e4b0dbf8468b12ef/rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb0c341fa71df5a4595f9501df4ac5abfb5a09580081dffbd1ddd4654e6e9123", size = 423916 },
+ { url = "https://files.pythonhosted.org/packages/54/78/87157fa39d58f32a68d3326f8a81ad8fb99f49fe2aa7ad9a1b7d544f9478/rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bf9db5488121b596dbfc6718c76092fda77b703c1f7533a226a5a9f65248f8ad", size = 448410 },
+ { url = "https://files.pythonhosted.org/packages/59/69/860f89996065a88be1b6ff2d60e96a02b920a262d8aadab99e7903986597/rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b8db6b5b2d4491ad5b6bdc2bc7c017eec108acbf4e6785f42a9eb0ba234f4c9", size = 382841 },
+ { url = "https://files.pythonhosted.org/packages/bd/d7/bc144e10d27e3cb350f98df2492a319edd3caaf52ddfe1293f37a9afbfd7/rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b3d504047aba448d70cf6fa22e06cb09f7cbd761939fdd47604f5e007675c24e", size = 409662 },
+ { url = "https://files.pythonhosted.org/packages/14/2a/6bed0b05233c291a94c7e89bc76ffa1c619d4e1979fbfe5d96024020c1fb/rpds_py-0.22.3-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:e61b02c3f7a1e0b75e20c3978f7135fd13cb6cf551bf4a6d29b999a88830a338", size = 558221 },
+ { url = "https://files.pythonhosted.org/packages/11/23/cd8f566de444a137bc1ee5795e47069a947e60810ba4152886fe5308e1b7/rpds_py-0.22.3-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:e35ba67d65d49080e8e5a1dd40101fccdd9798adb9b050ff670b7d74fa41c566", size = 583780 },
+ { url = "https://files.pythonhosted.org/packages/8d/63/79c3602afd14d501f751e615a74a59040328da5ef29ed5754ae80d236b84/rpds_py-0.22.3-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:26fd7cac7dd51011a245f29a2cc6489c4608b5a8ce8d75661bb4a1066c52dfbe", size = 553619 },
+ { url = "https://files.pythonhosted.org/packages/9f/2e/c5c1689e80298d4e94c75b70faada4c25445739d91b94c211244a3ed7ed1/rpds_py-0.22.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:177c7c0fce2855833819c98e43c262007f42ce86651ffbb84f37883308cb0e7d", size = 233338 },
]
[[package]]
@@ -4491,6 +4521,7 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/7f/b7/20c6f3c0b656fe609675d69bc135c03aac9e3865912444be6339207b6648/ruamel.yaml.clib-0.2.12-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f66efbc1caa63c088dead1c4170d148eabc9b80d95fb75b6c92ac0aad2437d76", size = 686712 },
{ url = "https://files.pythonhosted.org/packages/cd/11/d12dbf683471f888d354dac59593873c2b45feb193c5e3e0f2ebf85e68b9/ruamel.yaml.clib-0.2.12-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:22353049ba4181685023b25b5b51a574bce33e7f51c759371a7422dcae5402a6", size = 663936 },
{ url = "https://files.pythonhosted.org/packages/72/14/4c268f5077db5c83f743ee1daeb236269fa8577133a5cfa49f8b382baf13/ruamel.yaml.clib-0.2.12-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:932205970b9f9991b34f55136be327501903f7c66830e9760a8ffb15b07f05cd", size = 696580 },
+ { url = "https://files.pythonhosted.org/packages/30/fc/8cd12f189c6405a4c1cf37bd633aa740a9538c8e40497c231072d0fef5cf/ruamel.yaml.clib-0.2.12-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a52d48f4e7bf9005e8f0a89209bf9a73f7190ddf0489eee5eb51377385f59f2a", size = 663393 },
{ url = "https://files.pythonhosted.org/packages/80/29/c0a017b704aaf3cbf704989785cd9c5d5b8ccec2dae6ac0c53833c84e677/ruamel.yaml.clib-0.2.12-cp310-cp310-win32.whl", hash = "sha256:3eac5a91891ceb88138c113f9db04f3cebdae277f5d44eaa3651a4f573e6a5da", size = 100326 },
{ url = "https://files.pythonhosted.org/packages/3a/65/fa39d74db4e2d0cd252355732d966a460a41cd01c6353b820a0952432839/ruamel.yaml.clib-0.2.12-cp310-cp310-win_amd64.whl", hash = "sha256:ab007f2f5a87bd08ab1499bdf96f3d5c6ad4dcfa364884cb4549aa0154b13a28", size = 118079 },
{ url = "https://files.pythonhosted.org/packages/fb/8f/683c6ad562f558cbc4f7c029abcd9599148c51c54b5ef0f24f2638da9fbb/ruamel.yaml.clib-0.2.12-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:4a6679521a58256a90b0d89e03992c15144c5f3858f40d7c18886023d7943db6", size = 132224 },
@@ -4499,6 +4530,7 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/86/29/88c2567bc893c84d88b4c48027367c3562ae69121d568e8a3f3a8d363f4d/ruamel.yaml.clib-0.2.12-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:811ea1594b8a0fb466172c384267a4e5e367298af6b228931f273b111f17ef52", size = 703012 },
{ url = "https://files.pythonhosted.org/packages/11/46/879763c619b5470820f0cd6ca97d134771e502776bc2b844d2adb6e37753/ruamel.yaml.clib-0.2.12-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:cf12567a7b565cbf65d438dec6cfbe2917d3c1bdddfce84a9930b7d35ea59642", size = 704352 },
{ url = "https://files.pythonhosted.org/packages/02/80/ece7e6034256a4186bbe50dee28cd032d816974941a6abf6a9d65e4228a7/ruamel.yaml.clib-0.2.12-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7dd5adc8b930b12c8fc5b99e2d535a09889941aa0d0bd06f4749e9a9397c71d2", size = 737344 },
+ { url = "https://files.pythonhosted.org/packages/f0/ca/e4106ac7e80efbabdf4bf91d3d32fc424e41418458251712f5672eada9ce/ruamel.yaml.clib-0.2.12-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1492a6051dab8d912fc2adeef0e8c72216b24d57bd896ea607cb90bb0c4981d3", size = 714498 },
{ url = "https://files.pythonhosted.org/packages/67/58/b1f60a1d591b771298ffa0428237afb092c7f29ae23bad93420b1eb10703/ruamel.yaml.clib-0.2.12-cp311-cp311-win32.whl", hash = "sha256:bd0a08f0bab19093c54e18a14a10b4322e1eacc5217056f3c063bd2f59853ce4", size = 100205 },
{ url = "https://files.pythonhosted.org/packages/b4/4f/b52f634c9548a9291a70dfce26ca7ebce388235c93588a1068028ea23fcc/ruamel.yaml.clib-0.2.12-cp311-cp311-win_amd64.whl", hash = "sha256:a274fb2cb086c7a3dea4322ec27f4cb5cc4b6298adb583ab0e211a4682f241eb", size = 118185 },
{ url = "https://files.pythonhosted.org/packages/48/41/e7a405afbdc26af961678474a55373e1b323605a4f5e2ddd4a80ea80f628/ruamel.yaml.clib-0.2.12-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:20b0f8dc160ba83b6dcc0e256846e1a02d044e13f7ea74a3d1d56ede4e48c632", size = 133433 },
@@ -4507,6 +4539,7 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/52/a9/d39f3c5ada0a3bb2870d7db41901125dbe2434fa4f12ca8c5b83a42d7c53/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:749c16fcc4a2b09f28843cda5a193e0283e47454b63ec4b81eaa2242f50e4ccd", size = 706497 },
{ url = "https://files.pythonhosted.org/packages/b0/fa/097e38135dadd9ac25aecf2a54be17ddf6e4c23e43d538492a90ab3d71c6/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bf165fef1f223beae7333275156ab2022cffe255dcc51c27f066b4370da81e31", size = 698042 },
{ url = "https://files.pythonhosted.org/packages/ec/d5/a659ca6f503b9379b930f13bc6b130c9f176469b73b9834296822a83a132/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:32621c177bbf782ca5a18ba4d7af0f1082a3f6e517ac2a18b3974d4edf349680", size = 745831 },
+ { url = "https://files.pythonhosted.org/packages/db/5d/36619b61ffa2429eeaefaab4f3374666adf36ad8ac6330d855848d7d36fd/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b82a7c94a498853aa0b272fd5bc67f29008da798d4f93a2f9f289feb8426a58d", size = 715692 },
{ url = "https://files.pythonhosted.org/packages/b1/82/85cb92f15a4231c89b95dfe08b09eb6adca929ef7df7e17ab59902b6f589/ruamel.yaml.clib-0.2.12-cp312-cp312-win32.whl", hash = "sha256:e8c4ebfcfd57177b572e2040777b8abc537cdef58a2120e830124946aa9b42c5", size = 98777 },
{ url = "https://files.pythonhosted.org/packages/d7/8f/c3654f6f1ddb75daf3922c3d8fc6005b1ab56671ad56ffb874d908bfa668/ruamel.yaml.clib-0.2.12-cp312-cp312-win_amd64.whl", hash = "sha256:0467c5965282c62203273b838ae77c0d29d7638c8a4e3a1c8bdd3602c10904e4", size = 115523 },
{ url = "https://files.pythonhosted.org/packages/29/00/4864119668d71a5fa45678f380b5923ff410701565821925c69780356ffa/ruamel.yaml.clib-0.2.12-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:4c8c5d82f50bb53986a5e02d1b3092b03622c02c2eb78e29bec33fd9593bae1a", size = 132011 },
@@ -4515,33 +4548,34 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/e2/a9/28f60726d29dfc01b8decdb385de4ced2ced9faeb37a847bd5cf26836815/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96777d473c05ee3e5e3c3e999f5d23c6f4ec5b0c38c098b3a5229085f74236c6", size = 701785 },
{ url = "https://files.pythonhosted.org/packages/84/7e/8e7ec45920daa7f76046578e4f677a3215fe8f18ee30a9cb7627a19d9b4c/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:3bc2a80e6420ca8b7d3590791e2dfc709c88ab9152c00eeb511c9875ce5778bf", size = 693017 },
{ url = "https://files.pythonhosted.org/packages/c5/b3/d650eaade4ca225f02a648321e1ab835b9d361c60d51150bac49063b83fa/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e188d2699864c11c36cdfdada94d781fd5d6b0071cd9c427bceb08ad3d7c70e1", size = 741270 },
+ { url = "https://files.pythonhosted.org/packages/87/b8/01c29b924dcbbed75cc45b30c30d565d763b9c4d540545a0eeecffb8f09c/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4f6f3eac23941b32afccc23081e1f50612bdbe4e982012ef4f5797986828cd01", size = 709059 },
{ url = "https://files.pythonhosted.org/packages/30/8c/ed73f047a73638257aa9377ad356bea4d96125b305c34a28766f4445cc0f/ruamel.yaml.clib-0.2.12-cp313-cp313-win32.whl", hash = "sha256:6442cb36270b3afb1b4951f060eccca1ce49f3d087ca1ca4563a6eb479cb3de6", size = 98583 },
{ url = "https://files.pythonhosted.org/packages/b0/85/e8e751d8791564dd333d5d9a4eab0a7a115f7e349595417fd50ecae3395c/ruamel.yaml.clib-0.2.12-cp313-cp313-win_amd64.whl", hash = "sha256:e5b8daf27af0b90da7bb903a876477a9e6d7270be6146906b276605997c7e9a3", size = 115190 },
]
[[package]]
name = "ruff"
-version = "0.7.4"
-source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/0b/8b/bc4e0dfa1245b07cf14300e10319b98e958a53ff074c1dd86b35253a8c2a/ruff-0.7.4.tar.gz", hash = "sha256:cd12e35031f5af6b9b93715d8c4f40360070b2041f81273d0527683d5708fce2", size = 3275547 }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/e6/4b/f5094719e254829766b807dadb766841124daba75a37da83e292ae5ad12f/ruff-0.7.4-py3-none-linux_armv6l.whl", hash = "sha256:a4919925e7684a3f18e18243cd6bea7cfb8e968a6eaa8437971f681b7ec51478", size = 10447512 },
- { url = "https://files.pythonhosted.org/packages/9e/1d/3d2d2c9f601cf6044799c5349ff5267467224cefed9b35edf5f1f36486e9/ruff-0.7.4-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:cfb365c135b830778dda8c04fb7d4280ed0b984e1aec27f574445231e20d6c63", size = 10235436 },
- { url = "https://files.pythonhosted.org/packages/62/83/42a6ec6216ded30b354b13e0e9327ef75a3c147751aaf10443756cb690e9/ruff-0.7.4-py3-none-macosx_11_0_arm64.whl", hash = "sha256:63a569b36bc66fbadec5beaa539dd81e0527cb258b94e29e0531ce41bacc1f20", size = 9888936 },
- { url = "https://files.pythonhosted.org/packages/4d/26/e1e54893b13046a6ad05ee9b89ee6f71542ba250f72b4c7a7d17c3dbf73d/ruff-0.7.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d06218747d361d06fd2fdac734e7fa92df36df93035db3dc2ad7aa9852cb109", size = 10697353 },
- { url = "https://files.pythonhosted.org/packages/21/24/98d2e109c4efc02bfef144ec6ea2c3e1217e7ce0cfddda8361d268dfd499/ruff-0.7.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e0cea28d0944f74ebc33e9f934238f15c758841f9f5edd180b5315c203293452", size = 10228078 },
- { url = "https://files.pythonhosted.org/packages/ad/b7/964c75be9bc2945fc3172241b371197bb6d948cc69e28bc4518448c368f3/ruff-0.7.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:80094ecd4793c68b2571b128f91754d60f692d64bc0d7272ec9197fdd09bf9ea", size = 11264823 },
- { url = "https://files.pythonhosted.org/packages/12/8d/20abdbf705969914ce40988fe71a554a918deaab62c38ec07483e77866f6/ruff-0.7.4-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:997512325c6620d1c4c2b15db49ef59543ef9cd0f4aa8065ec2ae5103cedc7e7", size = 11951855 },
- { url = "https://files.pythonhosted.org/packages/b8/fc/6519ce58c57b4edafcdf40920b7273dfbba64fc6ebcaae7b88e4dc1bf0a8/ruff-0.7.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:00b4cf3a6b5fad6d1a66e7574d78956bbd09abfd6c8a997798f01f5da3d46a05", size = 11516580 },
- { url = "https://files.pythonhosted.org/packages/37/1a/5ec1844e993e376a86eb2456496831ed91b4398c434d8244f89094758940/ruff-0.7.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7dbdc7d8274e1422722933d1edddfdc65b4336abf0b16dfcb9dedd6e6a517d06", size = 12692057 },
- { url = "https://files.pythonhosted.org/packages/50/90/76867152b0d3c05df29a74bb028413e90f704f0f6701c4801174ba47f959/ruff-0.7.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e92dfb5f00eaedb1501b2f906ccabfd67b2355bdf117fea9719fc99ac2145bc", size = 11085137 },
- { url = "https://files.pythonhosted.org/packages/c8/eb/0a7cb6059ac3555243bd026bb21785bbc812f7bbfa95a36c101bd72b47ae/ruff-0.7.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:3bd726099f277d735dc38900b6a8d6cf070f80828877941983a57bca1cd92172", size = 10681243 },
- { url = "https://files.pythonhosted.org/packages/5e/76/2270719dbee0fd35780b05c08a07b7a726c3da9f67d9ae89ef21fc18e2e5/ruff-0.7.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:2e32829c429dd081ee5ba39aef436603e5b22335c3d3fff013cd585806a6486a", size = 10319187 },
- { url = "https://files.pythonhosted.org/packages/9f/e5/39100f72f8ba70bec1bd329efc880dea8b6c1765ea1cb9d0c1c5f18b8d7f/ruff-0.7.4-py3-none-musllinux_1_2_i686.whl", hash = "sha256:662a63b4971807623f6f90c1fb664613f67cc182dc4d991471c23c541fee62dd", size = 10803715 },
- { url = "https://files.pythonhosted.org/packages/a5/89/40e904784f305fb56850063f70a998a64ebba68796d823dde67e89a24691/ruff-0.7.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:876f5e09eaae3eb76814c1d3b68879891d6fde4824c015d48e7a7da4cf066a3a", size = 11162912 },
- { url = "https://files.pythonhosted.org/packages/8d/1b/dd77503b3875c51e3dbc053fd8367b845ab8b01c9ca6d0c237082732856c/ruff-0.7.4-py3-none-win32.whl", hash = "sha256:75c53f54904be42dd52a548728a5b572344b50d9b2873d13a3f8c5e3b91f5cac", size = 8702767 },
- { url = "https://files.pythonhosted.org/packages/63/76/253ddc3e89e70165bba952ecca424b980b8d3c2598ceb4fc47904f424953/ruff-0.7.4-py3-none-win_amd64.whl", hash = "sha256:745775c7b39f914238ed1f1b0bebed0b9155a17cd8bc0b08d3c87e4703b990d6", size = 9497534 },
- { url = "https://files.pythonhosted.org/packages/aa/70/f8724f31abc0b329ca98b33d73c14020168babcf71b0cba3cded5d9d0e66/ruff-0.7.4-py3-none-win_arm64.whl", hash = "sha256:11bff065102c3ae9d3ea4dc9ecdfe5a5171349cdd0787c1fc64761212fc9cf1f", size = 8851590 },
+version = "0.8.2"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/5e/2b/01245f4f3a727d60bebeacd7ee6d22586c7f62380a2597ddb22c2f45d018/ruff-0.8.2.tar.gz", hash = "sha256:b84f4f414dda8ac7f75075c1fa0b905ac0ff25361f42e6d5da681a465e0f78e5", size = 3349020 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/91/29/366be70216dba1731a00a41f2f030822b0c96c7c4f3b2c0cdce15cbace74/ruff-0.8.2-py3-none-linux_armv6l.whl", hash = "sha256:c49ab4da37e7c457105aadfd2725e24305ff9bc908487a9bf8d548c6dad8bb3d", size = 10530649 },
+ { url = "https://files.pythonhosted.org/packages/63/82/a733956540bb388f00df5a3e6a02467b16c0e529132625fe44ce4c5fb9c7/ruff-0.8.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:ec016beb69ac16be416c435828be702ee694c0d722505f9c1f35e1b9c0cc1bf5", size = 10274069 },
+ { url = "https://files.pythonhosted.org/packages/3d/12/0b3aa14d1d71546c988a28e1b412981c1b80c8a1072e977a2f30c595cc4a/ruff-0.8.2-py3-none-macosx_11_0_arm64.whl", hash = "sha256:f05cdf8d050b30e2ba55c9b09330b51f9f97d36d4673213679b965d25a785f3c", size = 9909400 },
+ { url = "https://files.pythonhosted.org/packages/23/08/f9f08cefb7921784c891c4151cce6ed357ff49e84b84978440cffbc87408/ruff-0.8.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60f578c11feb1d3d257b2fb043ddb47501ab4816e7e221fbb0077f0d5d4e7b6f", size = 10766782 },
+ { url = "https://files.pythonhosted.org/packages/e4/71/bf50c321ec179aa420c8ec40adac5ae9cc408d4d37283a485b19a2331ceb/ruff-0.8.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:cbd5cf9b0ae8f30eebc7b360171bd50f59ab29d39f06a670b3e4501a36ba5897", size = 10286316 },
+ { url = "https://files.pythonhosted.org/packages/f2/83/c82688a2a6117539aea0ce63fdf6c08e60fe0202779361223bcd7f40bd74/ruff-0.8.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b402ddee3d777683de60ff76da801fa7e5e8a71038f57ee53e903afbcefdaa58", size = 11338270 },
+ { url = "https://files.pythonhosted.org/packages/7f/d7/bc6a45e5a22e627640388e703160afb1d77c572b1d0fda8b4349f334fc66/ruff-0.8.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:705832cd7d85605cb7858d8a13d75993c8f3ef1397b0831289109e953d833d29", size = 12058579 },
+ { url = "https://files.pythonhosted.org/packages/da/3b/64150c93946ec851e6f1707ff586bb460ca671581380c919698d6a9267dc/ruff-0.8.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:32096b41aaf7a5cc095fa45b4167b890e4c8d3fd217603f3634c92a541de7248", size = 11615172 },
+ { url = "https://files.pythonhosted.org/packages/e4/9e/cf12b697ea83cfe92ec4509ae414dc4c9b38179cc681a497031f0d0d9a8e/ruff-0.8.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e769083da9439508833cfc7c23e351e1809e67f47c50248250ce1ac52c21fb93", size = 12882398 },
+ { url = "https://files.pythonhosted.org/packages/a9/27/96d10863accf76a9c97baceac30b0a52d917eb985a8ac058bd4636aeede0/ruff-0.8.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5fe716592ae8a376c2673fdfc1f5c0c193a6d0411f90a496863c99cd9e2ae25d", size = 11176094 },
+ { url = "https://files.pythonhosted.org/packages/eb/10/cd2fd77d4a4e7f03c29351be0f53278a393186b540b99df68beb5304fddd/ruff-0.8.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:81c148825277e737493242b44c5388a300584d73d5774defa9245aaef55448b0", size = 10771884 },
+ { url = "https://files.pythonhosted.org/packages/71/5d/beabb2ff18870fc4add05fa3a69a4cb1b1d2d6f83f3cf3ae5ab0d52f455d/ruff-0.8.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:d261d7850c8367704874847d95febc698a950bf061c9475d4a8b7689adc4f7fa", size = 10382535 },
+ { url = "https://files.pythonhosted.org/packages/ae/29/6b3fdf3ad3e35b28d87c25a9ff4c8222ad72485ab783936b2b267250d7a7/ruff-0.8.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:1ca4e3a87496dc07d2427b7dd7ffa88a1e597c28dad65ae6433ecb9f2e4f022f", size = 10886995 },
+ { url = "https://files.pythonhosted.org/packages/e9/dc/859d889b4d9356a1a2cdbc1e4a0dda94052bc5b5300098647e51a58c430b/ruff-0.8.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:729850feed82ef2440aa27946ab39c18cb4a8889c1128a6d589ffa028ddcfc22", size = 11220750 },
+ { url = "https://files.pythonhosted.org/packages/0b/08/e8f519f61f1d624264bfd6b8829e4c5f31c3c61193bc3cff1f19dbe7626a/ruff-0.8.2-py3-none-win32.whl", hash = "sha256:ac42caaa0411d6a7d9594363294416e0e48fc1279e1b0e948391695db2b3d5b1", size = 8729396 },
+ { url = "https://files.pythonhosted.org/packages/f8/d4/ba1c7ab72aba37a2b71fe48ab95b80546dbad7a7f35ea28cf66fc5cea5f6/ruff-0.8.2-py3-none-win_amd64.whl", hash = "sha256:2aae99ec70abf43372612a838d97bfe77d45146254568d94926e8ed5bbb409ea", size = 9594729 },
+ { url = "https://files.pythonhosted.org/packages/23/34/db20e12d3db11b8a2a8874258f0f6d96a9a4d631659d54575840557164c8/ruff-0.8.2-py3-none-win_arm64.whl", hash = "sha256:fb88e2a506b70cfbc2de6fae6681c4f944f7dd5f2fe87233a7233d888bad73e8", size = 9035131 },
]
[[package]]
@@ -4619,7 +4653,7 @@ wheels = [
[[package]]
name = "scikit-learn"
-version = "1.5.2"
+version = "1.6.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "joblib", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
@@ -4627,28 +4661,32 @@ dependencies = [
{ name = "scipy", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "threadpoolctl", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/37/59/44985a2bdc95c74e34fef3d10cb5d93ce13b0e2a7baefffe1b53853b502d/scikit_learn-1.5.2.tar.gz", hash = "sha256:b4237ed7b3fdd0a4882792e68ef2545d5baa50aca3bb45aa7df468138ad8f94d", size = 7001680 }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/98/89/be41419b4bec629a4691183a5eb1796f91252a13a5ffa243fd958cad7e91/scikit_learn-1.5.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:299406827fb9a4f862626d0fe6c122f5f87f8910b86fe5daa4c32dcd742139b6", size = 12106070 },
- { url = "https://files.pythonhosted.org/packages/bf/e0/3b6d777d375f3b685f433c93384cdb724fb078e1dc8f8ff0950467e56c30/scikit_learn-1.5.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:2d4cad1119c77930b235579ad0dc25e65c917e756fe80cab96aa3b9428bd3fb0", size = 10971758 },
- { url = "https://files.pythonhosted.org/packages/7b/31/eb7dd56c371640753953277de11356c46a3149bfeebb3d7dcd90b993715a/scikit_learn-1.5.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c412ccc2ad9bf3755915e3908e677b367ebc8d010acbb3f182814524f2e5540", size = 12500080 },
- { url = "https://files.pythonhosted.org/packages/4c/1e/a7c7357e704459c7d56a18df4a0bf08669442d1f8878cc0864beccd6306a/scikit_learn-1.5.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a686885a4b3818d9e62904d91b57fa757fc2bed3e465c8b177be652f4dd37c8", size = 13347241 },
- { url = "https://files.pythonhosted.org/packages/48/76/154ebda6794faf0b0f3ccb1b5cd9a19f0a63cb9e1f3d2c61b6114002677b/scikit_learn-1.5.2-cp310-cp310-win_amd64.whl", hash = "sha256:c15b1ca23d7c5f33cc2cb0a0d6aaacf893792271cddff0edbd6a40e8319bc113", size = 11000477 },
- { url = "https://files.pythonhosted.org/packages/ff/91/609961972f694cb9520c4c3d201e377a26583e1eb83bc5a334c893729214/scikit_learn-1.5.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:03b6158efa3faaf1feea3faa884c840ebd61b6484167c711548fce208ea09445", size = 12088580 },
- { url = "https://files.pythonhosted.org/packages/cd/7a/19fe32c810c5ceddafcfda16276d98df299c8649e24e84d4f00df4a91e01/scikit_learn-1.5.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:1ff45e26928d3b4eb767a8f14a9a6efbf1cbff7c05d1fb0f95f211a89fd4f5de", size = 10975994 },
- { url = "https://files.pythonhosted.org/packages/4c/75/62e49f8a62bf3c60b0e64d0fce540578ee4f0e752765beb2e1dc7c6d6098/scikit_learn-1.5.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f763897fe92d0e903aa4847b0aec0e68cadfff77e8a0687cabd946c89d17e675", size = 12465782 },
- { url = "https://files.pythonhosted.org/packages/49/21/3723de321531c9745e40f1badafd821e029d346155b6c79704e0b7197552/scikit_learn-1.5.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8b0ccd4a902836493e026c03256e8b206656f91fbcc4fde28c57a5b752561f1", size = 13322034 },
- { url = "https://files.pythonhosted.org/packages/17/1c/ccdd103cfcc9435a18819856fbbe0c20b8fa60bfc3343580de4be13f0668/scikit_learn-1.5.2-cp311-cp311-win_amd64.whl", hash = "sha256:6c16d84a0d45e4894832b3c4d0bf73050939e21b99b01b6fd59cbb0cf39163b6", size = 11015224 },
- { url = "https://files.pythonhosted.org/packages/a4/db/b485c1ac54ff3bd9e7e6b39d3cc6609c4c76a65f52ab0a7b22b6c3ab0e9d/scikit_learn-1.5.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f932a02c3f4956dfb981391ab24bda1dbd90fe3d628e4b42caef3e041c67707a", size = 12110344 },
- { url = "https://files.pythonhosted.org/packages/54/1a/7deb52fa23aebb855431ad659b3c6a2e1709ece582cb3a63d66905e735fe/scikit_learn-1.5.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:3b923d119d65b7bd555c73be5423bf06c0105678ce7e1f558cb4b40b0a5502b1", size = 11033502 },
- { url = "https://files.pythonhosted.org/packages/a1/32/4a7a205b14c11225609b75b28402c196e4396ac754dab6a81971b811781c/scikit_learn-1.5.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f60021ec1574e56632be2a36b946f8143bf4e5e6af4a06d85281adc22938e0dd", size = 12085794 },
- { url = "https://files.pythonhosted.org/packages/c6/29/044048c5e911373827c0e1d3051321b9183b2a4f8d4e2f11c08fcff83f13/scikit_learn-1.5.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:394397841449853c2290a32050382edaec3da89e35b3e03d6cc966aebc6a8ae6", size = 12945797 },
- { url = "https://files.pythonhosted.org/packages/aa/ce/c0b912f2f31aeb1b756a6ba56bcd84dd1f8a148470526a48515a3f4d48cd/scikit_learn-1.5.2-cp312-cp312-win_amd64.whl", hash = "sha256:57cc1786cfd6bd118220a92ede80270132aa353647684efa385a74244a41e3b1", size = 10985467 },
- { url = "https://files.pythonhosted.org/packages/a4/50/8891028437858cc510e13578fe7046574a60c2aaaa92b02d64aac5b1b412/scikit_learn-1.5.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9a702e2de732bbb20d3bad29ebd77fc05a6b427dc49964300340e4c9328b3f5", size = 12025584 },
- { url = "https://files.pythonhosted.org/packages/d2/79/17feef8a1c14149436083bec0e61d7befb4812e272d5b20f9d79ea3e9ab1/scikit_learn-1.5.2-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:b0768ad641981f5d3a198430a1d31c3e044ed2e8a6f22166b4d546a5116d7908", size = 10959795 },
- { url = "https://files.pythonhosted.org/packages/b1/c8/f08313f9e2e656bd0905930ae8bf99a573ea21c34666a813b749c338202f/scikit_learn-1.5.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:178ddd0a5cb0044464fc1bfc4cca5b1833bfc7bb022d70b05db8530da4bb3dd3", size = 12077302 },
- { url = "https://files.pythonhosted.org/packages/a7/48/fbfb4dc72bed0fe31fe045fb30e924909ad03f717c36694351612973b1a9/scikit_learn-1.5.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7284ade780084d94505632241bf78c44ab3b6f1e8ccab3d2af58e0e950f9c12", size = 13002811 },
- { url = "https://files.pythonhosted.org/packages/a5/e7/0c869f9e60d225a77af90d2aefa7a4a4c0e745b149325d1450f0f0ce5399/scikit_learn-1.5.2-cp313-cp313-win_amd64.whl", hash = "sha256:b7b0f9a0b1040830d38c39b91b3a44e1b643f4b36e36567b80b7c6bd2202a27f", size = 10951354 },
+sdist = { url = "https://files.pythonhosted.org/packages/fa/19/5aa2002044afc297ecaf1e3517ed07bba4aece3b5613b5160c1212995fc8/scikit_learn-1.6.0.tar.gz", hash = "sha256:9d58481f9f7499dff4196927aedd4285a0baec8caa3790efbe205f13de37dd6e", size = 7074944 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/c0/97/55060f91a5e7c4df945e5a69b16148b5f2256e6e1ea3f17da8e27edf9953/scikit_learn-1.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:366fb3fa47dce90afed3d6106183f4978d6f24cfd595c2373424171b915ee718", size = 12060299 },
+ { url = "https://files.pythonhosted.org/packages/36/7b/8c5dfc64a8344ebf2ae493d59af4b3650588051f654e164ff4f9952877b3/scikit_learn-1.6.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:59cd96a8d9f8dfd546f5d6e9787e1b989e981388d7803abbc9efdcde61e47460", size = 11105443 },
+ { url = "https://files.pythonhosted.org/packages/25/9f/61544f2a5cae1bc27c97f0ec9ffcc9837e469f215817608840a4ccbb277a/scikit_learn-1.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:efa7a579606c73a0b3d210e33ea410ea9e1af7933fe324cb7e6fbafae4ea5948", size = 12637137 },
+ { url = "https://files.pythonhosted.org/packages/50/79/d21599fc44d2d497ced440480670b6314ebc00308e3bae0d0ebca44cd481/scikit_learn-1.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a46d3ca0f11a540b8eaddaf5e38172d8cd65a86cb3e3632161ec96c0cffb774c", size = 13490128 },
+ { url = "https://files.pythonhosted.org/packages/ff/87/788da20cfefcd261123d4bb015b2de076e49cdd3b811b55e6811acd3cb21/scikit_learn-1.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:5be4577769c5dde6e1b53de8e6520f9b664ab5861dd57acee47ad119fd7405d6", size = 11118524 },
+ { url = "https://files.pythonhosted.org/packages/07/95/070d6e70f735d13f1c10afebb65ba3526125b7d6c6fc7022651a4a061148/scikit_learn-1.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1f50b4f24cf12a81c3c09958ae3b864d7534934ca66ded3822de4996d25d7285", size = 12095168 },
+ { url = "https://files.pythonhosted.org/packages/72/3d/0381e3a59ebd4154e6a61b0ceaf299c3c141035033dd3b868776cd9af02d/scikit_learn-1.6.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:eb9ae21f387826da14b0b9cb1034f5048ddb9182da429c689f5f4a87dc96930b", size = 11108880 },
+ { url = "https://files.pythonhosted.org/packages/fe/2d/0999ae3eed2ac67b1b3cd7fc33370bd5ca59a7514ffe43ae2b6f3cd85b9b/scikit_learn-1.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0baa91eeb8c32632628874a5c91885eaedd23b71504d24227925080da075837a", size = 12585449 },
+ { url = "https://files.pythonhosted.org/packages/0e/ec/1b15b59c6cc7a993320a52234369e787f50345a4753e50d5a015a91e1a20/scikit_learn-1.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c716d13ba0a2f8762d96ff78d3e0cde90bc9c9b5c13d6ab6bb9b2d6ca6705fd", size = 13489728 },
+ { url = "https://files.pythonhosted.org/packages/96/a2/cbfb5743de748d574ffdfd557e9cb29ba4f8b8a3e07836c6c176f713de2f/scikit_learn-1.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:9aafd94bafc841b626681e626be27bf1233d5a0f20f0a6fdb4bee1a1963c6643", size = 11132946 },
+ { url = "https://files.pythonhosted.org/packages/18/0c/a5de627aa57b028aea7026cb3bbeaf63be3158adc118212d6cc7843d939a/scikit_learn-1.6.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:04a5ba45c12a5ff81518aa4f1604e826a45d20e53da47b15871526cda4ff5174", size = 12096999 },
+ { url = "https://files.pythonhosted.org/packages/a3/7d/02a96e6fb28ddb213e84b1b4a44148d26ec96fc9db9c74e050277e009892/scikit_learn-1.6.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:21fadfc2ad7a1ce8bd1d90f23d17875b84ec765eecbbfc924ff11fb73db582ce", size = 11160579 },
+ { url = "https://files.pythonhosted.org/packages/70/28/77b071f541d75247e6c3403f19aaa634371e972691f6aa1838ca9fd4cc52/scikit_learn-1.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30f34bb5fde90e020653bb84dcb38b6c83f90c70680dbd8c38bd9becbad7a127", size = 12246543 },
+ { url = "https://files.pythonhosted.org/packages/17/0e/e6bb84074f1081245a165c0ee775ecef24beae9d2f2e24bcac0c9f155f13/scikit_learn-1.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1dad624cffe3062276a0881d4e441bc9e3b19d02d17757cd6ae79a9d192a0027", size = 13140402 },
+ { url = "https://files.pythonhosted.org/packages/21/1d/3df58df8bd425f425df9f90b316618ace62b7f1f838ac1580191025cc735/scikit_learn-1.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:2fce7950a3fad85e0a61dc403df0f9345b53432ac0e47c50da210d22c60b6d85", size = 11103596 },
+ { url = "https://files.pythonhosted.org/packages/2e/f4/c3b51920cf310169d19d07855a7bdf51a9b065314877d9a58c0c60d08eea/scikit_learn-1.6.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e5453b2e87ef8accedc5a8a4e6709f887ca01896cd7cc8a174fe39bd4bb00aef", size = 12002532 },
+ { url = "https://files.pythonhosted.org/packages/e4/76/cfb0778a84c30df272f1c41fc7b3bd3ffac6e8b02ee6a078a592d35cf73f/scikit_learn-1.6.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:5fe11794236fb83bead2af26a87ced5d26e3370b8487430818b915dafab1724e", size = 11088997 },
+ { url = "https://files.pythonhosted.org/packages/2b/8d/4563419d742b852e50871fa3494a8dd0304610601359209a2e614e200260/scikit_learn-1.6.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:61fe3dcec0d82ae280877a818ab652f4988371e32dd5451e75251bece79668b1", size = 12203192 },
+ { url = "https://files.pythonhosted.org/packages/15/a4/f4fdcdd11d82837804c888097ad02aa6381c4bbd57b9d3074ecf9eba8f42/scikit_learn-1.6.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b44e3a51e181933bdf9a4953cc69c6025b40d2b49e238233f149b98849beb4bf", size = 13164436 },
+ { url = "https://files.pythonhosted.org/packages/1a/e1/32bdcf8f918de5a156da6886aba24a3b5718d267954bd34555be896289f0/scikit_learn-1.6.0-cp313-cp313-win_amd64.whl", hash = "sha256:a17860a562bac54384454d40b3f6155200c1c737c9399e6a97962c63fce503ac", size = 11064779 },
+ { url = "https://files.pythonhosted.org/packages/c6/8d/14464bea220bc02879f9e8d905c4b0a44b5c12afde6c375720b6f41d9407/scikit_learn-1.6.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:98717d3c152f6842d36a70f21e1468fb2f1a2f8f2624d9a3f382211798516426", size = 11962472 },
+ { url = "https://files.pythonhosted.org/packages/b4/69/66899cdc65986188e0e255e52ee93dee5101a72f139ee05f263dfff2053a/scikit_learn-1.6.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:34e20bfac8ff0ebe0ff20fb16a4d6df5dc4cc9ce383e00c2ab67a526a3c67b18", size = 11104864 },
+ { url = "https://files.pythonhosted.org/packages/3c/32/2c63bc108cc5438b116a0c6fd25c6126dd14c03118724385f10a3d218ee8/scikit_learn-1.6.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eba06d75815406091419e06dd650b91ebd1c5f836392a0d833ff36447c2b1bfa", size = 12435734 },
+ { url = "https://files.pythonhosted.org/packages/0c/f5/9434dff19e04a334bfb30df90511904263c48a422a9952d91d8de5c3aa62/scikit_learn-1.6.0-cp313-cp313t-win_amd64.whl", hash = "sha256:b6916d1cec1ff163c7d281e699d7a6a709da2f2c5ec7b10547e08cc788ddd3ae", size = 11329803 },
]
[[package]]
@@ -4801,6 +4839,7 @@ dev = [
{ name = "pytest", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "pytest-asyncio", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "pytest-cov", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
+ { name = "pytest-timeout", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "pytest-xdist", extra = ["psutil"], marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "ruff", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "snoop", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
@@ -4846,9 +4885,9 @@ requires-dist = [
{ name = "psycopg", extras = ["binary", "pool"], marker = "extra == 'postgres'", specifier = "~=3.2" },
{ name = "pyarrow", marker = "extra == 'usearch'", specifier = ">=12.0,<19.0" },
{ name = "pybars4", specifier = "~=0.9" },
- { name = "pydantic", specifier = ">=2.0,<2.10" },
+ { name = "pydantic", specifier = ">=2.0,!=2.10.0,!=2.10.1,!=2.10.2,!=2.10.3,<2.11" },
{ name = "pydantic-settings", specifier = "~=2.0" },
- { name = "pymilvus", marker = "extra == 'milvus'", specifier = ">=2.3,<2.5" },
+ { name = "pymilvus", marker = "extra == 'milvus'", specifier = ">=2.3,<2.6" },
{ name = "pymongo", marker = "extra == 'mongo'", specifier = ">=4.8.0,<4.11" },
{ name = "qdrant-client", marker = "extra == 'qdrant'", specifier = "~=1.9" },
{ name = "redis", extras = ["hiredis"], marker = "extra == 'redis'", specifier = "~=5.0" },
@@ -4868,8 +4907,9 @@ dev = [
{ name = "nbconvert", specifier = "~=7.16" },
{ name = "pre-commit", specifier = "~=3.7" },
{ name = "pytest", specifier = "~=8.2" },
- { name = "pytest-asyncio", specifier = "~=0.23" },
+ { name = "pytest-asyncio", specifier = "~=0.24" },
{ name = "pytest-cov", specifier = ">=5.0" },
+ { name = "pytest-timeout", specifier = ">=2.3.1" },
{ name = "pytest-xdist", extras = ["psutil"], specifier = "~=3.6" },
{ name = "ruff", specifier = "~=0.7" },
{ name = "snoop", specifier = "~=0.4" },
@@ -4949,87 +4989,87 @@ wheels = [
[[package]]
name = "simsimd"
-version = "6.1.1"
-source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/10/70/903140c48a0e0f7a91bd9d6bdd1dbd9aa5ba93f6f3ff16ca8cb11c98c731/simsimd-6.1.1.tar.gz", hash = "sha256:0dea053294952519e16adcf0e80a39e266ced2f7687aab9fe5d557592894caaf", size = 156831 }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/3c/7b/1f3c43870d149f3c2a3d7f9e2ea3ef3adaa698b91b406afbc17eba9b48a9/simsimd-6.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:630d78949d41c86a63cfb223de4c037aabb390d9169bfee22e394b8418d52488", size = 161167 },
- { url = "https://files.pythonhosted.org/packages/7b/f4/9453d96955db5b6c85a9bb9c0257a2f21c050a022ab05350f169b99e9e6b/simsimd-6.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b81a5741b4b1711efb5618844d2139c5f9bf2059f47a0e59080ea43a3a7d99d5", size = 98239 },
- { url = "https://files.pythonhosted.org/packages/f1/ea/c8197f315760879f5a33db24359ca49686143bfe2ca966365244f341d2d4/simsimd-6.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5844a4fc29cddd60898b9df421ee44378f51e0a2e4cdbe2944ce709c7e3a041a", size = 87663 },
- { url = "https://files.pythonhosted.org/packages/ee/3f/bc72f7934c6249dac3b57a80900a80af5268a6196d32044c5140601b374a/simsimd-6.1.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3d59037c2d2f28ffeb6971adf520156d8e825844b92a9292d0926efe671eb9b", size = 242931 },
- { url = "https://files.pythonhosted.org/packages/a7/fb/9b9d056e4643e36163eae4805ac44a3bb6d1380400e65ef74931e1c27fda/simsimd-6.1.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc7159984bc38cfad2f679c055269a40a82821ff065b0bd25e6fe23c8f8ac47d", size = 290017 },
- { url = "https://files.pythonhosted.org/packages/3b/3c/3a6f8a1d95403803957022b8033391c94f116b53324a0ac3ce4ef55e893b/simsimd-6.1.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a4f80844e8571b6f5efa73672871b4fe44a3f9efb974bef60c9c9bc7d6d2e77d", size = 220335 },
- { url = "https://files.pythonhosted.org/packages/fb/c2/a3f1bd89fe18db5e6b6bdebd97effeabffda46d4eb36081d42fc9ea96730/simsimd-6.1.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:73fa058f8b0e794a7c0d02b1e05578d45271f30f260d12ad0b1bd1e9ee7a8161", size = 410893 },
- { url = "https://files.pythonhosted.org/packages/c7/2b/0422b37bb9d87c2db67323d7e709eb5c202d9f000e65c6cb396ef1b08001/simsimd-6.1.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:eca1b7936e1c3f68505f26ac492974b4ec428e402c51cfb3a72a02a5f212796a", size = 606392 },
- { url = "https://files.pythonhosted.org/packages/55/bd/821d83e27207932270eec2b03ed0f66f13a4f4bce90c2221905262bb7150/simsimd-6.1.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ef4dea5b994ee1d856c2dbbe3ae0072575f7b4bc3feb180efdff8cc9827d0119", size = 449989 },
- { url = "https://files.pythonhosted.org/packages/ea/34/e2dd2d3b1141e0042d0f3e2d25f52583530d6de638dc3bb4499c8f0eb346/simsimd-6.1.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:71b389333d3b77002988182d20d4c088d61e5965b5cb1fbe28b34de874056aca", size = 262258 },
- { url = "https://files.pythonhosted.org/packages/37/be/d2e1c39b624049531e97ef07e592e6b9e32d177cdba82c2454210190f5a6/simsimd-6.1.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:710d5e6f43a58df33894111378584cf4a54f0e2d1ce2bb7ac0d4c72add0bdc79", size = 336512 },
- { url = "https://files.pythonhosted.org/packages/17/1c/4e5415a6a27843e37dbd5315d749145fe16fc882ba3ada8544e26d038966/simsimd-6.1.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:82bc7b22695cffee7d00d18e12ad1d3f3d4d843b0d58df4c3ed89f2df9a7695f", size = 381303 },
- { url = "https://files.pythonhosted.org/packages/54/7e/c1da6ca71c256dfbbd1dd2d3ba651b9904bee81196b112aeeed7f501507c/simsimd-6.1.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:ea903969d2283cca92072ff9d56bcb0cc79d0ef69686ceb04d34145a864f04ce", size = 310114 },
- { url = "https://files.pythonhosted.org/packages/cf/fc/3a77dabcc8acf953ec2c1caddebd0256a9d9fa72c9891bbe429d1ceb3a41/simsimd-6.1.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:788c2b5e6ad4be8ca76880758f87418bfd679a81a2e484f5f3fd1a8cee47893e", size = 642844 },
- { url = "https://files.pythonhosted.org/packages/54/dd/d18df5a0daf43d1bfaec3c72dc2a0de4e6824f0462f15f7c1701c63d1ef3/simsimd-6.1.1-cp310-cp310-win32.whl", hash = "sha256:863f15810e5b6e781776fc8caa4bdfc486b5239c3476261d7eda2d62af821255", size = 52781 },
- { url = "https://files.pythonhosted.org/packages/27/63/14997e294c8aa6023b619470bda6878e3ac6a62c63a6fac1a21d5e93c9d9/simsimd-6.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:ad81721f77ee0e40b7070dbcb4d10d3e80f146b6f53f9fee87f4d7bd89d190e5", size = 82652 },
- { url = "https://files.pythonhosted.org/packages/a7/25/463f08eef35d3e9f28a26381c7dd4051aed2cd3d70d46cc27c0de46de6d4/simsimd-6.1.1-cp310-cp310-win_arm64.whl", hash = "sha256:31ffab0270f4e96356e6019c142f89ad0a8c027287da0497bfb6e0cd65a6cbf5", size = 55629 },
- { url = "https://files.pythonhosted.org/packages/35/e8/b1288b1607a816dd874443a2f7bd77a3098626a33da31851809aec5371c0/simsimd-6.1.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:eed07c9462966aa5e11cf46527e879dca10c6eb5489f097f0a04d302ff9b6955", size = 161158 },
- { url = "https://files.pythonhosted.org/packages/d9/4f/bf75ca564eb28095a77f026869d2eefbe78fc547420b4a87e1e772866bca/simsimd-6.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:040a52b0088a25b96037548b37ea50874cddc1a48655abd4013ccfec251ae25d", size = 98242 },
- { url = "https://files.pythonhosted.org/packages/80/21/e529174b10c1e924026393eca781b0ca293523c1fe9a327814f3265602c8/simsimd-6.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d05a9c650587b83ade619a9c0c3ecafc5dc6180e93ab45db228064541390da4b", size = 87664 },
- { url = "https://files.pythonhosted.org/packages/1e/9f/dcabdae6d1c6fd372f2b23bdfd4be0fed990b8534b283701fa167f273fd1/simsimd-6.1.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:97fcc29b24ef2b522c6605dfb56eed29cd675846f98f0e05647eaeca780a54ac", size = 242921 },
- { url = "https://files.pythonhosted.org/packages/f8/55/9760104044b5e629d6ca6f558e487e16429968aebc888521c177f68dbce2/simsimd-6.1.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5c63e1c53a31bffa71af573c41ce1f26a26c1b1a743af3ca5b3c40d54adb6da5", size = 290003 },
- { url = "https://files.pythonhosted.org/packages/b6/7a/4027bba28dc3ef1590d0e4843db5c917d57596fe8fbbec4f001444df1679/simsimd-6.1.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:acfbaa64208bbbd1c617eb649704c5fea023a78aa8d14b0e0d83a8b4ce1ace67", size = 220291 },
- { url = "https://files.pythonhosted.org/packages/74/92/d244c538732c9e460dece608a3a81556c4ca2c497e53e89ab0b16e5d1b01/simsimd-6.1.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:7eb3e3c5af677142e3498705e41bf5d0c872a55fbbb52ecf8217fabd3a1abfa4", size = 410885 },
- { url = "https://files.pythonhosted.org/packages/20/17/8c788fe940e5a17c9061b5824d67d5aea3adef955d2469526c77f75ccc5d/simsimd-6.1.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:47222ae2005770328d0831a311118a66a7289bd2cd109c0398ee0cb17d12f4a5", size = 606391 },
- { url = "https://files.pythonhosted.org/packages/0c/b5/74e34d33ec9d8520d9830a6f30351a9fc7438cf491cddd22382a97dcd27f/simsimd-6.1.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:4e2b1331de8600784bc19cd95adf454e243b1cebaf30d2972fad2d51588902c8", size = 449996 },
- { url = "https://files.pythonhosted.org/packages/3a/0a/cbf334502f3c1912ce304393a5186df65378cc0240836a4090ca6ed74924/simsimd-6.1.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:44cdba1b6088369c8acc22eba79f8326bde500ce021fc8c27675df7e0e3baf79", size = 262211 },
- { url = "https://files.pythonhosted.org/packages/e9/a3/65e9fb0cfed9b0cd0f7e0fe1ccb6e5bacc1252eae5872fac3b62f02db39a/simsimd-6.1.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:c457196af152e8af66994716ef731861aaa4f63684d76bd3d54e4a9e76160745", size = 336485 },
- { url = "https://files.pythonhosted.org/packages/7c/ae/f2f4fc8402387989989c653db4f130b44db8d0ae6ccdbea2ee0409e2b740/simsimd-6.1.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:51117a1bea65c04eae79a5536f129e0c7eb3626d478ae171a48db8d8dca3b00c", size = 381315 },
- { url = "https://files.pythonhosted.org/packages/4a/94/c8ac04dcb6c03533440702d321dbb5e7054c39d0422203617448725bbce3/simsimd-6.1.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:92742802e2ac6ed6af51a13740e47b1e7f20abc1b1cac05076763a688f056cd9", size = 310096 },
- { url = "https://files.pythonhosted.org/packages/0d/ed/ea04d75814bcd0e4ab84ba1f1850afbfc72915601a889095cc8ff32eea64/simsimd-6.1.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:379f295e8c5d91fff2c4b56ae55656b7acbabf66f4cace4830325ea8cdcd1d48", size = 642831 },
- { url = "https://files.pythonhosted.org/packages/01/15/ab62b3ad6baf185ecef83be5c9a1f05e7089c151f7ecde4bb35f15be943a/simsimd-6.1.1-cp311-cp311-win32.whl", hash = "sha256:310b0f8c508d12bad49fae936e5e026b59a33f8d7b40853f856a4a7d69c5e99e", size = 52744 },
- { url = "https://files.pythonhosted.org/packages/b2/01/d5457e0ef7dd6cab761e4221161a3c07054b8e1e745f08c7b20b5cae1071/simsimd-6.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:868ed84084fa4b160ddb1ea1b9a1d34ef2311019fffe8b2c939c04301a769dee", size = 82555 },
- { url = "https://files.pythonhosted.org/packages/39/18/2dfd5b1ca17eb9f7ab93afe1f09c8cafbe8bd8e48599aa225a88e9fea6d9/simsimd-6.1.1-cp311-cp311-win_arm64.whl", hash = "sha256:1e8eb7efe04d00c590a29a40aa1529c1a71f36df53b189adca2855296c22fb80", size = 57031 },
- { url = "https://files.pythonhosted.org/packages/e4/f9/92fc95a75e95513367dbb892e77c281dd18d475b656342763466bb67ae70/simsimd-6.1.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:355a1d79beacf6ea1b402af9ed833a744efebe27a447234feb74f16a424a9bef", size = 160445 },
- { url = "https://files.pythonhosted.org/packages/7c/ab/92c0ae881713f749fdbc2c8359fbaa87ce0dff6bbcbce001bc7db3e27677/simsimd-6.1.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:9b65c59379db2375634bf4802b538f9d41e7054401222c4016d874f24c1ba57a", size = 97561 },
- { url = "https://files.pythonhosted.org/packages/b3/11/1358fe6bfba82de9ee1d99373064d17af4d88850f692c6c2b4e33104758d/simsimd-6.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:af189f81f93a26f1ac28984f33739ceb237dbc3d94da873b7eb21da969e266aa", size = 87687 },
- { url = "https://files.pythonhosted.org/packages/e9/57/5964fcf9e5f364b53c03031d8998a9c8d83f3ea49e4804d786be54606472/simsimd-6.1.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:15a2e97e3ba044aa74e758182ffcc8077002f84f13e708ff3ea8d5cbe9de0f82", size = 243353 },
- { url = "https://files.pythonhosted.org/packages/49/6c/dd70ea4791abe3cf7a2c955f51940398120600b630ffeddf8d44fd403d0e/simsimd-6.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bdc4f8cf769420e2677280eface956b9e351ddeead571a6a6d07a2bbbafaeaed", size = 290409 },
- { url = "https://files.pythonhosted.org/packages/d2/c0/bc4fc69c3dfdc82427c1bad83098fae3a7eb5b3aa5d905e80454e12d4d00/simsimd-6.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:205129c20d11a3b21d45a978a1c1791dc6f362b2f0e3e8b5d7d63d1426e42415", size = 220991 },
- { url = "https://files.pythonhosted.org/packages/74/a7/a194258b9b491718dcca5144c4cf87291e5bbefac413607779af24fbfe2f/simsimd-6.1.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:5c88de3a1289bdd50bb156ac92642e1aecf24ae4ae99887bda83fd78d9a8871d", size = 411003 },
- { url = "https://files.pythonhosted.org/packages/ea/9d/a67e70101e86f768161342b4d9368cedae483c2bd7b601189eb04b80c59e/simsimd-6.1.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:671601f2622e4ef83e6f105703e4e97dc6eb0a4f212120505f4316a0c48ccab3", size = 606825 },
- { url = "https://files.pythonhosted.org/packages/0f/f5/5fa57c267aab336541af7db3254e5c11c4e3fcc7c45fbb81a3af371b1f71/simsimd-6.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3499328a4cb4cdd275bb4d197fca879b7f81d3669077493e037f59c7adc50f9b", size = 450262 },
- { url = "https://files.pythonhosted.org/packages/63/80/32400bb550ce301e0dac9651f569af40cb4a3ce89f6c16b7273d218ea9df/simsimd-6.1.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:ad725e6d1d4c8baefbf43f386c585625b9dc7ec49edceff309c20ffd81b7482e", size = 262459 },
- { url = "https://files.pythonhosted.org/packages/2c/90/c7fb8987d27bb224106587a79caca84385dc71cf50a44a244f917c972a01/simsimd-6.1.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0ed3e08cd7740e321575f69602711a3e8a8f3587e49278c346620bd048d80de4", size = 336707 },
- { url = "https://files.pythonhosted.org/packages/a4/53/66b1fe34872cb4f5d3dfa077f4a23182eff091ef6c2dc6d18b1268f968af/simsimd-6.1.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5a26e4bbe0b3f0f938886113b0b708349b029a7635fd63d1898a6f43bc793556", size = 381497 },
- { url = "https://files.pythonhosted.org/packages/05/ff/5536dccbefeb1dad08a11ba5e038e4aaad7c8272eac248d30d812646d60a/simsimd-6.1.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:733b27cca8344eb016d81512db29c11c9d78e59d3d4d6da9851a6de68dcd8282", size = 310390 },
- { url = "https://files.pythonhosted.org/packages/8f/d2/3511ee756f25dec6dad2d3cdd1fa73b2f1cbd26f1b21523b1601e4662a3f/simsimd-6.1.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f1af5e99a9ee48376c78fb0bd9b97007036e379274d75ca876fb6a44203a6bd2", size = 643121 },
- { url = "https://files.pythonhosted.org/packages/35/f4/35e31841284044e5b9fb64b070b5717154c8bca074107e0e55b3d3372f2b/simsimd-6.1.1-cp312-cp312-win32.whl", hash = "sha256:60c24639b6af1ba63f5ca32e9f41505c7749171175d4fe8b483a56465fb8bfe1", size = 52773 },
- { url = "https://files.pythonhosted.org/packages/7a/16/4f426e6aad2b173e3336ef2e83bcb13de2ffa3362e251dd8b3528d4e292f/simsimd-6.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:9d2932871dae5a61da2e0163d17d4f9755e9af778249ac1b1ab61772ab8b7047", size = 82858 },
- { url = "https://files.pythonhosted.org/packages/25/88/a85ab6bda597aac5a80c3607bfc41e7c2fc25639eb22a76d6cccdd4c00ee/simsimd-6.1.1-cp312-cp312-win_arm64.whl", hash = "sha256:0dcd78c4213412d39bb0efd8857adf909f082e7d35e3eb3abd7839dd72788500", size = 57214 },
- { url = "https://files.pythonhosted.org/packages/f0/06/e9801e3f458adda24d8f7f4b8a872ce6f80aa216b286c52fbfcda02768e4/simsimd-6.1.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:834a5ed9a69e34b6e8adc9e261e44f5c2766ce766acc0a828dfce2e13c77131a", size = 160456 },
- { url = "https://files.pythonhosted.org/packages/7a/cb/a5f03ec3a843faf771f7611c9f30161d3e5a0cc1af4a1ccb0bcedb789f28/simsimd-6.1.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:33525f8dc1a07f3fa86ed23560ab7c82cd04c61fdf5425a929afc6af2d24bbcc", size = 97562 },
- { url = "https://files.pythonhosted.org/packages/1e/2b/83e271c5f41659ddd30b2363539bed99011a4b433ccf3a83f6a29a9d2fc9/simsimd-6.1.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6fa5d29dc03d13969ef7268379bcf026e376155415adda8bf3b2160d09c52349", size = 87684 },
- { url = "https://files.pythonhosted.org/packages/43/ae/1672ac502f5c58a11003c2761896fc841e4e4d934ce43551eb20bdf71f99/simsimd-6.1.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:78f7ef532193fda2ca06a38829f5441958cd4361814e54769d336538008fc18f", size = 243397 },
- { url = "https://files.pythonhosted.org/packages/2d/03/7ee41a30b68bcbca772420db7486b34deffbfe73f19806e254fbac72353f/simsimd-6.1.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f11d0eea03c74010eade1e6c7f8574f9bdeccedd36b2d396046dd38a9a53e444", size = 290431 },
- { url = "https://files.pythonhosted.org/packages/5a/af/51ca3cf16efec07fda9cab5bca69024ccaf82db89eac217c3db39fc5a268/simsimd-6.1.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e74cae003cb56b93c6048ad308c999c282cf0830d2161c755a60d5f13c5ffb06", size = 221033 },
- { url = "https://files.pythonhosted.org/packages/a7/1a/d0ea89cffe016d09513e16dccb8f8488663f79a3a4993ab31988bcfedbce/simsimd-6.1.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:6fb38b85e5a49935916d4bea3302afeecd4f8f7a80229b6d61801c33b86cb8a7", size = 411058 },
- { url = "https://files.pythonhosted.org/packages/f5/e5/a55fab2979a2eca1348daba53b6f5d17d816a531040f84e5506b8c4269c0/simsimd-6.1.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:1e2765717b16526680096e6498ed695bb609e31d2a454fad22af7e39990dff40", size = 606841 },
- { url = "https://files.pythonhosted.org/packages/f1/05/b5b2fb5abb2a325c4932c76815cf6779f853d43ac1e4f62b273042624a03/simsimd-6.1.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b15d96b055520af1c5f8d18588d3a0a3976f717ec9076814056592e350e30a05", size = 450271 },
- { url = "https://files.pythonhosted.org/packages/4b/4e/bfde54b322b825391f96e23170124e6b29dd82a56622458c3b7bd3f451a3/simsimd-6.1.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:3ebc0ffd50ebb22648c7bcddab2d436edff117d90bced7227cde56c45d638f8e", size = 262485 },
- { url = "https://files.pythonhosted.org/packages/cb/23/44f8d007a4f0647427188dee5f91ad143186df7f872322d00e76f676dcc2/simsimd-6.1.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:de66d0ca0ad8deaab17bfe156944d9b2e43d07f0dea60752b09f61e065a96e4b", size = 336720 },
- { url = "https://files.pythonhosted.org/packages/df/1b/1e01bd23151059ab1e2a7010fcf3336d702b239d45be943b7ac0e16b7ff7/simsimd-6.1.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:0af1c1fd4bedb1d7587c3004f903e12eebeb177b78acbe7df32089a246ce5981", size = 381526 },
- { url = "https://files.pythonhosted.org/packages/27/33/8b9724bcc21aef9bb37f67691537bb9315a77d05e23094294511723298a3/simsimd-6.1.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:d3108ac0834e2372b254006d043702e5033c6d94000784b1f5d05ebebd05efba", size = 310433 },
- { url = "https://files.pythonhosted.org/packages/c6/f6/1595b53305a04a5fd27dc512ac4eba7d339e1b17d5ff446489c798a0dd74/simsimd-6.1.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:236a8141d4bda45c17b7da027d990c5c58774420a3fa66973b09bdb0ea1276d4", size = 643149 },
- { url = "https://files.pythonhosted.org/packages/ff/46/c6e2a82e5042380c495b854fa406ab121f41de5b20a098fdd9257ef184d1/simsimd-6.1.1-cp313-cp313-win32.whl", hash = "sha256:53739e2eae410e450caa3f5b6096c240501b5269fe0f884afff31f4bae37be68", size = 52773 },
- { url = "https://files.pythonhosted.org/packages/5d/2f/3db2c9138f1644c6609a8bd147786a2ac54768b14cb92f60e9f8985539f8/simsimd-6.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:4e985dd281aef36bf7d6b6063e16a9f7c97d1b1fc0f871780c0cf82bda7b7680", size = 82865 },
- { url = "https://files.pythonhosted.org/packages/e0/06/08b099c95c23e58177397e8b5c7fc9693aecb0d4a028438e0f7efe3184a1/simsimd-6.1.1-cp313-cp313-win_arm64.whl", hash = "sha256:c37424153b73c15118e53cc6d8a92dffbf06bbaba5a9199083d21e92a0f880dd", size = 57217 },
+version = "6.2.1"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/da/1c/90e6ec0f0de20108fdd7d5665ac2916b1e8c893ce2f8d7481fd37eabbb97/simsimd-6.2.1.tar.gz", hash = "sha256:5e202c5386a4141946b7aee05faac8ebc2e36bca0a360b24080e57b59bc4ef6a", size = 165828 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/36/95/66c0485fd0734c6d77a96a11b7ec52a21c8a368b48f8400dcc8b5593685e/simsimd-6.2.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:9c79486cf75eb06c5e1f623e8315f9fb73620ac63b846d5a6c843f14905de43f", size = 170242 },
+ { url = "https://files.pythonhosted.org/packages/fb/c1/7c535b65aa1bcb0aef18407859f188ec5afc9404f6ad57e79e6ce74321a4/simsimd-6.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:104d53f2489dcbf569b8260d678e2183af605510115dc2b22ed0340aa47fe892", size = 102331 },
+ { url = "https://files.pythonhosted.org/packages/44/c5/fe1915c70f82733782f57e9410bd92936a51ba6f5d2408aa98204a16885c/simsimd-6.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fef886c8220d3566b9f43d441226ca267a11682dea5496bb6e007f655eee1fd1", size = 93455 },
+ { url = "https://files.pythonhosted.org/packages/a7/b0/9a7df126e36bf1397c31f1e2482857183b5eac61141cf72041d730fd5b4d/simsimd-6.2.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:522e56451481bff3468653c2818ad1240b4cb13cff0ec76bc88d8860bfc775c9", size = 251045 },
+ { url = "https://files.pythonhosted.org/packages/16/6a/15578d772bb4b5506b5617d078557296fce74b7206bb1c9d3fe6db0e47c8/simsimd-6.2.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a5dfb02fa141a6e039803044930753aef1df5ed05cae8b14fe348cdc160cef1e", size = 302448 },
+ { url = "https://files.pythonhosted.org/packages/49/51/cbf5f43c8cb1c9e173a040004ebb7726b87936e5110b15916510c1b7fa32/simsimd-6.2.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:39eb6abdd44adfddec181a713e9cfad8742d03abbc6247c4e5ca2caee38e4775", size = 227246 },
+ { url = "https://files.pythonhosted.org/packages/9e/56/3f3609cbeaf9393158ef5ee5cf60b8e2190bb87925e21a43dd321c52a05f/simsimd-6.2.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:9ca68b9d2cc1c19af6afe6f01a764861fc8bb919d688a64cf0b0ac0abae7e0fa", size = 432346 },
+ { url = "https://files.pythonhosted.org/packages/56/53/13629d84b95b9373b7ce1447c43fc09da448d521bfa93eb02a8806ec0a50/simsimd-6.2.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:2b56b1ca7b76c0d4515938a036e688b73a866b19e6f6eb743596144fdf498a0c", size = 632661 },
+ { url = "https://files.pythonhosted.org/packages/d7/52/6361628a462b6e753f1ed9d5de9c4e1f3d35ced2922c7e196ce4e45d81fa/simsimd-6.2.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:02d7b7c7afecc63ddf501460f09c1da90625bfd59b4da5fda126c1aa5c54bb95", size = 468411 },
+ { url = "https://files.pythonhosted.org/packages/ef/f1/f56395d5885a3a19268d8f62589e3cc5b37b7c0f407fcf89bacf1d57397c/simsimd-6.2.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:8abc529daf0a61649ca4a237cd9e63723f3355394686898654c643bd63846cf5", size = 268931 },
+ { url = "https://files.pythonhosted.org/packages/b1/90/597c8756697b7fdb7f4b6e7d7e4c85207b449c286b6bf8a6c3815798bc33/simsimd-6.2.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:9ea60422d0f45d3a1899984c3fc3a14dbd248cfca8f67c24751029441464a806", size = 344281 },
+ { url = "https://files.pythonhosted.org/packages/16/fb/9b976f87db319ad95b541f94232a1cc6d0d3c16b01f910e1f8b967b241d5/simsimd-6.2.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:98e38a0ca4805c1de2882d0641b54e249eabca4ed2980c82465822130d7f8c98", size = 389374 },
+ { url = "https://files.pythonhosted.org/packages/da/e1/d3e41accb2a4a3b6fd46c7900c49e36b7d426e20e49e06b3418316eba2b9/simsimd-6.2.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:cbbc2434286493b88f3b8211e922d37b46588b34d4cc28f3262f154c8ca1141c", size = 316688 },
+ { url = "https://files.pythonhosted.org/packages/28/1f/c8cc75df5d386071e067ca22d54b6629eb6d600879e223bba3ddf96849d7/simsimd-6.2.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:4f2ecd459f4917facdb287c42c5e68030b21cb98edac0fec9919a7215968e38a", size = 669697 },
+ { url = "https://files.pythonhosted.org/packages/ab/cc/d4a0f90706432fa3b5cbde390ec7f213e7639ce6cf87be0f9f19ff8a23d9/simsimd-6.2.1-cp310-cp310-win32.whl", hash = "sha256:4ec31c076dc839114bff5d83526ddf46551d4720cc8cd0f16516896809a4fca6", size = 55008 },
+ { url = "https://files.pythonhosted.org/packages/9b/e6/33ea89f17e83a8743f9461c85f926203ef5a82782c4a72263571b7186427/simsimd-6.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:94282e040be985c993d415290371f6b22bec3eeadafe747a6d8dfbd2c317f35e", size = 86852 },
+ { url = "https://files.pythonhosted.org/packages/ad/30/65252e79ef62807c33e22f1df04b3dbd16ceda5ecc88bf46de239a4516c3/simsimd-6.2.1-cp310-cp310-win_arm64.whl", hash = "sha256:0784e98ca48a0075fb0cbd7782df11eaa17ce15c60f09a65e8477864208afb8a", size = 60194 },
+ { url = "https://files.pythonhosted.org/packages/a7/5f/361cee272fd6c88f33e14e233792f59dd58836ea8c776344f7445a829ca2/simsimd-6.2.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e9614309af75be4d08a051dc61ed5cf41b5239b8303b37dc2f9c8a7223534392", size = 170254 },
+ { url = "https://files.pythonhosted.org/packages/b8/88/edf4442ec655765d570bfb6cef81dfb12c8829c28e580459bac8a4847fb5/simsimd-6.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ea4f0f68be5f85bbcf4322bfdd1b449176cf5fdd99960c546514457635632443", size = 102331 },
+ { url = "https://files.pythonhosted.org/packages/5d/2b/9e7d42ac54bdb32d76953db3bc83eec29bd5d5c9a4069d380b18e200d6bd/simsimd-6.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:12a8d60ccc8991dfbbf056c221ce4f02135f5892492894972f421a6f155015d9", size = 93455 },
+ { url = "https://files.pythonhosted.org/packages/13/9c/fac1167e80328d1e332f515c9cd62da4a0e12b9aa8ee90d448eb4ad5a47f/simsimd-6.2.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a74142ea21a6fd3ec5c64e4d4acf1ec6f4d80c0bb1a5989d68af6e84f7ac612e", size = 251040 },
+ { url = "https://files.pythonhosted.org/packages/31/93/b374e5538fc65cf381920bdba7603769b1b71e42afe2bb4939e9c338c423/simsimd-6.2.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:298f7c793fc2a1eeedcefa1278eb2ef6f52ce0b36aaa8780885f96a39ce1a4e8", size = 302428 },
+ { url = "https://files.pythonhosted.org/packages/e6/42/2733a0e11b660c6b10f3ec90d7fac6f96267368b961b1a43dda0456fa9f2/simsimd-6.2.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4025ebad36fb3fa5cffcd48d33375d5e5decc59c1129a259b74fed097eab1ab5", size = 227200 },
+ { url = "https://files.pythonhosted.org/packages/eb/ae/40e0804d06a351efe27bb6f8e4d332daeb1681d3f398ca10d8a2b087ab78/simsimd-6.2.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:f486682aa7a8918d86df411d3c11c635db4b67d514cb6bb499c0edab7fb8ec58", size = 432333 },
+ { url = "https://files.pythonhosted.org/packages/a7/eb/a823b0227b5dc43de8125f502237dd8e844b1e803a74e46aa7c3d0f24f83/simsimd-6.2.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:173e66699597a4fcf6fa50b52cced40216fdcfba15f60b761a2bd9cb1d98a444", size = 632659 },
+ { url = "https://files.pythonhosted.org/packages/0a/aa/aee48063c4a98aaea062316dedf598d0d9e09fa9edc28baab6886ae0afa8/simsimd-6.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5b5c6f79f797cc020a2ff64950162dfb6d130c51a07cdac5ad97ec836e85ce50", size = 468407 },
+ { url = "https://files.pythonhosted.org/packages/d4/84/e89bc71456aa2d48e5acf3795b2384f597de643f17d00d752aa8217af233/simsimd-6.2.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:25812637f43feaef1a33ae00b81a4d2b0116aadae3a08267486c1e57236fc368", size = 268908 },
+ { url = "https://files.pythonhosted.org/packages/94/eb/774debec7ee727f436f15e5b5416b781c78564fff97c81a5fb3b636b4298/simsimd-6.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:592a578c788a9cb7877eff41487cc7f50474e00f774de74bea8590fa95c804ae", size = 344256 },
+ { url = "https://files.pythonhosted.org/packages/62/03/fec040e7fbb66fa4766ca959cfd766a22d7a00a4e9371f046d8fcc62d846/simsimd-6.2.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:191c020f312350ac06eee829376b11d8c1282da8fefb4381fe0625edfb678d8d", size = 389403 },
+ { url = "https://files.pythonhosted.org/packages/55/f0/ad441d90a4dde6e100155931fa4468e33cc23276c3caef6330d2a34b866c/simsimd-6.2.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:e9ad2c247ed58ba9bb170a01295cb315a45c817775cc7e51ad342f70978a1057", size = 316665 },
+ { url = "https://files.pythonhosted.org/packages/05/27/843adbc6a468a58178dcb7907e72c670c8a7c36a06d8a4c5eac9573f5d2d/simsimd-6.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0ff603134600da12175e66b842b7a7331c827fa070d1d8b63386a40bc8d09fcd", size = 669697 },
+ { url = "https://files.pythonhosted.org/packages/6d/db/d2369e0d3b9ca469b923bc81d57dcfed922193e4e4d7cf5f7637df14dd51/simsimd-6.2.1-cp311-cp311-win32.whl", hash = "sha256:99dff4e04663c82284152ecc2e8bf76b2825f3f17e179abf7892e06196061056", size = 55007 },
+ { url = "https://files.pythonhosted.org/packages/73/9f/13d6fca5a32a062e84db0a68433ae416073986c8e1d20b5b936cad18bece/simsimd-6.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:0efc6343c440a26cf16463c4c667655af9597bcbd55ad66f33a80b2b84de7412", size = 86855 },
+ { url = "https://files.pythonhosted.org/packages/64/e9/7e0514f32c9a0e42261f598775b34a858477e0fcffccf32cc11f94e78ee2/simsimd-6.2.1-cp311-cp311-win_arm64.whl", hash = "sha256:2d364f2c24dd38578bf0eec436c4b901c900ae1893680f46eb5632e01330d814", size = 60195 },
+ { url = "https://files.pythonhosted.org/packages/81/87/1f521d471d9079d89dd6860b9dd5d0f39c1633675a30b71acd0bd37cbba5/simsimd-6.2.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9b3315e41bb759dc038ecd6f4fa7bcf278bf72ee7d982f752482cdc732aea271", size = 169397 },
+ { url = "https://files.pythonhosted.org/packages/4b/1a/b0627589737dc75ccd2ed58893e9e7f8b8e082531bd34d319481d88018d5/simsimd-6.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8d476c874bafa0d12d4c8c5c47faf17407f3c96140616384421c2aa980342b6f", size = 101478 },
+ { url = "https://files.pythonhosted.org/packages/e0/b7/e766f0ce9b595927ae1c534f1409b768187e8af567f4412ca220b67c1155/simsimd-6.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e9d4f15c06cc221d29e181197c7bbf92c5e829220cbeb3cd1cf080de78b04f2a", size = 93439 },
+ { url = "https://files.pythonhosted.org/packages/ae/48/3b5ec9b3a6063bae2f280f5168aca7099a44fa7ec8b42875b98c79c1d49b/simsimd-6.2.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d286fd4538cb1a1c70e69da00a3acee301519d578931b41161f4f1379d1195c6", size = 251469 },
+ { url = "https://files.pythonhosted.org/packages/70/86/16e8d5b9bdd34f75c7515adfad249f394653131bd1a1366076cf6113e84b/simsimd-6.2.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:050f68cfa85f1fb2cfa156280928e42926e3977034b755023ce1315bf59e87ff", size = 302974 },
+ { url = "https://files.pythonhosted.org/packages/02/09/3f4240f2b43957aa0d72a2203b2549c0326c7baf97b7f78c72d48d4cd3d2/simsimd-6.2.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:67bb4b17e04919545f29c7b708faaccbe027f164f8b5c9f4328604fa8f5560ea", size = 227864 },
+ { url = "https://files.pythonhosted.org/packages/07/4a/8c46806493c3a98025f01d81d9f55e0e574f11279c2ad77be919262ea9eb/simsimd-6.2.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:3d6bffd999dbb36e606b065e0180365efac2606049c4f7818e4cba2d34c3678f", size = 432491 },
+ { url = "https://files.pythonhosted.org/packages/13/44/b56f207031405af52c6158c40e9f1121fe3a716d98946d9fa5919cf00266/simsimd-6.2.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:25adb244fb75dbf49af0d1bcac4ed4a3fef8e847d78449faa5595af0a3e20d61", size = 633061 },
+ { url = "https://files.pythonhosted.org/packages/4c/ad/241f87641af09a1789af8df559aa86b45218d087e09c37c2dd8c013819d6/simsimd-6.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b4542cee77e801a9c27370fc36ae271514fc0fb2ce14a35f8b25f47989e3d267", size = 468544 },
+ { url = "https://files.pythonhosted.org/packages/e2/3e/357aca7df85ed1092dfa50b91cf1b7c0df6f70b384a0e3798132dd824b5c/simsimd-6.2.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:4f665228f8ff4911790b485e74b00fa9586a141dde6011970be71bb303b5a22f", size = 269133 },
+ { url = "https://files.pythonhosted.org/packages/f0/67/079ca2c58bbc5812802c6ac1b332a6ef889d73cf1188726f36edc27898f6/simsimd-6.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:783b4308f80ae00763b0eaa0dac26196958f9c2df60d35a0347ebd2f82ece46d", size = 344412 },
+ { url = "https://files.pythonhosted.org/packages/3c/f0/500c9002276259c17e3a6a13a7c7f84e5119602decadbf40429c978655b0/simsimd-6.2.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:95055e72cfe313c1c8694783bf8a631cc15673b3b775abef367e396d931db0b8", size = 389546 },
+ { url = "https://files.pythonhosted.org/packages/55/a2/d3f4c6aabba0430758367b3de5bbab59b979bf3525c039b882001f1d2ade/simsimd-6.2.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:a98f2b383f51b4f4ee568a637fc7958a347fdae0bd184cff8faa8030b6454a39", size = 316912 },
+ { url = "https://files.pythonhosted.org/packages/f8/a3/2514189c3aaa1beb1714b36be86e2d3af7067c3c95152d78cc4cffff6d87/simsimd-6.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2e474fd10ceb38e2c9f826108a7762f8ff7912974846d86f08c4e7b19cd35ed4", size = 670006 },
+ { url = "https://files.pythonhosted.org/packages/ef/23/dbf7c4aed7542260784dc7bc2056a4e5b6d716a14a9b40989d5c3096990a/simsimd-6.2.1-cp312-cp312-win32.whl", hash = "sha256:b2530ea44fffeab25e5752bec6a5991f30fbc430b04647980db5b195c0971d48", size = 55019 },
+ { url = "https://files.pythonhosted.org/packages/a0/d8/57304c2317822634abd475f5912584a3cfa13363740e9ec72c0622c894f1/simsimd-6.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:dc23283235d5b8f0373b95a547e26da2d7785647a5d0fa15c282fc8c49c0dcb0", size = 87133 },
+ { url = "https://files.pythonhosted.org/packages/3f/7b/ca333232a8bc87d1e846fa2feb9f0d4778500c30493726cb48f04551dfab/simsimd-6.2.1-cp312-cp312-win_arm64.whl", hash = "sha256:5692ce7e56253178eea9dbd58191734918409b83d54b07cfdcecf868d0150a73", size = 60401 },
+ { url = "https://files.pythonhosted.org/packages/9b/f2/4ec7ed52c910a58a07043c5f3355adf4055246dafb79be57d0726e1a4aa0/simsimd-6.2.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:76b32fdc7142c9714e94651ece8bc00dd5139c554813211552aa358e44af0e07", size = 169399 },
+ { url = "https://files.pythonhosted.org/packages/61/d3/5af24e4f42e2b5bc3a06456ea9068d0fbcd23d8ceeb0e09fe54ed72cfdba/simsimd-6.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f44e5e2319427f94db658c6f75caae78850da505902874a1664a83ef5713f333", size = 101484 },
+ { url = "https://files.pythonhosted.org/packages/cf/86/816050f0fd0767e960c6b900e3c97fd6a4ae54a6aa5b8ef24846757a3f7d/simsimd-6.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:05323cbad7200592c2e53fbcc759e615594e8ca444ef5eddf9f3fb196ad4de9c", size = 93447 },
+ { url = "https://files.pythonhosted.org/packages/e9/7e/61dc3392eafd9fc20357b448aac5f84c84ad61289ab0ab3e5a4aaa1ca3ef/simsimd-6.2.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b1f3cbe5c39db2bb64f30999104de1215ba3805d6059af7bc5a9d662d50f4707", size = 251501 },
+ { url = "https://files.pythonhosted.org/packages/06/55/99d3cf2c2d844c1a57d81379acaebac2e0a0efdf1e73a53990cd84c1d719/simsimd-6.2.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eaa94e0932ae2a48b7e4df8c29204dc9fe59f72b1faeb08e9d5015bf51fb9f21", size = 302991 },
+ { url = "https://files.pythonhosted.org/packages/6f/99/597b322835147f407e6f611810cb8232055711398fbbd47e6a14bfc0995f/simsimd-6.2.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:508465f8d4e3e0fff07c939921aeedf55b0ade9f56f64e938c350c283dea42fb", size = 227917 },
+ { url = "https://files.pythonhosted.org/packages/ba/8a/6a6596a97d1cc7068a26935bbdd7f170a889240b8081e000aef09b6d0549/simsimd-6.2.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:ca67f6273ef544c74c48b134af756de7c98a711ccf69cd0791225f26dd449281", size = 432527 },
+ { url = "https://files.pythonhosted.org/packages/46/0e/5c6e82fa9fe9a21481fe0f6546b4986e07e42bd4d8b6f04f4475b8d7564e/simsimd-6.2.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:d470b43ce606f21f54a23fc19ad6928333e17d0956b02eb27b7b112edc156a10", size = 633095 },
+ { url = "https://files.pythonhosted.org/packages/ae/53/2e17bd16e2ca2a73cd447b89fa7059ae7275c82840f229bf917936ee800a/simsimd-6.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:59518b9834c167a1dd8900600718e95cdadc9d74525452f426aa8455a38c55ef", size = 468561 },
+ { url = "https://files.pythonhosted.org/packages/86/8b/1319605c630973741bc749b6e432e56dded2b6a7db0744b659c0de613ab3/simsimd-6.2.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:59c2978c4e402097d8a4b38f076ff98cc43e6b059d53f89736404f26e9a9bd5a", size = 269157 },
+ { url = "https://files.pythonhosted.org/packages/53/50/1cac5113a542c82d5b5399d454c578a65ba14951bfff38aef297104f72fe/simsimd-6.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:edc68e727d53ed2866dcfb625f15e52be8f1e6809f4be2147bf8d2115a2542b7", size = 344437 },
+ { url = "https://files.pythonhosted.org/packages/9a/72/44905ee0e2ed999c52ad1eebf2c8705ce2776212a6387d77355df2c76704/simsimd-6.2.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:9e5e82551d75c0e2cd0d4b8af8db1cae7b5ac6dcc076c0c760870ff81f78135b", size = 389569 },
+ { url = "https://files.pythonhosted.org/packages/ee/d6/9b4a9141ceb29150d86698553c8e0193256b069bc755e875836c14a6f12e/simsimd-6.2.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:2fa19f8c9786757d19afcbda9f8fb68de55e4f5562725ae8727f887d01bf0e4d", size = 316923 },
+ { url = "https://files.pythonhosted.org/packages/ce/c0/de6aebd58b8de8f0177395b8fd68afb9a27ec010427c4ccd6104b94b6569/simsimd-6.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5b0748aa6bd4df4c5a3f5e979aec14b26588f1b2e0d44075dcc9eaf4d555e15b", size = 670038 },
+ { url = "https://files.pythonhosted.org/packages/77/32/4c74664656231ccb43be4328dba40e9ada63d3cc1e557b1785ae0b9560b5/simsimd-6.2.1-cp313-cp313-win32.whl", hash = "sha256:7f43721e1a4ebe8d2245b0e85dd7de7153d1bf22839579d5f69a345909c68d9e", size = 55017 },
+ { url = "https://files.pythonhosted.org/packages/76/7f/57e02f6b2d09a1d42697e739b002bbe2112f8b8384d15d166154ec4cec44/simsimd-6.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:6af1565e0ef7060bc52a38e3273a8e6e92aff47835965dc5311298563475935e", size = 87138 },
+ { url = "https://files.pythonhosted.org/packages/38/b9/941876e98dd1f98c158cd5e6633dc1573d1be6daf8f2e3ad5d15e6a8024d/simsimd-6.2.1-cp313-cp313-win_arm64.whl", hash = "sha256:e690b41377c8dd157d585713b0bc35c845aee7742334bf12d1f087fc8a65b6c3", size = 60408 },
]
[[package]]
name = "six"
-version = "1.16.0"
+version = "1.17.0"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/71/39/171f1c67cd00715f190ba0b100d606d440a28c93c7714febeca8b79af85e/six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", size = 34041 }
+sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/d9/5a/e7c31adbe875f2abbb91bd84cf2dc52d792b5a01506781dbcf25c91daf11/six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254", size = 11053 },
+ { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050 },
]
[[package]]
@@ -5210,11 +5250,41 @@ wheels = [
[[package]]
name = "tomli"
-version = "2.1.0"
+version = "2.2.1"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/1e/e4/1b6cbcc82d8832dd0ce34767d5c560df8a3547ad8cbc427f34601415930a/tomli-2.1.0.tar.gz", hash = "sha256:3f646cae2aec94e17d04973e4249548320197cfabdf130015d023de4b74d8ab8", size = 16622 }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/de/f7/4da0ffe1892122c9ea096c57f64c2753ae5dd3ce85488802d11b0992cc6d/tomli-2.1.0-py3-none-any.whl", hash = "sha256:a5c57c3d1c56f5ccdf89f6523458f60ef716e210fc47c4cfb188c5ba473e0391", size = 13750 },
+sdist = { url = "https://files.pythonhosted.org/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff", size = 17175 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/43/ca/75707e6efa2b37c77dadb324ae7d9571cb424e61ea73fad7c56c2d14527f/tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249", size = 131077 },
+ { url = "https://files.pythonhosted.org/packages/c7/16/51ae563a8615d472fdbffc43a3f3d46588c264ac4f024f63f01283becfbb/tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6", size = 123429 },
+ { url = "https://files.pythonhosted.org/packages/f1/dd/4f6cd1e7b160041db83c694abc78e100473c15d54620083dbd5aae7b990e/tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a", size = 226067 },
+ { url = "https://files.pythonhosted.org/packages/a9/6b/c54ede5dc70d648cc6361eaf429304b02f2871a345bbdd51e993d6cdf550/tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee", size = 236030 },
+ { url = "https://files.pythonhosted.org/packages/1f/47/999514fa49cfaf7a92c805a86c3c43f4215621855d151b61c602abb38091/tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e", size = 240898 },
+ { url = "https://files.pythonhosted.org/packages/73/41/0a01279a7ae09ee1573b423318e7934674ce06eb33f50936655071d81a24/tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4", size = 229894 },
+ { url = "https://files.pythonhosted.org/packages/55/18/5d8bc5b0a0362311ce4d18830a5d28943667599a60d20118074ea1b01bb7/tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106", size = 245319 },
+ { url = "https://files.pythonhosted.org/packages/92/a3/7ade0576d17f3cdf5ff44d61390d4b3febb8a9fc2b480c75c47ea048c646/tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8", size = 238273 },
+ { url = "https://files.pythonhosted.org/packages/72/6f/fa64ef058ac1446a1e51110c375339b3ec6be245af9d14c87c4a6412dd32/tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff", size = 98310 },
+ { url = "https://files.pythonhosted.org/packages/6a/1c/4a2dcde4a51b81be3530565e92eda625d94dafb46dbeb15069df4caffc34/tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b", size = 108309 },
+ { url = "https://files.pythonhosted.org/packages/52/e1/f8af4c2fcde17500422858155aeb0d7e93477a0d59a98e56cbfe75070fd0/tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea", size = 132762 },
+ { url = "https://files.pythonhosted.org/packages/03/b8/152c68bb84fc00396b83e7bbddd5ec0bd3dd409db4195e2a9b3e398ad2e3/tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8", size = 123453 },
+ { url = "https://files.pythonhosted.org/packages/c8/d6/fc9267af9166f79ac528ff7e8c55c8181ded34eb4b0e93daa767b8841573/tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192", size = 233486 },
+ { url = "https://files.pythonhosted.org/packages/5c/51/51c3f2884d7bab89af25f678447ea7d297b53b5a3b5730a7cb2ef6069f07/tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222", size = 242349 },
+ { url = "https://files.pythonhosted.org/packages/ab/df/bfa89627d13a5cc22402e441e8a931ef2108403db390ff3345c05253935e/tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77", size = 252159 },
+ { url = "https://files.pythonhosted.org/packages/9e/6e/fa2b916dced65763a5168c6ccb91066f7639bdc88b48adda990db10c8c0b/tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6", size = 237243 },
+ { url = "https://files.pythonhosted.org/packages/b4/04/885d3b1f650e1153cbb93a6a9782c58a972b94ea4483ae4ac5cedd5e4a09/tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd", size = 259645 },
+ { url = "https://files.pythonhosted.org/packages/9c/de/6b432d66e986e501586da298e28ebeefd3edc2c780f3ad73d22566034239/tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e", size = 244584 },
+ { url = "https://files.pythonhosted.org/packages/1c/9a/47c0449b98e6e7d1be6cbac02f93dd79003234ddc4aaab6ba07a9a7482e2/tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98", size = 98875 },
+ { url = "https://files.pythonhosted.org/packages/ef/60/9b9638f081c6f1261e2688bd487625cd1e660d0a85bd469e91d8db969734/tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4", size = 109418 },
+ { url = "https://files.pythonhosted.org/packages/04/90/2ee5f2e0362cb8a0b6499dc44f4d7d48f8fff06d28ba46e6f1eaa61a1388/tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7", size = 132708 },
+ { url = "https://files.pythonhosted.org/packages/c0/ec/46b4108816de6b385141f082ba99e315501ccd0a2ea23db4a100dd3990ea/tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c", size = 123582 },
+ { url = "https://files.pythonhosted.org/packages/a0/bd/b470466d0137b37b68d24556c38a0cc819e8febe392d5b199dcd7f578365/tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13", size = 232543 },
+ { url = "https://files.pythonhosted.org/packages/d9/e5/82e80ff3b751373f7cead2815bcbe2d51c895b3c990686741a8e56ec42ab/tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281", size = 241691 },
+ { url = "https://files.pythonhosted.org/packages/05/7e/2a110bc2713557d6a1bfb06af23dd01e7dde52b6ee7dadc589868f9abfac/tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272", size = 251170 },
+ { url = "https://files.pythonhosted.org/packages/64/7b/22d713946efe00e0adbcdfd6d1aa119ae03fd0b60ebed51ebb3fa9f5a2e5/tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140", size = 236530 },
+ { url = "https://files.pythonhosted.org/packages/38/31/3a76f67da4b0cf37b742ca76beaf819dca0ebef26d78fc794a576e08accf/tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2", size = 258666 },
+ { url = "https://files.pythonhosted.org/packages/07/10/5af1293da642aded87e8a988753945d0cf7e00a9452d3911dd3bb354c9e2/tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744", size = 243954 },
+ { url = "https://files.pythonhosted.org/packages/5b/b9/1ed31d167be802da0fc95020d04cd27b7d7065cc6fbefdd2f9186f60d7bd/tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec", size = 98724 },
+ { url = "https://files.pythonhosted.org/packages/c7/32/b0963458706accd9afcfeb867c0f9175a741bf7b19cd424230714d722198/tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69", size = 109383 },
+ { url = "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", size = 14257 },
]
[[package]]
@@ -5261,32 +5331,32 @@ wheels = [
[[package]]
name = "tornado"
-version = "6.4.1"
+version = "6.4.2"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/ee/66/398ac7167f1c7835406888a386f6d0d26ee5dbf197d8a571300be57662d3/tornado-6.4.1.tar.gz", hash = "sha256:92d3ab53183d8c50f8204a51e6f91d18a15d5ef261e84d452800d4ff6fc504e9", size = 500623 }
+sdist = { url = "https://files.pythonhosted.org/packages/59/45/a0daf161f7d6f36c3ea5fc0c2de619746cc3dd4c76402e9db545bd920f63/tornado-6.4.2.tar.gz", hash = "sha256:92bad5b4746e9879fd7bf1eb21dce4e3fc5128d71601f80005afa39237ad620b", size = 501135 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/00/d9/c33be3c1a7564f7d42d87a8d186371a75fd142097076767a5c27da941fef/tornado-6.4.1-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:163b0aafc8e23d8cdc3c9dfb24c5368af84a81e3364745ccb4427669bf84aec8", size = 435924 },
- { url = "https://files.pythonhosted.org/packages/2e/0f/721e113a2fac2f1d7d124b3279a1da4c77622e104084f56119875019ffab/tornado-6.4.1-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6d5ce3437e18a2b66fbadb183c1d3364fb03f2be71299e7d10dbeeb69f4b2a14", size = 433883 },
- { url = "https://files.pythonhosted.org/packages/13/cf/786b8f1e6fe1c7c675e79657448178ad65e41c1c9765ef82e7f6f765c4c5/tornado-6.4.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2e20b9113cd7293f164dc46fffb13535266e713cdb87bd2d15ddb336e96cfc4", size = 437224 },
- { url = "https://files.pythonhosted.org/packages/e4/8e/a6ce4b8d5935558828b0f30f3afcb2d980566718837b3365d98e34f6067e/tornado-6.4.1-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ae50a504a740365267b2a8d1a90c9fbc86b780a39170feca9bcc1787ff80842", size = 436597 },
- { url = "https://files.pythonhosted.org/packages/22/d4/54f9d12668b58336bd30defe0307e6c61589a3e687b05c366f804b7faaf0/tornado-6.4.1-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:613bf4ddf5c7a95509218b149b555621497a6cc0d46ac341b30bd9ec19eac7f3", size = 436797 },
- { url = "https://files.pythonhosted.org/packages/cf/3f/2c792e7afa7dd8b24fad7a2ed3c2f24a5ec5110c7b43a64cb6095cc106b8/tornado-6.4.1-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:25486eb223babe3eed4b8aecbac33b37e3dd6d776bc730ca14e1bf93888b979f", size = 437516 },
- { url = "https://files.pythonhosted.org/packages/71/63/c8fc62745e669ac9009044b889fc531b6f88ac0f5f183cac79eaa950bb23/tornado-6.4.1-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:454db8a7ecfcf2ff6042dde58404164d969b6f5d58b926da15e6b23817950fc4", size = 436958 },
- { url = "https://files.pythonhosted.org/packages/94/d4/f8ac1f5bd22c15fad3b527e025ce219bd526acdbd903f52053df2baecc8b/tornado-6.4.1-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a02a08cc7a9314b006f653ce40483b9b3c12cda222d6a46d4ac63bb6c9057698", size = 436882 },
- { url = "https://files.pythonhosted.org/packages/4b/3e/a8124c21cc0bbf144d7903d2a0cadab15cadaf683fa39a0f92bc567f0d4d/tornado-6.4.1-cp38-abi3-win32.whl", hash = "sha256:d9a566c40b89757c9aa8e6f032bcdb8ca8795d7c1a9762910c722b1635c9de4d", size = 438092 },
- { url = "https://files.pythonhosted.org/packages/d9/2f/3f2f05e84a7aff787a96d5fb06821323feb370fe0baed4db6ea7b1088f32/tornado-6.4.1-cp38-abi3-win_amd64.whl", hash = "sha256:b24b8982ed444378d7f21d563f4180a2de31ced9d8d84443907a0a64da2072e7", size = 438532 },
+ { url = "https://files.pythonhosted.org/packages/26/7e/71f604d8cea1b58f82ba3590290b66da1e72d840aeb37e0d5f7291bd30db/tornado-6.4.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e828cce1123e9e44ae2a50a9de3055497ab1d0aeb440c5ac23064d9e44880da1", size = 436299 },
+ { url = "https://files.pythonhosted.org/packages/96/44/87543a3b99016d0bf54fdaab30d24bf0af2e848f1d13d34a3a5380aabe16/tornado-6.4.2-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:072ce12ada169c5b00b7d92a99ba089447ccc993ea2143c9ede887e0937aa803", size = 434253 },
+ { url = "https://files.pythonhosted.org/packages/cb/fb/fdf679b4ce51bcb7210801ef4f11fdac96e9885daa402861751353beea6e/tornado-6.4.2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a017d239bd1bb0919f72af256a970624241f070496635784d9bf0db640d3fec", size = 437602 },
+ { url = "https://files.pythonhosted.org/packages/4f/3b/e31aeffffc22b475a64dbeb273026a21b5b566f74dee48742817626c47dc/tornado-6.4.2-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c36e62ce8f63409301537222faffcef7dfc5284f27eec227389f2ad11b09d946", size = 436972 },
+ { url = "https://files.pythonhosted.org/packages/22/55/b78a464de78051a30599ceb6983b01d8f732e6f69bf37b4ed07f642ac0fc/tornado-6.4.2-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bca9eb02196e789c9cb5c3c7c0f04fb447dc2adffd95265b2c7223a8a615ccbf", size = 437173 },
+ { url = "https://files.pythonhosted.org/packages/79/5e/be4fb0d1684eb822c9a62fb18a3e44a06188f78aa466b2ad991d2ee31104/tornado-6.4.2-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:304463bd0772442ff4d0f5149c6f1c2135a1fae045adf070821c6cdc76980634", size = 437892 },
+ { url = "https://files.pythonhosted.org/packages/f5/33/4f91fdd94ea36e1d796147003b490fe60a0215ac5737b6f9c65e160d4fe0/tornado-6.4.2-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:c82c46813ba483a385ab2a99caeaedf92585a1f90defb5693351fa7e4ea0bf73", size = 437334 },
+ { url = "https://files.pythonhosted.org/packages/2b/ae/c1b22d4524b0e10da2f29a176fb2890386f7bd1f63aacf186444873a88a0/tornado-6.4.2-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:932d195ca9015956fa502c6b56af9eb06106140d844a335590c1ec7f5277d10c", size = 437261 },
+ { url = "https://files.pythonhosted.org/packages/b5/25/36dbd49ab6d179bcfc4c6c093a51795a4f3bed380543a8242ac3517a1751/tornado-6.4.2-cp38-abi3-win32.whl", hash = "sha256:2876cef82e6c5978fde1e0d5b1f919d756968d5b4282418f3146b79b58556482", size = 438463 },
+ { url = "https://files.pythonhosted.org/packages/61/cc/58b1adeb1bb46228442081e746fcdbc4540905c87e8add7c277540934edb/tornado-6.4.2-cp38-abi3-win_amd64.whl", hash = "sha256:908b71bf3ff37d81073356a5fadcc660eb10c1476ee6e2725588626ce7e5ca38", size = 438907 },
]
[[package]]
name = "tqdm"
-version = "4.67.0"
+version = "4.67.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "colorama", marker = "(platform_system == 'Windows' and sys_platform == 'darwin') or (platform_system == 'Windows' and sys_platform == 'linux') or (platform_system == 'Windows' and sys_platform == 'win32')" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/e8/4f/0153c21dc5779a49a0598c445b1978126b1344bab9ee71e53e44877e14e0/tqdm-4.67.0.tar.gz", hash = "sha256:fe5a6f95e6fe0b9755e9469b77b9c3cf850048224ecaa8293d7d2d31f97d869a", size = 169739 }
+sdist = { url = "https://files.pythonhosted.org/packages/a8/4b/29b4ef32e036bb34e4ab51796dd745cdba7ed47ad142a9f4a1eb8e0c744d/tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2", size = 169737 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/2b/78/57043611a16c655c8350b4c01b8d6abfb38cc2acb475238b62c2146186d7/tqdm-4.67.0-py3-none-any.whl", hash = "sha256:0cd8af9d56911acab92182e88d763100d4788bdf421d251616040cc4d44863be", size = 78590 },
+ { url = "https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2", size = 78540 },
]
[[package]]
@@ -5340,7 +5410,7 @@ wheels = [
[[package]]
name = "typer"
-version = "0.13.1"
+version = "0.15.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "click", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
@@ -5348,9 +5418,9 @@ dependencies = [
{ name = "shellingham", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "typing-extensions", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/76/41/49ead3ad3310545e767bcb917c759b026ca9eada5d5c150c2fb6fc555568/typer-0.13.1.tar.gz", hash = "sha256:9d444cb96cc268ce6f8b94e13b4335084cef4c079998a9f4851a90229a3bd25c", size = 98631 }
+sdist = { url = "https://files.pythonhosted.org/packages/cb/ce/dca7b219718afd37a0068f4f2530a727c2b74a8b6e8e0c0080a4c0de4fcd/typer-0.15.1.tar.gz", hash = "sha256:a0588c0a7fa68a1978a069818657778f86abe6ff5ea6abf472f940a08bfe4f0a", size = 99789 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/22/69/e90a0b4d0c16e095901679216c8ecdc728110c7c54e7b5f43a623bc4c789/typer-0.13.1-py3-none-any.whl", hash = "sha256:5b59580fd925e89463a29d363e0a43245ec02765bde9fb77d39e5d0f29dd7157", size = 44723 },
+ { url = "https://files.pythonhosted.org/packages/d0/cc/0a838ba5ca64dc832aa43f727bd586309846b0ffb2ce52422543e6075e8a/typer-0.15.1-py3-none-any.whl", hash = "sha256:7994fb7b8155b64d3402518560648446072864beefd44aa2dc36972a5972e847", size = 44908 },
]
[[package]]
@@ -5402,11 +5472,11 @@ wheels = [
[[package]]
name = "types-setuptools"
-version = "75.5.0.20241122"
+version = "75.6.0.20241126"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/f5/98/de2e82c19552d10901ded893dc182ccfbd87bc7e5a32e90644d45010218b/types_setuptools-75.5.0.20241122.tar.gz", hash = "sha256:196aaf1811cbc1c77ac1d4c4879d5308b6fdf426e56b73baadbca2a1827dadef", size = 48541 }
+sdist = { url = "https://files.pythonhosted.org/packages/c2/d2/15ede73bc3faf647af2c7bfefa90dde563a4b6bb580b1199f6255463c272/types_setuptools-75.6.0.20241126.tar.gz", hash = "sha256:7bf25ad4be39740e469f9268b6beddda6e088891fa5a27e985c6ce68bf62ace0", size = 48569 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/29/98/5690400593952e3a77d9749416f75faf48af999291c615164062a40293be/types_setuptools-75.5.0.20241122-py3-none-any.whl", hash = "sha256:d69c445f7bdd5e49d1b2441aadcee1388febcc9ad9d9d5fd33648b555e0b1c31", size = 72739 },
+ { url = "https://files.pythonhosted.org/packages/3b/a0/898a1363592d372d4103b76b7c723d84fcbde5fa4ed0c3a29102805ed7db/types_setuptools-75.6.0.20241126-py3-none-any.whl", hash = "sha256:aaae310a0e27033c1da8457d4d26ac673b0c8a0de7272d6d4708e263f2ea3b9b", size = 72732 },
]
[[package]]
@@ -5628,81 +5698,81 @@ wheels = [
[[package]]
name = "virtualenv"
-version = "20.27.1"
+version = "20.28.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "distlib", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "filelock", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "platformdirs", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/8c/b3/7b6a79c5c8cf6d90ea681310e169cf2db2884f4d583d16c6e1d5a75a4e04/virtualenv-20.27.1.tar.gz", hash = "sha256:142c6be10212543b32c6c45d3d3893dff89112cc588b7d0879ae5a1ec03a47ba", size = 6491145 }
+sdist = { url = "https://files.pythonhosted.org/packages/bf/75/53316a5a8050069228a2f6d11f32046cfa94fbb6cc3f08703f59b873de2e/virtualenv-20.28.0.tar.gz", hash = "sha256:2c9c3262bb8e7b87ea801d715fae4495e6032450c71d2309be9550e7364049aa", size = 7650368 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/ae/92/78324ff89391e00c8f4cf6b8526c41c6ef36b4ea2d2c132250b1a6fc2b8d/virtualenv-20.27.1-py3-none-any.whl", hash = "sha256:f11f1b8a29525562925f745563bfd48b189450f61fb34c4f9cc79dd5aa32a1f4", size = 3117838 },
+ { url = "https://files.pythonhosted.org/packages/10/f9/0919cf6f1432a8c4baa62511f8f8da8225432d22e83e3476f5be1a1edc6e/virtualenv-20.28.0-py3-none-any.whl", hash = "sha256:23eae1b4516ecd610481eda647f3a7c09aea295055337331bb4e6892ecce47b0", size = 4276702 },
]
[[package]]
name = "watchfiles"
-version = "0.24.0"
+version = "1.0.3"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "anyio", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/c8/27/2ba23c8cc85796e2d41976439b08d52f691655fdb9401362099502d1f0cf/watchfiles-0.24.0.tar.gz", hash = "sha256:afb72325b74fa7a428c009c1b8be4b4d7c2afedafb2982827ef2156646df2fe1", size = 37870 }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/89/a1/631c12626378b9f1538664aa221feb5c60dfafbd7f60b451f8d0bdbcdedd/watchfiles-0.24.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:083dc77dbdeef09fa44bb0f4d1df571d2e12d8a8f985dccde71ac3ac9ac067a0", size = 375096 },
- { url = "https://files.pythonhosted.org/packages/f7/5c/f27c979c8a10aaa2822286c1bffdce3db731cd1aa4224b9f86623e94bbfe/watchfiles-0.24.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e94e98c7cb94cfa6e071d401ea3342767f28eb5a06a58fafdc0d2a4974f4f35c", size = 367425 },
- { url = "https://files.pythonhosted.org/packages/74/0d/1889e5649885484d29f6c792ef274454d0a26b20d6ed5fdba5409335ccb6/watchfiles-0.24.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82ae557a8c037c42a6ef26c494d0631cacca040934b101d001100ed93d43f361", size = 437705 },
- { url = "https://files.pythonhosted.org/packages/85/8a/01d9a22e839f0d1d547af11b1fcac6ba6f889513f1b2e6f221d9d60d9585/watchfiles-0.24.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:acbfa31e315a8f14fe33e3542cbcafc55703b8f5dcbb7c1eecd30f141df50db3", size = 433636 },
- { url = "https://files.pythonhosted.org/packages/62/32/a93db78d340c7ef86cde469deb20e36c6b2a873edee81f610e94bbba4e06/watchfiles-0.24.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b74fdffce9dfcf2dc296dec8743e5b0332d15df19ae464f0e249aa871fc1c571", size = 451069 },
- { url = "https://files.pythonhosted.org/packages/99/c2/e9e2754fae3c2721c9a7736f92dab73723f1968ed72535fff29e70776008/watchfiles-0.24.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:449f43f49c8ddca87c6b3980c9284cab6bd1f5c9d9a2b00012adaaccd5e7decd", size = 469306 },
- { url = "https://files.pythonhosted.org/packages/4c/45/f317d9e3affb06c3c27c478de99f7110143e87f0f001f0f72e18d0e1ddce/watchfiles-0.24.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4abf4ad269856618f82dee296ac66b0cd1d71450fc3c98532d93798e73399b7a", size = 476187 },
- { url = "https://files.pythonhosted.org/packages/ac/d3/f1f37248abe0114916921e638f71c7d21fe77e3f2f61750e8057d0b68ef2/watchfiles-0.24.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f895d785eb6164678ff4bb5cc60c5996b3ee6df3edb28dcdeba86a13ea0465e", size = 425743 },
- { url = "https://files.pythonhosted.org/packages/2b/e8/c7037ea38d838fd81a59cd25761f106ee3ef2cfd3261787bee0c68908171/watchfiles-0.24.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7ae3e208b31be8ce7f4c2c0034f33406dd24fbce3467f77223d10cd86778471c", size = 612327 },
- { url = "https://files.pythonhosted.org/packages/a0/c5/0e6e228aafe01a7995fbfd2a4edb221bb11a2744803b65a5663fb85e5063/watchfiles-0.24.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2efec17819b0046dde35d13fb8ac7a3ad877af41ae4640f4109d9154ed30a188", size = 595096 },
- { url = "https://files.pythonhosted.org/packages/63/d5/4780e8bf3de3b4b46e7428a29654f7dc041cad6b19fd86d083e4b6f64bbe/watchfiles-0.24.0-cp310-none-win32.whl", hash = "sha256:6bdcfa3cd6fdbdd1a068a52820f46a815401cbc2cb187dd006cb076675e7b735", size = 264149 },
- { url = "https://files.pythonhosted.org/packages/fe/1b/5148898ba55fc9c111a2a4a5fb67ad3fa7eb2b3d7f0618241ed88749313d/watchfiles-0.24.0-cp310-none-win_amd64.whl", hash = "sha256:54ca90a9ae6597ae6dc00e7ed0a040ef723f84ec517d3e7ce13e63e4bc82fa04", size = 277542 },
- { url = "https://files.pythonhosted.org/packages/85/02/366ae902cd81ca5befcd1854b5c7477b378f68861597cef854bd6dc69fbe/watchfiles-0.24.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:bdcd5538e27f188dd3c804b4a8d5f52a7fc7f87e7fd6b374b8e36a4ca03db428", size = 375579 },
- { url = "https://files.pythonhosted.org/packages/bc/67/d8c9d256791fe312fea118a8a051411337c948101a24586e2df237507976/watchfiles-0.24.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2dadf8a8014fde6addfd3c379e6ed1a981c8f0a48292d662e27cabfe4239c83c", size = 367726 },
- { url = "https://files.pythonhosted.org/packages/b1/dc/a8427b21ef46386adf824a9fec4be9d16a475b850616cfd98cf09a97a2ef/watchfiles-0.24.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6509ed3f467b79d95fc62a98229f79b1a60d1b93f101e1c61d10c95a46a84f43", size = 437735 },
- { url = "https://files.pythonhosted.org/packages/3a/21/0b20bef581a9fbfef290a822c8be645432ceb05fb0741bf3c032e0d90d9a/watchfiles-0.24.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8360f7314a070c30e4c976b183d1d8d1585a4a50c5cb603f431cebcbb4f66327", size = 433644 },
- { url = "https://files.pythonhosted.org/packages/1c/e8/d5e5f71cc443c85a72e70b24269a30e529227986096abe091040d6358ea9/watchfiles-0.24.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:316449aefacf40147a9efaf3bd7c9bdd35aaba9ac5d708bd1eb5763c9a02bef5", size = 450928 },
- { url = "https://files.pythonhosted.org/packages/61/ee/bf17f5a370c2fcff49e1fec987a6a43fd798d8427ea754ce45b38f9e117a/watchfiles-0.24.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73bde715f940bea845a95247ea3e5eb17769ba1010efdc938ffcb967c634fa61", size = 469072 },
- { url = "https://files.pythonhosted.org/packages/a3/34/03b66d425986de3fc6077e74a74c78da298f8cb598887f664a4485e55543/watchfiles-0.24.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3770e260b18e7f4e576edca4c0a639f704088602e0bc921c5c2e721e3acb8d15", size = 475517 },
- { url = "https://files.pythonhosted.org/packages/70/eb/82f089c4f44b3171ad87a1b433abb4696f18eb67292909630d886e073abe/watchfiles-0.24.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa0fd7248cf533c259e59dc593a60973a73e881162b1a2f73360547132742823", size = 425480 },
- { url = "https://files.pythonhosted.org/packages/53/20/20509c8f5291e14e8a13104b1808cd7cf5c44acd5feaecb427a49d387774/watchfiles-0.24.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d7a2e3b7f5703ffbd500dabdefcbc9eafeff4b9444bbdd5d83d79eedf8428fab", size = 612322 },
- { url = "https://files.pythonhosted.org/packages/df/2b/5f65014a8cecc0a120f5587722068a975a692cadbe9fe4ea56b3d8e43f14/watchfiles-0.24.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d831ee0a50946d24a53821819b2327d5751b0c938b12c0653ea5be7dea9c82ec", size = 595094 },
- { url = "https://files.pythonhosted.org/packages/18/98/006d8043a82c0a09d282d669c88e587b3a05cabdd7f4900e402250a249ac/watchfiles-0.24.0-cp311-none-win32.whl", hash = "sha256:49d617df841a63b4445790a254013aea2120357ccacbed00253f9c2b5dc24e2d", size = 264191 },
- { url = "https://files.pythonhosted.org/packages/8a/8b/badd9247d6ec25f5f634a9b3d0d92e39c045824ec7e8afcedca8ee52c1e2/watchfiles-0.24.0-cp311-none-win_amd64.whl", hash = "sha256:d3dcb774e3568477275cc76554b5a565024b8ba3a0322f77c246bc7111c5bb9c", size = 277527 },
- { url = "https://files.pythonhosted.org/packages/af/19/35c957c84ee69d904299a38bae3614f7cede45f07f174f6d5a2f4dbd6033/watchfiles-0.24.0-cp311-none-win_arm64.whl", hash = "sha256:9301c689051a4857d5b10777da23fafb8e8e921bcf3abe6448a058d27fb67633", size = 266253 },
- { url = "https://files.pythonhosted.org/packages/35/82/92a7bb6dc82d183e304a5f84ae5437b59ee72d48cee805a9adda2488b237/watchfiles-0.24.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:7211b463695d1e995ca3feb38b69227e46dbd03947172585ecb0588f19b0d87a", size = 374137 },
- { url = "https://files.pythonhosted.org/packages/87/91/49e9a497ddaf4da5e3802d51ed67ff33024597c28f652b8ab1e7c0f5718b/watchfiles-0.24.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4b8693502d1967b00f2fb82fc1e744df128ba22f530e15b763c8d82baee15370", size = 367733 },
- { url = "https://files.pythonhosted.org/packages/0d/d8/90eb950ab4998effea2df4cf3a705dc594f6bc501c5a353073aa990be965/watchfiles-0.24.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cdab9555053399318b953a1fe1f586e945bc8d635ce9d05e617fd9fe3a4687d6", size = 437322 },
- { url = "https://files.pythonhosted.org/packages/6c/a2/300b22e7bc2a222dd91fce121cefa7b49aa0d26a627b2777e7bdfcf1110b/watchfiles-0.24.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:34e19e56d68b0dad5cff62273107cf5d9fbaf9d75c46277aa5d803b3ef8a9e9b", size = 433409 },
- { url = "https://files.pythonhosted.org/packages/99/44/27d7708a43538ed6c26708bcccdde757da8b7efb93f4871d4cc39cffa1cc/watchfiles-0.24.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:41face41f036fee09eba33a5b53a73e9a43d5cb2c53dad8e61fa6c9f91b5a51e", size = 452142 },
- { url = "https://files.pythonhosted.org/packages/b0/ec/c4e04f755be003129a2c5f3520d2c47026f00da5ecb9ef1e4f9449637571/watchfiles-0.24.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5148c2f1ea043db13ce9b0c28456e18ecc8f14f41325aa624314095b6aa2e9ea", size = 469414 },
- { url = "https://files.pythonhosted.org/packages/c5/4e/cdd7de3e7ac6432b0abf282ec4c1a1a2ec62dfe423cf269b86861667752d/watchfiles-0.24.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7e4bd963a935aaf40b625c2499f3f4f6bbd0c3776f6d3bc7c853d04824ff1c9f", size = 472962 },
- { url = "https://files.pythonhosted.org/packages/27/69/e1da9d34da7fc59db358424f5d89a56aaafe09f6961b64e36457a80a7194/watchfiles-0.24.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c79d7719d027b7a42817c5d96461a99b6a49979c143839fc37aa5748c322f234", size = 425705 },
- { url = "https://files.pythonhosted.org/packages/e8/c1/24d0f7357be89be4a43e0a656259676ea3d7a074901f47022f32e2957798/watchfiles-0.24.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:32aa53a9a63b7f01ed32e316e354e81e9da0e6267435c7243bf8ae0f10b428ef", size = 612851 },
- { url = "https://files.pythonhosted.org/packages/c7/af/175ba9b268dec56f821639c9893b506c69fd999fe6a2e2c51de420eb2f01/watchfiles-0.24.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ce72dba6a20e39a0c628258b5c308779b8697f7676c254a845715e2a1039b968", size = 594868 },
- { url = "https://files.pythonhosted.org/packages/44/81/1f701323a9f70805bc81c74c990137123344a80ea23ab9504a99492907f8/watchfiles-0.24.0-cp312-none-win32.whl", hash = "sha256:d9018153cf57fc302a2a34cb7564870b859ed9a732d16b41a9b5cb2ebed2d444", size = 264109 },
- { url = "https://files.pythonhosted.org/packages/b4/0b/32cde5bc2ebd9f351be326837c61bdeb05ad652b793f25c91cac0b48a60b/watchfiles-0.24.0-cp312-none-win_amd64.whl", hash = "sha256:551ec3ee2a3ac9cbcf48a4ec76e42c2ef938a7e905a35b42a1267fa4b1645896", size = 277055 },
- { url = "https://files.pythonhosted.org/packages/4b/81/daade76ce33d21dbec7a15afd7479de8db786e5f7b7d249263b4ea174e08/watchfiles-0.24.0-cp312-none-win_arm64.whl", hash = "sha256:b52a65e4ea43c6d149c5f8ddb0bef8d4a1e779b77591a458a893eb416624a418", size = 266169 },
- { url = "https://files.pythonhosted.org/packages/30/dc/6e9f5447ae14f645532468a84323a942996d74d5e817837a5c8ce9d16c69/watchfiles-0.24.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:3d2e3ab79a1771c530233cadfd277fcc762656d50836c77abb2e5e72b88e3a48", size = 373764 },
- { url = "https://files.pythonhosted.org/packages/79/c0/c3a9929c372816c7fc87d8149bd722608ea58dc0986d3ef7564c79ad7112/watchfiles-0.24.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:327763da824817b38ad125dcd97595f942d720d32d879f6c4ddf843e3da3fe90", size = 367873 },
- { url = "https://files.pythonhosted.org/packages/2e/11/ff9a4445a7cfc1c98caf99042df38964af12eed47d496dd5d0d90417349f/watchfiles-0.24.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd82010f8ab451dabe36054a1622870166a67cf3fce894f68895db6f74bbdc94", size = 438381 },
- { url = "https://files.pythonhosted.org/packages/48/a3/763ba18c98211d7bb6c0f417b2d7946d346cdc359d585cc28a17b48e964b/watchfiles-0.24.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d64ba08db72e5dfd5c33be1e1e687d5e4fcce09219e8aee893a4862034081d4e", size = 432809 },
- { url = "https://files.pythonhosted.org/packages/30/4c/616c111b9d40eea2547489abaf4ffc84511e86888a166d3a4522c2ba44b5/watchfiles-0.24.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1cf1f6dd7825053f3d98f6d33f6464ebdd9ee95acd74ba2c34e183086900a827", size = 451801 },
- { url = "https://files.pythonhosted.org/packages/b6/be/d7da83307863a422abbfeb12903a76e43200c90ebe5d6afd6a59d158edea/watchfiles-0.24.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:43e3e37c15a8b6fe00c1bce2473cfa8eb3484bbeecf3aefbf259227e487a03df", size = 468886 },
- { url = "https://files.pythonhosted.org/packages/1d/d3/3dfe131ee59d5e90b932cf56aba5c996309d94dafe3d02d204364c23461c/watchfiles-0.24.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:88bcd4d0fe1d8ff43675360a72def210ebad3f3f72cabfeac08d825d2639b4ab", size = 472973 },
- { url = "https://files.pythonhosted.org/packages/42/6c/279288cc5653a289290d183b60a6d80e05f439d5bfdfaf2d113738d0f932/watchfiles-0.24.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:999928c6434372fde16c8f27143d3e97201160b48a614071261701615a2a156f", size = 425282 },
- { url = "https://files.pythonhosted.org/packages/d6/d7/58afe5e85217e845edf26d8780c2d2d2ae77675eeb8d1b8b8121d799ce52/watchfiles-0.24.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:30bbd525c3262fd9f4b1865cb8d88e21161366561cd7c9e1194819e0a33ea86b", size = 612540 },
- { url = "https://files.pythonhosted.org/packages/6d/d5/b96eeb9fe3fda137200dd2f31553670cbc731b1e13164fd69b49870b76ec/watchfiles-0.24.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:edf71b01dec9f766fb285b73930f95f730bb0943500ba0566ae234b5c1618c18", size = 593625 },
- { url = "https://files.pythonhosted.org/packages/c1/e5/c326fe52ee0054107267608d8cea275e80be4455b6079491dfd9da29f46f/watchfiles-0.24.0-cp313-none-win32.whl", hash = "sha256:f4c96283fca3ee09fb044f02156d9570d156698bc3734252175a38f0e8975f07", size = 263899 },
- { url = "https://files.pythonhosted.org/packages/a6/8b/8a7755c5e7221bb35fe4af2dc44db9174f90ebf0344fd5e9b1e8b42d381e/watchfiles-0.24.0-cp313-none-win_amd64.whl", hash = "sha256:a974231b4fdd1bb7f62064a0565a6b107d27d21d9acb50c484d2cdba515b9366", size = 276622 },
- { url = "https://files.pythonhosted.org/packages/df/94/1ad200e937ec91b2a9d6b39ae1cf9c2b1a9cc88d5ceb43aa5c6962eb3c11/watchfiles-0.24.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:632676574429bee8c26be8af52af20e0c718cc7f5f67f3fb658c71928ccd4f7f", size = 376986 },
- { url = "https://files.pythonhosted.org/packages/ee/fd/d9e020d687ccf90fe95efc513fbb39a8049cf5a3ff51f53c59fcf4c47a5d/watchfiles-0.24.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:a2a9891723a735d3e2540651184be6fd5b96880c08ffe1a98bae5017e65b544b", size = 369445 },
- { url = "https://files.pythonhosted.org/packages/43/cb/c0279b35053555d10ef03559c5aebfcb0c703d9c70a7b4e532df74b9b0e8/watchfiles-0.24.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a7fa2bc0efef3e209a8199fd111b8969fe9db9c711acc46636686331eda7dd4", size = 439383 },
- { url = "https://files.pythonhosted.org/packages/8b/c4/08b3c2cda45db5169148a981c2100c744a4a222fa7ae7644937c0c002069/watchfiles-0.24.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01550ccf1d0aed6ea375ef259706af76ad009ef5b0203a3a4cce0f6024f9b68a", size = 426804 },
+sdist = { url = "https://files.pythonhosted.org/packages/3c/7e/4569184ea04b501840771b8fcecee19b2233a8b72c196061263c0ef23c0b/watchfiles-1.0.3.tar.gz", hash = "sha256:f3ff7da165c99a5412fe5dd2304dd2dbaaaa5da718aad942dcb3a178eaa70c56", size = 38185 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/cd/6c/7be04641c81209ea281b83b1174aa9d5ba53bec2a896d75a6b10428b4063/watchfiles-1.0.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:1da46bb1eefb5a37a8fb6fd52ad5d14822d67c498d99bda8754222396164ae42", size = 395213 },
+ { url = "https://files.pythonhosted.org/packages/bd/d6/99438baa225891bda882adefefc14c9023ef3cdaf9772cd47973bb566e96/watchfiles-1.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2b961b86cd3973f5822826017cad7f5a75795168cb645c3a6b30c349094e02e3", size = 384755 },
+ { url = "https://files.pythonhosted.org/packages/88/93/b10295ce8696e5e37f480ba4ae89e387e88ba425d72808c87d30f4cdefb1/watchfiles-1.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34e87c7b3464d02af87f1059fedda5484e43b153ef519e4085fe1a03dd94801e", size = 441701 },
+ { url = "https://files.pythonhosted.org/packages/c5/3a/0359b7bddb1b7cbe6fb7096805b6e2f859f0de3d6130dcab9ac635db87e2/watchfiles-1.0.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d9dd2b89a16cf7ab9c1170b5863e68de6bf83db51544875b25a5f05a7269e678", size = 447540 },
+ { url = "https://files.pythonhosted.org/packages/e2/a7/3400b4f105c68804495b76398165ffe6c00af93eab395279285f43cd0e42/watchfiles-1.0.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2b4691234d31686dca133c920f94e478b548a8e7c750f28dbbc2e4333e0d3da9", size = 472467 },
+ { url = "https://files.pythonhosted.org/packages/c3/1a/8f928800d038d4fdb1e9df6e0c380c8cee17e6fb180e1faceb3f94de6df7/watchfiles-1.0.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:90b0fe1fcea9bd6e3084b44875e179b4adcc4057a3b81402658d0eb58c98edf8", size = 494467 },
+ { url = "https://files.pythonhosted.org/packages/13/70/af75edf5b763f09e31a0f19ce045f3731db22599cb521807760b7d82b196/watchfiles-1.0.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0b90651b4cf9e158d01faa0833b073e2e37719264bcee3eac49fc3c74e7d304b", size = 492671 },
+ { url = "https://files.pythonhosted.org/packages/4a/6e/8723f4b0967cc8d94f33fc531c33d66b596090b024f449983d3a8d97cfca/watchfiles-1.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c2e9fe695ff151b42ab06501820f40d01310fbd58ba24da8923ace79cf6d702d", size = 443811 },
+ { url = "https://files.pythonhosted.org/packages/ee/5d/f3ca68a71d978d43168a65a1b4e1f72290c5350379aa148917e4ed0b2c46/watchfiles-1.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:62691f1c0894b001c7cde1195c03b7801aaa794a837bd6eef24da87d1542838d", size = 615477 },
+ { url = "https://files.pythonhosted.org/packages/0d/d0/3d27a26f276ef07ca4cd3c6766684444317ddd147943e00bdb157cfdf3c3/watchfiles-1.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:275c1b0e942d335fccb6014d79267d1b9fa45b5ac0639c297f1e856f2f532552", size = 614237 },
+ { url = "https://files.pythonhosted.org/packages/97/e9/ff30b210099d75cfa407924b3c265d3054f14b83ddf02072bd637394aab6/watchfiles-1.0.3-cp310-cp310-win32.whl", hash = "sha256:06ce08549e49ba69ccc36fc5659a3d0ff4e3a07d542b895b8a9013fcab46c2dc", size = 270798 },
+ { url = "https://files.pythonhosted.org/packages/ed/86/694f07eb91d3e81a359661b48ff6984543e50be767c50c08196155d417bf/watchfiles-1.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:f280b02827adc9d87f764972fbeb701cf5611f80b619c20568e1982a277d6146", size = 284192 },
+ { url = "https://files.pythonhosted.org/packages/24/a8/06e2d5f840b285718a09be7c71ea19b7177b005cec87b8923dd7e8541b20/watchfiles-1.0.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:ffe709b1d0bc2e9921257569675674cafb3a5f8af689ab9f3f2b3f88775b960f", size = 394821 },
+ { url = "https://files.pythonhosted.org/packages/57/9f/f98a57ada3d4b1fcd0e325aa6c307e2248ecb048f71c96fba34a602f02e7/watchfiles-1.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:418c5ce332f74939ff60691e5293e27c206c8164ce2b8ce0d9abf013003fb7fe", size = 384898 },
+ { url = "https://files.pythonhosted.org/packages/a3/31/33ba914010cbfd01033ca3727aff6585b6b2ea2b051b6fbaecdf4e2160b9/watchfiles-1.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f492d2907263d6d0d52f897a68647195bc093dafed14508a8d6817973586b6b", size = 441710 },
+ { url = "https://files.pythonhosted.org/packages/d9/dd/e56b2ef07c2c34e4152950f0ce98a1081215ef027cf39e5dab61a0f8bd95/watchfiles-1.0.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:48c9f3bc90c556a854f4cab6a79c16974099ccfa3e3e150673d82d47a4bc92c9", size = 447681 },
+ { url = "https://files.pythonhosted.org/packages/60/8f/3837df33f3d0cbef8ae59559891d688490bf2960373ea077ff11cbf79115/watchfiles-1.0.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:75d3bcfa90454dba8df12adc86b13b6d85fda97d90e708efc036c2760cc6ba44", size = 472312 },
+ { url = "https://files.pythonhosted.org/packages/5a/b3/95d103e5bb609b20f175e8acdf8b32c4b091f96f781c066fd3bff2b17778/watchfiles-1.0.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5691340f259b8f76b45fb31b98e594d46c36d1dc8285efa7975f7f50230c9093", size = 494779 },
+ { url = "https://files.pythonhosted.org/packages/4f/f0/9fdc60daf5abf7b0deb225c9b0a37fd72dc407fa33f071ae2f70e84e268c/watchfiles-1.0.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1e263cc718545b7f897baeac1f00299ab6fabe3e18caaacacb0edf6d5f35513c", size = 492090 },
+ { url = "https://files.pythonhosted.org/packages/96/e5/a9967e77f173280ab1abbfd7ead90f2b94060574968baf5e6d7cbe9dd490/watchfiles-1.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c6cf7709ed3e55704cc06f6e835bf43c03bc8e3cb8ff946bf69a2e0a78d9d77", size = 443713 },
+ { url = "https://files.pythonhosted.org/packages/60/38/e5390d4633a558878113e45d32e39d30cf58eb94e0359f41737be209321b/watchfiles-1.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:703aa5e50e465be901e0e0f9d5739add15e696d8c26c53bc6fc00eb65d7b9469", size = 615306 },
+ { url = "https://files.pythonhosted.org/packages/5c/27/8a1ee74544c93e3242ca073087b45c64367aeb6897b622e43c8172c2b421/watchfiles-1.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:bfcae6aecd9e0cb425f5145afee871465b98b75862e038d42fe91fd753ddd780", size = 614333 },
+ { url = "https://files.pythonhosted.org/packages/fc/f8/25698f5b734907662b50acf3e81996053abdfe26fcf38804d028412876a8/watchfiles-1.0.3-cp311-cp311-win32.whl", hash = "sha256:6a76494d2c5311584f22416c5a87c1e2cb954ff9b5f0988027bc4ef2a8a67181", size = 270987 },
+ { url = "https://files.pythonhosted.org/packages/39/78/f600dee7b387e6088c8d1f4c898a4340d07aecfe6406bd90ec4c1925ef08/watchfiles-1.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:cf745cbfad6389c0e331786e5fe9ae3f06e9d9c2ce2432378e1267954793975c", size = 284098 },
+ { url = "https://files.pythonhosted.org/packages/ca/6f/27ba8aec0a4b45a6063454465eefb42777158081d9df18eab5f1d6a3bd8a/watchfiles-1.0.3-cp311-cp311-win_arm64.whl", hash = "sha256:2dcc3f60c445f8ce14156854a072ceb36b83807ed803d37fdea2a50e898635d6", size = 276804 },
+ { url = "https://files.pythonhosted.org/packages/bf/a9/c8b5ab33444306e1a324cb2b51644f8458dd459e30c3841f925012893e6a/watchfiles-1.0.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:93436ed550e429da007fbafb723e0769f25bae178fbb287a94cb4ccdf42d3af3", size = 391395 },
+ { url = "https://files.pythonhosted.org/packages/ad/d3/403af5f07359863c03951796ddab265ee8cce1a6147510203d0bf43950e7/watchfiles-1.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c18f3502ad0737813c7dad70e3e1cc966cc147fbaeef47a09463bbffe70b0a00", size = 381432 },
+ { url = "https://files.pythonhosted.org/packages/f6/5f/921f2f2beabaf24b1ad81ac22bb69df8dd5771fdb68d6f34a5912a420941/watchfiles-1.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a5bc3ca468bb58a2ef50441f953e1f77b9a61bd1b8c347c8223403dc9b4ac9a", size = 441448 },
+ { url = "https://files.pythonhosted.org/packages/63/d7/67d0d750b246f248ccdb400a85a253e93e419ea5b6cbe968fa48b97a5f30/watchfiles-1.0.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0d1ec043f02ca04bf21b1b32cab155ce90c651aaf5540db8eb8ad7f7e645cba8", size = 446852 },
+ { url = "https://files.pythonhosted.org/packages/53/7c/d7cd94c7d0905f1e2f1c2232ea9bc39b1a48affd007e09c547ead96edb8f/watchfiles-1.0.3-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f58d3bfafecf3d81c15d99fc0ecf4319e80ac712c77cf0ce2661c8cf8bf84066", size = 471662 },
+ { url = "https://files.pythonhosted.org/packages/26/81/738f8e66f7525753996b8aa292f78dcec1ef77887d62e6cdfb04cc2f352f/watchfiles-1.0.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1df924ba82ae9e77340101c28d56cbaff2c991bd6fe8444a545d24075abb0a87", size = 493765 },
+ { url = "https://files.pythonhosted.org/packages/d2/50/78e21f5da24ab39114e9b24f7b0945ea1c6fc7bc9ae86cd87f8eaeb47325/watchfiles-1.0.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:632a52dcaee44792d0965c17bdfe5dc0edad5b86d6a29e53d6ad4bf92dc0ff49", size = 490558 },
+ { url = "https://files.pythonhosted.org/packages/a8/93/1873fea6354b2858eae8970991d64e9a449d87726d596490d46bf00af8ed/watchfiles-1.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bf4b459d94a0387617a1b499f314aa04d8a64b7a0747d15d425b8c8b151da0", size = 442808 },
+ { url = "https://files.pythonhosted.org/packages/4f/b4/2fc4c92fb28b029f66d04a4d430fe929284e9ff717b04bb7a3bb8a7a5605/watchfiles-1.0.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ca94c85911601b097d53caeeec30201736ad69a93f30d15672b967558df02885", size = 615287 },
+ { url = "https://files.pythonhosted.org/packages/1e/d4/93da24db39257e440240d338b617c5153ad11d361c34108f5c0e1e0743eb/watchfiles-1.0.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:65ab1fb635476f6170b07e8e21db0424de94877e4b76b7feabfe11f9a5fc12b5", size = 612812 },
+ { url = "https://files.pythonhosted.org/packages/c6/67/9fd3661c2dc0309abd6021876653d91e8b64fb279529e2cadaa3520ef3e3/watchfiles-1.0.3-cp312-cp312-win32.whl", hash = "sha256:49bc1bc26abf4f32e132652f4b3bfeec77d8f8f62f57652703ef127e85a3e38d", size = 271642 },
+ { url = "https://files.pythonhosted.org/packages/ae/aa/8c887edb78cd67f5d4d6a35c3aeb46d748643ebf962163130fb1871e2ee0/watchfiles-1.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:48681c86f2cb08348631fed788a116c89c787fdf1e6381c5febafd782f6c3b44", size = 285505 },
+ { url = "https://files.pythonhosted.org/packages/7b/31/d212fa6390f0e73a91913ada0b925b294a78d67794795371208baf73f0b5/watchfiles-1.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:9e080cf917b35b20c889225a13f290f2716748362f6071b859b60b8847a6aa43", size = 277263 },
+ { url = "https://files.pythonhosted.org/packages/36/77/0ceb864c854c59bc5326484f88a900c70b4a05e3792e0ce340689988dd5e/watchfiles-1.0.3-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:e153a690b7255c5ced17895394b4f109d5dcc2a4f35cb809374da50f0e5c456a", size = 391061 },
+ { url = "https://files.pythonhosted.org/packages/00/66/327046cfe276a6e4af1a9a58fc99321e25783e501dc68c4c82de2d1bd3a7/watchfiles-1.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ac1be85fe43b4bf9a251978ce5c3bb30e1ada9784290441f5423a28633a958a7", size = 381177 },
+ { url = "https://files.pythonhosted.org/packages/66/8a/420e2833deaa88e8ca7d94a497ec60fde610c66206a1776f049dc5ad3a4e/watchfiles-1.0.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a2ec98e31e1844eac860e70d9247db9d75440fc8f5f679c37d01914568d18721", size = 441293 },
+ { url = "https://files.pythonhosted.org/packages/58/56/2627795ecdf3f0f361458cfa74c583d5041615b9ad81bc25f8c66a6c44a2/watchfiles-1.0.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0179252846be03fa97d4d5f8233d1c620ef004855f0717712ae1c558f1974a16", size = 446209 },
+ { url = "https://files.pythonhosted.org/packages/8f/d0/11c8dcd8a9995f0c075d76f1d06068bbb7a17583a19c5be75361497a4074/watchfiles-1.0.3-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:995c374e86fa82126c03c5b4630c4e312327ecfe27761accb25b5e1d7ab50ec8", size = 471227 },
+ { url = "https://files.pythonhosted.org/packages/cb/8f/baa06574eaf48173882c4cdc3636993d0854661be7d88193e015ef996c73/watchfiles-1.0.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:29b9cb35b7f290db1c31fb2fdf8fc6d3730cfa4bca4b49761083307f441cac5a", size = 493205 },
+ { url = "https://files.pythonhosted.org/packages/ee/e8/9af886b4d3daa281047b542ffd2eb8f76dae9dd6ca0e21c5df4593b98574/watchfiles-1.0.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f8dc09ae69af50bead60783180f656ad96bd33ffbf6e7a6fce900f6d53b08f1", size = 489090 },
+ { url = "https://files.pythonhosted.org/packages/81/02/62085db54b151fc02e22d47b288d19e99031dc9af73151289a7ab6621f9a/watchfiles-1.0.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:489b80812f52a8d8c7b0d10f0d956db0efed25df2821c7a934f6143f76938bd6", size = 442610 },
+ { url = "https://files.pythonhosted.org/packages/61/81/980439c5d3fd3c69ba7124a56e1016d0b824ced2192ffbfe7062d53f524b/watchfiles-1.0.3-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:228e2247de583475d4cebf6b9af5dc9918abb99d1ef5ee737155bb39fb33f3c0", size = 614781 },
+ { url = "https://files.pythonhosted.org/packages/55/98/e11401d8e9cd5d2bd0e95e9bf750f397489681965ee0c72fb84732257912/watchfiles-1.0.3-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:1550be1a5cb3be08a3fb84636eaafa9b7119b70c71b0bed48726fd1d5aa9b868", size = 612637 },
+ { url = "https://files.pythonhosted.org/packages/50/be/8393b68f2add0f839be6863f151bd6a7b242efc6eb2ce0c9f7d135d529cc/watchfiles-1.0.3-cp313-cp313-win32.whl", hash = "sha256:16db2d7e12f94818cbf16d4c8938e4d8aaecee23826344addfaaa671a1527b07", size = 271170 },
+ { url = "https://files.pythonhosted.org/packages/f0/da/725f97a8b1b4e7b3e4331cce3ef921b12568af3af403b9f0f61ede036898/watchfiles-1.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:160eff7d1267d7b025e983ca8460e8cc67b328284967cbe29c05f3c3163711a3", size = 285246 },
+ { url = "https://files.pythonhosted.org/packages/26/48/5a75b18ad40cc69ea6e0003bb748db162a3215bbe44a1293e073876d51bd/watchfiles-1.0.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:84fac88278f42d61c519a6c75fb5296fd56710b05bbdcc74bdf85db409a03780", size = 396233 },
+ { url = "https://files.pythonhosted.org/packages/dc/b2/03ce3447a3271483b030b8bafc39be19739f9a4a23edec31c6688e8a066d/watchfiles-1.0.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:c68be72b1666d93b266714f2d4092d78dc53bd11cf91ed5a3c16527587a52e29", size = 386050 },
+ { url = "https://files.pythonhosted.org/packages/ab/0c/38914f56a95aa6ec911bb7cee617762d93aaf5a11efecadbb698d6b0b9a2/watchfiles-1.0.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:889a37e2acf43c377b5124166bece139b4c731b61492ab22e64d371cce0e6e80", size = 442404 },
+ { url = "https://files.pythonhosted.org/packages/4d/8c/a95d3ba1ccfa33a43649668f699150cce1ea795e4300c33b4c3e974a444b/watchfiles-1.0.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ca05cacf2e5c4a97d02a2878a24020daca21dbb8823b023b978210a75c79098", size = 444461 },
]
[[package]]
@@ -5716,7 +5786,7 @@ wheels = [
[[package]]
name = "weaviate-client"
-version = "4.9.4"
+version = "4.10.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "authlib", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
@@ -5725,12 +5795,11 @@ dependencies = [
{ name = "grpcio-tools", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "httpx", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "pydantic", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
- { name = "requests", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "validators", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/b6/21/0612451c4cd8a3de84fbc880bcf713f1dca32b4c6c9b6700cf406d235d6d/weaviate_client-4.9.4.tar.gz", hash = "sha256:bc3457e462e6a68e2a4adde8b9a74612dd4bc627374917fe9c127bbb27e7171f", size = 696650 }
+sdist = { url = "https://files.pythonhosted.org/packages/eb/54/a4302872c82bfdd779fe15cb39b6b51de7003a6e76e70b7a6e5c6a32c140/weaviate_client-4.10.0.tar.gz", hash = "sha256:15fb71cae2ab99d8eeddeaeeb0422702ad5fda369f32338dbee366ff7cfbf88a", size = 588965 }
wheels = [
- { url = "https://files.pythonhosted.org/packages/2f/f0/52b6b80908741ae37ed6b117b45f8752f733343358189561fa703cfb763e/weaviate_client-4.9.4-py3-none-any.whl", hash = "sha256:4965f69b8069242d19f279405be553830c2f8c0db09aa80239c8fb89079e2ad5", size = 386966 },
+ { url = "https://files.pythonhosted.org/packages/80/d5/e3e4c67d444b7ac30e44d6ff3f98d61aa2fb311247937c8e8f3820efc8b4/weaviate_client-4.10.0-py3-none-any.whl", hash = "sha256:c169f949a86fecc42dfeddab13b2d7a4b5f6ea7190db528713ebb5c99ab8fc86", size = 325448 },
]
[[package]]
@@ -5824,119 +5893,134 @@ wheels = [
[[package]]
name = "wrapt"
-version = "1.16.0"
-source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/95/4c/063a912e20bcef7124e0df97282a8af3ff3e4b603ce84c481d6d7346be0a/wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d", size = 53972 }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/a8/c6/5375258add3777494671d8cec27cdf5402abd91016dee24aa2972c61fedf/wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4", size = 37315 },
- { url = "https://files.pythonhosted.org/packages/32/12/e11adfde33444986135d8881b401e4de6cbb4cced046edc6b464e6ad7547/wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020", size = 38160 },
- { url = "https://files.pythonhosted.org/packages/70/7d/3dcc4a7e96f8d3e398450ec7703db384413f79bd6c0196e0e139055ce00f/wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440", size = 80419 },
- { url = "https://files.pythonhosted.org/packages/d1/c4/8dfdc3c2f0b38be85c8d9fdf0011ebad2f54e40897f9549a356bebb63a97/wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487", size = 72669 },
- { url = "https://files.pythonhosted.org/packages/49/83/b40bc1ad04a868b5b5bcec86349f06c1ee1ea7afe51dc3e46131e4f39308/wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf", size = 80271 },
- { url = "https://files.pythonhosted.org/packages/19/d4/cd33d3a82df73a064c9b6401d14f346e1d2fb372885f0295516ec08ed2ee/wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72", size = 84748 },
- { url = "https://files.pythonhosted.org/packages/ef/58/2fde309415b5fa98fd8f5f4a11886cbf276824c4c64d45a39da342fff6fe/wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0", size = 77522 },
- { url = "https://files.pythonhosted.org/packages/07/44/359e4724a92369b88dbf09878a7cde7393cf3da885567ea898e5904049a3/wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136", size = 84780 },
- { url = "https://files.pythonhosted.org/packages/88/8f/706f2fee019360cc1da652353330350c76aa5746b4e191082e45d6838faf/wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d", size = 35335 },
- { url = "https://files.pythonhosted.org/packages/19/2b/548d23362e3002ebbfaefe649b833fa43f6ca37ac3e95472130c4b69e0b4/wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2", size = 37528 },
- { url = "https://files.pythonhosted.org/packages/fd/03/c188ac517f402775b90d6f312955a5e53b866c964b32119f2ed76315697e/wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09", size = 37313 },
- { url = "https://files.pythonhosted.org/packages/0f/16/ea627d7817394db04518f62934a5de59874b587b792300991b3c347ff5e0/wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d", size = 38164 },
- { url = "https://files.pythonhosted.org/packages/7f/a7/f1212ba098f3de0fd244e2de0f8791ad2539c03bef6c05a9fcb03e45b089/wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389", size = 80890 },
- { url = "https://files.pythonhosted.org/packages/b7/96/bb5e08b3d6db003c9ab219c487714c13a237ee7dcc572a555eaf1ce7dc82/wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060", size = 73118 },
- { url = "https://files.pythonhosted.org/packages/6e/52/2da48b35193e39ac53cfb141467d9f259851522d0e8c87153f0ba4205fb1/wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1", size = 80746 },
- { url = "https://files.pythonhosted.org/packages/11/fb/18ec40265ab81c0e82a934de04596b6ce972c27ba2592c8b53d5585e6bcd/wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3", size = 85668 },
- { url = "https://files.pythonhosted.org/packages/0f/ef/0ecb1fa23145560431b970418dce575cfaec555ab08617d82eb92afc7ccf/wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956", size = 78556 },
- { url = "https://files.pythonhosted.org/packages/25/62/cd284b2b747f175b5a96cbd8092b32e7369edab0644c45784871528eb852/wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d", size = 85712 },
- { url = "https://files.pythonhosted.org/packages/e5/a7/47b7ff74fbadf81b696872d5ba504966591a3468f1bc86bca2f407baef68/wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362", size = 35327 },
- { url = "https://files.pythonhosted.org/packages/cf/c3/0084351951d9579ae83a3d9e38c140371e4c6b038136909235079f2e6e78/wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89", size = 37523 },
- { url = "https://files.pythonhosted.org/packages/92/17/224132494c1e23521868cdd57cd1e903f3b6a7ba6996b7b8f077ff8ac7fe/wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b", size = 37614 },
- { url = "https://files.pythonhosted.org/packages/6a/d7/cfcd73e8f4858079ac59d9db1ec5a1349bc486ae8e9ba55698cc1f4a1dff/wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36", size = 38316 },
- { url = "https://files.pythonhosted.org/packages/7e/79/5ff0a5c54bda5aec75b36453d06be4f83d5cd4932cc84b7cb2b52cee23e2/wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73", size = 86322 },
- { url = "https://files.pythonhosted.org/packages/c4/81/e799bf5d419f422d8712108837c1d9bf6ebe3cb2a81ad94413449543a923/wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809", size = 79055 },
- { url = "https://files.pythonhosted.org/packages/62/62/30ca2405de6a20448ee557ab2cd61ab9c5900be7cbd18a2639db595f0b98/wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b", size = 87291 },
- { url = "https://files.pythonhosted.org/packages/49/4e/5d2f6d7b57fc9956bf06e944eb00463551f7d52fc73ca35cfc4c2cdb7aed/wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81", size = 90374 },
- { url = "https://files.pythonhosted.org/packages/a6/9b/c2c21b44ff5b9bf14a83252a8b973fb84923764ff63db3e6dfc3895cf2e0/wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9", size = 83896 },
- { url = "https://files.pythonhosted.org/packages/14/26/93a9fa02c6f257df54d7570dfe8011995138118d11939a4ecd82cb849613/wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c", size = 91738 },
- { url = "https://files.pythonhosted.org/packages/a2/5b/4660897233eb2c8c4de3dc7cefed114c61bacb3c28327e64150dc44ee2f6/wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc", size = 35568 },
- { url = "https://files.pythonhosted.org/packages/5c/cc/8297f9658506b224aa4bd71906447dea6bb0ba629861a758c28f67428b91/wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8", size = 37653 },
- { url = "https://files.pythonhosted.org/packages/ff/21/abdedb4cdf6ff41ebf01a74087740a709e2edb146490e4d9beea054b0b7a/wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1", size = 23362 },
+version = "1.17.0"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/24/a1/fc03dca9b0432725c2e8cdbf91a349d2194cf03d8523c124faebe581de09/wrapt-1.17.0.tar.gz", hash = "sha256:16187aa2317c731170a88ef35e8937ae0f533c402872c1ee5e6d079fcf320801", size = 55542 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/99/f9/85220321e9bb1a5f72ccce6604395ae75fcb463d87dad0014dc1010bd1f1/wrapt-1.17.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2a0c23b8319848426f305f9cb0c98a6e32ee68a36264f45948ccf8e7d2b941f8", size = 38766 },
+ { url = "https://files.pythonhosted.org/packages/ff/71/ff624ff3bde91ceb65db6952cdf8947bc0111d91bd2359343bc2fa7c57fd/wrapt-1.17.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1ca5f060e205f72bec57faae5bd817a1560fcfc4af03f414b08fa29106b7e2d", size = 83262 },
+ { url = "https://files.pythonhosted.org/packages/9f/0a/814d4a121a643af99cfe55a43e9e6dd08f4a47cdac8e8f0912c018794715/wrapt-1.17.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e185ec6060e301a7e5f8461c86fb3640a7beb1a0f0208ffde7a65ec4074931df", size = 74990 },
+ { url = "https://files.pythonhosted.org/packages/cd/c7/b8c89bf5ca5c4e6a2d0565d149d549cdb4cffb8916d1d1b546b62fb79281/wrapt-1.17.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb90765dd91aed05b53cd7a87bd7f5c188fcd95960914bae0d32c5e7f899719d", size = 82712 },
+ { url = "https://files.pythonhosted.org/packages/19/7c/5977aefa8460906c1ff914fd42b11cf6c09ded5388e46e1cc6cea4ab15e9/wrapt-1.17.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:879591c2b5ab0a7184258274c42a126b74a2c3d5a329df16d69f9cee07bba6ea", size = 81705 },
+ { url = "https://files.pythonhosted.org/packages/ae/e7/233402d7bd805096bb4a8ec471f5a141421a01de3c8c957cce569772c056/wrapt-1.17.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fce6fee67c318fdfb7f285c29a82d84782ae2579c0e1b385b7f36c6e8074fffb", size = 74636 },
+ { url = "https://files.pythonhosted.org/packages/93/81/b6c32d8387d9cfbc0134f01585dee7583315c3b46dfd3ae64d47693cd078/wrapt-1.17.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0698d3a86f68abc894d537887b9bbf84d29bcfbc759e23f4644be27acf6da301", size = 81299 },
+ { url = "https://files.pythonhosted.org/packages/d1/c3/1fae15d453468c98f09519076f8d401b476d18d8d94379e839eed14c4c8b/wrapt-1.17.0-cp310-cp310-win32.whl", hash = "sha256:69d093792dc34a9c4c8a70e4973a3361c7a7578e9cd86961b2bbf38ca71e4e22", size = 36425 },
+ { url = "https://files.pythonhosted.org/packages/c6/f4/77e0886c95556f2b4caa8908ea8eb85f713fc68296a2113f8c63d50fe0fb/wrapt-1.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:f28b29dc158ca5d6ac396c8e0a2ef45c4e97bb7e65522bfc04c989e6fe814575", size = 38748 },
+ { url = "https://files.pythonhosted.org/packages/0e/40/def56538acddc2f764c157d565b9f989072a1d2f2a8e384324e2e104fc7d/wrapt-1.17.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:74bf625b1b4caaa7bad51d9003f8b07a468a704e0644a700e936c357c17dd45a", size = 38766 },
+ { url = "https://files.pythonhosted.org/packages/89/e2/8c299f384ae4364193724e2adad99f9504599d02a73ec9199bf3f406549d/wrapt-1.17.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f2a28eb35cf99d5f5bd12f5dd44a0f41d206db226535b37b0c60e9da162c3ed", size = 83730 },
+ { url = "https://files.pythonhosted.org/packages/29/ef/fcdb776b12df5ea7180d065b28fa6bb27ac785dddcd7202a0b6962bbdb47/wrapt-1.17.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:81b1289e99cf4bad07c23393ab447e5e96db0ab50974a280f7954b071d41b489", size = 75470 },
+ { url = "https://files.pythonhosted.org/packages/55/b5/698bd0bf9fbb3ddb3a2feefbb7ad0dea1205f5d7d05b9cbab54f5db731aa/wrapt-1.17.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f2939cd4a2a52ca32bc0b359015718472d7f6de870760342e7ba295be9ebaf9", size = 83168 },
+ { url = "https://files.pythonhosted.org/packages/ce/07/701a5cee28cb4d5df030d4b2649319e36f3d9fdd8000ef1d84eb06b9860d/wrapt-1.17.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6a9653131bda68a1f029c52157fd81e11f07d485df55410401f745007bd6d339", size = 82307 },
+ { url = "https://files.pythonhosted.org/packages/42/92/c48ba92cda6f74cb914dc3c5bba9650dc80b790e121c4b987f3a46b028f5/wrapt-1.17.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4e4b4385363de9052dac1a67bfb535c376f3d19c238b5f36bddc95efae15e12d", size = 75101 },
+ { url = "https://files.pythonhosted.org/packages/8a/0a/9276d3269334138b88a2947efaaf6335f61d547698e50dff672ade24f2c6/wrapt-1.17.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bdf62d25234290db1837875d4dceb2151e4ea7f9fff2ed41c0fde23ed542eb5b", size = 81835 },
+ { url = "https://files.pythonhosted.org/packages/b9/4c/39595e692753ef656ea94b51382cc9aea662fef59d7910128f5906486f0e/wrapt-1.17.0-cp311-cp311-win32.whl", hash = "sha256:5d8fd17635b262448ab8f99230fe4dac991af1dabdbb92f7a70a6afac8a7e346", size = 36412 },
+ { url = "https://files.pythonhosted.org/packages/63/bb/c293a67fb765a2ada48f48cd0f2bb957da8161439da4c03ea123b9894c02/wrapt-1.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:92a3d214d5e53cb1db8b015f30d544bc9d3f7179a05feb8f16df713cecc2620a", size = 38744 },
+ { url = "https://files.pythonhosted.org/packages/85/82/518605474beafff11f1a34759f6410ab429abff9f7881858a447e0d20712/wrapt-1.17.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:89fc28495896097622c3fc238915c79365dd0ede02f9a82ce436b13bd0ab7569", size = 38904 },
+ { url = "https://files.pythonhosted.org/packages/80/6c/17c3b2fed28edfd96d8417c865ef0b4c955dc52c4e375d86f459f14340f1/wrapt-1.17.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:875d240fdbdbe9e11f9831901fb8719da0bd4e6131f83aa9f69b96d18fae7504", size = 88622 },
+ { url = "https://files.pythonhosted.org/packages/4a/11/60ecdf3b0fd3dca18978d89acb5d095a05f23299216e925fcd2717c81d93/wrapt-1.17.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5ed16d95fd142e9c72b6c10b06514ad30e846a0d0917ab406186541fe68b451", size = 80920 },
+ { url = "https://files.pythonhosted.org/packages/d2/50/dbef1a651578a3520d4534c1e434989e3620380c1ad97e309576b47f0ada/wrapt-1.17.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18b956061b8db634120b58f668592a772e87e2e78bc1f6a906cfcaa0cc7991c1", size = 89170 },
+ { url = "https://files.pythonhosted.org/packages/44/a2/78c5956bf39955288c9e0dd62e807b308c3aa15a0f611fbff52aa8d6b5ea/wrapt-1.17.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:daba396199399ccabafbfc509037ac635a6bc18510ad1add8fd16d4739cdd106", size = 86748 },
+ { url = "https://files.pythonhosted.org/packages/99/49/2ee413c78fc0bdfebe5bee590bf3becdc1fab0096a7a9c3b5c9666b2415f/wrapt-1.17.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4d63f4d446e10ad19ed01188d6c1e1bb134cde8c18b0aa2acfd973d41fcc5ada", size = 79734 },
+ { url = "https://files.pythonhosted.org/packages/c0/8c/4221b7b270e36be90f0930fe15a4755a6ea24093f90b510166e9ed7861ea/wrapt-1.17.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8a5e7cc39a45fc430af1aefc4d77ee6bad72c5bcdb1322cfde852c15192b8bd4", size = 87552 },
+ { url = "https://files.pythonhosted.org/packages/4c/6b/1aaccf3efe58eb95e10ce8e77c8909b7a6b0da93449a92c4e6d6d10b3a3d/wrapt-1.17.0-cp312-cp312-win32.whl", hash = "sha256:0a0a1a1ec28b641f2a3a2c35cbe86c00051c04fffcfcc577ffcdd707df3f8635", size = 36647 },
+ { url = "https://files.pythonhosted.org/packages/b3/4f/243f88ac49df005b9129194c6511b3642818b3e6271ddea47a15e2ee4934/wrapt-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:3c34f6896a01b84bab196f7119770fd8466c8ae3dfa73c59c0bb281e7b588ce7", size = 38830 },
+ { url = "https://files.pythonhosted.org/packages/67/9c/38294e1bb92b055222d1b8b6591604ca4468b77b1250f59c15256437644f/wrapt-1.17.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:714c12485aa52efbc0fc0ade1e9ab3a70343db82627f90f2ecbc898fdf0bb181", size = 38904 },
+ { url = "https://files.pythonhosted.org/packages/78/b6/76597fb362cbf8913a481d41b14b049a8813cd402a5d2f84e57957c813ae/wrapt-1.17.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da427d311782324a376cacb47c1a4adc43f99fd9d996ffc1b3e8529c4074d393", size = 88608 },
+ { url = "https://files.pythonhosted.org/packages/bc/69/b500884e45b3881926b5f69188dc542fb5880019d15c8a0df1ab1dfda1f7/wrapt-1.17.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba1739fb38441a27a676f4de4123d3e858e494fac05868b7a281c0a383c098f4", size = 80879 },
+ { url = "https://files.pythonhosted.org/packages/52/31/f4cc58afe29eab8a50ac5969963010c8b60987e719c478a5024bce39bc42/wrapt-1.17.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e711fc1acc7468463bc084d1b68561e40d1eaa135d8c509a65dd534403d83d7b", size = 89119 },
+ { url = "https://files.pythonhosted.org/packages/aa/9c/05ab6bf75dbae7a9d34975fb6ee577e086c1c26cde3b6cf6051726d33c7c/wrapt-1.17.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:140ea00c87fafc42739bd74a94a5a9003f8e72c27c47cd4f61d8e05e6dec8721", size = 86778 },
+ { url = "https://files.pythonhosted.org/packages/0e/6c/4b8d42e3db355603d35fe5c9db79c28f2472a6fd1ccf4dc25ae46739672a/wrapt-1.17.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:73a96fd11d2b2e77d623a7f26e004cc31f131a365add1ce1ce9a19e55a1eef90", size = 79793 },
+ { url = "https://files.pythonhosted.org/packages/69/23/90e3a2ee210c0843b2c2a49b3b97ffcf9cad1387cb18cbeef9218631ed5a/wrapt-1.17.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:0b48554952f0f387984da81ccfa73b62e52817a4386d070c75e4db7d43a28c4a", size = 87606 },
+ { url = "https://files.pythonhosted.org/packages/5f/06/3683126491ca787d8d71d8d340e775d40767c5efedb35039d987203393b7/wrapt-1.17.0-cp313-cp313-win32.whl", hash = "sha256:498fec8da10e3e62edd1e7368f4b24aa362ac0ad931e678332d1b209aec93045", size = 36651 },
+ { url = "https://files.pythonhosted.org/packages/f1/bc/3bf6d2ca0d2c030d324ef9272bea0a8fdaff68f3d1fa7be7a61da88e51f7/wrapt-1.17.0-cp313-cp313-win_amd64.whl", hash = "sha256:fd136bb85f4568fffca995bd3c8d52080b1e5b225dbf1c2b17b66b4c5fa02838", size = 38835 },
+ { url = "https://files.pythonhosted.org/packages/ce/b5/251165c232d87197a81cd362eeb5104d661a2dd3aa1f0b33e4bf61dda8b8/wrapt-1.17.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:17fcf043d0b4724858f25b8826c36e08f9fb2e475410bece0ec44a22d533da9b", size = 40146 },
+ { url = "https://files.pythonhosted.org/packages/89/33/1e1bdd3e866eeb73d8c4755db1ceb8a80d5bd51ee4648b3f2247adec4e67/wrapt-1.17.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4a557d97f12813dc5e18dad9fa765ae44ddd56a672bb5de4825527c847d6379", size = 113444 },
+ { url = "https://files.pythonhosted.org/packages/9f/7c/94f53b065a43f5dc1fbdd8b80fd8f41284315b543805c956619c0b8d92f0/wrapt-1.17.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0229b247b0fc7dee0d36176cbb79dbaf2a9eb7ecc50ec3121f40ef443155fb1d", size = 101246 },
+ { url = "https://files.pythonhosted.org/packages/62/5d/640360baac6ea6018ed5e34e6e80e33cfbae2aefde24f117587cd5efd4b7/wrapt-1.17.0-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8425cfce27b8b20c9b89d77fb50e368d8306a90bf2b6eef2cdf5cd5083adf83f", size = 109320 },
+ { url = "https://files.pythonhosted.org/packages/e3/cf/6c7a00ae86a2e9482c91170aefe93f4ccda06c1ac86c4de637c69133da59/wrapt-1.17.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9c900108df470060174108012de06d45f514aa4ec21a191e7ab42988ff42a86c", size = 110193 },
+ { url = "https://files.pythonhosted.org/packages/cd/cc/aa718df0d20287e8f953ce0e2f70c0af0fba1d3c367db7ee8bdc46ea7003/wrapt-1.17.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:4e547b447073fc0dbfcbff15154c1be8823d10dab4ad401bdb1575e3fdedff1b", size = 100460 },
+ { url = "https://files.pythonhosted.org/packages/f7/16/9f3ac99fe1f6caaa789d67b4e3c562898b532c250769f5255fa8b8b93983/wrapt-1.17.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:914f66f3b6fc7b915d46c1cc424bc2441841083de01b90f9e81109c9759e43ab", size = 106347 },
+ { url = "https://files.pythonhosted.org/packages/64/85/c77a331b2c06af49a687f8b926fc2d111047a51e6f0b0a4baa01ff3a673a/wrapt-1.17.0-cp313-cp313t-win32.whl", hash = "sha256:a4192b45dff127c7d69b3bdfb4d3e47b64179a0b9900b6351859f3001397dabf", size = 37971 },
+ { url = "https://files.pythonhosted.org/packages/05/9b/b2469f8be9efed24283fd7b9eeb8e913e9bc0715cf919ea8645e428ab7af/wrapt-1.17.0-cp313-cp313t-win_amd64.whl", hash = "sha256:4f643df3d4419ea3f856c5c3f40fec1d65ea2e89ec812c83f7767c8730f9827a", size = 40755 },
+ { url = "https://files.pythonhosted.org/packages/4b/d9/a8ba5e9507a9af1917285d118388c5eb7a81834873f45df213a6fe923774/wrapt-1.17.0-py3-none-any.whl", hash = "sha256:d2c63b93548eda58abf5188e505ffed0229bf675f7c3090f8e36ad55b8cbc371", size = 23592 },
]
[[package]]
name = "yarl"
-version = "1.18.0"
+version = "1.18.3"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "idna", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "multidict", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
{ name = "propcache", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/5e/4b/53db4ecad4d54535aff3dfda1f00d6363d79455f62b11b8ca97b82746bd2/yarl-1.18.0.tar.gz", hash = "sha256:20d95535e7d833889982bfe7cc321b7f63bf8879788fee982c76ae2b24cfb715", size = 180098 }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/80/8b/305e1bde6bbf900bb8909a4884488764ee5950dda4da06cec885c06dae68/yarl-1.18.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:074fee89caab89a97e18ef5f29060ef61ba3cae6cd77673acc54bfdd3214b7b7", size = 141186 },
- { url = "https://files.pythonhosted.org/packages/6a/85/a15e439d8faa6bd09a536d87ca7a32daa50cf8820cf220edbced702348a0/yarl-1.18.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b026cf2c32daf48d90c0c4e406815c3f8f4cfe0c6dfccb094a9add1ff6a0e41a", size = 94097 },
- { url = "https://files.pythonhosted.org/packages/12/9d/7d39082baae943f138df1bb96914f8d53fd65eb131b9d0965917b009b35d/yarl-1.18.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ae38bd86eae3ba3d2ce5636cc9e23c80c9db2e9cb557e40b98153ed102b5a736", size = 91915 },
- { url = "https://files.pythonhosted.org/packages/c0/35/7e6fbfeb413f281dda59d4a9fce7a0c43cb1f22cb6ac25151d4c4ce51651/yarl-1.18.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:685cc37f3f307c6a8e879986c6d85328f4c637f002e219f50e2ef66f7e062c1d", size = 315086 },
- { url = "https://files.pythonhosted.org/packages/76/2e/61b854cca176d8952d1448b15d59b9b4df27648e4cc9c1a2a01449238b21/yarl-1.18.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8254dbfce84ee5d1e81051ee7a0f1536c108ba294c0fdb5933476398df0654f3", size = 330221 },
- { url = "https://files.pythonhosted.org/packages/98/66/975c36deeb069888274c2edfa9d6aef44c7574e9b11bb0687130ddd02558/yarl-1.18.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:20de4a8b04de70c49698dc2390b7fd2d18d424d3b876371f9b775e2b462d4b41", size = 326650 },
- { url = "https://files.pythonhosted.org/packages/a4/06/511e5ac4e562cbd605a05c90875e36ec5bac93da0dc55c730b4b3b09face/yarl-1.18.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0a2074a37285570d54b55820687de3d2f2b9ecf1b714e482e48c9e7c0402038", size = 319437 },
- { url = "https://files.pythonhosted.org/packages/7c/6a/8f6f8b17b28ed6eaaf20f5a80d391ae1c1bd5437af9ed552b9eb8903b11c/yarl-1.18.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3f576ed278860df2721a5d57da3381040176ef1d07def9688a385c8330db61a1", size = 309966 },
- { url = "https://files.pythonhosted.org/packages/b5/54/4d9dcbdaba18a948f8bea5b65835bfcc5a931426c79d8d2dafe45264ece8/yarl-1.18.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3a3709450a574d61be6ac53d582496014342ea34876af8dc17cc16da32826c9a", size = 319519 },
- { url = "https://files.pythonhosted.org/packages/42/b7/de7fcde2c414d33a2be5ac9c31469ad33874a26a5e3421b2a9505a1a10ee/yarl-1.18.0-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:bd80ed29761490c622edde5dd70537ca8c992c2952eb62ed46984f8eff66d6e8", size = 321455 },
- { url = "https://files.pythonhosted.org/packages/4e/49/8ed0dc1973876f20b63fe66986f300fd0721f3d644b6a64be12ec436c197/yarl-1.18.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:32141e13a1d5a48525e519c9197d3f4d9744d818d5c7d6547524cc9eccc8971e", size = 324564 },
- { url = "https://files.pythonhosted.org/packages/0c/76/63209f71efde8875670441875ef1a46383a06f578f6babf819b0cf79ebd7/yarl-1.18.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:8b8d3e4e014fb4274f1c5bf61511d2199e263909fb0b8bda2a7428b0894e8dc6", size = 336798 },
- { url = "https://files.pythonhosted.org/packages/a8/f3/77e0cdee76359dade383b61eb995a3a2efcef3d64da3222f3cf52d38bd38/yarl-1.18.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:701bb4a8f4de191c8c0cc9a1e6d5142f4df880e9d1210e333b829ca9425570ed", size = 337902 },
- { url = "https://files.pythonhosted.org/packages/96/d9/0f97875e2498196a9b5561de32f3f25208485c7b43d676a65a2ee6c12fd7/yarl-1.18.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:a45d94075ac0647621eaaf693c8751813a3eccac455d423f473ffed38c8ac5c9", size = 331620 },
- { url = "https://files.pythonhosted.org/packages/71/a3/e3bd136838d29fec4acc4919bcfd2bd33296f6c281c829fa277e72bc2590/yarl-1.18.0-cp310-cp310-win32.whl", hash = "sha256:34176bfb082add67cb2a20abd85854165540891147f88b687a5ed0dc225750a0", size = 84045 },
- { url = "https://files.pythonhosted.org/packages/fd/20/a474648c2b49c9ed5eb0e7137add6373e5d9220eda7e6d4b43d306e67672/yarl-1.18.0-cp310-cp310-win_amd64.whl", hash = "sha256:73553bbeea7d6ec88c08ad8027f4e992798f0abc459361bf06641c71972794dc", size = 90221 },
- { url = "https://files.pythonhosted.org/packages/06/45/6ad7135d1c4ad3a6a49e2c37dc78a1805a7871879c03c3495d64c9605d49/yarl-1.18.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:b8e8c516dc4e1a51d86ac975b0350735007e554c962281c432eaa5822aa9765c", size = 141283 },
- { url = "https://files.pythonhosted.org/packages/45/6d/24b70ae33107d6eba303ed0ebfdf1164fe2219656e7594ca58628ebc0f1d/yarl-1.18.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2e6b4466714a73f5251d84b471475850954f1fa6acce4d3f404da1d55d644c34", size = 94082 },
- { url = "https://files.pythonhosted.org/packages/8a/0e/da720989be11b662ca847ace58f468b52310a9b03e52ac62c144755f9d75/yarl-1.18.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c893f8c1a6d48b25961e00922724732d00b39de8bb0b451307482dc87bddcd74", size = 92017 },
- { url = "https://files.pythonhosted.org/packages/f5/76/e5c91681fa54658943cb88673fb19b3355c3a8ae911a33a2621b6320990d/yarl-1.18.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:13aaf2bdbc8c86ddce48626b15f4987f22e80d898818d735b20bd58f17292ee8", size = 340359 },
- { url = "https://files.pythonhosted.org/packages/cf/77/02cf72f09dea20980dea4ebe40dfb2c24916b864aec869a19f715428e0f0/yarl-1.18.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dd21c0128e301851de51bc607b0a6da50e82dc34e9601f4b508d08cc89ee7929", size = 356336 },
- { url = "https://files.pythonhosted.org/packages/17/66/83a88d04e4fc243dd26109f3e3d6412f67819ab1142dadbce49706ef4df4/yarl-1.18.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:205de377bd23365cd85562c9c6c33844050a93661640fda38e0567d2826b50df", size = 353730 },
- { url = "https://files.pythonhosted.org/packages/76/77/0b205a532d22756ab250ab21924d362f910a23d641c82faec1c4ad7f6077/yarl-1.18.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed69af4fe2a0949b1ea1d012bf065c77b4c7822bad4737f17807af2adb15a73c", size = 343882 },
- { url = "https://files.pythonhosted.org/packages/0b/47/2081ddce3da6096889c3947bdc21907d0fa15939909b10219254fe116841/yarl-1.18.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8e1c18890091aa3cc8a77967943476b729dc2016f4cfe11e45d89b12519d4a93", size = 335873 },
- { url = "https://files.pythonhosted.org/packages/25/3c/437304394494e757ae927c9a81bacc4bcdf7351a1d4e811d95b02cb6dbae/yarl-1.18.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:91b8fb9427e33f83ca2ba9501221ffaac1ecf0407f758c4d2f283c523da185ee", size = 347725 },
- { url = "https://files.pythonhosted.org/packages/c6/fb/fa6c642bc052fbe6370ed5da765579650510157dea354fe9e8177c3bc34a/yarl-1.18.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:536a7a8a53b75b2e98ff96edb2dfb91a26b81c4fed82782035767db5a465be46", size = 346161 },
- { url = "https://files.pythonhosted.org/packages/b0/09/8c0cf68a0fcfe3b060c9e5857bb35735bc72a4cf4075043632c636d007e9/yarl-1.18.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:a64619a9c47c25582190af38e9eb382279ad42e1f06034f14d794670796016c0", size = 349924 },
- { url = "https://files.pythonhosted.org/packages/bf/4b/1efe10fd51e2cedf53195d688fa270efbcd64a015c61d029d49c20bf0af7/yarl-1.18.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:c73a6bbc97ba1b5a0c3c992ae93d721c395bdbb120492759b94cc1ac71bc6350", size = 361865 },
- { url = "https://files.pythonhosted.org/packages/0b/1b/2b5efd6df06bf938f7e154dee8e2ab22d148f3311a92bf4da642aaaf2fc5/yarl-1.18.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:a173401d7821a2a81c7b47d4e7d5c4021375a1441af0c58611c1957445055056", size = 366030 },
- { url = "https://files.pythonhosted.org/packages/f8/db/786a5684f79278e62271038a698f56a51960f9e643be5d3eff82712f0b1c/yarl-1.18.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7520e799b1f84e095cce919bd6c23c9d49472deeef25fe1ef960b04cca51c3fc", size = 358902 },
- { url = "https://files.pythonhosted.org/packages/91/2f/437d0de062f1a3e3cb17573971b3832232443241133580c2ba3da5001d06/yarl-1.18.0-cp311-cp311-win32.whl", hash = "sha256:c4cb992d8090d5ae5f7afa6754d7211c578be0c45f54d3d94f7781c495d56716", size = 84138 },
- { url = "https://files.pythonhosted.org/packages/9d/85/035719a9266bce85ecde820aa3f8c46f3b18c3d7ba9ff51367b2fa4ae2a2/yarl-1.18.0-cp311-cp311-win_amd64.whl", hash = "sha256:52c136f348605974c9b1c878addd6b7a60e3bf2245833e370862009b86fa4689", size = 90765 },
- { url = "https://files.pythonhosted.org/packages/23/36/c579b80a5c76c0d41c8e08baddb3e6940dfc20569db579a5691392c52afa/yarl-1.18.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:1ece25e2251c28bab737bdf0519c88189b3dd9492dc086a1d77336d940c28ced", size = 142376 },
- { url = "https://files.pythonhosted.org/packages/0c/5f/e247dc7c0607a0c505fea6c839721844bee55686dfb183c7d7b8ef8a9cb1/yarl-1.18.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:454902dc1830d935c90b5b53c863ba2a98dcde0fbaa31ca2ed1ad33b2a7171c6", size = 94692 },
- { url = "https://files.pythonhosted.org/packages/eb/e1/3081b578a6f21961711b9a1c49c2947abb3b0d0dd9537378fb06777ce8ee/yarl-1.18.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:01be8688fc211dc237e628fcc209dda412d35de7642453059a0553747018d075", size = 92527 },
- { url = "https://files.pythonhosted.org/packages/2f/fa/d9e1b9fbafa4cc82cd3980b5314741b33c2fe16308d725449a23aed32021/yarl-1.18.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d26f1fa9fa2167bb238f6f4b20218eb4e88dd3ef21bb8f97439fa6b5313e30d", size = 332096 },
- { url = "https://files.pythonhosted.org/packages/93/b6/dd27165114317875838e216214fb86338dc63d2e50855a8f2a12de2a7fe5/yarl-1.18.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b234a4a9248a9f000b7a5dfe84b8cb6210ee5120ae70eb72a4dcbdb4c528f72f", size = 342047 },
- { url = "https://files.pythonhosted.org/packages/fc/9f/bad434b5279ae7a356844e14dc771c3d29eb928140bbc01621af811c8a27/yarl-1.18.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe94d1de77c4cd8caff1bd5480e22342dbd54c93929f5943495d9c1e8abe9f42", size = 341712 },
- { url = "https://files.pythonhosted.org/packages/9a/9f/63864f43d131ba8c8cdf1bde5dd3f02f0eff8a7c883a5d7fad32f204fda5/yarl-1.18.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b4c90c5363c6b0a54188122b61edb919c2cd1119684999d08cd5e538813a28e", size = 336654 },
- { url = "https://files.pythonhosted.org/packages/20/30/b4542bbd9be73de155213207eec019f6fe6495885f7dd59aa1ff705a041b/yarl-1.18.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49a98ecadc5a241c9ba06de08127ee4796e1009555efd791bac514207862b43d", size = 325484 },
- { url = "https://files.pythonhosted.org/packages/69/bc/e2a9808ec26989cf0d1b98fe7b3cc45c1c6506b5ea4fe43ece5991f28f34/yarl-1.18.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9106025c7f261f9f5144f9aa7681d43867eed06349a7cfb297a1bc804de2f0d1", size = 344213 },
- { url = "https://files.pythonhosted.org/packages/e2/17/0ee5a68886aca1a8071b0d24a1e1c0fd9970dead2ef2d5e26e027fb7ce88/yarl-1.18.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:f275ede6199d0f1ed4ea5d55a7b7573ccd40d97aee7808559e1298fe6efc8dbd", size = 340517 },
- { url = "https://files.pythonhosted.org/packages/fd/db/1fe4ef38ee852bff5ec8f5367d718b3a7dac7520f344b8e50306f68a2940/yarl-1.18.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f7edeb1dcc7f50a2c8e08b9dc13a413903b7817e72273f00878cb70e766bdb3b", size = 346234 },
- { url = "https://files.pythonhosted.org/packages/b4/ee/5e5bccdb821eb9949ba66abb4d19e3299eee00282e37b42f65236120e892/yarl-1.18.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c083f6dd6951b86e484ebfc9c3524b49bcaa9c420cb4b2a78ef9f7a512bfcc85", size = 359625 },
- { url = "https://files.pythonhosted.org/packages/3f/43/95a64d9e7ab4aa1c34fc5ea0edb35b581bc6ad33fd960a8ae34c2040b319/yarl-1.18.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:80741ec5b471fbdfb997821b2842c59660a1c930ceb42f8a84ba8ca0f25a66aa", size = 364239 },
- { url = "https://files.pythonhosted.org/packages/40/19/09ce976c624c9d3cc898f0be5035ddef0c0759d85b2313321cfe77b69915/yarl-1.18.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b1a3297b9cad594e1ff0c040d2881d7d3a74124a3c73e00c3c71526a1234a9f7", size = 357599 },
- { url = "https://files.pythonhosted.org/packages/7d/35/6f33fd29791af2ec161aebe8abe63e788c2b74a6c7e8f29c92e5f5e96849/yarl-1.18.0-cp312-cp312-win32.whl", hash = "sha256:cd6ab7d6776c186f544f893b45ee0c883542b35e8a493db74665d2e594d3ca75", size = 83832 },
- { url = "https://files.pythonhosted.org/packages/4e/8e/cdb40ef98597be107de67b11e2f1f23f911e0f1416b938885d17a338e304/yarl-1.18.0-cp312-cp312-win_amd64.whl", hash = "sha256:039c299a0864d1f43c3e31570045635034ea7021db41bf4842693a72aca8df3a", size = 90132 },
- { url = "https://files.pythonhosted.org/packages/2b/77/2196b657c66f97adaef0244e9e015f30eac0df59c31ad540f79ce328feed/yarl-1.18.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6fb64dd45453225f57d82c4764818d7a205ee31ce193e9f0086e493916bd4f72", size = 140512 },
- { url = "https://files.pythonhosted.org/packages/0e/d8/2bb6e26fddba5c01bad284e4571178c651b97e8e06318efcaa16e07eb9fd/yarl-1.18.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:3adaaf9c6b1b4fc258584f4443f24d775a2086aee82d1387e48a8b4f3d6aecf6", size = 93875 },
- { url = "https://files.pythonhosted.org/packages/54/e4/99fbb884dd9f814fb0037dc1783766bb9edcd57b32a76f3ec5ac5c5772d7/yarl-1.18.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:da206d1ec78438a563c5429ab808a2b23ad7bc025c8adbf08540dde202be37d5", size = 91705 },
- { url = "https://files.pythonhosted.org/packages/3b/a2/5bd86eca9449e6b15d3b08005cf4e58e3da972240c2bee427b358c311549/yarl-1.18.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:576d258b21c1db4c6449b1c572c75d03f16a482eb380be8003682bdbe7db2f28", size = 333325 },
- { url = "https://files.pythonhosted.org/packages/94/50/a218da5f159cd985685bc72c500bb1a7fd2d60035d2339b8a9d9e1f99194/yarl-1.18.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c60e547c0a375c4bfcdd60eef82e7e0e8698bf84c239d715f5c1278a73050393", size = 344121 },
- { url = "https://files.pythonhosted.org/packages/a4/e3/830ae465811198b4b5ebecd674b5b3dca4d222af2155eb2144bfe190bbb8/yarl-1.18.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e3818eabaefb90adeb5e0f62f047310079d426387991106d4fbf3519eec7d90a", size = 345163 },
- { url = "https://files.pythonhosted.org/packages/7a/74/05c4326877ca541eee77b1ef74b7ac8081343d3957af8f9291ca6eca6fec/yarl-1.18.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a5f72421246c21af6a92fbc8c13b6d4c5427dfd949049b937c3b731f2f9076bd", size = 339130 },
- { url = "https://files.pythonhosted.org/packages/29/42/842f35aa1dae25d132119ee92185e8c75d8b9b7c83346506bd31e9fa217f/yarl-1.18.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7fa7d37f2ada0f42e0723632993ed422f2a679af0e200874d9d861720a54f53e", size = 326418 },
- { url = "https://files.pythonhosted.org/packages/f9/ed/65c0514f2d1e8b92a61f564c914381d078766cab38b5fbde355b3b3af1fb/yarl-1.18.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:42ba84e2ac26a3f252715f8ec17e6fdc0cbf95b9617c5367579fafcd7fba50eb", size = 345204 },
- { url = "https://files.pythonhosted.org/packages/23/31/351f64f0530c372fa01160f38330f44478e7bf3092f5ce2bfcb91605561d/yarl-1.18.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:6a49ad0102c0f0ba839628d0bf45973c86ce7b590cdedf7540d5b1833ddc6f00", size = 341652 },
- { url = "https://files.pythonhosted.org/packages/49/aa/0c6e666c218d567727c1d040d01575685e7f9b18052fd68a59c9f61fe5d9/yarl-1.18.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:96404e8d5e1bbe36bdaa84ef89dc36f0e75939e060ca5cd45451aba01db02902", size = 347257 },
- { url = "https://files.pythonhosted.org/packages/36/0b/33a093b0e13bb8cd0f27301779661ff325270b6644929001f8f33307357d/yarl-1.18.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:a0509475d714df8f6d498935b3f307cd122c4ca76f7d426c7e1bb791bcd87eda", size = 359735 },
- { url = "https://files.pythonhosted.org/packages/a8/92/dcc0b37c48632e71ffc2b5f8b0509347a0bde55ab5862ff755dce9dd56c4/yarl-1.18.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:1ff116f0285b5c8b3b9a2680aeca29a858b3b9e0402fc79fd850b32c2bcb9f8b", size = 365982 },
- { url = "https://files.pythonhosted.org/packages/0e/39/30e2a24a7a6c628dccb13eb6c4a03db5f6cd1eb2c6cda56a61ddef764c11/yarl-1.18.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e2580c1d7e66e6d29d6e11855e3b1c6381971e0edd9a5066e6c14d79bc8967af", size = 360128 },
- { url = "https://files.pythonhosted.org/packages/76/13/12b65dca23b1fb8ae44269a4d24048fd32ac90b445c985b0a46fdfa30cfe/yarl-1.18.0-cp313-cp313-win32.whl", hash = "sha256:14408cc4d34e202caba7b5ac9cc84700e3421a9e2d1b157d744d101b061a4a88", size = 309888 },
- { url = "https://files.pythonhosted.org/packages/f6/60/478d3d41a4bf0b9e7dca74d870d114e775d1ff7156b7d1e0e9972e8f97fd/yarl-1.18.0-cp313-cp313-win_amd64.whl", hash = "sha256:1db1537e9cb846eb0ff206eac667f627794be8b71368c1ab3207ec7b6f8c5afc", size = 315459 },
- { url = "https://files.pythonhosted.org/packages/30/9c/3f7ab894a37b1520291247cbc9ea6756228d098dae5b37eec848d404a204/yarl-1.18.0-py3-none-any.whl", hash = "sha256:dbf53db46f7cf176ee01d8d98c39381440776fcda13779d269a8ba664f69bec0", size = 44840 },
+sdist = { url = "https://files.pythonhosted.org/packages/b7/9d/4b94a8e6d2b51b599516a5cb88e5bc99b4d8d4583e468057eaa29d5f0918/yarl-1.18.3.tar.gz", hash = "sha256:ac1801c45cbf77b6c99242eeff4fffb5e4e73a800b5c4ad4fc0be5def634d2e1", size = 181062 }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/d2/98/e005bc608765a8a5569f58e650961314873c8469c333616eb40bff19ae97/yarl-1.18.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7df647e8edd71f000a5208fe6ff8c382a1de8edfbccdbbfe649d263de07d8c34", size = 141458 },
+ { url = "https://files.pythonhosted.org/packages/df/5d/f8106b263b8ae8a866b46d9be869ac01f9b3fb7f2325f3ecb3df8003f796/yarl-1.18.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c69697d3adff5aa4f874b19c0e4ed65180ceed6318ec856ebc423aa5850d84f7", size = 94365 },
+ { url = "https://files.pythonhosted.org/packages/56/3e/d8637ddb9ba69bf851f765a3ee288676f7cf64fb3be13760c18cbc9d10bd/yarl-1.18.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:602d98f2c2d929f8e697ed274fbadc09902c4025c5a9963bf4e9edfc3ab6f7ed", size = 92181 },
+ { url = "https://files.pythonhosted.org/packages/76/f9/d616a5c2daae281171de10fba41e1c0e2d8207166fc3547252f7d469b4e1/yarl-1.18.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c654d5207c78e0bd6d749f6dae1dcbbfde3403ad3a4b11f3c5544d9906969dde", size = 315349 },
+ { url = "https://files.pythonhosted.org/packages/bb/b4/3ea5e7b6f08f698b3769a06054783e434f6d59857181b5c4e145de83f59b/yarl-1.18.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5094d9206c64181d0f6e76ebd8fb2f8fe274950a63890ee9e0ebfd58bf9d787b", size = 330494 },
+ { url = "https://files.pythonhosted.org/packages/55/f1/e0fc810554877b1b67420568afff51b967baed5b53bcc983ab164eebf9c9/yarl-1.18.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35098b24e0327fc4ebdc8ffe336cee0a87a700c24ffed13161af80124b7dc8e5", size = 326927 },
+ { url = "https://files.pythonhosted.org/packages/a9/42/b1753949b327b36f210899f2dd0a0947c0c74e42a32de3f8eb5c7d93edca/yarl-1.18.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3236da9272872443f81fedc389bace88408f64f89f75d1bdb2256069a8730ccc", size = 319703 },
+ { url = "https://files.pythonhosted.org/packages/f0/6d/e87c62dc9635daefb064b56f5c97df55a2e9cc947a2b3afd4fd2f3b841c7/yarl-1.18.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e2c08cc9b16f4f4bc522771d96734c7901e7ebef70c6c5c35dd0f10845270bcd", size = 310246 },
+ { url = "https://files.pythonhosted.org/packages/e3/ef/e2e8d1785cdcbd986f7622d7f0098205f3644546da7919c24b95790ec65a/yarl-1.18.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:80316a8bd5109320d38eef8833ccf5f89608c9107d02d2a7f985f98ed6876990", size = 319730 },
+ { url = "https://files.pythonhosted.org/packages/fc/15/8723e22345bc160dfde68c4b3ae8b236e868f9963c74015f1bc8a614101c/yarl-1.18.3-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:c1e1cc06da1491e6734f0ea1e6294ce00792193c463350626571c287c9a704db", size = 321681 },
+ { url = "https://files.pythonhosted.org/packages/86/09/bf764e974f1516efa0ae2801494a5951e959f1610dd41edbfc07e5e0f978/yarl-1.18.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fea09ca13323376a2fdfb353a5fa2e59f90cd18d7ca4eaa1fd31f0a8b4f91e62", size = 324812 },
+ { url = "https://files.pythonhosted.org/packages/f6/4c/20a0187e3b903c97d857cf0272d687c1b08b03438968ae8ffc50fe78b0d6/yarl-1.18.3-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:e3b9fd71836999aad54084906f8663dffcd2a7fb5cdafd6c37713b2e72be1760", size = 337011 },
+ { url = "https://files.pythonhosted.org/packages/c9/71/6244599a6e1cc4c9f73254a627234e0dad3883ece40cc33dce6265977461/yarl-1.18.3-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:757e81cae69244257d125ff31663249b3013b5dc0a8520d73694aed497fb195b", size = 338132 },
+ { url = "https://files.pythonhosted.org/packages/af/f5/e0c3efaf74566c4b4a41cb76d27097df424052a064216beccae8d303c90f/yarl-1.18.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b1771de9944d875f1b98a745bc547e684b863abf8f8287da8466cf470ef52690", size = 331849 },
+ { url = "https://files.pythonhosted.org/packages/8a/b8/3d16209c2014c2f98a8f658850a57b716efb97930aebf1ca0d9325933731/yarl-1.18.3-cp310-cp310-win32.whl", hash = "sha256:8874027a53e3aea659a6d62751800cf6e63314c160fd607489ba5c2edd753cf6", size = 84309 },
+ { url = "https://files.pythonhosted.org/packages/fd/b7/2e9a5b18eb0fe24c3a0e8bae994e812ed9852ab4fd067c0107fadde0d5f0/yarl-1.18.3-cp310-cp310-win_amd64.whl", hash = "sha256:93b2e109287f93db79210f86deb6b9bbb81ac32fc97236b16f7433db7fc437d8", size = 90484 },
+ { url = "https://files.pythonhosted.org/packages/40/93/282b5f4898d8e8efaf0790ba6d10e2245d2c9f30e199d1a85cae9356098c/yarl-1.18.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8503ad47387b8ebd39cbbbdf0bf113e17330ffd339ba1144074da24c545f0069", size = 141555 },
+ { url = "https://files.pythonhosted.org/packages/6d/9c/0a49af78df099c283ca3444560f10718fadb8a18dc8b3edf8c7bd9fd7d89/yarl-1.18.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:02ddb6756f8f4517a2d5e99d8b2f272488e18dd0bfbc802f31c16c6c20f22193", size = 94351 },
+ { url = "https://files.pythonhosted.org/packages/5a/a1/205ab51e148fdcedad189ca8dd587794c6f119882437d04c33c01a75dece/yarl-1.18.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:67a283dd2882ac98cc6318384f565bffc751ab564605959df4752d42483ad889", size = 92286 },
+ { url = "https://files.pythonhosted.org/packages/ed/fe/88b690b30f3f59275fb674f5f93ddd4a3ae796c2b62e5bb9ece8a4914b83/yarl-1.18.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d980e0325b6eddc81331d3f4551e2a333999fb176fd153e075c6d1c2530aa8a8", size = 340649 },
+ { url = "https://files.pythonhosted.org/packages/07/eb/3b65499b568e01f36e847cebdc8d7ccb51fff716dbda1ae83c3cbb8ca1c9/yarl-1.18.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b643562c12680b01e17239be267bc306bbc6aac1f34f6444d1bded0c5ce438ca", size = 356623 },
+ { url = "https://files.pythonhosted.org/packages/33/46/f559dc184280b745fc76ec6b1954de2c55595f0ec0a7614238b9ebf69618/yarl-1.18.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c017a3b6df3a1bd45b9fa49a0f54005e53fbcad16633870104b66fa1a30a29d8", size = 354007 },
+ { url = "https://files.pythonhosted.org/packages/af/ba/1865d85212351ad160f19fb99808acf23aab9a0f8ff31c8c9f1b4d671fc9/yarl-1.18.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75674776d96d7b851b6498f17824ba17849d790a44d282929c42dbb77d4f17ae", size = 344145 },
+ { url = "https://files.pythonhosted.org/packages/94/cb/5c3e975d77755d7b3d5193e92056b19d83752ea2da7ab394e22260a7b824/yarl-1.18.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ccaa3a4b521b780a7e771cc336a2dba389a0861592bbce09a476190bb0c8b4b3", size = 336133 },
+ { url = "https://files.pythonhosted.org/packages/19/89/b77d3fd249ab52a5c40859815765d35c91425b6bb82e7427ab2f78f5ff55/yarl-1.18.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2d06d3005e668744e11ed80812e61efd77d70bb7f03e33c1598c301eea20efbb", size = 347967 },
+ { url = "https://files.pythonhosted.org/packages/35/bd/f6b7630ba2cc06c319c3235634c582a6ab014d52311e7d7c22f9518189b5/yarl-1.18.3-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:9d41beda9dc97ca9ab0b9888cb71f7539124bc05df02c0cff6e5acc5a19dcc6e", size = 346397 },
+ { url = "https://files.pythonhosted.org/packages/18/1a/0b4e367d5a72d1f095318344848e93ea70da728118221f84f1bf6c1e39e7/yarl-1.18.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ba23302c0c61a9999784e73809427c9dbedd79f66a13d84ad1b1943802eaaf59", size = 350206 },
+ { url = "https://files.pythonhosted.org/packages/b5/cf/320fff4367341fb77809a2d8d7fe75b5d323a8e1b35710aafe41fdbf327b/yarl-1.18.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:6748dbf9bfa5ba1afcc7556b71cda0d7ce5f24768043a02a58846e4a443d808d", size = 362089 },
+ { url = "https://files.pythonhosted.org/packages/57/cf/aadba261d8b920253204085268bad5e8cdd86b50162fcb1b10c10834885a/yarl-1.18.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0b0cad37311123211dc91eadcb322ef4d4a66008d3e1bdc404808992260e1a0e", size = 366267 },
+ { url = "https://files.pythonhosted.org/packages/54/58/fb4cadd81acdee6dafe14abeb258f876e4dd410518099ae9a35c88d8097c/yarl-1.18.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0fb2171a4486bb075316ee754c6d8382ea6eb8b399d4ec62fde2b591f879778a", size = 359141 },
+ { url = "https://files.pythonhosted.org/packages/9a/7a/4c571597589da4cd5c14ed2a0b17ac56ec9ee7ee615013f74653169e702d/yarl-1.18.3-cp311-cp311-win32.whl", hash = "sha256:61b1a825a13bef4a5f10b1885245377d3cd0bf87cba068e1d9a88c2ae36880e1", size = 84402 },
+ { url = "https://files.pythonhosted.org/packages/ae/7b/8600250b3d89b625f1121d897062f629883c2f45339623b69b1747ec65fa/yarl-1.18.3-cp311-cp311-win_amd64.whl", hash = "sha256:b9d60031cf568c627d028239693fd718025719c02c9f55df0a53e587aab951b5", size = 91030 },
+ { url = "https://files.pythonhosted.org/packages/33/85/bd2e2729752ff4c77338e0102914897512e92496375e079ce0150a6dc306/yarl-1.18.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:1dd4bdd05407ced96fed3d7f25dbbf88d2ffb045a0db60dbc247f5b3c5c25d50", size = 142644 },
+ { url = "https://files.pythonhosted.org/packages/ff/74/1178322cc0f10288d7eefa6e4a85d8d2e28187ccab13d5b844e8b5d7c88d/yarl-1.18.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7c33dd1931a95e5d9a772d0ac5e44cac8957eaf58e3c8da8c1414de7dd27c576", size = 94962 },
+ { url = "https://files.pythonhosted.org/packages/be/75/79c6acc0261e2c2ae8a1c41cf12265e91628c8c58ae91f5ff59e29c0787f/yarl-1.18.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:25b411eddcfd56a2f0cd6a384e9f4f7aa3efee14b188de13048c25b5e91f1640", size = 92795 },
+ { url = "https://files.pythonhosted.org/packages/6b/32/927b2d67a412c31199e83fefdce6e645247b4fb164aa1ecb35a0f9eb2058/yarl-1.18.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:436c4fc0a4d66b2badc6c5fc5ef4e47bb10e4fd9bf0c79524ac719a01f3607c2", size = 332368 },
+ { url = "https://files.pythonhosted.org/packages/19/e5/859fca07169d6eceeaa4fde1997c91d8abde4e9a7c018e371640c2da2b71/yarl-1.18.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e35ef8683211db69ffe129a25d5634319a677570ab6b2eba4afa860f54eeaf75", size = 342314 },
+ { url = "https://files.pythonhosted.org/packages/08/75/76b63ccd91c9e03ab213ef27ae6add2e3400e77e5cdddf8ed2dbc36e3f21/yarl-1.18.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:84b2deecba4a3f1a398df819151eb72d29bfeb3b69abb145a00ddc8d30094512", size = 341987 },
+ { url = "https://files.pythonhosted.org/packages/1a/e1/a097d5755d3ea8479a42856f51d97eeff7a3a7160593332d98f2709b3580/yarl-1.18.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00e5a1fea0fd4f5bfa7440a47eff01d9822a65b4488f7cff83155a0f31a2ecba", size = 336914 },
+ { url = "https://files.pythonhosted.org/packages/0b/42/e1b4d0e396b7987feceebe565286c27bc085bf07d61a59508cdaf2d45e63/yarl-1.18.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d0e883008013c0e4aef84dcfe2a0b172c4d23c2669412cf5b3371003941f72bb", size = 325765 },
+ { url = "https://files.pythonhosted.org/packages/7e/18/03a5834ccc9177f97ca1bbb245b93c13e58e8225276f01eedc4cc98ab820/yarl-1.18.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5a3f356548e34a70b0172d8890006c37be92995f62d95a07b4a42e90fba54272", size = 344444 },
+ { url = "https://files.pythonhosted.org/packages/c8/03/a713633bdde0640b0472aa197b5b86e90fbc4c5bc05b727b714cd8a40e6d/yarl-1.18.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:ccd17349166b1bee6e529b4add61727d3f55edb7babbe4069b5764c9587a8cc6", size = 340760 },
+ { url = "https://files.pythonhosted.org/packages/eb/99/f6567e3f3bbad8fd101886ea0276c68ecb86a2b58be0f64077396cd4b95e/yarl-1.18.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b958ddd075ddba5b09bb0be8a6d9906d2ce933aee81100db289badbeb966f54e", size = 346484 },
+ { url = "https://files.pythonhosted.org/packages/8e/a9/84717c896b2fc6cb15bd4eecd64e34a2f0a9fd6669e69170c73a8b46795a/yarl-1.18.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c7d79f7d9aabd6011004e33b22bc13056a3e3fb54794d138af57f5ee9d9032cb", size = 359864 },
+ { url = "https://files.pythonhosted.org/packages/1e/2e/d0f5f1bef7ee93ed17e739ec8dbcb47794af891f7d165fa6014517b48169/yarl-1.18.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:4891ed92157e5430874dad17b15eb1fda57627710756c27422200c52d8a4e393", size = 364537 },
+ { url = "https://files.pythonhosted.org/packages/97/8a/568d07c5d4964da5b02621a517532adb8ec5ba181ad1687191fffeda0ab6/yarl-1.18.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ce1af883b94304f493698b00d0f006d56aea98aeb49d75ec7d98cd4a777e9285", size = 357861 },
+ { url = "https://files.pythonhosted.org/packages/7d/e3/924c3f64b6b3077889df9a1ece1ed8947e7b61b0a933f2ec93041990a677/yarl-1.18.3-cp312-cp312-win32.whl", hash = "sha256:f91c4803173928a25e1a55b943c81f55b8872f0018be83e3ad4938adffb77dd2", size = 84097 },
+ { url = "https://files.pythonhosted.org/packages/34/45/0e055320daaabfc169b21ff6174567b2c910c45617b0d79c68d7ab349b02/yarl-1.18.3-cp312-cp312-win_amd64.whl", hash = "sha256:7e2ee16578af3b52ac2f334c3b1f92262f47e02cc6193c598502bd46f5cd1477", size = 90399 },
+ { url = "https://files.pythonhosted.org/packages/30/c7/c790513d5328a8390be8f47be5d52e141f78b66c6c48f48d241ca6bd5265/yarl-1.18.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:90adb47ad432332d4f0bc28f83a5963f426ce9a1a8809f5e584e704b82685dcb", size = 140789 },
+ { url = "https://files.pythonhosted.org/packages/30/aa/a2f84e93554a578463e2edaaf2300faa61c8701f0898725842c704ba5444/yarl-1.18.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:913829534200eb0f789d45349e55203a091f45c37a2674678744ae52fae23efa", size = 94144 },
+ { url = "https://files.pythonhosted.org/packages/c6/fc/d68d8f83714b221a85ce7866832cba36d7c04a68fa6a960b908c2c84f325/yarl-1.18.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ef9f7768395923c3039055c14334ba4d926f3baf7b776c923c93d80195624782", size = 91974 },
+ { url = "https://files.pythonhosted.org/packages/56/4e/d2563d8323a7e9a414b5b25341b3942af5902a2263d36d20fb17c40411e2/yarl-1.18.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88a19f62ff30117e706ebc9090b8ecc79aeb77d0b1f5ec10d2d27a12bc9f66d0", size = 333587 },
+ { url = "https://files.pythonhosted.org/packages/25/c9/cfec0bc0cac8d054be223e9f2c7909d3e8442a856af9dbce7e3442a8ec8d/yarl-1.18.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e17c9361d46a4d5addf777c6dd5eab0715a7684c2f11b88c67ac37edfba6c482", size = 344386 },
+ { url = "https://files.pythonhosted.org/packages/ab/5d/4c532190113b25f1364d25f4c319322e86232d69175b91f27e3ebc2caf9a/yarl-1.18.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1a74a13a4c857a84a845505fd2d68e54826a2cd01935a96efb1e9d86c728e186", size = 345421 },
+ { url = "https://files.pythonhosted.org/packages/23/d1/6cdd1632da013aa6ba18cee4d750d953104a5e7aac44e249d9410a972bf5/yarl-1.18.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41f7ce59d6ee7741af71d82020346af364949314ed3d87553763a2df1829cc58", size = 339384 },
+ { url = "https://files.pythonhosted.org/packages/9a/c4/6b3c39bec352e441bd30f432cda6ba51681ab19bb8abe023f0d19777aad1/yarl-1.18.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f52a265001d830bc425f82ca9eabda94a64a4d753b07d623a9f2863fde532b53", size = 326689 },
+ { url = "https://files.pythonhosted.org/packages/23/30/07fb088f2eefdc0aa4fc1af4e3ca4eb1a3aadd1ce7d866d74c0f124e6a85/yarl-1.18.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:82123d0c954dc58db301f5021a01854a85bf1f3bb7d12ae0c01afc414a882ca2", size = 345453 },
+ { url = "https://files.pythonhosted.org/packages/63/09/d54befb48f9cd8eec43797f624ec37783a0266855f4930a91e3d5c7717f8/yarl-1.18.3-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:2ec9bbba33b2d00999af4631a3397d1fd78290c48e2a3e52d8dd72db3a067ac8", size = 341872 },
+ { url = "https://files.pythonhosted.org/packages/91/26/fd0ef9bf29dd906a84b59f0cd1281e65b0c3e08c6aa94b57f7d11f593518/yarl-1.18.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:fbd6748e8ab9b41171bb95c6142faf068f5ef1511935a0aa07025438dd9a9bc1", size = 347497 },
+ { url = "https://files.pythonhosted.org/packages/d9/b5/14ac7a256d0511b2ac168d50d4b7d744aea1c1aa20c79f620d1059aab8b2/yarl-1.18.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:877d209b6aebeb5b16c42cbb377f5f94d9e556626b1bfff66d7b0d115be88d0a", size = 359981 },
+ { url = "https://files.pythonhosted.org/packages/ca/b3/d493221ad5cbd18bc07e642894030437e405e1413c4236dd5db6e46bcec9/yarl-1.18.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:b464c4ab4bfcb41e3bfd3f1c26600d038376c2de3297760dfe064d2cb7ea8e10", size = 366229 },
+ { url = "https://files.pythonhosted.org/packages/04/56/6a3e2a5d9152c56c346df9b8fb8edd2c8888b1e03f96324d457e5cf06d34/yarl-1.18.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8d39d351e7faf01483cc7ff7c0213c412e38e5a340238826be7e0e4da450fdc8", size = 360383 },
+ { url = "https://files.pythonhosted.org/packages/fd/b7/4b3c7c7913a278d445cc6284e59b2e62fa25e72758f888b7a7a39eb8423f/yarl-1.18.3-cp313-cp313-win32.whl", hash = "sha256:61ee62ead9b68b9123ec24bc866cbef297dd266175d53296e2db5e7f797f902d", size = 310152 },
+ { url = "https://files.pythonhosted.org/packages/f5/d5/688db678e987c3e0fb17867970700b92603cadf36c56e5fb08f23e822a0c/yarl-1.18.3-cp313-cp313-win_amd64.whl", hash = "sha256:578e281c393af575879990861823ef19d66e2b1d0098414855dd367e234f5b3c", size = 315723 },
+ { url = "https://files.pythonhosted.org/packages/f5/4b/a06e0ec3d155924f77835ed2d167ebd3b211a7b0853da1cf8d8414d784ef/yarl-1.18.3-py3-none-any.whl", hash = "sha256:b57f4f58099328dfb26c6a771d09fb20dbbae81d20cfb66141251ea063bd101b", size = 45109 },
]
[[package]]