From 5b160cb0f48d94694575bcd1916c2c8de76e0cbe Mon Sep 17 00:00:00 2001 From: Aditya Pujara <59631311+a0x1ab@users.noreply.github.com> Date: Fri, 21 Aug 2026 12:29:58 +0930 Subject: [PATCH] Remove unused AAZ Flow server Delete the unused AAZ Flow MCP server and remove its Codespaces installation, configuration, ownership, documentation, and image assets. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 03142bcc-29be-45db-99de-296c4cc6c839 --- .devcontainer/Dockerfile | 3 - .devcontainer/devcontainer.json | 2 +- .devcontainer/mcp.json | 10 - .github/CODEOWNERS | 1 - doc/assets/codespace_copilot.png | Bin 66753 -> 0 bytes doc/assets/codespace_mcp.png | Bin 82196 -> 0 bytes doc/assets/codespace_mcp_start.png | Bin 124373 -> 0 bytes doc/hands_on_codespace.md | 21 +- tools/aaz-flow/.gitignore | 207 --- tools/aaz-flow/CHANGELOG.md | 17 - tools/aaz-flow/LICENSE | 21 - tools/aaz-flow/README.md | 15 - tools/aaz-flow/pyproject.toml | 19 - tools/aaz-flow/src/aaz-flow/__init__.py | 5 - tools/aaz-flow/src/aaz-flow/helpers.py | 421 ------- tools/aaz-flow/src/aaz-flow/main.py | 137 -- tools/aaz-flow/src/aaz-flow/models.py | 14 - .../aaz-flow/src/aaz-flow/prompt_templates.py | 50 - tools/aaz-flow/src/aaz-flow/testgen.py | 240 ---- tools/aaz-flow/uv.lock | 1115 ----------------- 20 files changed, 2 insertions(+), 2296 deletions(-) delete mode 100644 .devcontainer/mcp.json delete mode 100644 doc/assets/codespace_copilot.png delete mode 100644 doc/assets/codespace_mcp.png delete mode 100644 doc/assets/codespace_mcp_start.png delete mode 100644 tools/aaz-flow/.gitignore delete mode 100644 tools/aaz-flow/CHANGELOG.md delete mode 100644 tools/aaz-flow/LICENSE delete mode 100644 tools/aaz-flow/README.md delete mode 100644 tools/aaz-flow/pyproject.toml delete mode 100644 tools/aaz-flow/src/aaz-flow/__init__.py delete mode 100644 tools/aaz-flow/src/aaz-flow/helpers.py delete mode 100644 tools/aaz-flow/src/aaz-flow/main.py delete mode 100644 tools/aaz-flow/src/aaz-flow/models.py delete mode 100644 tools/aaz-flow/src/aaz-flow/prompt_templates.py delete mode 100644 tools/aaz-flow/src/aaz-flow/testgen.py delete mode 100644 tools/aaz-flow/uv.lock diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index f3397993544..c47fd59898a 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -2,6 +2,3 @@ FROM mcr.microsoft.com/devcontainers/python:3.12 # Copy binaries from the official COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/ - -# Remove after production -RUN pip install --no-cache-dir fastmcp diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 82903b8ee52..7a88ec8c584 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -8,7 +8,7 @@ }, "workspaceFolder": "/workspaces", "onCreateCommand": "uv venv .venv --seed", - "postCreateCommand": "REPO_NAME=$(basename $GITHUB_REPOSITORY) && cat $REPO_NAME/.devcontainer/init.sh >> ~/.bashrc && mkdir .vscode && cp $REPO_NAME/.devcontainer/mcp.json .vscode/", + "postCreateCommand": "REPO_NAME=$(basename $GITHUB_REPOSITORY) && cat $REPO_NAME/.devcontainer/init.sh >> ~/.bashrc", "hostRequirements": { "cpus": 16, "memory": "64gb", diff --git a/.devcontainer/mcp.json b/.devcontainer/mcp.json deleted file mode 100644 index 821f1c19f07..00000000000 --- a/.devcontainer/mcp.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "servers": { - "AAZ Flow": { - "command": "python", - "args": [ - "azure-cli/tools/aaz-flow/src/aaz-flow/main.py" - ], - } - } -} \ No newline at end of file diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 9b4c7dd5564..12e6d10f0a0 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -8,7 +8,6 @@ /doc/ @Azure/act-quality-productivity-squad /tools/ @Azure/act-platform-engineering-squad @Azure/act-experience-enablement-squad @Azure/act-codegen-extensibility-squad -/tools/aaz-flow @Azure/act-experience-enablement-squad @Azure/act-codegen-extensibility-squad /scripts/ @Azure/act-platform-engineering-squad @Azure/act-experience-enablement-squad @Azure/act-codegen-extensibility-squad /scripts/live_test @Azure/act-platform-engineering-squad /src/azure-cli-testsdk/ @Azure/act-quality-productivity-squad diff --git a/doc/assets/codespace_copilot.png b/doc/assets/codespace_copilot.png deleted file mode 100644 index 01b6da3ac21f01313600fdcab51394c1e76e055e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66753 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�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 Kk*Sb23Hm=H)&e5{ diff --git a/doc/assets/codespace_mcp.png b/doc/assets/codespace_mcp.png deleted file mode 100644 index fe590daf2b09fd0fb17239cf60ffa03035ffa17c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82196 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

