diff --git a/django_ai_assistant/helpers/assistants.py b/django_ai_assistant/helpers/assistants.py index dd85204..39598cb 100644 --- a/django_ai_assistant/helpers/assistants.py +++ b/django_ai_assistant/helpers/assistants.py @@ -1,6 +1,5 @@ import abc import inspect -import json import re from typing import Annotated, Any, ClassVar, Dict, Sequence, Type, TypedDict, cast @@ -75,6 +74,8 @@ class AIAssistant(abc.ABC): # noqa: F821 """ temperature: float = 1.0 """Temperature to use for the assistant LLM model.\nDefaults to `1.0`.""" + tool_max_concurrency: int = 1 + """Maximum number of tools to run concurrently / in parallel.\nDefaults to `1` (no concurrency).""" has_rag: bool = False """Whether the assistant uses RAG (Retrieval-Augmented Generation) or not.\n Defaults to `False`. @@ -430,7 +431,7 @@ def as_graph(self, thread_id: Any | None = None) -> Runnable[dict, dict]: llm_with_tools = llm.bind_tools(tools) if tools else llm def custom_add_messages(left: list[BaseMessage], right: list[BaseMessage]): - result = add_messages(left, right) + result = add_messages(left, right) # type: ignore if message_history: messages_to_store = [ @@ -447,40 +448,11 @@ class AgentState(TypedDict): messages: Annotated[list[AnyMessage], custom_add_messages] input: str # noqa: A003 context: str - output: str + output: Any def setup(state: AgentState): - messages: list[AnyMessage] = [SystemMessage(content=self.get_instructions())] - - if self.structured_output: - schema = None - - # If Pydantic - if inspect.isclass(self.structured_output) and issubclass( - self.structured_output, BaseModel - ): - schema = json.dumps(self.structured_output.model_json_schema()) - - schema_information = ( - f"JSON will have the following schema:\n\n{schema}\n\n" if schema else "" - ) - tools_information = "Gather information using tools. " if tools else "" - - # The assistant won't have access to the schema of the structured output before - # the last step of the chat. This message gives visibility about what fields the - # response should have so it can gather the necessary information by using tools. - messages.append( - HumanMessage( - content=( - "In the last step of this chat you will be asked to respond in JSON. " - + schema_information - + tools_information - + "Don't generate JSON until you are explicitly told to. " - ) - ) - ) - - return {"messages": messages} + system_prompt = self.get_instructions() + return {"messages": [SystemMessage(content=system_prompt)]} def history(state: AgentState): history = message_history.messages if message_history else [] @@ -522,16 +494,23 @@ def tool_selector(state: AgentState): return "continue" def record_response(state: AgentState): + # Structured output must happen in the end, to avoid disabling tool calling. + # Tool calling + structured output is not supported by OpenAI: if self.structured_output: - llm_with_structured_output = self.get_structured_output_llm() - response = llm_with_structured_output.invoke( - [ - *state["messages"], - HumanMessage( - content="Use the information gathered in the conversation to answer." - ), - ] + messages = state["messages"] + + # Change the original system prompt: + if isinstance(messages[0], SystemMessage): + messages[0].content += "\nUse the chat history to produce a JSON output." + + # Add a final message asking for JSON generation / structured output: + json_request_message = HumanMessage( + content="Use the chat history to produce a JSON output." ) + messages.append(json_request_message) + + llm_with_structured_output = self.get_structured_output_llm() + response = llm_with_structured_output.invoke(messages) else: response = state["messages"][-1].content @@ -581,10 +560,12 @@ def invoke(self, *args: Any, thread_id: Any | None, **kwargs: Any) -> dict: structured like `{"output": "assistant response", "history": ...}`. """ graph = self.as_graph(thread_id) - return graph.invoke(*args, **kwargs) + config = kwargs.pop("config", {}) + config["max_concurrency"] = config.pop("max_concurrency", self.tool_max_concurrency) + return graph.invoke(*args, config=config, **kwargs) @with_cast_id - def run(self, message: str, thread_id: Any | None = None, **kwargs: Any) -> str: + def run(self, message: str, thread_id: Any | None = None, **kwargs: Any) -> Any: """Run the assistant with the given message and thread ID.\n This is the higher-level method to run the assistant.\n @@ -595,7 +576,7 @@ def run(self, message: str, thread_id: Any | None = None, **kwargs: Any) -> str: **kwargs: Additional keyword arguments to pass to the graph. Returns: - str: The assistant response to the user message. + Any: The assistant response to the user message. """ return self.invoke( { @@ -605,7 +586,7 @@ def run(self, message: str, thread_id: Any | None = None, **kwargs: Any) -> str: **kwargs, )["output"] - def _run_as_tool(self, message: str, **kwargs: Any) -> str: + def _run_as_tool(self, message: str, **kwargs: Any) -> Any: return self.run(message, thread_id=None, **kwargs) def as_tool(self, description: str) -> BaseTool: diff --git a/example/README.md b/example/README.md index 1e90e09..408a886 100644 --- a/example/README.md +++ b/example/README.md @@ -32,9 +32,8 @@ cp .env.example .env Fill the `.env` file with the necessary API keys. You'll need accounts on: - [OpenAI](https://platform.openai.com/) -- [Weather](https://www.weatherapi.com/) -- [Tavily](https://app.tavily.com/) -- [Firecrawl](https://www.firecrawl.dev/) +- [Weather API](https://www.weatherapi.com/) +- [Brave Search API](https://app.tavily.com/) Activate the poetry shell: diff --git a/example/demo/views.py b/example/demo/views.py index d2b91b6..c52ef88 100644 --- a/example/demo/views.py +++ b/example/demo/views.py @@ -119,5 +119,4 @@ def get(self, request, *args, **kwargs): a = TourGuideAIAssistant() data = a.run(f"My coordinates are: ({coordinates})") - return JsonResponse(data.model_dump()) diff --git a/example/example/settings.py b/example/example/settings.py index e365ce4..7a5fac0 100644 --- a/example/example/settings.py +++ b/example/example/settings.py @@ -79,6 +79,8 @@ # Necessary to avoid "OperationalError: database is locked" errors # on parallel tool calling: "init_command": "PRAGMA journal_mode=WAL;", + "transaction_mode": "IMMEDIATE", + "timeout": 20, }, } } @@ -178,4 +180,7 @@ # Example specific settings: WEATHER_API_KEY = os.getenv("WEATHER_API_KEY") # get for free at https://www.weatherapi.com/ +BRAVE_SEARCH_API_KEY = os.getenv( + "BRAVE_SEARCH_API_KEY" +) # get for free at https://brave.com/search/api/ DJANGO_DOCS_BRANCH = "stable/5.0.x" diff --git a/example/issue_tracker/ai_assistants.py b/example/issue_tracker/ai_assistants.py index f2406c1..7ff51f2 100644 --- a/example/issue_tracker/ai_assistants.py +++ b/example/issue_tracker/ai_assistants.py @@ -16,7 +16,7 @@ class IssueTrackerAIAssistant(AIAssistant): "Make sure to include issue IDs in your responses, " "to know which issue you or the user are referring to. " ) - model = "gpt-4o" + model = "gpt-4o-mini" _user: User @method_tool diff --git a/example/movies/admin.py b/example/movies/admin.py index 34d045c..2924305 100644 --- a/example/movies/admin.py +++ b/example/movies/admin.py @@ -20,6 +20,6 @@ class MovieBacklogItemAdmin(admin.ModelAdmin): list_select_related = ("user",) raw_id_fields = ("user",) - @admin.display(ordering="imdb_url", description="IMDB URL") + @admin.display(ordering="imdb_url", description="IMDb URL") def imdb_url_link(self, obj): return mark_safe(f'{obj.imdb_url}') # noqa: S308 diff --git a/example/movies/ai_assistants.py b/example/movies/ai_assistants.py index f4198df..dc7b132 100644 --- a/example/movies/ai_assistants.py +++ b/example/movies/ai_assistants.py @@ -1,33 +1,42 @@ from typing import Sequence +from django.conf import settings +from django.db import transaction from django.db.models import Max from django.utils import timezone -from firecrawl import FirecrawlApp -from langchain_community.tools import WikipediaQueryRun -from langchain_community.tools.tavily_search import TavilySearchResults -from langchain_community.utilities import WikipediaAPIWrapper +import requests +from langchain_community.tools import BraveSearch from langchain_core.tools import BaseTool +from pydantic import BaseModel from django_ai_assistant import AIAssistant, method_tool from movies.models import MovieBacklogItem +class IMDbMovie(BaseModel): + imdb_url: str + imdb_rating: float + scrapped_imdb_page_markdown: str + + # Note this assistant is not registered, but we'll use it as a tool on the other. # This one shouldn't be used directly, as it does web searches and scraping. -class IMDBURLFinderTool(AIAssistant): - id = "imdb_url_finder" # noqa: A003 +class IMDbScraper(AIAssistant): + id = "imdb_scraper" # noqa: A003 instructions = ( - "You're a tool to find the IMDB URL of a given movie. " - "Use the Tavily Search API to find the IMDB URL. " + "You're a function to find the IMDb URL of a given movie, " + "and scrape this URL to get the movie rating and other information.\n" + "Use the search function to find the IMDb URL. " "Make search queries like: \n" - "- IMDB page of The Matrix\n" - "- IMDB page of The Godfather\n" - "- IMDB page of The Shawshank Redemption\n" - "Then check results and provide only the IMDB URL to the user." + "- IMDb page of The Matrix\n" + "- IMDb page of The Godfather\n" + "- IMDb page of The Shawshank Redemption\n" + "Then check results, scape the IMDb URL, process the page, and produce a JSON output." ) - name = "IMDB URL Finder" - model = "gpt-4o" + name = "IMDb Scraper" + model = "gpt-4o-mini" + structured_output = IMDbMovie def get_instructions(self): # Warning: this will use the server's timezone @@ -36,9 +45,16 @@ def get_instructions(self): current_date_str = timezone.now().date().isoformat() return f"{self.instructions} Today is: {current_date_str}." + @method_tool + def scrape_imdb_url(self, url: str) -> str: + """Scrape the IMDb URL and return the content as markdown.""" + return requests.get("https://r.jina.ai/" + url, timeout=20).text[:10000] + def get_tools(self) -> Sequence[BaseTool]: return [ - TavilySearchResults(), + BraveSearch.from_api_key( + api_key=settings.BRAVE_SEARCH_API_KEY, search_kwargs={"count": 5} + ), *super().get_tools(), ] @@ -48,21 +64,17 @@ class MovieRecommendationAIAssistant(AIAssistant): instructions = ( "You're a helpful movie recommendation assistant. " "Help the user find movies to watch and manage their movie backlogs. " - "By using the provided tools, you can:\n" - "- Get the IMDB URL of a movie\n" - "- Visit the IMDB page of a movie to get its rating\n" - "- Research for upcoming movies\n" - "- Research for similar movies\n" - "- Research more information about movies\n" - "- Get what movies are on user's backlog\n" - "- Add a movie to user's backlog\n" - "- Remove a movie to user's backlog\n" - "- Reorder movies in user's backlog\n" + "Use the provided functions to answer questions and run operations.\n" + "Note the backlog is stored in a DB. " + "When managing the backlog, you must call the functions, to keep the sync with the DB. " + "The backlog has an order, and you should respect it. Call `reorder_backlog` when necessary.\n" + "Include the IMDb URL and rating of the movies when displaying the backlog. " + "You must use the IMDb Scraper to get the IMDb URL and rating of the movies. \n" "Ask the user if they want to add your recommended movies to their backlog, " "but only if the movie is not on the user's backlog yet." ) name = "Movie Recommendation Assistant" - model = "gpt-4o" + model = "gpt-4o-mini" def get_instructions(self): # Warning: this will use the server's timezone @@ -81,20 +93,13 @@ def get_instructions(self): def get_tools(self) -> Sequence[BaseTool]: return [ - TavilySearchResults(), - WikipediaQueryRun(api_wrapper=WikipediaAPIWrapper()), # pyright: ignore[reportCallIssue] - IMDBURLFinderTool().as_tool(description="Tool to find the IMDB URL of a given movie."), + BraveSearch.from_api_key( + api_key=settings.BRAVE_SEARCH_API_KEY, search_kwargs={"count": 5} + ), + IMDbScraper().as_tool(description="IMDb Scraper to get the IMDb data a given movie."), *super().get_tools(), ] - @method_tool - def firecrawl_scrape_url(self, url: str) -> str: - """Visit the provided website URL and return the content as markdown.""" - - firecrawl_app = FirecrawlApp() - response = firecrawl_app.scrape_url(url, params={"formats": ["markdown"]}) - return response["markdown"] - @method_tool def get_movies_backlog(self) -> str: """Get what movies are on user's backlog.""" @@ -102,7 +107,7 @@ def get_movies_backlog(self) -> str: return ( "\n".join( [ - f"{item.position} - [{item.movie_name}]({item.imdb_url}) - Rating {item.imdb_rating}" + f"{item.position} - [{item.movie_name}]({item.imdb_url}) - ⭐ {item.imdb_rating}" for item in MovieBacklogItem.objects.filter(user=self._user) ] ) @@ -113,28 +118,31 @@ def get_movies_backlog(self) -> str: def add_movie_to_backlog(self, movie_name: str, imdb_url: str, imdb_rating: float) -> str: """Add a movie to user's backlog. Must pass the movie_name, imdb_url, and imdb_rating.""" - MovieBacklogItem.objects.update_or_create( - imdb_url=imdb_url.strip(), - user=self._user, - defaults={ - "movie_name": movie_name.strip(), - "imdb_rating": imdb_rating, - "position": MovieBacklogItem.objects.filter(user=self._user).aggregate( - Max("position", default=1) - )["position__max"], - }, - ) + with transaction.atomic(): + MovieBacklogItem.objects.update_or_create( + imdb_url=imdb_url.strip(), + user=self._user, + defaults={ + "movie_name": movie_name.strip(), + "imdb_rating": imdb_rating, + "position": MovieBacklogItem.objects.filter(user=self._user).aggregate( + Max("position", default=0) + )["position__max"] + + 1, + }, + ) return f"Added {movie_name} to backlog." @method_tool def remove_movie_from_backlog(self, movie_name: str) -> str: """Remove a movie from user's backlog.""" - MovieBacklogItem.objects.filter( - user=self._user, - movie_name=movie_name.strip(), - ).delete() - MovieBacklogItem.reorder_backlog(self._user) + with transaction.atomic(): + MovieBacklogItem.objects.filter( + user=self._user, + movie_name=movie_name.strip(), + ).delete() + MovieBacklogItem.reorder_backlog(self._user) return f"Removed {movie_name} from backlog." @method_tool diff --git a/example/rag/ai_assistants.py b/example/rag/ai_assistants.py index 83254a5..f1d7ab1 100644 --- a/example/rag/ai_assistants.py +++ b/example/rag/ai_assistants.py @@ -15,7 +15,7 @@ class DjangoDocsAssistant(AIAssistant): "the user's question. If you don't know the answer, say that you don't know. " "Use three sentences maximum and keep the answer concise." ) - model = "gpt-4o" + model = "gpt-4o-mini" has_rag = True def get_retriever(self) -> BaseRetriever: diff --git a/example/weather/ai_assistants.py b/example/weather/ai_assistants.py index 9eb20da..a405cbf 100644 --- a/example/weather/ai_assistants.py +++ b/example/weather/ai_assistants.py @@ -15,7 +15,7 @@ class WeatherAIAssistant(AIAssistant): id = "weather_assistant" # noqa: A003 name = "Weather Assistant" - model = "gpt-4o" + model = "gpt-4o-mini" def get_instructions(self): # Warning: this will use the server's timezone diff --git a/poetry.lock b/poetry.lock index 617072d..9b7e909 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2,113 +2,113 @@ [[package]] name = "aiohappyeyeballs" -version = "2.4.0" +version = "2.4.3" description = "Happy Eyeballs for asyncio" optional = false python-versions = ">=3.8" files = [ - {file = "aiohappyeyeballs-2.4.0-py3-none-any.whl", hash = "sha256:7ce92076e249169a13c2f49320d1967425eaf1f407522d707d59cac7628d62bd"}, - {file = "aiohappyeyeballs-2.4.0.tar.gz", hash = "sha256:55a1714f084e63d49639800f95716da97a1f173d46a16dfcfda0016abb93b6b2"}, + {file = "aiohappyeyeballs-2.4.3-py3-none-any.whl", hash = "sha256:8a7a83727b2756f394ab2895ea0765a0a8c475e3c71e98d43d76f22b4b435572"}, + {file = "aiohappyeyeballs-2.4.3.tar.gz", hash = "sha256:75cf88a15106a5002a8eb1dab212525c00d1f4c0fa96e551c9fbe6f09a621586"}, ] [[package]] name = "aiohttp" -version = "3.10.6" +version = "3.10.8" description = "Async http client/server framework (asyncio)" optional = false python-versions = ">=3.8" files = [ - {file = "aiohttp-3.10.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:682836fc672972cc3101cc9e30d49c5f7e8f1d010478d46119fe725a4545acfd"}, - {file = "aiohttp-3.10.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:289fa8a20018d0d5aa9e4b35d899bd51bcb80f0d5f365d9a23e30dac3b79159b"}, - {file = "aiohttp-3.10.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8617c96a20dd57e7e9d398ff9d04f3d11c4d28b1767273a5b1a018ada5a654d3"}, - {file = "aiohttp-3.10.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bdbeff1b062751c2a2a55b171f7050fb7073633c699299d042e962aacdbe1a07"}, - {file = "aiohttp-3.10.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7ea35d849cdd4a9268f910bff4497baebbc1aa3f2f625fd8ccd9ac99c860c621"}, - {file = "aiohttp-3.10.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:473961b3252f3b949bb84873d6e268fb6d8aa0ccc6eb7404fa58c76a326bb8e1"}, - {file = "aiohttp-3.10.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d2665c5df629eb2f981dab244c01bfa6cdc185f4ffa026639286c4d56fafb54"}, - {file = "aiohttp-3.10.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:25d92f794f1332f656e3765841fc2b7ad5c26c3f3d01e8949eeb3495691cf9f4"}, - {file = "aiohttp-3.10.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:9bd6b2033993d5ae80883bb29b83fb2b432270bbe067c2f53cc73bb57c46065f"}, - {file = "aiohttp-3.10.6-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:d7f408c43f5e75ea1edc152fb375e8f46ef916f545fb66d4aebcbcfad05e2796"}, - {file = "aiohttp-3.10.6-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:cf8b8560aa965f87bf9c13bf9fed7025993a155ca0ce8422da74bf46d18c2f5f"}, - {file = "aiohttp-3.10.6-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:14477c4e52e2f17437b99893fd220ffe7d7ee41df5ebf931a92b8ca82e6fd094"}, - {file = "aiohttp-3.10.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fb138fbf9f53928e779650f5ed26d0ea1ed8b2cab67f0ea5d63afa09fdc07593"}, - {file = "aiohttp-3.10.6-cp310-cp310-win32.whl", hash = "sha256:9843d683b8756971797be171ead21511d2215a2d6e3c899c6e3107fbbe826791"}, - {file = "aiohttp-3.10.6-cp310-cp310-win_amd64.whl", hash = "sha256:f8b8e49fe02f744d38352daca1dbef462c3874900bd8166516f6ea8e82b5aacf"}, - {file = "aiohttp-3.10.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f52e54fd776ad0da1006708762213b079b154644db54bcfc62f06eaa5b896402"}, - {file = "aiohttp-3.10.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:995ab1a238fd0d19dc65f2d222e5eb064e409665c6426a3e51d5101c1979ee84"}, - {file = "aiohttp-3.10.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0749c4d5a08a802dd66ecdf59b2df4d76b900004017468a7bb736c3b5a3dd902"}, - {file = "aiohttp-3.10.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e05b39158f2af0e2438cc2075cfc271f4ace0c3cc4a81ec95b27a0432e161951"}, - {file = "aiohttp-3.10.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a9f196c970db2dcde4f24317e06615363349dc357cf4d7a3b0716c20ac6d7bcd"}, - {file = "aiohttp-3.10.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:47647c8af04a70e07a2462931b0eba63146a13affa697afb4ecbab9d03a480ce"}, - {file = "aiohttp-3.10.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:669c0efe7e99f6d94d63274c06344bd0e9c8daf184ce5602a29bc39e00a18720"}, - {file = "aiohttp-3.10.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9721cdd83a994225352ca84cd537760d41a9da3c0eacb3ff534747ab8fba6d0"}, - {file = "aiohttp-3.10.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0b82c8ebed66ce182893e7c0b6b60ba2ace45b1df104feb52380edae266a4850"}, - {file = "aiohttp-3.10.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:b169f8e755e541b72e714b89a831b315bbe70db44e33fead28516c9e13d5f931"}, - {file = "aiohttp-3.10.6-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:0be3115753baf8b4153e64f9aa7bf6c0c64af57979aa900c31f496301b374570"}, - {file = "aiohttp-3.10.6-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:e1f80cd17d81a404b6e70ef22bfe1870bafc511728397634ad5f5efc8698df56"}, - {file = "aiohttp-3.10.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6419728b08fb6380c66a470d2319cafcec554c81780e2114b7e150329b9a9a7f"}, - {file = "aiohttp-3.10.6-cp311-cp311-win32.whl", hash = "sha256:bd294dcdc1afdc510bb51d35444003f14e327572877d016d576ac3b9a5888a27"}, - {file = "aiohttp-3.10.6-cp311-cp311-win_amd64.whl", hash = "sha256:bf861da9a43d282d6dd9dcd64c23a0fccf2c5aa5cd7c32024513c8c79fb69de3"}, - {file = "aiohttp-3.10.6-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:2708baccdc62f4b1251e59c2aac725936a900081f079b88843dabcab0feeeb27"}, - {file = "aiohttp-3.10.6-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7475da7a5e2ccf1a1c86c8fee241e277f4874c96564d06f726d8df8e77683ef7"}, - {file = "aiohttp-3.10.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:02108326574ff60267b7b35b17ac5c0bbd0008ccb942ce4c48b657bb90f0b8aa"}, - {file = "aiohttp-3.10.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:029a019627b37fa9eac5c75cc54a6bb722c4ebbf5a54d8c8c0fb4dd8facf2702"}, - {file = "aiohttp-3.10.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8a637d387db6fdad95e293fab5433b775fd104ae6348d2388beaaa60d08b38c4"}, - {file = "aiohttp-3.10.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dc1a16f3fc1944c61290d33c88dc3f09ba62d159b284c38c5331868425aca426"}, - {file = "aiohttp-3.10.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81b292f37969f9cc54f4643f0be7dacabf3612b3b4a65413661cf6c350226787"}, - {file = "aiohttp-3.10.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0754690a3a26e819173a34093798c155bafb21c3c640bff13be1afa1e9d421f9"}, - {file = "aiohttp-3.10.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:164ecd32e65467d86843dbb121a6666c3deb23b460e3f8aefdcaacae79eb718a"}, - {file = "aiohttp-3.10.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:438c5863feb761f7ca3270d48c292c334814459f61cc12bab5ba5b702d7c9e56"}, - {file = "aiohttp-3.10.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:ba18573bb1de1063d222f41de64a0d3741223982dcea863b3f74646faf618ec7"}, - {file = "aiohttp-3.10.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:c82a94ddec996413a905f622f3da02c4359952aab8d817c01cf9915419525e95"}, - {file = "aiohttp-3.10.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:92351aa5363fc3c1f872ca763f86730ced32b01607f0c9662b1fa711087968d0"}, - {file = "aiohttp-3.10.6-cp312-cp312-win32.whl", hash = "sha256:3e15e33bfc73fa97c228f72e05e8795e163a693fd5323549f49367c76a6e5883"}, - {file = "aiohttp-3.10.6-cp312-cp312-win_amd64.whl", hash = "sha256:fe517113fe4d35d9072b826c3e147d63c5f808ca8167d450b4f96c520c8a1d8d"}, - {file = "aiohttp-3.10.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:482f74057ea13d387a7549d7a7ecb60e45146d15f3e58a2d93a0ad2d5a8457cd"}, - {file = "aiohttp-3.10.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:03fa40d1450ee5196e843315ddf74a51afc7e83d489dbfc380eecefea74158b1"}, - {file = "aiohttp-3.10.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1e52e59ed5f4cc3a3acfe2a610f8891f216f486de54d95d6600a2c9ba1581f4d"}, - {file = "aiohttp-3.10.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2b3935a22c9e41a8000d90588bed96cf395ef572dbb409be44c6219c61d900d"}, - {file = "aiohttp-3.10.6-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4bef1480ee50f75abcfcb4b11c12de1005968ca9d0172aec4a5057ba9f2b644f"}, - {file = "aiohttp-3.10.6-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:671745ea7db19693ce867359d503772177f0b20fa8f6ee1e74e00449f4c4151d"}, - {file = "aiohttp-3.10.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b50b367308ca8c12e0b50cba5773bc9abe64c428d3fd2bbf5cd25aab37c77bf"}, - {file = "aiohttp-3.10.6-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6a504d7cdb431a777d05a124fd0b21efb94498efa743103ea01b1e3136d2e4fb"}, - {file = "aiohttp-3.10.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:66bc81361131763660b969132a22edce2c4d184978ba39614e8f8f95db5c95f8"}, - {file = "aiohttp-3.10.6-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:27cf19a38506e2e9f12fc17e55f118f04897b0a78537055d93a9de4bf3022e3d"}, - {file = "aiohttp-3.10.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:3468b39f977a11271517c6925b226720e148311039a380cc9117b1e2258a721f"}, - {file = "aiohttp-3.10.6-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:9d26da22a793dfd424be1050712a70c0afd96345245c29aced1e35dbace03413"}, - {file = "aiohttp-3.10.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:844d48ff9173d0b941abed8b2ea6a412f82b56d9ab1edb918c74000c15839362"}, - {file = "aiohttp-3.10.6-cp313-cp313-win32.whl", hash = "sha256:2dd56e3c43660ed3bea67fd4c5025f1ac1f9ecf6f0b991a6e5efe2e678c490c5"}, - {file = "aiohttp-3.10.6-cp313-cp313-win_amd64.whl", hash = "sha256:c91781d969fbced1993537f45efe1213bd6fccb4b37bfae2a026e20d6fbed206"}, - {file = "aiohttp-3.10.6-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:4407a80bca3e694f2d2a523058e20e1f9f98a416619e04f6dc09dc910352ac8b"}, - {file = "aiohttp-3.10.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1cb045ec5961f51af3e2c08cd6fe523f07cc6e345033adee711c49b7b91bb954"}, - {file = "aiohttp-3.10.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4fabdcdc781a36b8fd7b2ca9dea8172f29a99e11d00ca0f83ffeb50958da84a1"}, - {file = "aiohttp-3.10.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79a9f42efcc2681790595ab3d03c0e52d01edc23a0973ea09f0dc8d295e12b8e"}, - {file = "aiohttp-3.10.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cca776a440795db437d82c07455761c85bbcf3956221c3c23b8c93176c278ce7"}, - {file = "aiohttp-3.10.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5582de171f0898139cf51dd9fcdc79b848e28d9abd68e837f0803fc9f30807b1"}, - {file = "aiohttp-3.10.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:370e2d47575c53c817ee42a18acc34aad8da4dbdaac0a6c836d58878955f1477"}, - {file = "aiohttp-3.10.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:444d1704e2af6b30766debed9be8a795958029e552fe77551355badb1944012c"}, - {file = "aiohttp-3.10.6-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:40271a2a375812967401c9ca8077de9368e09a43a964f4dce0ff603301ec9358"}, - {file = "aiohttp-3.10.6-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:f3af26f86863fad12e25395805bb0babbd49d512806af91ec9708a272b696248"}, - {file = "aiohttp-3.10.6-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:4752df44df48fd42b80f51d6a97553b482cda1274d9dc5df214a3a1aa5d8f018"}, - {file = "aiohttp-3.10.6-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:2cd5290ab66cfca2f90045db2cc6434c1f4f9fbf97c9f1c316e785033782e7d2"}, - {file = "aiohttp-3.10.6-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:3427031064b0d5c95647e6369c4aa3c556402f324a3e18107cb09517abe5f962"}, - {file = "aiohttp-3.10.6-cp38-cp38-win32.whl", hash = "sha256:614fc21e86adc28e4165a6391f851a6da6e9cbd7bb232d0df7718b453a89ee98"}, - {file = "aiohttp-3.10.6-cp38-cp38-win_amd64.whl", hash = "sha256:58c5d7318a136a3874c78717dd6de57519bc64f6363c5827c2b1cb775bea71dd"}, - {file = "aiohttp-3.10.6-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5db26bbca8e7968c4c977a0c640e0b9ce7224e1f4dcafa57870dc6ee28e27de6"}, - {file = "aiohttp-3.10.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3fb4216e3ec0dbc01db5ba802f02ed78ad8f07121be54eb9e918448cc3f61b7c"}, - {file = "aiohttp-3.10.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a976ef488f26e224079deb3d424f29144c6d5ba4ded313198169a8af8f47fb82"}, - {file = "aiohttp-3.10.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a86610174de8a85a920e956e2d4f9945e7da89f29a00e95ac62a4a414c4ef4e"}, - {file = "aiohttp-3.10.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:217791c6a399cc4f2e6577bb44344cba1f5714a2aebf6a0bea04cfa956658284"}, - {file = "aiohttp-3.10.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ba3662d41abe2eab0eeec7ee56f33ef4e0b34858f38abf24377687f9e1fb00a5"}, - {file = "aiohttp-3.10.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4dfa5ad4bce9ca30a76117fbaa1c1decf41ebb6c18a4e098df44298941566f9"}, - {file = "aiohttp-3.10.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e0009258e97502936d3bd5bf2ced15769629097d0abb81e6495fba1047824fe0"}, - {file = "aiohttp-3.10.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0a75d5c9fb4f06c41d029ae70ad943c3a844c40c0a769d12be4b99b04f473d3d"}, - {file = "aiohttp-3.10.6-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:8198b7c002aae2b40b2d16bfe724b9a90bcbc9b78b2566fc96131ef4e382574d"}, - {file = "aiohttp-3.10.6-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:4611db8c907f90fe86be112efdc2398cd7b4c8eeded5a4f0314b70fdea8feab0"}, - {file = "aiohttp-3.10.6-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:ff99ae06eef85c7a565854826114ced72765832ee16c7e3e766c5e4c5b98d20e"}, - {file = "aiohttp-3.10.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7641920bdcc7cd2d3ddfb8bb9133a6c9536b09dbd49490b79e125180b2d25b93"}, - {file = "aiohttp-3.10.6-cp39-cp39-win32.whl", hash = "sha256:e2e7d5591ea868d5ec82b90bbeb366a198715672841d46281b623e23079593db"}, - {file = "aiohttp-3.10.6-cp39-cp39-win_amd64.whl", hash = "sha256:b504c08c45623bf5c7ca41be380156d925f00199b3970efd758aef4a77645feb"}, - {file = "aiohttp-3.10.6.tar.gz", hash = "sha256:d2578ef941be0c2ba58f6f421a703527d08427237ed45ecb091fed6f83305336"}, + {file = "aiohttp-3.10.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a1ba7bc139592339ddeb62c06486d0fa0f4ca61216e14137a40d626c81faf10c"}, + {file = "aiohttp-3.10.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:85e4d7bd05d18e4b348441e7584c681eff646e3bf38f68b2626807f3add21aa2"}, + {file = "aiohttp-3.10.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:69de056022e7abf69cb9fec795515973cc3eeaff51e3ea8d72a77aa933a91c52"}, + {file = "aiohttp-3.10.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ee3587506898d4a404b33bd19689286ccf226c3d44d7a73670c8498cd688e42c"}, + {file = "aiohttp-3.10.8-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fe285a697c851734285369614443451462ce78aac2b77db23567507484b1dc6f"}, + {file = "aiohttp-3.10.8-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:10c7932337285a6bfa3a5fe1fd4da90b66ebfd9d0cbd1544402e1202eb9a8c3e"}, + {file = "aiohttp-3.10.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd9716ef0224fe0d0336997eb242f40619f9f8c5c57e66b525a1ebf9f1d8cebe"}, + {file = "aiohttp-3.10.8-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ceacea31f8a55cdba02bc72c93eb2e1b77160e91f8abd605969c168502fd71eb"}, + {file = "aiohttp-3.10.8-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:9721554bfa9e15f6e462da304374c2f1baede3cb06008c36c47fa37ea32f1dc4"}, + {file = "aiohttp-3.10.8-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:22cdeb684d8552490dd2697a5138c4ecb46f844892df437aaf94f7eea99af879"}, + {file = "aiohttp-3.10.8-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:e56bb7e31c4bc79956b866163170bc89fd619e0581ce813330d4ea46921a4881"}, + {file = "aiohttp-3.10.8-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:3a95d2686bc4794d66bd8de654e41b5339fab542b2bca9238aa63ed5f4f2ce82"}, + {file = "aiohttp-3.10.8-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d82404a0e7b10e0d7f022cf44031b78af8a4f99bd01561ac68f7c24772fed021"}, + {file = "aiohttp-3.10.8-cp310-cp310-win32.whl", hash = "sha256:4e10b04542d27e21538e670156e88766543692a0a883f243ba8fad9ddea82e53"}, + {file = "aiohttp-3.10.8-cp310-cp310-win_amd64.whl", hash = "sha256:680dbcff5adc7f696ccf8bf671d38366a1f620b5616a1d333d0cb33956065395"}, + {file = "aiohttp-3.10.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:33a68011a38020ed4ff41ae0dbf4a96a202562ecf2024bdd8f65385f1d07f6ef"}, + {file = "aiohttp-3.10.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6c7efa6616a95e3bd73b8a69691012d2ef1f95f9ea0189e42f338fae080c2fc6"}, + {file = "aiohttp-3.10.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ddb9b9764cfb4459acf01c02d2a59d3e5066b06a846a364fd1749aa168efa2be"}, + {file = "aiohttp-3.10.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c7f270f4ca92760f98a42c45a58674fff488e23b144ec80b1cc6fa2effed377"}, + {file = "aiohttp-3.10.8-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6984dda9d79064361ab58d03f6c1e793ea845c6cfa89ffe1a7b9bb400dfd56bd"}, + {file = "aiohttp-3.10.8-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3f6d47e392c27206701565c8df4cac6ebed28fdf6dcaea5b1eea7a4631d8e6db"}, + {file = "aiohttp-3.10.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a72f89aea712c619b2ca32c6f4335c77125ede27530ad9705f4f349357833695"}, + {file = "aiohttp-3.10.8-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c36074b26f3263879ba8e4dbd33db2b79874a3392f403a70b772701363148b9f"}, + {file = "aiohttp-3.10.8-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e32148b4a745e70a255a1d44b5664de1f2e24fcefb98a75b60c83b9e260ddb5b"}, + {file = "aiohttp-3.10.8-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5aa1a073514cf59c81ad49a4ed9b5d72b2433638cd53160fd2f3a9cfa94718db"}, + {file = "aiohttp-3.10.8-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:d3a79200a9d5e621c4623081ddb25380b713c8cf5233cd11c1aabad990bb9381"}, + {file = "aiohttp-3.10.8-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:e45fdfcb2d5bcad83373e4808825b7512953146d147488114575780640665027"}, + {file = "aiohttp-3.10.8-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f78e2a78432c537ae876a93013b7bc0027ba5b93ad7b3463624c4b6906489332"}, + {file = "aiohttp-3.10.8-cp311-cp311-win32.whl", hash = "sha256:f8179855a4e4f3b931cb1764ec87673d3fbdcca2af496c8d30567d7b034a13db"}, + {file = "aiohttp-3.10.8-cp311-cp311-win_amd64.whl", hash = "sha256:ef9b484604af05ca745b6108ca1aaa22ae1919037ae4f93aaf9a37ba42e0b835"}, + {file = "aiohttp-3.10.8-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:ab2d6523575fc98896c80f49ac99e849c0b0e69cc80bf864eed6af2ae728a52b"}, + {file = "aiohttp-3.10.8-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f5d5d5401744dda50b943d8764508d0e60cc2d3305ac1e6420935861a9d544bc"}, + {file = "aiohttp-3.10.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:de23085cf90911600ace512e909114385026b16324fa203cc74c81f21fd3276a"}, + {file = "aiohttp-3.10.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4618f0d2bf523043866a9ff8458900d8eb0a6d4018f251dae98e5f1fb699f3a8"}, + {file = "aiohttp-3.10.8-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:21c1925541ca84f7b5e0df361c0a813a7d6a56d3b0030ebd4b220b8d232015f9"}, + {file = "aiohttp-3.10.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:497a7d20caea8855c5429db3cdb829385467217d7feb86952a6107e033e031b9"}, + {file = "aiohttp-3.10.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c887019dbcb4af58a091a45ccf376fffe800b5531b45c1efccda4bedf87747ea"}, + {file = "aiohttp-3.10.8-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40d2d719c3c36a7a65ed26400e2b45b2d9ed7edf498f4df38b2ae130f25a0d01"}, + {file = "aiohttp-3.10.8-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:57359785f27394a8bcab0da6dcd46706d087dfebf59a8d0ad2e64a4bc2f6f94f"}, + {file = "aiohttp-3.10.8-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a961ee6f2cdd1a2be4735333ab284691180d40bad48f97bb598841bfcbfb94ec"}, + {file = "aiohttp-3.10.8-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:fe3d79d6af839ffa46fdc5d2cf34295390894471e9875050eafa584cb781508d"}, + {file = "aiohttp-3.10.8-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9a281cba03bdaa341c70b7551b2256a88d45eead149f48b75a96d41128c240b3"}, + {file = "aiohttp-3.10.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c6769d71bfb1ed60321363a9bc05e94dcf05e38295ef41d46ac08919e5b00d19"}, + {file = "aiohttp-3.10.8-cp312-cp312-win32.whl", hash = "sha256:a3081246bab4d419697ee45e555cef5cd1def7ac193dff6f50be761d2e44f194"}, + {file = "aiohttp-3.10.8-cp312-cp312-win_amd64.whl", hash = "sha256:ab1546fc8e00676febc81c548a876c7bde32f881b8334b77f84719ab2c7d28dc"}, + {file = "aiohttp-3.10.8-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:b1a012677b8e0a39e181e218de47d6741c5922202e3b0b65e412e2ce47c39337"}, + {file = "aiohttp-3.10.8-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2df786c96c57cd6b87156ba4c5f166af7b88f3fc05f9d592252fdc83d8615a3c"}, + {file = "aiohttp-3.10.8-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:8885ca09d3a9317219c0831276bfe26984b17b2c37b7bf70dd478d17092a4772"}, + {file = "aiohttp-3.10.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4dbf252ac19860e0ab56cd480d2805498f47c5a2d04f5995d8d8a6effd04b48c"}, + {file = "aiohttp-3.10.8-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b2036479b6b94afaaca7d07b8a68dc0e67b0caf5f6293bb6a5a1825f5923000"}, + {file = "aiohttp-3.10.8-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:365783e1b7c40b59ed4ce2b5a7491bae48f41cd2c30d52647a5b1ee8604c68ad"}, + {file = "aiohttp-3.10.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:270e653b5a4b557476a1ed40e6b6ce82f331aab669620d7c95c658ef976c9c5e"}, + {file = "aiohttp-3.10.8-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8960fabc20bfe4fafb941067cda8e23c8c17c98c121aa31c7bf0cdab11b07842"}, + {file = "aiohttp-3.10.8-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f21e8f2abed9a44afc3d15bba22e0dfc71e5fa859bea916e42354c16102b036f"}, + {file = "aiohttp-3.10.8-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:fecd55e7418fabd297fd836e65cbd6371aa4035a264998a091bbf13f94d9c44d"}, + {file = "aiohttp-3.10.8-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:badb51d851358cd7535b647bb67af4854b64f3c85f0d089c737f75504d5910ec"}, + {file = "aiohttp-3.10.8-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:e860985f30f3a015979e63e7ba1a391526cdac1b22b7b332579df7867848e255"}, + {file = "aiohttp-3.10.8-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:71462f8eeca477cbc0c9700a9464e3f75f59068aed5e9d4a521a103692da72dc"}, + {file = "aiohttp-3.10.8-cp313-cp313-win32.whl", hash = "sha256:177126e971782769b34933e94fddd1089cef0fe6b82fee8a885e539f5b0f0c6a"}, + {file = "aiohttp-3.10.8-cp313-cp313-win_amd64.whl", hash = "sha256:98a4eb60e27033dee9593814ca320ee8c199489fbc6b2699d0f710584db7feb7"}, + {file = "aiohttp-3.10.8-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ffef3d763e4c8fc97e740da5b4d0f080b78630a3914f4e772a122bbfa608c1db"}, + {file = "aiohttp-3.10.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:597128cb7bc5f068181b49a732961f46cb89f85686206289d6ccb5e27cb5fbe2"}, + {file = "aiohttp-3.10.8-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f23a6c1d09de5de89a33c9e9b229106cb70dcfdd55e81a3a3580eaadaa32bc92"}, + {file = "aiohttp-3.10.8-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da57af0c54a302b7c655fa1ccd5b1817a53739afa39924ef1816e7b7c8a07ccb"}, + {file = "aiohttp-3.10.8-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1e7a6af57091056a79a35104d6ec29d98ec7f1fb7270ad9c6fff871b678d1ff8"}, + {file = "aiohttp-3.10.8-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:32710d6b3b6c09c60c794d84ca887a3a2890131c0b02b3cefdcc6709a2260a7c"}, + {file = "aiohttp-3.10.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b91f4f62ad39a8a42d511d66269b46cb2fb7dea9564c21ab6c56a642d28bff5"}, + {file = "aiohttp-3.10.8-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:471a8c47344b9cc309558b3fcc469bd2c12b49322b4b31eb386c4a2b2d44e44a"}, + {file = "aiohttp-3.10.8-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:fc0e7f91705445d79beafba9bb3057dd50830e40fe5417017a76a214af54e122"}, + {file = "aiohttp-3.10.8-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:85431c9131a9a0f65260dc7a65c800ca5eae78c4c9931618f18c8e0933a0e0c1"}, + {file = "aiohttp-3.10.8-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:b91557ee0893da52794b25660d4f57bb519bcad8b7df301acd3898f7197c5d81"}, + {file = "aiohttp-3.10.8-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:4954e6b06dd0be97e1a5751fc606be1f9edbdc553c5d9b57d72406a8fbd17f9d"}, + {file = "aiohttp-3.10.8-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:a087c84b4992160ffef7afd98ef24177c8bd4ad61c53607145a8377457385100"}, + {file = "aiohttp-3.10.8-cp38-cp38-win32.whl", hash = "sha256:e1f0f7b27171b2956a27bd8f899751d0866ddabdd05cbddf3520f945130a908c"}, + {file = "aiohttp-3.10.8-cp38-cp38-win_amd64.whl", hash = "sha256:c4916070e12ae140110aa598031876c1bf8676a36a750716ea0aa5bd694aa2e7"}, + {file = "aiohttp-3.10.8-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5284997e3d88d0dfb874c43e51ae8f4a6f4ca5b90dcf22995035187253d430db"}, + {file = "aiohttp-3.10.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9443d9ebc5167ce1fbb552faf2d666fb22ef5716a8750be67efd140a7733738c"}, + {file = "aiohttp-3.10.8-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b667e2a03407d79a76c618dc30cedebd48f082d85880d0c9c4ec2faa3e10f43e"}, + {file = "aiohttp-3.10.8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:98fae99d5c2146f254b7806001498e6f9ffb0e330de55a35e72feb7cb2fa399b"}, + {file = "aiohttp-3.10.8-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8296edd99d0dd9d0eb8b9e25b3b3506eef55c1854e9cc230f0b3f885f680410b"}, + {file = "aiohttp-3.10.8-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1ce46dfb49cfbf9e92818be4b761d4042230b1f0e05ffec0aad15b3eb162b905"}, + {file = "aiohttp-3.10.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c38cfd355fd86c39b2d54651bd6ed7d63d4fe3b5553f364bae3306e2445f847"}, + {file = "aiohttp-3.10.8-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:713dff3f87ceec3bde4f3f484861464e722cf7533f9fa6b824ec82bb5a9010a7"}, + {file = "aiohttp-3.10.8-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:21a72f4a9c69a8567a0aca12042f12bba25d3139fd5dd8eeb9931f4d9e8599cd"}, + {file = "aiohttp-3.10.8-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:6d1ad868624f6cea77341ef2877ad4e71f7116834a6cd7ec36ec5c32f94ee6ae"}, + {file = "aiohttp-3.10.8-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:a78ba86d5a08207d1d1ad10b97aed6ea48b374b3f6831d02d0b06545ac0f181e"}, + {file = "aiohttp-3.10.8-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:aff048793d05e1ce05b62e49dccf81fe52719a13f4861530706619506224992b"}, + {file = "aiohttp-3.10.8-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:d088ca05381fd409793571d8e34eca06daf41c8c50a05aeed358d2d340c7af81"}, + {file = "aiohttp-3.10.8-cp39-cp39-win32.whl", hash = "sha256:ee97c4e54f457c366e1f76fbbf3e8effee9de57dae671084a161c00f481106ce"}, + {file = "aiohttp-3.10.8-cp39-cp39-win_amd64.whl", hash = "sha256:d95ae4420669c871667aad92ba8cce6251d61d79c1a38504621094143f94a8b4"}, + {file = "aiohttp-3.10.8.tar.gz", hash = "sha256:21f8225f7dc187018e8433c9326be01477fb2810721e048b33ac49091b19fb4a"}, ] [package.dependencies] @@ -912,23 +912,6 @@ docs = ["furo (>=2024.8.6)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2. testing = ["covdefaults (>=2.3)", "coverage (>=7.6.1)", "diff-cover (>=9.2)", "pytest (>=8.3.3)", "pytest-asyncio (>=0.24)", "pytest-cov (>=5)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.26.4)"] typing = ["typing-extensions (>=4.12.2)"] -[[package]] -name = "firecrawl-py" -version = "1.2.4" -description = "Python SDK for Firecrawl API" -optional = false -python-versions = ">=3.8" -files = [ - {file = "firecrawl_py-1.2.4-py3-none-any.whl", hash = "sha256:0464992f354f4f7830dc29433dacad127a9cd73e331601c719f811df70bace58"}, - {file = "firecrawl_py-1.2.4.tar.gz", hash = "sha256:bff3cfbce725739f6d7d7f8975b43be392f17c844f601485f19c2ddcf2b4f8de"}, -] - -[package.dependencies] -nest-asyncio = "*" -python-dotenv = "*" -requests = "*" -websockets = "*" - [[package]] name = "frozenlist" version = "1.4.1" @@ -1451,21 +1434,25 @@ test = ["portend", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-c [[package]] name = "jaraco-functools" -version = "4.0.2" +version = "4.1.0" description = "Functools like those found in stdlib" optional = false python-versions = ">=3.8" files = [ - {file = "jaraco.functools-4.0.2-py3-none-any.whl", hash = "sha256:c9d16a3ed4ccb5a889ad8e0b7a343401ee5b2a71cee6ed192d3f68bc351e94e3"}, - {file = "jaraco_functools-4.0.2.tar.gz", hash = "sha256:3460c74cd0d32bf82b9576bbb3527c4364d5b27a21f5158a62aed6c4b42e23f5"}, + {file = "jaraco.functools-4.1.0-py3-none-any.whl", hash = "sha256:ad159f13428bc4acbf5541ad6dec511f91573b90fba04df61dafa2a1231cf649"}, + {file = "jaraco_functools-4.1.0.tar.gz", hash = "sha256:70f7e0e2ae076498e212562325e805204fc092d7b4c17e0e86c959e249701a9d"}, ] [package.dependencies] more-itertools = "*" [package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"] +cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -test = ["jaraco.classes", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-ruff (>=0.2.1)"] +enabler = ["pytest-enabler (>=2.2)"] +test = ["jaraco.classes", "pytest (>=6,!=8.1.*)"] +type = ["pytest-mypy"] [[package]] name = "jedi" @@ -1726,13 +1713,13 @@ tenacity = ">=8.1.0,<8.4.0 || >8.4.0,<9.0.0" [[package]] name = "langchain-core" -version = "0.3.6" +version = "0.3.7" description = "Building applications with LLMs through composability" optional = false python-versions = "<4.0,>=3.9" files = [ - {file = "langchain_core-0.3.6-py3-none-any.whl", hash = "sha256:7bb3df0117bdc628b18b6c8748de72c6f537d745d47566053ce6650d5712281c"}, - {file = "langchain_core-0.3.6.tar.gz", hash = "sha256:eb190494a5483f1965f693bb2085edb523370b20fc52dc294d3bd425773cd076"}, + {file = "langchain_core-0.3.7-py3-none-any.whl", hash = "sha256:a789875358001ca9293875c12f0b6238855325621ab66775109497b9b1648157"}, + {file = "langchain_core-0.3.7.tar.gz", hash = "sha256:9f877c00fec7fe1dca929dd3bed3999ee4c2e5c14c6744ed82cc66ddfcd15fdf"}, ] [package.dependencies] @@ -1779,28 +1766,28 @@ langchain-core = ">=0.3.0,<0.4.0" [[package]] name = "langgraph" -version = "0.2.28" +version = "0.2.31" description = "Building stateful, multi-actor applications with LLMs" optional = false python-versions = "<4.0,>=3.9.0" files = [ - {file = "langgraph-0.2.28-py3-none-any.whl", hash = "sha256:23390763c025139f71dc1f1576b31b6755fecff8dcc51a84505e24e63ec1218b"}, - {file = "langgraph-0.2.28.tar.gz", hash = "sha256:c968a1ed85025e0651d9390a7ba978447ab80d676f81dd0a049a7456754b3bce"}, + {file = "langgraph-0.2.31-py3-none-any.whl", hash = "sha256:9e5b4138aae95bfbd928b6f0f2869431060c80d7a62fc831370cf2aed3a488e8"}, + {file = "langgraph-0.2.31.tar.gz", hash = "sha256:78759ebd8abcabb1894cf64e07d221a11b970e77553a4f89e1134c3602958341"}, ] [package.dependencies] langchain-core = ">=0.2.39,<0.4" -langgraph-checkpoint = ">=1.0.2,<2.0.0" +langgraph-checkpoint = ">=1.0.14,<2.0.0" [[package]] name = "langgraph-checkpoint" -version = "1.0.11" +version = "1.0.14" description = "Library with base interfaces for LangGraph checkpoint savers." optional = false python-versions = "<4.0.0,>=3.9.0" files = [ - {file = "langgraph_checkpoint-1.0.11-py3-none-any.whl", hash = "sha256:9644bd61e3ab5b03fc0422aa5e625061ad14aa2012d046bf4bb306451da95371"}, - {file = "langgraph_checkpoint-1.0.11.tar.gz", hash = "sha256:156af1666272a0be3cda4a2c4ffe6b2e2f5af8ead7d450d345cbb39828ce4b05"}, + {file = "langgraph_checkpoint-1.0.14-py3-none-any.whl", hash = "sha256:a60cbf06011a5f9c9bfcde971684732acd5df39632c58ff45f02f814519e9d8c"}, + {file = "langgraph_checkpoint-1.0.14.tar.gz", hash = "sha256:5c51f8d8cca4c0ed3e75c264a7bf66a2efa60ff521ed46f05facf606df424eb1"}, ] [package.dependencies] @@ -1809,13 +1796,13 @@ msgpack = ">=1.1.0,<2.0.0" [[package]] name = "langsmith" -version = "0.1.128" +version = "0.1.129" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.128-py3-none-any.whl", hash = "sha256:c1b59d947584be7487ac53dffb4e232704626964011b714fd3d9add4b3694cbc"}, - {file = "langsmith-0.1.128.tar.gz", hash = "sha256:3299e17a659f3c47725c97c47f4445fc34113ac668becce425919866fbcb6ec2"}, + {file = "langsmith-0.1.129-py3-none-any.whl", hash = "sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347"}, + {file = "langsmith-0.1.129.tar.gz", hash = "sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"}, ] [package.dependencies] @@ -2233,13 +2220,13 @@ pyyaml = ">=5.1" [[package]] name = "mkdocs-material" -version = "9.5.38" +version = "9.5.39" description = "Documentation that simply works" optional = false python-versions = ">=3.8" files = [ - {file = "mkdocs_material-9.5.38-py3-none-any.whl", hash = "sha256:d4779051d52ba9f1e7e344b34de95449c7c366c212b388e4a2db9a3db043c228"}, - {file = "mkdocs_material-9.5.38.tar.gz", hash = "sha256:1843c5171ad6b489550aeaf7358e5b7128cc03ddcf0fb4d91d19aa1e691a63b8"}, + {file = "mkdocs_material-9.5.39-py3-none-any.whl", hash = "sha256:0f2f68c8db89523cb4a59705cd01b4acd62b2f71218ccb67e1e004e560410d2b"}, + {file = "mkdocs_material-9.5.39.tar.gz", hash = "sha256:25faa06142afa38549d2b781d475a86fb61de93189f532b88e69bf11e5e5c3be"}, ] [package.dependencies] @@ -2531,17 +2518,6 @@ files = [ {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, ] -[[package]] -name = "nest-asyncio" -version = "1.6.0" -description = "Patch asyncio to allow nested event loops" -optional = false -python-versions = ">=3.5" -files = [ - {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"}, - {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"}, -] - [[package]] name = "nh3" version = "0.2.18" @@ -2625,13 +2601,13 @@ files = [ [[package]] name = "openai" -version = "1.48.0" +version = "1.50.2" description = "The official Python library for the openai API" optional = false python-versions = ">=3.7.1" files = [ - {file = "openai-1.48.0-py3-none-any.whl", hash = "sha256:7c4af223f0bf615ce4a12453729952c9a8b04ffe8c78aa77981b12fd970149cf"}, - {file = "openai-1.48.0.tar.gz", hash = "sha256:1d3b69ea62c287c4885a6f3ce840768564cd5f52c60ac5f890fef80d43cc4799"}, + {file = "openai-1.50.2-py3-none-any.whl", hash = "sha256:822dd2051baa3393d0d5406990611975dd6f533020dc9375a34d4fe67e8b75f7"}, + {file = "openai-1.50.2.tar.gz", hash = "sha256:3987ae027152fc8bea745d60b02c8f4c4a76e1b5c70e73565fa556db6f78c9e6"}, ] [package.dependencies] @@ -3052,13 +3028,13 @@ windows-terminal = ["colorama (>=0.4.6)"] [[package]] name = "pymdown-extensions" -version = "10.10.2" +version = "10.11.1" description = "Extension pack for Python Markdown." optional = false python-versions = ">=3.8" files = [ - {file = "pymdown_extensions-10.10.2-py3-none-any.whl", hash = "sha256:513a9e9432b197cf0539356c8f1fc376e0d10b70ad150cadeb649a5628aacd45"}, - {file = "pymdown_extensions-10.10.2.tar.gz", hash = "sha256:65d82324ef2497931bc858c8320540c6264ab0d9a292707edb61f4fe0cd56633"}, + {file = "pymdown_extensions-10.11.1-py3-none-any.whl", hash = "sha256:a2b28f5786e041f19cb5bb30a1c2c853668a7099da8e3dd822a5ad05f2e855e3"}, + {file = "pymdown_extensions-10.11.1.tar.gz", hash = "sha256:a8836e955851542fa2625d04d59fdf97125ca001377478ed5618e04f9183a59a"}, ] [package.dependencies] @@ -3103,13 +3079,13 @@ testing = ["covdefaults (>=2.3)", "pytest (>=8.3.3)", "pytest-cov (>=5)", "pytes [[package]] name = "pyproject-hooks" -version = "1.1.0" +version = "1.2.0" description = "Wrappers to call pyproject.toml-based build backend hooks." optional = false python-versions = ">=3.7" files = [ - {file = "pyproject_hooks-1.1.0-py3-none-any.whl", hash = "sha256:7ceeefe9aec63a1064c18d939bdc3adf2d8aa1988a510afec15151578b232aa2"}, - {file = "pyproject_hooks-1.1.0.tar.gz", hash = "sha256:4b37730834edbd6bd37f26ece6b44802fb1c1ee2ece0e54ddff8bfc06db86965"}, + {file = "pyproject_hooks-1.2.0-py3-none-any.whl", hash = "sha256:9e5c6bfa8dcc30091c74b0cf803c81fdd29d94f01992a7707bc97babb1141913"}, + {file = "pyproject_hooks-1.2.0.tar.gz", hash = "sha256:1e859bd5c40fae9448642dd871adf459e5e2084186e8d2c2a79a824c970da1f8"}, ] [[package]] @@ -3495,13 +3471,13 @@ idna2008 = ["idna"] [[package]] name = "rich" -version = "13.8.1" +version = "13.9.0" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" optional = false -python-versions = ">=3.7.0" +python-versions = ">=3.8.0" files = [ - {file = "rich-13.8.1-py3-none-any.whl", hash = "sha256:1760a3c0848469b97b558fc61c85233e3dafb69c7a071b4d60c38099d3cd4c06"}, - {file = "rich-13.8.1.tar.gz", hash = "sha256:8260cda28e3db6bf04d2d1ef4dbc03ba80a824c88b0e7668a0f23126a424844a"}, + {file = "rich-13.9.0-py3-none-any.whl", hash = "sha256:9338ab80106a9257e1a910510ff72f9c0d31a27aaa8f560751a54fe910a874b6"}, + {file = "rich-13.9.0.tar.gz", hash = "sha256:06ff5147711c0f6cec2cdbb247a6cff251268a66d700c2557699bfe104fc0bf4"}, ] [package.dependencies] @@ -4020,30 +3996,31 @@ files = [ [[package]] name = "tox" -version = "4.20.0" +version = "4.21.0" description = "tox is a generic virtualenv management and test command line tool" optional = false python-versions = ">=3.8" files = [ - {file = "tox-4.20.0-py3-none-any.whl", hash = "sha256:21a8005e3d3fe5658a8e36b8ca3ed13a4230429063c5cc2a2fdac6ee5aa0de34"}, - {file = "tox-4.20.0.tar.gz", hash = "sha256:5b78a49b6eaaeab3ae4186415e7c97d524f762ae967c63562687c3e5f0ec23d5"}, + {file = "tox-4.21.0-py3-none-any.whl", hash = "sha256:693ac51378255d34ad7aab6dd2ce9ab6a1cf1924eb930183fde850ad503b681d"}, + {file = "tox-4.21.0.tar.gz", hash = "sha256:e64dd9847ff3a7ec90368be412d7efe61a39caf043222ffbe9ad638ea435f6f6"}, ] [package.dependencies] cachetools = ">=5.5" chardet = ">=5.2" colorama = ">=0.4.6" -filelock = ">=3.15.4" +filelock = ">=3.16.1" packaging = ">=24.1" -platformdirs = ">=4.2.2" +platformdirs = ">=4.3.6" pluggy = ">=1.5" -pyproject-api = ">=1.7.1" +pyproject-api = ">=1.8" tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""} -virtualenv = ">=20.26.3" +typing-extensions = {version = ">=4.12.2", markers = "python_version < \"3.11\""} +virtualenv = ">=20.26.6" [package.extras] -docs = ["furo (>=2024.8.6)", "sphinx (>=8.0.2)", "sphinx-argparse-cli (>=1.17)", "sphinx-autodoc-typehints (>=2.4)", "sphinx-copybutton (>=0.5.2)", "sphinx-inline-tabs (>=2023.4.21)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=24.8)"] -testing = ["build[virtualenv] (>=1.2.2)", "covdefaults (>=2.3)", "detect-test-pollution (>=1.2)", "devpi-process (>=1)", "diff-cover (>=9.1.1)", "distlib (>=0.3.8)", "flaky (>=3.8.1)", "hatch-vcs (>=0.4)", "hatchling (>=1.25)", "psutil (>=6)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)", "pytest-xdist (>=3.6.1)", "re-assert (>=1.1)", "setuptools (>=74.1.2)", "time-machine (>=2.15)", "wheel (>=0.44)"] +docs = ["furo (>=2024.8.6)", "sphinx (>=8.0.2)", "sphinx-argparse-cli (>=1.18.2)", "sphinx-autodoc-typehints (>=2.4.4)", "sphinx-copybutton (>=0.5.2)", "sphinx-inline-tabs (>=2023.4.21)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=24.8)"] +testing = ["build[virtualenv] (>=1.2.2)", "covdefaults (>=2.3)", "detect-test-pollution (>=1.2)", "devpi-process (>=1.0.2)", "diff-cover (>=9.2)", "distlib (>=0.3.8)", "flaky (>=3.8.1)", "hatch-vcs (>=0.4)", "hatchling (>=1.25)", "psutil (>=6)", "pytest (>=8.3.3)", "pytest-cov (>=5)", "pytest-mock (>=3.14)", "pytest-xdist (>=3.6.1)", "re-assert (>=1.1)", "setuptools (>=75.1)", "time-machine (>=2.15)", "wheel (>=0.44)"] [[package]] name = "tox-gh" @@ -4205,13 +4182,13 @@ test = ["coverage", "flake8 (>=3.7)", "mypy", "pretend", "pytest"] [[package]] name = "virtualenv" -version = "20.26.5" +version = "20.26.6" description = "Virtual Python Environment builder" optional = false python-versions = ">=3.7" files = [ - {file = "virtualenv-20.26.5-py3-none-any.whl", hash = "sha256:4f3ac17b81fba3ce3bd6f4ead2749a72da5929c01774948e243db9ba41df4ff6"}, - {file = "virtualenv-20.26.5.tar.gz", hash = "sha256:ce489cac131aa58f4b25e321d6d186171f78e6cb13fafbf32a840cee67733ff4"}, + {file = "virtualenv-20.26.6-py3-none-any.whl", hash = "sha256:7345cc5b25405607a624d8418154577459c3e0277f5466dd79c49d5e492995f2"}, + {file = "virtualenv-20.26.6.tar.gz", hash = "sha256:280aede09a2a5c317e409a00102e7077c6432c5a38f0ef938e643805a7ad2c48"}, ] [package.dependencies] @@ -4225,41 +4202,41 @@ test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess [[package]] name = "watchdog" -version = "5.0.2" +version = "5.0.3" description = "Filesystem events monitoring" optional = false python-versions = ">=3.9" files = [ - {file = "watchdog-5.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d961f4123bb3c447d9fcdcb67e1530c366f10ab3a0c7d1c0c9943050936d4877"}, - {file = "watchdog-5.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72990192cb63872c47d5e5fefe230a401b87fd59d257ee577d61c9e5564c62e5"}, - {file = "watchdog-5.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6bec703ad90b35a848e05e1b40bf0050da7ca28ead7ac4be724ae5ac2653a1a0"}, - {file = "watchdog-5.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:dae7a1879918f6544201d33666909b040a46421054a50e0f773e0d870ed7438d"}, - {file = "watchdog-5.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c4a440f725f3b99133de610bfec93d570b13826f89616377715b9cd60424db6e"}, - {file = "watchdog-5.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f8b2918c19e0d48f5f20df458c84692e2a054f02d9df25e6c3c930063eca64c1"}, - {file = "watchdog-5.0.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:aa9cd6e24126d4afb3752a3e70fce39f92d0e1a58a236ddf6ee823ff7dba28ee"}, - {file = "watchdog-5.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f627c5bf5759fdd90195b0c0431f99cff4867d212a67b384442c51136a098ed7"}, - {file = "watchdog-5.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d7594a6d32cda2b49df3fd9abf9b37c8d2f3eab5df45c24056b4a671ac661619"}, - {file = "watchdog-5.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba32efcccfe2c58f4d01115440d1672b4eb26cdd6fc5b5818f1fb41f7c3e1889"}, - {file = "watchdog-5.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:963f7c4c91e3f51c998eeff1b3fb24a52a8a34da4f956e470f4b068bb47b78ee"}, - {file = "watchdog-5.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:8c47150aa12f775e22efff1eee9f0f6beee542a7aa1a985c271b1997d340184f"}, - {file = "watchdog-5.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:14dd4ed023d79d1f670aa659f449bcd2733c33a35c8ffd88689d9d243885198b"}, - {file = "watchdog-5.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b84bff0391ad4abe25c2740c7aec0e3de316fdf7764007f41e248422a7760a7f"}, - {file = "watchdog-5.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3e8d5ff39f0a9968952cce548e8e08f849141a4fcc1290b1c17c032ba697b9d7"}, - {file = "watchdog-5.0.2-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:fb223456db6e5f7bd9bbd5cd969f05aae82ae21acc00643b60d81c770abd402b"}, - {file = "watchdog-5.0.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9814adb768c23727a27792c77812cf4e2fd9853cd280eafa2bcfa62a99e8bd6e"}, - {file = "watchdog-5.0.2-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:901ee48c23f70193d1a7bc2d9ee297df66081dd5f46f0ca011be4f70dec80dab"}, - {file = "watchdog-5.0.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:638bcca3d5b1885c6ec47be67bf712b00a9ab3d4b22ec0881f4889ad870bc7e8"}, - {file = "watchdog-5.0.2-py3-none-manylinux2014_aarch64.whl", hash = "sha256:5597c051587f8757798216f2485e85eac583c3b343e9aa09127a3a6f82c65ee8"}, - {file = "watchdog-5.0.2-py3-none-manylinux2014_armv7l.whl", hash = "sha256:53ed1bf71fcb8475dd0ef4912ab139c294c87b903724b6f4a8bd98e026862e6d"}, - {file = "watchdog-5.0.2-py3-none-manylinux2014_i686.whl", hash = "sha256:29e4a2607bd407d9552c502d38b45a05ec26a8e40cc7e94db9bb48f861fa5abc"}, - {file = "watchdog-5.0.2-py3-none-manylinux2014_ppc64.whl", hash = "sha256:b6dc8f1d770a8280997e4beae7b9a75a33b268c59e033e72c8a10990097e5fde"}, - {file = "watchdog-5.0.2-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:d2ab34adc9bf1489452965cdb16a924e97d4452fcf88a50b21859068b50b5c3b"}, - {file = "watchdog-5.0.2-py3-none-manylinux2014_s390x.whl", hash = "sha256:7d1aa7e4bb0f0c65a1a91ba37c10e19dabf7eaaa282c5787e51371f090748f4b"}, - {file = "watchdog-5.0.2-py3-none-manylinux2014_x86_64.whl", hash = "sha256:726eef8f8c634ac6584f86c9c53353a010d9f311f6c15a034f3800a7a891d941"}, - {file = "watchdog-5.0.2-py3-none-win32.whl", hash = "sha256:bda40c57115684d0216556671875e008279dea2dc00fcd3dde126ac8e0d7a2fb"}, - {file = "watchdog-5.0.2-py3-none-win_amd64.whl", hash = "sha256:d010be060c996db725fbce7e3ef14687cdcc76f4ca0e4339a68cc4532c382a73"}, - {file = "watchdog-5.0.2-py3-none-win_ia64.whl", hash = "sha256:3960136b2b619510569b90f0cd96408591d6c251a75c97690f4553ca88889769"}, - {file = "watchdog-5.0.2.tar.gz", hash = "sha256:dcebf7e475001d2cdeb020be630dc5b687e9acdd60d16fea6bb4508e7b94cf76"}, + {file = "watchdog-5.0.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:85527b882f3facda0579bce9d743ff7f10c3e1e0db0a0d0e28170a7d0e5ce2ea"}, + {file = "watchdog-5.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:53adf73dcdc0ef04f7735066b4a57a4cd3e49ef135daae41d77395f0b5b692cb"}, + {file = "watchdog-5.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e25adddab85f674acac303cf1f5835951345a56c5f7f582987d266679979c75b"}, + {file = "watchdog-5.0.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f01f4a3565a387080dc49bdd1fefe4ecc77f894991b88ef927edbfa45eb10818"}, + {file = "watchdog-5.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:91b522adc25614cdeaf91f7897800b82c13b4b8ac68a42ca959f992f6990c490"}, + {file = "watchdog-5.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d52db5beb5e476e6853da2e2d24dbbbed6797b449c8bf7ea118a4ee0d2c9040e"}, + {file = "watchdog-5.0.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:94d11b07c64f63f49876e0ab8042ae034674c8653bfcdaa8c4b32e71cfff87e8"}, + {file = "watchdog-5.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:349c9488e1d85d0a58e8cb14222d2c51cbc801ce11ac3936ab4c3af986536926"}, + {file = "watchdog-5.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:53a3f10b62c2d569e260f96e8d966463dec1a50fa4f1b22aec69e3f91025060e"}, + {file = "watchdog-5.0.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:950f531ec6e03696a2414b6308f5c6ff9dab7821a768c9d5788b1314e9a46ca7"}, + {file = "watchdog-5.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ae6deb336cba5d71476caa029ceb6e88047fc1dc74b62b7c4012639c0b563906"}, + {file = "watchdog-5.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1021223c08ba8d2d38d71ec1704496471ffd7be42cfb26b87cd5059323a389a1"}, + {file = "watchdog-5.0.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:752fb40efc7cc8d88ebc332b8f4bcbe2b5cc7e881bccfeb8e25054c00c994ee3"}, + {file = "watchdog-5.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a2e8f3f955d68471fa37b0e3add18500790d129cc7efe89971b8a4cc6fdeb0b2"}, + {file = "watchdog-5.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b8ca4d854adcf480bdfd80f46fdd6fb49f91dd020ae11c89b3a79e19454ec627"}, + {file = "watchdog-5.0.3-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:90a67d7857adb1d985aca232cc9905dd5bc4803ed85cfcdcfcf707e52049eda7"}, + {file = "watchdog-5.0.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:720ef9d3a4f9ca575a780af283c8fd3a0674b307651c1976714745090da5a9e8"}, + {file = "watchdog-5.0.3-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:223160bb359281bb8e31c8f1068bf71a6b16a8ad3d9524ca6f523ac666bb6a1e"}, + {file = "watchdog-5.0.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:560135542c91eaa74247a2e8430cf83c4342b29e8ad4f520ae14f0c8a19cfb5b"}, + {file = "watchdog-5.0.3-py3-none-manylinux2014_aarch64.whl", hash = "sha256:dd021efa85970bd4824acacbb922066159d0f9e546389a4743d56919b6758b91"}, + {file = "watchdog-5.0.3-py3-none-manylinux2014_armv7l.whl", hash = "sha256:78864cc8f23dbee55be34cc1494632a7ba30263951b5b2e8fc8286b95845f82c"}, + {file = "watchdog-5.0.3-py3-none-manylinux2014_i686.whl", hash = "sha256:1e9679245e3ea6498494b3028b90c7b25dbb2abe65c7d07423ecfc2d6218ff7c"}, + {file = "watchdog-5.0.3-py3-none-manylinux2014_ppc64.whl", hash = "sha256:9413384f26b5d050b6978e6fcd0c1e7f0539be7a4f1a885061473c5deaa57221"}, + {file = "watchdog-5.0.3-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:294b7a598974b8e2c6123d19ef15de9abcd282b0fbbdbc4d23dfa812959a9e05"}, + {file = "watchdog-5.0.3-py3-none-manylinux2014_s390x.whl", hash = "sha256:26dd201857d702bdf9d78c273cafcab5871dd29343748524695cecffa44a8d97"}, + {file = "watchdog-5.0.3-py3-none-manylinux2014_x86_64.whl", hash = "sha256:0f9332243355643d567697c3e3fa07330a1d1abf981611654a1f2bf2175612b7"}, + {file = "watchdog-5.0.3-py3-none-win32.whl", hash = "sha256:c66f80ee5b602a9c7ab66e3c9f36026590a0902db3aea414d59a2f55188c1f49"}, + {file = "watchdog-5.0.3-py3-none-win_amd64.whl", hash = "sha256:f00b4cf737f568be9665563347a910f8bdc76f88c2970121c86243c8cfdf90e9"}, + {file = "watchdog-5.0.3-py3-none-win_ia64.whl", hash = "sha256:49f4d36cb315c25ea0d946e018c01bb028048023b9e103d3d3943f58e109dd45"}, + {file = "watchdog-5.0.3.tar.gz", hash = "sha256:108f42a7f0345042a854d4d0ad0834b741d421330d5f575b81cb27b883500176"}, ] [package.extras] @@ -4276,101 +4253,6 @@ files = [ {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, ] -[[package]] -name = "websockets" -version = "13.1" -description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" -optional = false -python-versions = ">=3.8" -files = [ - {file = "websockets-13.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f48c749857f8fb598fb890a75f540e3221d0976ed0bf879cf3c7eef34151acee"}, - {file = "websockets-13.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c7e72ce6bda6fb9409cc1e8164dd41d7c91466fb599eb047cfda72fe758a34a7"}, - {file = "websockets-13.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f779498eeec470295a2b1a5d97aa1bc9814ecd25e1eb637bd9d1c73a327387f6"}, - {file = "websockets-13.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4676df3fe46956fbb0437d8800cd5f2b6d41143b6e7e842e60554398432cf29b"}, - {file = "websockets-13.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a7affedeb43a70351bb811dadf49493c9cfd1ed94c9c70095fd177e9cc1541fa"}, - {file = "websockets-13.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1971e62d2caa443e57588e1d82d15f663b29ff9dfe7446d9964a4b6f12c1e700"}, - {file = "websockets-13.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:5f2e75431f8dc4a47f31565a6e1355fb4f2ecaa99d6b89737527ea917066e26c"}, - {file = "websockets-13.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:58cf7e75dbf7e566088b07e36ea2e3e2bd5676e22216e4cad108d4df4a7402a0"}, - {file = "websockets-13.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c90d6dec6be2c7d03378a574de87af9b1efea77d0c52a8301dd831ece938452f"}, - {file = "websockets-13.1-cp310-cp310-win32.whl", hash = "sha256:730f42125ccb14602f455155084f978bd9e8e57e89b569b4d7f0f0c17a448ffe"}, - {file = "websockets-13.1-cp310-cp310-win_amd64.whl", hash = "sha256:5993260f483d05a9737073be197371940c01b257cc45ae3f1d5d7adb371b266a"}, - {file = "websockets-13.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:61fc0dfcda609cda0fc9fe7977694c0c59cf9d749fbb17f4e9483929e3c48a19"}, - {file = "websockets-13.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ceec59f59d092c5007e815def4ebb80c2de330e9588e101cf8bd94c143ec78a5"}, - {file = "websockets-13.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c1dca61c6db1166c48b95198c0b7d9c990b30c756fc2923cc66f68d17dc558fd"}, - {file = "websockets-13.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:308e20f22c2c77f3f39caca508e765f8725020b84aa963474e18c59accbf4c02"}, - {file = "websockets-13.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62d516c325e6540e8a57b94abefc3459d7dab8ce52ac75c96cad5549e187e3a7"}, - {file = "websockets-13.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87c6e35319b46b99e168eb98472d6c7d8634ee37750d7693656dc766395df096"}, - {file = "websockets-13.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5f9fee94ebafbc3117c30be1844ed01a3b177bb6e39088bc6b2fa1dc15572084"}, - {file = "websockets-13.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:7c1e90228c2f5cdde263253fa5db63e6653f1c00e7ec64108065a0b9713fa1b3"}, - {file = "websockets-13.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6548f29b0e401eea2b967b2fdc1c7c7b5ebb3eeb470ed23a54cd45ef078a0db9"}, - {file = "websockets-13.1-cp311-cp311-win32.whl", hash = "sha256:c11d4d16e133f6df8916cc5b7e3e96ee4c44c936717d684a94f48f82edb7c92f"}, - {file = "websockets-13.1-cp311-cp311-win_amd64.whl", hash = "sha256:d04f13a1d75cb2b8382bdc16ae6fa58c97337253826dfe136195b7f89f661557"}, - {file = "websockets-13.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:9d75baf00138f80b48f1eac72ad1535aac0b6461265a0bcad391fc5aba875cfc"}, - {file = "websockets-13.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:9b6f347deb3dcfbfde1c20baa21c2ac0751afaa73e64e5b693bb2b848efeaa49"}, - {file = "websockets-13.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:de58647e3f9c42f13f90ac7e5f58900c80a39019848c5547bc691693098ae1bd"}, - {file = "websockets-13.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1b54689e38d1279a51d11e3467dd2f3a50f5f2e879012ce8f2d6943f00e83f0"}, - {file = "websockets-13.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf1781ef73c073e6b0f90af841aaf98501f975d306bbf6221683dd594ccc52b6"}, - {file = "websockets-13.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d23b88b9388ed85c6faf0e74d8dec4f4d3baf3ecf20a65a47b836d56260d4b9"}, - {file = "websockets-13.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3c78383585f47ccb0fcf186dcb8a43f5438bd7d8f47d69e0b56f71bf431a0a68"}, - {file = "websockets-13.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:d6d300f8ec35c24025ceb9b9019ae9040c1ab2f01cddc2bcc0b518af31c75c14"}, - {file = "websockets-13.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a9dcaf8b0cc72a392760bb8755922c03e17a5a54e08cca58e8b74f6902b433cf"}, - {file = "websockets-13.1-cp312-cp312-win32.whl", hash = "sha256:2f85cf4f2a1ba8f602298a853cec8526c2ca42a9a4b947ec236eaedb8f2dc80c"}, - {file = "websockets-13.1-cp312-cp312-win_amd64.whl", hash = "sha256:38377f8b0cdeee97c552d20cf1865695fcd56aba155ad1b4ca8779a5b6ef4ac3"}, - {file = "websockets-13.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a9ab1e71d3d2e54a0aa646ab6d4eebfaa5f416fe78dfe4da2839525dc5d765c6"}, - {file = "websockets-13.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b9d7439d7fab4dce00570bb906875734df13d9faa4b48e261c440a5fec6d9708"}, - {file = "websockets-13.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:327b74e915cf13c5931334c61e1a41040e365d380f812513a255aa804b183418"}, - {file = "websockets-13.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:325b1ccdbf5e5725fdcb1b0e9ad4d2545056479d0eee392c291c1bf76206435a"}, - {file = "websockets-13.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:346bee67a65f189e0e33f520f253d5147ab76ae42493804319b5716e46dddf0f"}, - {file = "websockets-13.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91a0fa841646320ec0d3accdff5b757b06e2e5c86ba32af2e0815c96c7a603c5"}, - {file = "websockets-13.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:18503d2c5f3943e93819238bf20df71982d193f73dcecd26c94514f417f6b135"}, - {file = "websockets-13.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:a9cd1af7e18e5221d2878378fbc287a14cd527fdd5939ed56a18df8a31136bb2"}, - {file = "websockets-13.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:70c5be9f416aa72aab7a2a76c90ae0a4fe2755c1816c153c1a2bcc3333ce4ce6"}, - {file = "websockets-13.1-cp313-cp313-win32.whl", hash = "sha256:624459daabeb310d3815b276c1adef475b3e6804abaf2d9d2c061c319f7f187d"}, - {file = "websockets-13.1-cp313-cp313-win_amd64.whl", hash = "sha256:c518e84bb59c2baae725accd355c8dc517b4a3ed8db88b4bc93c78dae2974bf2"}, - {file = "websockets-13.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:c7934fd0e920e70468e676fe7f1b7261c1efa0d6c037c6722278ca0228ad9d0d"}, - {file = "websockets-13.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:149e622dc48c10ccc3d2760e5f36753db9cacf3ad7bc7bbbfd7d9c819e286f23"}, - {file = "websockets-13.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a569eb1b05d72f9bce2ebd28a1ce2054311b66677fcd46cf36204ad23acead8c"}, - {file = "websockets-13.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:95df24ca1e1bd93bbca51d94dd049a984609687cb2fb08a7f2c56ac84e9816ea"}, - {file = "websockets-13.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d8dbb1bf0c0a4ae8b40bdc9be7f644e2f3fb4e8a9aca7145bfa510d4a374eeb7"}, - {file = "websockets-13.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:035233b7531fb92a76beefcbf479504db8c72eb3bff41da55aecce3a0f729e54"}, - {file = "websockets-13.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:e4450fc83a3df53dec45922b576e91e94f5578d06436871dce3a6be38e40f5db"}, - {file = "websockets-13.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:463e1c6ec853202dd3657f156123d6b4dad0c546ea2e2e38be2b3f7c5b8e7295"}, - {file = "websockets-13.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:6d6855bbe70119872c05107e38fbc7f96b1d8cb047d95c2c50869a46c65a8e96"}, - {file = "websockets-13.1-cp38-cp38-win32.whl", hash = "sha256:204e5107f43095012b00f1451374693267adbb832d29966a01ecc4ce1db26faf"}, - {file = "websockets-13.1-cp38-cp38-win_amd64.whl", hash = "sha256:485307243237328c022bc908b90e4457d0daa8b5cf4b3723fd3c4a8012fce4c6"}, - {file = "websockets-13.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9b37c184f8b976f0c0a231a5f3d6efe10807d41ccbe4488df8c74174805eea7d"}, - {file = "websockets-13.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:163e7277e1a0bd9fb3c8842a71661ad19c6aa7bb3d6678dc7f89b17fbcc4aeb7"}, - {file = "websockets-13.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4b889dbd1342820cc210ba44307cf75ae5f2f96226c0038094455a96e64fb07a"}, - {file = "websockets-13.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:586a356928692c1fed0eca68b4d1c2cbbd1ca2acf2ac7e7ebd3b9052582deefa"}, - {file = "websockets-13.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7bd6abf1e070a6b72bfeb71049d6ad286852e285f146682bf30d0296f5fbadfa"}, - {file = "websockets-13.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2aad13a200e5934f5a6767492fb07151e1de1d6079c003ab31e1823733ae79"}, - {file = "websockets-13.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:df01aea34b6e9e33572c35cd16bae5a47785e7d5c8cb2b54b2acdb9678315a17"}, - {file = "websockets-13.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:e54affdeb21026329fb0744ad187cf812f7d3c2aa702a5edb562b325191fcab6"}, - {file = "websockets-13.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:9ef8aa8bdbac47f4968a5d66462a2a0935d044bf35c0e5a8af152d58516dbeb5"}, - {file = "websockets-13.1-cp39-cp39-win32.whl", hash = "sha256:deeb929efe52bed518f6eb2ddc00cc496366a14c726005726ad62c2dd9017a3c"}, - {file = "websockets-13.1-cp39-cp39-win_amd64.whl", hash = "sha256:7c65ffa900e7cc958cd088b9a9157a8141c991f8c53d11087e6fb7277a03f81d"}, - {file = "websockets-13.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5dd6da9bec02735931fccec99d97c29f47cc61f644264eb995ad6c0c27667238"}, - {file = "websockets-13.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:2510c09d8e8df777177ee3d40cd35450dc169a81e747455cc4197e63f7e7bfe5"}, - {file = "websockets-13.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1c3cf67185543730888b20682fb186fc8d0fa6f07ccc3ef4390831ab4b388d9"}, - {file = "websockets-13.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bcc03c8b72267e97b49149e4863d57c2d77f13fae12066622dc78fe322490fe6"}, - {file = "websockets-13.1-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:004280a140f220c812e65f36944a9ca92d766b6cc4560be652a0a3883a79ed8a"}, - {file = "websockets-13.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:e2620453c075abeb0daa949a292e19f56de518988e079c36478bacf9546ced23"}, - {file = "websockets-13.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9156c45750b37337f7b0b00e6248991a047be4aa44554c9886fe6bdd605aab3b"}, - {file = "websockets-13.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:80c421e07973a89fbdd93e6f2003c17d20b69010458d3a8e37fb47874bd67d51"}, - {file = "websockets-13.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82d0ba76371769d6a4e56f7e83bb8e81846d17a6190971e38b5de108bde9b0d7"}, - {file = "websockets-13.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e9875a0143f07d74dc5e1ded1c4581f0d9f7ab86c78994e2ed9e95050073c94d"}, - {file = "websockets-13.1-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a11e38ad8922c7961447f35c7b17bffa15de4d17c70abd07bfbe12d6faa3e027"}, - {file = "websockets-13.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:4059f790b6ae8768471cddb65d3c4fe4792b0ab48e154c9f0a04cefaabcd5978"}, - {file = "websockets-13.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:25c35bf84bf7c7369d247f0b8cfa157f989862c49104c5cf85cb5436a641d93e"}, - {file = "websockets-13.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:83f91d8a9bb404b8c2c41a707ac7f7f75b9442a0a876df295de27251a856ad09"}, - {file = "websockets-13.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7a43cfdcddd07f4ca2b1afb459824dd3c6d53a51410636a2c7fc97b9a8cf4842"}, - {file = "websockets-13.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:48a2ef1381632a2f0cb4efeff34efa97901c9fbc118e01951ad7cfc10601a9bb"}, - {file = "websockets-13.1-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:459bf774c754c35dbb487360b12c5727adab887f1622b8aed5755880a21c4a20"}, - {file = "websockets-13.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:95858ca14a9f6fa8413d29e0a585b31b278388aa775b8a81fa24830123874678"}, - {file = "websockets-13.1-py3-none-any.whl", hash = "sha256:a9a396a6ad26130cdae92ae10c36af09d9bfe6cafe69670fd3b6da9b07b4044f"}, - {file = "websockets-13.1.tar.gz", hash = "sha256:a3b3366087c1bc0a2795111edcadddb8b3b59509d5db5d7ea3fdd69f954a8878"}, -] - [[package]] name = "wikipedia" version = "1.4.0" @@ -4466,103 +4348,103 @@ files = [ [[package]] name = "yarl" -version = "1.12.1" +version = "1.13.1" description = "Yet another URL library" optional = false python-versions = ">=3.8" files = [ - {file = "yarl-1.12.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:64c5b0f2b937fe40d0967516eee5504b23cb247b8b7ffeba7213a467d9646fdc"}, - {file = "yarl-1.12.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2e430ac432f969ef21770645743611c1618362309e3ad7cab45acd1ad1a540ff"}, - {file = "yarl-1.12.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3e26e64f42bce5ddf9002092b2c37b13071c2e6413d5c05f9fa9de58ed2f7749"}, - {file = "yarl-1.12.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0103c52f8dfe5d573c856322149ddcd6d28f51b4d4a3ee5c4b3c1b0a05c3d034"}, - {file = "yarl-1.12.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b63465b53baeaf2122a337d4ab57d6bbdd09fcadceb17a974cfa8a0300ad9c67"}, - {file = "yarl-1.12.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17d4dc4ff47893a06737b8788ed2ba2f5ac4e8bb40281c8603920f7d011d5bdd"}, - {file = "yarl-1.12.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8b54949267bd5704324397efe9fbb6aa306466dee067550964e994d309db5f1"}, - {file = "yarl-1.12.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10b690cd78cbaca2f96a7462f303fdd2b596d3978b49892e4b05a7567c591572"}, - {file = "yarl-1.12.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c85ab016e96a975afbdb9d49ca90f3bca9920ef27c64300843fe91c3d59d8d20"}, - {file = "yarl-1.12.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:c1caa5763d1770216596e0a71b5567f27aac28c95992110212c108ec74589a48"}, - {file = "yarl-1.12.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:595bbcdbfc4a9c6989d7489dca8510cba053ff46b16c84ffd95ac8e90711d419"}, - {file = "yarl-1.12.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:e64f0421892a207d3780903085c1b04efeb53b16803b23d947de5a7261b71355"}, - {file = "yarl-1.12.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:319c206e83e46ec2421b25b300c8482b6fe8a018baca246be308c736d9dab267"}, - {file = "yarl-1.12.1-cp310-cp310-win32.whl", hash = "sha256:da045bd1147d12bd43fb032296640a7cc17a7f2eaba67495988362e99db24fd2"}, - {file = "yarl-1.12.1-cp310-cp310-win_amd64.whl", hash = "sha256:aebbd47df77190ada603157f0b3670d578c110c31746ecc5875c394fdcc59a99"}, - {file = "yarl-1.12.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:28389a68981676bf74e2e199fe42f35d1aa27a9c98e3a03e6f58d2d3d054afe1"}, - {file = "yarl-1.12.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f736f54565f8dd7e3ab664fef2bc461d7593a389a7f28d4904af8d55a91bd55f"}, - {file = "yarl-1.12.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6dee0496d5f1a8f57f0f28a16f81a2033fc057a2cf9cd710742d11828f8c80e2"}, - {file = "yarl-1.12.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8981a94a27ac520a398302afb74ae2c0be1c3d2d215c75c582186a006c9e7b0"}, - {file = "yarl-1.12.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ff54340fc1129e8e181827e2234af3ff659b4f17d9bbe77f43bc19e6577fadec"}, - {file = "yarl-1.12.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:54c8cee662b5f8c30ad7eedfc26123f845f007798e4ff1001d9528fe959fd23c"}, - {file = "yarl-1.12.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e97a29b37830ba1262d8dfd48ddb5b28ad4d3ebecc5d93a9c7591d98641ec737"}, - {file = "yarl-1.12.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6c89894cc6f6ddd993813e79244b36b215c14f65f9e4f1660b1f2ba9e5594b95"}, - {file = "yarl-1.12.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:712ba8722c0699daf186de089ddc4677651eb9875ed7447b2ad50697522cbdd9"}, - {file = "yarl-1.12.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:6e9a9f50892153bad5046c2a6df153224aa6f0573a5a8ab44fc54a1e886f6e21"}, - {file = "yarl-1.12.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:1d4017e78fb22bc797c089b746230ad78ecd3cdb215bc0bd61cb72b5867da57e"}, - {file = "yarl-1.12.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:f494c01b28645c431239863cb17af8b8d15b93b0d697a0320d5dd34cd9d7c2fa"}, - {file = "yarl-1.12.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:de4544b1fb29cf14870c4e2b8a897c0242449f5dcebd3e0366aa0aa3cf58a23a"}, - {file = "yarl-1.12.1-cp311-cp311-win32.whl", hash = "sha256:7564525a4673fde53dee7d4c307a961c0951918f0b8c7f09b2c9e02067cf6504"}, - {file = "yarl-1.12.1-cp311-cp311-win_amd64.whl", hash = "sha256:f23bb1a7a6e8e8b612a164fdd08e683bcc16c76f928d6dbb7bdbee2374fbfee6"}, - {file = "yarl-1.12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:a3e2aff8b822ab0e0bdbed9f50494b3a35629c4b9488ae391659973a37a9f53f"}, - {file = "yarl-1.12.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:22dda2799c8d39041d731e02bf7690f0ef34f1691d9ac9dfcb98dd1e94c8b058"}, - {file = "yarl-1.12.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:18c2a7757561f05439c243f517dbbb174cadfae3a72dee4ae7c693f5b336570f"}, - {file = "yarl-1.12.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:835010cc17d0020e7931d39e487d72c8e01c98e669b6896a8b8c9aa8ca69a949"}, - {file = "yarl-1.12.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2254fe137c4a360b0a13173a56444f756252c9283ba4d267ca8e9081cd140ea"}, - {file = "yarl-1.12.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f6a071d2c3d39b4104f94fc08ab349e9b19b951ad4b8e3b6d7ea92d6ef7ccaf8"}, - {file = "yarl-1.12.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73a183042ae0918c82ce2df38c3db2409b0eeae88e3afdfc80fb67471a95b33b"}, - {file = "yarl-1.12.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:326b8a079a9afcac0575971e56dabdf7abb2ea89a893e6949b77adfeb058b50e"}, - {file = "yarl-1.12.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:126309c0f52a2219b3d1048aca00766429a1346596b186d51d9fa5d2070b7b13"}, - {file = "yarl-1.12.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:ba1c779b45a399cc25f511c681016626f69e51e45b9d350d7581998722825af9"}, - {file = "yarl-1.12.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:af1107299cef049ad00a93df4809517be432283a0847bcae48343ebe5ea340dc"}, - {file = "yarl-1.12.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:20d817c0893191b2ab0ba30b45b77761e8dfec30a029b7c7063055ca71157f84"}, - {file = "yarl-1.12.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d4f818f6371970d6a5d1e42878389bbfb69dcde631e4bbac5ec1cb11158565ca"}, - {file = "yarl-1.12.1-cp312-cp312-win32.whl", hash = "sha256:0ac33d22b2604b020569a82d5f8a03ba637ba42cc1adf31f616af70baf81710b"}, - {file = "yarl-1.12.1-cp312-cp312-win_amd64.whl", hash = "sha256:fd24996e12e1ba7c397c44be75ca299da14cde34d74bc5508cce233676cc68d0"}, - {file = "yarl-1.12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dea360778e0668a7ad25d7727d03364de8a45bfd5d808f81253516b9f2217765"}, - {file = "yarl-1.12.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1f50a37aeeb5179d293465e522fd686080928c4d89e0ff215e1f963405ec4def"}, - {file = "yarl-1.12.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0274b1b7a9c9c32b7bf250583e673ff99fb9fccb389215841e2652d9982de740"}, - {file = "yarl-1.12.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4f3ab9eb8ab2d585ece959c48d234f7b39ac0ca1954a34d8b8e58a52064bdb3"}, - {file = "yarl-1.12.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8d31dd0245d88cf7239e96e8f2a99f815b06e458a5854150f8e6f0e61618d41b"}, - {file = "yarl-1.12.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a96198d5d26f40557d986c1253bfe0e02d18c9d9b93cf389daf1a3c9f7c755fa"}, - {file = "yarl-1.12.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ddae504cfb556fe220efae65e35be63cd11e3c314b202723fc2119ce19f0ca2e"}, - {file = "yarl-1.12.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bce00f3b1f7f644faae89677ca68645ed5365f1c7f874fdd5ebf730a69640d38"}, - {file = "yarl-1.12.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:eee5ff934b0c9f4537ff9596169d56cab1890918004791a7a06b879b3ba2a7ef"}, - {file = "yarl-1.12.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:4ea99e64b2ad2635e0f0597b63f5ea6c374791ff2fa81cdd4bad8ed9f047f56f"}, - {file = "yarl-1.12.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:5c667b383529520b8dd6bd496fc318678320cb2a6062fdfe6d3618da6b8790f6"}, - {file = "yarl-1.12.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:d920401941cb898ef089422e889759dd403309eb370d0e54f1bdf6ca07fef603"}, - {file = "yarl-1.12.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:501a1576716032cc6d48c7c47bcdc42d682273415a8f2908e7e72cb4625801f3"}, - {file = "yarl-1.12.1-cp313-cp313-win32.whl", hash = "sha256:24416bb5e221e29ddf8aac5b97e94e635ca2c5be44a1617ad6fe32556df44294"}, - {file = "yarl-1.12.1-cp313-cp313-win_amd64.whl", hash = "sha256:71af3766bb46738d12cc288d9b8de7ef6f79c31fd62757e2b8a505fe3680b27f"}, - {file = "yarl-1.12.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:c924deab8105f86980983eced740433fb7554a7f66db73991affa4eda99d5402"}, - {file = "yarl-1.12.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5fb475a4cdde582c9528bb412b98f899680492daaba318231e96f1a0a1bb0d53"}, - {file = "yarl-1.12.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:36ee0115b9edca904153a66bb74a9ff1ce38caff015de94eadfb9ba8e6ecd317"}, - {file = "yarl-1.12.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2631c9d7386bd2d4ce24ecc6ebf9ae90b3efd713d588d90504eaa77fec4dba01"}, - {file = "yarl-1.12.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2376d8cf506dffd0e5f2391025ae8675b09711016656590cb03b55894161fcfa"}, - {file = "yarl-1.12.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:24197ba3114cc85ddd4091e19b2ddc62650f2e4a899e51b074dfd52d56cf8c72"}, - {file = "yarl-1.12.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfdf419bf5d3644f94cd7052954fc233522f5a1b371fc0b00219ebd9c14d5798"}, - {file = "yarl-1.12.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8112f640a4f7e7bf59f7cabf0d47a29b8977528c521d73a64d5cc9e99e48a174"}, - {file = "yarl-1.12.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:607d12f0901f6419a8adceb139847c42c83864b85371f58270e42753f9780fa6"}, - {file = "yarl-1.12.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:664380c7ed524a280b6a2d5d9126389c3e96cd6e88986cdb42ca72baa27421d6"}, - {file = "yarl-1.12.1-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:0d0a5e87bc48d76dfcfc16295201e9812d5f33d55b4a0b7cad1025b92bf8b91b"}, - {file = "yarl-1.12.1-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:eff6bac402719c14e17efe845d6b98593c56c843aca6def72080fbede755fd1f"}, - {file = "yarl-1.12.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:22839d1d1eab9e4b427828a88a22beb86f67c14d8ff81175505f1cc8493f3500"}, - {file = "yarl-1.12.1-cp38-cp38-win32.whl", hash = "sha256:717f185086bb9d817d4537dd18d5df5d657598cd00e6fc22e4d54d84de266c1d"}, - {file = "yarl-1.12.1-cp38-cp38-win_amd64.whl", hash = "sha256:71978ba778948760cff528235c951ea0ef7a4f9c84ac5a49975f8540f76c3f73"}, - {file = "yarl-1.12.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:30ffc046ebddccb3c4cac72c1a3e1bc343492336f3ca86d24672e90ccc5e788a"}, - {file = "yarl-1.12.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f10954b233d4df5cc3137ffa5ced97f8894152df817e5d149bf05a0ef2ab8134"}, - {file = "yarl-1.12.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2e912b282466444023610e4498e3795c10e7cfd641744524876239fcf01d538d"}, - {file = "yarl-1.12.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6af871f70cfd5b528bd322c65793b5fd5659858cdfaa35fbe563fb99b667ed1f"}, - {file = "yarl-1.12.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c3e4e1f7b08d1ec6b685ccd3e2d762219c550164fbf524498532e39f9413436e"}, - {file = "yarl-1.12.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9a7ee79183f0b17dcede8b6723e7da2ded529cf159a878214be9a5d3098f5b1e"}, - {file = "yarl-1.12.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96c8ff1e1dd680e38af0887927cab407a4e51d84a5f02ae3d6eb87233036c763"}, - {file = "yarl-1.12.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e9905fc2dc1319e4c39837b906a024cf71b1261cc66b0cd89678f779c0c61f5"}, - {file = "yarl-1.12.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:01549468858b87d36f967c97d02e6e54106f444aeb947ed76f8f71f85ed07cec"}, - {file = "yarl-1.12.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:96b34830bd6825ca0220bf005ea99ac83eb9ce51301ddb882dcf613ae6cd95fb"}, - {file = "yarl-1.12.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:2aee7594d2c2221c717a8e394bbed4740029df4c0211ceb0f04815686e99c795"}, - {file = "yarl-1.12.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:15871130439ad10abb25a4631120d60391aa762b85fcab971411e556247210a0"}, - {file = "yarl-1.12.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:838dde2cb570cfbb4cab8a876a0974e8b90973ea40b3ac27a79b8a74c8a2db15"}, - {file = "yarl-1.12.1-cp39-cp39-win32.whl", hash = "sha256:eacbcf30efaca7dc5cb264228ffecdb95fdb1e715b1ec937c0ce6b734161e0c8"}, - {file = "yarl-1.12.1-cp39-cp39-win_amd64.whl", hash = "sha256:76a59d1b63de859398bc7764c860a769499511463c1232155061fe0147f13e01"}, - {file = "yarl-1.12.1-py3-none-any.whl", hash = "sha256:dc3192a81ecd5ff954cecd690327badd5a84d00b877e1573f7c9097ce13e5bfb"}, - {file = "yarl-1.12.1.tar.gz", hash = "sha256:5b860055199aec8d6fe4dcee3c5196ce506ca198a50aab0059ffd26e8e815828"}, + {file = "yarl-1.13.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:82e692fb325013a18a5b73a4fed5a1edaa7c58144dc67ad9ef3d604eccd451ad"}, + {file = "yarl-1.13.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df4e82e68f43a07735ae70a2d84c0353e58e20add20ec0af611f32cd5ba43fb4"}, + {file = "yarl-1.13.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ec9dd328016d8d25702a24ee274932aebf6be9787ed1c28d021945d264235b3c"}, + {file = "yarl-1.13.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5820bd4178e6a639b3ef1db8b18500a82ceab6d8b89309e121a6859f56585b05"}, + {file = "yarl-1.13.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86c438ce920e089c8c2388c7dcc8ab30dfe13c09b8af3d306bcabb46a053d6f7"}, + {file = "yarl-1.13.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3de86547c820e4f4da4606d1c8ab5765dd633189791f15247706a2eeabc783ae"}, + {file = "yarl-1.13.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ca53632007c69ddcdefe1e8cbc3920dd88825e618153795b57e6ebcc92e752a"}, + {file = "yarl-1.13.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d4ee1d240b84e2f213565f0ec08caef27a0e657d4c42859809155cf3a29d1735"}, + {file = "yarl-1.13.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c49f3e379177f4477f929097f7ed4b0622a586b0aa40c07ac8c0f8e40659a1ac"}, + {file = "yarl-1.13.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:5c5e32fef09ce101fe14acd0f498232b5710effe13abac14cd95de9c274e689e"}, + {file = "yarl-1.13.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:ab9524e45ee809a083338a749af3b53cc7efec458c3ad084361c1dbf7aaf82a2"}, + {file = "yarl-1.13.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:b1481c048fe787f65e34cb06f7d6824376d5d99f1231eae4778bbe5c3831076d"}, + {file = "yarl-1.13.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:31497aefd68036d8e31bfbacef915826ca2e741dbb97a8d6c7eac66deda3b606"}, + {file = "yarl-1.13.1-cp310-cp310-win32.whl", hash = "sha256:1fa56f34b2236f5192cb5fceba7bbb09620e5337e0b6dfe2ea0ddbd19dd5b154"}, + {file = "yarl-1.13.1-cp310-cp310-win_amd64.whl", hash = "sha256:1bbb418f46c7f7355084833051701b2301092e4611d9e392360c3ba2e3e69f88"}, + {file = "yarl-1.13.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:216a6785f296169ed52cd7dcdc2612f82c20f8c9634bf7446327f50398732a51"}, + {file = "yarl-1.13.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:40c6e73c03a6befb85b72da213638b8aaa80fe4136ec8691560cf98b11b8ae6e"}, + {file = "yarl-1.13.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2430cf996113abe5aee387d39ee19529327205cda975d2b82c0e7e96e5fdabdc"}, + {file = "yarl-1.13.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fb4134cc6e005b99fa29dbc86f1ea0a298440ab6b07c6b3ee09232a3b48f495"}, + {file = "yarl-1.13.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:309c104ecf67626c033845b860d31594a41343766a46fa58c3309c538a1e22b2"}, + {file = "yarl-1.13.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f90575e9fe3aae2c1e686393a9689c724cd00045275407f71771ae5d690ccf38"}, + {file = "yarl-1.13.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d2e1626be8712333a9f71270366f4a132f476ffbe83b689dd6dc0d114796c74"}, + {file = "yarl-1.13.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b66c87da3c6da8f8e8b648878903ca54589038a0b1e08dde2c86d9cd92d4ac9"}, + {file = "yarl-1.13.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cf1ad338620249f8dd6d4b6a91a69d1f265387df3697ad5dc996305cf6c26fb2"}, + {file = "yarl-1.13.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9915300fe5a0aa663c01363db37e4ae8e7c15996ebe2c6cce995e7033ff6457f"}, + {file = "yarl-1.13.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:703b0f584fcf157ef87816a3c0ff868e8c9f3c370009a8b23b56255885528f10"}, + {file = "yarl-1.13.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:1d8e3ca29f643dd121f264a7c89f329f0fcb2e4461833f02de6e39fef80f89da"}, + {file = "yarl-1.13.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7055bbade838d68af73aea13f8c86588e4bcc00c2235b4b6d6edb0dbd174e246"}, + {file = "yarl-1.13.1-cp311-cp311-win32.whl", hash = "sha256:a3442c31c11088e462d44a644a454d48110f0588de830921fd201060ff19612a"}, + {file = "yarl-1.13.1-cp311-cp311-win_amd64.whl", hash = "sha256:81bad32c8f8b5897c909bf3468bf601f1b855d12f53b6af0271963ee67fff0d2"}, + {file = "yarl-1.13.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f452cc1436151387d3d50533523291d5f77c6bc7913c116eb985304abdbd9ec9"}, + {file = "yarl-1.13.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:9cec42a20eae8bebf81e9ce23fb0d0c729fc54cf00643eb251ce7c0215ad49fe"}, + {file = "yarl-1.13.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d959fe96e5c2712c1876d69af0507d98f0b0e8d81bee14cfb3f6737470205419"}, + {file = "yarl-1.13.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8c837ab90c455f3ea8e68bee143472ee87828bff19ba19776e16ff961425b57"}, + {file = "yarl-1.13.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:94a993f976cdcb2dc1b855d8b89b792893220db8862d1a619efa7451817c836b"}, + {file = "yarl-1.13.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2b2442a415a5f4c55ced0fade7b72123210d579f7d950e0b5527fc598866e62c"}, + {file = "yarl-1.13.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3fdbf0418489525231723cdb6c79e7738b3cbacbaed2b750cb033e4ea208f220"}, + {file = "yarl-1.13.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6b7f6e699304717fdc265a7e1922561b02a93ceffdaefdc877acaf9b9f3080b8"}, + {file = "yarl-1.13.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:bcd5bf4132e6a8d3eb54b8d56885f3d3a38ecd7ecae8426ecf7d9673b270de43"}, + {file = "yarl-1.13.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:2a93a4557f7fc74a38ca5a404abb443a242217b91cd0c4840b1ebedaad8919d4"}, + {file = "yarl-1.13.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:22b739f99c7e4787922903f27a892744189482125cc7b95b747f04dd5c83aa9f"}, + {file = "yarl-1.13.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:2db874dd1d22d4c2c657807562411ffdfabec38ce4c5ce48b4c654be552759dc"}, + {file = "yarl-1.13.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4feaaa4742517eaceafcbe74595ed335a494c84634d33961214b278126ec1485"}, + {file = "yarl-1.13.1-cp312-cp312-win32.whl", hash = "sha256:bbf9c2a589be7414ac4a534d54e4517d03f1cbb142c0041191b729c2fa23f320"}, + {file = "yarl-1.13.1-cp312-cp312-win_amd64.whl", hash = "sha256:d07b52c8c450f9366c34aa205754355e933922c79135125541daae6cbf31c799"}, + {file = "yarl-1.13.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:95c6737f28069153c399d875317f226bbdea939fd48a6349a3b03da6829fb550"}, + {file = "yarl-1.13.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:cd66152561632ed4b2a9192e7f8e5a1d41e28f58120b4761622e0355f0fe034c"}, + {file = "yarl-1.13.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6a2acde25be0cf9be23a8f6cbd31734536a264723fca860af3ae5e89d771cd71"}, + {file = "yarl-1.13.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9a18595e6a2ee0826bf7dfdee823b6ab55c9b70e8f80f8b77c37e694288f5de1"}, + {file = "yarl-1.13.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a31d21089894942f7d9a8df166b495101b7258ff11ae0abec58e32daf8088813"}, + {file = "yarl-1.13.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:45f209fb4bbfe8630e3d2e2052535ca5b53d4ce2d2026bed4d0637b0416830da"}, + {file = "yarl-1.13.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f722f30366474a99745533cc4015b1781ee54b08de73260b2bbe13316079851"}, + {file = "yarl-1.13.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3bf60444269345d712838bb11cc4eadaf51ff1a364ae39ce87a5ca8ad3bb2c8"}, + {file = "yarl-1.13.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:942c80a832a79c3707cca46bd12ab8aa58fddb34b1626d42b05aa8f0bcefc206"}, + {file = "yarl-1.13.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:44b07e1690f010c3c01d353b5790ec73b2f59b4eae5b0000593199766b3f7a5c"}, + {file = "yarl-1.13.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:396e59b8de7e4d59ff5507fb4322d2329865b909f29a7ed7ca37e63ade7f835c"}, + {file = "yarl-1.13.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:3bb83a0f12701c0b91112a11148b5217617982e1e466069d0555be9b372f2734"}, + {file = "yarl-1.13.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c92b89bffc660f1274779cb6fbb290ec1f90d6dfe14492523a0667f10170de26"}, + {file = "yarl-1.13.1-cp313-cp313-win32.whl", hash = "sha256:269c201bbc01d2cbba5b86997a1e0f73ba5e2f471cfa6e226bcaa7fd664b598d"}, + {file = "yarl-1.13.1-cp313-cp313-win_amd64.whl", hash = "sha256:1d0828e17fa701b557c6eaed5edbd9098eb62d8838344486248489ff233998b8"}, + {file = "yarl-1.13.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8be8cdfe20787e6a5fcbd010f8066227e2bb9058331a4eccddec6c0db2bb85b2"}, + {file = "yarl-1.13.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:08d7148ff11cb8e886d86dadbfd2e466a76d5dd38c7ea8ebd9b0e07946e76e4b"}, + {file = "yarl-1.13.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4afdf84610ca44dcffe8b6c22c68f309aff96be55f5ea2fa31c0c225d6b83e23"}, + {file = "yarl-1.13.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0d12fe78dcf60efa205e9a63f395b5d343e801cf31e5e1dda0d2c1fb618073d"}, + {file = "yarl-1.13.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:298c1eecfd3257aa16c0cb0bdffb54411e3e831351cd69e6b0739be16b1bdaa8"}, + {file = "yarl-1.13.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c14c16831b565707149c742d87a6203eb5597f4329278446d5c0ae7a1a43928e"}, + {file = "yarl-1.13.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a9bacedbb99685a75ad033fd4de37129449e69808e50e08034034c0bf063f99"}, + {file = "yarl-1.13.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:658e8449b84b92a4373f99305de042b6bd0d19bf2080c093881e0516557474a5"}, + {file = "yarl-1.13.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:373f16f38721c680316a6a00ae21cc178e3a8ef43c0227f88356a24c5193abd6"}, + {file = "yarl-1.13.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:45d23c4668d4925688e2ea251b53f36a498e9ea860913ce43b52d9605d3d8177"}, + {file = "yarl-1.13.1-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:f7917697bcaa3bc3e83db91aa3a0e448bf5cde43c84b7fc1ae2427d2417c0224"}, + {file = "yarl-1.13.1-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:5989a38ba1281e43e4663931a53fbf356f78a0325251fd6af09dd03b1d676a09"}, + {file = "yarl-1.13.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:11b3ca8b42a024513adce810385fcabdd682772411d95bbbda3b9ed1a4257644"}, + {file = "yarl-1.13.1-cp38-cp38-win32.whl", hash = "sha256:dcaef817e13eafa547cdfdc5284fe77970b891f731266545aae08d6cce52161e"}, + {file = "yarl-1.13.1-cp38-cp38-win_amd64.whl", hash = "sha256:7addd26594e588503bdef03908fc207206adac5bd90b6d4bc3e3cf33a829f57d"}, + {file = "yarl-1.13.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a0ae6637b173d0c40b9c1462e12a7a2000a71a3258fa88756a34c7d38926911c"}, + {file = "yarl-1.13.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:576365c9f7469e1f6124d67b001639b77113cfd05e85ce0310f5f318fd02fe85"}, + {file = "yarl-1.13.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:78f271722423b2d4851cf1f4fa1a1c4833a128d020062721ba35e1a87154a049"}, + {file = "yarl-1.13.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d74f3c335cfe9c21ea78988e67f18eb9822f5d31f88b41aec3a1ec5ecd32da5"}, + {file = "yarl-1.13.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1891d69a6ba16e89473909665cd355d783a8a31bc84720902c5911dbb6373465"}, + {file = "yarl-1.13.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fb382fd7b4377363cc9f13ba7c819c3c78ed97c36a82f16f3f92f108c787cbbf"}, + {file = "yarl-1.13.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c8854b9f80693d20cec797d8e48a848c2fb273eb6f2587b57763ccba3f3bd4b"}, + {file = "yarl-1.13.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bbf2c3f04ff50f16404ce70f822cdc59760e5e2d7965905f0e700270feb2bbfc"}, + {file = "yarl-1.13.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:fb9f59f3848edf186a76446eb8bcf4c900fe147cb756fbbd730ef43b2e67c6a7"}, + {file = "yarl-1.13.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ef9b85fa1bc91c4db24407e7c4da93a5822a73dd4513d67b454ca7064e8dc6a3"}, + {file = "yarl-1.13.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:098b870c18f1341786f290b4d699504e18f1cd050ed179af8123fd8232513424"}, + {file = "yarl-1.13.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:8c723c91c94a3bc8033dd2696a0f53e5d5f8496186013167bddc3fb5d9df46a3"}, + {file = "yarl-1.13.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:44a4c40a6f84e4d5955b63462a0e2a988f8982fba245cf885ce3be7618f6aa7d"}, + {file = "yarl-1.13.1-cp39-cp39-win32.whl", hash = "sha256:84bbcdcf393139f0abc9f642bf03f00cac31010f3034faa03224a9ef0bb74323"}, + {file = "yarl-1.13.1-cp39-cp39-win_amd64.whl", hash = "sha256:fc2931ac9ce9c61c9968989ec831d3a5e6fcaaff9474e7cfa8de80b7aff5a093"}, + {file = "yarl-1.13.1-py3-none-any.whl", hash = "sha256:6a5185ad722ab4dd52d5fb1f30dcc73282eb1ed494906a92d1a228d3f89607b0"}, + {file = "yarl-1.13.1.tar.gz", hash = "sha256:ec8cfe2295f3e5e44c51f57272afbd69414ae629ec7c6b27f5a410efc78b70a0"}, ] [package.dependencies] @@ -4591,4 +4473,4 @@ type = ["pytest-mypy"] [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "ade4819118e177c966bb9e84beae9f9a3454457c4f999c426e195a9d9f58b033" +content-hash = "4e8d604e0039f5cece3c6eec4fda85075f37da8fac338ce090efce603384ef5a" diff --git a/pyproject.toml b/pyproject.toml index 0e2bd5b..39f4b1b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -80,7 +80,6 @@ tox-gh = "^1.3.2" django-webpack-loader = "^3.1.1" requests = "^2.32.2" lxml = "^5.3.0" -firecrawl-py = "^1.2.4" wikipedia = "^1.4.0" langchain-anthropic = "^0.2.1" langchain-community = "^0.3.1" diff --git a/tests/test_helpers/cassettes/test_assistants/test_AIAssistant_pydantic_structured_output.yaml b/tests/test_helpers/cassettes/test_assistants/test_AIAssistant_pydantic_structured_output.yaml index 79fbd62..57ec959 100644 --- a/tests/test_helpers/cassettes/test_assistants/test_AIAssistant_pydantic_structured_output.yaml +++ b/tests/test_helpers/cassettes/test_assistants/test_AIAssistant_pydantic_structured_output.yaml @@ -1,335 +1,8 @@ interactions: - request: body: '{"messages": [{"content": "You are a helpful assistant that provides information - about people.", "role": "system"}, {"content": "In the last step of this chat - you will be asked to respond in JSON. Gather information using tools. Don''t - generate JSON until you are explicitly told to. ", "role": "system"}, {"content": - "Tell me about John who is 30 years old and not a student.", "role": "user"}], - "model": "gpt-4o-2024-08-06", "n": 1, "stream": false, "temperature": 1.0}' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate - authorization: - - DUMMY - connection: - - keep-alive - content-length: - - '470' - content-type: - - application/json - host: - - api.openai.com - user-agent: - - OpenAI/Python - method: POST - uri: https://api.openai.com/v1/chat/completions - response: - body: - string: !!binary | - H4sIAAAAAAAAA1RSwW7bMAy9+ysInZ0iTlyny2XoZQOG7rChQA/rECgybWmVRU2km2ZF/32Q4ybb - RRDeI58e9fhaACjXqi0oY7WYIfrFbeO+fzK3rglPvx/oW/Xn7u7rYWUflk19/KzK3EH7X2jkvevK - 0BA9iqNwok1CLZhVq82qqZq6ul5PxEAt+tzWR1nUtFgtV/ViebNYNnOjJWeQ1RZ+FAAAr9OZLYYW - X9QWluU7MiCz7lFtz0UAKpHPiNLMjkUHUeWFNBQEw+T6niAmenYtwpFGODixkNDjsw4CLnSUBp3H - Ab2nUeAL2VCCodG3U330qBmBrU4IAyWEFkU7z0AJpmdeBBL2OrUu9HCwzljgiMZ1zsCjynqPapLK - Cgk7TClXCn2Ee4sJJ3zQ4QgRKXo8WRSrBYIesAQmyKxuW5eNan+2wKOxoBmsYyBjxjhNUoInM98o - gQuCCVkYDtNUFn0E43Vy3XH2GzExhcnkgDpc/fuVCbuRdU4yjN7P+Ns5G099TLTnmT/jnQuO7S6h - Zgo5BxaKamLfCoCf0w6M/8WqYqIhyk7oCUMW3KxPcuqydBfyejOTQqL9Ba/Wy2I2qPjIgsOuc6HH - FJM7bUQXd1W93u9v6g8ro4q34i8AAAD//wMA5g4c6BoDAAA= - headers: - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: Sun, 09 Jun 2024 23:39:08 GMT - Server: DUMMY - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - access-control-expose-headers: - - X-Request-ID - status: - code: 200 - message: OK -- request: - body: '{"messages": [{"content": "You are a helpful assistant that provides information - about people.", "role": "system"}, {"content": "In the last step of this chat - you will be asked to respond in JSON. JSON will have the following schema:\n\n{\"properties\": - {\"name\": {\"title\": \"Name\", \"type\": \"string\"}, \"age\": {\"title\": - \"Age\", \"type\": \"integer\"}, \"is_student\": {\"title\": \"Is Student\", - \"type\": \"boolean\"}}, \"required\": [\"name\", \"age\", \"is_student\"], - \"title\": \"OutputSchema\", \"type\": \"object\"}\n\nGather information using - tools. Don''t generate JSON until you are explicitly told to. ", "role": "system"}, - {"content": "Tell me about John who is 30 years old and not a student.", "role": - "user"}], "model": "gpt-4o-2024-08-06", "n": 1, "stream": false, "temperature": - 1.0}' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate - authorization: - - DUMMY - connection: - - keep-alive - content-length: - - '811' - content-type: - - application/json - host: - - api.openai.com - user-agent: - - OpenAI/Python - method: POST - uri: https://api.openai.com/v1/chat/completions - response: - body: - string: !!binary | - H4sIAAAAAAAAA1RSy27bMBC86ysWvPQiB5LiR+tLUaSXBL0ELdoAQWHQ5FpiTXFZ7iquEfjfC8qK - 3V54mOHMDnf4WgAoZ9UalOm0mD762ael+/rFfj/Yav94d9f2WD+F1cP9D//4lFiVWUHbX2jkTXVj - qI8exVE40yahFsyu9apZ1st509Qj0ZNFn2VtlNmcZk3VzGfV+1m1nIQdOYOs1vBcAAC8jmeOGCz+ - UWuoyjekR2bdolpfLgGoRD4jSjM7Fh1ElVfSUBAMY+pvBDHRi7MIRxrg4KQD6RAS/h6QBS24sKPU - 6/ymEu7feQ+tlg4TWBTtPIPe0iCgIWJiChB0jxYeqAtw6Agcw20FR9SJgbwFHSwEyvdZBotBbuAz - jbM7/YKgwxE4onE7Z2CM4Cgw0HXcGFMHASHYBzpM86VzPE4tgQfTgWbICBkzxCm8C4IJWbjMfp7M - iH/8dzMJdwPrXEwYvJ/w02XVntqYaMsTf8F3LjjuNgk1U8hrZaGoRvZUAPwcKx3+a0nFRH2UjdAe - QzasF6uzn7p+oiu7uJ1IIdH+ijd1VUwJFR9ZsN/sXGgxxeTODe/i5gPWC2PsUs9VcSr+AgAA//8D - AEEAD0DqAgAA - headers: - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: Sun, 09 Jun 2024 23:39:08 GMT - Server: DUMMY - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - access-control-expose-headers: - - X-Request-ID - status: - code: 200 - message: OK -- request: - body: '{"messages": [{"content": "You are a helpful assistant that provides information - about people.", "role": "system"}, {"content": "In the last step of this chat - you will be asked to respond in JSON. JSON will have the following schema:\n\n{\"properties\": - {\"name\": {\"title\": \"Name\", \"type\": \"string\"}, \"age\": {\"title\": - \"Age\", \"type\": \"integer\"}, \"is_student\": {\"title\": \"Is Student\", - \"type\": \"boolean\"}}, \"required\": [\"name\", \"age\", \"is_student\"], - \"title\": \"OutputSchema\", \"type\": \"object\"}\n\nGather information using - tools. Don''t generate JSON until you are explicitly told to. ", "role": "system"}, - {"content": "Tell me about John who is 30 years old and not a student.", "role": - "user"}, {"content": "To provide you with the requested information, I''ll gather - details about a person named John who is 30 years old and not a student. Do - you have any specific questions or details you want to know about this John, - such as his occupation, interests, or location?", "role": "assistant"}, {"content": - "Use the information gathered in the conversation to answer.", "role": "system"}], - "model": "gpt-4o-2024-08-06", "n": 1, "response_format": {"type": "json_schema", - "json_schema": {"schema": {"properties": {"name": {"title": "Name", "type": - "string"}, "age": {"title": "Age", "type": "integer"}, "is_student": {"title": - "Is Student", "type": "boolean"}}, "required": ["name", "age", "is_student"], - "title": "OutputSchema", "type": "object", "additionalProperties": false}, "name": - "OutputSchema", "strict": true}}, "temperature": 1.0}' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate - authorization: - - DUMMY - connection: - - keep-alive - content-length: - - '1578' - content-type: - - application/json - host: - - api.openai.com - user-agent: - - OpenAI/Python - x-stainless-helper-method: - - beta.chat.completions.parse - method: POST - uri: https://api.openai.com/v1/chat/completions - response: - body: - string: !!binary | - H4sIAAAAAAAAA1SQwU+DMBjF7/wVzXcGA4zhxs3ExLgYPajxIIaU8gHdStvQEmcW/ndTxoZeeni/ - vpf3vZNHCPAKMgKspZZ1WgR3KX99KYfmvi3l80O6e/z4Xh9xfyjl+9Mb+M6hyj0ye3HdMNVpgZYr - ecasR2rRpUa3cRqlSRwnE+hUhcLZGm2DRAVxGCdBuAnCdDa2ijM0kJFPjxBCTtPrKsoKj5CR0L8o - HRpDG4Ts+okQ6JVwClBjuLFUWvAXyJS0KKfWpxwk7TCHLIedamUOfg60ccIq9HPgpjB2qFDaHLKa - CoPj36Qe68FQd4gchJj18VpNqEb3qjQzv+o1l9y0RY/UKOlqGKs0THT0CPmaJhj+XQW6V522hVUH - lC4w3kbnPFhGX2iUzNAqS8Wir8K1NzcE82MsdkXNZYO97vl5kVoXUbIqy02yjRl4o/cLAAD//wMA - b8XsohoCAAA= - headers: - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: Sun, 09 Jun 2024 23:39:08 GMT - Server: DUMMY - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - access-control-expose-headers: - - X-Request-ID - status: - code: 200 - message: OK -- request: - body: '{"messages": [{"content": "You are a helpful assistant that provides information - about people.", "role": "system"}, {"content": "In the last step of this chat - you will be asked to respond in JSON. JSON will have the following schema:\n\n{\"properties\": - {\"name\": {\"title\": \"Name\", \"type\": \"string\"}, \"age\": {\"title\": - \"Age\", \"type\": \"integer\"}, \"is_student\": {\"title\": \"Is Student\", - \"type\": \"boolean\"}}, \"required\": [\"name\", \"age\", \"is_student\"], - \"title\": \"OutputSchema\", \"type\": \"object\"}\n\nDon''t generate JSON until - you are explicitly told to. ", "role": "user"}, {"content": "Tell me about John - who is 30 years old and not a student.", "role": "user"}], "model": "gpt-4o-2024-08-06", - "n": 1, "stream": false, "temperature": 1.0}' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate - authorization: - - DUMMY - connection: - - keep-alive - content-length: - - '777' - content-type: - - application/json - host: - - api.openai.com - user-agent: - - OpenAI/Python - method: POST - uri: https://api.openai.com/v1/chat/completions - response: - body: - string: !!binary | - H4sIAAAAAAAAA3RSQW7bMBC8+xVTnu3Ake3E8S3tKT21CIoWKApjTa4kNhRXIFdujCB/Lyg7dnro - RYRmOMNZcl4mgPHObGBsS2q7Pszub+fPd48/vj481hWt+Ps3Xn8J1brZ337ipZkWhex+s9U31ZWV - rg+sXuKRtolJubhe31Y31WK1qBYj0YnjUGRNr7OlzKp5tZzN17P5zUnYireczQY/JwDwMn5LxOj4 - 2Wwwn74hHedMDZvNeRNgkoSCGMrZZ6WoZnohrUTlOKb+LG2EzyAs5rMDU5pJcPDR+b13AwX8aaXw - dkiJo4YDoij6IeXBxwYUD6gldZB6XCmA3WCp3MAV7hXaFvOGpxhP6uiAHaMWO2R2kIjCW0rMaYqe - U5ZIAT4qJ86ap5AE0ZYTODqmvaQMGTR7x+VMiiBLjjtvkVnVx+YKH7lEKzkJWQfHUdH5plV0TBEt - o6WM2kefW3ZjgmxbkVBkkkbWtpI5gtCTttCWFE44j64+7iXsGfWQjsneJgadBlbf8RUeahxkQGR2 - 6CQxcs/W197Cx/GyRo0kEGpvyw8F9ElqH3iKmjmgTsxQAeWnD+9fMHE9ZCoFikMIJ/z1XIkgTZ9k - l0/8GT/OvE1MWWJ5/qzSm5F9nQC/xuoN/7TJ9Em6XrcqTxyL4fWqOvqZS9kv7Hp1IlWUwgWvFrf/ - U20dK/mQ3xXYHBP62Fwc5ueY45wmH7Jyt619bDj1yR/7XPfb6+Vit1sv7yprJq+TvwAAAP//AwD6 - zByE2AMAAA== - headers: - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: Sun, 09 Jun 2024 23:39:08 GMT - Server: DUMMY - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - access-control-expose-headers: - - X-Request-ID - status: - code: 200 - message: OK -- request: - body: '{"messages": [{"content": "You are a helpful assistant that provides information - about people.", "role": "system"}, {"content": "In the last step of this chat - you will be asked to respond in JSON. JSON will have the following schema:\n\n{\"properties\": - {\"name\": {\"title\": \"Name\", \"type\": \"string\"}, \"age\": {\"title\": - \"Age\", \"type\": \"integer\"}, \"is_student\": {\"title\": \"Is Student\", - \"type\": \"boolean\"}}, \"required\": [\"name\", \"age\", \"is_student\"], - \"title\": \"OutputSchema\", \"type\": \"object\"}\n\nDon''t generate JSON until - you are explicitly told to. ", "role": "user"}, {"content": "Tell me about John - who is 30 years old and not a student.", "role": "user"}, {"content": "John - is a 30-year-old individual who is currently not pursuing any form of formal - education. At this age, John may be focused on his career, personal interests, - or other endeavors outside of an academic setting. Being not a student might - mean he has finished his schooling or has chosen a path that does not involve - further education at this time. If you need more specific information or a fictional - profile, feel free to ask!", "role": "assistant"}, {"content": "Use the information - gathered in the conversation to answer.", "role": "user"}], "model": "gpt-4o-2024-08-06", - "n": 1, "response_format": {"type": "json_schema", "json_schema": {"schema": - {"properties": {"name": {"title": "Name", "type": "string"}, "age": {"title": - "Age", "type": "integer"}, "is_student": {"title": "Is Student", "type": "boolean"}}, - "required": ["name", "age", "is_student"], "title": "OutputSchema", "type": - "object", "additionalProperties": false}, "name": "OutputSchema", "strict": - true}}, "temperature": 1.0}' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate - authorization: - - DUMMY - connection: - - keep-alive - content-length: - - '1710' - content-type: - - application/json - host: - - api.openai.com - user-agent: - - OpenAI/Python - x-stainless-helper-method: - - beta.chat.completions.parse - method: POST - uri: https://api.openai.com/v1/chat/completions - response: - body: - string: !!binary | - H4sIAAAAAAAAAwAAAP//dJBLT8MwEITv+RXWnhOUF6XNjceJEwIJgQiKXGeTGhzbym6lQtX/jpyW - thy4+DCfZzQ720gI0C1UAtRKshq8Sa6v0s3tk1lsZg+L7OamfPy+e/36fPb3xZ16gTg43PIDFf+6 - LpQbvEHWzu6xGlEyhtTsKp/lxWWRzyYwuBZNsPWek9IleZqXSTpP0tnBuHJaIUEl3iIhhNhOb6ho - W9xAJdL4VxmQSPYI1fGTEDA6ExSQRJpYWob4BJWzjHZqva3BygFrqGq4dytbQ1yD7INQpHENmhri - dYuWa6g6aQh350kjdmuS4RC7Nuag747VjOv96JZ04Ee901bTqhlRkrOhBrHzMNFdJMT7NMH6z1Xg - Rzd4bth9og2BRTbf58Fp9BPNygNkx9KcuYr8P1fTIktt6GxI2DfUtj8lpMea051AX8Q4NJ22PY5+ - 1PtdO99kZbFczstFriDaRT8AAAD//wMA7mJmC2ACAAA= - headers: - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: Sun, 09 Jun 2024 23:39:08 GMT - Server: DUMMY - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - access-control-expose-headers: - - X-Request-ID - status: - code: 200 - message: OK -- request: - body: '{"messages": [{"content": "You are a helpful assistant that provides information - about people.", "role": "system"}, {"content": "In the last step of this chat - you will be asked to respond in JSON. JSON will have the following schema:\n\n{\"properties\": - {\"name\": {\"title\": \"Name\", \"type\": \"string\"}, \"age\": {\"title\": - \"Age\", \"type\": \"integer\"}, \"is_student\": {\"title\": \"Is Student\", - \"type\": \"boolean\"}}, \"required\": [\"name\", \"age\", \"is_student\"], - \"title\": \"OutputSchema\", \"type\": \"object\"}\n\nDon''t generate JSON until - you are explicitly told to. ", "role": "user"}, {"content": "Tell me about John - who is 30 years old and not a student.", "role": "user"}], "model": "gpt-4o-2024-08-06", + about people.", "role": "system"}, {"content": "Tell me about John who is 30 + years old and not a student.", "role": "user"}], "model": "gpt-4o-2024-08-06", "n": 1, "stream": false, "temperature": 1.0}' headers: accept: @@ -341,7 +14,7 @@ interactions: connection: - keep-alive content-length: - - '777' + - '281' content-type: - application/json host: @@ -353,19 +26,20 @@ interactions: method: POST uri: https://api.openai.com/v1/chat/completions response: - content: "{\n \"id\": \"chatcmpl-ABSmfWFBhsprRXk8GBn0KmGd4qn2F\",\n \"object\": - \"chat.completion\",\n \"created\": 1727295617,\n \"model\": \"gpt-4o-2024-08-06\",\n + content: "{\n \"id\": \"chatcmpl-ADXKhygvvNpK7CL2fFDyCw5Cv42DH\",\n \"object\": + \"chat.completion\",\n \"created\": 1727789759,\n \"model\": \"gpt-4o-2024-08-06\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"John is a 30-year-old individual who - is not currently a student. This could imply that he might have completed his - formal education, or perhaps he chose a different path that did not involve - being a student at present. People of this age might be involved in various - professional endeavors, personal projects, or other pursuits. If there's more - specific information about John or areas you're interested in, feel free to - let me know!\",\n \"refusal\": null\n },\n \"logprobs\": null,\n - \ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": - 152,\n \"completion_tokens\": 83,\n \"total_tokens\": 235,\n \"completion_tokens_details\": - {\n \"reasoning_tokens\": 0\n }\n },\n \"system_fingerprint\": \"fp_7568d46099\"\n}\n" + \"assistant\",\n \"content\": \"I'm sorry, but I don't have any specific + information about a person named John who is 30 years old and not a student, + as your query is very general. John's name is quite common, and without more + specific details, it's challenging to provide any meaningful information. However, + I can try to answer questions or provide information on topics that might be + relevant to someone around that age if that would be helpful to you. Let me + know if there's anything else specific you'd like to know!\",\n \"refusal\": + null\n },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n + \ }\n ],\n \"usage\": {\n \"prompt_tokens\": 37,\n \"completion_tokens\": + 96,\n \"total_tokens\": 133,\n \"completion_tokens_details\": {\n \"reasoning_tokens\": + 0\n }\n },\n \"system_fingerprint\": \"fp_e5e4913e83\"\n}\n" headers: Connection: - keep-alive @@ -385,27 +59,22 @@ interactions: status_code: 200 - request: body: '{"messages": [{"content": "You are a helpful assistant that provides information - about people.", "role": "system"}, {"content": "In the last step of this chat - you will be asked to respond in JSON. JSON will have the following schema:\n\n{\"properties\": - {\"name\": {\"title\": \"Name\", \"type\": \"string\"}, \"age\": {\"title\": - \"Age\", \"type\": \"integer\"}, \"is_student\": {\"title\": \"Is Student\", - \"type\": \"boolean\"}}, \"required\": [\"name\", \"age\", \"is_student\"], - \"title\": \"OutputSchema\", \"type\": \"object\"}\n\nDon''t generate JSON until - you are explicitly told to. ", "role": "user"}, {"content": "Tell me about John - who is 30 years old and not a student.", "role": "user"}, {"content": "John - is a 30-year-old individual who is not currently a student. This could imply - that he might have completed his formal education, or perhaps he chose a different - path that did not involve being a student at present. People of this age might - be involved in various professional endeavors, personal projects, or other pursuits. - If there''s more specific information about John or areas you''re interested - in, feel free to let me know!", "role": "assistant"}, {"content": "Use the information - gathered in the conversation to answer.", "role": "user"}], "model": "gpt-4o-2024-08-06", - "n": 1, "response_format": {"type": "json_schema", "json_schema": {"schema": - {"properties": {"name": {"title": "Name", "type": "string"}, "age": {"title": - "Age", "type": "integer"}, "is_student": {"title": "Is Student", "type": "boolean"}}, - "required": ["name", "age", "is_student"], "title": "OutputSchema", "type": - "object", "additionalProperties": false}, "name": "OutputSchema", "strict": - true}}, "temperature": 1.0}' + about people.\nUse the chat history to produce a JSON output.", "role": "system"}, + {"content": "Tell me about John who is 30 years old and not a student.", "role": + "user"}, {"content": "I''m sorry, but I don''t have any specific information + about a person named John who is 30 years old and not a student, as your query + is very general. John''s name is quite common, and without more specific details, + it''s challenging to provide any meaningful information. However, I can try + to answer questions or provide information on topics that might be relevant + to someone around that age if that would be helpful to you. Let me know if there''s + anything else specific you''d like to know!", "role": "assistant"}, {"content": + "Use the chat history to produce a JSON output.", "role": "user"}], "model": + "gpt-4o-2024-08-06", "n": 1, "response_format": {"type": "json_schema", "json_schema": + {"schema": {"properties": {"name": {"title": "Name", "type": "string"}, "age": + {"title": "Age", "type": "integer"}, "is_student": {"title": "Is Student", "type": + "boolean"}}, "required": ["name", "age", "is_student"], "title": "OutputSchema", + "type": "object", "additionalProperties": false}, "name": "OutputSchema", "strict": + true}}, "stream": false, "temperature": 1.0}' headers: accept: - application/json @@ -416,7 +85,7 @@ interactions: connection: - keep-alive content-length: - - '1716' + - '1328' content-type: - application/json host: @@ -430,14 +99,14 @@ interactions: method: POST uri: https://api.openai.com/v1/chat/completions response: - content: "{\n \"id\": \"chatcmpl-ABSmjxwWBw7Qsaodgl8ghIZ6qzSwB\",\n \"object\": - \"chat.completion\",\n \"created\": 1727295621,\n \"model\": \"gpt-4o-2024-08-06\",\n + content: "{\n \"id\": \"chatcmpl-ADXKjIlmFBaKU78s6GU30fcO49VoO\",\n \"object\": + \"chat.completion\",\n \"created\": 1727789761,\n \"model\": \"gpt-4o-2024-08-06\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"{\\\"name\\\":\\\"John\\\",\\\"age\\\":30,\\\"is_student\\\":false}\",\n \ \"refusal\": null\n },\n \"logprobs\": null,\n \"finish_reason\": - \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": 316,\n \"completion_tokens\": - 14,\n \"total_tokens\": 330,\n \"completion_tokens_details\": {\n \"reasoning_tokens\": - 0\n }\n },\n \"system_fingerprint\": \"fp_7568d46099\"\n}\n" + \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": 224,\n \"completion_tokens\": + 14,\n \"total_tokens\": 238,\n \"completion_tokens_details\": {\n \"reasoning_tokens\": + 0\n }\n },\n \"system_fingerprint\": \"fp_143bb8492c\"\n}\n" headers: Connection: - keep-alive diff --git a/tests/test_helpers/cassettes/test_assistants/test_AIAssistant_typeddict_structured_output.yaml b/tests/test_helpers/cassettes/test_assistants/test_AIAssistant_typeddict_structured_output.yaml index 23b4914..8b5a072 100644 --- a/tests/test_helpers/cassettes/test_assistants/test_AIAssistant_typeddict_structured_output.yaml +++ b/tests/test_helpers/cassettes/test_assistants/test_AIAssistant_typeddict_structured_output.yaml @@ -1,342 +1,9 @@ interactions: - request: body: '{"messages": [{"content": "You are a helpful assistant that provides information - about movies.", "role": "system"}, {"content": "In the last step of this chat - you will be asked to respond in JSON. Gather information using tools. Don''t - generate JSON until you are explicitly told to. ", "role": "system"}, {"content": - "Provide information about the movie Shrek. It was released in 2001 and is an - animation and comedy movie.", "role": "user"}], "model": "gpt-4o-2024-08-06", - "n": 1, "stream": false, "temperature": 1.0}' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate - authorization: - - DUMMY - connection: - - keep-alive - content-length: - - '517' - content-type: - - application/json - host: - - api.openai.com - user-agent: - - OpenAI/Python - method: POST - uri: https://api.openai.com/v1/chat/completions - response: - body: - string: !!binary | - H4sIAAAAAAAAAwAAAP//bFZRb9xGDn73ryD0dDV2F7brprbf3DhpmsYHw+u74HAuAu6IktidGaqc - kTdKkf9+4EjrdYJ7EXaH5Dfkx4/E/H0EUHFdXUHlOswu9H55/Yoffht+Pb/78s/txe7H3z//ZxPX - N018H+/avlpYhGz+JJf3USsnofeUWeJkdkqYyVBPfz57dfrq/OzipBiC1OQtrO3z8lyWZydn58uT - i+XJqzmwE3aUqiv47xEAwN/laynGmj5XV1BgykmglLCl6urZCaBS8XZSYUqcMsZcLQ5GJzFTLFk/ - VutOaftYASfACBg5WMbgJFA9QsM+QK9SD45q2Ixwo4Tho+g2wXXxZbGoGpQ8YaIaOMLZycnpCh46 - muI5waaYzBVOLy9PoEHWETJ6gp5dHpRgI7IFaSB3BAkDQbTPZoSP7D1jgHUmblfwjpQAlSBJINjS - CDVlZJ8ANzLkEh/kienqMT7GJRwf37CSyyX/4+MruI610g6uawxpTv7f7LYjvKeYZI65O9RcYlQi - fESNpAt4L12Ed6t9YmlRMN5T0yiN8DvmLxQ3pO2EtHZKFHuP44z1QDW88Z4l5wU8kOoI95ISiyET - rDN7HzBOqPfSksJ6ZfetXTeYZcbNqMqxNcjHCLCEW94S3I6kCTBBaSz848mE9MPk8KaumeB20L4b - zeVGovH3jc9rDGTF3jB+MZ875egoJXjLEvFb30LEB85dKzvz/SBaw1vUvwbE+uBq2d4Oid1MwDu0 - mn9VapPE5Z7FiURDvJMdef+yD0VlryX0GAvC/1PhvtcpK2+GQ7tf+N5NUkuT6/0QI8cWMgcqPe57 - lc9F/36EyxMIHIe89/6AsR2wLZ5vYus5dZPhtQwxa7nqX5Ht3nXG57D7aSzgBnMJvcURTi8WZURM - n8fHd14yrIcQsIA8xsNMZvI+TQORRUebDgQl54fET1QIa3UI/QjS6jQw9dz3XSfQcKwTdJwg7TD0 - IE+kOkSbqRfzV3aUsQK5wwwdPhFsiCJsMHLqprG3HOiJ/bctXsGDgFKLHKdrxHMealrMSQTcUgKE - mtDDjnN3EEe2wOQG+l5gVtTGdA0dqbl1HFZw7cU61RHscNzD28pyrqiCpzTRStpiNnbqSdwTKZPS - V3C9nwu7ZrqwpWzXbKPsgNB1ILmzKc8djYXC6VfhJYiSLTgnIUg0wuJk5ciZ0XtjSoa2y6upuffk - qDd1ftfZHRovTjmzQ1+yMUxSx+ghDc4YWcFvuXj2imz7sxEFzgm6IYgu5mXNEhdQRg160kY0oPE5 - rY8kQ6yzotu+2Mfok0BA3VJdmtOjlg3cqITCcVas2YDRv1RKwc7Gc8LMyl+sS3ZLjyr1yFOHQkl7 - Q87Wt0Ta7/SO245SXrZqyy62JZdkVpuFgrMrnFqWmvKSnkjh2mFNYYTrHepEwC+U8jz1VMPbSbzP - VJXaogSOxXwIqLEvs/m8jecOfaAW3feDl3rcRaohDD5z7wkS/TWQTwvg6PxQW/qzN5wtHqvnP5b9 - Q8da26GVtDe8FZ3qaTLp3jiThJC4jdyww5iNzGys9NIPHhXc4J8rLNVxTD1r6V3qOS6laQqXC3is - 7oaUTKC/iOS0vwYh2PY1nRkLRTKrlw8CpWZIaO+ROHg/n399fmF4aXuVTZrtz+cN24L4pIRJor0m - Upa+KtavRwB/lJfM8M3jpOpVQp8/ZdlSNMCL0wmuOjydDsbzy4vZmiWjPxh++vnyaM6wSmPKFD41 - HFvSXnl62DT9p9PzHzebi/PLM1cdfT36HwAAAP//AwBZgHU64QkAAA== - headers: - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: Sun, 09 Jun 2024 23:39:08 GMT - Server: DUMMY - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - access-control-expose-headers: - - X-Request-ID - status: - code: 200 - message: OK -- request: - body: '{"messages": [{"content": "You are a helpful assistant that provides information - about movies.", "role": "system"}, {"content": "In the last step of this chat - you will be asked to respond in JSON. Gather information using tools. Don''t - generate JSON until you are explicitly told to. ", "role": "system"}, {"content": - "Provide information about the movie Shrek. It was released in 2001 and is an - animation and comedy movie.", "role": "user"}, {"content": "\"Shrek\" is an - animated comedy film produced by DreamWorks Animation and released in 2001. - The film is based on a 1990 fairy tale picture book of the same name by William - Steig. Here are some key details about the movie:\n\n- **Directed by**: Andrew - Adamson and Vicky Jenson\n- **Produced by**: Aron Warner, John H. Williams, - and Jeffrey Katzenberg\n- **Screenplay by**: Ted Elliott, Terry Rossio, Joe - Stillman, and Roger S. H. Schulman\n- **Starring**: \n - Mike Myers as Shrek - (voice)\n - Eddie Murphy as Donkey (voice)\n - Cameron Diaz as Princess Fiona - (voice)\n - John Lithgow as Lord Farquaad (voice)\n- **Music by**: Harry Gregson-Williams - and John Powell\n- **Production Company**: DreamWorks Animation\n- **Distributed - by**: DreamWorks Pictures\n- **Running time**: Approximately 90 minutes\n- **Language**: - English\n- **Country**: United States\n- **Release Date**: May 18, 2001\n\n**Plot - Summary**:\n\"Shrek\" tells the story of a reclusive and grumpy ogre named Shrek - who finds his swamp overrun by fairy tale creatures that have been banished - by the evil Lord Farquaad. To regain his solitude, Shrek makes a deal with Farquaad - to rescue Princess Fiona and bring her to him. Along the way, Shrek is accompanied - by a talkative donkey named Donkey. As Shrek and Fiona get to know each other, - they find they have more in common than they initially thought.\n\n**Reception**:\n\"Shrek\" - was a critical and commercial success. It was praised for its humor, animation, - voice performances, and soundtrack. The film also marked a departure from the - traditional fairy tale format by satirizing and parodying them. It became one - of the highest-grossing films of 2001 and won the first-ever Academy Award for - Best Animated Feature. It was also nominated for Best Adapted Screenplay.\n\n**Legacy**:\n\"Shrek\" - spawned multiple sequels, including \"Shrek 2,\" \"Shrek the Third,\" and \"Shrek - Forever After,\" and became a significant part of popular culture. It also inspired - a spin-off film, \"Puss in Boots,\" and a musical adaptation.", "role": "assistant"}, - {"content": "Use the information gathered in the conversation to answer.", "role": - "system"}], "model": "gpt-4o-2024-08-06", "n": 1, "response_format": {"type": - "json_schema", "json_schema": {"name": "OutputSchema", "description": "dict() - -> new empty dictionary\ndict(mapping) -> new dictionary initialized from a - mapping object''s\n (key, value) pairs\ndict(iterable) -> new dictionary - initialized as if via:\n d = {}\n for k, v in iterable:\n d[k] - = v\ndict(**kwargs) -> new dictionary initialized with the name=value pairs\n in - the keyword argument list. For example: dict(one=1, two=2)", "strict": true, - "schema": {"type": "object", "properties": {"title": {"type": "string"}, "year": - {"type": "integer"}, "genres": {"type": "array", "items": {"type": "string"}}}, - "required": ["title", "year", "genres"], "additionalProperties": false}}}, "temperature": - 1.0}' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate - authorization: - - DUMMY - connection: - - keep-alive - content-length: - - '3406' - content-type: - - application/json - host: - - api.openai.com - user-agent: - - OpenAI/Python - x-stainless-helper-method: - - beta.chat.completions.parse - method: POST - uri: https://api.openai.com/v1/chat/completions - response: - body: - string: !!binary | - H4sIAAAAAAAAA1SRzW7CMBCE73kKa89JlaRpoLmhHipVqpAKN4yQEzbBxbEte5FKEe9eOYSfXnyY - b2c0uz5FjIHcQsWg2QlqequSWSmX88K6A7bzxRf9LmVRYz2rZx/d+yfEwWHqb2zo6npqTG8VkjT6 - ghuHgjCkZpO8zMoin5YD6M0WVbB1lpLCJHmaF0k6TdJyNO6MbNBDxVYRY4ydhjdU1Fv8gYql8VXp - 0XvRIVS3IcbAGRUUEN5LT0ITxHfYGE2oh9YnDiRJIYeKw2LncM8h5nBE4ThUeZpmMYcOtUPPoVpx - mGnZi7DgMPdmetweOazPj/kO24MXYT19UGrUz7fCynTWmdqP/Ka3Uku/2zgU3uhQzpOxMNBzxNh6 - OMzh365gnektbcjsUYfASZFd8uD+FXeaTUdIhoR6cL28RmND8EdP2G9aqTt01snLnVq7mWKWTSb1 - c1pCdI7+AAAA//8DAEyr8E8wAgAA - headers: - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: Sun, 09 Jun 2024 23:39:08 GMT - Server: DUMMY - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - access-control-expose-headers: - - X-Request-ID - status: - code: 200 - message: OK -- request: - body: '{"messages": [{"content": "You are a helpful assistant that provides information - about movies.", "role": "system"}, {"content": "In the last step of this chat - you will be asked to respond in JSON. Don''t generate JSON until you are explicitly - told to. ", "role": "user"}, {"content": "Provide information about the movie - Shrek. It was released in 2001 and is an animation and comedy movie.", "role": - "user"}], "model": "gpt-4o-2024-08-06", "n": 1, "stream": false, "temperature": - 1.0}' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate - authorization: - - DUMMY - connection: - - keep-alive - content-length: - - '483' - content-type: - - application/json - host: - - api.openai.com - user-agent: - - OpenAI/Python - method: POST - uri: https://api.openai.com/v1/chat/completions - response: - body: - string: !!binary | - H4sIAAAAAAAAA3RWy24cuQ7d+yuIymKAoN1odxI7yc55YTKIB5mJb7K4HhhsiVXFtERW9OhKzSD/ - fiFVP+IB7qbRJVLiIXl4pH/OABq2zUtoTI/J+MGdX1+tvn/8I8nb/u3zD9P22Z8i62ef++HD11// - eNssyg7dfCWTDruWRv3gKLHKbDaBMFE59eJqfbl+8uzJkxfV4NWSK9u6IZ0/1fP1av30fPX8fHW5 - 39grG4rNS/jvGQDAP/W3QBRL35uXsFocVjzFiB01L49OAE1QV1YajJFjQknN4mQ0Komkor5rPvWB - tncNcASEDTndkQUU9gU4GPVkJ2jZeUg9JhgxQiBHGMmCCtzgBBfPF7BerS6WcNvT7FvchqA2G7Kw - meBNIPRfNGwjXNezWQVQLFgOZNLsdC020AjXFn3cmz+z2U7wG0lUWcL7VGBuDrFTT3Dx4sUKWuQw - QUJHMLBJORBsVLegbfWJ6Amk/Gwm+MLOMXr4lIi75Z3cyaNHj+Cj0wSfsvcYpjspacSkYYJWndMx - Qq3SAhACGZcj76jC60L2wwTaBYKxVyD5qlMExzuWDlggquOULZX/PUeII/phCb/qSDsKi7o2EBoq - iVmOKYcNWRh7EkDoguahZFETPK8JVkrlQHEBLMZlWyKZHgOaRKHE3lLN+rYPRPDKsVi4YTMDLoZX - 3MErtPBFXbsADAQ2+4HsA4ylVMWZduzggwYL7zB8y4h2CbcKEXdUnXv1tJjLAx63VFhkCR2MnPrj - HkgKgaLJBB8Di6EY4R2r4KKWjSOkgMMeA0LSkQJ0GYOdmYFgA3aFArd90Nz1mlMN/1VzEJoOCAqJ - TRlCFD7sTOi2mA4dQxGdSsmsypamSgsLb+rHEv4zqIAnSsXj30jnEJaj0V2pdJ2H2NfWiSYYD98l - EywOChtagCOsTUoKWej7MPM9jRxTnDFBTxjSiMHXZqpUjqkc6fm5qAG8xpju5BweP74pTb6ZKMTH - jwH39JxNb61lgpschn6ajXNys/U1egoq8Ibx79n6MMvZ6zftBT5w6jsdZ68HDDig+l0TbhzBtemZ - duRJUiwHnESlyECqmhBi2quIwsjz7F4btOQnuB4xWGg1wCuKaS8QZOHdzPQydgYTdWUgWdJBVliK - 6qyXJeT7WZnQRQVRz1IPOB1pcSgLn0wgksHhVHeVOfe6Y5o3gwmc2KCrXTHqPQXD6CBmU0r0oJWx - DHCx0bdMbm5kHFjOtW3jsXG3PXmKd/JAZ7eio1RwnCL02WtYQMTENdf9lGYxKjuSopQF0TAERdOX - 0D+rwXHwqzrS98FpoFp0T3sxQGNoSCiGFtAGJrGx5+EUiS3hTOYNYU5TgajiJohbFrBEwzGd19ml - XLJ+7wc06V95aZtIYAjIcV/8kl+dBleHQVMPpmdnA83yjja7FBegbUuhFLYWo5q8ljiOYlSZkxsw - qGWqWmF5X5eT9M8t6DHChsq1Vfq5h1ty4U64ZYMy83ABccBRSkyENqCYniPNZZh1lSL47BIPjg5N - XhQm9GUe9nnDenHXHD9m1eVgy2IBczC801DYAtdtolCNEUZyDirr9uxqs4OYsCPwORYW1qofbtRf - ImThb5lg40hsuRT2xKnaMXeTRXR30LrDLZvI9HVnrMUxdU7L+KQIjjo0Zagq9lGDqycfr/8SOS5/ - fjsEanPE8nSR7Nx+/cfxMeK0G4Ju4t5+XG9ZOPb3gTCqlIdHTDo01frjDOCv+ujJD94xzRDUD+k+ - 6ZakHHh1OR/XnF5ZJ+PTy4M1aUJ3Mjx7uv5/2+4tJWQXf3o6NTNClu50wuoIs+bZxCkm8vctS0dh - CDy/pNrh/jldXFxdbZ6sLpuzH2f/AwAA//8DAJBogqdSCgAA - headers: - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: Sun, 09 Jun 2024 23:39:08 GMT - Server: DUMMY - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - access-control-expose-headers: - - X-Request-ID - status: - code: 200 - message: OK -- request: - body: '{"messages": [{"content": "You are a helpful assistant that provides information - about movies.", "role": "system"}, {"content": "In the last step of this chat - you will be asked to respond in JSON. Don''t generate JSON until you are explicitly - told to. ", "role": "user"}, {"content": "Provide information about the movie - Shrek. It was released in 2001 and is an animation and comedy movie.", "role": - "user"}, {"content": "\"Shrek\" is a beloved animated comedy film that was released - on May 18, 2001. The film was produced by DreamWorks Animation and directed - by Andrew Adamson and Vicky Jenson. It is based on the 1990 fairy tale picture - book of the same name by William Steig.\n\n### Plot Summary\nThe story follows - Shrek, a reclusive and grumpy ogre who enjoys living in solitude in his swamp. - However, his peace is disturbed when a group of fairy-tale creatures, including - characters like the Three Blind Mice and the Big Bad Wolf, are dumped in his - swamp by the evil Lord Farquaad. To save his home, Shrek makes a deal with Farquaad - to rescue Princess Fiona, who is trapped in a tower guarded by a dragon. Throughout - his journey, Shrek is accompanied by a talkative and annoying donkey named Donkey. - Upon meeting Princess Fiona, Shrek discovers that she is not what she appears - to be, leading to unexpected twists and a heartwarming conclusion.\n\n### Voice - Cast\n- **Mike Myers** as Shrek\n- **Eddie Murphy** as Donkey\n- **Cameron Diaz** - as Princess Fiona\n- **John Lithgow** as Lord Farquaad\n\n### Notable Achievements\n- - \"Shrek\" was the first film to win the Academy Award for Best Animated Feature, - a category introduced in 2002.\n- It was also nominated for Best Adapted Screenplay.\n- - The movie was a critical and commercial success, leading to several sequels - and spin-offs.\n\n### Themes\n\"Shrek\" is known for its humor, satire, and - the unconventional approach to fairy-tale characters. It explores themes like - acceptance, friendship, and the idea that beauty is only skin deep.\n\n### Cultural - Impact\n\"Shrek\" is often praised for its appeal to both children and adults, - offering humor and moral lessons. It parodies traditional fairy tales and has - become a culturally significant film, spawning a franchise that includes multiple - sequels, such as \"Shrek 2,\" \"Shrek the Third,\" and \"Shrek Forever After,\" - as well as a successful stage musical.\n\nThe film''s unique blend of humor, - heart, and innovative animation techniques has cemented its legacy in the world - of animated films.", "role": "assistant"}, {"content": "Use the information - gathered in the conversation to answer.", "role": "user"}], "model": "gpt-4o-2024-08-06", - "n": 1, "response_format": {"type": "json_schema", "json_schema": {"name": "OutputSchema", - "description": "dict() -> new empty dictionary\ndict(mapping) -> new dictionary - initialized from a mapping object''s\n (key, value) pairs\ndict(iterable) - -> new dictionary initialized as if via:\n d = {}\n for k, v in iterable:\n d[k] - = v\ndict(**kwargs) -> new dictionary initialized with the name=value pairs\n in - the keyword argument list. For example: dict(one=1, two=2)", "strict": true, - "schema": {"type": "object", "properties": {"title": {"type": "string"}, "year": - {"type": "integer"}, "genres": {"type": "array", "items": {"type": "string"}}}, - "required": ["title", "year", "genres"], "additionalProperties": false}}}, "temperature": - 1.0}' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate - authorization: - - DUMMY - connection: - - keep-alive - content-length: - - '3413' - content-type: - - application/json - host: - - api.openai.com - user-agent: - - OpenAI/Python - x-stainless-helper-method: - - beta.chat.completions.parse - method: POST - uri: https://api.openai.com/v1/chat/completions - response: - body: - string: !!binary | - H4sIAAAAAAAAA3RRPW/bMBTc9SuIN0sFTSu2oy1IinYMkiFAwkCgpSeZNkWy5DMQ1/B/Dyh/dujC - 4e7d4e64zxgD3ULFoFkpagZvioc5/8Knn79nbave/iw6sQ6/1i92M7Pvz38hTwq3XGNDZ9WPxg3e - IGlnj3QTUBEm18lczMT0bnpXjsTgWjRJ1nsqSlcILsqCLwo+OwlXTjcYoWIfGWOM7cc3RbQtfkHF - eH5GBoxR9QjV5YgxCM4kBFSMOpKyBPmVbJwltGPqvQTSZFBCJeF1FXAjIZewQxUkVILzSS6hRxsw - Sqg+JDxYPahUcLx7dAO2Owmfh1v/gN02qlTPbo054YdLYON6H9wynvgL3mmr46oOqKKzKVwk52Fk - Dxljn+Mw23+6gg9u8FST26BNhnNeHv3g+hVXdrI4keRImRuVEP9T1S2S0ibezAvHhNr2Vwd+iTn2 - hLiLhEPdadtj8EEf1+58PSmny+WivBcNZIfsGwAA//8DAFj9bIN2AgAA - headers: - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: Sun, 09 Jun 2024 23:39:08 GMT - Server: DUMMY - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - access-control-expose-headers: - - X-Request-ID - status: - code: 200 - message: OK -- request: - body: '{"messages": [{"content": "You are a helpful assistant that provides information - about movies.", "role": "system"}, {"content": "In the last step of this chat - you will be asked to respond in JSON. Don''t generate JSON until you are explicitly - told to. ", "role": "user"}, {"content": "Provide information about the movie - Shrek. It was released in 2001 and is an animation and comedy movie.", "role": - "user"}], "model": "gpt-4o-2024-08-06", "n": 1, "stream": false, "temperature": + about movies.", "role": "system"}, {"content": "Provide information about the + movie Shrek. It was released in 2001 and is an animation and comedy movie.", + "role": "user"}], "model": "gpt-4o-2024-08-06", "n": 1, "stream": false, "temperature": 1.0}' headers: accept: @@ -348,7 +15,7 @@ interactions: connection: - keep-alive content-length: - - '483' + - '328' content-type: - application/json host: @@ -360,36 +27,37 @@ interactions: method: POST uri: https://api.openai.com/v1/chat/completions response: - content: "{\n \"id\": \"chatcmpl-ABSmk0HtNNcFNhmhaovOzzWSL8oyy\",\n \"object\": - \"chat.completion\",\n \"created\": 1727295622,\n \"model\": \"gpt-4o-2024-08-06\",\n + content: "{\n \"id\": \"chatcmpl-ADXKkgr6nyCVJHaCMMEpAmtUmykDo\",\n \"object\": + \"chat.completion\",\n \"created\": 1727789762,\n \"model\": \"gpt-4o-2024-08-06\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"\\\"Shrek\\\" is a popular animated comedy - film released in 2001. Here is some information about the movie:\\n\\n**Title:** - Shrek \\n**Release Year:** 2001 \\n**Genre:** Animation, Comedy, Adventure, - Fantasy \\n**Directors:** Andrew Adamson and Vicky Jenson \\n**Production - Company:** DreamWorks Animation \\n**Main Voice Cast:**\\n - Mike Myers as - Shrek\\n - Eddie Murphy as Donkey\\n - Cameron Diaz as Princess Fiona\\n - - John Lithgow as Lord Farquaad\\n\\n**Plot Summary:** \\n\\\"Shrek\\\" is set - in a fairy tale world populated by various classic fairy tale characters. The - story follows Shrek, a reclusive and grumpy ogre who wants nothing more than - to live in peace in his swamp. However, his solitude is disrupted when numerous - fairy tale creatures are exiled to his swamp by the evil Lord Farquaad. In order - to regain his privacy, Shrek makes a deal with Farquaad to rescue Princess Fiona - from a castle guarded by a dragon, so that Farquaad can marry her and become - king. Along the way, Shrek is joined by a talkative and humorous donkey named - Donkey, and together they embark on a journey that leads to unexpected friendships - and self-discovery.\\n\\n**Critical Reception:** \\nThe film was widely praised - for its witty humor, unique animation style, and subversion of traditional fairy - tale tropes. It was a major success both commercially and critically, grossing - over $480 million worldwide. \\\"Shrek\\\" won the first-ever Academy Award - for Best Animated Feature and remains a beloved classic in the animation genre.\\n\\n**Impact:** - \ \\n\\\"Shrek\\\" has spawned several sequels, spin-offs, and a Broadway musical. - It is often credited with revitalizing the animation industry and has had a - lasting impact on popular culture, inspiring countless memes and references.\",\n + \"assistant\",\n \"content\": \"\\\"Shrek\\\" is a 2001 American computer-animated + comedy film produced by DreamWorks Animation and directed by Andrew Adamson + and Vicky Jenson. The film is an adaptation of William Steig's 1990 fairy tale + picture book of the same name. \\n\\n### Plot Summary:\\nThe story follows Shrek, + a reclusive and grouchy green ogre who lives in a swamp. His solitude is disrupted + when numerous fairy tale creatures are banished there by the evil and short-tempered + Lord Farquaad. In order to reclaim his swamp, Shrek strikes a deal with Farquaad: + to rescue Princess Fiona from a dragon-guarded castle and bring her to Farquaad + so he can marry her. Shrek is joined by a talkative donkey named Donkey, and + together they embark on a comedic adventure.\\n\\n### Cast:\\n- **Mike Myers** + as Shrek\\n- **Eddie Murphy** as Donkey\\n- **Cameron Diaz** as Princess Fiona\\n- + **John Lithgow** as Lord Farquaad\\n\\n### Success:\\n\\\"Shrek\\\" was both + a critical and commercial success. It broke new ground in animation and was + praised for its animation quality, witty humor, and appealing to both children + and adults. The film also cleverly subverts traditional fairy tale tropes. \\n\\n### + Awards:\\nThe movie won the first-ever Academy Award for Best Animated Feature + and was also nominated for Best Adapted Screenplay. The film's success led to + a highly popular franchise, including several sequels and spin-offs.\\n\\n### + Cultural Impact:\\n\\\"Shrek\\\" has had a significant influence on animation + and popular culture, often credited with revitalizing animated films with its + unique storytelling, humor, and innovative use of computer animation. Its impact + extends beyond the movies, as Shrek has become an iconic character in his own + right.\\n\\nOverall, \\\"Shrek\\\" remains a beloved classic that continues + to entertain audiences with its blend of humor, heart, and fairy-tale magic.\",\n \ \"refusal\": null\n },\n \"logprobs\": null,\n \"finish_reason\": - \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": 76,\n \"completion_tokens\": - 382,\n \"total_tokens\": 458,\n \"completion_tokens_details\": {\n \"reasoning_tokens\": - 0\n }\n },\n \"system_fingerprint\": \"fp_7568d46099\"\n}\n" + \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": 45,\n \"completion_tokens\": + 400,\n \"total_tokens\": 445,\n \"completion_tokens_details\": {\n \"reasoning_tokens\": + 0\n }\n },\n \"system_fingerprint\": \"fp_e5e4913e83\"\n}\n" headers: Connection: - keep-alive @@ -409,44 +77,44 @@ interactions: status_code: 200 - request: body: '{"messages": [{"content": "You are a helpful assistant that provides information - about movies.", "role": "system"}, {"content": "In the last step of this chat - you will be asked to respond in JSON. Don''t generate JSON until you are explicitly - told to. ", "role": "user"}, {"content": "Provide information about the movie - Shrek. It was released in 2001 and is an animation and comedy movie.", "role": - "user"}, {"content": "\"Shrek\" is a popular animated comedy film released in - 2001. Here is some information about the movie:\n\n**Title:** Shrek \n**Release - Year:** 2001 \n**Genre:** Animation, Comedy, Adventure, Fantasy \n**Directors:** - Andrew Adamson and Vicky Jenson \n**Production Company:** DreamWorks Animation \n**Main - Voice Cast:**\n - Mike Myers as Shrek\n - Eddie Murphy as Donkey\n - Cameron - Diaz as Princess Fiona\n - John Lithgow as Lord Farquaad\n\n**Plot Summary:** \n\"Shrek\" - is set in a fairy tale world populated by various classic fairy tale characters. - The story follows Shrek, a reclusive and grumpy ogre who wants nothing more - than to live in peace in his swamp. However, his solitude is disrupted when - numerous fairy tale creatures are exiled to his swamp by the evil Lord Farquaad. - In order to regain his privacy, Shrek makes a deal with Farquaad to rescue Princess - Fiona from a castle guarded by a dragon, so that Farquaad can marry her and - become king. Along the way, Shrek is joined by a talkative and humorous donkey - named Donkey, and together they embark on a journey that leads to unexpected - friendships and self-discovery.\n\n**Critical Reception:** \nThe film was widely - praised for its witty humor, unique animation style, and subversion of traditional - fairy tale tropes. It was a major success both commercially and critically, - grossing over $480 million worldwide. \"Shrek\" won the first-ever Academy Award - for Best Animated Feature and remains a beloved classic in the animation genre.\n\n**Impact:** \n\"Shrek\" - has spawned several sequels, spin-offs, and a Broadway musical. It is often - credited with revitalizing the animation industry and has had a lasting impact - on popular culture, inspiring countless memes and references.", "role": "assistant"}, - {"content": "Use the information gathered in the conversation to answer.", "role": - "user"}], "model": "gpt-4o-2024-08-06", "n": 1, "response_format": {"type": - "json_schema", "json_schema": {"name": "OutputSchema", "description": "dict() - -> new empty dictionary\ndict(mapping) -> new dictionary initialized from a - mapping object''s\n (key, value) pairs\ndict(iterable) -> new dictionary - initialized as if via:\n d = {}\n for k, v in iterable:\n d[k] + about movies.\nUse the chat history to produce a JSON output.", "role": "system"}, + {"content": "Provide information about the movie Shrek. It was released in 2001 + and is an animation and comedy movie.", "role": "user"}, {"content": "\"Shrek\" + is a 2001 American computer-animated comedy film produced by DreamWorks Animation + and directed by Andrew Adamson and Vicky Jenson. The film is an adaptation of + William Steig''s 1990 fairy tale picture book of the same name. \n\n### Plot + Summary:\nThe story follows Shrek, a reclusive and grouchy green ogre who lives + in a swamp. His solitude is disrupted when numerous fairy tale creatures are + banished there by the evil and short-tempered Lord Farquaad. In order to reclaim + his swamp, Shrek strikes a deal with Farquaad: to rescue Princess Fiona from + a dragon-guarded castle and bring her to Farquaad so he can marry her. Shrek + is joined by a talkative donkey named Donkey, and together they embark on a + comedic adventure.\n\n### Cast:\n- **Mike Myers** as Shrek\n- **Eddie Murphy** + as Donkey\n- **Cameron Diaz** as Princess Fiona\n- **John Lithgow** as Lord + Farquaad\n\n### Success:\n\"Shrek\" was both a critical and commercial success. + It broke new ground in animation and was praised for its animation quality, + witty humor, and appealing to both children and adults. The film also cleverly + subverts traditional fairy tale tropes. \n\n### Awards:\nThe movie won the first-ever + Academy Award for Best Animated Feature and was also nominated for Best Adapted + Screenplay. The film''s success led to a highly popular franchise, including + several sequels and spin-offs.\n\n### Cultural Impact:\n\"Shrek\" has had a + significant influence on animation and popular culture, often credited with + revitalizing animated films with its unique storytelling, humor, and innovative + use of computer animation. Its impact extends beyond the movies, as Shrek has + become an iconic character in his own right.\n\nOverall, \"Shrek\" remains a + beloved classic that continues to entertain audiences with its blend of humor, + heart, and fairy-tale magic.", "role": "assistant"}, {"content": "Use the chat + history to produce a JSON output.", "role": "user"}], "model": "gpt-4o-2024-08-06", + "n": 1, "response_format": {"type": "json_schema", "json_schema": {"name": "OutputSchema", + "description": "dict() -> new empty dictionary\ndict(mapping) -> new dictionary + initialized from a mapping object''s\n (key, value) pairs\ndict(iterable) + -> new dictionary initialized as if via:\n d = {}\n for k, v in iterable:\n d[k] = v\ndict(**kwargs) -> new dictionary initialized with the name=value pairs\n in the keyword argument list. For example: dict(one=1, two=2)", "strict": true, "schema": {"type": "object", "properties": {"title": {"type": "string"}, "year": {"type": "integer"}, "genres": {"type": "array", "items": {"type": "string"}}}, - "required": ["title", "year", "genres"], "additionalProperties": false}}}, "temperature": - 1.0}' + "required": ["title", "year", "genres"], "additionalProperties": false}}}, "stream": + false, "temperature": 1.0}' headers: accept: - application/json @@ -457,7 +125,7 @@ interactions: connection: - keep-alive content-length: - - '3086' + - '3065' content-type: - application/json host: @@ -471,14 +139,14 @@ interactions: method: POST uri: https://api.openai.com/v1/chat/completions response: - content: "{\n \"id\": \"chatcmpl-ABSmrCMkpNGStV1GdHXqpAbsLMerX\",\n \"object\": - \"chat.completion\",\n \"created\": 1727295629,\n \"model\": \"gpt-4o-2024-08-06\",\n + content: "{\n \"id\": \"chatcmpl-ADXKoApXH6ZJOtW4XKfKT4n5H35Kb\",\n \"object\": + \"chat.completion\",\n \"created\": 1727789766,\n \"model\": \"gpt-4o-2024-08-06\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"{\\\"title\\\":\\\"Shrek\\\",\\\"year\\\":2001,\\\"genres\\\":[\\\"Animation\\\",\\\"Comedy\\\"]}\",\n \ \"refusal\": null\n },\n \"logprobs\": null,\n \"finish_reason\": - \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": 620,\n \"completion_tokens\": - 18,\n \"total_tokens\": 638,\n \"completion_tokens_details\": {\n \"reasoning_tokens\": - 0\n }\n },\n \"system_fingerprint\": \"fp_5050236cbd\"\n}\n" + \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": 617,\n \"completion_tokens\": + 18,\n \"total_tokens\": 635,\n \"completion_tokens_details\": {\n \"reasoning_tokens\": + 0\n }\n },\n \"system_fingerprint\": \"fp_143bb8492c\"\n}\n" headers: Connection: - keep-alive