vpP%p{qW)g}`tnyl~W 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 diff --git a/doc/assets/codespace_mcp_start.png b/doc/assets/codespace_mcp_start.png deleted file mode 100644 index 4094282d10e252b9964bea3ab424c43366ad7a2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 124373 zcmeEucT`i^_phU4MPO_oMHod7F(csDZ=S|lxAtKOg0sNI@6en2H}~x; zjpW$6e-OAn`uMJu=e~XCUhVz+Eplqfao@h(Z0*}OO?~aYZ~J+fLZ3}p`8m z6p{YZD~f%zFf?(>1>YWbhttslT0Ju5fv31Zy=z8X4Fg&*bBUdw4wWB0etrLE(N57d z{l9Pi%_%P*dP4ranG@vEXD-bn=YOa4yxmuty~I>r2(LQ9qE?l@d3Wn+eVS6Yw(>Ws z0E>Dg|4*TYg<%a~fWJP(f>*5H{<+w6!1<%ol&$I&vQPVSM^$w||*7Y>poW7rB4P z68U-W9T!*jxxH>blEVcQymxN-%}BrFl{PCVsA&;j>deE_$;GFBKIDkD(Xa8I;7>xW zB4LSUq{MHS(o(T+(y{;c#QU?SzjfhocwPxUFk6RgEwX!E`^PwroWF=m|2fSUBeg@* zSH2ev=-k)(buZ=QuTg%9n?rq!eeXC$dab+wxo~uE3P2k#yb%LDa(i?8^Pn{bT&{!Xm^u?y_Rqu(3=*W~gSL$P z1GH$Ip9rA$QxL6q#l5e8{ms-4Q>HnTD0bZjxwHSDsbozM z9d+@Wtl<9QgoHdTg8b@PcAWolTWB0&+}2`^fp&3qnEWBztY=oOgjj^PMX~1ARMa20 zt}ApED6vxBnoE&a_ν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 **Codespaces** > **Create codespace on dev**. ![](https://raw.githubusercontent.com/Azure/azure-cli/refs/heads/dev/doc/assets/codespace_entry.png) -With Codespace, all pre-requisites are installed for you, including the [AAZ Flow MCP server](https://github.com/Azure/azure-cli/tree/dev/tools/aaz-flow). -![](https://raw.githubusercontent.com/Azure/azure-cli/refs/heads/dev/doc/assets/codespace_mcp.png) - ## Authenticate with GitHub Once codespace is created (takes a while), you will see the following prompt in the integrated terminal: ![](https://raw.githubusercontent.com/Azure/azure-cli/refs/heads/dev/doc/assets/codespace_login.png) @@ -51,25 +48,9 @@ When you have completed all the editing in Workspace Editor and clicked EXPORT i Sometimes, the generated code may not fully meet the requirements. In such cases, you'll need to make some customizations based on it. This process can be relatively complex, so please refer to the [relevant documentation](https://azure.github.io/aaz-dev-tools/pages/usage/customization/). ### Test via real-world scenarios -With the help of the AAZ Flow MCP server, you can now generate some test cases. However, no one understands how to design better test scenarios better than you do. Please refer to the [relevant documentation](https://azure.github.io/aaz-dev-tools/pages/usage/command-usage-testing/) to author your own tests. +You understand your test scenarios best. Please refer to the [relevant documentation](https://azure.github.io/aaz-dev-tools/pages/usage/command-usage-testing/) to author your own tests. ### Provide meaningful examples While the codegen tool provides some initial examples, their quality directly impacts the quality of future documentation. Therefore, you should strive for continuous improvement. Please refine your command examples in the Workspace Editor. Once everything is ready, you can raise pull requests in [Azure/azure-cli-extensions](https://github.com/Azure/azure-cli-extensions) and [Azure/aaz](https://github.com/Azure/aaz). - -## Introduction to AAZ Flow -AAZ Flow is the MCP server for the AAZ APIs, enabling pruning of command-line interfaces, implementing custom logic, generating test cases, and more. - -Please note that AAZ Flow is currently in early development. The functionality and available tools are subject to change and expansion as we continue to develop and improve the server. - -### Tools -You can easily start the MCP server within your codespace environment: -![](https://raw.githubusercontent.com/Azure/azure-cli/refs/heads/dev/doc/assets/codespace_mcp_start.png) - -Please setup your Copilot to use the AI features (**Ctrl** + **Alt** + **I** to open a chat): -![](https://raw.githubusercontent.com/Azure/azure-cli/refs/heads/dev/doc/assets/codespace_copilot.png) - -After that, set the mode to `Agent` and the model to `Claude Sonnet`. The following is the use case of the tools: -1. "generate test for chaos module" to generate test cases in _chaos_ module. -2. "generate code for azure cli" to generate models AND codes. diff --git a/tools/aaz-flow/.gitignore b/tools/aaz-flow/.gitignore deleted file mode 100644 index b7faf403d91..00000000000 --- a/tools/aaz-flow/.gitignore +++ /dev/null @@ -1,207 +0,0 @@ -# Byte-compiled / optimized / DLL files -__pycache__/ -*.py[codz] -*$py.class - -# C extensions -*.so - -# Distribution / packaging -.Python -build/ -develop-eggs/ -dist/ -downloads/ -eggs/ -.eggs/ -lib/ -lib64/ -parts/ -sdist/ -var/ -wheels/ -share/python-wheels/ -*.egg-info/ -.installed.cfg -*.egg -MANIFEST - -# PyInstaller -# Usually these files are written by a python script from a template -# before PyInstaller builds the exe, so as to inject date/other infos into it. -*.manifest -*.spec - -# Installer logs -pip-log.txt -pip-delete-this-directory.txt - -# Unit test / coverage reports -htmlcov/ -.tox/ -.nox/ -.coverage -.coverage.* -.cache -nosetests.xml -coverage.xml -*.cover -*.py.cover -.hypothesis/ -.pytest_cache/ -cover/ - -# Translations -*.mo -*.pot - -# Django stuff: -*.log -local_settings.py -db.sqlite3 -db.sqlite3-journal - -# Flask stuff: -instance/ -.webassets-cache - -# Scrapy stuff: -.scrapy - -# Sphinx documentation -docs/_build/ - -# PyBuilder -.pybuilder/ -target/ - -# Jupyter Notebook -.ipynb_checkpoints - -# IPython -profile_default/ -ipython_config.py - -# pyenv -# For a library or package, you might want to ignore these files since the code is -# intended to run in multiple environments; otherwise, check them in: -# .python-version - -# pipenv -# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. -# However, in case of collaboration, if having platform-specific dependencies or dependencies -# having no cross-platform support, pipenv may install dependencies that don't work, or not -# install all needed dependencies. -#Pipfile.lock - -# UV -# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control. -# This is especially recommended for binary packages to ensure reproducibility, and is more -# commonly ignored for libraries. -#uv.lock - -# poetry -# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. -# This is especially recommended for binary packages to ensure reproducibility, and is more -# commonly ignored for libraries. -# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control -#poetry.lock -#poetry.toml - -# pdm -# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. -# pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python. -# https://pdm-project.org/en/latest/usage/project/#working-with-version-control -#pdm.lock -#pdm.toml -.pdm-python -.pdm-build/ - -# pixi -# Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control. -#pixi.lock -# Pixi creates a virtual environment in the .pixi directory, just like venv module creates one -# in the .venv directory. It is recommended not to include this directory in version control. -.pixi - -# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm -__pypackages__/ - -# Celery stuff -celerybeat-schedule -celerybeat.pid - -# SageMath parsed files -*.sage.py - -# Environments -.env -.envrc -.venv -env/ -venv/ -ENV/ -env.bak/ -venv.bak/ - -# Spyder project settings -.spyderproject -.spyproject - -# Rope project settings -.ropeproject - -# mkdocs documentation -/site - -# mypy -.mypy_cache/ -.dmypy.json -dmypy.json - -# Pyre type checker -.pyre/ - -# pytype static type analyzer -.pytype/ - -# Cython debug symbols -cython_debug/ - -# PyCharm -# JetBrains specific template is maintained in a separate JetBrains.gitignore that can -# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore -# and can be added to the global gitignore or merged into this file. For a more nuclear -# option (not recommended) you can uncomment the following to ignore the entire idea folder. -#.idea/ - -# Abstra -# Abstra is an AI-powered process automation framework. -# Ignore directories containing user credentials, local state, and settings. -# Learn more at https://abstra.io/docs -.abstra/ - -# Visual Studio Code -# Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore -# that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore -# and can be added to the global gitignore or merged into this file. However, if you prefer, -# you could uncomment the following to ignore the entire vscode folder -# .vscode/ - -# Ruff stuff: -.ruff_cache/ - -# PyPI configuration file -.pypirc - -# Cursor -# Cursor is an AI-powered code editor. `.cursorignore` specifies files/directories to -# exclude from AI features like autocomplete and code analysis. Recommended for sensitive data -# refer to https://docs.cursor.com/context/ignore-files -.cursorignore -.cursorindexingignore - -# Marimo -marimo/_static/ -marimo/_lsp/ -__marimo__/ diff --git a/tools/aaz-flow/CHANGELOG.md b/tools/aaz-flow/CHANGELOG.md deleted file mode 100644 index 86571fbb2e2..00000000000 --- a/tools/aaz-flow/CHANGELOG.md +++ /dev/null @@ -1,17 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [Unreleased] - -[1.0.0] - 2025-10-13 -- Applied `hatchling` as build backend. -- Refined the project structure. - -[0.1.0] - 2025-10-08 -- Added tool for code generation. -- Added tool for test generation. -- Initialized MCP server. diff --git a/tools/aaz-flow/LICENSE b/tools/aaz-flow/LICENSE deleted file mode 100644 index 98767aca074..00000000000 --- a/tools/aaz-flow/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2025 Microsoft Corporation - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/tools/aaz-flow/README.md b/tools/aaz-flow/README.md deleted file mode 100644 index d4cf694bd96..00000000000 --- a/tools/aaz-flow/README.md +++ /dev/null @@ -1,15 +0,0 @@ -## AAZ Flow -AAZ Flow is the MCP server for the AAZ APIs, enabling pruning of command-line interfaces, implementing custom logic, generating test cases, and more. - -Please note that AAZ Flow is currently in early development. The functionality and available tools are subject to change and expansion as we continue to develop and improve the server. - -### Tools -You can easily start the MCP server within your codespace environment: -![](https://raw.githubusercontent.com/Azure/azure-cli/refs/heads/dev/doc/assets/codespace_mcp_start.png) - -Please setup your Copilot to use the AI features (**Ctrl** + **Alt** + **I** to open a chat): -![](https://raw.githubusercontent.com/Azure/azure-cli/refs/heads/dev/doc/assets/codespace_copilot.png) - -After that, set the mode to `Agent` and the model to `Claude Sonnet`. The following is the use case of the tools: -1. "generate test for chaos module" to generate test cases in _chaos_ module. -2. "generate code for azure cli" to generate models AND codes. diff --git a/tools/aaz-flow/pyproject.toml b/tools/aaz-flow/pyproject.toml deleted file mode 100644 index 52d81e55a97..00000000000 --- a/tools/aaz-flow/pyproject.toml +++ /dev/null @@ -1,19 +0,0 @@ -[build-system] -requires = ["hatchling"] -build-backend = "hatchling.build" - -[project] -name = "aaz-flow" -version = "1.0.0" -description = "AAZ Flow is the MCP server for the AAZ APIs." -readme = "README.md" -requires-python = ">=3.12" -dependencies = [ - "fastmcp>=2.11.0,<3.0.0" -] - -[tool.hatch.build] -packages = ["src/aaz-flow"] - -[tool.hatch.version] -path = "src/aaz-flow/__init__.py" diff --git a/tools/aaz-flow/src/aaz-flow/__init__.py b/tools/aaz-flow/src/aaz-flow/__init__.py deleted file mode 100644 index d2074374a27..00000000000 --- a/tools/aaz-flow/src/aaz-flow/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -# -------------------------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# -------------------------------------------------------------------------------------------- -__version__ = "1.0.0" # https://semver.org/#summary diff --git a/tools/aaz-flow/src/aaz-flow/helpers.py b/tools/aaz-flow/src/aaz-flow/helpers.py deleted file mode 100644 index 16334e133cb..00000000000 --- a/tools/aaz-flow/src/aaz-flow/helpers.py +++ /dev/null @@ -1,421 +0,0 @@ -# -------------------------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# -------------------------------------------------------------------------------------------- - -import asyncio -import os -import shutil -import sys -from pathlib import Path -from typing import Literal - -from fastmcp import Context -from models import AAZRequest - -paths = { - "aaz": os.getenv("AAZ_PATH", "/workspaces/aaz"), - "cli": os.getenv("CLI_PATH", "/workspaces/azure-cli"), - "cli_extension": os.getenv("CLI_EXTENSION_PATH", "/workspaces/azure-cli-extensions"), - "swagger_path": os.getenv("SWAGGER_PATH", "/workspaces/azure-rest-api-specs"), -} - - -def _resolve_python_candidates() -> list[str]: - """Find available Python executables in order of preference.""" - candidates = [] - venv = os.environ.get("VIRTUAL_ENV") - if venv: - candidates.append(str(Path(venv) / "bin" / "python")) - ws_venv_python = Path("/workspaces/.venv/bin/python") - if ws_venv_python.exists(): - candidates.append(str(ws_venv_python)) - if sys.executable: - candidates.append(sys.executable) - for name in ("python3", "python"): - p = shutil.which(name) - if p: - candidates.append(p) - deduped = [] - seen = set() - for c in candidates: - if c not in seen: - deduped.append(c) - seen.add(c) - return deduped - - -def _resolve_aaz_dev_prefix() -> str: - """Find the correct aaz-dev command to use.""" - for py in _resolve_python_candidates(): - try: - import subprocess - - code = ( - "import importlib.util, sys; " - "spec = importlib.util.find_spec('aaz_dev.__main__'); " - "sys.exit(0 if spec else 1)" - ) - res = subprocess.run( - [py, "-c", code], - stdout=subprocess.PIPE, - stderr=subprocess.PIPE, - text=True, - ) - if res.returncode == 0: - return f"{py} -m aaz_dev" - except Exception: - pass - for maybe in [ - "/workspaces/.venv/bin/aaz-dev", - ( - str(Path(os.environ.get("VIRTUAL_ENV", "")) / "bin" / "aaz-dev") - if os.environ.get("VIRTUAL_ENV") - else None - ), - shutil.which("aaz-dev"), - ]: - if maybe and os.path.exists(maybe): - return maybe - return "aaz-dev" - - -async def fetch_available_services(): - """Retrieve available services by parsing local azure-rest-api-specs/specification directory.""" - spec_path = os.path.join(paths["swagger_path"], "specification") - if not os.path.exists(spec_path): - return ["storage", "compute", "network", "keyvault", "monitor"] - - try: - directories = [ - d - for d in os.listdir(spec_path) - if os.path.isdir(os.path.join(spec_path, d)) - ] - directories.sort() - return directories - except Exception: - return ["storage", "compute", "network", "keyvault", "monitor"] - - -def fetch_tag_and_rp(module_name: str) -> list: - """Extract tags and resource providers from swagger readme.md file.""" - read_me = os.path.join( - paths["swagger_path"], "specification", module_name, "resource-manager", "readme.md" - ) - if not os.path.exists(read_me): - return [] - - tags = [] - try: - with open(read_me, 'r') as f: - for line in f: - line = line.strip() - if line.startswith('### Tag:'): - tag = line.split('### Tag:')[1].strip() - tags.append(tag) - except Exception: - tags = [] - - resource_providers = [] - try: - with open(read_me, 'r') as f: - lines = f.readlines() - for idx, line in enumerate(lines): - if line.strip().startswith('input-file:'): - for next_line in lines[idx+1:]: - next_line = next_line.strip() - if next_line.startswith('-'): - path = next_line.lstrip('-').strip() - parts = path.split('/') - if parts: - resource_providers.append(parts[0]) - elif next_line == "" or next_line.startswith("#"): - continue - else: - break - break - except Exception: - resource_providers = [] - - return [resource_providers, tags] - - -async def _select_option(ctx: Context, options: list, option_type: str) -> str: - if len(options) == 1: - selected = options[0] - await ctx.info(f"Using single {option_type}: {selected}") - return selected - - choice_prompt = await ctx.sample( - f"When the user clicks on the Respond button, the user will receive a list of {option_type}s to choose from." - f"Ask the user in a professional manner to select one {option_type} from the list. " - "The list is provided when they click on the Respond button so do not give any options in the questions itself." - ) - - choice = await ctx.elicit( - message=choice_prompt.text, - response_type=Literal[*options] if options else str - ) - - if choice.action != "accept": - return None - return choice.data - - -async def validate_paths(ctx: Context) -> dict: - """Validate and get correct paths for required directories.""" - await ctx.info("az_cli : Validating local paths...") - await ctx.report_progress(progress=5, total=100) - - combined_check = await ctx.sample( - "Ask the user to confirm if the detected paths for AAZ, Azure CLI, Azure CLI Extensions and Swagger specs are correct. The detected paths are as follows:\n" - f"- AAZ path: `{paths['aaz']}`\n" - f"- Azure CLI path: `{paths['cli']}`\n" - f"- Azure CLI Extensions path: `{paths['cli_extension']}`\n" - f"- Swagger specifications path: `{paths['swagger_path']}`\n" - "If any path is incorrect, ask the user to answer with 'no'." - ) - - check_result = await ctx.elicit( - message=combined_check.text, response_type=Literal["yes", "no"] - ) - - if check_result.action != "accept": - return None - - if check_result.data != "yes": - for i, (key, path) in enumerate(paths.items(), 1): - progress = 5 + (i * 5) - await ctx.report_progress(progress=progress, total=100) - - display_name = key.replace("_", " ") - phrased_question = await ctx.sample( - f"Ask the user to confirm the path for {display_name} directory: {path}. Use `` around the path when displaying it." - ) - check_result = await ctx.elicit( - message=phrased_question.text, response_type=Literal["yes", "no"] - ) - - if check_result.action != "accept": - return None - - if check_result.data == "no": - elicit_question = await ctx.sample( - f"Ask the user to provide the correct path for the {display_name} directory." - ) - new_path_result = await ctx.elicit( - message=elicit_question.text, response_type=str - ) - if new_path_result.action != "accept": - return None - paths[key] = new_path_result.data.strip('"') - await ctx.info(f"az_cli : Updated {display_name} path to: {paths[key]}") - - await ctx.info("az_cli : Verifying path existence...") - await ctx.report_progress(progress=30, total=100) - - for key, path in paths.items(): - if not os.path.exists(path): - raise FileNotFoundError( - f"{key.replace('_', ' ')} path does not exist: {path}" - ) - - await ctx.info("az_cli : Path validation completed.") - await ctx.report_progress(progress=35, total=100) - return paths - - -async def get_name(ctx: Context) -> str: - """Get the extension or module name from user.""" - await ctx.info("az_cli : Fetching available services...") - common_extensions = await fetch_available_services() - await ctx.report_progress(progress=40, total=100) - - choice_prompt = await ctx.sample( - "When the user clicks on the Respond button, the user will receive a list openapi specification resources to choose from." - "This list is fetched directly from the Azure REST API Specs repository. " - "Ask the user in a professional manner to select an openapi specification resource from the list. " - "The list is provided when they click on the Respond button so do not give them any options in the questions itself. " - "The result of this option selection will determine which module's code will be generated for Azure CLI." - "The request to the user should start from Please as the first word." - ) - extension_choice = await ctx.elicit( - message=choice_prompt.text, response_type=Literal[tuple( - common_extensions)] - ) - - if extension_choice.action != "accept": - return None - - if extension_choice.data == "other": - custom_extension = await ctx.elicit( - "Enter custom extension/module name:", response_type=str - ) - if custom_extension.action != "accept": - return None - return custom_extension.data - - return extension_choice.data - - -async def _select_option(ctx: Context, options: list, option_type: str) -> str: - """Helper function to select from options or use single option directly.""" - if len(options) == 1: - selected = options[0] - await ctx.info(f"Using single {option_type}: {selected}") - return selected - - choice_prompt = await ctx.sample( - f"When the user clicks on the Respond button, the user will receive a list of {option_type}s to choose from." - f"Ask the user in a professional manner to select one {option_type} from the list. " - "The list is provided when they click on the Respond button so do not give any options in the questions itself." - ) - - choice = await ctx.elicit( - message=choice_prompt.text, - response_type=Literal[*options] if options else str - ) - - if choice.action != "accept": - return None - return choice.data - - -async def construct_config(ctx: Context, name: str, resource_providers: list, tags: list) -> dict: - """Construct configuration by selecting resource provider and tag.""" - await ctx.info(f"Found resource providers: {resource_providers}") - await ctx.info(f"Found tags: {tags}") - - if not resource_providers or not tags: - await ctx.info("Invalid configuration. Code generation cancelled.") - return {} - - resource_provider = await _select_option(ctx, resource_providers, "resource provider") - if resource_provider is None: - return None - - swagger_tag = await _select_option(ctx, tags, "swagger tag") - if swagger_tag is None: - return None - - await ctx.info( - f"Selected resource provider: {resource_provider}, tag: {swagger_tag}") - - return [resource_provider, swagger_tag] - - -async def run_command( - ctx: Context, command: str, step_name: str, progress_start: int, progress_end: int -): - """Execute a shell command with progress tracking and output logging.""" - await ctx.info(f"az_cli : Starting: {step_name}") - process = await asyncio.create_subprocess_shell( - command, stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.STDOUT - ) - - progress_range = progress_end - progress_start - lines_count = 0 - total_lines_estimate = 50 - - while True: - line = await process.stdout.readline() - if not line: - if process.returncode is not None: - break - await asyncio.sleep(0.1) - continue - lines_count += 1 - await ctx.info(f"az_cli : {line.decode().rstrip()}") - progress = progress_start + min( - progress_range, int( - (lines_count / total_lines_estimate) * progress_range) - ) - await ctx.report_progress(progress, 100) - - await process.wait() - - if process.returncode != 0: - raise RuntimeError(f"{step_name} failed: {command}") - - await ctx.report_progress(progress_end, 100) - await ctx.info(f"az_cli : Completed: {step_name}") - - -async def execute_commands(ctx: Context, paths: dict, request: AAZRequest): - """Execute the AAZ development commands for code generation.""" - aaz_dev = _resolve_aaz_dev_prefix() - await ctx.info(f"az_cli : Using aaz-dev invocation: {aaz_dev}") - - prompt = await ctx.sample( - "Ask the user to provide a name for the generated module/extension. " - "To use the default name, they can simply press Cancel." - ) - - module_name_response = await ctx.elicit(prompt.text, response_type=str) - if module_name_response.action != "accept" or not module_name_response.data: - await ctx.info("No module name provided. The default name will be used.") - module_name = request.name - else: - module_name = module_name_response.data - - cmd = ( - f"{aaz_dev} cli generate " - f"-s {request.name} " - f"-m {module_name}" - ) - - try: - await run_command(ctx, cmd, "Generate CLI code", 80, 100) - except Exception as e: - await ctx.info(f"az_cli : Code generation failed: {str(e)}") - return f"Code generation failed: {str(e)}" - - return "Azure CLI code generation completed successfully!" - - -async def run_code_generation(ctx: Context, name: str, paths: dict): - """Run the complete code generation workflow.""" - resource_providers, tags = fetch_tag_and_rp(name) - if not resource_providers or not tags: - return None, "Code generation cancelled." - - resource_provider, swagger_tag = await construct_config(ctx, name, resource_providers, tags) - - request = AAZRequest( - name=name, - swagger_module_path=os.path.join(paths['swagger_path'], 'specification', name), - resource_provider=resource_provider, - swagger_tag=swagger_tag, - ) - - await execute_commands(ctx, paths, request) - ctx.generated_module = name - - await ctx.info(f"Code generation completed for extension/module '{name}'.") - return name, None - - -async def get_validated_paths(ctx: Context): - """Get and validate all required paths.""" - paths = await validate_paths(ctx) - if not paths: - await ctx.info("Operation cancelled due to invalid paths.") - return None - return paths - - -async def get_module_name(ctx: Context, module_name: str | None = None): - """Get module name from parameter or user input.""" - if not module_name: - response = await ctx.elicit( - "Enter the module/extension name to generate tests for:" - ) - if response.action != "accept" or not response.data: - await ctx.info("Operation cancelled due to missing module name.") - return None - module_name = response.data - else: - await ctx.info(f"Detected generated module: {module_name}") - ctx.generated_module = module_name - return module_name diff --git a/tools/aaz-flow/src/aaz-flow/main.py b/tools/aaz-flow/src/aaz-flow/main.py deleted file mode 100644 index 6671877d0bb..00000000000 --- a/tools/aaz-flow/src/aaz-flow/main.py +++ /dev/null @@ -1,137 +0,0 @@ -# -------------------------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# -------------------------------------------------------------------------------------------- - -from fastmcp import FastMCP, Context -from helpers import get_name, run_code_generation, get_module_name, get_validated_paths -from testgen import generate_tests - -mcp = FastMCP("AAZ Flow") - -async def run_test_generation(ctx: Context, paths: dict): - await ctx.info("Automatically generating tests for the newly generated module...") - try: - test_result = await generate_tests(ctx, paths) - await ctx.info(f"Automatic test generation result: {test_result}") - except Exception as e: - await ctx.info(f"Automatic test generation failed: {str(e)}") - -async def run_full_generation(ctx: Context, name: str, paths: dict): - await ctx.report_progress(40, 100) - name, error = await run_code_generation(ctx, name, paths) - if error: - return error - await ctx.report_progress(60, 100) - await ctx.report_progress(100, 100) - await run_test_generation(ctx, paths) - return f"Code generation and test generation completed for extension/module '{name}'." - -@mcp.tool( - name="az_cli_generate_help", - description="Explains how to correctly call the az_cli_generate tool.", -) -async def generate_help(ctx: Context): - help_message = { - "tool": "az_cli_generate", - "description": "Generate Azure CLI commands from Swagger specs.", - "parameters": {}, - "usage": "Call with no parameters, e.g. {}", - } - await ctx.info("az_cli_generate_help retrieved.") - return help_message - -@mcp.tool( - name="az_cli_generate_tests_help", - description="Explains how to correctly call the az_cli_generate_tests tool.", -) -async def generate_tests_help(ctx: Context): - help_message = { - "tool": "az_cli_generate_tests", - "description": ( - "Generate tests for the newly generated Azure CLI commands. " - "Should only be called independently if the user has already " - "generated a module/extension or explicitly wants to only generate tests." - ), - "parameters": { - "module_name": "Name of the module/extension to generate tests for" - }, - "usage": "Call with module name parameter, e.g. {'module_name': 'my-extension'}", - } - await ctx.info("az_cli_generate_tests_help retrieved.") - return help_message - -@mcp.tool( - name="az_cli_generate_tests", - description="Generate tests for the newly generated Azure CLI commands.", -) -async def generate_tests_tool(ctx: Context, module_name: str | None = None): - await ctx.info("Initiating Azure CLI test generation workflow.") - - paths = await get_validated_paths(ctx) - if not paths: - return "Test generation cancelled." - - module_name = await get_module_name(ctx, module_name) - if not module_name: - return "Test generation cancelled." - - await run_test_generation(ctx, paths) - - return f"Test generation completed for extension/module '{module_name}'." - -@mcp.tool( - name="az_cli_generate_code_direct_help", - description="Explains how to correctly call the az_cli_generate tool directly if the user has a specific module/extension in mind.", -) -async def generate_code_direct_help(ctx: Context): - help_message = { - "tool": "az_cli_generate_code_direct", - "description": "Generate Azure CLI commands from Swagger specs when the user has a specific module/extension in mind.", - "parameters": { - "module_name": "Name of the module/extension to generate code for" - }, - "usage": "Call with module name parameter, e.g. {'module_name': 'my-extension'}", - } - await ctx.info("az_cli_generate_code_direct_help retrieved.") - return help_message - -@mcp.tool( - name="az_cli_generate_code_direct", - description="Generate Azure CLI commands from Swagger specs when the user has a specific module/extension in mind.", -) -async def generate_code_direct(ctx: Context, module_name: str): - await ctx.info("Initiating Azure CLI code generation workflow with specified module/extension.") - await ctx.report_progress(5, 100) - - paths = await get_validated_paths(ctx) - if not paths: - return "Code generation cancelled." - await ctx.report_progress(20, 100) - - if not module_name: - return "Code generation cancelled." - - return await run_full_generation(ctx, module_name, paths) - -@mcp.tool( - name="az_cli_generate", - description="Generate Azure CLI commands from Swagger specs.", -) -async def generate_code(ctx: Context): - await ctx.info("Initiating Azure CLI code generation workflow.") - await ctx.report_progress(5, 100) - - paths = await get_validated_paths(ctx) - if not paths: - return "Code generation cancelled." - await ctx.report_progress(20, 100) - - name = await get_name(ctx) - if not name: - return "Code generation cancelled." - - return await run_full_generation(ctx, name, paths) - -if __name__ == "__main__": - mcp.run(transport="stdio") diff --git a/tools/aaz-flow/src/aaz-flow/models.py b/tools/aaz-flow/src/aaz-flow/models.py deleted file mode 100644 index 4d2643ca9e5..00000000000 --- a/tools/aaz-flow/src/aaz-flow/models.py +++ /dev/null @@ -1,14 +0,0 @@ -# -------------------------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# -------------------------------------------------------------------------------------------- - -from dataclasses import dataclass - - -@dataclass -class AAZRequest: - name: str - swagger_module_path: str - resource_provider: str - swagger_tag: str diff --git a/tools/aaz-flow/src/aaz-flow/prompt_templates.py b/tools/aaz-flow/src/aaz-flow/prompt_templates.py deleted file mode 100644 index 7212d055718..00000000000 --- a/tools/aaz-flow/src/aaz-flow/prompt_templates.py +++ /dev/null @@ -1,50 +0,0 @@ -# -------------------------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# -------------------------------------------------------------------------------------------- - -"""Prompt templates and static guidance for AAZ Flow tools.""" - -IDEAL_STYLE = """ - @ResourceGroupPreparer(name_prefix="cli_test_ag_with_non_v2_sku_", location="westus") - def test_ag_with_non_v2_sku(self): - self.kwargs.update({ - "ag_name": self.create_random_name("ag-", 12), - "port_name": self.create_random_name("port-", 12), - "lisener_name": self.create_random_name("lisener-", 12), - "rule_name": self.create_random_name("rule-", 12), - }) - - self.cmd("network application-gateway create -n {ag_name} -g {rg} --sku WAF_Medium") - - self.kwargs["front_ip"] = self.cmd("network application-gateway show -n {ag_name} -g {rg}").get_output_in_json()["frontendIPConfigurations"][0]["name"] - self.cmd("network application-gateway frontend-port create -n {port_name} -g {rg} --gateway-name {ag_name} --port 8080") - self.cmd("network application-gateway http-listener create -n {lisener_name} -g {rg} --gateway-name {ag_name} --frontend-ip {front_ip} --frontend-port {port_name}") - - self.cmd( - "network application-gateway rule create -n {rule_name} -g {rg} --gateway-name {ag_name} --http-listener {lisener_name}", - checks=[ - self.check("name", "{ag_name}"), - self.check("sku.tier", "WAF") - ] - ) - - self.cmd("network application-gateway delete -n {ag_name} -g {rg}") -""" - -def get_testgen_static_instructions() -> str: - return ( - "You are generating Azure CLI scenario tests for a new module.\n" - "Follow the style used by azure-cli scenario tests. Keep tests idempotent and light.\n" - "Generate tests that achieve at least 80%% coverage of methods and parameters covering primary commands for the target module.\n" - "To understand the primary commands that need to be tested, read through and understand the target module's generated AAZ commands.\n" - "Constraints: \n" - "- Keep tests safe-by-default; avoid destructive operations unless clearly required.\n" - "- Ensure tests can run in parallel without conflicts.\n" - "- If tests are large and can be safely and logically split, create multiple test methods (i.e. avoid a single CRUD test if possible, split it into multiple tests if logically and safely separable).\n" - "- It is highly preferred that all CRUD operations are not coupled in a single test.\n" - "- Output only valid Python code for the test file, nothing else." - ) - - -REF_STYLE_LABEL = "Read and reference the following test files (do not copy verbatim, just follow structure):\n" diff --git a/tools/aaz-flow/src/aaz-flow/testgen.py b/tools/aaz-flow/src/aaz-flow/testgen.py deleted file mode 100644 index 49257a25590..00000000000 --- a/tools/aaz-flow/src/aaz-flow/testgen.py +++ /dev/null @@ -1,240 +0,0 @@ -# -------------------------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# -------------------------------------------------------------------------------------------- - -from pathlib import Path -import os -import asyncio -import random -from fastmcp import Context -from prompt_templates import get_testgen_static_instructions, REF_STYLE_LABEL, IDEAL_STYLE - - -async def check_module_status(ctx: Context): - await ctx.info("Starting test generation workflow.") - - module_name = getattr(ctx, "generated_module", None) - if not module_name: - response = await ctx.elicit( - "Enter the module/extension name to generate tests for:" - ) - if response.action != "accept" or not response.data: - return "Test generation cancelled." - module_name = response.data - else: - await ctx.info(f"Detected generated module: {module_name}") - - ctx.generated_module = module_name - return module_name - - -def find_test_dir(cli_extension_path: str, module_name: str) -> Path | None: - base = Path(cli_extension_path) / "src" / module_name - for path in base.rglob("tests/latest"): - if path.is_dir(): - return path - return None - - -def extract_generated_examples(module_path: Path) -> dict[str, str]: - examples = {} - for file in module_path.rglob("*.py"): - with open(file, "r", encoding="utf-8") as f: - lines = f.readlines() - inside_docstring = False - i = 0 - while i < len(lines): - line = lines[i] - - if line.strip().startswith(('"""', "'''")): - inside_docstring = not inside_docstring - i += 1 - continue - - if inside_docstring and line.strip().startswith(":example:"): - example_name = line.split(":example:")[1].strip() - command_lines = [] - j = i + 1 - while j < len(lines): - next_line = lines[j] - if next_line.strip().startswith(('"""', "'''")): - break - command_lines.append(next_line.rstrip()) - j += 1 - command = "\n".join(l for l in command_lines if l.strip()) - key = example_name - counter = 1 - while key in examples: - counter += 1 - key = f"{example_name}_{counter}" - examples[key] = command.strip() - i = j - else: - i += 1 - return examples - - -async def check_path_status(ctx: Context, paths: dict): - module_name = await check_module_status(ctx) - if not module_name or "cancelled" in str(module_name).lower(): - return str(module_name), [], None - - aaz_path = Path(f"{paths['cli_extension']}/src/{module_name}") - if not aaz_path.exists(): - return f"AAZ path not found for module '{module_name}'", [], None - - commands = [] - for file in aaz_path.rglob("*.py"): - with open(file, "r", encoding="utf-8") as f: - for line in f: - if line.strip().startswith("def "): - commands.append(line.strip().replace("def ", "").split("(")[0]) - - test_dir = find_test_dir(paths["cli_extension"], module_name) - test_dir.mkdir(parents=True, exist_ok=True) - test_file = test_dir / f"test_{module_name}.py" - return module_name, commands, test_file - - -def build_testgen_prompt( - module_name: str, - commands: list[str], - reference_snippet: str = "", - examples: dict[str, str] | None = None, -) -> str: - parts = [ - get_testgen_static_instructions(), - ( - f"Module name: '{module_name}'. Generate a single test class named " - f"'{module_name.capitalize()}ScenarioTest' deriving from ScenarioTest." - ), - "Discovered AAZ functions (potential commands):\n" + ", ".join(commands), - ] - - if examples: - example_lines = [ - f"{name}: {cmd}" for name, cmd in examples.items() - ] - parts.append("Example commands discovered from docstrings:\n" + "\n".join(example_lines)) - - if reference_snippet: - parts.append(REF_STYLE_LABEL + reference_snippet) - - parts.append("Here is the ideal test style example to follow:\n" + IDEAL_STYLE) - - return "\n\n".join(parts) - - -def strip_code_fences(text: str) -> str: - lines = text.strip().splitlines() - blocks = [] - inside = False - current = [] - - for line in lines: - if line.strip().startswith("```"): - if inside: - blocks.append("\n".join(current).strip()) - current = [] - inside = False - else: - inside = True - elif inside: - current.append(line) - if current: - blocks.append("\n".join(current).strip()) - - if blocks: - return max(blocks, key=len) - return text.strip() - -def strip_shebang(text: str) -> str: - lines = text.strip().splitlines() - if lines and lines[0].startswith("#!"): - return "\n".join(lines[1:]).strip() - return text.strip() - -async def generate_tests(ctx: Context, paths: dict): - module_name, commands, test_file = await check_path_status(ctx, paths) - - if test_file is None and not commands: - return str(module_name) - - if not commands: - return f"No commands found to generate tests for module '{module_name}'." - - reference_snippet = "\n".join( - [ - "azure-cli/src/azure-cli/azure/cli/command_modules/resource/tests/latest/test_resource.py", - "azure-cli/src/azure-cli/azure/cli/command_modules/keyvault/tests/latest/test_keyvault_commands.py", - ] - ) - - extracted_examples = extract_generated_examples( - Path(f"{paths['cli_extension']}/src/{module_name}") - ) - - sampling_prompt = build_testgen_prompt( - module_name, commands, reference_snippet, extracted_examples - ) - max_retries = int(os.getenv("TESTGEN_RETRIES", "5")) - base_delay = float(os.getenv("TESTGEN_RETRY_BASE_DELAY", "2")) - - attempt = 0 - content = "" - last_err = None - while attempt <= max_retries: - try: - if attempt > 0: - await ctx.info( - f"Retrying test generation (attempt {attempt}/{max_retries})..." - ) - sampled = await ctx.sample(sampling_prompt) - raw_content = (getattr(sampled, "text", "") or "").strip() - content = strip_shebang(strip_code_fences(raw_content)) - if content: - break - last_err = RuntimeError("Empty content returned from provider") - raise last_err - except Exception as ex: - last_err = ex - message = str(ex).lower() - retriable = any( - k in message - for k in [ - "rate limit", - "overloaded", - "timeout", - "temporarily unavailable", - "429", - ] - ) - if attempt >= max_retries or not retriable: - break - delay = base_delay * (2**attempt) - delay = min(delay, 30) - jitter = random.uniform(0.7, 1.3) - wait_time = delay * jitter - await ctx.info( - f"Transient error encountered: {ex}. Waiting {wait_time:.1f}s before retry." - ) - await asyncio.sleep(wait_time) - attempt += 1 - continue - - if not content: - if last_err: - return ( - f"Test generation failed after {max_retries} retries for module '{module_name}': " - f"{last_err}" - ) - return ( - f"Test generation failed: no content generated for module '{module_name}'." - ) - - with open(test_file, "w", encoding="utf-8") as f: - f.write(content) - - await ctx.info(f"Generated test file: {test_file}") - return f"Test generation completed for module '{module_name}'." diff --git a/tools/aaz-flow/uv.lock b/tools/aaz-flow/uv.lock deleted file mode 100644 index 20c4c9af5b3..00000000000 --- a/tools/aaz-flow/uv.lock +++ /dev/null @@ -1,1115 +0,0 @@ -version = 1 -revision = 3 -requires-python = ">=3.12" - -[[package]] -name = "aaz-flow" -version = "1.0.0" -source = { editable = "." } -dependencies = [ - { name = "fastmcp" }, -] - -[package.metadata] -requires-dist = [{ name = "fastmcp", specifier = ">=2.11.0,<3.0.0" }] - -[[package]] -name = "annotated-types" -version = "0.7.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload-time = "2024-05-20T21:33:25.928Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, -] - -[[package]] -name = "anyio" -version = "4.11.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "idna" }, - { name = "sniffio" }, - { name = "typing-extensions", marker = "python_full_version < '3.13'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/c6/78/7d432127c41b50bccba979505f272c16cbcadcc33645d5fa3a738110ae75/anyio-4.11.0.tar.gz", hash = "sha256:82a8d0b81e318cc5ce71a5f1f8b5c4e63619620b63141ef8c995fa0db95a57c4", size = 219094, upload-time = "2025-09-23T09:19:12.58Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/15/b3/9b1a8074496371342ec1e796a96f99c82c945a339cd81a8e73de28b4cf9e/anyio-4.11.0-py3-none-any.whl", hash = "sha256:0287e96f4d26d4149305414d4e3bc32f0dcd0862365a4bddea19d7a1ec38c4fc", size = 109097, upload-time = "2025-09-23T09:19:10.601Z" }, -] - -[[package]] -name = "attrs" -version = "25.4.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6b/5c/685e6633917e101e5dcb62b9dd76946cbb57c26e133bae9e0cd36033c0a9/attrs-25.4.0.tar.gz", hash = "sha256:16d5969b87f0859ef33a48b35d55ac1be6e42ae49d5e853b597db70c35c57e11", size = 934251, upload-time = "2025-10-06T13:54:44.725Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3a/2a/7cc015f5b9f5db42b7d48157e23356022889fc354a2813c15934b7cb5c0e/attrs-25.4.0-py3-none-any.whl", hash = "sha256:adcf7e2a1fb3b36ac48d97835bb6d8ade15b8dcce26aba8bf1d14847b57a3373", size = 67615, upload-time = "2025-10-06T13:54:43.17Z" }, -] - -[[package]] -name = "authlib" -version = "1.6.6" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "cryptography" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/bb/9b/b1661026ff24bc641b76b78c5222d614776b0c085bcfdac9bd15a1cb4b35/authlib-1.6.6.tar.gz", hash = "sha256:45770e8e056d0f283451d9996fbb59b70d45722b45d854d58f32878d0a40c38e", size = 164894, upload-time = "2025-12-12T08:01:41.464Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/54/51/321e821856452f7386c4e9df866f196720b1ad0c5ea1623ea7399969ae3b/authlib-1.6.6-py2.py3-none-any.whl", hash = "sha256:7d9e9bc535c13974313a87f53e8430eb6ea3d1cf6ae4f6efcd793f2e949143fd", size = 244005, upload-time = "2025-12-12T08:01:40.209Z" }, -] - -[[package]] -name = "certifi" -version = "2025.10.5" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/4c/5b/b6ce21586237c77ce67d01dc5507039d444b630dd76611bbca2d8e5dcd91/certifi-2025.10.5.tar.gz", hash = "sha256:47c09d31ccf2acf0be3f701ea53595ee7e0b8fa08801c6624be771df09ae7b43", size = 164519, upload-time = "2025-10-05T04:12:15.808Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e4/37/af0d2ef3967ac0d6113837b44a4f0bfe1328c2b9763bd5b1744520e5cfed/certifi-2025.10.5-py3-none-any.whl", hash = "sha256:0f212c2744a9bb6de0c56639a6f68afe01ecd92d91f14ae897c4fe7bbeeef0de", size = 163286, upload-time = "2025-10-05T04:12:14.03Z" }, -] - -[[package]] -name = "cffi" -version = "2.0.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pycparser", marker = "implementation_name != 'PyPy'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/eb/56/b1ba7935a17738ae8453301356628e8147c79dbb825bcbc73dc7401f9846/cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529", size = 523588, upload-time = "2025-09-08T23:24:04.541Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ea/47/4f61023ea636104d4f16ab488e268b93008c3d0bb76893b1b31db1f96802/cffi-2.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d", size = 185271, upload-time = "2025-09-08T23:22:44.795Z" }, - { url = "https://files.pythonhosted.org/packages/df/a2/781b623f57358e360d62cdd7a8c681f074a71d445418a776eef0aadb4ab4/cffi-2.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c", size = 181048, upload-time = "2025-09-08T23:22:45.938Z" }, - { url = "https://files.pythonhosted.org/packages/ff/df/a4f0fbd47331ceeba3d37c2e51e9dfc9722498becbeec2bd8bc856c9538a/cffi-2.0.0-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe", size = 212529, upload-time = "2025-09-08T23:22:47.349Z" }, - { url = "https://files.pythonhosted.org/packages/d5/72/12b5f8d3865bf0f87cf1404d8c374e7487dcf097a1c91c436e72e6badd83/cffi-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062", size = 220097, upload-time = "2025-09-08T23:22:48.677Z" }, - { url = "https://files.pythonhosted.org/packages/c2/95/7a135d52a50dfa7c882ab0ac17e8dc11cec9d55d2c18dda414c051c5e69e/cffi-2.0.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e", size = 207983, upload-time = "2025-09-08T23:22:50.06Z" }, - { url = "https://files.pythonhosted.org/packages/3a/c8/15cb9ada8895957ea171c62dc78ff3e99159ee7adb13c0123c001a2546c1/cffi-2.0.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037", size = 206519, upload-time = "2025-09-08T23:22:51.364Z" }, - { url = "https://files.pythonhosted.org/packages/78/2d/7fa73dfa841b5ac06c7b8855cfc18622132e365f5b81d02230333ff26e9e/cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba", size = 219572, upload-time = "2025-09-08T23:22:52.902Z" }, - { url = "https://files.pythonhosted.org/packages/07/e0/267e57e387b4ca276b90f0434ff88b2c2241ad72b16d31836adddfd6031b/cffi-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94", size = 222963, upload-time = "2025-09-08T23:22:54.518Z" }, - { url = "https://files.pythonhosted.org/packages/b6/75/1f2747525e06f53efbd878f4d03bac5b859cbc11c633d0fb81432d98a795/cffi-2.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187", size = 221361, upload-time = "2025-09-08T23:22:55.867Z" }, - { url = "https://files.pythonhosted.org/packages/7b/2b/2b6435f76bfeb6bbf055596976da087377ede68df465419d192acf00c437/cffi-2.0.0-cp312-cp312-win32.whl", hash = "sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18", size = 172932, upload-time = "2025-09-08T23:22:57.188Z" }, - { url = "https://files.pythonhosted.org/packages/f8/ed/13bd4418627013bec4ed6e54283b1959cf6db888048c7cf4b4c3b5b36002/cffi-2.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5", size = 183557, upload-time = "2025-09-08T23:22:58.351Z" }, - { url = "https://files.pythonhosted.org/packages/95/31/9f7f93ad2f8eff1dbc1c3656d7ca5bfd8fb52c9d786b4dcf19b2d02217fa/cffi-2.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6", size = 177762, upload-time = "2025-09-08T23:22:59.668Z" }, - { url = "https://files.pythonhosted.org/packages/4b/8d/a0a47a0c9e413a658623d014e91e74a50cdd2c423f7ccfd44086ef767f90/cffi-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb", size = 185230, upload-time = "2025-09-08T23:23:00.879Z" }, - { url = "https://files.pythonhosted.org/packages/4a/d2/a6c0296814556c68ee32009d9c2ad4f85f2707cdecfd7727951ec228005d/cffi-2.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca", size = 181043, upload-time = "2025-09-08T23:23:02.231Z" }, - { url = "https://files.pythonhosted.org/packages/b0/1e/d22cc63332bd59b06481ceaac49d6c507598642e2230f201649058a7e704/cffi-2.0.0-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b", size = 212446, upload-time = "2025-09-08T23:23:03.472Z" }, - { url = "https://files.pythonhosted.org/packages/a9/f5/a2c23eb03b61a0b8747f211eb716446c826ad66818ddc7810cc2cc19b3f2/cffi-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b", size = 220101, upload-time = "2025-09-08T23:23:04.792Z" }, - { url = "https://files.pythonhosted.org/packages/f2/7f/e6647792fc5850d634695bc0e6ab4111ae88e89981d35ac269956605feba/cffi-2.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2", size = 207948, upload-time = "2025-09-08T23:23:06.127Z" }, - { url = "https://files.pythonhosted.org/packages/cb/1e/a5a1bd6f1fb30f22573f76533de12a00bf274abcdc55c8edab639078abb6/cffi-2.0.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3", size = 206422, upload-time = "2025-09-08T23:23:07.753Z" }, - { url = "https://files.pythonhosted.org/packages/98/df/0a1755e750013a2081e863e7cd37e0cdd02664372c754e5560099eb7aa44/cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26", size = 219499, upload-time = "2025-09-08T23:23:09.648Z" }, - { url = "https://files.pythonhosted.org/packages/50/e1/a969e687fcf9ea58e6e2a928ad5e2dd88cc12f6f0ab477e9971f2309b57c/cffi-2.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c", size = 222928, upload-time = "2025-09-08T23:23:10.928Z" }, - { url = "https://files.pythonhosted.org/packages/36/54/0362578dd2c9e557a28ac77698ed67323ed5b9775ca9d3fe73fe191bb5d8/cffi-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b", size = 221302, upload-time = "2025-09-08T23:23:12.42Z" }, - { url = "https://files.pythonhosted.org/packages/eb/6d/bf9bda840d5f1dfdbf0feca87fbdb64a918a69bca42cfa0ba7b137c48cb8/cffi-2.0.0-cp313-cp313-win32.whl", hash = "sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27", size = 172909, upload-time = "2025-09-08T23:23:14.32Z" }, - { url = "https://files.pythonhosted.org/packages/37/18/6519e1ee6f5a1e579e04b9ddb6f1676c17368a7aba48299c3759bbc3c8b3/cffi-2.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75", size = 183402, upload-time = "2025-09-08T23:23:15.535Z" }, - { url = "https://files.pythonhosted.org/packages/cb/0e/02ceeec9a7d6ee63bb596121c2c8e9b3a9e150936f4fbef6ca1943e6137c/cffi-2.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91", size = 177780, upload-time = "2025-09-08T23:23:16.761Z" }, - { url = "https://files.pythonhosted.org/packages/92/c4/3ce07396253a83250ee98564f8d7e9789fab8e58858f35d07a9a2c78de9f/cffi-2.0.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5", size = 185320, upload-time = "2025-09-08T23:23:18.087Z" }, - { url = "https://files.pythonhosted.org/packages/59/dd/27e9fa567a23931c838c6b02d0764611c62290062a6d4e8ff7863daf9730/cffi-2.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13", size = 181487, upload-time = "2025-09-08T23:23:19.622Z" }, - { url = "https://files.pythonhosted.org/packages/d6/43/0e822876f87ea8a4ef95442c3d766a06a51fc5298823f884ef87aaad168c/cffi-2.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b", size = 220049, upload-time = "2025-09-08T23:23:20.853Z" }, - { url = "https://files.pythonhosted.org/packages/b4/89/76799151d9c2d2d1ead63c2429da9ea9d7aac304603de0c6e8764e6e8e70/cffi-2.0.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c", size = 207793, upload-time = "2025-09-08T23:23:22.08Z" }, - { url = "https://files.pythonhosted.org/packages/bb/dd/3465b14bb9e24ee24cb88c9e3730f6de63111fffe513492bf8c808a3547e/cffi-2.0.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef", size = 206300, upload-time = "2025-09-08T23:23:23.314Z" }, - { url = "https://files.pythonhosted.org/packages/47/d9/d83e293854571c877a92da46fdec39158f8d7e68da75bf73581225d28e90/cffi-2.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775", size = 219244, upload-time = "2025-09-08T23:23:24.541Z" }, - { url = "https://files.pythonhosted.org/packages/2b/0f/1f177e3683aead2bb00f7679a16451d302c436b5cbf2505f0ea8146ef59e/cffi-2.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205", size = 222828, upload-time = "2025-09-08T23:23:26.143Z" }, - { url = "https://files.pythonhosted.org/packages/c6/0f/cafacebd4b040e3119dcb32fed8bdef8dfe94da653155f9d0b9dc660166e/cffi-2.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1", size = 220926, upload-time = "2025-09-08T23:23:27.873Z" }, - { url = "https://files.pythonhosted.org/packages/3e/aa/df335faa45b395396fcbc03de2dfcab242cd61a9900e914fe682a59170b1/cffi-2.0.0-cp314-cp314-win32.whl", hash = "sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f", size = 175328, upload-time = "2025-09-08T23:23:44.61Z" }, - { url = "https://files.pythonhosted.org/packages/bb/92/882c2d30831744296ce713f0feb4c1cd30f346ef747b530b5318715cc367/cffi-2.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25", size = 185650, upload-time = "2025-09-08T23:23:45.848Z" }, - { url = "https://files.pythonhosted.org/packages/9f/2c/98ece204b9d35a7366b5b2c6539c350313ca13932143e79dc133ba757104/cffi-2.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad", size = 180687, upload-time = "2025-09-08T23:23:47.105Z" }, - { url = "https://files.pythonhosted.org/packages/3e/61/c768e4d548bfa607abcda77423448df8c471f25dbe64fb2ef6d555eae006/cffi-2.0.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9", size = 188773, upload-time = "2025-09-08T23:23:29.347Z" }, - { url = "https://files.pythonhosted.org/packages/2c/ea/5f76bce7cf6fcd0ab1a1058b5af899bfbef198bea4d5686da88471ea0336/cffi-2.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d", size = 185013, upload-time = "2025-09-08T23:23:30.63Z" }, - { url = "https://files.pythonhosted.org/packages/be/b4/c56878d0d1755cf9caa54ba71e5d049479c52f9e4afc230f06822162ab2f/cffi-2.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c", size = 221593, upload-time = "2025-09-08T23:23:31.91Z" }, - { url = "https://files.pythonhosted.org/packages/e0/0d/eb704606dfe8033e7128df5e90fee946bbcb64a04fcdaa97321309004000/cffi-2.0.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8", size = 209354, upload-time = "2025-09-08T23:23:33.214Z" }, - { url = "https://files.pythonhosted.org/packages/d8/19/3c435d727b368ca475fb8742ab97c9cb13a0de600ce86f62eab7fa3eea60/cffi-2.0.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc", size = 208480, upload-time = "2025-09-08T23:23:34.495Z" }, - { url = "https://files.pythonhosted.org/packages/d0/44/681604464ed9541673e486521497406fadcc15b5217c3e326b061696899a/cffi-2.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592", size = 221584, upload-time = "2025-09-08T23:23:36.096Z" }, - { url = "https://files.pythonhosted.org/packages/25/8e/342a504ff018a2825d395d44d63a767dd8ebc927ebda557fecdaca3ac33a/cffi-2.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512", size = 224443, upload-time = "2025-09-08T23:23:37.328Z" }, - { url = "https://files.pythonhosted.org/packages/e1/5e/b666bacbbc60fbf415ba9988324a132c9a7a0448a9a8f125074671c0f2c3/cffi-2.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4", size = 223437, upload-time = "2025-09-08T23:23:38.945Z" }, - { url = "https://files.pythonhosted.org/packages/a0/1d/ec1a60bd1a10daa292d3cd6bb0b359a81607154fb8165f3ec95fe003b85c/cffi-2.0.0-cp314-cp314t-win32.whl", hash = "sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e", size = 180487, upload-time = "2025-09-08T23:23:40.423Z" }, - { url = "https://files.pythonhosted.org/packages/bf/41/4c1168c74fac325c0c8156f04b6749c8b6a8f405bbf91413ba088359f60d/cffi-2.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6", size = 191726, upload-time = "2025-09-08T23:23:41.742Z" }, - { url = "https://files.pythonhosted.org/packages/ae/3a/dbeec9d1ee0844c679f6bb5d6ad4e9f198b1224f4e7a32825f47f6192b0c/cffi-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9", size = 184195, upload-time = "2025-09-08T23:23:43.004Z" }, -] - -[[package]] -name = "charset-normalizer" -version = "3.4.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/83/2d/5fd176ceb9b2fc619e63405525573493ca23441330fcdaee6bef9460e924/charset_normalizer-3.4.3.tar.gz", hash = "sha256:6fce4b8500244f6fcb71465d4a4930d132ba9ab8e71a7859e6a5d59851068d14", size = 122371, upload-time = "2025-08-09T07:57:28.46Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e9/5e/14c94999e418d9b87682734589404a25854d5f5d0408df68bc15b6ff54bb/charset_normalizer-3.4.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e28e334d3ff134e88989d90ba04b47d84382a828c061d0d1027b1b12a62b39b1", size = 205655, upload-time = "2025-08-09T07:56:08.475Z" }, - { url = "https://files.pythonhosted.org/packages/7d/a8/c6ec5d389672521f644505a257f50544c074cf5fc292d5390331cd6fc9c3/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0cacf8f7297b0c4fcb74227692ca46b4a5852f8f4f24b3c766dd94a1075c4884", size = 146223, upload-time = "2025-08-09T07:56:09.708Z" }, - { url = "https://files.pythonhosted.org/packages/fc/eb/a2ffb08547f4e1e5415fb69eb7db25932c52a52bed371429648db4d84fb1/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c6fd51128a41297f5409deab284fecbe5305ebd7e5a1f959bee1c054622b7018", size = 159366, upload-time = "2025-08-09T07:56:11.326Z" }, - { url = "https://files.pythonhosted.org/packages/82/10/0fd19f20c624b278dddaf83b8464dcddc2456cb4b02bb902a6da126b87a1/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3cfb2aad70f2c6debfbcb717f23b7eb55febc0bb23dcffc0f076009da10c6392", size = 157104, upload-time = "2025-08-09T07:56:13.014Z" }, - { url = "https://files.pythonhosted.org/packages/16/ab/0233c3231af734f5dfcf0844aa9582d5a1466c985bbed6cedab85af9bfe3/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1606f4a55c0fd363d754049cdf400175ee96c992b1f8018b993941f221221c5f", size = 151830, upload-time = "2025-08-09T07:56:14.428Z" }, - { url = "https://files.pythonhosted.org/packages/ae/02/e29e22b4e02839a0e4a06557b1999d0a47db3567e82989b5bb21f3fbbd9f/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:027b776c26d38b7f15b26a5da1044f376455fb3766df8fc38563b4efbc515154", size = 148854, upload-time = "2025-08-09T07:56:16.051Z" }, - { url = "https://files.pythonhosted.org/packages/05/6b/e2539a0a4be302b481e8cafb5af8792da8093b486885a1ae4d15d452bcec/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:42e5088973e56e31e4fa58eb6bd709e42fc03799c11c42929592889a2e54c491", size = 160670, upload-time = "2025-08-09T07:56:17.314Z" }, - { url = "https://files.pythonhosted.org/packages/31/e7/883ee5676a2ef217a40ce0bffcc3d0dfbf9e64cbcfbdf822c52981c3304b/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:cc34f233c9e71701040d772aa7490318673aa7164a0efe3172b2981218c26d93", size = 158501, upload-time = "2025-08-09T07:56:18.641Z" }, - { url = "https://files.pythonhosted.org/packages/c1/35/6525b21aa0db614cf8b5792d232021dca3df7f90a1944db934efa5d20bb1/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:320e8e66157cc4e247d9ddca8e21f427efc7a04bbd0ac8a9faf56583fa543f9f", size = 153173, upload-time = "2025-08-09T07:56:20.289Z" }, - { url = "https://files.pythonhosted.org/packages/50/ee/f4704bad8201de513fdc8aac1cabc87e38c5818c93857140e06e772b5892/charset_normalizer-3.4.3-cp312-cp312-win32.whl", hash = "sha256:fb6fecfd65564f208cbf0fba07f107fb661bcd1a7c389edbced3f7a493f70e37", size = 99822, upload-time = "2025-08-09T07:56:21.551Z" }, - { url = "https://files.pythonhosted.org/packages/39/f5/3b3836ca6064d0992c58c7561c6b6eee1b3892e9665d650c803bd5614522/charset_normalizer-3.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:86df271bf921c2ee3818f0522e9a5b8092ca2ad8b065ece5d7d9d0e9f4849bcc", size = 107543, upload-time = "2025-08-09T07:56:23.115Z" }, - { url = "https://files.pythonhosted.org/packages/65/ca/2135ac97709b400c7654b4b764daf5c5567c2da45a30cdd20f9eefe2d658/charset_normalizer-3.4.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:14c2a87c65b351109f6abfc424cab3927b3bdece6f706e4d12faaf3d52ee5efe", size = 205326, upload-time = "2025-08-09T07:56:24.721Z" }, - { url = "https://files.pythonhosted.org/packages/71/11/98a04c3c97dd34e49c7d247083af03645ca3730809a5509443f3c37f7c99/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41d1fc408ff5fdfb910200ec0e74abc40387bccb3252f3f27c0676731df2b2c8", size = 146008, upload-time = "2025-08-09T07:56:26.004Z" }, - { url = "https://files.pythonhosted.org/packages/60/f5/4659a4cb3c4ec146bec80c32d8bb16033752574c20b1252ee842a95d1a1e/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1bb60174149316da1c35fa5233681f7c0f9f514509b8e399ab70fea5f17e45c9", size = 159196, upload-time = "2025-08-09T07:56:27.25Z" }, - { url = "https://files.pythonhosted.org/packages/86/9e/f552f7a00611f168b9a5865a1414179b2c6de8235a4fa40189f6f79a1753/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:30d006f98569de3459c2fc1f2acde170b7b2bd265dc1943e87e1a4efe1b67c31", size = 156819, upload-time = "2025-08-09T07:56:28.515Z" }, - { url = "https://files.pythonhosted.org/packages/7e/95/42aa2156235cbc8fa61208aded06ef46111c4d3f0de233107b3f38631803/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:416175faf02e4b0810f1f38bcb54682878a4af94059a1cd63b8747244420801f", size = 151350, upload-time = "2025-08-09T07:56:29.716Z" }, - { url = "https://files.pythonhosted.org/packages/c2/a9/3865b02c56f300a6f94fc631ef54f0a8a29da74fb45a773dfd3dcd380af7/charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6aab0f181c486f973bc7262a97f5aca3ee7e1437011ef0c2ec04b5a11d16c927", size = 148644, upload-time = "2025-08-09T07:56:30.984Z" }, - { url = "https://files.pythonhosted.org/packages/77/d9/cbcf1a2a5c7d7856f11e7ac2d782aec12bdfea60d104e60e0aa1c97849dc/charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabf8315679312cfa71302f9bd509ded4f2f263fb5b765cf1433b39106c3cc9", size = 160468, upload-time = "2025-08-09T07:56:32.252Z" }, - { url = "https://files.pythonhosted.org/packages/f6/42/6f45efee8697b89fda4d50580f292b8f7f9306cb2971d4b53f8914e4d890/charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:bd28b817ea8c70215401f657edef3a8aa83c29d447fb0b622c35403780ba11d5", size = 158187, upload-time = "2025-08-09T07:56:33.481Z" }, - { url = "https://files.pythonhosted.org/packages/70/99/f1c3bdcfaa9c45b3ce96f70b14f070411366fa19549c1d4832c935d8e2c3/charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:18343b2d246dc6761a249ba1fb13f9ee9a2bcd95decc767319506056ea4ad4dc", size = 152699, upload-time = "2025-08-09T07:56:34.739Z" }, - { url = "https://files.pythonhosted.org/packages/a3/ad/b0081f2f99a4b194bcbb1934ef3b12aa4d9702ced80a37026b7607c72e58/charset_normalizer-3.4.3-cp313-cp313-win32.whl", hash = "sha256:6fb70de56f1859a3f71261cbe41005f56a7842cc348d3aeb26237560bfa5e0ce", size = 99580, upload-time = "2025-08-09T07:56:35.981Z" }, - { url = "https://files.pythonhosted.org/packages/9a/8f/ae790790c7b64f925e5c953b924aaa42a243fb778fed9e41f147b2a5715a/charset_normalizer-3.4.3-cp313-cp313-win_amd64.whl", hash = "sha256:cf1ebb7d78e1ad8ec2a8c4732c7be2e736f6e5123a4146c5b89c9d1f585f8cef", size = 107366, upload-time = "2025-08-09T07:56:37.339Z" }, - { url = "https://files.pythonhosted.org/packages/8e/91/b5a06ad970ddc7a0e513112d40113e834638f4ca1120eb727a249fb2715e/charset_normalizer-3.4.3-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:3cd35b7e8aedeb9e34c41385fda4f73ba609e561faedfae0a9e75e44ac558a15", size = 204342, upload-time = "2025-08-09T07:56:38.687Z" }, - { url = "https://files.pythonhosted.org/packages/ce/ec/1edc30a377f0a02689342f214455c3f6c2fbedd896a1d2f856c002fc3062/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b89bc04de1d83006373429975f8ef9e7932534b8cc9ca582e4db7d20d91816db", size = 145995, upload-time = "2025-08-09T07:56:40.048Z" }, - { url = "https://files.pythonhosted.org/packages/17/e5/5e67ab85e6d22b04641acb5399c8684f4d37caf7558a53859f0283a650e9/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2001a39612b241dae17b4687898843f254f8748b796a2e16f1051a17078d991d", size = 158640, upload-time = "2025-08-09T07:56:41.311Z" }, - { url = "https://files.pythonhosted.org/packages/f1/e5/38421987f6c697ee3722981289d554957c4be652f963d71c5e46a262e135/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8dcfc373f888e4fb39a7bc57e93e3b845e7f462dacc008d9749568b1c4ece096", size = 156636, upload-time = "2025-08-09T07:56:43.195Z" }, - { url = "https://files.pythonhosted.org/packages/a0/e4/5a075de8daa3ec0745a9a3b54467e0c2967daaaf2cec04c845f73493e9a1/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:18b97b8404387b96cdbd30ad660f6407799126d26a39ca65729162fd810a99aa", size = 150939, upload-time = "2025-08-09T07:56:44.819Z" }, - { url = "https://files.pythonhosted.org/packages/02/f7/3611b32318b30974131db62b4043f335861d4d9b49adc6d57c1149cc49d4/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ccf600859c183d70eb47e05a44cd80a4ce77394d1ac0f79dbd2dd90a69a3a049", size = 148580, upload-time = "2025-08-09T07:56:46.684Z" }, - { url = "https://files.pythonhosted.org/packages/7e/61/19b36f4bd67f2793ab6a99b979b4e4f3d8fc754cbdffb805335df4337126/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:53cd68b185d98dde4ad8990e56a58dea83a4162161b1ea9272e5c9182ce415e0", size = 159870, upload-time = "2025-08-09T07:56:47.941Z" }, - { url = "https://files.pythonhosted.org/packages/06/57/84722eefdd338c04cf3030ada66889298eaedf3e7a30a624201e0cbe424a/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:30a96e1e1f865f78b030d65241c1ee850cdf422d869e9028e2fc1d5e4db73b92", size = 157797, upload-time = "2025-08-09T07:56:49.756Z" }, - { url = "https://files.pythonhosted.org/packages/72/2a/aff5dd112b2f14bcc3462c312dce5445806bfc8ab3a7328555da95330e4b/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d716a916938e03231e86e43782ca7878fb602a125a91e7acb8b5112e2e96ac16", size = 152224, upload-time = "2025-08-09T07:56:51.369Z" }, - { url = "https://files.pythonhosted.org/packages/b7/8c/9839225320046ed279c6e839d51f028342eb77c91c89b8ef2549f951f3ec/charset_normalizer-3.4.3-cp314-cp314-win32.whl", hash = "sha256:c6dbd0ccdda3a2ba7c2ecd9d77b37f3b5831687d8dc1b6ca5f56a4880cc7b7ce", size = 100086, upload-time = "2025-08-09T07:56:52.722Z" }, - { url = "https://files.pythonhosted.org/packages/ee/7a/36fbcf646e41f710ce0a563c1c9a343c6edf9be80786edeb15b6f62e17db/charset_normalizer-3.4.3-cp314-cp314-win_amd64.whl", hash = "sha256:73dc19b562516fc9bcf6e5d6e596df0b4eb98d87e4f79f3ae71840e6ed21361c", size = 107400, upload-time = "2025-08-09T07:56:55.172Z" }, - { url = "https://files.pythonhosted.org/packages/8a/1f/f041989e93b001bc4e44bb1669ccdcf54d3f00e628229a85b08d330615c5/charset_normalizer-3.4.3-py3-none-any.whl", hash = "sha256:ce571ab16d890d23b5c278547ba694193a45011ff86a9162a71307ed9f86759a", size = 53175, upload-time = "2025-08-09T07:57:26.864Z" }, -] - -[[package]] -name = "click" -version = "8.3.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/46/61/de6cd827efad202d7057d93e0fed9294b96952e188f7384832791c7b2254/click-8.3.0.tar.gz", hash = "sha256:e7b8232224eba16f4ebe410c25ced9f7875cb5f3263ffc93cc3e8da705e229c4", size = 276943, upload-time = "2025-09-18T17:32:23.696Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/db/d3/9dcc0f5797f070ec8edf30fbadfb200e71d9db6b84d211e3b2085a7589a0/click-8.3.0-py3-none-any.whl", hash = "sha256:9b9f285302c6e3064f4330c05f05b81945b2a39544279343e6e7c5f27a9baddc", size = 107295, upload-time = "2025-09-18T17:32:22.42Z" }, -] - -[[package]] -name = "colorama" -version = "0.4.6" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, -] - -[[package]] -name = "cryptography" -version = "50.0.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/de/41/6cbdcf9142d00fe82836fbb51e503e58088575cf7a0fe1dbff6695bf0840/cryptography-50.0.0.tar.gz", hash = "sha256:eeac2acb5a20ed25e0ad6d1df9891a520b78b404266b6d11778f25d5d691a6c9", size = 880201, upload-time = "2026-07-31T14:25:10.11Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c5/5c/59086b4aac5e879d38ddbcf74e4be7ade89cebc3eb199a55da998c3bb46a/cryptography-50.0.0-cp311-abi3-macosx_11_0_arm64.whl", hash = "sha256:031e2d5dd4bb9caa3ca9c82e5a197fd8ae680232cee62603d1a813f3f07e3d03", size = 4001252, upload-time = "2026-07-31T14:23:33.331Z" }, - { url = "https://files.pythonhosted.org/packages/57/ef/8f2df13c7216bcad3e1c74e07f6e193d93e998e114f524a53877c9af27ad/cryptography-50.0.0-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fd9192b7b70c573d7f214eb1ae35e00d359f6f5e4b27c7e21e30de1fc6204645", size = 4719554, upload-time = "2026-07-31T14:23:35.611Z" }, - { url = "https://files.pythonhosted.org/packages/d9/41/029086c34d91052fc3b88bcc8056f709a7c915c7a23b235a54eb800b1c97/cryptography-50.0.0-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:06a32a980526a6ab9a4b9bf8f7385800791e2bb960903cb6b530e4817509a3b7", size = 4702130, upload-time = "2026-07-31T14:23:37.635Z" }, - { url = "https://files.pythonhosted.org/packages/7d/ff/b6ce0954962e7f7b969f850a883744197bb3910bdfd7b6da162eab7d9f68/cryptography-50.0.0-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:a1b30560f2acc95aa8b2e06e716a13dbfc97314747b80d9707e307f77b40d6b3", size = 4725244, upload-time = "2026-07-31T14:23:39.471Z" }, - { url = "https://files.pythonhosted.org/packages/06/1e/63a1027cb7fec360a182208e1b7767d5aa1fe57be3d6aa856e69a321edc0/cryptography-50.0.0-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:8d89f3976b10b4ce31118de72329025f70d2c6ead14a8217c5514dd2c6d5a78f", size = 5342265, upload-time = "2026-07-31T14:23:41.286Z" }, - { url = "https://files.pythonhosted.org/packages/6b/72/a1116d683a6d7ece94590013882515de087edf9ef0e6292aae615a44df73/cryptography-50.0.0-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:b42a28c1844fd9de8f3f7d540e36b66f3a9c83fceac7170ebc7a6a19edd9dcae", size = 4734609, upload-time = "2026-07-31T14:23:43.139Z" }, - { url = "https://files.pythonhosted.org/packages/15/37/36a9c479bbe49acea2636c7fd3360d20f7b7e079c300352011c44850b181/cryptography-50.0.0-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:900131fafd8aead39ac7dd3a7e833be754c17a95cfd91221636949fe4eb0aa8a", size = 4356517, upload-time = "2026-07-31T14:23:44.939Z" }, - { url = "https://files.pythonhosted.org/packages/32/98/8a151d64367204cbc63ec65d37502f1d9c53cf4bfc6ec3c532614dbec60d/cryptography-50.0.0-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:07949c449a1abcf60d1ee6e88956d89404c7df3c8258f46589e912988e551987", size = 4724529, upload-time = "2026-07-31T14:23:46.93Z" }, - { url = "https://files.pythonhosted.org/packages/22/f6/ec13b470172126464a86bf54d2294a46d29837fc51ba3e45d4047946fb5e/cryptography-50.0.0-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:f89831ef99dd7dd169ab06d63a831adb9e20a87aac6d380266bbda5823349169", size = 5299852, upload-time = "2026-07-31T14:23:48.851Z" }, - { url = "https://files.pythonhosted.org/packages/da/3a/f05e32c99d440c9bb891ea0e36c9091891e36be5a9a87ab2ee6ea20729f6/cryptography-50.0.0-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:82148ec5bddac30b51a5b3c1945075f896fa022cb93f8e4a01e9f6ee95292c5f", size = 4734462, upload-time = "2026-07-31T14:23:50.861Z" }, - { url = "https://files.pythonhosted.org/packages/ca/dc/bd72b26be8953f80625f63151efd38eee71c76ca6cf591c08ff34615a79e/cryptography-50.0.0-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:1489e263a8048bb8b6a8bac662eb2d402ea5d2b7b4699b72f385f1e2772db105", size = 4852708, upload-time = "2026-07-31T14:23:52.715Z" }, - { url = "https://files.pythonhosted.org/packages/27/20/c930314a2ab476d15dec966ec87e2e9637bb02b06106b12c0396c57bb603/cryptography-50.0.0-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:7cec5b856506da6defb290f30c9ee687d5f5e8cb0bd3f6459dde43b0b4fa40ef", size = 5004179, upload-time = "2026-07-31T14:23:54.887Z" }, - { url = "https://files.pythonhosted.org/packages/32/2e/c9db68a0c4bfa28e310707527c0ee3a2bd254104d2e02e68f368e197aa4c/cryptography-50.0.0-cp311-abi3-win_amd64.whl", hash = "sha256:bd1c592e4d5974f0d08d4888e432157adba757c66da0246918e43677fafa2d30", size = 3840395, upload-time = "2026-07-31T14:23:56.677Z" }, - { url = "https://files.pythonhosted.org/packages/c3/fb/951032a3bf22a5697c83183fb6294a4843772947a70e616c57b3ff5f522e/cryptography-50.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:49e7d93abdbd2990caced757e5fade25302f719c3c8fb6e6fff2dde98999fc41", size = 3989258, upload-time = "2026-07-31T14:23:58.881Z" }, - { url = "https://files.pythonhosted.org/packages/d4/67/91eb047e69c5e845f2f14b8a2e4a1aab0f283cb885531e9e22c8adb176bc/cryptography-50.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:19736989797678c6af1e55cd49055cdbcb55d8f6b5583ac5335f933aba9101dc", size = 4700648, upload-time = "2026-07-31T14:24:00.702Z" }, - { url = "https://files.pythonhosted.org/packages/30/82/85f0f7425c856b9f96459411eb12e74ef72df9caf6f8f15bf23a33ff131f/cryptography-50.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:80b63928fa35083b33966ce1efb70e5b9607181e49dcd1c22c8c005e319f667f", size = 4682442, upload-time = "2026-07-31T14:24:02.538Z" }, - { url = "https://files.pythonhosted.org/packages/1a/28/b555a365adff1cca2fbe7b9e487d68a40de6bc67ff2cb587473eb43de0e7/cryptography-50.0.0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:d58c3db7cd6eed54e6c06744db55456b65ebd7492ddeae9c1e93cfca7aa857d3", size = 4707596, upload-time = "2026-07-31T14:24:04.394Z" }, - { url = "https://files.pythonhosted.org/packages/72/d8/f52538140cc719df62a01cf87d1c7142318d235817109d6f4054d7c352d6/cryptography-50.0.0-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:df2a58a472f332225671c35b0a830208b86d004f82baa8530fa3782c85646533", size = 5314552, upload-time = "2026-07-31T14:24:06.31Z" }, - { url = "https://files.pythonhosted.org/packages/38/14/6120e5bd7c5aa022ad15424ba4d5c5269d0d9448ed4d55e492ea91e3c1c4/cryptography-50.0.0-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:11b74db56cdbe3cdee6e3f6982ecb70334fa10dce99ed58bf7894aaaa3b2a037", size = 4717113, upload-time = "2026-07-31T14:24:08.349Z" }, - { url = "https://files.pythonhosted.org/packages/fa/71/190bf38c3ee2e0f8efc9860ae100c9df4169742eef274b91e7aa1cb133b9/cryptography-50.0.0-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:f59e38625469987d7ef6d495323c55e7db6c212eaf6112267e0d3b565a2e9c9f", size = 4338580, upload-time = "2026-07-31T14:24:10.227Z" }, - { url = "https://files.pythonhosted.org/packages/3a/63/504ccfbbe61fd8aa983f7f146399cdf034c72c2fc55f5b2dfdcdcdb20c99/cryptography-50.0.0-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:ecfed7367f965a0328cfbdd70da860f15441f002f613185668c6e6ebf5a0ac11", size = 4707038, upload-time = "2026-07-31T14:24:12.169Z" }, - { url = "https://files.pythonhosted.org/packages/01/77/2cf79bbfc4d12ca106437a6e170d6aaa01a373e93093118aaaef0e801bd4/cryptography-50.0.0-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:9aa87839c383bdbab6ef865787a1fb877af8dd03464c4400322726feaaadfc6d", size = 5273110, upload-time = "2026-07-31T14:24:14.38Z" }, - { url = "https://files.pythonhosted.org/packages/e5/45/8aae2972c520145377ea3559a605a899bebe227bf070b33cdb445929a9b9/cryptography-50.0.0-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:6ba6a53445bd3cfa809ef3ef5f1589aa6ba08784a1d962bf47d0940e871dab1c", size = 4716439, upload-time = "2026-07-31T14:24:16.415Z" }, - { url = "https://files.pythonhosted.org/packages/7b/20/4fe50b619a48c2525cc46e2dbc1ac490708d704be5d467bdaac6dc955682/cryptography-50.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:3f5735ffe4996d28b809371756219f5354864902a3b9e7c0b9ee87041209fc9c", size = 4837383, upload-time = "2026-07-31T14:24:18.553Z" }, - { url = "https://files.pythonhosted.org/packages/92/91/3a31366e183343d3703f8995c095f5734676bd6938118047e50fcf279eb4/cryptography-50.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:1b4a266766514614f8aa60416e71f2fc6e575d36e7bdc90f644fadb2f4b75b95", size = 4985772, upload-time = "2026-07-31T14:24:20.385Z" }, - { url = "https://files.pythonhosted.org/packages/74/9a/02ffe35b2853d121689871eb5dce862092562b3a1ed5cc98f1aaed441506/cryptography-50.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:12b9c6996425c76ea6c457ace4f3073e715b8c545add07cd1a8f3a4f90691269", size = 3816291, upload-time = "2026-07-31T14:24:22.125Z" }, - { url = "https://files.pythonhosted.org/packages/03/37/73d005be173aff344af30e9fd2a576575cb2391a7101d9cd3842e1fa8cce/cryptography-50.0.0-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:ccdc4a71a4dabae05de219404f9f4abc38e3b58422177ff93d0da05967dafa07", size = 4036009, upload-time = "2026-07-31T14:24:24.122Z" }, - { url = "https://files.pythonhosted.org/packages/ff/c6/7a6202a534e32103a285b7834a120869557fe198d51d7cfe59754c8bda9c/cryptography-50.0.0-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:910e1d2668e7de9648f2bcee30e180db2a6b15c30f887d7c4c93ddf96e3992e3", size = 4745252, upload-time = "2026-07-31T14:24:26.118Z" }, - { url = "https://files.pythonhosted.org/packages/85/4f/0fa8c2f4428198f15d9ff8d63400e27afbf94ce833f6108da1eb3753f945/cryptography-50.0.0-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a91296cb61e8df6f86d0c19cc4068228da256bf59bf86049fbd821084565327f", size = 4728939, upload-time = "2026-07-31T14:24:27.994Z" }, - { url = "https://files.pythonhosted.org/packages/d1/63/54dd723490ba2dc09b299682c10b38db38f159728bcaae8c591b8af2f22d/cryptography-50.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:e722f16708d854fe924790e051061f6704a472c3bac347b6fd88033ea8dd0dc5", size = 4748483, upload-time = "2026-07-31T14:24:30.254Z" }, - { url = "https://files.pythonhosted.org/packages/1d/dd/7c77d26285cc7f6991efce64a0f5b4f9383bfa5dd8c5033003eaf7db4cdb/cryptography-50.0.0-cp39-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:d764dcf130c428ef66786f866dd750f53182bc608813489915e9fc106bb0c82f", size = 5367599, upload-time = "2026-07-31T14:24:32.457Z" }, - { url = "https://files.pythonhosted.org/packages/46/c9/f60aed34c013f317f92817b6c171c2d22a78270fa41109bd4b08af26b194/cryptography-50.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:105110f43a471dbd0060b9c9516cb8a6a79233631a04cc2ba16f28323ac6e025", size = 4762647, upload-time = "2026-07-31T14:24:34.599Z" }, - { url = "https://files.pythonhosted.org/packages/be/f3/f9a0173b139372c3a48ed98154b45cc6b9de17c789d5ab552e621c293609/cryptography-50.0.0-cp39-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:828743d939e9629bc267b8e2d08d8bb67cd4319c771a33d4b18b22dd8fb7440a", size = 4385197, upload-time = "2026-07-31T14:24:36.647Z" }, - { url = "https://files.pythonhosted.org/packages/d8/36/83bb81f6e569bc38e1e4a7bc80f29b46bb9601920bc455fc8e888f5d5742/cryptography-50.0.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:2a8183b489dc1f7f80f135780fadc1108f14b31b8a40411c7a5b17425f65f28b", size = 4748095, upload-time = "2026-07-31T14:24:39.493Z" }, - { url = "https://files.pythonhosted.org/packages/6b/16/d3008eff98c764979865834c3d386d4fd041b5f52e7f34fc29ac1a5eb515/cryptography-50.0.0-cp39-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:6e7d61120573a7f2cd94cc095f9e81f6967c61ccdf194285aa143ecec8e0b708", size = 5325948, upload-time = "2026-07-31T14:24:41.556Z" }, - { url = "https://files.pythonhosted.org/packages/9c/f8/d97f9603efda3888187bfdb893f26c41be4735c10631d05d284ee6b047c4/cryptography-50.0.0-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:37fdb0d0111f1e2ff07139dfb79f1b49531f8e213c46f1163dd7642979b58c47", size = 4762400, upload-time = "2026-07-31T14:24:43.636Z" }, - { url = "https://files.pythonhosted.org/packages/64/a2/4615c8f7d81a00b1d6e6afe19f694e1543582349fb5f4076f6cb5dc36485/cryptography-50.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c87f62a3d3b9888ed0fdde100ec06aa61ca9cd44bad9057d1dff9a516b5f5bb9", size = 4878208, upload-time = "2026-07-31T14:24:45.522Z" }, - { url = "https://files.pythonhosted.org/packages/d2/1a/efcfb02f91407149a0dacffffab791f7e19bf6385f63b3666dc8b5e5c9c8/cryptography-50.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:65c2c3add92b45fd0709db8594536aea39c2a67af0e27ffcf049c498501140b7", size = 5037050, upload-time = "2026-07-31T14:24:47.697Z" }, - { url = "https://files.pythonhosted.org/packages/57/30/4a22984d4f1bdfb8c054f07a92bc176b97a3134cc1d6c4b3bffb1f3688b4/cryptography-50.0.0-cp39-abi3-win_amd64.whl", hash = "sha256:d24fead1d4d076e1bfb006dcec392074a3cd8d7b4fc8a595aa64073b2b7a96ba", size = 3874135, upload-time = "2026-07-31T14:24:50.085Z" }, -] - -[[package]] -name = "cyclopts" -version = "3.24.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "attrs" }, - { name = "docstring-parser", marker = "python_full_version < '4'" }, - { name = "rich" }, - { name = "rich-rst" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/30/ca/7782da3b03242d5f0a16c20371dff99d4bd1fedafe26bc48ff82e42be8c9/cyclopts-3.24.0.tar.gz", hash = "sha256:de6964a041dfb3c57bf043b41e68c43548227a17de1bad246e3a0bfc5c4b7417", size = 76131, upload-time = "2025-09-08T15:40:57.75Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f0/8b/2c95f0645c6f40211896375e6fa51f504b8ccb29c21f6ae661fe87ab044e/cyclopts-3.24.0-py3-none-any.whl", hash = "sha256:809d04cde9108617106091140c3964ee6fceb33cecdd537f7ffa360bde13ed71", size = 86154, upload-time = "2025-09-08T15:40:56.41Z" }, -] - -[[package]] -name = "dnspython" -version = "2.8.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8c/8b/57666417c0f90f08bcafa776861060426765fdb422eb10212086fb811d26/dnspython-2.8.0.tar.gz", hash = "sha256:181d3c6996452cb1189c4046c61599b84a5a86e099562ffde77d26984ff26d0f", size = 368251, upload-time = "2025-09-07T18:58:00.022Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ba/5a/18ad964b0086c6e62e2e7500f7edc89e3faa45033c71c1893d34eed2b2de/dnspython-2.8.0-py3-none-any.whl", hash = "sha256:01d9bbc4a2d76bf0db7c1f729812ded6d912bd318d3b1cf81d30c0f845dbf3af", size = 331094, upload-time = "2025-09-07T18:57:58.071Z" }, -] - -[[package]] -name = "docstring-parser" -version = "0.17.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b2/9d/c3b43da9515bd270df0f80548d9944e389870713cc1fe2b8fb35fe2bcefd/docstring_parser-0.17.0.tar.gz", hash = "sha256:583de4a309722b3315439bb31d64ba3eebada841f2e2cee23b99df001434c912", size = 27442, upload-time = "2025-07-21T07:35:01.868Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/55/e2/2537ebcff11c1ee1ff17d8d0b6f4db75873e3b0fb32c2d4a2ee31ecb310a/docstring_parser-0.17.0-py3-none-any.whl", hash = "sha256:cf2569abd23dce8099b300f9b4fa8191e9582dda731fd533daf54c4551658708", size = 36896, upload-time = "2025-07-21T07:35:00.684Z" }, -] - -[[package]] -name = "docutils" -version = "0.22.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/4a/c0/89fe6215b443b919cb98a5002e107cb5026854ed1ccb6b5833e0768419d1/docutils-0.22.2.tar.gz", hash = "sha256:9fdb771707c8784c8f2728b67cb2c691305933d68137ef95a75db5f4dfbc213d", size = 2289092, upload-time = "2025-09-20T17:55:47.994Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/66/dd/f95350e853a4468ec37478414fc04ae2d61dad7a947b3015c3dcc51a09b9/docutils-0.22.2-py3-none-any.whl", hash = "sha256:b0e98d679283fc3bb0ead8a5da7f501baa632654e7056e9c5846842213d674d8", size = 632667, upload-time = "2025-09-20T17:55:43.052Z" }, -] - -[[package]] -name = "email-validator" -version = "2.3.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "dnspython" }, - { name = "idna" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/f5/22/900cb125c76b7aaa450ce02fd727f452243f2e91a61af068b40adba60ea9/email_validator-2.3.0.tar.gz", hash = "sha256:9fc05c37f2f6cf439ff414f8fc46d917929974a82244c20eb10231ba60c54426", size = 51238, upload-time = "2025-08-26T13:09:06.831Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/de/15/545e2b6cf2e3be84bc1ed85613edd75b8aea69807a71c26f4ca6a9258e82/email_validator-2.3.0-py3-none-any.whl", hash = "sha256:80f13f623413e6b197ae73bb10bf4eb0908faf509ad8362c5edeb0be7fd450b4", size = 35604, upload-time = "2025-08-26T13:09:05.858Z" }, -] - -[[package]] -name = "exceptiongroup" -version = "1.3.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "typing-extensions", marker = "python_full_version < '3.13'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/0b/9f/a65090624ecf468cdca03533906e7c69ed7588582240cfe7cc9e770b50eb/exceptiongroup-1.3.0.tar.gz", hash = "sha256:b241f5885f560bc56a59ee63ca4c6a8bfa46ae4ad651af316d4e81817bb9fd88", size = 29749, upload-time = "2025-05-10T17:42:51.123Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/36/f4/c6e662dade71f56cd2f3735141b265c3c79293c109549c1e6933b0651ffc/exceptiongroup-1.3.0-py3-none-any.whl", hash = "sha256:4d111e6e0c13d0644cad6ddaa7ed0261a0b36971f6d23e7ec9b4b9097da78a10", size = 16674, upload-time = "2025-05-10T17:42:49.33Z" }, -] - -[[package]] -name = "fastmcp" -version = "2.11.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "authlib" }, - { name = "cyclopts" }, - { name = "exceptiongroup" }, - { name = "httpx" }, - { name = "mcp" }, - { name = "openapi-core" }, - { name = "openapi-pydantic" }, - { name = "pydantic", extra = ["email"] }, - { name = "pyperclip" }, - { name = "python-dotenv" }, - { name = "rich" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/c2/02/0701624e938fe4d1f13464de9bdc27be9aba2e4c4d41edab3ea496d31751/fastmcp-2.11.0.tar.gz", hash = "sha256:af0c52988607d8e9197df300e91880169e8fe24fd6ca177dca6a9eb6b245ce3c", size = 2663877, upload-time = "2025-08-01T21:30:11.629Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0c/9a/51108b68e77650a7289b5f1ceff8dc0929ab48a26d1d2015f22121a9d183/fastmcp-2.11.0-py3-none-any.whl", hash = "sha256:8709a04522e66fda407b469fbe4d3290651aa7b06097b91c097e9a973c9b9bb3", size = 256193, upload-time = "2025-08-01T21:30:09.905Z" }, -] - -[[package]] -name = "h11" -version = "0.16.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250, upload-time = "2025-04-24T03:35:25.427Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" }, -] - -[[package]] -name = "httpcore" -version = "1.0.9" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "certifi" }, - { name = "h11" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484, upload-time = "2025-04-24T22:06:22.219Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784, upload-time = "2025-04-24T22:06:20.566Z" }, -] - -[[package]] -name = "httpx" -version = "0.28.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "anyio" }, - { name = "certifi" }, - { name = "httpcore" }, - { name = "idna" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406, upload-time = "2024-12-06T15:37:23.222Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload-time = "2024-12-06T15:37:21.509Z" }, -] - -[[package]] -name = "httpx-sse" -version = "0.4.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/63/7a/280d644f906f077e4f4a6d327e9b6e5a936624395ad1bf6ee9165a9d9959/httpx_sse-0.4.2.tar.gz", hash = "sha256:5bb6a2771a51e6c7a5f5c645e40b8a5f57d8de708f46cb5f3868043c3c18124e", size = 16000, upload-time = "2025-10-07T08:10:05.219Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4f/e5/ec31165492ecc52426370b9005e0637d6da02f9579283298affcb1ab614d/httpx_sse-0.4.2-py3-none-any.whl", hash = "sha256:a9fa4afacb293fa50ef9bacb6cae8287ba5fd1f4b1c2d10a35bb981c41da31ab", size = 9018, upload-time = "2025-10-07T08:10:04.257Z" }, -] - -[[package]] -name = "idna" -version = "3.10" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490, upload-time = "2024-09-15T18:07:39.745Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442, upload-time = "2024-09-15T18:07:37.964Z" }, -] - -[[package]] -name = "isodate" -version = "0.7.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/54/4d/e940025e2ce31a8ce1202635910747e5a87cc3a6a6bb2d00973375014749/isodate-0.7.2.tar.gz", hash = "sha256:4cd1aa0f43ca76f4a6c6c0292a85f40b35ec2e43e315b59f06e6d32171a953e6", size = 29705, upload-time = "2024-10-08T23:04:11.5Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/15/aa/0aca39a37d3c7eb941ba736ede56d689e7be91cab5d9ca846bde3999eba6/isodate-0.7.2-py3-none-any.whl", hash = "sha256:28009937d8031054830160fce6d409ed342816b543597cece116d966c6d99e15", size = 22320, upload-time = "2024-10-08T23:04:09.501Z" }, -] - -[[package]] -name = "jsonschema" -version = "4.25.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "attrs" }, - { name = "jsonschema-specifications" }, - { name = "referencing" }, - { name = "rpds-py" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/74/69/f7185de793a29082a9f3c7728268ffb31cb5095131a9c139a74078e27336/jsonschema-4.25.1.tar.gz", hash = "sha256:e4a9655ce0da0c0b67a085847e00a3a51449e1157f4f75e9fb5aa545e122eb85", size = 357342, upload-time = "2025-08-18T17:03:50.038Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/bf/9c/8c95d856233c1f82500c2450b8c68576b4cf1c871db3afac5c34ff84e6fd/jsonschema-4.25.1-py3-none-any.whl", hash = "sha256:3fba0169e345c7175110351d456342c364814cfcf3b964ba4587f22915230a63", size = 90040, upload-time = "2025-08-18T17:03:48.373Z" }, -] - -[[package]] -name = "jsonschema-path" -version = "0.3.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pathable" }, - { name = "pyyaml" }, - { name = "referencing" }, - { name = "requests" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/6e/45/41ebc679c2a4fced6a722f624c18d658dee42612b83ea24c1caf7c0eb3a8/jsonschema_path-0.3.4.tar.gz", hash = "sha256:8365356039f16cc65fddffafda5f58766e34bebab7d6d105616ab52bc4297001", size = 11159, upload-time = "2025-01-24T14:33:16.547Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cb/58/3485da8cb93d2f393bce453adeef16896751f14ba3e2024bc21dc9597646/jsonschema_path-0.3.4-py3-none-any.whl", hash = "sha256:f502191fdc2b22050f9a81c9237be9d27145b9001c55842bece5e94e382e52f8", size = 14810, upload-time = "2025-01-24T14:33:14.652Z" }, -] - -[[package]] -name = "jsonschema-specifications" -version = "2025.9.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "referencing" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/19/74/a633ee74eb36c44aa6d1095e7cc5569bebf04342ee146178e2d36600708b/jsonschema_specifications-2025.9.1.tar.gz", hash = "sha256:b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d", size = 32855, upload-time = "2025-09-08T01:34:59.186Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl", hash = "sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe", size = 18437, upload-time = "2025-09-08T01:34:57.871Z" }, -] - -[[package]] -name = "lazy-object-proxy" -version = "1.12.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/08/a2/69df9c6ba6d316cfd81fe2381e464db3e6de5db45f8c43c6a23504abf8cb/lazy_object_proxy-1.12.0.tar.gz", hash = "sha256:1f5a462d92fd0cfb82f1fab28b51bfb209fabbe6aabf7f0d51472c0c124c0c61", size = 43681, upload-time = "2025-08-22T13:50:06.783Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0d/1b/b5f5bd6bda26f1e15cd3232b223892e4498e34ec70a7f4f11c401ac969f1/lazy_object_proxy-1.12.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8ee0d6027b760a11cc18281e702c0309dd92da458a74b4c15025d7fc490deede", size = 26746, upload-time = "2025-08-22T13:42:37.572Z" }, - { url = "https://files.pythonhosted.org/packages/55/64/314889b618075c2bfc19293ffa9153ce880ac6153aacfd0a52fcabf21a66/lazy_object_proxy-1.12.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:4ab2c584e3cc8be0dfca422e05ad30a9abe3555ce63e9ab7a559f62f8dbc6ff9", size = 71457, upload-time = "2025-08-22T13:42:38.743Z" }, - { url = "https://files.pythonhosted.org/packages/11/53/857fc2827fc1e13fbdfc0ba2629a7d2579645a06192d5461809540b78913/lazy_object_proxy-1.12.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:14e348185adbd03ec17d051e169ec45686dcd840a3779c9d4c10aabe2ca6e1c0", size = 71036, upload-time = "2025-08-22T13:42:40.184Z" }, - { url = "https://files.pythonhosted.org/packages/2b/24/e581ffed864cd33c1b445b5763d617448ebb880f48675fc9de0471a95cbc/lazy_object_proxy-1.12.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c4fcbe74fb85df8ba7825fa05eddca764138da752904b378f0ae5ab33a36c308", size = 69329, upload-time = "2025-08-22T13:42:41.311Z" }, - { url = "https://files.pythonhosted.org/packages/78/be/15f8f5a0b0b2e668e756a152257d26370132c97f2f1943329b08f057eff0/lazy_object_proxy-1.12.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:563d2ec8e4d4b68ee7848c5ab4d6057a6d703cb7963b342968bb8758dda33a23", size = 70690, upload-time = "2025-08-22T13:42:42.51Z" }, - { url = "https://files.pythonhosted.org/packages/5d/aa/f02be9bbfb270e13ee608c2b28b8771f20a5f64356c6d9317b20043c6129/lazy_object_proxy-1.12.0-cp312-cp312-win_amd64.whl", hash = "sha256:53c7fd99eb156bbb82cbc5d5188891d8fdd805ba6c1e3b92b90092da2a837073", size = 26563, upload-time = "2025-08-22T13:42:43.685Z" }, - { url = "https://files.pythonhosted.org/packages/f4/26/b74c791008841f8ad896c7f293415136c66cc27e7c7577de4ee68040c110/lazy_object_proxy-1.12.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:86fd61cb2ba249b9f436d789d1356deae69ad3231dc3c0f17293ac535162672e", size = 26745, upload-time = "2025-08-22T13:42:44.982Z" }, - { url = "https://files.pythonhosted.org/packages/9b/52/641870d309e5d1fb1ea7d462a818ca727e43bfa431d8c34b173eb090348c/lazy_object_proxy-1.12.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:81d1852fb30fab81696f93db1b1e55a5d1ff7940838191062f5f56987d5fcc3e", size = 71537, upload-time = "2025-08-22T13:42:46.141Z" }, - { url = "https://files.pythonhosted.org/packages/47/b6/919118e99d51c5e76e8bf5a27df406884921c0acf2c7b8a3b38d847ab3e9/lazy_object_proxy-1.12.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:be9045646d83f6c2664c1330904b245ae2371b5c57a3195e4028aedc9f999655", size = 71141, upload-time = "2025-08-22T13:42:47.375Z" }, - { url = "https://files.pythonhosted.org/packages/e5/47/1d20e626567b41de085cf4d4fb3661a56c159feaa73c825917b3b4d4f806/lazy_object_proxy-1.12.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:67f07ab742f1adfb3966c40f630baaa7902be4222a17941f3d85fd1dae5565ff", size = 69449, upload-time = "2025-08-22T13:42:48.49Z" }, - { url = "https://files.pythonhosted.org/packages/58/8d/25c20ff1a1a8426d9af2d0b6f29f6388005fc8cd10d6ee71f48bff86fdd0/lazy_object_proxy-1.12.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:75ba769017b944fcacbf6a80c18b2761a1795b03f8899acdad1f1c39db4409be", size = 70744, upload-time = "2025-08-22T13:42:49.608Z" }, - { url = "https://files.pythonhosted.org/packages/c0/67/8ec9abe15c4f8a4bcc6e65160a2c667240d025cbb6591b879bea55625263/lazy_object_proxy-1.12.0-cp313-cp313-win_amd64.whl", hash = "sha256:7b22c2bbfb155706b928ac4d74c1a63ac8552a55ba7fff4445155523ea4067e1", size = 26568, upload-time = "2025-08-22T13:42:57.719Z" }, - { url = "https://files.pythonhosted.org/packages/23/12/cd2235463f3469fd6c62d41d92b7f120e8134f76e52421413a0ad16d493e/lazy_object_proxy-1.12.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:4a79b909aa16bde8ae606f06e6bbc9d3219d2e57fb3e0076e17879072b742c65", size = 27391, upload-time = "2025-08-22T13:42:50.62Z" }, - { url = "https://files.pythonhosted.org/packages/60/9e/f1c53e39bbebad2e8609c67d0830cc275f694d0ea23d78e8f6db526c12d3/lazy_object_proxy-1.12.0-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:338ab2f132276203e404951205fe80c3fd59429b3a724e7b662b2eb539bb1be9", size = 80552, upload-time = "2025-08-22T13:42:51.731Z" }, - { url = "https://files.pythonhosted.org/packages/4c/b6/6c513693448dcb317d9d8c91d91f47addc09553613379e504435b4cc8b3e/lazy_object_proxy-1.12.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8c40b3c9faee2e32bfce0df4ae63f4e73529766893258eca78548bac801c8f66", size = 82857, upload-time = "2025-08-22T13:42:53.225Z" }, - { url = "https://files.pythonhosted.org/packages/12/1c/d9c4aaa4c75da11eb7c22c43d7c90a53b4fca0e27784a5ab207768debea7/lazy_object_proxy-1.12.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:717484c309df78cedf48396e420fa57fc8a2b1f06ea889df7248fdd156e58847", size = 80833, upload-time = "2025-08-22T13:42:54.391Z" }, - { url = "https://files.pythonhosted.org/packages/0b/ae/29117275aac7d7d78ae4f5a4787f36ff33262499d486ac0bf3e0b97889f6/lazy_object_proxy-1.12.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:a6b7ea5ea1ffe15059eb44bcbcb258f97bcb40e139b88152c40d07b1a1dfc9ac", size = 79516, upload-time = "2025-08-22T13:42:55.812Z" }, - { url = "https://files.pythonhosted.org/packages/19/40/b4e48b2c38c69392ae702ae7afa7b6551e0ca5d38263198b7c79de8b3bdf/lazy_object_proxy-1.12.0-cp313-cp313t-win_amd64.whl", hash = "sha256:08c465fb5cd23527512f9bd7b4c7ba6cec33e28aad36fbbe46bf7b858f9f3f7f", size = 27656, upload-time = "2025-08-22T13:42:56.793Z" }, - { url = "https://files.pythonhosted.org/packages/ef/3a/277857b51ae419a1574557c0b12e0d06bf327b758ba94cafc664cb1e2f66/lazy_object_proxy-1.12.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c9defba70ab943f1df98a656247966d7729da2fe9c2d5d85346464bf320820a3", size = 26582, upload-time = "2025-08-22T13:49:49.366Z" }, - { url = "https://files.pythonhosted.org/packages/1a/b6/c5e0fa43535bb9c87880e0ba037cdb1c50e01850b0831e80eb4f4762f270/lazy_object_proxy-1.12.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:6763941dbf97eea6b90f5b06eb4da9418cc088fce0e3883f5816090f9afcde4a", size = 71059, upload-time = "2025-08-22T13:49:50.488Z" }, - { url = "https://files.pythonhosted.org/packages/06/8a/7dcad19c685963c652624702f1a968ff10220b16bfcc442257038216bf55/lazy_object_proxy-1.12.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fdc70d81235fc586b9e3d1aeef7d1553259b62ecaae9db2167a5d2550dcc391a", size = 71034, upload-time = "2025-08-22T13:49:54.224Z" }, - { url = "https://files.pythonhosted.org/packages/12/ac/34cbfb433a10e28c7fd830f91c5a348462ba748413cbb950c7f259e67aa7/lazy_object_proxy-1.12.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:0a83c6f7a6b2bfc11ef3ed67f8cbe99f8ff500b05655d8e7df9aab993a6abc95", size = 69529, upload-time = "2025-08-22T13:49:55.29Z" }, - { url = "https://files.pythonhosted.org/packages/6f/6a/11ad7e349307c3ca4c0175db7a77d60ce42a41c60bcb11800aabd6a8acb8/lazy_object_proxy-1.12.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:256262384ebd2a77b023ad02fbcc9326282bcfd16484d5531154b02bc304f4c5", size = 70391, upload-time = "2025-08-22T13:49:56.35Z" }, - { url = "https://files.pythonhosted.org/packages/59/97/9b410ed8fbc6e79c1ee8b13f8777a80137d4bc189caf2c6202358e66192c/lazy_object_proxy-1.12.0-cp314-cp314-win_amd64.whl", hash = "sha256:7601ec171c7e8584f8ff3f4e440aa2eebf93e854f04639263875b8c2971f819f", size = 26988, upload-time = "2025-08-22T13:49:57.302Z" }, -] - -[[package]] -name = "markdown-it-py" -version = "4.0.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "mdurl" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/5b/f5/4ec618ed16cc4f8fb3b701563655a69816155e79e24a17b651541804721d/markdown_it_py-4.0.0.tar.gz", hash = "sha256:cb0a2b4aa34f932c007117b194e945bd74e0ec24133ceb5bac59009cda1cb9f3", size = 73070, upload-time = "2025-08-11T12:57:52.854Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/94/54/e7d793b573f298e1c9013b8c4dade17d481164aa517d1d7148619c2cedbf/markdown_it_py-4.0.0-py3-none-any.whl", hash = "sha256:87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147", size = 87321, upload-time = "2025-08-11T12:57:51.923Z" }, -] - -[[package]] -name = "markupsafe" -version = "3.0.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7e/99/7690b6d4034fffd95959cbe0c02de8deb3098cc577c67bb6a24fe5d7caa7/markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698", size = 80313, upload-time = "2025-09-27T18:37:40.426Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/72/147da192e38635ada20e0a2e1a51cf8823d2119ce8883f7053879c2199b5/markupsafe-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d53197da72cc091b024dd97249dfc7794d6a56530370992a5e1a08983ad9230e", size = 11615, upload-time = "2025-09-27T18:36:30.854Z" }, - { url = "https://files.pythonhosted.org/packages/9a/81/7e4e08678a1f98521201c3079f77db69fb552acd56067661f8c2f534a718/markupsafe-3.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1872df69a4de6aead3491198eaf13810b565bdbeec3ae2dc8780f14458ec73ce", size = 12020, upload-time = "2025-09-27T18:36:31.971Z" }, - { url = "https://files.pythonhosted.org/packages/1e/2c/799f4742efc39633a1b54a92eec4082e4f815314869865d876824c257c1e/markupsafe-3.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3a7e8ae81ae39e62a41ec302f972ba6ae23a5c5396c8e60113e9066ef893da0d", size = 24332, upload-time = "2025-09-27T18:36:32.813Z" }, - { url = "https://files.pythonhosted.org/packages/3c/2e/8d0c2ab90a8c1d9a24f0399058ab8519a3279d1bd4289511d74e909f060e/markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d6dd0be5b5b189d31db7cda48b91d7e0a9795f31430b7f271219ab30f1d3ac9d", size = 22947, upload-time = "2025-09-27T18:36:33.86Z" }, - { url = "https://files.pythonhosted.org/packages/2c/54/887f3092a85238093a0b2154bd629c89444f395618842e8b0c41783898ea/markupsafe-3.0.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:94c6f0bb423f739146aec64595853541634bde58b2135f27f61c1ffd1cd4d16a", size = 21962, upload-time = "2025-09-27T18:36:35.099Z" }, - { url = "https://files.pythonhosted.org/packages/c9/2f/336b8c7b6f4a4d95e91119dc8521402461b74a485558d8f238a68312f11c/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:be8813b57049a7dc738189df53d69395eba14fb99345e0a5994914a3864c8a4b", size = 23760, upload-time = "2025-09-27T18:36:36.001Z" }, - { url = "https://files.pythonhosted.org/packages/32/43/67935f2b7e4982ffb50a4d169b724d74b62a3964bc1a9a527f5ac4f1ee2b/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:83891d0e9fb81a825d9a6d61e3f07550ca70a076484292a70fde82c4b807286f", size = 21529, upload-time = "2025-09-27T18:36:36.906Z" }, - { url = "https://files.pythonhosted.org/packages/89/e0/4486f11e51bbba8b0c041098859e869e304d1c261e59244baa3d295d47b7/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:77f0643abe7495da77fb436f50f8dab76dbc6e5fd25d39589a0f1fe6548bfa2b", size = 23015, upload-time = "2025-09-27T18:36:37.868Z" }, - { url = "https://files.pythonhosted.org/packages/2f/e1/78ee7a023dac597a5825441ebd17170785a9dab23de95d2c7508ade94e0e/markupsafe-3.0.3-cp312-cp312-win32.whl", hash = "sha256:d88b440e37a16e651bda4c7c2b930eb586fd15ca7406cb39e211fcff3bf3017d", size = 14540, upload-time = "2025-09-27T18:36:38.761Z" }, - { url = "https://files.pythonhosted.org/packages/aa/5b/bec5aa9bbbb2c946ca2733ef9c4ca91c91b6a24580193e891b5f7dbe8e1e/markupsafe-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:26a5784ded40c9e318cfc2bdb30fe164bdb8665ded9cd64d500a34fb42067b1c", size = 15105, upload-time = "2025-09-27T18:36:39.701Z" }, - { url = "https://files.pythonhosted.org/packages/e5/f1/216fc1bbfd74011693a4fd837e7026152e89c4bcf3e77b6692fba9923123/markupsafe-3.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:35add3b638a5d900e807944a078b51922212fb3dedb01633a8defc4b01a3c85f", size = 13906, upload-time = "2025-09-27T18:36:40.689Z" }, - { url = "https://files.pythonhosted.org/packages/38/2f/907b9c7bbba283e68f20259574b13d005c121a0fa4c175f9bed27c4597ff/markupsafe-3.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e1cf1972137e83c5d4c136c43ced9ac51d0e124706ee1c8aa8532c1287fa8795", size = 11622, upload-time = "2025-09-27T18:36:41.777Z" }, - { url = "https://files.pythonhosted.org/packages/9c/d9/5f7756922cdd676869eca1c4e3c0cd0df60ed30199ffd775e319089cb3ed/markupsafe-3.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:116bb52f642a37c115f517494ea5feb03889e04df47eeff5b130b1808ce7c219", size = 12029, upload-time = "2025-09-27T18:36:43.257Z" }, - { url = "https://files.pythonhosted.org/packages/00/07/575a68c754943058c78f30db02ee03a64b3c638586fba6a6dd56830b30a3/markupsafe-3.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:133a43e73a802c5562be9bbcd03d090aa5a1fe899db609c29e8c8d815c5f6de6", size = 24374, upload-time = "2025-09-27T18:36:44.508Z" }, - { url = "https://files.pythonhosted.org/packages/a9/21/9b05698b46f218fc0e118e1f8168395c65c8a2c750ae2bab54fc4bd4e0e8/markupsafe-3.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfcd093f13f0f0b7fdd0f198b90053bf7b2f02a3927a30e63f3ccc9df56b676", size = 22980, upload-time = "2025-09-27T18:36:45.385Z" }, - { url = "https://files.pythonhosted.org/packages/7f/71/544260864f893f18b6827315b988c146b559391e6e7e8f7252839b1b846a/markupsafe-3.0.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:509fa21c6deb7a7a273d629cf5ec029bc209d1a51178615ddf718f5918992ab9", size = 21990, upload-time = "2025-09-27T18:36:46.916Z" }, - { url = "https://files.pythonhosted.org/packages/c2/28/b50fc2f74d1ad761af2f5dcce7492648b983d00a65b8c0e0cb457c82ebbe/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4afe79fb3de0b7097d81da19090f4df4f8d3a2b3adaa8764138aac2e44f3af1", size = 23784, upload-time = "2025-09-27T18:36:47.884Z" }, - { url = "https://files.pythonhosted.org/packages/ed/76/104b2aa106a208da8b17a2fb72e033a5a9d7073c68f7e508b94916ed47a9/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:795e7751525cae078558e679d646ae45574b47ed6e7771863fcc079a6171a0fc", size = 21588, upload-time = "2025-09-27T18:36:48.82Z" }, - { url = "https://files.pythonhosted.org/packages/b5/99/16a5eb2d140087ebd97180d95249b00a03aa87e29cc224056274f2e45fd6/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8485f406a96febb5140bfeca44a73e3ce5116b2501ac54fe953e488fb1d03b12", size = 23041, upload-time = "2025-09-27T18:36:49.797Z" }, - { url = "https://files.pythonhosted.org/packages/19/bc/e7140ed90c5d61d77cea142eed9f9c303f4c4806f60a1044c13e3f1471d0/markupsafe-3.0.3-cp313-cp313-win32.whl", hash = "sha256:bdd37121970bfd8be76c5fb069c7751683bdf373db1ed6c010162b2a130248ed", size = 14543, upload-time = "2025-09-27T18:36:51.584Z" }, - { url = "https://files.pythonhosted.org/packages/05/73/c4abe620b841b6b791f2edc248f556900667a5a1cf023a6646967ae98335/markupsafe-3.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:9a1abfdc021a164803f4d485104931fb8f8c1efd55bc6b748d2f5774e78b62c5", size = 15113, upload-time = "2025-09-27T18:36:52.537Z" }, - { url = "https://files.pythonhosted.org/packages/f0/3a/fa34a0f7cfef23cf9500d68cb7c32dd64ffd58a12b09225fb03dd37d5b80/markupsafe-3.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:7e68f88e5b8799aa49c85cd116c932a1ac15caaa3f5db09087854d218359e485", size = 13911, upload-time = "2025-09-27T18:36:53.513Z" }, - { url = "https://files.pythonhosted.org/packages/e4/d7/e05cd7efe43a88a17a37b3ae96e79a19e846f3f456fe79c57ca61356ef01/markupsafe-3.0.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:218551f6df4868a8d527e3062d0fb968682fe92054e89978594c28e642c43a73", size = 11658, upload-time = "2025-09-27T18:36:54.819Z" }, - { url = "https://files.pythonhosted.org/packages/99/9e/e412117548182ce2148bdeacdda3bb494260c0b0184360fe0d56389b523b/markupsafe-3.0.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3524b778fe5cfb3452a09d31e7b5adefeea8c5be1d43c4f810ba09f2ceb29d37", size = 12066, upload-time = "2025-09-27T18:36:55.714Z" }, - { url = "https://files.pythonhosted.org/packages/bc/e6/fa0ffcda717ef64a5108eaa7b4f5ed28d56122c9a6d70ab8b72f9f715c80/markupsafe-3.0.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4e885a3d1efa2eadc93c894a21770e4bc67899e3543680313b09f139e149ab19", size = 25639, upload-time = "2025-09-27T18:36:56.908Z" }, - { url = "https://files.pythonhosted.org/packages/96/ec/2102e881fe9d25fc16cb4b25d5f5cde50970967ffa5dddafdb771237062d/markupsafe-3.0.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8709b08f4a89aa7586de0aadc8da56180242ee0ada3999749b183aa23df95025", size = 23569, upload-time = "2025-09-27T18:36:57.913Z" }, - { url = "https://files.pythonhosted.org/packages/4b/30/6f2fce1f1f205fc9323255b216ca8a235b15860c34b6798f810f05828e32/markupsafe-3.0.3-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b8512a91625c9b3da6f127803b166b629725e68af71f8184ae7e7d54686a56d6", size = 23284, upload-time = "2025-09-27T18:36:58.833Z" }, - { url = "https://files.pythonhosted.org/packages/58/47/4a0ccea4ab9f5dcb6f79c0236d954acb382202721e704223a8aafa38b5c8/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9b79b7a16f7fedff2495d684f2b59b0457c3b493778c9eed31111be64d58279f", size = 24801, upload-time = "2025-09-27T18:36:59.739Z" }, - { url = "https://files.pythonhosted.org/packages/6a/70/3780e9b72180b6fecb83a4814d84c3bf4b4ae4bf0b19c27196104149734c/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:12c63dfb4a98206f045aa9563db46507995f7ef6d83b2f68eda65c307c6829eb", size = 22769, upload-time = "2025-09-27T18:37:00.719Z" }, - { url = "https://files.pythonhosted.org/packages/98/c5/c03c7f4125180fc215220c035beac6b9cb684bc7a067c84fc69414d315f5/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8f71bc33915be5186016f675cd83a1e08523649b0e33efdb898db577ef5bb009", size = 23642, upload-time = "2025-09-27T18:37:01.673Z" }, - { url = "https://files.pythonhosted.org/packages/80/d6/2d1b89f6ca4bff1036499b1e29a1d02d282259f3681540e16563f27ebc23/markupsafe-3.0.3-cp313-cp313t-win32.whl", hash = "sha256:69c0b73548bc525c8cb9a251cddf1931d1db4d2258e9599c28c07ef3580ef354", size = 14612, upload-time = "2025-09-27T18:37:02.639Z" }, - { url = "https://files.pythonhosted.org/packages/2b/98/e48a4bfba0a0ffcf9925fe2d69240bfaa19c6f7507b8cd09c70684a53c1e/markupsafe-3.0.3-cp313-cp313t-win_amd64.whl", hash = "sha256:1b4b79e8ebf6b55351f0d91fe80f893b4743f104bff22e90697db1590e47a218", size = 15200, upload-time = "2025-09-27T18:37:03.582Z" }, - { url = "https://files.pythonhosted.org/packages/0e/72/e3cc540f351f316e9ed0f092757459afbc595824ca724cbc5a5d4263713f/markupsafe-3.0.3-cp313-cp313t-win_arm64.whl", hash = "sha256:ad2cf8aa28b8c020ab2fc8287b0f823d0a7d8630784c31e9ee5edea20f406287", size = 13973, upload-time = "2025-09-27T18:37:04.929Z" }, - { url = "https://files.pythonhosted.org/packages/33/8a/8e42d4838cd89b7dde187011e97fe6c3af66d8c044997d2183fbd6d31352/markupsafe-3.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:eaa9599de571d72e2daf60164784109f19978b327a3910d3e9de8c97b5b70cfe", size = 11619, upload-time = "2025-09-27T18:37:06.342Z" }, - { url = "https://files.pythonhosted.org/packages/b5/64/7660f8a4a8e53c924d0fa05dc3a55c9cee10bbd82b11c5afb27d44b096ce/markupsafe-3.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c47a551199eb8eb2121d4f0f15ae0f923d31350ab9280078d1e5f12b249e0026", size = 12029, upload-time = "2025-09-27T18:37:07.213Z" }, - { url = "https://files.pythonhosted.org/packages/da/ef/e648bfd021127bef5fa12e1720ffed0c6cbb8310c8d9bea7266337ff06de/markupsafe-3.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f34c41761022dd093b4b6896d4810782ffbabe30f2d443ff5f083e0cbbb8c737", size = 24408, upload-time = "2025-09-27T18:37:09.572Z" }, - { url = "https://files.pythonhosted.org/packages/41/3c/a36c2450754618e62008bf7435ccb0f88053e07592e6028a34776213d877/markupsafe-3.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:457a69a9577064c05a97c41f4e65148652db078a3a509039e64d3467b9e7ef97", size = 23005, upload-time = "2025-09-27T18:37:10.58Z" }, - { url = "https://files.pythonhosted.org/packages/bc/20/b7fdf89a8456b099837cd1dc21974632a02a999ec9bf7ca3e490aacd98e7/markupsafe-3.0.3-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e8afc3f2ccfa24215f8cb28dcf43f0113ac3c37c2f0f0806d8c70e4228c5cf4d", size = 22048, upload-time = "2025-09-27T18:37:11.547Z" }, - { url = "https://files.pythonhosted.org/packages/9a/a7/591f592afdc734f47db08a75793a55d7fbcc6902a723ae4cfbab61010cc5/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ec15a59cf5af7be74194f7ab02d0f59a62bdcf1a537677ce67a2537c9b87fcda", size = 23821, upload-time = "2025-09-27T18:37:12.48Z" }, - { url = "https://files.pythonhosted.org/packages/7d/33/45b24e4f44195b26521bc6f1a82197118f74df348556594bd2262bda1038/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:0eb9ff8191e8498cca014656ae6b8d61f39da5f95b488805da4bb029cccbfbaf", size = 21606, upload-time = "2025-09-27T18:37:13.485Z" }, - { url = "https://files.pythonhosted.org/packages/ff/0e/53dfaca23a69fbfbbf17a4b64072090e70717344c52eaaaa9c5ddff1e5f0/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2713baf880df847f2bece4230d4d094280f4e67b1e813eec43b4c0e144a34ffe", size = 23043, upload-time = "2025-09-27T18:37:14.408Z" }, - { url = "https://files.pythonhosted.org/packages/46/11/f333a06fc16236d5238bfe74daccbca41459dcd8d1fa952e8fbd5dccfb70/markupsafe-3.0.3-cp314-cp314-win32.whl", hash = "sha256:729586769a26dbceff69f7a7dbbf59ab6572b99d94576a5592625d5b411576b9", size = 14747, upload-time = "2025-09-27T18:37:15.36Z" }, - { url = "https://files.pythonhosted.org/packages/28/52/182836104b33b444e400b14f797212f720cbc9ed6ba34c800639d154e821/markupsafe-3.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:bdc919ead48f234740ad807933cdf545180bfbe9342c2bb451556db2ed958581", size = 15341, upload-time = "2025-09-27T18:37:16.496Z" }, - { url = "https://files.pythonhosted.org/packages/6f/18/acf23e91bd94fd7b3031558b1f013adfa21a8e407a3fdb32745538730382/markupsafe-3.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:5a7d5dc5140555cf21a6fefbdbf8723f06fcd2f63ef108f2854de715e4422cb4", size = 14073, upload-time = "2025-09-27T18:37:17.476Z" }, - { url = "https://files.pythonhosted.org/packages/3c/f0/57689aa4076e1b43b15fdfa646b04653969d50cf30c32a102762be2485da/markupsafe-3.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:1353ef0c1b138e1907ae78e2f6c63ff67501122006b0f9abad68fda5f4ffc6ab", size = 11661, upload-time = "2025-09-27T18:37:18.453Z" }, - { url = "https://files.pythonhosted.org/packages/89/c3/2e67a7ca217c6912985ec766c6393b636fb0c2344443ff9d91404dc4c79f/markupsafe-3.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1085e7fbddd3be5f89cc898938f42c0b3c711fdcb37d75221de2666af647c175", size = 12069, upload-time = "2025-09-27T18:37:19.332Z" }, - { url = "https://files.pythonhosted.org/packages/f0/00/be561dce4e6ca66b15276e184ce4b8aec61fe83662cce2f7d72bd3249d28/markupsafe-3.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1b52b4fb9df4eb9ae465f8d0c228a00624de2334f216f178a995ccdcf82c4634", size = 25670, upload-time = "2025-09-27T18:37:20.245Z" }, - { url = "https://files.pythonhosted.org/packages/50/09/c419f6f5a92e5fadde27efd190eca90f05e1261b10dbd8cbcb39cd8ea1dc/markupsafe-3.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fed51ac40f757d41b7c48425901843666a6677e3e8eb0abcff09e4ba6e664f50", size = 23598, upload-time = "2025-09-27T18:37:21.177Z" }, - { url = "https://files.pythonhosted.org/packages/22/44/a0681611106e0b2921b3033fc19bc53323e0b50bc70cffdd19f7d679bb66/markupsafe-3.0.3-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f190daf01f13c72eac4efd5c430a8de82489d9cff23c364c3ea822545032993e", size = 23261, upload-time = "2025-09-27T18:37:22.167Z" }, - { url = "https://files.pythonhosted.org/packages/5f/57/1b0b3f100259dc9fffe780cfb60d4be71375510e435efec3d116b6436d43/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e56b7d45a839a697b5eb268c82a71bd8c7f6c94d6fd50c3d577fa39a9f1409f5", size = 24835, upload-time = "2025-09-27T18:37:23.296Z" }, - { url = "https://files.pythonhosted.org/packages/26/6a/4bf6d0c97c4920f1597cc14dd720705eca0bf7c787aebc6bb4d1bead5388/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:f3e98bb3798ead92273dc0e5fd0f31ade220f59a266ffd8a4f6065e0a3ce0523", size = 22733, upload-time = "2025-09-27T18:37:24.237Z" }, - { url = "https://files.pythonhosted.org/packages/14/c7/ca723101509b518797fedc2fdf79ba57f886b4aca8a7d31857ba3ee8281f/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5678211cb9333a6468fb8d8be0305520aa073f50d17f089b5b4b477ea6e67fdc", size = 23672, upload-time = "2025-09-27T18:37:25.271Z" }, - { url = "https://files.pythonhosted.org/packages/fb/df/5bd7a48c256faecd1d36edc13133e51397e41b73bb77e1a69deab746ebac/markupsafe-3.0.3-cp314-cp314t-win32.whl", hash = "sha256:915c04ba3851909ce68ccc2b8e2cd691618c4dc4c4232fb7982bca3f41fd8c3d", size = 14819, upload-time = "2025-09-27T18:37:26.285Z" }, - { url = "https://files.pythonhosted.org/packages/1a/8a/0402ba61a2f16038b48b39bccca271134be00c5c9f0f623208399333c448/markupsafe-3.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4faffd047e07c38848ce017e8725090413cd80cbc23d86e55c587bf979e579c9", size = 15426, upload-time = "2025-09-27T18:37:27.316Z" }, - { url = "https://files.pythonhosted.org/packages/70/bc/6f1c2f612465f5fa89b95bead1f44dcb607670fd42891d8fdcd5d039f4f4/markupsafe-3.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:32001d6a8fc98c8cb5c947787c5d08b0a50663d139f1305bac5885d98d9b40fa", size = 14146, upload-time = "2025-09-27T18:37:28.327Z" }, -] - -[[package]] -name = "mcp" -version = "1.23.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "anyio" }, - { name = "httpx" }, - { name = "httpx-sse" }, - { name = "jsonschema" }, - { name = "pydantic" }, - { name = "pydantic-settings" }, - { name = "pyjwt", extra = ["crypto"] }, - { name = "python-multipart" }, - { name = "pywin32", marker = "sys_platform == 'win32'" }, - { name = "sse-starlette" }, - { name = "starlette" }, - { name = "typing-extensions" }, - { name = "typing-inspection" }, - { name = "uvicorn", marker = "sys_platform != 'emscripten'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/25/1a/9c8a5362e3448d585081d6c7aa95898a64e0ac59d3e26169ae6c3ca5feaf/mcp-1.23.0.tar.gz", hash = "sha256:84e0c29316d0a8cf0affd196fd000487ac512aa3f771b63b2ea864e22961772b", size = 596506, upload-time = "2025-12-02T13:40:02.558Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/b2/28739ce409f98159c0121eab56e69ad71546c4f34ac8b42e58c03f57dccc/mcp-1.23.0-py3-none-any.whl", hash = "sha256:5a645cf111ed329f4619f2629a3f15d9aabd7adc2ea09d600d31467b51ecb64f", size = 231427, upload-time = "2025-12-02T13:40:00.738Z" }, -] - -[[package]] -name = "mdurl" -version = "0.1.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload-time = "2022-08-14T12:40:10.846Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload-time = "2022-08-14T12:40:09.779Z" }, -] - -[[package]] -name = "more-itertools" -version = "10.8.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ea/5d/38b681d3fce7a266dd9ab73c66959406d565b3e85f21d5e66e1181d93721/more_itertools-10.8.0.tar.gz", hash = "sha256:f638ddf8a1a0d134181275fb5d58b086ead7c6a72429ad725c67503f13ba30bd", size = 137431, upload-time = "2025-09-02T15:23:11.018Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a4/8e/469e5a4a2f5855992e425f3cb33804cc07bf18d48f2db061aec61ce50270/more_itertools-10.8.0-py3-none-any.whl", hash = "sha256:52d4362373dcf7c52546bc4af9a86ee7c4579df9a8dc268be0a2f949d376cc9b", size = 69667, upload-time = "2025-09-02T15:23:09.635Z" }, -] - -[[package]] -name = "openapi-core" -version = "0.22.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "isodate" }, - { name = "jsonschema" }, - { name = "jsonschema-path" }, - { name = "more-itertools" }, - { name = "openapi-schema-validator" }, - { name = "openapi-spec-validator" }, - { name = "typing-extensions" }, - { name = "werkzeug" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/fd/65/ee75f25b9459a02df6f713f8ffde5dacb57b8b4e45145cde4cab28b5abba/openapi_core-0.22.0.tar.gz", hash = "sha256:b30490dfa74e3aac2276105525590135212352f5dd7e5acf8f62f6a89ed6f2d0", size = 109242, upload-time = "2025-12-22T19:19:49.608Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5b/8e/a1bf9e7d1b170122aa33b6cf2c788b68824712427deb19795eb7db1b8dd5/openapi_core-0.22.0-py3-none-any.whl", hash = "sha256:8fb7c325f2db4ef6c60584b1870f90eeb3183aa47e30643715c5003b7677a149", size = 108384, upload-time = "2025-12-22T19:19:47.904Z" }, -] - -[[package]] -name = "openapi-pydantic" -version = "0.5.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pydantic" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/02/2e/58d83848dd1a79cb92ed8e63f6ba901ca282c5f09d04af9423ec26c56fd7/openapi_pydantic-0.5.1.tar.gz", hash = "sha256:ff6835af6bde7a459fb93eb93bb92b8749b754fc6e51b2f1590a19dc3005ee0d", size = 60892, upload-time = "2025-01-08T19:29:27.083Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/12/cf/03675d8bd8ecbf4445504d8071adab19f5f993676795708e36402ab38263/openapi_pydantic-0.5.1-py3-none-any.whl", hash = "sha256:a3a09ef4586f5bd760a8df7f43028b60cafb6d9f61de2acba9574766255ab146", size = 96381, upload-time = "2025-01-08T19:29:25.275Z" }, -] - -[[package]] -name = "openapi-schema-validator" -version = "0.6.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "jsonschema" }, - { name = "jsonschema-specifications" }, - { name = "rfc3339-validator" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/8b/f3/5507ad3325169347cd8ced61c232ff3df70e2b250c49f0fe140edb4973c6/openapi_schema_validator-0.6.3.tar.gz", hash = "sha256:f37bace4fc2a5d96692f4f8b31dc0f8d7400fd04f3a937798eaf880d425de6ee", size = 11550, upload-time = "2025-01-10T18:08:22.268Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/21/c6/ad0fba32775ae749016829dace42ed80f4407b171da41313d1a3a5f102e4/openapi_schema_validator-0.6.3-py3-none-any.whl", hash = "sha256:f3b9870f4e556b5a62a1c39da72a6b4b16f3ad9c73dc80084b1b11e74ba148a3", size = 8755, upload-time = "2025-01-10T18:08:19.758Z" }, -] - -[[package]] -name = "openapi-spec-validator" -version = "0.7.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "jsonschema" }, - { name = "jsonschema-path" }, - { name = "lazy-object-proxy" }, - { name = "openapi-schema-validator" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/82/af/fe2d7618d6eae6fb3a82766a44ed87cd8d6d82b4564ed1c7cfb0f6378e91/openapi_spec_validator-0.7.2.tar.gz", hash = "sha256:cc029309b5c5dbc7859df0372d55e9d1ff43e96d678b9ba087f7c56fc586f734", size = 36855, upload-time = "2025-06-07T14:48:56.299Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/27/dd/b3fd642260cb17532f66cc1e8250f3507d1e580483e209dc1e9d13bd980d/openapi_spec_validator-0.7.2-py3-none-any.whl", hash = "sha256:4bbdc0894ec85f1d1bea1d6d9c8b2c3c8d7ccaa13577ef40da9c006c9fd0eb60", size = 39713, upload-time = "2025-06-07T14:48:54.077Z" }, -] - -[[package]] -name = "pathable" -version = "0.4.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/67/93/8f2c2075b180c12c1e9f6a09d1a985bc2036906b13dff1d8917e395f2048/pathable-0.4.4.tar.gz", hash = "sha256:6905a3cd17804edfac7875b5f6c9142a218c7caef78693c2dbbbfbac186d88b2", size = 8124, upload-time = "2025-01-10T18:43:13.247Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7d/eb/b6260b31b1a96386c0a880edebe26f89669098acea8e0318bff6adb378fd/pathable-0.4.4-py3-none-any.whl", hash = "sha256:5ae9e94793b6ef5a4cbe0a7ce9dbbefc1eec38df253763fd0aeeacf2762dbbc2", size = 9592, upload-time = "2025-01-10T18:43:11.88Z" }, -] - -[[package]] -name = "pycparser" -version = "2.23" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fe/cf/d2d3b9f5699fb1e4615c8e32ff220203e43b248e1dfcc6736ad9057731ca/pycparser-2.23.tar.gz", hash = "sha256:78816d4f24add8f10a06d6f05b4d424ad9e96cfebf68a4ddc99c65c0720d00c2", size = 173734, upload-time = "2025-09-09T13:23:47.91Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/e3/59cd50310fc9b59512193629e1984c1f95e5c8ae6e5d8c69532ccc65a7fe/pycparser-2.23-py3-none-any.whl", hash = "sha256:e5c6e8d3fbad53479cab09ac03729e0a9faf2bee3db8208a550daf5af81a5934", size = 118140, upload-time = "2025-09-09T13:23:46.651Z" }, -] - -[[package]] -name = "pydantic" -version = "2.12.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "annotated-types" }, - { name = "pydantic-core" }, - { name = "typing-extensions" }, - { name = "typing-inspection" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/c3/da/b8a7ee04378a53f6fefefc0c5e05570a3ebfdfa0523a878bcd3b475683ee/pydantic-2.12.0.tar.gz", hash = "sha256:c1a077e6270dbfb37bfd8b498b3981e2bb18f68103720e51fa6c306a5a9af563", size = 814760, upload-time = "2025-10-07T15:58:03.467Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f4/9d/d5c855424e2e5b6b626fbc6ec514d8e655a600377ce283008b115abb7445/pydantic-2.12.0-py3-none-any.whl", hash = "sha256:f6a1da352d42790537e95e83a8bdfb91c7efbae63ffd0b86fa823899e807116f", size = 459730, upload-time = "2025-10-07T15:58:01.576Z" }, -] - -[package.optional-dependencies] -email = [ - { name = "email-validator" }, -] - -[[package]] -name = "pydantic-core" -version = "2.41.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/7d/14/12b4a0d2b0b10d8e1d9a24ad94e7bbb43335eaf29c0c4e57860e8a30734a/pydantic_core-2.41.1.tar.gz", hash = "sha256:1ad375859a6d8c356b7704ec0f547a58e82ee80bb41baa811ad710e124bc8f2f", size = 454870, upload-time = "2025-10-07T10:50:45.974Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ee/bc/5f520319ee1c9e25010412fac4154a72e0a40d0a19eb00281b1f200c0947/pydantic_core-2.41.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:db2f82c0ccbce8f021ad304ce35cbe02aa2f95f215cac388eed542b03b4d5eb4", size = 2099300, upload-time = "2025-10-06T21:10:30.463Z" }, - { url = "https://files.pythonhosted.org/packages/31/14/010cd64c5c3814fb6064786837ec12604be0dd46df3327cf8474e38abbbd/pydantic_core-2.41.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:47694a31c710ced9205d5f1e7e8af3ca57cbb8a503d98cb9e33e27c97a501601", size = 1910179, upload-time = "2025-10-06T21:10:31.782Z" }, - { url = "https://files.pythonhosted.org/packages/8e/2e/23fc2a8a93efad52df302fdade0a60f471ecc0c7aac889801ac24b4c07d6/pydantic_core-2.41.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:93e9decce94daf47baf9e9d392f5f2557e783085f7c5e522011545d9d6858e00", size = 1957225, upload-time = "2025-10-06T21:10:33.11Z" }, - { url = "https://files.pythonhosted.org/packages/b9/b6/6db08b2725b2432b9390844852e11d320281e5cea8a859c52c68001975fa/pydantic_core-2.41.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ab0adafdf2b89c8b84f847780a119437a0931eca469f7b44d356f2b426dd9741", size = 2053315, upload-time = "2025-10-06T21:10:34.87Z" }, - { url = "https://files.pythonhosted.org/packages/61/d9/4de44600f2d4514b44f3f3aeeda2e14931214b6b5bf52479339e801ce748/pydantic_core-2.41.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5da98cc81873f39fd56882e1569c4677940fbc12bce6213fad1ead784192d7c8", size = 2224298, upload-time = "2025-10-06T21:10:36.233Z" }, - { url = "https://files.pythonhosted.org/packages/7a/ae/dbe51187a7f35fc21b283c5250571a94e36373eb557c1cba9f29a9806dcf/pydantic_core-2.41.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:209910e88afb01fd0fd403947b809ba8dba0e08a095e1f703294fda0a8fdca51", size = 2351797, upload-time = "2025-10-06T21:10:37.601Z" }, - { url = "https://files.pythonhosted.org/packages/b5/a7/975585147457c2e9fb951c7c8dab56deeb6aa313f3aa72c2fc0df3f74a49/pydantic_core-2.41.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:365109d1165d78d98e33c5bfd815a9b5d7d070f578caefaabcc5771825b4ecb5", size = 2074921, upload-time = "2025-10-06T21:10:38.927Z" }, - { url = "https://files.pythonhosted.org/packages/62/37/ea94d1d0c01dec1b7d236c7cec9103baab0021f42500975de3d42522104b/pydantic_core-2.41.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:706abf21e60a2857acdb09502bc853ee5bce732955e7b723b10311114f033115", size = 2187767, upload-time = "2025-10-06T21:10:40.651Z" }, - { url = "https://files.pythonhosted.org/packages/d3/fe/694cf9fdd3a777a618c3afd210dba7b414cb8a72b1bd29b199c2e5765fee/pydantic_core-2.41.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:bf0bd5417acf7f6a7ec3b53f2109f587be176cb35f9cf016da87e6017437a72d", size = 2136062, upload-time = "2025-10-06T21:10:42.09Z" }, - { url = "https://files.pythonhosted.org/packages/0f/ae/174aeabd89916fbd2988cc37b81a59e1186e952afd2a7ed92018c22f31ca/pydantic_core-2.41.1-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:2e71b1c6ceb9c78424ae9f63a07292fb769fb890a4e7efca5554c47f33a60ea5", size = 2317819, upload-time = "2025-10-06T21:10:43.974Z" }, - { url = "https://files.pythonhosted.org/packages/65/e8/e9aecafaebf53fc456314f72886068725d6fba66f11b013532dc21259343/pydantic_core-2.41.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:80745b9770b4a38c25015b517451c817799bfb9d6499b0d13d8227ec941cb513", size = 2312267, upload-time = "2025-10-06T21:10:45.34Z" }, - { url = "https://files.pythonhosted.org/packages/35/2f/1c2e71d2a052f9bb2f2df5a6a05464a0eb800f9e8d9dd800202fe31219e1/pydantic_core-2.41.1-cp312-cp312-win32.whl", hash = "sha256:83b64d70520e7890453f1aa21d66fda44e7b35f1cfea95adf7b4289a51e2b479", size = 1990927, upload-time = "2025-10-06T21:10:46.738Z" }, - { url = "https://files.pythonhosted.org/packages/b1/78/562998301ff2588b9c6dcc5cb21f52fa919d6e1decc75a35055feb973594/pydantic_core-2.41.1-cp312-cp312-win_amd64.whl", hash = "sha256:377defd66ee2003748ee93c52bcef2d14fde48fe28a0b156f88c3dbf9bc49a50", size = 2034703, upload-time = "2025-10-06T21:10:48.524Z" }, - { url = "https://files.pythonhosted.org/packages/b2/53/d95699ce5a5cdb44bb470bd818b848b9beadf51459fd4ea06667e8ede862/pydantic_core-2.41.1-cp312-cp312-win_arm64.whl", hash = "sha256:c95caff279d49c1d6cdfe2996e6c2ad712571d3b9caaa209a404426c326c4bde", size = 1972719, upload-time = "2025-10-06T21:10:50.256Z" }, - { url = "https://files.pythonhosted.org/packages/27/8a/6d54198536a90a37807d31a156642aae7a8e1263ed9fe6fc6245defe9332/pydantic_core-2.41.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:70e790fce5f05204ef4403159857bfcd587779da78627b0babb3654f75361ebf", size = 2105825, upload-time = "2025-10-06T21:10:51.719Z" }, - { url = "https://files.pythonhosted.org/packages/4f/2e/4784fd7b22ac9c8439db25bf98ffed6853d01e7e560a346e8af821776ccc/pydantic_core-2.41.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9cebf1ca35f10930612d60bd0f78adfacee824c30a880e3534ba02c207cceceb", size = 1910126, upload-time = "2025-10-06T21:10:53.145Z" }, - { url = "https://files.pythonhosted.org/packages/f3/92/31eb0748059ba5bd0aa708fb4bab9fcb211461ddcf9e90702a6542f22d0d/pydantic_core-2.41.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:170406a37a5bc82c22c3274616bf6f17cc7df9c4a0a0a50449e559cb755db669", size = 1961472, upload-time = "2025-10-06T21:10:55.754Z" }, - { url = "https://files.pythonhosted.org/packages/ab/91/946527792275b5c4c7dde4cfa3e81241bf6900e9fee74fb1ba43e0c0f1ab/pydantic_core-2.41.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:12d4257fc9187a0ccd41b8b327d6a4e57281ab75e11dda66a9148ef2e1fb712f", size = 2063230, upload-time = "2025-10-06T21:10:57.179Z" }, - { url = "https://files.pythonhosted.org/packages/31/5d/a35c5d7b414e5c0749f1d9f0d159ee2ef4bab313f499692896b918014ee3/pydantic_core-2.41.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a75a33b4db105dd1c8d57839e17ee12db8d5ad18209e792fa325dbb4baeb00f4", size = 2229469, upload-time = "2025-10-06T21:10:59.409Z" }, - { url = "https://files.pythonhosted.org/packages/21/4d/8713737c689afa57ecfefe38db78259d4484c97aa494979e6a9d19662584/pydantic_core-2.41.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08a589f850803a74e0fcb16a72081cafb0d72a3cdda500106942b07e76b7bf62", size = 2347986, upload-time = "2025-10-06T21:11:00.847Z" }, - { url = "https://files.pythonhosted.org/packages/f6/ec/929f9a3a5ed5cda767081494bacd32f783e707a690ce6eeb5e0730ec4986/pydantic_core-2.41.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a97939d6ea44763c456bd8a617ceada2c9b96bb5b8ab3dfa0d0827df7619014", size = 2072216, upload-time = "2025-10-06T21:11:02.43Z" }, - { url = "https://files.pythonhosted.org/packages/26/55/a33f459d4f9cc8786d9db42795dbecc84fa724b290d7d71ddc3d7155d46a/pydantic_core-2.41.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d2ae423c65c556f09569524b80ffd11babff61f33055ef9773d7c9fabc11ed8d", size = 2193047, upload-time = "2025-10-06T21:11:03.787Z" }, - { url = "https://files.pythonhosted.org/packages/77/af/d5c6959f8b089f2185760a2779079e3c2c411bfc70ea6111f58367851629/pydantic_core-2.41.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:4dc703015fbf8764d6a8001c327a87f1823b7328d40b47ce6000c65918ad2b4f", size = 2140613, upload-time = "2025-10-06T21:11:05.607Z" }, - { url = "https://files.pythonhosted.org/packages/58/e5/2c19bd2a14bffe7fabcf00efbfbd3ac430aaec5271b504a938ff019ac7be/pydantic_core-2.41.1-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:968e4ffdfd35698a5fe659e5e44c508b53664870a8e61c8f9d24d3d145d30257", size = 2327641, upload-time = "2025-10-06T21:11:07.143Z" }, - { url = "https://files.pythonhosted.org/packages/93/ef/e0870ccda798c54e6b100aff3c4d49df5458fd64217e860cb9c3b0a403f4/pydantic_core-2.41.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:fff2b76c8e172d34771cd4d4f0ade08072385310f214f823b5a6ad4006890d32", size = 2318229, upload-time = "2025-10-06T21:11:08.73Z" }, - { url = "https://files.pythonhosted.org/packages/b1/4b/c3b991d95f5deb24d0bd52e47bcf716098fa1afe0ce2d4bd3125b38566ba/pydantic_core-2.41.1-cp313-cp313-win32.whl", hash = "sha256:a38a5263185407ceb599f2f035faf4589d57e73c7146d64f10577f6449e8171d", size = 1997911, upload-time = "2025-10-06T21:11:10.329Z" }, - { url = "https://files.pythonhosted.org/packages/a7/ce/5c316fd62e01f8d6be1b7ee6b54273214e871772997dc2c95e204997a055/pydantic_core-2.41.1-cp313-cp313-win_amd64.whl", hash = "sha256:b42ae7fd6760782c975897e1fdc810f483b021b32245b0105d40f6e7a3803e4b", size = 2034301, upload-time = "2025-10-06T21:11:12.113Z" }, - { url = "https://files.pythonhosted.org/packages/29/41/902640cfd6a6523194123e2c3373c60f19006447f2fb06f76de4e8466c5b/pydantic_core-2.41.1-cp313-cp313-win_arm64.whl", hash = "sha256:ad4111acc63b7384e205c27a2f15e23ac0ee21a9d77ad6f2e9cb516ec90965fb", size = 1977238, upload-time = "2025-10-06T21:11:14.1Z" }, - { url = "https://files.pythonhosted.org/packages/04/04/28b040e88c1b89d851278478842f0bdf39c7a05da9e850333c6c8cbe7dfa/pydantic_core-2.41.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:440d0df7415b50084a4ba9d870480c16c5f67c0d1d4d5119e3f70925533a0edc", size = 1875626, upload-time = "2025-10-06T21:11:15.69Z" }, - { url = "https://files.pythonhosted.org/packages/d6/58/b41dd3087505220bb58bc81be8c3e8cbc037f5710cd3c838f44f90bdd704/pydantic_core-2.41.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:71eaa38d342099405dae6484216dcf1e8e4b0bebd9b44a4e08c9b43db6a2ab67", size = 2045708, upload-time = "2025-10-06T21:11:17.258Z" }, - { url = "https://files.pythonhosted.org/packages/d7/b8/760f23754e40bf6c65b94a69b22c394c24058a0ef7e2aa471d2e39219c1a/pydantic_core-2.41.1-cp313-cp313t-win_amd64.whl", hash = "sha256:555ecf7e50f1161d3f693bc49f23c82cf6cdeafc71fa37a06120772a09a38795", size = 1997171, upload-time = "2025-10-06T21:11:18.822Z" }, - { url = "https://files.pythonhosted.org/packages/41/12/cec246429ddfa2778d2d6301eca5362194dc8749ecb19e621f2f65b5090f/pydantic_core-2.41.1-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:05226894a26f6f27e1deb735d7308f74ef5fa3a6de3e0135bb66cdcaee88f64b", size = 2107836, upload-time = "2025-10-06T21:11:20.432Z" }, - { url = "https://files.pythonhosted.org/packages/20/39/baba47f8d8b87081302498e610aefc37142ce6a1cc98b2ab6b931a162562/pydantic_core-2.41.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:85ff7911c6c3e2fd8d3779c50925f6406d770ea58ea6dde9c230d35b52b16b4a", size = 1904449, upload-time = "2025-10-06T21:11:22.185Z" }, - { url = "https://files.pythonhosted.org/packages/50/32/9a3d87cae2c75a5178334b10358d631bd094b916a00a5993382222dbfd92/pydantic_core-2.41.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47f1f642a205687d59b52dc1a9a607f45e588f5a2e9eeae05edd80c7a8c47674", size = 1961750, upload-time = "2025-10-06T21:11:24.348Z" }, - { url = "https://files.pythonhosted.org/packages/27/42/a96c9d793a04cf2a9773bff98003bb154087b94f5530a2ce6063ecfec583/pydantic_core-2.41.1-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:df11c24e138876ace5ec6043e5cae925e34cf38af1a1b3d63589e8f7b5f5cdc4", size = 2063305, upload-time = "2025-10-06T21:11:26.556Z" }, - { url = "https://files.pythonhosted.org/packages/3e/8d/028c4b7d157a005b1f52c086e2d4b0067886b213c86220c1153398dbdf8f/pydantic_core-2.41.1-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7f0bf7f5c8f7bf345c527e8a0d72d6b26eda99c1227b0c34e7e59e181260de31", size = 2228959, upload-time = "2025-10-06T21:11:28.426Z" }, - { url = "https://files.pythonhosted.org/packages/08/f7/ee64cda8fcc9ca3f4716e6357144f9ee71166775df582a1b6b738bf6da57/pydantic_core-2.41.1-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:82b887a711d341c2c47352375d73b029418f55b20bd7815446d175a70effa706", size = 2345421, upload-time = "2025-10-06T21:11:30.226Z" }, - { url = "https://files.pythonhosted.org/packages/13/c0/e8ec05f0f5ee7a3656973ad9cd3bc73204af99f6512c1a4562f6fb4b3f7d/pydantic_core-2.41.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b5f1d5d6bbba484bdf220c72d8ecd0be460f4bd4c5e534a541bb2cd57589fb8b", size = 2065288, upload-time = "2025-10-06T21:11:32.019Z" }, - { url = "https://files.pythonhosted.org/packages/0a/25/d77a73ff24e2e4fcea64472f5e39b0402d836da9b08b5361a734d0153023/pydantic_core-2.41.1-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2bf1917385ebe0f968dc5c6ab1375886d56992b93ddfe6bf52bff575d03662be", size = 2189759, upload-time = "2025-10-06T21:11:33.753Z" }, - { url = "https://files.pythonhosted.org/packages/66/45/4a4ebaaae12a740552278d06fe71418c0f2869537a369a89c0e6723b341d/pydantic_core-2.41.1-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:4f94f3ab188f44b9a73f7295663f3ecb8f2e2dd03a69c8f2ead50d37785ecb04", size = 2140747, upload-time = "2025-10-06T21:11:35.781Z" }, - { url = "https://files.pythonhosted.org/packages/da/6d/b727ce1022f143194a36593243ff244ed5a1eb3c9122296bf7e716aa37ba/pydantic_core-2.41.1-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:3925446673641d37c30bd84a9d597e49f72eacee8b43322c8999fa17d5ae5bc4", size = 2327416, upload-time = "2025-10-06T21:11:37.75Z" }, - { url = "https://files.pythonhosted.org/packages/6f/8c/02df9d8506c427787059f87c6c7253435c6895e12472a652d9616ee0fc95/pydantic_core-2.41.1-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:49bd51cc27adb980c7b97357ae036ce9b3c4d0bb406e84fbe16fb2d368b602a8", size = 2318138, upload-time = "2025-10-06T21:11:39.463Z" }, - { url = "https://files.pythonhosted.org/packages/98/67/0cf429a7d6802536941f430e6e3243f6d4b68f41eeea4b242372f1901794/pydantic_core-2.41.1-cp314-cp314-win32.whl", hash = "sha256:a31ca0cd0e4d12ea0df0077df2d487fc3eb9d7f96bbb13c3c5b88dcc21d05159", size = 1998429, upload-time = "2025-10-06T21:11:41.989Z" }, - { url = "https://files.pythonhosted.org/packages/38/60/742fef93de5d085022d2302a6317a2b34dbfe15258e9396a535c8a100ae7/pydantic_core-2.41.1-cp314-cp314-win_amd64.whl", hash = "sha256:1b5c4374a152e10a22175d7790e644fbd8ff58418890e07e2073ff9d4414efae", size = 2028870, upload-time = "2025-10-06T21:11:43.66Z" }, - { url = "https://files.pythonhosted.org/packages/31/38/cdd8ccb8555ef7720bd7715899bd6cfbe3c29198332710e1b61b8f5dd8b8/pydantic_core-2.41.1-cp314-cp314-win_arm64.whl", hash = "sha256:4fee76d757639b493eb600fba668f1e17475af34c17dd61db7a47e824d464ca9", size = 1974275, upload-time = "2025-10-06T21:11:45.476Z" }, - { url = "https://files.pythonhosted.org/packages/e7/7e/8ac10ccb047dc0221aa2530ec3c7c05ab4656d4d4bd984ee85da7f3d5525/pydantic_core-2.41.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f9b9c968cfe5cd576fdd7361f47f27adeb120517e637d1b189eea1c3ece573f4", size = 1875124, upload-time = "2025-10-06T21:11:47.591Z" }, - { url = "https://files.pythonhosted.org/packages/c3/e4/7d9791efeb9c7d97e7268f8d20e0da24d03438a7fa7163ab58f1073ba968/pydantic_core-2.41.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f1ebc7ab67b856384aba09ed74e3e977dded40e693de18a4f197c67d0d4e6d8e", size = 2043075, upload-time = "2025-10-06T21:11:49.542Z" }, - { url = "https://files.pythonhosted.org/packages/2d/c3/3f6e6b2342ac11ac8cd5cb56e24c7b14afa27c010e82a765ffa5f771884a/pydantic_core-2.41.1-cp314-cp314t-win_amd64.whl", hash = "sha256:8ae0dc57b62a762985bc7fbf636be3412394acc0ddb4ade07fe104230f1b9762", size = 1995341, upload-time = "2025-10-06T21:11:51.497Z" }, - { url = "https://files.pythonhosted.org/packages/2b/3e/a51c5f5d37b9288ba30683d6e96f10fa8f1defad1623ff09f1020973b577/pydantic_core-2.41.1-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:b04fa9ed049461a7398138c604b00550bc89e3e1151d84b81ad6dc93e39c4c06", size = 2115344, upload-time = "2025-10-07T10:50:02.466Z" }, - { url = "https://files.pythonhosted.org/packages/5a/bd/389504c9e0600ef4502cd5238396b527afe6ef8981a6a15cd1814fc7b434/pydantic_core-2.41.1-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:b3b7d9cfbfdc43c80a16638c6dc2768e3956e73031fca64e8e1a3ae744d1faeb", size = 1927994, upload-time = "2025-10-07T10:50:04.379Z" }, - { url = "https://files.pythonhosted.org/packages/ff/9c/5111c6b128861cb792a4c082677e90dac4f2e090bb2e2fe06aa5b2d39027/pydantic_core-2.41.1-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eec83fc6abef04c7f9bec616e2d76ee9a6a4ae2a359b10c21d0f680e24a247ca", size = 1959394, upload-time = "2025-10-07T10:50:06.335Z" }, - { url = "https://files.pythonhosted.org/packages/14/3f/cfec8b9a0c48ce5d64409ec5e1903cb0b7363da38f14b41de2fcb3712700/pydantic_core-2.41.1-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6771a2d9f83c4038dfad5970a3eef215940682b2175e32bcc817bdc639019b28", size = 2147365, upload-time = "2025-10-07T10:50:07.978Z" }, -] - -[[package]] -name = "pydantic-settings" -version = "2.11.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pydantic" }, - { name = "python-dotenv" }, - { name = "typing-inspection" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/20/c5/dbbc27b814c71676593d1c3f718e6cd7d4f00652cefa24b75f7aa3efb25e/pydantic_settings-2.11.0.tar.gz", hash = "sha256:d0e87a1c7d33593beb7194adb8470fc426e95ba02af83a0f23474a04c9a08180", size = 188394, upload-time = "2025-09-24T14:19:11.764Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/83/d6/887a1ff844e64aa823fb4905978d882a633cfe295c32eacad582b78a7d8b/pydantic_settings-2.11.0-py3-none-any.whl", hash = "sha256:fe2cea3413b9530d10f3a5875adffb17ada5c1e1bab0b2885546d7310415207c", size = 48608, upload-time = "2025-09-24T14:19:10.015Z" }, -] - -[[package]] -name = "pygments" -version = "2.19.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload-time = "2025-06-21T13:39:12.283Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" }, -] - -[[package]] -name = "pyjwt" -version = "2.10.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e7/46/bd74733ff231675599650d3e47f361794b22ef3e3770998dda30d3b63726/pyjwt-2.10.1.tar.gz", hash = "sha256:3cc5772eb20009233caf06e9d8a0577824723b44e6648ee0a2aedb6cf9381953", size = 87785, upload-time = "2024-11-28T03:43:29.933Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/61/ad/689f02752eeec26aed679477e80e632ef1b682313be70793d798c1d5fc8f/PyJWT-2.10.1-py3-none-any.whl", hash = "sha256:dcdd193e30abefd5debf142f9adfcdd2b58004e644f25406ffaebd50bd98dacb", size = 22997, upload-time = "2024-11-28T03:43:27.893Z" }, -] - -[package.optional-dependencies] -crypto = [ - { name = "cryptography" }, -] - -[[package]] -name = "pyperclip" -version = "1.11.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e8/52/d87eba7cb129b81563019d1679026e7a112ef76855d6159d24754dbd2a51/pyperclip-1.11.0.tar.gz", hash = "sha256:244035963e4428530d9e3a6101a1ef97209c6825edab1567beac148ccc1db1b6", size = 12185, upload-time = "2025-09-26T14:40:37.245Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/df/80/fc9d01d5ed37ba4c42ca2b55b4339ae6e200b456be3a1aaddf4a9fa99b8c/pyperclip-1.11.0-py3-none-any.whl", hash = "sha256:299403e9ff44581cb9ba2ffeed69c7aa96a008622ad0c46cb575ca75b5b84273", size = 11063, upload-time = "2025-09-26T14:40:36.069Z" }, -] - -[[package]] -name = "python-dotenv" -version = "1.1.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f6/b0/4bc07ccd3572a2f9df7e6782f52b0c6c90dcbb803ac4a167702d7d0dfe1e/python_dotenv-1.1.1.tar.gz", hash = "sha256:a8a6399716257f45be6a007360200409fce5cda2661e3dec71d23dc15f6189ab", size = 41978, upload-time = "2025-06-24T04:21:07.341Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5f/ed/539768cf28c661b5b068d66d96a2f155c4971a5d55684a514c1a0e0dec2f/python_dotenv-1.1.1-py3-none-any.whl", hash = "sha256:31f23644fe2602f88ff55e1f5c79ba497e01224ee7737937930c448e4d0e24dc", size = 20556, upload-time = "2025-06-24T04:21:06.073Z" }, -] - -[[package]] -name = "python-multipart" -version = "0.0.22" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/94/01/979e98d542a70714b0cb2b6728ed0b7c46792b695e3eaec3e20711271ca3/python_multipart-0.0.22.tar.gz", hash = "sha256:7340bef99a7e0032613f56dc36027b959fd3b30a787ed62d310e951f7c3a3a58", size = 37612, upload-time = "2026-01-25T10:15:56.219Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1b/d0/397f9626e711ff749a95d96b7af99b9c566a9bb5129b8e4c10fc4d100304/python_multipart-0.0.22-py3-none-any.whl", hash = "sha256:2b2cd894c83d21bf49d702499531c7bafd057d730c201782048f7945d82de155", size = 24579, upload-time = "2026-01-25T10:15:54.811Z" }, -] - -[[package]] -name = "pywin32" -version = "311" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/ab/01ea1943d4eba0f850c3c61e78e8dd59757ff815ff3ccd0a84de5f541f42/pywin32-311-cp312-cp312-win32.whl", hash = "sha256:750ec6e621af2b948540032557b10a2d43b0cee2ae9758c54154d711cc852d31", size = 8706543, upload-time = "2025-07-14T20:13:20.765Z" }, - { url = "https://files.pythonhosted.org/packages/d1/a8/a0e8d07d4d051ec7502cd58b291ec98dcc0c3fff027caad0470b72cfcc2f/pywin32-311-cp312-cp312-win_amd64.whl", hash = "sha256:b8c095edad5c211ff31c05223658e71bf7116daa0ecf3ad85f3201ea3190d067", size = 9495040, upload-time = "2025-07-14T20:13:22.543Z" }, - { url = "https://files.pythonhosted.org/packages/ba/3a/2ae996277b4b50f17d61f0603efd8253cb2d79cc7ae159468007b586396d/pywin32-311-cp312-cp312-win_arm64.whl", hash = "sha256:e286f46a9a39c4a18b319c28f59b61de793654af2f395c102b4f819e584b5852", size = 8710102, upload-time = "2025-07-14T20:13:24.682Z" }, - { url = "https://files.pythonhosted.org/packages/a5/be/3fd5de0979fcb3994bfee0d65ed8ca9506a8a1260651b86174f6a86f52b3/pywin32-311-cp313-cp313-win32.whl", hash = "sha256:f95ba5a847cba10dd8c4d8fefa9f2a6cf283b8b88ed6178fa8a6c1ab16054d0d", size = 8705700, upload-time = "2025-07-14T20:13:26.471Z" }, - { url = "https://files.pythonhosted.org/packages/e3/28/e0a1909523c6890208295a29e05c2adb2126364e289826c0a8bc7297bd5c/pywin32-311-cp313-cp313-win_amd64.whl", hash = "sha256:718a38f7e5b058e76aee1c56ddd06908116d35147e133427e59a3983f703a20d", size = 9494700, upload-time = "2025-07-14T20:13:28.243Z" }, - { url = "https://files.pythonhosted.org/packages/04/bf/90339ac0f55726dce7d794e6d79a18a91265bdf3aa70b6b9ca52f35e022a/pywin32-311-cp313-cp313-win_arm64.whl", hash = "sha256:7b4075d959648406202d92a2310cb990fea19b535c7f4a78d3f5e10b926eeb8a", size = 8709318, upload-time = "2025-07-14T20:13:30.348Z" }, - { url = "https://files.pythonhosted.org/packages/c9/31/097f2e132c4f16d99a22bfb777e0fd88bd8e1c634304e102f313af69ace5/pywin32-311-cp314-cp314-win32.whl", hash = "sha256:b7a2c10b93f8986666d0c803ee19b5990885872a7de910fc460f9b0c2fbf92ee", size = 8840714, upload-time = "2025-07-14T20:13:32.449Z" }, - { url = "https://files.pythonhosted.org/packages/90/4b/07c77d8ba0e01349358082713400435347df8426208171ce297da32c313d/pywin32-311-cp314-cp314-win_amd64.whl", hash = "sha256:3aca44c046bd2ed8c90de9cb8427f581c479e594e99b5c0bb19b29c10fd6cb87", size = 9656800, upload-time = "2025-07-14T20:13:34.312Z" }, - { url = "https://files.pythonhosted.org/packages/c0/d2/21af5c535501a7233e734b8af901574572da66fcc254cb35d0609c9080dd/pywin32-311-cp314-cp314-win_arm64.whl", hash = "sha256:a508e2d9025764a8270f93111a970e1d0fbfc33f4153b388bb649b7eec4f9b42", size = 8932540, upload-time = "2025-07-14T20:13:36.379Z" }, -] - -[[package]] -name = "pyyaml" -version = "6.0.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/33/422b98d2195232ca1826284a76852ad5a86fe23e31b009c9886b2d0fb8b2/pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196", size = 182063, upload-time = "2025-09-25T21:32:11.445Z" }, - { url = "https://files.pythonhosted.org/packages/89/a0/6cf41a19a1f2f3feab0e9c0b74134aa2ce6849093d5517a0c550fe37a648/pyyaml-6.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0", size = 173973, upload-time = "2025-09-25T21:32:12.492Z" }, - { url = "https://files.pythonhosted.org/packages/ed/23/7a778b6bd0b9a8039df8b1b1d80e2e2ad78aa04171592c8a5c43a56a6af4/pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28", size = 775116, upload-time = "2025-09-25T21:32:13.652Z" }, - { url = "https://files.pythonhosted.org/packages/65/30/d7353c338e12baef4ecc1b09e877c1970bd3382789c159b4f89d6a70dc09/pyyaml-6.0.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c", size = 844011, upload-time = "2025-09-25T21:32:15.21Z" }, - { url = "https://files.pythonhosted.org/packages/8b/9d/b3589d3877982d4f2329302ef98a8026e7f4443c765c46cfecc8858c6b4b/pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc", size = 807870, upload-time = "2025-09-25T21:32:16.431Z" }, - { url = "https://files.pythonhosted.org/packages/05/c0/b3be26a015601b822b97d9149ff8cb5ead58c66f981e04fedf4e762f4bd4/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e", size = 761089, upload-time = "2025-09-25T21:32:17.56Z" }, - { url = "https://files.pythonhosted.org/packages/be/8e/98435a21d1d4b46590d5459a22d88128103f8da4c2d4cb8f14f2a96504e1/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea", size = 790181, upload-time = "2025-09-25T21:32:18.834Z" }, - { url = "https://files.pythonhosted.org/packages/74/93/7baea19427dcfbe1e5a372d81473250b379f04b1bd3c4c5ff825e2327202/pyyaml-6.0.3-cp312-cp312-win32.whl", hash = "sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5", size = 137658, upload-time = "2025-09-25T21:32:20.209Z" }, - { url = "https://files.pythonhosted.org/packages/86/bf/899e81e4cce32febab4fb42bb97dcdf66bc135272882d1987881a4b519e9/pyyaml-6.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b", size = 154003, upload-time = "2025-09-25T21:32:21.167Z" }, - { url = "https://files.pythonhosted.org/packages/1a/08/67bd04656199bbb51dbed1439b7f27601dfb576fb864099c7ef0c3e55531/pyyaml-6.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd", size = 140344, upload-time = "2025-09-25T21:32:22.617Z" }, - { url = "https://files.pythonhosted.org/packages/d1/11/0fd08f8192109f7169db964b5707a2f1e8b745d4e239b784a5a1dd80d1db/pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8", size = 181669, upload-time = "2025-09-25T21:32:23.673Z" }, - { url = "https://files.pythonhosted.org/packages/b1/16/95309993f1d3748cd644e02e38b75d50cbc0d9561d21f390a76242ce073f/pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1", size = 173252, upload-time = "2025-09-25T21:32:25.149Z" }, - { url = "https://files.pythonhosted.org/packages/50/31/b20f376d3f810b9b2371e72ef5adb33879b25edb7a6d072cb7ca0c486398/pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c", size = 767081, upload-time = "2025-09-25T21:32:26.575Z" }, - { url = "https://files.pythonhosted.org/packages/49/1e/a55ca81e949270d5d4432fbbd19dfea5321eda7c41a849d443dc92fd1ff7/pyyaml-6.0.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5", size = 841159, upload-time = "2025-09-25T21:32:27.727Z" }, - { url = "https://files.pythonhosted.org/packages/74/27/e5b8f34d02d9995b80abcef563ea1f8b56d20134d8f4e5e81733b1feceb2/pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6", size = 801626, upload-time = "2025-09-25T21:32:28.878Z" }, - { url = "https://files.pythonhosted.org/packages/f9/11/ba845c23988798f40e52ba45f34849aa8a1f2d4af4b798588010792ebad6/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6", size = 753613, upload-time = "2025-09-25T21:32:30.178Z" }, - { url = "https://files.pythonhosted.org/packages/3d/e0/7966e1a7bfc0a45bf0a7fb6b98ea03fc9b8d84fa7f2229e9659680b69ee3/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be", size = 794115, upload-time = "2025-09-25T21:32:31.353Z" }, - { url = "https://files.pythonhosted.org/packages/de/94/980b50a6531b3019e45ddeada0626d45fa85cbe22300844a7983285bed3b/pyyaml-6.0.3-cp313-cp313-win32.whl", hash = "sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26", size = 137427, upload-time = "2025-09-25T21:32:32.58Z" }, - { url = "https://files.pythonhosted.org/packages/97/c9/39d5b874e8b28845e4ec2202b5da735d0199dbe5b8fb85f91398814a9a46/pyyaml-6.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c", size = 154090, upload-time = "2025-09-25T21:32:33.659Z" }, - { url = "https://files.pythonhosted.org/packages/73/e8/2bdf3ca2090f68bb3d75b44da7bbc71843b19c9f2b9cb9b0f4ab7a5a4329/pyyaml-6.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb", size = 140246, upload-time = "2025-09-25T21:32:34.663Z" }, - { url = "https://files.pythonhosted.org/packages/9d/8c/f4bd7f6465179953d3ac9bc44ac1a8a3e6122cf8ada906b4f96c60172d43/pyyaml-6.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac", size = 181814, upload-time = "2025-09-25T21:32:35.712Z" }, - { url = "https://files.pythonhosted.org/packages/bd/9c/4d95bb87eb2063d20db7b60faa3840c1b18025517ae857371c4dd55a6b3a/pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310", size = 173809, upload-time = "2025-09-25T21:32:36.789Z" }, - { url = "https://files.pythonhosted.org/packages/92/b5/47e807c2623074914e29dabd16cbbdd4bf5e9b2db9f8090fa64411fc5382/pyyaml-6.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7", size = 766454, upload-time = "2025-09-25T21:32:37.966Z" }, - { url = "https://files.pythonhosted.org/packages/02/9e/e5e9b168be58564121efb3de6859c452fccde0ab093d8438905899a3a483/pyyaml-6.0.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788", size = 836355, upload-time = "2025-09-25T21:32:39.178Z" }, - { url = "https://files.pythonhosted.org/packages/88/f9/16491d7ed2a919954993e48aa941b200f38040928474c9e85ea9e64222c3/pyyaml-6.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5", size = 794175, upload-time = "2025-09-25T21:32:40.865Z" }, - { url = "https://files.pythonhosted.org/packages/dd/3f/5989debef34dc6397317802b527dbbafb2b4760878a53d4166579111411e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764", size = 755228, upload-time = "2025-09-25T21:32:42.084Z" }, - { url = "https://files.pythonhosted.org/packages/d7/ce/af88a49043cd2e265be63d083fc75b27b6ed062f5f9fd6cdc223ad62f03e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35", size = 789194, upload-time = "2025-09-25T21:32:43.362Z" }, - { url = "https://files.pythonhosted.org/packages/23/20/bb6982b26a40bb43951265ba29d4c246ef0ff59c9fdcdf0ed04e0687de4d/pyyaml-6.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac", size = 156429, upload-time = "2025-09-25T21:32:57.844Z" }, - { url = "https://files.pythonhosted.org/packages/f4/f4/a4541072bb9422c8a883ab55255f918fa378ecf083f5b85e87fc2b4eda1b/pyyaml-6.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3", size = 143912, upload-time = "2025-09-25T21:32:59.247Z" }, - { url = "https://files.pythonhosted.org/packages/7c/f9/07dd09ae774e4616edf6cda684ee78f97777bdd15847253637a6f052a62f/pyyaml-6.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3", size = 189108, upload-time = "2025-09-25T21:32:44.377Z" }, - { url = "https://files.pythonhosted.org/packages/4e/78/8d08c9fb7ce09ad8c38ad533c1191cf27f7ae1effe5bb9400a46d9437fcf/pyyaml-6.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba", size = 183641, upload-time = "2025-09-25T21:32:45.407Z" }, - { url = "https://files.pythonhosted.org/packages/7b/5b/3babb19104a46945cf816d047db2788bcaf8c94527a805610b0289a01c6b/pyyaml-6.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c", size = 831901, upload-time = "2025-09-25T21:32:48.83Z" }, - { url = "https://files.pythonhosted.org/packages/8b/cc/dff0684d8dc44da4d22a13f35f073d558c268780ce3c6ba1b87055bb0b87/pyyaml-6.0.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702", size = 861132, upload-time = "2025-09-25T21:32:50.149Z" }, - { url = "https://files.pythonhosted.org/packages/b1/5e/f77dc6b9036943e285ba76b49e118d9ea929885becb0a29ba8a7c75e29fe/pyyaml-6.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c", size = 839261, upload-time = "2025-09-25T21:32:51.808Z" }, - { url = "https://files.pythonhosted.org/packages/ce/88/a9db1376aa2a228197c58b37302f284b5617f56a5d959fd1763fb1675ce6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065", size = 805272, upload-time = "2025-09-25T21:32:52.941Z" }, - { url = "https://files.pythonhosted.org/packages/da/92/1446574745d74df0c92e6aa4a7b0b3130706a4142b2d1a5869f2eaa423c6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65", size = 829923, upload-time = "2025-09-25T21:32:54.537Z" }, - { url = "https://files.pythonhosted.org/packages/f0/7a/1c7270340330e575b92f397352af856a8c06f230aa3e76f86b39d01b416a/pyyaml-6.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9", size = 174062, upload-time = "2025-09-25T21:32:55.767Z" }, - { url = "https://files.pythonhosted.org/packages/f1/12/de94a39c2ef588c7e6455cfbe7343d3b2dc9d6b6b2f40c4c6565744c873d/pyyaml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b", size = 149341, upload-time = "2025-09-25T21:32:56.828Z" }, -] - -[[package]] -name = "referencing" -version = "0.36.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "attrs" }, - { name = "rpds-py" }, - { name = "typing-extensions", marker = "python_full_version < '3.13'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744, upload-time = "2025-01-25T08:48:16.138Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0", size = 26775, upload-time = "2025-01-25T08:48:14.241Z" }, -] - -[[package]] -name = "requests" -version = "2.32.5" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "certifi" }, - { name = "charset-normalizer" }, - { name = "idna" }, - { name = "urllib3" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/c9/74/b3ff8e6c8446842c3f5c837e9c3dfcfe2018ea6ecef224c710c85ef728f4/requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf", size = 134517, upload-time = "2025-08-18T20:46:02.573Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", size = 64738, upload-time = "2025-08-18T20:46:00.542Z" }, -] - -[[package]] -name = "rfc3339-validator" -version = "0.1.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "six" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/28/ea/a9387748e2d111c3c2b275ba970b735e04e15cdb1eb30693b6b5708c4dbd/rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b", size = 5513, upload-time = "2021-05-12T16:37:54.178Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa", size = 3490, upload-time = "2021-05-12T16:37:52.536Z" }, -] - -[[package]] -name = "rich" -version = "14.1.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "markdown-it-py" }, - { name = "pygments" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/fe/75/af448d8e52bf1d8fa6a9d089ca6c07ff4453d86c65c145d0a300bb073b9b/rich-14.1.0.tar.gz", hash = "sha256:e497a48b844b0320d45007cdebfeaeed8db2a4f4bcf49f15e455cfc4af11eaa8", size = 224441, upload-time = "2025-07-25T07:32:58.125Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e3/30/3c4d035596d3cf444529e0b2953ad0466f6049528a879d27534700580395/rich-14.1.0-py3-none-any.whl", hash = "sha256:536f5f1785986d6dbdea3c75205c473f970777b4a0d6c6dd1b696aa05a3fa04f", size = 243368, upload-time = "2025-07-25T07:32:56.73Z" }, -] - -[[package]] -name = "rich-rst" -version = "1.3.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "docutils" }, - { name = "rich" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/b0/69/5514c3a87b5f10f09a34bb011bc0927bc12c596c8dae5915604e71abc386/rich_rst-1.3.1.tar.gz", hash = "sha256:fad46e3ba42785ea8c1785e2ceaa56e0ffa32dbe5410dec432f37e4107c4f383", size = 13839, upload-time = "2024-04-30T04:40:38.125Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fd/bc/cc4e3dbc5e7992398dcb7a8eda0cbcf4fb792a0cdb93f857b478bf3cf884/rich_rst-1.3.1-py3-none-any.whl", hash = "sha256:498a74e3896507ab04492d326e794c3ef76e7cda078703aa592d1853d91098c1", size = 11621, upload-time = "2024-04-30T04:40:32.619Z" }, -] - -[[package]] -name = "rpds-py" -version = "0.27.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e9/dd/2c0cbe774744272b0ae725f44032c77bdcab6e8bcf544bffa3b6e70c8dba/rpds_py-0.27.1.tar.gz", hash = "sha256:26a1c73171d10b7acccbded82bf6a586ab8203601e565badc74bbbf8bc5a10f8", size = 27479, upload-time = "2025-08-27T12:16:36.024Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/bd/fe/38de28dee5df58b8198c743fe2bea0c785c6d40941b9950bac4cdb71a014/rpds_py-0.27.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:ae2775c1973e3c30316892737b91f9283f9908e3cc7625b9331271eaaed7dc90", size = 361887, upload-time = "2025-08-27T12:13:10.233Z" }, - { url = "https://files.pythonhosted.org/packages/7c/9a/4b6c7eedc7dd90986bf0fab6ea2a091ec11c01b15f8ba0a14d3f80450468/rpds_py-0.27.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2643400120f55c8a96f7c9d858f7be0c88d383cd4653ae2cf0d0c88f668073e5", size = 345795, upload-time = "2025-08-27T12:13:11.65Z" }, - { url = "https://files.pythonhosted.org/packages/6f/0e/e650e1b81922847a09cca820237b0edee69416a01268b7754d506ade11ad/rpds_py-0.27.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:16323f674c089b0360674a4abd28d5042947d54ba620f72514d69be4ff64845e", size = 385121, upload-time = "2025-08-27T12:13:13.008Z" }, - { url = "https://files.pythonhosted.org/packages/1b/ea/b306067a712988e2bff00dcc7c8f31d26c29b6d5931b461aa4b60a013e33/rpds_py-0.27.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9a1f4814b65eacac94a00fc9a526e3fdafd78e439469644032032d0d63de4881", size = 398976, upload-time = "2025-08-27T12:13:14.368Z" }, - { url = "https://files.pythonhosted.org/packages/2c/0a/26dc43c8840cb8fe239fe12dbc8d8de40f2365e838f3d395835dde72f0e5/rpds_py-0.27.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7ba32c16b064267b22f1850a34051121d423b6f7338a12b9459550eb2096e7ec", size = 525953, upload-time = "2025-08-27T12:13:15.774Z" }, - { url = "https://files.pythonhosted.org/packages/22/14/c85e8127b573aaf3a0cbd7fbb8c9c99e735a4a02180c84da2a463b766e9e/rpds_py-0.27.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e5c20f33fd10485b80f65e800bbe5f6785af510b9f4056c5a3c612ebc83ba6cb", size = 407915, upload-time = "2025-08-27T12:13:17.379Z" }, - { url = "https://files.pythonhosted.org/packages/ed/7b/8f4fee9ba1fb5ec856eb22d725a4efa3deb47f769597c809e03578b0f9d9/rpds_py-0.27.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:466bfe65bd932da36ff279ddd92de56b042f2266d752719beb97b08526268ec5", size = 386883, upload-time = "2025-08-27T12:13:18.704Z" }, - { url = "https://files.pythonhosted.org/packages/86/47/28fa6d60f8b74fcdceba81b272f8d9836ac0340570f68f5df6b41838547b/rpds_py-0.27.1-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:41e532bbdcb57c92ba3be62c42e9f096431b4cf478da9bc3bc6ce5c38ab7ba7a", size = 405699, upload-time = "2025-08-27T12:13:20.089Z" }, - { url = "https://files.pythonhosted.org/packages/d0/fd/c5987b5e054548df56953a21fe2ebed51fc1ec7c8f24fd41c067b68c4a0a/rpds_py-0.27.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f149826d742b406579466283769a8ea448eed82a789af0ed17b0cd5770433444", size = 423713, upload-time = "2025-08-27T12:13:21.436Z" }, - { url = "https://files.pythonhosted.org/packages/ac/ba/3c4978b54a73ed19a7d74531be37a8bcc542d917c770e14d372b8daea186/rpds_py-0.27.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:80c60cfb5310677bd67cb1e85a1e8eb52e12529545441b43e6f14d90b878775a", size = 562324, upload-time = "2025-08-27T12:13:22.789Z" }, - { url = "https://files.pythonhosted.org/packages/b5/6c/6943a91768fec16db09a42b08644b960cff540c66aab89b74be6d4a144ba/rpds_py-0.27.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:7ee6521b9baf06085f62ba9c7a3e5becffbc32480d2f1b351559c001c38ce4c1", size = 593646, upload-time = "2025-08-27T12:13:24.122Z" }, - { url = "https://files.pythonhosted.org/packages/11/73/9d7a8f4be5f4396f011a6bb7a19fe26303a0dac9064462f5651ced2f572f/rpds_py-0.27.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a512c8263249a9d68cac08b05dd59d2b3f2061d99b322813cbcc14c3c7421998", size = 558137, upload-time = "2025-08-27T12:13:25.557Z" }, - { url = "https://files.pythonhosted.org/packages/6e/96/6772cbfa0e2485bcceef8071de7821f81aeac8bb45fbfd5542a3e8108165/rpds_py-0.27.1-cp312-cp312-win32.whl", hash = "sha256:819064fa048ba01b6dadc5116f3ac48610435ac9a0058bbde98e569f9e785c39", size = 221343, upload-time = "2025-08-27T12:13:26.967Z" }, - { url = "https://files.pythonhosted.org/packages/67/b6/c82f0faa9af1c6a64669f73a17ee0eeef25aff30bb9a1c318509efe45d84/rpds_py-0.27.1-cp312-cp312-win_amd64.whl", hash = "sha256:d9199717881f13c32c4046a15f024971a3b78ad4ea029e8da6b86e5aa9cf4594", size = 232497, upload-time = "2025-08-27T12:13:28.326Z" }, - { url = "https://files.pythonhosted.org/packages/e1/96/2817b44bd2ed11aebacc9251da03689d56109b9aba5e311297b6902136e2/rpds_py-0.27.1-cp312-cp312-win_arm64.whl", hash = "sha256:33aa65b97826a0e885ef6e278fbd934e98cdcfed80b63946025f01e2f5b29502", size = 222790, upload-time = "2025-08-27T12:13:29.71Z" }, - { url = "https://files.pythonhosted.org/packages/cc/77/610aeee8d41e39080c7e14afa5387138e3c9fa9756ab893d09d99e7d8e98/rpds_py-0.27.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:e4b9fcfbc021633863a37e92571d6f91851fa656f0180246e84cbd8b3f6b329b", size = 361741, upload-time = "2025-08-27T12:13:31.039Z" }, - { url = "https://files.pythonhosted.org/packages/3a/fc/c43765f201c6a1c60be2043cbdb664013def52460a4c7adace89d6682bf4/rpds_py-0.27.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1441811a96eadca93c517d08df75de45e5ffe68aa3089924f963c782c4b898cf", size = 345574, upload-time = "2025-08-27T12:13:32.902Z" }, - { url = "https://files.pythonhosted.org/packages/20/42/ee2b2ca114294cd9847d0ef9c26d2b0851b2e7e00bf14cc4c0b581df0fc3/rpds_py-0.27.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55266dafa22e672f5a4f65019015f90336ed31c6383bd53f5e7826d21a0e0b83", size = 385051, upload-time = "2025-08-27T12:13:34.228Z" }, - { url = "https://files.pythonhosted.org/packages/fd/e8/1e430fe311e4799e02e2d1af7c765f024e95e17d651612425b226705f910/rpds_py-0.27.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d78827d7ac08627ea2c8e02c9e5b41180ea5ea1f747e9db0915e3adf36b62dcf", size = 398395, upload-time = "2025-08-27T12:13:36.132Z" }, - { url = "https://files.pythonhosted.org/packages/82/95/9dc227d441ff2670651c27a739acb2535ccaf8b351a88d78c088965e5996/rpds_py-0.27.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae92443798a40a92dc5f0b01d8a7c93adde0c4dc965310a29ae7c64d72b9fad2", size = 524334, upload-time = "2025-08-27T12:13:37.562Z" }, - { url = "https://files.pythonhosted.org/packages/87/01/a670c232f401d9ad461d9a332aa4080cd3cb1d1df18213dbd0d2a6a7ab51/rpds_py-0.27.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c46c9dd2403b66a2a3b9720ec4b74d4ab49d4fabf9f03dfdce2d42af913fe8d0", size = 407691, upload-time = "2025-08-27T12:13:38.94Z" }, - { url = "https://files.pythonhosted.org/packages/03/36/0a14aebbaa26fe7fab4780c76f2239e76cc95a0090bdb25e31d95c492fcd/rpds_py-0.27.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2efe4eb1d01b7f5f1939f4ef30ecea6c6b3521eec451fb93191bf84b2a522418", size = 386868, upload-time = "2025-08-27T12:13:40.192Z" }, - { url = "https://files.pythonhosted.org/packages/3b/03/8c897fb8b5347ff6c1cc31239b9611c5bf79d78c984430887a353e1409a1/rpds_py-0.27.1-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:15d3b4d83582d10c601f481eca29c3f138d44c92187d197aff663a269197c02d", size = 405469, upload-time = "2025-08-27T12:13:41.496Z" }, - { url = "https://files.pythonhosted.org/packages/da/07/88c60edc2df74850d496d78a1fdcdc7b54360a7f610a4d50008309d41b94/rpds_py-0.27.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4ed2e16abbc982a169d30d1a420274a709949e2cbdef119fe2ec9d870b42f274", size = 422125, upload-time = "2025-08-27T12:13:42.802Z" }, - { url = "https://files.pythonhosted.org/packages/6b/86/5f4c707603e41b05f191a749984f390dabcbc467cf833769b47bf14ba04f/rpds_py-0.27.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a75f305c9b013289121ec0f1181931975df78738cdf650093e6b86d74aa7d8dd", size = 562341, upload-time = "2025-08-27T12:13:44.472Z" }, - { url = "https://files.pythonhosted.org/packages/b2/92/3c0cb2492094e3cd9baf9e49bbb7befeceb584ea0c1a8b5939dca4da12e5/rpds_py-0.27.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:67ce7620704745881a3d4b0ada80ab4d99df390838839921f99e63c474f82cf2", size = 592511, upload-time = "2025-08-27T12:13:45.898Z" }, - { url = "https://files.pythonhosted.org/packages/10/bb/82e64fbb0047c46a168faa28d0d45a7851cd0582f850b966811d30f67ad8/rpds_py-0.27.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9d992ac10eb86d9b6f369647b6a3f412fc0075cfd5d799530e84d335e440a002", size = 557736, upload-time = "2025-08-27T12:13:47.408Z" }, - { url = "https://files.pythonhosted.org/packages/00/95/3c863973d409210da7fb41958172c6b7dbe7fc34e04d3cc1f10bb85e979f/rpds_py-0.27.1-cp313-cp313-win32.whl", hash = "sha256:4f75e4bd8ab8db624e02c8e2fc4063021b58becdbe6df793a8111d9343aec1e3", size = 221462, upload-time = "2025-08-27T12:13:48.742Z" }, - { url = "https://files.pythonhosted.org/packages/ce/2c/5867b14a81dc217b56d95a9f2a40fdbc56a1ab0181b80132beeecbd4b2d6/rpds_py-0.27.1-cp313-cp313-win_amd64.whl", hash = "sha256:f9025faafc62ed0b75a53e541895ca272815bec18abe2249ff6501c8f2e12b83", size = 232034, upload-time = "2025-08-27T12:13:50.11Z" }, - { url = "https://files.pythonhosted.org/packages/c7/78/3958f3f018c01923823f1e47f1cc338e398814b92d83cd278364446fac66/rpds_py-0.27.1-cp313-cp313-win_arm64.whl", hash = "sha256:ed10dc32829e7d222b7d3b93136d25a406ba9788f6a7ebf6809092da1f4d279d", size = 222392, upload-time = "2025-08-27T12:13:52.587Z" }, - { url = "https://files.pythonhosted.org/packages/01/76/1cdf1f91aed5c3a7bf2eba1f1c4e4d6f57832d73003919a20118870ea659/rpds_py-0.27.1-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:92022bbbad0d4426e616815b16bc4127f83c9a74940e1ccf3cfe0b387aba0228", size = 358355, upload-time = "2025-08-27T12:13:54.012Z" }, - { url = "https://files.pythonhosted.org/packages/c3/6f/bf142541229374287604caf3bb2a4ae17f0a580798fd72d3b009b532db4e/rpds_py-0.27.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:47162fdab9407ec3f160805ac3e154df042e577dd53341745fc7fb3f625e6d92", size = 342138, upload-time = "2025-08-27T12:13:55.791Z" }, - { url = "https://files.pythonhosted.org/packages/1a/77/355b1c041d6be40886c44ff5e798b4e2769e497b790f0f7fd1e78d17e9a8/rpds_py-0.27.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb89bec23fddc489e5d78b550a7b773557c9ab58b7946154a10a6f7a214a48b2", size = 380247, upload-time = "2025-08-27T12:13:57.683Z" }, - { url = "https://files.pythonhosted.org/packages/d6/a4/d9cef5c3946ea271ce2243c51481971cd6e34f21925af2783dd17b26e815/rpds_py-0.27.1-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e48af21883ded2b3e9eb48cb7880ad8598b31ab752ff3be6457001d78f416723", size = 390699, upload-time = "2025-08-27T12:13:59.137Z" }, - { url = "https://files.pythonhosted.org/packages/3a/06/005106a7b8c6c1a7e91b73169e49870f4af5256119d34a361ae5240a0c1d/rpds_py-0.27.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6f5b7bd8e219ed50299e58551a410b64daafb5017d54bbe822e003856f06a802", size = 521852, upload-time = "2025-08-27T12:14:00.583Z" }, - { url = "https://files.pythonhosted.org/packages/e5/3e/50fb1dac0948e17a02eb05c24510a8fe12d5ce8561c6b7b7d1339ab7ab9c/rpds_py-0.27.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08f1e20bccf73b08d12d804d6e1c22ca5530e71659e6673bce31a6bb71c1e73f", size = 402582, upload-time = "2025-08-27T12:14:02.034Z" }, - { url = "https://files.pythonhosted.org/packages/cb/b0/f4e224090dc5b0ec15f31a02d746ab24101dd430847c4d99123798661bfc/rpds_py-0.27.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0dc5dceeaefcc96dc192e3a80bbe1d6c410c469e97bdd47494a7d930987f18b2", size = 384126, upload-time = "2025-08-27T12:14:03.437Z" }, - { url = "https://files.pythonhosted.org/packages/54/77/ac339d5f82b6afff1df8f0fe0d2145cc827992cb5f8eeb90fc9f31ef7a63/rpds_py-0.27.1-cp313-cp313t-manylinux_2_31_riscv64.whl", hash = "sha256:d76f9cc8665acdc0c9177043746775aa7babbf479b5520b78ae4002d889f5c21", size = 399486, upload-time = "2025-08-27T12:14:05.443Z" }, - { url = "https://files.pythonhosted.org/packages/d6/29/3e1c255eee6ac358c056a57d6d6869baa00a62fa32eea5ee0632039c50a3/rpds_py-0.27.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:134fae0e36022edad8290a6661edf40c023562964efea0cc0ec7f5d392d2aaef", size = 414832, upload-time = "2025-08-27T12:14:06.902Z" }, - { url = "https://files.pythonhosted.org/packages/3f/db/6d498b844342deb3fa1d030598db93937a9964fcf5cb4da4feb5f17be34b/rpds_py-0.27.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:eb11a4f1b2b63337cfd3b4d110af778a59aae51c81d195768e353d8b52f88081", size = 557249, upload-time = "2025-08-27T12:14:08.37Z" }, - { url = "https://files.pythonhosted.org/packages/60/f3/690dd38e2310b6f68858a331399b4d6dbb9132c3e8ef8b4333b96caf403d/rpds_py-0.27.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:13e608ac9f50a0ed4faec0e90ece76ae33b34c0e8656e3dceb9a7db994c692cd", size = 587356, upload-time = "2025-08-27T12:14:10.034Z" }, - { url = "https://files.pythonhosted.org/packages/86/e3/84507781cccd0145f35b1dc32c72675200c5ce8d5b30f813e49424ef68fc/rpds_py-0.27.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dd2135527aa40f061350c3f8f89da2644de26cd73e4de458e79606384f4f68e7", size = 555300, upload-time = "2025-08-27T12:14:11.783Z" }, - { url = "https://files.pythonhosted.org/packages/e5/ee/375469849e6b429b3516206b4580a79e9ef3eb12920ddbd4492b56eaacbe/rpds_py-0.27.1-cp313-cp313t-win32.whl", hash = "sha256:3020724ade63fe320a972e2ffd93b5623227e684315adce194941167fee02688", size = 216714, upload-time = "2025-08-27T12:14:13.629Z" }, - { url = "https://files.pythonhosted.org/packages/21/87/3fc94e47c9bd0742660e84706c311a860dcae4374cf4a03c477e23ce605a/rpds_py-0.27.1-cp313-cp313t-win_amd64.whl", hash = "sha256:8ee50c3e41739886606388ba3ab3ee2aae9f35fb23f833091833255a31740797", size = 228943, upload-time = "2025-08-27T12:14:14.937Z" }, - { url = "https://files.pythonhosted.org/packages/70/36/b6e6066520a07cf029d385de869729a895917b411e777ab1cde878100a1d/rpds_py-0.27.1-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:acb9aafccaae278f449d9c713b64a9e68662e7799dbd5859e2c6b3c67b56d334", size = 362472, upload-time = "2025-08-27T12:14:16.333Z" }, - { url = "https://files.pythonhosted.org/packages/af/07/b4646032e0dcec0df9c73a3bd52f63bc6c5f9cda992f06bd0e73fe3fbebd/rpds_py-0.27.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:b7fb801aa7f845ddf601c49630deeeccde7ce10065561d92729bfe81bd21fb33", size = 345676, upload-time = "2025-08-27T12:14:17.764Z" }, - { url = "https://files.pythonhosted.org/packages/b0/16/2f1003ee5d0af4bcb13c0cf894957984c32a6751ed7206db2aee7379a55e/rpds_py-0.27.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fe0dd05afb46597b9a2e11c351e5e4283c741237e7f617ffb3252780cca9336a", size = 385313, upload-time = "2025-08-27T12:14:19.829Z" }, - { url = "https://files.pythonhosted.org/packages/05/cd/7eb6dd7b232e7f2654d03fa07f1414d7dfc980e82ba71e40a7c46fd95484/rpds_py-0.27.1-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b6dfb0e058adb12d8b1d1b25f686e94ffa65d9995a5157afe99743bf7369d62b", size = 399080, upload-time = "2025-08-27T12:14:21.531Z" }, - { url = "https://files.pythonhosted.org/packages/20/51/5829afd5000ec1cb60f304711f02572d619040aa3ec033d8226817d1e571/rpds_py-0.27.1-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ed090ccd235f6fa8bb5861684567f0a83e04f52dfc2e5c05f2e4b1309fcf85e7", size = 523868, upload-time = "2025-08-27T12:14:23.485Z" }, - { url = "https://files.pythonhosted.org/packages/05/2c/30eebca20d5db95720ab4d2faec1b5e4c1025c473f703738c371241476a2/rpds_py-0.27.1-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bf876e79763eecf3e7356f157540d6a093cef395b65514f17a356f62af6cc136", size = 408750, upload-time = "2025-08-27T12:14:24.924Z" }, - { url = "https://files.pythonhosted.org/packages/90/1a/cdb5083f043597c4d4276eae4e4c70c55ab5accec078da8611f24575a367/rpds_py-0.27.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:12ed005216a51b1d6e2b02a7bd31885fe317e45897de81d86dcce7d74618ffff", size = 387688, upload-time = "2025-08-27T12:14:27.537Z" }, - { url = "https://files.pythonhosted.org/packages/7c/92/cf786a15320e173f945d205ab31585cc43969743bb1a48b6888f7a2b0a2d/rpds_py-0.27.1-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:ee4308f409a40e50593c7e3bb8cbe0b4d4c66d1674a316324f0c2f5383b486f9", size = 407225, upload-time = "2025-08-27T12:14:28.981Z" }, - { url = "https://files.pythonhosted.org/packages/33/5c/85ee16df5b65063ef26017bef33096557a4c83fbe56218ac7cd8c235f16d/rpds_py-0.27.1-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0b08d152555acf1f455154d498ca855618c1378ec810646fcd7c76416ac6dc60", size = 423361, upload-time = "2025-08-27T12:14:30.469Z" }, - { url = "https://files.pythonhosted.org/packages/4b/8e/1c2741307fcabd1a334ecf008e92c4f47bb6f848712cf15c923becfe82bb/rpds_py-0.27.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:dce51c828941973a5684d458214d3a36fcd28da3e1875d659388f4f9f12cc33e", size = 562493, upload-time = "2025-08-27T12:14:31.987Z" }, - { url = "https://files.pythonhosted.org/packages/04/03/5159321baae9b2222442a70c1f988cbbd66b9be0675dd3936461269be360/rpds_py-0.27.1-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:c1476d6f29eb81aa4151c9a31219b03f1f798dc43d8af1250a870735516a1212", size = 592623, upload-time = "2025-08-27T12:14:33.543Z" }, - { url = "https://files.pythonhosted.org/packages/ff/39/c09fd1ad28b85bc1d4554a8710233c9f4cefd03d7717a1b8fbfd171d1167/rpds_py-0.27.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:3ce0cac322b0d69b63c9cdb895ee1b65805ec9ffad37639f291dd79467bee675", size = 558800, upload-time = "2025-08-27T12:14:35.436Z" }, - { url = "https://files.pythonhosted.org/packages/c5/d6/99228e6bbcf4baa764b18258f519a9035131d91b538d4e0e294313462a98/rpds_py-0.27.1-cp314-cp314-win32.whl", hash = "sha256:dfbfac137d2a3d0725758cd141f878bf4329ba25e34979797c89474a89a8a3a3", size = 221943, upload-time = "2025-08-27T12:14:36.898Z" }, - { url = "https://files.pythonhosted.org/packages/be/07/c802bc6b8e95be83b79bdf23d1aa61d68324cb1006e245d6c58e959e314d/rpds_py-0.27.1-cp314-cp314-win_amd64.whl", hash = "sha256:a6e57b0abfe7cc513450fcf529eb486b6e4d3f8aee83e92eb5f1ef848218d456", size = 233739, upload-time = "2025-08-27T12:14:38.386Z" }, - { url = "https://files.pythonhosted.org/packages/c8/89/3e1b1c16d4c2d547c5717377a8df99aee8099ff050f87c45cb4d5fa70891/rpds_py-0.27.1-cp314-cp314-win_arm64.whl", hash = "sha256:faf8d146f3d476abfee026c4ae3bdd9ca14236ae4e4c310cbd1cf75ba33d24a3", size = 223120, upload-time = "2025-08-27T12:14:39.82Z" }, - { url = "https://files.pythonhosted.org/packages/62/7e/dc7931dc2fa4a6e46b2a4fa744a9fe5c548efd70e0ba74f40b39fa4a8c10/rpds_py-0.27.1-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:ba81d2b56b6d4911ce735aad0a1d4495e808b8ee4dc58715998741a26874e7c2", size = 358944, upload-time = "2025-08-27T12:14:41.199Z" }, - { url = "https://files.pythonhosted.org/packages/e6/22/4af76ac4e9f336bfb1a5f240d18a33c6b2fcaadb7472ac7680576512b49a/rpds_py-0.27.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:84f7d509870098de0e864cad0102711c1e24e9b1a50ee713b65928adb22269e4", size = 342283, upload-time = "2025-08-27T12:14:42.699Z" }, - { url = "https://files.pythonhosted.org/packages/1c/15/2a7c619b3c2272ea9feb9ade67a45c40b3eeb500d503ad4c28c395dc51b4/rpds_py-0.27.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9e960fc78fecd1100539f14132425e1d5fe44ecb9239f8f27f079962021523e", size = 380320, upload-time = "2025-08-27T12:14:44.157Z" }, - { url = "https://files.pythonhosted.org/packages/a2/7d/4c6d243ba4a3057e994bb5bedd01b5c963c12fe38dde707a52acdb3849e7/rpds_py-0.27.1-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:62f85b665cedab1a503747617393573995dac4600ff51869d69ad2f39eb5e817", size = 391760, upload-time = "2025-08-27T12:14:45.845Z" }, - { url = "https://files.pythonhosted.org/packages/b4/71/b19401a909b83bcd67f90221330bc1ef11bc486fe4e04c24388d28a618ae/rpds_py-0.27.1-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fed467af29776f6556250c9ed85ea5a4dd121ab56a5f8b206e3e7a4c551e48ec", size = 522476, upload-time = "2025-08-27T12:14:47.364Z" }, - { url = "https://files.pythonhosted.org/packages/e4/44/1a3b9715c0455d2e2f0f6df5ee6d6f5afdc423d0773a8a682ed2b43c566c/rpds_py-0.27.1-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f2729615f9d430af0ae6b36cf042cb55c0936408d543fb691e1a9e36648fd35a", size = 403418, upload-time = "2025-08-27T12:14:49.991Z" }, - { url = "https://files.pythonhosted.org/packages/1c/4b/fb6c4f14984eb56673bc868a66536f53417ddb13ed44b391998100a06a96/rpds_py-0.27.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1b207d881a9aef7ba753d69c123a35d96ca7cb808056998f6b9e8747321f03b8", size = 384771, upload-time = "2025-08-27T12:14:52.159Z" }, - { url = "https://files.pythonhosted.org/packages/c0/56/d5265d2d28b7420d7b4d4d85cad8ef891760f5135102e60d5c970b976e41/rpds_py-0.27.1-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:639fd5efec029f99b79ae47e5d7e00ad8a773da899b6309f6786ecaf22948c48", size = 400022, upload-time = "2025-08-27T12:14:53.859Z" }, - { url = "https://files.pythonhosted.org/packages/8f/e9/9f5fc70164a569bdd6ed9046486c3568d6926e3a49bdefeeccfb18655875/rpds_py-0.27.1-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fecc80cb2a90e28af8a9b366edacf33d7a91cbfe4c2c4544ea1246e949cfebeb", size = 416787, upload-time = "2025-08-27T12:14:55.673Z" }, - { url = "https://files.pythonhosted.org/packages/d4/64/56dd03430ba491db943a81dcdef115a985aac5f44f565cd39a00c766d45c/rpds_py-0.27.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:42a89282d711711d0a62d6f57d81aa43a1368686c45bc1c46b7f079d55692734", size = 557538, upload-time = "2025-08-27T12:14:57.245Z" }, - { url = "https://files.pythonhosted.org/packages/3f/36/92cc885a3129993b1d963a2a42ecf64e6a8e129d2c7cc980dbeba84e55fb/rpds_py-0.27.1-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:cf9931f14223de59551ab9d38ed18d92f14f055a5f78c1d8ad6493f735021bbb", size = 588512, upload-time = "2025-08-27T12:14:58.728Z" }, - { url = "https://files.pythonhosted.org/packages/dd/10/6b283707780a81919f71625351182b4f98932ac89a09023cb61865136244/rpds_py-0.27.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:f39f58a27cc6e59f432b568ed8429c7e1641324fbe38131de852cd77b2d534b0", size = 555813, upload-time = "2025-08-27T12:15:00.334Z" }, - { url = "https://files.pythonhosted.org/packages/04/2e/30b5ea18c01379da6272a92825dd7e53dc9d15c88a19e97932d35d430ef7/rpds_py-0.27.1-cp314-cp314t-win32.whl", hash = "sha256:d5fa0ee122dc09e23607a28e6d7b150da16c662e66409bbe85230e4c85bb528a", size = 217385, upload-time = "2025-08-27T12:15:01.937Z" }, - { url = "https://files.pythonhosted.org/packages/32/7d/97119da51cb1dd3f2f3c0805f155a3aa4a95fa44fe7d78ae15e69edf4f34/rpds_py-0.27.1-cp314-cp314t-win_amd64.whl", hash = "sha256:6567d2bb951e21232c2f660c24cf3470bb96de56cdcb3f071a83feeaff8a2772", size = 230097, upload-time = "2025-08-27T12:15:03.961Z" }, -] - -[[package]] -name = "six" -version = "1.17.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, -] - -[[package]] -name = "sniffio" -version = "1.3.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372, upload-time = "2024-02-25T23:20:04.057Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235, upload-time = "2024-02-25T23:20:01.196Z" }, -] - -[[package]] -name = "sse-starlette" -version = "3.0.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "anyio" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/42/6f/22ed6e33f8a9e76ca0a412405f31abb844b779d52c5f96660766edcd737c/sse_starlette-3.0.2.tar.gz", hash = "sha256:ccd60b5765ebb3584d0de2d7a6e4f745672581de4f5005ab31c3a25d10b52b3a", size = 20985, upload-time = "2025-07-27T09:07:44.565Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ef/10/c78f463b4ef22eef8491f218f692be838282cd65480f6e423d7730dfd1fb/sse_starlette-3.0.2-py3-none-any.whl", hash = "sha256:16b7cbfddbcd4eaca11f7b586f3b8a080f1afe952c15813455b162edea619e5a", size = 11297, upload-time = "2025-07-27T09:07:43.268Z" }, -] - -[[package]] -name = "starlette" -version = "0.48.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "anyio" }, - { name = "typing-extensions", marker = "python_full_version < '3.13'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a7/a5/d6f429d43394057b67a6b5bbe6eae2f77a6bf7459d961fdb224bf206eee6/starlette-0.48.0.tar.gz", hash = "sha256:7e8cee469a8ab2352911528110ce9088fdc6a37d9876926e73da7ce4aa4c7a46", size = 2652949, upload-time = "2025-09-13T08:41:05.699Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/be/72/2db2f49247d0a18b4f1bb9a5a39a0162869acf235f3a96418363947b3d46/starlette-0.48.0-py3-none-any.whl", hash = "sha256:0764ca97b097582558ecb498132ed0c7d942f233f365b86ba37770e026510659", size = 73736, upload-time = "2025-09-13T08:41:03.869Z" }, -] - -[[package]] -name = "typing-extensions" -version = "4.15.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, -] - -[[package]] -name = "typing-inspection" -version = "0.4.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/55/e3/70399cb7dd41c10ac53367ae42139cf4b1ca5f36bb3dc6c9d33acdb43655/typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464", size = 75949, upload-time = "2025-10-01T02:14:41.687Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7", size = 14611, upload-time = "2025-10-01T02:14:40.154Z" }, -] - -[[package]] -name = "urllib3" -version = "2.6.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed", size = 435556, upload-time = "2026-01-07T16:24:43.925Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4", size = 131584, upload-time = "2026-01-07T16:24:42.685Z" }, -] - -[[package]] -name = "uvicorn" -version = "0.37.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "click" }, - { name = "h11" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/71/57/1616c8274c3442d802621abf5deb230771c7a0fec9414cb6763900eb3868/uvicorn-0.37.0.tar.gz", hash = "sha256:4115c8add6d3fd536c8ee77f0e14a7fd2ebba939fed9b02583a97f80648f9e13", size = 80367, upload-time = "2025-09-23T13:33:47.486Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/85/cd/584a2ceb5532af99dd09e50919e3615ba99aa127e9850eafe5f31ddfdb9a/uvicorn-0.37.0-py3-none-any.whl", hash = "sha256:913b2b88672343739927ce381ff9e2ad62541f9f8289664fa1d1d3803fa2ce6c", size = 67976, upload-time = "2025-09-23T13:33:45.842Z" }, -] - -[[package]] -name = "werkzeug" -version = "3.1.5" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "markupsafe" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/5a/70/1469ef1d3542ae7c2c7b72bd5e3a4e6ee69d7978fa8a3af05a38eca5becf/werkzeug-3.1.5.tar.gz", hash = "sha256:6a548b0e88955dd07ccb25539d7d0cc97417ee9e179677d22c7041c8f078ce67", size = 864754, upload-time = "2026-01-08T17:49:23.247Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ad/e4/8d97cca767bcc1be76d16fb76951608305561c6e056811587f36cb1316a8/werkzeug-3.1.5-py3-none-any.whl", hash = "sha256:5111e36e91086ece91f93268bb39b4a35c1e6f1feac762c9c822ded0a4e322dc", size = 225025, upload-time = "2026-01-08T17:49:21.859Z" }, -]