From 6685bdb9a87ec09562396ff45e09037d342a09c4 Mon Sep 17 00:00:00 2001 From: chakcy <947105045@qq.com> Date: Fri, 6 Mar 2026 17:57:44 +0800 Subject: [PATCH] first commit --- .gitignore | 13 + .python-version | 1 + LICENSE | 9 + README.md | 58 + config.toml | 80 + public/chongming.ico | Bin 0 -> 237133 bytes public/config.toml | 78 + public/main.py | 67 + public/server.py | 19 + public/utils/__init__.py | 0 public/utils/config.py | 88 ++ public/utils/launch.py | 32 + pyproject.toml | 45 + pyrightconfig.json | 9 + requirements.txt | 16 + src/chongming/__init__.py | 19 + src/chongming/app/__init__.py | 105 ++ src/chongming/app/api/__init__.py | 18 + src/chongming/app/api/deps.py | 31 + src/chongming/app/api/routers/__init__.py | 0 src/chongming/app/api/routers/auth.py | 134 ++ src/chongming/app/api/routers/todo.py | 59 + src/chongming/app/core/__init__.py | 0 src/chongming/app/core/config.py | 125 ++ src/chongming/app/core/database.py | 11 + src/chongming/app/core/jwt_cache.py | 459 ++++++ src/chongming/app/core/logger.py | 64 + src/chongming/app/core/security.py | 14 + src/chongming/app/model/__init__.py | 0 src/chongming/app/model/todo.py | 28 + src/chongming/app/model/user.py | 36 + src/chongming/app/service/__init__.py | 0 src/chongming/app/service/auth.py | 166 ++ src/chongming/app/service/todo.py | 65 + src/chongming/app/service/user.py | 28 + src/chongming/scripts/__init__.py | 0 src/chongming/scripts/build.py | 253 +++ src/chongming/scripts/clean_pycache.py | 12 + src/chongming/scripts/code_content.py | 36 + src/plugins/__init__.py | 2 + uv.lock | 1711 +++++++++++++++++++++ 41 files changed, 3891 insertions(+) create mode 100644 .gitignore create mode 100644 .python-version create mode 100644 LICENSE create mode 100644 README.md create mode 100644 config.toml create mode 100644 public/chongming.ico create mode 100644 public/config.toml create mode 100644 public/main.py create mode 100644 public/server.py create mode 100644 public/utils/__init__.py create mode 100644 public/utils/config.py create mode 100644 public/utils/launch.py create mode 100644 pyproject.toml create mode 100644 pyrightconfig.json create mode 100644 requirements.txt create mode 100644 src/chongming/__init__.py create mode 100644 src/chongming/app/__init__.py create mode 100644 src/chongming/app/api/__init__.py create mode 100644 src/chongming/app/api/deps.py create mode 100644 src/chongming/app/api/routers/__init__.py create mode 100644 src/chongming/app/api/routers/auth.py create mode 100644 src/chongming/app/api/routers/todo.py create mode 100644 src/chongming/app/core/__init__.py create mode 100644 src/chongming/app/core/config.py create mode 100644 src/chongming/app/core/database.py create mode 100644 src/chongming/app/core/jwt_cache.py create mode 100644 src/chongming/app/core/logger.py create mode 100644 src/chongming/app/core/security.py create mode 100644 src/chongming/app/model/__init__.py create mode 100644 src/chongming/app/model/todo.py create mode 100644 src/chongming/app/model/user.py create mode 100644 src/chongming/app/service/__init__.py create mode 100644 src/chongming/app/service/auth.py create mode 100644 src/chongming/app/service/todo.py create mode 100644 src/chongming/app/service/user.py create mode 100644 src/chongming/scripts/__init__.py create mode 100644 src/chongming/scripts/build.py create mode 100644 src/chongming/scripts/clean_pycache.py create mode 100644 src/chongming/scripts/code_content.py create mode 100644 src/plugins/__init__.py create mode 100644 uv.lock diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f19c072 --- /dev/null +++ b/.gitignore @@ -0,0 +1,13 @@ +# Python-generated files +__pycache__/ +*.py[oc] +build/ +dist/ +wheels/ +*.egg-info + +# Virtual environments +.venv +logs/ +resources/ +output.md \ No newline at end of file diff --git a/.python-version b/.python-version new file mode 100644 index 0000000..902b2c9 --- /dev/null +++ b/.python-version @@ -0,0 +1 @@ +3.11 \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..0e9d26a --- /dev/null +++ b/LICENSE @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) 2026 chakcy + +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/README.md b/README.md new file mode 100644 index 0000000..ba1a1f1 --- /dev/null +++ b/README.md @@ -0,0 +1,58 @@ +# chongming + +[TOC] + +作者: chakcy + +版本: 0.1.0 + +## 运行项目 + +uv 环境 + +```shell +uv run serve +``` + +纯 python 环境 + +```shell +python -m venv .venv +source .venv/bin/activate # windwows 命令为 .venv\Scripts\activate +pip install -r requirements.txt +pip install -e . +serve +``` + +## 打包项目 + +uv 环境 + +```shell +uv run build +``` + +纯 python 环境 +```shell +source .venv/bin/activate # windwows 命令为 .venv\Scripts\activate +build +``` + +打包出来的文件在 build 目录下 + +```text +build +├── resources +│   ├── chongming.ico +│   ├── plugins.mbank +│   └── app.mbank +├── config.toml +├── db.sqlite3 +└── chongming # windows chongming.exe +``` + +运行打包后的项目 +```shell +cd build +chongming # windows chongming.exe +``` diff --git a/config.toml b/config.toml new file mode 100644 index 0000000..313c48c --- /dev/null +++ b/config.toml @@ -0,0 +1,80 @@ +[default] +app.name = "chongming" +app.version = "chongming" +app.description = "基于 FastAPI 和 Tortoise-ORM 的 chongming 打包脚手架" +app.debug = false +env = "development" + +[database] +type = "sqlite" +url = "sqlite+aiosqlite:///./database.db" +generate_schemas = true # 生产环境使用迁移工具 + +[database.sqlite] +echo = true +pool_size = 20 +max_overflow = 10 +pool_timeout = 30 +pool_recycle = 300 +pool_pre_ping = true +connect_args.timeout = 15 +connect_args.check_same_thread = false + +[security] +secret_key = "your-secret-key-change-in-production" +algorithm = "HS256" +access_token_expire_minutes = 30 +refresh_token_expire_days = 7 +jwt_cache_db_path = "jwt_cache" +max_sessions_per_user = 5 + +[development] +env = "development" +debug = true + +[development.server] +host = "127.0.0.1" +port = 8000 +reload = true + +[development.logging] +level = "DEBUG" +file = "logs/dev.log" +format = "%(asctime)s - %(name)s - %(levelname)s - %(message)s" + +[development.cors] +allow_origins = ["*"] +allow_credentials = true +allow_methods = ["*"] +allow_headers = ["*"] + +[production] +env = "production" +debug = false + +[production.server] +host = "0.0.0.0" +port = 8000 +reload = false +workers = 4 + +[production.logging] +level = "INFO" +file = "logs/prod.log" +format = "%(asctime)s - %(name)s - %(levelname)s - %(message)s" +max_size = 10485760 # 10MB +backup_count = 5 # 最多保存 10 个日志文件 + +[production.cors] +allow_origins = ["https://yourdomain.com", "http://localhost:8000", "http://127.0.0.1:8000"] +allow_credentials = true +allow_methods = ["GET", "POST", "PUT", "DELETE"] +allow_headers = ["Authorization", "Content-Type"] + +[production.module_system] +type = "module-bank" +path = ["resources/app.mbank", "resources/plugins.mbank"] + +[production.file_system] +type = "svfs" +path = "resources/application.vfs" diff --git a/public/chongming.ico b/public/chongming.ico new file mode 100644 index 0000000000000000000000000000000000000000..8e36272f41d38f6cb58f40f330b7005740dfa9fd GIT binary patch literal 237133 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%0ACnuR|)U34Ly+ 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

BKKewZ89+?#ur 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

-ExE;Q)ZrenXZ? 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 literal 0 HcmV?d00001 diff --git a/public/config.toml b/public/config.toml new file mode 100644 index 0000000..c1aef49 --- /dev/null +++ b/public/config.toml @@ -0,0 +1,78 @@ +[default] +app.name = "chongming" +app.version = "0.1.0" +app.description = "基于 FastAPI 的 chongming 打包脚手架" +app.debug = false +env = "production" + +[database] +type = "sqlite" +url = "sqlite+aiosqlite:///./database.db" +generate_schemas = true # 生产环境使用迁移工具 + +[database.sqlite] +echo = true +pool_size = 20 +max_overflow = 10 +pool_timeout = 30 +pool_recycle = 300 +pool_pre_ping = true +connect_args.timeout = 15 +connect_args.check_same_thread = false + +[security] +secret_key = "your-secret-key-change-in-production" +algorithm = "HS256" +access_token_expire_minutes = 30 +refresh_token_expire_days = 7 +jwt_cache_db_path = "jwt_cache" +max_sessions_per_user = 5 + +[development] +env = "development" +debug = true + +[development.server] +host = "127.0.0.1" +port = 8001 +reload = true + +[development.logging] +level = "DEBUG" +file = "logs/dev.log" +format = "%(asctime)s - %(name)s - %(levelname)s - %(message)s" + +[development.cors] +allow_origins = ["*"] +allow_credentials = true +allow_methods = ["*"] +allow_headers = ["*"] + +[production] +env = "production" +debug = false + +[production.server] +host = "0.0.0.0" +port = 8000 +reload = false +workers = 4 + +[production.logging] +level = "INFO" +file = "logs/prod.log" +format = "%(asctime)s - %(name)s - %(levelname)s - %(message)s" + +[production.cors] +allow_origins = ["https://yourdomain.com", "http://localhost:8000", "http://127.0.0.1:8000"] +allow_credentials = true +allow_methods = ["GET", "POST", "PUT", "DELETE"] +allow_headers = ["Authorization", "Content-Type"] + +[production.module_system] +type = "module-bank" +path = ["resources/app.mbank", "resources/plugins.mbank"] + +[production.file_system] +type = "svfs" +path = "resources/application.vfs" diff --git a/public/main.py b/public/main.py new file mode 100644 index 0000000..3b03f92 --- /dev/null +++ b/public/main.py @@ -0,0 +1,67 @@ +# main.py - 修复 reload 问题 +#!/usr/bin/env python3 +""" +FastAPI + Tortoise-ORM + chongming 示例 +主入口文件,适配 chongming 打包系统 +""" +import sys +from utils.launch import launch +from multiprocessing import freeze_support +import server + + +def app_run(app_config: dict, default_config: dict): + """ + 应用运行函数 - 适配模块银行环境 + + Args: + app_config: 应用配置 + default_config: 默认配置 + """ + import uvicorn + from app.core.logger import setup_logging, get_logger # type: ignore + + setup_logging(app_config["logging"]) + logger = get_logger("app") + + # 获取服务器配置 + server_config = app_config.get("server", {}) + host = server_config.get("host", "0.0.0.0") + port = server_config.get("port", 8000) + + # 打包环境强制禁用重载 + is_frozen = getattr(sys, "frozen", False) + reload = False if is_frozen else server_config.get("reload", False) + workers = server_config.get("workers", 4) + + # 显示启动信息 + env = app_config.get("env", "development") + logger.info("=" * 50) + logger.info(f"🚀 启动 {default_config.get('app.name', 'FastAPI 应用')}") + logger.info(f"📦 版本: {default_config.get('app.version', '1.0.0')}") + logger.info(f"🌍 环境: {env}") + logger.info(f"📍 地址: http://{host}:{port}") + logger.info(f"📚 文档: http://{host}:{port}/docs") + logger.info(f"🔧 调试: {'启用' if app_config.get('debug', False) else '禁用'}") + logger.info(f"🔄 重载: {'启用' if reload else '禁用'}") + logger.info(f"👥 Workers: {workers}") + logger.info("=" * 50) + + uvicorn.run( + "server:app", + host=host, + port=port, + reload=reload, + workers=workers, + log_level="debug" if app_config.get("debug", False) else "info", + access_log=True, + ) + + +def main(): + freeze_support() + launch(app_run, "production") + + +if __name__ == "__main__": + main() diff --git a/public/server.py b/public/server.py new file mode 100644 index 0000000..022f923 --- /dev/null +++ b/public/server.py @@ -0,0 +1,19 @@ +# server.py +import sys +from utils.launch import init_module_bank +from utils.config import ConfigLoader + +config = ConfigLoader("config.toml") +init_module_bank(config) + +# 从数据库导入真正的 app 模块 +try: + import app # type: ignore # 此时会从 SQLite 数据库加载 + + app_instance = app.app # 获取 FastAPI 实例 +except ImportError as e: + print(f"无法从数据库导入 app 模块: {e}") + sys.exit(1) + +# 暴露 ASGI 应用变量,供 uvicorn 使用 +app = app_instance diff --git a/public/utils/__init__.py b/public/utils/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/public/utils/config.py b/public/utils/config.py new file mode 100644 index 0000000..0e3d837 --- /dev/null +++ b/public/utils/config.py @@ -0,0 +1,88 @@ +# config_loader.py - 读取config.toml的示例代码 + + +import os +import sys +from pathlib import Path +from typing import Any, Dict, Optional + +if sys.version_info >= (3, 11): + import tomllib +else: + import tomli as tomllib + + +class ConfigLoader: + """TOML配置文件加载器""" + + def __init__(self, config_path: Optional[str] = None): + """ + 初始化配置加载器 + + Args: + config_path: 配置文件路径,如果为None则自动查找 + """ + if config_path is None: + # 自动查找配置文件 + config_path = self._find_config_file() + + self.config_path = Path(config_path) + self._config: Dict[str, Any] = {} + self.load() + + def _find_config_file(self) -> str: + """自动查找配置文件""" + possible_paths = [ + "config.toml", + "config/config.toml", + "~/.config/myapp/config.toml", + "/etc/myapp/config.toml", + ] + + for path in possible_paths: + expanded_path = os.path.expanduser(path) + if os.path.exists(expanded_path): + return expanded_path + + raise FileNotFoundError("未找到配置文件") + + def load(self) -> None: + """加载配置文件""" + if not self.config_path.exists(): + raise FileNotFoundError(f"配置文件不存在: {self.config_path}") + + with open(self.config_path, "r", encoding="utf-8") as f: + self._config = tomllib.loads(f.read()) + + def get(self, key: str, default: Any = None) -> Any: + """获取配置值,支持点号分隔的路径""" + keys = key.split(".") + value = self._config + + try: + for k in keys: + value = value[k] + return value + except (KeyError, TypeError): + return default + + def get_section(self, section: str) -> Dict[str, Any]: + """获取整个配置节""" + return self._config.get(section, {}) + + def reload(self) -> None: + """重新加载配置文件""" + self.load() + + def __getitem__(self, key: str) -> Any: + """支持字典式访问""" + return self.get(key) + + def __contains__(self, key: str) -> bool: + """检查配置是否存在""" + return self.get(key) is not None + + @property + def all(self) -> Dict[str, Any]: + """获取所有配置""" + return self._config diff --git a/public/utils/launch.py b/public/utils/launch.py new file mode 100644 index 0000000..d18e7c9 --- /dev/null +++ b/public/utils/launch.py @@ -0,0 +1,32 @@ +from .config import ConfigLoader +import os +from module_bank import PythonToSQLite +from typing import Callable + +key = None + + +def init_module_bank(config): + MODULE_BANK_PATH_LIST = config["production"]["module_system"]["path"] + for module_path in MODULE_BANK_PATH_LIST: + if os.path.exists(module_path) == False: + raise ValueError(f"模块路径不存在: {module_path}") + + packer_list = [ + PythonToSQLite(module_path, key=key) for module_path in MODULE_BANK_PATH_LIST + ] + for packer in packer_list: + modules = packer.list_modules() + for module in modules: + print(f"{module['module_name']} {'[包]' if module['is_package'] else ''}") + packer.install_importer(key=key) + + +def launch(run_fun: Callable[[dict, dict], None], run_mode: str): + config = ConfigLoader("config.toml") + + # 获取对应运行模式的配置 + default_config = config.get("default", {}) + app_config = config.get(run_mode, {}) + + run_fun(app_config, default_config) diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..d56f41c --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,45 @@ +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[project] +name = "chongming" +version = "0.1.0" +description = "基于 modules-bank 的 fastapi 打包脚手架" +readme = "README.md" +requires-python = ">=3.8" +dependencies = [ + "aiosqlite", + "bcrypt==4.0.1", + "fastapi[uvicorn]", + "module-bank", + "passlib[bcrypt]", + "pyjwt", + "sqlite-vfs", + "sqlitedict", + "sqlmodel[aiosqlite]", + "tomli", + "typing-extensions", + "uvicorn", +] + + +[[tool.uv.index]] +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +default = true + +[[tool.uv.index]] +url = "https://mirrors.ustc.edu.cn/pypi/web/simple/" + +[dependency-groups] +dev = [ + "pyarmor", + "pyinstaller", +] + +[tool.hatch.build.targets.wheel] +packages = ["src/chongming"] + +[project.scripts] +build = "chongming.scripts.build:build" +serve = "chongming:serve" \ No newline at end of file diff --git a/pyrightconfig.json b/pyrightconfig.json new file mode 100644 index 0000000..1b0c4fb --- /dev/null +++ b/pyrightconfig.json @@ -0,0 +1,9 @@ +{ + "venvPath": ".", + "venv": ".venv", + "pythonVersion": "3.11", + "extraPaths": [ + "./", + "./.venv/lib/python3.12/site-packages" + ] +} \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..528d3f4 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,16 @@ +aerich +fastapi[uvicorn] +module-bank==0.1.1 +passlib +pydantic-settings +pydantic[email] +sqlite-vfs +toml +tortoise-orm +uvicorn[standard] +sqlitedict +pyjwt +bcrypt==4.0.1 +pyinstaller +aerich +requests \ No newline at end of file diff --git a/src/chongming/__init__.py b/src/chongming/__init__.py new file mode 100644 index 0000000..842d461 --- /dev/null +++ b/src/chongming/__init__.py @@ -0,0 +1,19 @@ +import uvicorn +from .app.core.config import load_config +from .app.core.logger import setup_logging, get_logger + + +def serve(): + config = load_config() + env = config["default"]["env"] + server_config = config[env]["server"] + log_config = config[env]["logging"] + setup_logging(log_config) + logget = get_logger("app") + logget.info(f"启动服务: {server_config}") + logget.info(f"启动日志: {log_config}") + uvicorn.run("chongming.app:app", **server_config) + + +if __name__ == "__main__": + serve() diff --git a/src/chongming/app/__init__.py b/src/chongming/app/__init__.py new file mode 100644 index 0000000..f111a16 --- /dev/null +++ b/src/chongming/app/__init__.py @@ -0,0 +1,105 @@ +from contextlib import asynccontextmanager + +from fastapi import FastAPI +from fastapi.middleware.cors import CORSMiddleware +from sqlmodel import SQLModel, text +from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession, async_sessionmaker +from sqlalchemy.exc import OperationalError + +from .core.config import get_config +from .core.jwt_cache import get_jwt_cache +from .core.logger import get_logger +from .api import api_router + +config = get_config() +logger = get_logger("app") + +try: + env = config["default"]["env"] +except KeyError: # pragma: no cover + raise ValueError("配置不存在") + + +# 生命周期管理 +@asynccontextmanager +async def lifespan(app: FastAPI): + from plugins import hello + + hello() + database = config["database"] + database_type = database["type"] + database_config = database.get(database_type, None) + if database_config is None: + raise ValueError("配置不存在") + + # 启动时:创建引擎和会话工厂,初始化数据库表 + engine = create_async_engine(database["url"], **database_config) + async_session_maker = async_sessionmaker( + engine, class_=AsyncSession, expire_on_commit=False + ) + + # 将资源存储到 app.state + app.state.engine = engine + app.state.async_session_maker = async_session_maker + + # 创建表(异步方式) + if env == "development": + async with engine.begin() as conn: + if database_type == "sqlite": + await conn.execute(text("PRAGMA journal_mode=WAL")) + await conn.execute(text("PRAGMA synchronous=NORMAL")) + try: + await conn.run_sync( + lambda conn: SQLModel.metadata.create_all( + bind=conn, checkfirst=True + ) + ) + except OperationalError as e: + if "already exists" in str(e): + raise + + yield # 应用运行期间 + + # 关闭时:释放引擎 + await engine.dispose() + get_jwt_cache().close() + + +cors = config[env].get("cors", {}) + +# 创建 FastAPI 应用 +app = FastAPI( + title=config["default"]["app"]["name"], + version=config["default"]["app"]["version"], + description=config["default"]["app"]["description"], + docs_url="/docs" if config[env]["debug"] else None, + redoc_url="/redoc" if config[env]["debug"] else None, + openapi_url="/openapi.json" if config[env]["debug"] else None, + lifespan=lifespan, +) +# 添加 CORS 中间件 +app.add_middleware(CORSMiddleware, **cors) +app.include_router(api_router, prefix="/api/v1") + + +# 根路由 +@app.get("/", summary="根路径") +async def root(): + """根路径,返回应用信息""" + return { + "message": f"欢迎使用 {config["default"]["app"]["name"]}", + "version": config["default"]["app"]["version"], + "docs": "/docs" if config[env]["debug"] else None, + "health": "/api/v1/health", + } + + +# 全局异常处理器 +@app.exception_handler(Exception) +async def global_exception_handler(request, exc): + """全局异常处理器""" + logger.error(f"全局异常: {exc}") + return { + "error": "内部服务器错误", + "detail": str(exc) if config[env]["debug"] else "请查看服务器日志", + } diff --git a/src/chongming/app/api/__init__.py b/src/chongming/app/api/__init__.py new file mode 100644 index 0000000..7dd6c03 --- /dev/null +++ b/src/chongming/app/api/__init__.py @@ -0,0 +1,18 @@ +""" +API 路由 +""" + +from fastapi import APIRouter + +from .routers import todo, auth + +# 创建主路由 +api_router = APIRouter() + +# 注册子路由 +api_router.include_router(todo.router, prefix="/todos", tags=["todo"]) +api_router.include_router(auth.router, prefix="/auth", tags=["authentication"]) + + +# 导出路由 +__all__ = ["api_router"] diff --git a/src/chongming/app/api/deps.py b/src/chongming/app/api/deps.py new file mode 100644 index 0000000..3fe9b06 --- /dev/null +++ b/src/chongming/app/api/deps.py @@ -0,0 +1,31 @@ +from fastapi import Depends, HTTPException, status +from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials + +from ..service.auth import get_auth_service +from ..core.jwt_cache import TokenData + + +security = HTTPBearer() + + +async def get_current_user( + credentials: HTTPAuthorizationCredentials = Depends(security), +) -> TokenData: + """ + 获取当前用户依赖项 + + 验证访问令牌并返回用户信息 + """ + auth_service = get_auth_service() + + token = credentials.credentials + token_data = await auth_service.validate_access_token(token) + + if token_data is None: + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail="无效的访问令牌", + headers={"WWW-Authenticate": "Bearer"}, + ) + + return token_data diff --git a/src/chongming/app/api/routers/__init__.py b/src/chongming/app/api/routers/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/chongming/app/api/routers/auth.py b/src/chongming/app/api/routers/auth.py new file mode 100644 index 0000000..d30942c --- /dev/null +++ b/src/chongming/app/api/routers/auth.py @@ -0,0 +1,134 @@ +from fastapi import APIRouter, Depends, HTTPException, status, Request +from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials +from sqlalchemy.ext.asyncio import AsyncSession + +from ...core.database import get_session +from ...core.jwt_cache import get_jwt_cache, TokenData +from ...core.security import verify_password +from ...service.user import UserService +from ...service.auth import get_auth_service +from ...model.user import UserCreate, UserRead, UserLogin +from ..deps import get_current_user + + +router = APIRouter(tags=["authentication"]) + +security = HTTPBearer() + + +@router.post("/register", response_model=UserRead) +async def register( + user_data: UserCreate, + session: AsyncSession = Depends(get_session), +): + print(user_data.password) + + existing = await UserService.get_user_by_email(user_data.email, session) + if existing: + raise HTTPException(status_code=400, detail="邮箱已被注册") + + user = await UserService.create_user( + session=session, + email=user_data.email, + password=user_data.password, + username=user_data.username, + full_name=user_data.full_name, + ) + return user + + +@router.post("/login") +async def login( + user_data: UserLogin, + request: Request, + session: AsyncSession = Depends(get_session), +): + user = await UserService.get_user_by_email(user_data.email, session) + if not user: + raise HTTPException(status_code=400, detail="邮箱或密码错误") + if not verify_password(user_data.password, user.hashed_password): + raise HTTPException(status_code=400, detail="邮箱或密码错误") + if not user.is_active: + raise HTTPException(status_code=400, detail="用户被禁用") + + cache = get_jwt_cache() + user_data_dict = { + "sub": str(user.id), + "email": user.email, + "username": user.username, + } + token = cache.create_token( + user_id=str(user.id), + user_data=user_data_dict, + token_type="access", + device_id=None, + user_agent=request.headers.get("user-agent") if request else None, + ip_address=request.client.host if request else None, # type: ignore + ) + + return {"access_token": token, "token_type": "bearer"} + + +@router.post("/refresh", response_model=dict, summary="刷新访问令牌") +async def refresh_token( + request: Request, + credentials: HTTPAuthorizationCredentials = Depends(security), + session: AsyncSession = Depends(get_session), +): + auth_service = get_auth_service() + + refresh_token = credentials.credentials + new_access_token = await auth_service.refresh_access_token( + refresh_token, session, request + ) + if not new_access_token: + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail="无效的刷新令牌", + headers={"WWW-Authenticate": "Bearer"}, + ) + return {"access_token": new_access_token, "token_type": "bearer"} + + +@router.post("/logout") +async def logout( + credentials: HTTPAuthorizationCredentials = Depends(security), +): + auth_service = get_auth_service() + token = credentials.credentials + await auth_service.logout(token) + return {"message": "登出成功"} + + +@router.post("/logout-all", summary="等出所有设备") +async def logout_all(current_user: TokenData = Depends(get_current_user)): + auth_service = get_auth_service() + await auth_service.logout_all(current_user.user_id) + + return {"message": "所有设备已登出"} + + +@router.get("/sessions", summary="获取用户会话") +async def get_sessions(current_user: TokenData = Depends(get_current_user)): + """获取用户的所有活跃会话""" + auth_service = get_auth_service() + sessions = await auth_service.get_user_sessions(current_user.user_id) + + return { + "user_id": current_user.user_id, + "sessions": sessions, + "count": len(sessions), + } + + +@router.get("/me", response_model=UserRead, summary="获取当前用户信息") +async def get_current_user_info( + session: AsyncSession = Depends(get_session), + current_user: TokenData = Depends(get_current_user), +): + """获取当前登录用户的信息""" + user = await UserService.get_user_by_id(int(current_user.user_id), session) + if not user: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="用户不存在") + + return user diff --git a/src/chongming/app/api/routers/todo.py b/src/chongming/app/api/routers/todo.py new file mode 100644 index 0000000..1dd1ca7 --- /dev/null +++ b/src/chongming/app/api/routers/todo.py @@ -0,0 +1,59 @@ +from typing import List + +from fastapi import APIRouter, Depends, HTTPException +from sqlalchemy.ext.asyncio import AsyncSession + +from ...model.todo import TodoCreate, TodoUpdate, TodoRead +from ...core.database import get_session +from ...service.todo import TodoService +from ...model.user import User +from ..deps import get_current_user + + +router = APIRouter() + + +# -------------------- 路由 -------------------- +@router.post("/", response_model=TodoRead, dependencies=[Depends(get_current_user)]) +async def create_todo( + todo: TodoCreate, + session: AsyncSession = Depends(get_session), +): + return await TodoService.create_todo(todo, session) + + +@router.get( + "/", response_model=List[TodoRead], dependencies=[Depends(get_current_user)] +) +async def read_todos( + offset: int = 0, limit: int = 100, session: AsyncSession = Depends(get_session) +): + return await TodoService.get_todos(offset, limit, session) + + +@router.get( + "/{todo_id}", response_model=TodoRead, dependencies=[Depends(get_current_user)] +) +async def read_todo(todo_id: int, session: AsyncSession = Depends(get_session)): + todo = await TodoService.get_todo_by_id(todo_id, session) + if not todo: + raise HTTPException(status_code=404, detail="Todo not found") + return todo + + +@router.patch( + "/{todo_id}", response_model=TodoRead, dependencies=[Depends(get_current_user)] +) +async def update_todo( + todo_id: int, todo_update: TodoUpdate, session: AsyncSession = Depends(get_session) +): + todo = await TodoService.update_todo(todo_id, todo_update, session) + return todo + + +@router.delete("/{todo_id}", dependencies=[Depends(get_current_user)]) +async def delete_todo(todo_id: int, session: AsyncSession = Depends(get_session)): + is_deleted = await TodoService.delete_todo(todo_id, session) + if not is_deleted: + raise HTTPException(status_code=404, detail="Todo not found") + return {"ok": True} diff --git a/src/chongming/app/core/__init__.py b/src/chongming/app/core/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/chongming/app/core/config.py b/src/chongming/app/core/config.py new file mode 100644 index 0000000..ce1b459 --- /dev/null +++ b/src/chongming/app/core/config.py @@ -0,0 +1,125 @@ +import sys +from pathlib import Path +from typing import TypedDict, Literal, Optional, cast + + +if sys.version_info >= (3, 11): + import tomllib + from typing import Required, NotRequired +else: + import tomli as tomllib + from typing_extensions import Required, NotRequired + +# 设置 env 为 development 或 production + + +class DefaultApp(TypedDict): + name: str + version: str + description: str + debug: bool + + +class Default(TypedDict): + app: DefaultApp + env: Literal["production", "development"] + + +class SqliteConnectionArgs(TypedDict, total=False): + timeout: int + check_same_thread: bool + + +class DatabaseSqlite(TypedDict, total=False): + echo: bool + pool_size: int + max_overflow: int + pool_timeout: int + pool_recycle: int + pool_pre_ping: bool + connect_args: SqliteConnectionArgs + + +class Database(TypedDict, total=False): + type: Required[Literal["sqlite", "mysql", "postgresql"]] + url: Required[str] + generate_schemas: bool + sqlite: DatabaseSqlite + mysql: dict + postgresql: dict + + +class Security(TypedDict): + secret_key: str + algorithm: Literal["HS256"] + access_token_expire_minutes: int + jwt_cache_db_path: str + refresh_token_expire_days: int + max_sessions_per_user: int + + +class Server(TypedDict, total=False): + host: Required[str] + port: Required[int] + reload: bool + workers: int + + +class Logging(TypedDict): + level: str + file: str + format: str + max_size: int + backup_count: int + + +class Cors(TypedDict, total=False): + allow_origins: list[str] + allow_credentials: bool + allow_methods: list[str] + allow_headers: list[str] + + +class ModuleSystem(TypedDict, total=False): + type: str + path: list[str] + + +class FileSystem(TypedDict, total=False): + type: str + path: list[str] + + +class Env(TypedDict, total=False): + debug: Required[bool] + server: Required[Server] + logging: Required[Logging] + cors: Cors + module_system: ModuleSystem + file_system: FileSystem + + +class Config(TypedDict): + default: Default + database: Database + security: Security + development: Env + production: Env + + +def load_config(config_path: Path = Path("config.toml")) -> Config: + """从 TOML 文件加载配置""" + if not config_path.exists(): + raise FileNotFoundError(f"配置文件不存在: {config_path}") + with open(config_path, "rb") as f: + return cast(Config, tomllib.load(f)) + + +_config: Optional[Config] = None + + +def get_config(config_path: str = "config.toml") -> Config: + global _config + if _config is None: + _config = load_config(Path(config_path)) + return _config diff --git a/src/chongming/app/core/database.py b/src/chongming/app/core/database.py new file mode 100644 index 0000000..9272215 --- /dev/null +++ b/src/chongming/app/core/database.py @@ -0,0 +1,11 @@ +from typing import AsyncGenerator + +from fastapi import Request +from sqlalchemy.ext.asyncio import AsyncSession + + +# 获取数据库会话的依赖 +async def get_session(request: Request) -> AsyncGenerator[AsyncSession, None]: + async_session_maker = request.app.state.async_session_maker + async with async_session_maker() as session: + yield session diff --git a/src/chongming/app/core/jwt_cache.py b/src/chongming/app/core/jwt_cache.py new file mode 100644 index 0000000..756ff4e --- /dev/null +++ b/src/chongming/app/core/jwt_cache.py @@ -0,0 +1,459 @@ +import jwt +import json +from datetime import datetime, timedelta +from typing import Optional, Dict, Any, List, TypedDict +from sqlitedict import SqliteDict +from pydantic import BaseModel +from dataclasses import dataclass, asdict + +# from pydantic import BaseModel +import hashlib +import threading +from pathlib import Path + +from .config import get_config + + +@dataclass +class TokenCacheData: + """Token 缓存数据结构""" + + token_hash: str + user_id: str + device_id: Optional[str] = None + user_agent: Optional[str] = None + ip_address: Optional[str] = None + created_at: Optional[str] = None + expires_at: Optional[str] = None + last_used: Optional[str] = None + is_active: bool = True + payload_data: Optional[Dict[str, Any]] = None + token_type: str = "access" # access 或 refresh + + def __post_init__(self): + if self.created_at is None: + self.created_at = datetime.utcnow().isoformat() + if self.last_used is None: + self.last_used = datetime.utcnow().isoformat() + + +class JWTCache: + """JWT Token 缓存管理器""" + + def __init__(self, db_path: Optional[str] = None): + self.config = get_config() + + if db_path is None: + db_path = self.config["security"]["jwt_cache_db_path"] + + db_file_path = Path(db_path) + db_file_path.mkdir(parents=True, exist_ok=True) + + self.lock = threading.RLock() + + # 主 Token 缓存 + self.token_db = SqliteDict( + rf"{db_path}/tokens.cache", + tablename="tokens", + autocommit=True, + encode=self._json_encode, + decode=self._json_decode, + journal_mode="WAL", + ) + + # 黑名单缓存 + self.blacklist_db = SqliteDict( + rf"{db_path}/blacklist.cache", + tablename="blacklist", + autocommit=True, + encode=json.dumps, + decode=json.loads, + journal_mode="WAL", + ) + + # 用户会话索引 + self.user_sessions_db = SqliteDict( + rf"{db_path}/user_sessions.cache", + tablename="user_sessions", + autocommit=True, + encode=json.dumps, + decode=json.loads, + journal_mode="WAL", + ) + + self.secret_key = self.config["security"]["secret_key"] + self.algorithm = self.config["security"]["algorithm"] + + def _json_encode(self, obj): + """自定义 JSON 编码器,处理 datetime 对象""" + + def convert_datetime(o): + if isinstance(o, datetime): + return o.isoformat() + raise TypeError( + f"Object of type {o.__class__.__name__} is not JSON serializable" + ) + + return json.dumps(obj, default=convert_datetime) + + def _json_decode(self, s): + """自定义 JSON 解码器""" + return json.loads(s) + + def _hash_token(self, token: str) -> str: + """Token 哈希化(避免存储明文 Token)""" + return hashlib.sha256(token.encode()).hexdigest() + + def create_token( + self, + user_id: str, + user_data: Dict[str, Any], + token_type: str = "access", + device_id: Optional[str] = None, + user_agent: Optional[str] = None, + ip_address: Optional[str] = None, + ) -> str: + """ + 创建并缓存 JWT Token + + Args: + user_id: 用户ID + user_data: 用户数据 + token_type: Token 类型(access 或 refresh) + device_id: 设备ID + user_agent: 用户代理 + ip_address: IP地址 + + Returns: + JWT Token 字符串 + """ + with self.lock: + # 计算过期时间 + if token_type == "access": + expire_minutes = self.config["security"]["access_token_expire_minutes"] + expires_delta = timedelta(minutes=expire_minutes) + else: + expire_days = self.config["security"]["refresh_token_expire_days"] + expires_delta = timedelta(days=expire_days) + + expire = datetime.utcnow() + expires_delta + + # 构建 payload + payload = { + "sub": user_id, + "exp": expire, + "iat": datetime.utcnow(), + "type": token_type, + "data": user_data, + "device_id": device_id, + "jti": self._generate_jti(), # JWT ID,唯一标识 + } + + # 生成 JWT Token + token = jwt.encode(payload, self.secret_key, algorithm=self.algorithm) + if isinstance(token, bytes): + token = token.decode("utf-8") + + # 创建缓存数据 + token_hash = self._hash_token(token) + cache_data = TokenCacheData( + token_hash=token_hash, + user_id=user_id, + device_id=device_id, + user_agent=user_agent, + ip_address=ip_address, + expires_at=expire.isoformat(), # 转换为字符串 + payload_data=payload, + token_type=token_type, + ) + + # 存储到缓存 + self.token_db[token_hash] = asdict(cache_data) + + # 更新用户会话索引 + self._update_user_session_index(user_id, token_hash, token_type) + + # 检查用户会话数限制 + self._enforce_session_limit(user_id) + + return token + + def _generate_jti(self) -> str: + """生成唯一的 JWT ID""" + import uuid + + return str(uuid.uuid4()) + + def _update_user_session_index( + self, user_id: str, token_hash: str, token_type: str + ): + """更新用户会话索引""" + with self.lock: + key = f"{user_id}:{token_type}" + user_tokens = self.user_sessions_db.get(key, []) + + # 添加新 token + user_tokens.append(token_hash) + + # 只保留最近的一定数量的 token + max_tokens = 100 # 每个用户每种类型最多保留100个 token + if len(user_tokens) > max_tokens: + user_tokens = user_tokens[-max_tokens:] + + self.user_sessions_db[key] = user_tokens + + def _enforce_session_limit(self, user_id: str): + """强制用户会话限制""" + max_sessions = self.config["security"]["max_sessions_per_user"] + + access_key = f"{user_id}:access" + refresh_key = f"{user_id}:refresh" + + # 检查 access token 数量 + access_tokens = self.user_sessions_db.get(access_key, []) + if len(access_tokens) > max_sessions: + # 删除最早的 token + tokens_to_remove = access_tokens[:-max_sessions] + for token_hash in tokens_to_remove: + if token_hash in self.token_db: + del self.token_db[token_hash] + + # 更新索引 + self.user_sessions_db[access_key] = access_tokens[-max_sessions:] + + # 检查 refresh token 数量 + refresh_tokens = self.user_sessions_db.get(refresh_key, []) + if len(refresh_tokens) > max_sessions: + tokens_to_remove = refresh_tokens[:-max_sessions] + for token_hash in tokens_to_remove: + if token_hash in self.token_db: + del self.token_db[token_hash] + + self.user_sessions_db[refresh_key] = refresh_tokens[-max_sessions:] + + def validate_token( + self, token: str, token_type: str = "access" + ) -> Optional[Dict[str, Any]]: + """ + 验证 JWT Token + + Args: + token: JWT Token + token_type: 期望的 Token 类型 + + Returns: + 验证成功返回用户数据,失败返回 None + """ + try: + # 解码验证 Token + payload = jwt.decode(token, self.secret_key, algorithms=[self.algorithm]) + + # 检查 Token 类型 + print(f"payload: {payload}") + if payload.get("type") != token_type: + return None + + user_id = payload.get("sub") + jti = payload.get("jti") + + if not user_id or not jti: + return None + + # 检查黑名单 + token_hash = self._hash_token(token) + if self._is_blacklisted(token_hash): + return None + + # 检查缓存 + with self.lock: + cache_data = self.token_db.get(token_hash) + if not cache_data: + return None + + # 检查 Token 是否激活 + if not cache_data.get("is_active", True): + return None + + # 检查是否过期 + expires_at = datetime.fromisoformat(cache_data["expires_at"]) + if datetime.utcnow() > expires_at: + # 标记为不活跃 + cache_data["is_active"] = False + self.token_db[token_hash] = cache_data + return None + + # 更新最后使用时间 + cache_data["last_used"] = datetime.utcnow().isoformat() + self.token_db[token_hash] = cache_data + + return { + "user_id": user_id, + "device_id": cache_data.get("device_id"), + "payload": payload, + "cache_data": cache_data, + } + + except jwt.ExpiredSignatureError: + return None + except jwt.InvalidTokenError: + return None + except Exception: + return None + + def add_to_blacklist(self, token: str, reason: str = "logout"): + """添加 Token 到黑名单""" + token_hash = self._hash_token(token) + expire_time = datetime.utcnow() + timedelta(days=7) # 黑名单保留7天 + + self.blacklist_db[token_hash] = { + "reason": reason, + "blacklisted_at": datetime.utcnow().isoformat(), + "expires_at": expire_time.isoformat(), + } + + def _is_blacklisted(self, token_hash: str) -> bool: + """检查 Token 是否在黑名单中""" + with self.lock: + if token_hash not in self.blacklist_db: + return False + + blacklist_data = self.blacklist_db[token_hash] + expires_at = datetime.fromisoformat(blacklist_data["expires_at"]) + + # 如果黑名单条目已过期,删除它 + if datetime.utcnow() > expires_at: + del self.blacklist_db[token_hash] + return False + + return True + + def invalidate_token(self, token: str): + """使单个 Token 失效""" + with self.lock: + token_hash = self._hash_token(token) + + # 添加到黑名单 + self.add_to_blacklist(token) + + # 标记为不活跃 + if token_hash in self.token_db: + cache_data = self.token_db[token_hash] + cache_data["is_active"] = False + self.token_db[token_hash] = cache_data + + def invalidate_user_tokens(self, user_id: str, token_type: Optional[str] = None): + """使用户的所有 Token 失效""" + with self.lock: + if token_type: + keys = [f"{user_id}:{token_type}"] + else: + keys = [f"{user_id}:access", f"{user_id}:refresh"] + + for key in keys: + token_hashes = self.user_sessions_db.get(key, []) + for token_hash in token_hashes: + # 添加到黑名单 + # 注意:这里我们只有 token_hash,没有原始 token + # 所以只能标记为不活跃 + if token_hash in self.token_db: + cache_data = self.token_db[token_hash] + cache_data["is_active"] = False + self.token_db[token_hash] = cache_data + + # 清空用户会话索引 + self.user_sessions_db[key] = [] + + def get_user_sessions(self, user_id: str) -> List[Dict[str, Any]]: + """获取用户的所有活跃会话""" + with self.lock: + sessions = [] + + for token_type in ["access", "refresh"]: + key = f"{user_id}:{token_type}" + token_hashes = self.user_sessions_db.get(key, []) + + for token_hash in token_hashes: + if token_hash in self.token_db: + cache_data = self.token_db[token_hash] + + # 检查是否活跃且未过期 + if cache_data.get("is_active", True): + expires_at = datetime.fromisoformat( + cache_data["expires_at"] + ) + if datetime.utcnow() <= expires_at: + sessions.append( + { + "token_type": token_type, + "device_id": cache_data.get("device_id"), + "user_agent": cache_data.get("user_agent"), + "ip_address": cache_data.get("ip_address"), + "created_at": cache_data["created_at"], + "last_used": cache_data["last_used"], + "expires_at": cache_data["expires_at"], + } + ) + + return sessions + + def cleanup_expired(self): + """清理过期数据""" + with self.lock: + cleaned_count = 0 + current_time = datetime.utcnow() + + # 清理过期 Token + for token_hash, data in list(self.token_db.items()): + expires_at = datetime.fromisoformat(data["expires_at"]) + if current_time > expires_at: + del self.token_db[token_hash] + cleaned_count += 1 + + # 清理过期黑名单 + for token_hash, data in list(self.blacklist_db.items()): + expires_at = datetime.fromisoformat(data["expires_at"]) + if current_time > expires_at: + del self.blacklist_db[token_hash] + cleaned_count += 1 + + return cleaned_count + + def close(self): + with self.lock: + """关闭所有数据库连接""" + self.token_db.close() + self.blacklist_db.close() + self.user_sessions_db.close() + + +# 全局缓存实例 +_jwt_cache = None + + +def get_jwt_cache() -> JWTCache: + """获取 JWT 缓存实例(单例模式)""" + global _jwt_cache + if _jwt_cache is None: + _jwt_cache = JWTCache() + return _jwt_cache + + +# Token 响应模型 +class TokenResponse(BaseModel): + """Token 响应模型""" + + access_token: str + refresh_token: str + token_type: str = "bearer" + expires_in: int + refresh_expires_in: int + + +# Token 数据模型 +class TokenData(BaseModel): + """Token 数据模型""" + + user_id: str + username: Optional[str] = None + email: Optional[str] = None + scopes: List[str] = [] diff --git a/src/chongming/app/core/logger.py b/src/chongming/app/core/logger.py new file mode 100644 index 0000000..22ad3cc --- /dev/null +++ b/src/chongming/app/core/logger.py @@ -0,0 +1,64 @@ +import logging +from pathlib import Path +from .config import Logging +from logging.handlers import RotatingFileHandler + + +class ExcludeWatchFilesFilter(logging.Filter): + def filter(self, record): + # 如果日志记录来自 watchfiles 模块,则不记录(返回 False) + return not record.name.startswith("watchfiles") + + +def setup_logging(log_config: Logging): + log_level = getattr(logging, log_config["level"], logging.INFO) + log_format = log_config["format"] + # 创建文件夹 + log_file_path = Path(log_config["file"]) + log_file_dir = log_file_path.parent + if log_file_dir != Path("."): + log_file_dir.mkdir(parents=True, exist_ok=True) + + # 设置特定日志级别的过滤 + logging.getLogger("watchfiles").setLevel(logging.WARNING) + + # 配置根日志记录器 + root_logger = logging.getLogger() + root_logger.setLevel(log_level) + + # 创建格式化器 + formatter = logging.Formatter(log_format) + + # 创建轮转文件处理器 - 限制文件大小为 10MB,保留 5 个备份文件 + max_bytes = log_config.get("max_size", 10 * 1024 * 1024) # 默认 10MB + backup_count = log_config.get("backup_count", 5) # 默认保留 5 个备份 + + file_handler = RotatingFileHandler( + log_config["file"], + encoding="utf-8", + maxBytes=max_bytes, + backupCount=backup_count, + ) + file_handler.setFormatter(formatter) + file_handler.addFilter(ExcludeWatchFilesFilter()) + + # 创建控制台处理器并添加过滤器 + console_handler = logging.StreamHandler() + console_handler.setFormatter(formatter) + console_handler.addFilter(ExcludeWatchFilesFilter()) + + # 添加处理器到根日志记录器 + root_logger.addHandler(file_handler) + root_logger.addHandler(console_handler) + + print( + f"日志系统已配置 - 级别: {logging.getLevelName(log_level)}, 文件: {log_config['file']} " + f"(最大:{max_bytes / 1024 / 1024:.1f}MB, 备份:{backup_count})" + ) + + +def get_logger(name: str) -> logging.Logger: + logger = logging.getLogger(name) + # 为每个logger添加过滤器 + logger.addFilter(ExcludeWatchFilesFilter()) + return logger diff --git a/src/chongming/app/core/security.py b/src/chongming/app/core/security.py new file mode 100644 index 0000000..36e7f4e --- /dev/null +++ b/src/chongming/app/core/security.py @@ -0,0 +1,14 @@ +from passlib.context import CryptContext + + +pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto") + + +def verify_password(plain_password: str, hashed_password: str) -> bool: + """验证密码""" + return pwd_context.verify(plain_password, hashed_password) + + +def get_password_hash(password: str) -> str: + """密码哈希""" + return pwd_context.hash(password) diff --git a/src/chongming/app/model/__init__.py b/src/chongming/app/model/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/chongming/app/model/todo.py b/src/chongming/app/model/todo.py new file mode 100644 index 0000000..e53af47 --- /dev/null +++ b/src/chongming/app/model/todo.py @@ -0,0 +1,28 @@ +from typing import Optional + +from sqlmodel import SQLModel, Field + + +# 定义模型 +class TodoBase(SQLModel): + title: str + description: Optional[str] = None + completed: bool = False + + +class Todo(TodoBase, table=True): + id: Optional[int] = Field(default=None, primary_key=True) + + +class TodoCreate(TodoBase): + pass + + +class TodoRead(TodoBase): + id: int + + +class TodoUpdate(SQLModel): + title: Optional[str] = None + description: Optional[str] = None + completed: Optional[bool] = None diff --git a/src/chongming/app/model/user.py b/src/chongming/app/model/user.py new file mode 100644 index 0000000..02cbf3f --- /dev/null +++ b/src/chongming/app/model/user.py @@ -0,0 +1,36 @@ +from typing import Optional +from sqlmodel import SQLModel, Field +from pydantic import BaseModel + + +class UserBase(SQLModel): + email: str = Field(unique=True, index=True) + username: Optional[str] = Field(default=None, max_length=50) + full_name: Optional[str] = Field(default=None, max_length=100) + is_active: bool = Field(default=True) + is_superuser: bool = Field(default=False) + created_at: Optional[str] = Field(default=None) # 可自动填充,此处略 + + +class User(UserBase, table=True): + """用户模型""" + + id: Optional[int] = Field(default=None, primary_key=True) + hashed_password: str + + +class UserCreate(UserBase): + """用户创建模型""" + + password: str + + +class UserRead(UserBase): + """用户读取模型""" + + id: int + + +class UserLogin(BaseModel): + email: str + password: str diff --git a/src/chongming/app/service/__init__.py b/src/chongming/app/service/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/chongming/app/service/auth.py b/src/chongming/app/service/auth.py new file mode 100644 index 0000000..46b4f18 --- /dev/null +++ b/src/chongming/app/service/auth.py @@ -0,0 +1,166 @@ +""" +认证服务 - 处理用户认证和 Token 管理 +""" + +from typing import Optional +from fastapi import Request +from passlib.context import CryptContext +from sqlalchemy.ext.asyncio import AsyncSession + +from ..model.user import User +from .user import UserService +from ..core.jwt_cache import get_jwt_cache, TokenResponse, TokenData +from ..core.config import get_config + + +class AuthService: + """认证服务""" + + def __init__(self): + self.jwt_cache = get_jwt_cache() + self.settings = get_config() + self.pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto") + + async def authenticate_user( + self, email: str, password: str, session: AsyncSession + ) -> Optional[User]: + """验证用户凭据""" + user = await UserService.get_user_by_email(email, session) + if not user: + return None + if not self.pwd_context.verify(password, user.hashed_password): + return None + + return user + + async def create_tokens( + self, + user: User, + request: Optional[Request] = None, + device_id: Optional[str] = None, + ) -> TokenResponse: + """为用户创建访问和刷新令牌""" + + # 获取用户数据 + user_data = { + "username": user.username, + "email": user.email, + "is_superuser": user.is_superuser, + } + + # 获取设备信息 + user_agent = None + ip_address = None + if request: + user_agent = request.headers.get("user-agent") + ip_address = request.client.host if request.client else None + + # 创建访问令牌 + access_token = self.jwt_cache.create_token( + user_id=str(user.id), + user_data=user_data, + token_type="access", + device_id=device_id, + user_agent=user_agent, + ip_address=ip_address, + ) + + # 创建刷新令牌 + refresh_token = self.jwt_cache.create_token( + user_id=str(user.id), + user_data=user_data, + token_type="refresh", + device_id=device_id, + user_agent=user_agent, + ip_address=ip_address, + ) + + return TokenResponse( + access_token=access_token, + refresh_token=refresh_token, + expires_in=self.settings["security"]["access_token_expire_minutes"] * 60, + refresh_expires_in=getattr(self.settings, "refresh_token_expire_days", 7) + * 24 + * 60 + * 60, + ) + + async def validate_access_token(self, token: str) -> Optional[TokenData]: + """验证访问令牌""" + validation = self.jwt_cache.validate_token(token, token_type="access") + if not validation: + return None + + return TokenData( + user_id=validation["user_id"], + username=validation["payload"]["data"].get("username"), + email=validation["payload"]["data"].get("email"), + scopes=[], # 可以根据需要添加权限范围 + ) + + async def refresh_access_token( + self, + refresh_token: str, + session: AsyncSession, + request: Optional[Request] = None, + ) -> Optional[str]: + """使用刷新令牌获取新的访问令牌""" + validation = self.jwt_cache.validate_token(refresh_token, token_type="access") + if not validation: + return None + + user_id = validation["user_id"] + + # 获取用户 + user = await UserService.get_user_by_id(int(user_id), session) + if not user: + return None + + # 创建新的访问令牌 + user_data = { + "username": user.username, + "email": user.email, + "is_superuser": user.is_superuser, + } + + device_id = validation.get("device_id") + user_agent = None + ip_address = None + if request: + user_agent = request.headers.get("user-agent") + ip_address = request.client.host if request.client else None + + new_access_token = self.jwt_cache.create_token( + user_id=user_id, + user_data=user_data, + token_type="access", + device_id=device_id, + user_agent=user_agent, + ip_address=ip_address, + ) + + return new_access_token + + async def logout(self, token: str): + """用户登出 - 使令牌失效""" + self.jwt_cache.invalidate_token(token) + + async def logout_all(self, user_id: str): + """使用户的所有令牌失效""" + self.jwt_cache.invalidate_user_tokens(str(user_id)) + + async def get_user_sessions(self, user_id: str): + """获取用户的活跃会话""" + return self.jwt_cache.get_user_sessions(str(user_id)) + + +# 全局认证服务实例 +_auth_service = None + + +def get_auth_service() -> AuthService: + """获取认证服务实例(单例模式)""" + global _auth_service + if _auth_service is None: + _auth_service = AuthService() + return _auth_service diff --git a/src/chongming/app/service/todo.py b/src/chongming/app/service/todo.py new file mode 100644 index 0000000..18a29a5 --- /dev/null +++ b/src/chongming/app/service/todo.py @@ -0,0 +1,65 @@ +from typing import Sequence, Optional + +from sqlalchemy.ext.asyncio import AsyncSession +from sqlmodel import select + +from ..model.todo import TodoCreate, Todo, TodoUpdate + + +class TodoService: + @staticmethod + async def create_todo(todo: TodoCreate, session: AsyncSession) -> Todo: + db_todo = Todo.model_validate(todo) + session.add(db_todo) + await session.commit() + await session.refresh(db_todo) + return db_todo + + @staticmethod + async def get_todos( + offset: int, + limit: int, + session: AsyncSession, + ) -> Sequence[Todo]: + result = await session.execute(select(Todo).offset(offset).limit(limit)) + todos = result.scalars().all() + return todos + + @staticmethod + async def get_todo_by_id( + todo_id: int, + session: AsyncSession, + ) -> Optional[Todo]: + todo = await session.get(Todo, todo_id) + return todo + + @staticmethod + async def update_todo( + todo_id: int, + todo_update: TodoUpdate, + session: AsyncSession, + ) -> Optional[Todo]: + todo = await session.get(Todo, todo_id) + if not todo: + return None + update_data = todo_update.model_dump(exclude_unset=True) + + for key, value in update_data.items(): + setattr(todo, key, value) + + session.add(todo) + await session.commit() + await session.refresh(todo) + return todo + + @staticmethod + async def delete_todo( + todo_id: int, + session: AsyncSession, + ) -> bool: + todo = await session.get(Todo, todo_id) + if not todo: + return False + await session.delete(todo) + await session.commit() + return True diff --git a/src/chongming/app/service/user.py b/src/chongming/app/service/user.py new file mode 100644 index 0000000..e140a78 --- /dev/null +++ b/src/chongming/app/service/user.py @@ -0,0 +1,28 @@ +from sqlalchemy import select +from sqlalchemy.ext.asyncio import AsyncSession +from typing import Optional + +from ..model.user import User +from ..core.security import get_password_hash + + +class UserService: + @staticmethod + async def get_user_by_email(email: str, session: AsyncSession) -> Optional[User]: + result = await session.execute(select(User).where(User.email == email)) # type: ignore + return result.scalar_one_or_none() + + @staticmethod + async def get_user_by_id(user_id: int, session: AsyncSession) -> Optional[User]: + return await session.get(User, user_id) + + @staticmethod + async def create_user( + session: AsyncSession, email: str, password: str, **kwargs + ) -> User: + hashed = get_password_hash(password) + user = User(email=email, hashed_password=hashed, **kwargs) + session.add(user) + await session.commit() + await session.refresh(user) + return user diff --git a/src/chongming/scripts/__init__.py b/src/chongming/scripts/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/chongming/scripts/build.py b/src/chongming/scripts/build.py new file mode 100644 index 0000000..3663928 --- /dev/null +++ b/src/chongming/scripts/build.py @@ -0,0 +1,253 @@ +from module_bank import PythonToSQLite +from module_bank.encryption import Encryption +import os +from pathlib import Path +import shutil +import subprocess +import sys +import asyncio + + +def create_admin(): + try: + cmd = [ + sys.executable, + "../src/chongming/scripts/create_admin.py", + ] + print(f"正在运行 create_admin.py: {' '.join(cmd)}") + + # 创建包含 UTF-8 编码的环境变量 + env = os.environ.copy() + env["PYTHONIOENCODING"] = "utf-8" + env["PYTHONUTF8"] = "1" + + result = subprocess.run( + cmd, + cwd="./build", + capture_output=True, + text=True, + encoding="utf-8", # 明确指定编码 + errors="replace", # 替换无法解码的字符 + env=env, # 传递修改后的环境变量 + ) + + if result.returncode == 0: + print("创建管理员用户成功") + print(result.stdout) + else: + print("创建管理员用户失败") + # 安全地打印错误信息,避免编码问题 + try: + print("错误信息:", result.stderr) + except UnicodeEncodeError: + print( + "错误信息:", result.stderr.encode("ascii", "ignore").decode("ascii") + ) + except Exception as e: + print("创建管理员用户失败") + print(f"异常: {e}") + + +def run_pyarmor_obfuscate(): + # pyarmor obfuscate --output=obfuscated_script.py original_script.py + obfuscate_files = [ + ("main.py", "./"), + ("server.py", "./"), + ("utils/launch.py", "./utils"), + ("utils/config.py", "./utils"), + ] + for file, output in obfuscate_files: + cmd = [ + "pyarmor", + "gen", + f"--output={output}", + file, + ] + result = subprocess.run(cmd, cwd="./build", capture_output=True, text=True) + if result.returncode != 0: + print(f"打包文件: {file} 失败") + print(result.stderr) + return + else: + print(result.stdout) + print(f"打包文件: {file}") + + +def run_pyinstaller(): + """运行 PyInstaller 打包成可执行文件""" + try: + # 构建 PyInstaller 命令 + cmd = [ + sys.executable, + "-m", + "PyInstaller", + "--onefile", + "--name", + "chongming", + "--distpath", + ".", + "--workpath", + "./build_temp", + "--specpath", + "./specs", + "--clean", + # 隐藏导入 + "--hidden-import", + "utils", + "--hidden-import", + "utils.launch", + "--hidden-import", + "utils.config", + "--hidden-import", + "server", + "--hidden-import", + "module_bank", + "--hidden-import", + "fastapi", + "--hidden-import", + "fastapi.middleware.cors", + "--hidden-import", + "uvicorn", + "--hidden-import", + "sqlmodel", + "--hidden-import", + "aiosqlite", + "--hidden-import", + "pyjwt", + "--hidden-import", + "sqlitedict", + "--hidden-import", + "passlib", + "--hidden-import", + "passlib.context", + "--hidden-import", + "passlib.handlers.bcrypt", + "--hidden-import", + "jwt", + # 其他选项 + "--icon", + "../../public/chongming.ico", + "main.py", + ] + + print(f"正在运行 PyInstaller: {' '.join(cmd)}") + result = subprocess.run(cmd, cwd="./build", capture_output=True, text=True) + + if result.returncode == 0: + print("PyInstaller 打包成功!") + print(result.stdout) + else: + print("PyInstaller 打包失败!") + print("错误信息:", result.stderr) + + except FileNotFoundError: + print("错误:未找到 PyInstaller,请先安装 PyInstaller:pip install pyinstaller") + except Exception as e: + print(f"PyInstaller 执行出错: {e}") + + +async def init_database(): + from sqlalchemy.ext.asyncio import create_async_engine + from ..app.core.config import get_config + from sqlmodel import SQLModel, text + from sqlalchemy.exc import OperationalError + + database = get_config()["database"] + database_type = database["type"] + database_config = database.get(database_type, None) + if database_config is None: + raise ValueError("配置不存在") + + engine = create_async_engine( + "sqlite+aiosqlite:///./build/database.db", **database_config + ) + + async with engine.begin() as conn: + if database_type == "sqlite": + await conn.execute(text("PRAGMA journal_mode=WAL")) + await conn.execute(text("PRAGMA synchronous=NORMAL")) + try: + await conn.run_sync( + lambda conn: SQLModel.metadata.create_all(bind=conn, checkfirst=True) + ) + except OperationalError as e: + if "already exists" in str(e): + raise + + +async def main(): + # 打包模块 + key = Encryption.generate_key() + resources_path = Path("resources") + if not resources_path.exists(): + resources_path.mkdir() + app_packer = PythonToSQLite("./resources/app.mbank", key) + app_packer.pack_directory("src/chongming/app", "app") + app_packer.verify_package_structure() + app_packer.delete_source_code(None) + + plugin_packer = PythonToSQLite("./resources/plugins.mbank", key) + plugin_packer.pack_directory("src/plugins", "plugins") + plugin_packer.verify_package_structure() + plugin_packer.delete_source_code(None) + + # 创建 build 目录 + build_path = Path("build") + if build_path.exists() and build_path.is_dir(): + shutil.rmtree("build") + + os.makedirs("build", exist_ok=True) + + # 复制 utils 文件夹到 build 文件夹 + utils_path = Path("utils") + if utils_path.exists(): + target_utils_path = Path("build") / "utils" + shutil.copytree(utils_path, target_utils_path, dirs_exist_ok=True) + print(f"已复制 utils 文件夹到 {target_utils_path}") + + # 复制 resources 文件夹到 build 文件夹 + resources_path = Path("resources") + if resources_path.exists(): + target_resources_path = Path("build") / "resources" + shutil.copytree(resources_path, target_resources_path, dirs_exist_ok=True) + print(f"已复制 resources 文件夹到 {target_resources_path}") + + print("模块打包完成") + + # 复制 main.py 到 build 文件夹 + shutil.copy("public/main.py", "build") + shutil.copy("public/server.py", "build") + # 复制 config.toml 到 build 文件夹 + shutil.copy("public/config.toml", "build") + # 复制 utils 文件夹到 build 文件夹 + shutil.copytree("public/utils", "build/utils") + + with open("./build/utils/launch.py", "r", encoding="utf-8") as f: + context = f.read() + context = context.replace("key = None", f"key = '{key}'") + with open("./build/utils/launch.py", "w", encoding="utf-8") as f: + f.write(context) + + # 混淆 + run_pyarmor_obfuscate() + + # 运行 PyInstaller + run_pyinstaller() + + # 清理临时文件 + shutil.rmtree(r"build/build_temp", ignore_errors=True) + shutil.rmtree(r"build/specs", ignore_errors=True) + shutil.rmtree(r"build/utils", ignore_errors=True) + shutil.rmtree(r"build/pyarmor_runtime_000000", ignore_errors=True) + os.remove(r"build/main.py") + os.remove(r"build/server.py") + # os.remove(r"build/config.toml") + + print("构建完成") + + # 初始化数据库 + await init_database() + + +def build(): + asyncio.run(main()) diff --git a/src/chongming/scripts/clean_pycache.py b/src/chongming/scripts/clean_pycache.py new file mode 100644 index 0000000..070343f --- /dev/null +++ b/src/chongming/scripts/clean_pycache.py @@ -0,0 +1,12 @@ +import os +import shutil +# 需要遍历的目录 +root_dir = "./" +# 遍历目录 +for dirpath, dirnames, filenames in os.walk(root_dir): + if "__pycache__" in dirnames: + # 获取 __pycache__ 目录的全路径 + pycache_dir = os.path.join(dirpath, "__pycache__") + # 删除目录 + shutil.rmtree(pycache_dir) + print(f"Removed: {pycache_dir}") diff --git a/src/chongming/scripts/code_content.py b/src/chongming/scripts/code_content.py new file mode 100644 index 0000000..fea6ecb --- /dev/null +++ b/src/chongming/scripts/code_content.py @@ -0,0 +1,36 @@ +import os +import sys + + +def generate_markdown_from_py_files(directory, output_file): + with open(output_file, "w", encoding="utf-8") as md_file: + for root, dirs, files in os.walk(directory): + # 排除 venv 目录 + dirs[:] = [d for d in dirs if d != ".venv"] + dirs[:] = [d for d in dirs if d != ".vscode"] + # dirs[:] = [d for d in dirs if d != "scripts"] + dirs[:] = [d for d in dirs if d != "build"] + for file in files: + if ( + file.endswith(".py") + or file.endswith(".rs") + or file.endswith(".toml") + or file.endswith(".md") + ): + file_path = os.path.join(root, file) + if file == "output.md": + continue + md_file.write(f"`{file_path}`\n") + md_file.write("```python\n") + with open(file_path, "r", encoding="utf-8") as py_file: + md_file.write(py_file.read()) + md_file.write("\n```\n\n") + + +if __name__ == "__main__": + # 指定目录和输出文件名 + target_directory = sys.argv[1] # 替换为你的目标目录 + output_markdown_file = "output.md" # 输出的 Markdown 文件名 + + generate_markdown_from_py_files(target_directory, output_markdown_file) + print(f"Markdown 文件已生成:{output_markdown_file}") diff --git a/src/plugins/__init__.py b/src/plugins/__init__.py new file mode 100644 index 0000000..cc2ff96 --- /dev/null +++ b/src/plugins/__init__.py @@ -0,0 +1,2 @@ +def hello(): + print("Hello World") diff --git a/uv.lock b/uv.lock new file mode 100644 index 0000000..53efcd4 --- /dev/null +++ b/uv.lock @@ -0,0 +1,1711 @@ +version = 1 +revision = 3 +requires-python = ">=3.8" +resolution-markers = [ + "python_full_version >= '3.10'", + "python_full_version == '3.9.*'", + "python_full_version < '3.9'", +] + +[[package]] +name = "aiosqlite" +version = "0.20.0" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +resolution-markers = [ + "python_full_version < '3.9'", +] +dependencies = [ + { name = "typing-extensions", version = "4.13.2", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version < '3.9'" }, +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/0d/3a/22ff5415bf4d296c1e92b07fd746ad42c96781f13295a074d58e77747848/aiosqlite-0.20.0.tar.gz", hash = "sha256:6d35c8c256637f4672f843c31021464090805bf925385ac39473fb16eaaca3d7", size = 21691, upload-time = "2024-02-20T06:12:53.915Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/00/c4/c93eb22025a2de6b83263dfe3d7df2e19138e345bca6f18dba7394120930/aiosqlite-0.20.0-py3-none-any.whl", hash = "sha256:36a1deaca0cac40ebe32aac9977a6e2bbc7f5189f23f4a54d5908986729e5bd6", size = 15564, upload-time = "2024-02-20T06:12:50.657Z" }, +] + +[[package]] +name = "aiosqlite" +version = "0.22.1" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +resolution-markers = [ + "python_full_version >= '3.10'", + "python_full_version == '3.9.*'", +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/4e/8a/64761f4005f17809769d23e518d915db74e6310474e733e3593cfc854ef1/aiosqlite-0.22.1.tar.gz", hash = "sha256:043e0bd78d32888c0a9ca90fc788b38796843360c855a7262a532813133a0650", size = 14821, upload-time = "2025-12-23T19:25:43.997Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/00/b7/e3bf5133d697a08128598c8d0abc5e16377b51465a33756de24fa7dee953/aiosqlite-0.22.1-py3-none-any.whl", hash = "sha256:21c002eb13823fad740196c5a2e9d8e62f6243bd9e7e4a1f87fb5e44ecb4fceb", size = 17405, upload-time = "2025-12-23T19:25:42.139Z" }, +] + +[[package]] +name = "altgraph" +version = "0.17.5" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/7e/f8/97fdf103f38fed6792a1601dbc16cc8aac56e7459a9fff08c812d8ae177a/altgraph-0.17.5.tar.gz", hash = "sha256:c87b395dd12fabde9c99573a9749d67da8d29ef9de0125c7f536699b4a9bc9e7", size = 48428, upload-time = "2025-11-21T20:35:50.583Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/a9/ba/000a1996d4308bc65120167c21241a3b205464a2e0b58deda26ae8ac21d1/altgraph-0.17.5-py2.py3-none-any.whl", hash = "sha256:f3a22400bce1b0c701683820ac4f3b159cd301acab067c51c653e06961600597", size = 21228, upload-time = "2025-11-21T20:35:49.444Z" }, +] + +[[package]] +name = "annotated-doc" +version = "0.0.4" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/57/ba/046ceea27344560984e26a590f90bc7f4a75b06701f653222458922b558c/annotated_doc-0.0.4.tar.gz", hash = "sha256:fbcda96e87e9c92ad167c2e53839e57503ecfda18804ea28102353485033faa4", size = 7288, upload-time = "2025-11-10T22:07:42.062Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/1e/d3/26bf1008eb3d2daa8ef4cacc7f3bfdc11818d111f7e2d0201bc6e3b49d45/annotated_doc-0.0.4-py3-none-any.whl", hash = "sha256:571ac1dc6991c450b25a9c2d84a3705e2ae7a53467b5d111c24fa8baabbed320", size = 5303, upload-time = "2025-11-10T22:07:40.673Z" }, +] + +[[package]] +name = "annotated-types" +version = "0.7.0" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +dependencies = [ + { name = "typing-extensions", version = "4.13.2", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version < '3.9'" }, +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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.5.2" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +resolution-markers = [ + "python_full_version < '3.9'", +] +dependencies = [ + { name = "exceptiongroup", marker = "python_full_version < '3.9'" }, + { name = "idna", marker = "python_full_version < '3.9'" }, + { name = "sniffio", marker = "python_full_version < '3.9'" }, + { name = "typing-extensions", version = "4.13.2", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version < '3.9'" }, +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/4d/f9/9a7ce600ebe7804daf90d4d48b1c0510a4561ddce43a596be46676f82343/anyio-4.5.2.tar.gz", hash = "sha256:23009af4ed04ce05991845451e11ef02fc7c5ed29179ac9a420e5ad0ac7ddc5b", size = 171293, upload-time = "2024-10-13T22:18:03.307Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/1b/b4/f7e396030e3b11394436358ca258a81d6010106582422f23443c16ca1873/anyio-4.5.2-py3-none-any.whl", hash = "sha256:c011ee36bc1e8ba40e5a81cb9df91925c218fe9b778554e0b56a21e1b5d4716f", size = 89766, upload-time = "2024-10-13T22:18:01.524Z" }, +] + +[[package]] +name = "anyio" +version = "4.12.1" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +resolution-markers = [ + "python_full_version >= '3.10'", + "python_full_version == '3.9.*'", +] +dependencies = [ + { name = "exceptiongroup", marker = "python_full_version >= '3.9' and python_full_version < '3.11'" }, + { name = "idna", marker = "python_full_version >= '3.9'" }, + { name = "typing-extensions", version = "4.15.0", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version >= '3.9' and python_full_version < '3.13'" }, +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/96/f0/5eb65b2bb0d09ac6776f2eb54adee6abe8228ea05b20a5ad0e4945de8aac/anyio-4.12.1.tar.gz", hash = "sha256:41cfcc3a4c85d3f05c932da7c26d0201ac36f72abd4435ba90d0464a3ffed703", size = 228685, upload-time = "2026-01-06T11:45:21.246Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/38/0e/27be9fdef66e72d64c0cdc3cc2823101b80585f8119b5c112c2e8f5f7dab/anyio-4.12.1-py3-none-any.whl", hash = "sha256:d405828884fc140aa80a3c667b8beed277f1dfedec42ba031bd6ac3db606ab6c", size = 113592, upload-time = "2026-01-06T11:45:19.497Z" }, +] + +[[package]] +name = "bcrypt" +version = "4.0.1" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/8c/ae/3af7d006aacf513975fd1948a6b4d6f8b4a307f8a244e1a3d3774b297aad/bcrypt-4.0.1.tar.gz", hash = "sha256:27d375903ac8261cfe4047f6709d16f7d18d39b1ec92aaf72af989552a650ebd", size = 25498, upload-time = "2022-10-09T15:36:49.775Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/78/d4/3b2657bd58ef02b23a07729b0df26f21af97169dbd0b5797afa9e97ebb49/bcrypt-4.0.1-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:b1023030aec778185a6c16cf70f359cbb6e0c289fd564a7cfa29e727a1c38f8f", size = 473446, upload-time = "2022-10-09T15:36:25.481Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/ec/0a/1582790232fef6c2aa201f345577306b8bfe465c2c665dec04c86a016879/bcrypt-4.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:08d2947c490093a11416df18043c27abe3921558d2c03e2076ccb28a116cb6d0", size = 583044, upload-time = "2022-10-09T15:37:09.447Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/41/16/49ff5146fb815742ad58cafb5034907aa7f166b1344d0ddd7fd1c818bd17/bcrypt-4.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0eaa47d4661c326bfc9d08d16debbc4edf78778e6aaba29c1bc7ce67214d4410", size = 583189, upload-time = "2022-10-09T15:37:10.69Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/aa/48/fd2b197a9741fa790ba0b88a9b10b5e88e62ff5cf3e1bc96d8354d7ce613/bcrypt-4.0.1-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae88eca3024bb34bb3430f964beab71226e761f51b912de5133470b649d82344", size = 593473, upload-time = "2022-10-09T15:36:27.195Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/7d/50/e683d8418974a602ba40899c8a5c38b3decaf5a4d36c32fc65dce454d8a8/bcrypt-4.0.1-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:a522427293d77e1c29e303fc282e2d71864579527a04ddcfda6d4f8396c6c36a", size = 593249, upload-time = "2022-10-09T15:36:28.481Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/fb/a7/ee4561fd9b78ca23c8e5591c150cc58626a5dfb169345ab18e1c2c664ee0/bcrypt-4.0.1-cp36-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:fbdaec13c5105f0c4e5c52614d04f0bca5f5af007910daa8b6b12095edaa67b3", size = 583586, upload-time = "2022-10-09T15:37:11.962Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/64/fe/da28a5916128d541da0993328dc5cf4b43dfbf6655f2c7a2abe26ca2dc88/bcrypt-4.0.1-cp36-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:ca3204d00d3cb2dfed07f2d74a25f12fc12f73e606fcaa6975d1f7ae69cacbb2", size = 593659, upload-time = "2022-10-09T15:36:30.049Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/dd/4f/3632a69ce344c1551f7c9803196b191a8181c6a1ad2362c225581ef0d383/bcrypt-4.0.1-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:089098effa1bc35dc055366740a067a2fc76987e8ec75349eb9484061c54f535", size = 613116, upload-time = "2022-10-09T15:37:14.107Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/87/69/edacb37481d360d06fc947dab5734aaf511acb7d1a1f9e2849454376c0f8/bcrypt-4.0.1-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:e9a51bbfe7e9802b5f3508687758b564069ba937748ad7b9e890086290d2f79e", size = 624290, upload-time = "2022-10-09T15:36:31.251Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/aa/ca/6a534669890725cbb8c1fb4622019be31813c8edaa7b6d5b62fc9360a17e/bcrypt-4.0.1-cp36-abi3-win32.whl", hash = "sha256:2caffdae059e06ac23fce178d31b4a702f2a3264c20bfb5ff541b338194d8fab", size = 159428, upload-time = "2022-10-09T15:36:32.893Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/46/81/d8c22cd7e5e1c6a7d48e41a1d1d46c92f17dae70a54d9814f746e6027dec/bcrypt-4.0.1-cp36-abi3-win_amd64.whl", hash = "sha256:8a68f4341daf7522fe8d73874de8906f3a339048ba406be6ddc1b3ccb16fc0d9", size = 152930, upload-time = "2022-10-09T15:36:34.635Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/77/2c/53c17079898584306eafdc937e0c7cc1bf8e2fe17e9909716ef3f9d6555d/bcrypt-4.0.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cbb03eec97496166b704ed663a53680ab57c5084b2fc98ef23291987b525cb7d", size = 592457, upload-time = "2022-10-09T15:36:40.389Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/2c/be/376341b47e1e3fc424c9df1af60b5aedbd5ab04f73ccdf4107e42d92ef09/bcrypt-4.0.1-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:5ad4d32a28b80c5fa6671ccfb43676e8c1cc232887759d1cd7b6f56ea4355215", size = 592257, upload-time = "2022-10-09T15:36:41.79Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/41/86/05248719aa42a4fe1ca379d45794198700e992b91d389bfaa69533fc3331/bcrypt-4.0.1-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b57adba8a1444faf784394de3436233728a1ecaeb6e07e8c22c8848f179b893c", size = 592686, upload-time = "2022-10-09T15:36:43.41Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/13/68/f3184c1f15581ebd936125b4da04cba0995f97ecd5ee8f4262c8ebba2646/bcrypt-4.0.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:705b2cea8a9ed3d55b4491887ceadb0106acf7c6387699fca771af56b1cdeeda", size = 592456, upload-time = "2022-10-09T15:36:45.053Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/5e/01/098b798dc6c6984f2d5026269e80d7cad22d6ecacd5989bdf35a9c99a03d/bcrypt-4.0.1-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:2b3ac11cf45161628f1f3733263e63194f22664bf4d0c0f3ab34099c02134665", size = 592248, upload-time = "2022-10-09T15:36:46.554Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/fb/4b/e255df2000c2de4df524740b5f1d0a31157a1f7715b3eaf2e8f9c5c0acbb/bcrypt-4.0.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3100851841186c25f127731b9fa11909ab7b1df6fc4b9f8353f4f1fd952fbf71", size = 592714, upload-time = "2022-10-09T15:36:47.903Z" }, +] + +[[package]] +name = "cffi" +version = "1.17.1" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +resolution-markers = [ + "python_full_version < '3.9'", +] +dependencies = [ + { name = "pycparser", version = "2.23", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version < '3.9'" }, +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621, upload-time = "2024-09-04T20:45:21.852Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/90/07/f44ca684db4e4f08a3fdc6eeb9a0d15dc6883efc7b8c90357fdbf74e186c/cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14", size = 182191, upload-time = "2024-09-04T20:43:30.027Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/08/fd/cc2fedbd887223f9f5d170c96e57cbf655df9831a6546c1727ae13fa977a/cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67", size = 178592, upload-time = "2024-09-04T20:43:32.108Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/de/cc/4635c320081c78d6ffc2cab0a76025b691a91204f4aa317d568ff9280a2d/cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382", size = 426024, upload-time = "2024-09-04T20:43:34.186Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/b6/7b/3b2b250f3aab91abe5f8a51ada1b717935fdaec53f790ad4100fe2ec64d1/cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702", size = 448188, upload-time = "2024-09-04T20:43:36.286Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/d3/48/1b9283ebbf0ec065148d8de05d647a986c5f22586b18120020452fff8f5d/cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3", size = 455571, upload-time = "2024-09-04T20:43:38.586Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/40/87/3b8452525437b40f39ca7ff70276679772ee7e8b394934ff60e63b7b090c/cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6", size = 436687, upload-time = "2024-09-04T20:43:40.084Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/8d/fb/4da72871d177d63649ac449aec2e8a29efe0274035880c7af59101ca2232/cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17", size = 446211, upload-time = "2024-09-04T20:43:41.526Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/ab/a0/62f00bcb411332106c02b663b26f3545a9ef136f80d5df746c05878f8c4b/cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8", size = 461325, upload-time = "2024-09-04T20:43:43.117Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/36/83/76127035ed2e7e27b0787604d99da630ac3123bfb02d8e80c633f218a11d/cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e", size = 438784, upload-time = "2024-09-04T20:43:45.256Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/21/81/a6cd025db2f08ac88b901b745c163d884641909641f9b826e8cb87645942/cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be", size = 461564, upload-time = "2024-09-04T20:43:46.779Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f8/fe/4d41c2f200c4a457933dbd98d3cf4e911870877bd94d9656cc0fcb390681/cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c", size = 171804, upload-time = "2024-09-04T20:43:48.186Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/d1/b6/0b0f5ab93b0df4acc49cae758c81fe4e5ef26c3ae2e10cc69249dfd8b3ab/cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15", size = 181299, upload-time = "2024-09-04T20:43:49.812Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/6b/f4/927e3a8899e52a27fa57a48607ff7dc91a9ebe97399b357b85a0c7892e00/cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401", size = 182264, upload-time = "2024-09-04T20:43:51.124Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/6c/f5/6c3a8efe5f503175aaddcbea6ad0d2c96dad6f5abb205750d1b3df44ef29/cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf", size = 178651, upload-time = "2024-09-04T20:43:52.872Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/94/dd/a3f0118e688d1b1a57553da23b16bdade96d2f9bcda4d32e7d2838047ff7/cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4", size = 445259, upload-time = "2024-09-04T20:43:56.123Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/2e/ea/70ce63780f096e16ce8588efe039d3c4f91deb1dc01e9c73a287939c79a6/cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41", size = 469200, upload-time = "2024-09-04T20:43:57.891Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/1c/a0/a4fa9f4f781bda074c3ddd57a572b060fa0df7655d2a4247bbe277200146/cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1", size = 477235, upload-time = "2024-09-04T20:44:00.18Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/62/12/ce8710b5b8affbcdd5c6e367217c242524ad17a02fe5beec3ee339f69f85/cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6", size = 459721, upload-time = "2024-09-04T20:44:01.585Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/ff/6b/d45873c5e0242196f042d555526f92aa9e0c32355a1be1ff8c27f077fd37/cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d", size = 467242, upload-time = "2024-09-04T20:44:03.467Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/1a/52/d9a0e523a572fbccf2955f5abe883cfa8bcc570d7faeee06336fbd50c9fc/cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6", size = 477999, upload-time = "2024-09-04T20:44:05.023Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/44/74/f2a2460684a1a2d00ca799ad880d54652841a780c4c97b87754f660c7603/cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f", size = 454242, upload-time = "2024-09-04T20:44:06.444Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f8/4a/34599cac7dfcd888ff54e801afe06a19c17787dfd94495ab0c8d35fe99fb/cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b", size = 478604, upload-time = "2024-09-04T20:44:08.206Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/34/33/e1b8a1ba29025adbdcda5fb3a36f94c03d771c1b7b12f726ff7fef2ebe36/cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655", size = 171727, upload-time = "2024-09-04T20:44:09.481Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/3d/97/50228be003bb2802627d28ec0627837ac0bf35c90cf769812056f235b2d1/cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0", size = 181400, upload-time = "2024-09-04T20:44:10.873Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/5a/84/e94227139ee5fb4d600a7a4927f322e1d4aea6fdc50bd3fca8493caba23f/cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", size = 183178, upload-time = "2024-09-04T20:44:12.232Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/da/ee/fb72c2b48656111c4ef27f0f91da355e130a923473bf5ee75c5643d00cca/cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", size = 178840, upload-time = "2024-09-04T20:44:13.739Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803, upload-time = "2024-09-04T20:44:15.231Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850, upload-time = "2024-09-04T20:44:17.188Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729, upload-time = "2024-09-04T20:44:18.688Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", size = 471256, upload-time = "2024-09-04T20:44:20.248Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424, upload-time = "2024-09-04T20:44:21.673Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568, upload-time = "2024-09-04T20:44:23.245Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736, upload-time = "2024-09-04T20:44:24.757Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448, upload-time = "2024-09-04T20:44:26.208Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976, upload-time = "2024-09-04T20:44:27.578Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/8d/f8/dd6c246b148639254dad4d6803eb6a54e8c85c6e11ec9df2cffa87571dbe/cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e", size = 182989, upload-time = "2024-09-04T20:44:28.956Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/8b/f1/672d303ddf17c24fc83afd712316fda78dc6fce1cd53011b839483e1ecc8/cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2", size = 178802, upload-time = "2024-09-04T20:44:30.289Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/0e/2d/eab2e858a91fdff70533cab61dcff4a1f55ec60425832ddfdc9cd36bc8af/cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", size = 454792, upload-time = "2024-09-04T20:44:32.01Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/75/b2/fbaec7c4455c604e29388d55599b99ebcc250a60050610fadde58932b7ee/cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", size = 478893, upload-time = "2024-09-04T20:44:33.606Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/4f/b7/6e4a2162178bf1935c336d4da8a9352cccab4d3a5d7914065490f08c0690/cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", size = 485810, upload-time = "2024-09-04T20:44:35.191Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/c7/8a/1d0e4a9c26e54746dc08c2c6c037889124d4f59dffd853a659fa545f1b40/cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", size = 471200, upload-time = "2024-09-04T20:44:36.743Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", size = 479447, upload-time = "2024-09-04T20:44:38.492Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/5f/e4/fb8b3dd8dc0e98edf1135ff067ae070bb32ef9d509d6cb0f538cd6f7483f/cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", size = 484358, upload-time = "2024-09-04T20:44:40.046Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f1/47/d7145bf2dc04684935d57d67dff9d6d795b2ba2796806bb109864be3a151/cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", size = 488469, upload-time = "2024-09-04T20:44:41.616Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/bf/ee/f94057fa6426481d663b88637a9a10e859e492c73d0384514a17d78ee205/cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d", size = 172475, upload-time = "2024-09-04T20:44:43.733Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/7c/fc/6a8cb64e5f0324877d503c854da15d76c1e50eb722e320b15345c4d0c6de/cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a", size = 182009, upload-time = "2024-09-04T20:44:45.309Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/48/08/15bf6b43ae9bd06f6b00ad8a91f5a8fe1069d4c9fab550a866755402724e/cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b", size = 182457, upload-time = "2024-09-04T20:44:47.892Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/c2/5b/f1523dd545f92f7df468e5f653ffa4df30ac222f3c884e51e139878f1cb5/cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964", size = 425932, upload-time = "2024-09-04T20:44:49.491Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/53/93/7e547ab4105969cc8c93b38a667b82a835dd2cc78f3a7dad6130cfd41e1d/cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9", size = 448585, upload-time = "2024-09-04T20:44:51.671Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/56/c4/a308f2c332006206bb511de219efeff090e9d63529ba0a77aae72e82248b/cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc", size = 456268, upload-time = "2024-09-04T20:44:53.51Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/ca/5b/b63681518265f2f4060d2b60755c1c77ec89e5e045fc3773b72735ddaad5/cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c", size = 436592, upload-time = "2024-09-04T20:44:55.085Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/bb/19/b51af9f4a4faa4a8ac5a0e5d5c2522dcd9703d07fac69da34a36c4d960d3/cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1", size = 446512, upload-time = "2024-09-04T20:44:57.135Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/e2/63/2bed8323890cb613bbecda807688a31ed11a7fe7afe31f8faaae0206a9a3/cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8", size = 171576, upload-time = "2024-09-04T20:44:58.535Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/2f/70/80c33b044ebc79527447fd4fbc5455d514c3bb840dede4455de97da39b4d/cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1", size = 181229, upload-time = "2024-09-04T20:44:59.963Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/b9/ea/8bb50596b8ffbc49ddd7a1ad305035daa770202a6b782fc164647c2673ad/cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16", size = 182220, upload-time = "2024-09-04T20:45:01.577Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/ae/11/e77c8cd24f58285a82c23af484cf5b124a376b32644e445960d1a4654c3a/cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36", size = 178605, upload-time = "2024-09-04T20:45:03.837Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/ed/65/25a8dc32c53bf5b7b6c2686b42ae2ad58743f7ff644844af7cdb29b49361/cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8", size = 424910, upload-time = "2024-09-04T20:45:05.315Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/42/7a/9d086fab7c66bd7c4d0f27c57a1b6b068ced810afc498cc8c49e0088661c/cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576", size = 447200, upload-time = "2024-09-04T20:45:06.903Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/da/63/1785ced118ce92a993b0ec9e0d0ac8dc3e5dbfbcaa81135be56c69cabbb6/cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87", size = 454565, upload-time = "2024-09-04T20:45:08.975Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/74/06/90b8a44abf3556599cdec107f7290277ae8901a58f75e6fe8f970cd72418/cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0", size = 435635, upload-time = "2024-09-04T20:45:10.64Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/bd/62/a1f468e5708a70b1d86ead5bab5520861d9c7eacce4a885ded9faa7729c3/cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3", size = 445218, upload-time = "2024-09-04T20:45:12.366Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/5b/95/b34462f3ccb09c2594aa782d90a90b045de4ff1f70148ee79c69d37a0a5a/cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595", size = 460486, upload-time = "2024-09-04T20:45:13.935Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/fc/fc/a1e4bebd8d680febd29cf6c8a40067182b64f00c7d105f8f26b5bc54317b/cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a", size = 437911, upload-time = "2024-09-04T20:45:15.696Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/e6/c3/21cab7a6154b6a5ea330ae80de386e7665254835b9e98ecc1340b3a7de9a/cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e", size = 460632, upload-time = "2024-09-04T20:45:17.284Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/cb/b5/fd9f8b5a84010ca169ee49f4e4ad6f8c05f4e3545b72ee041dbbcb159882/cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7", size = 171820, upload-time = "2024-09-04T20:45:18.762Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/8c/52/b08750ce0bce45c143e1b5d7357ee8c55341b52bdef4b0f081af1eb248c2/cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662", size = 181290, upload-time = "2024-09-04T20:45:20.226Z" }, +] + +[[package]] +name = "cffi" +version = "2.0.0" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +resolution-markers = [ + "python_full_version >= '3.10'", + "python_full_version == '3.9.*'", +] +dependencies = [ + { name = "pycparser", version = "2.23", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version == '3.9.*' and implementation_name != 'PyPy'" }, + { name = "pycparser", version = "3.0", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version >= '3.10' and implementation_name != 'PyPy'" }, +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/packages/93/d7/516d984057745a6cd96575eea814fe1edd6646ee6efd552fb7b0921dec83/cffi-2.0.0-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:0cf2d91ecc3fcc0625c2c530fe004f82c110405f101548512cce44322fa8ac44", size = 184283, upload-time = "2025-09-08T23:22:08.01Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/9e/84/ad6a0b408daa859246f57c03efd28e5dd1b33c21737c2db84cae8c237aa5/cffi-2.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f73b96c41e3b2adedc34a7356e64c8eb96e03a3782b535e043a986276ce12a49", size = 180504, upload-time = "2025-09-08T23:22:10.637Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/50/bd/b1a6362b80628111e6653c961f987faa55262b4002fcec42308cad1db680/cffi-2.0.0-cp310-cp310-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:53f77cbe57044e88bbd5ed26ac1d0514d2acf0591dd6bb02a3ae37f76811b80c", size = 208811, upload-time = "2025-09-08T23:22:12.267Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/4f/27/6933a8b2562d7bd1fb595074cf99cc81fc3789f6a6c05cdabb46284a3188/cffi-2.0.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3e837e369566884707ddaf85fc1744b47575005c0a229de3327f8f9a20f4efeb", size = 216402, upload-time = "2025-09-08T23:22:13.455Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/05/eb/b86f2a2645b62adcfff53b0dd97e8dfafb5c8aa864bd0d9a2c2049a0d551/cffi-2.0.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:5eda85d6d1879e692d546a078b44251cdd08dd1cfb98dfb77b670c97cee49ea0", size = 203217, upload-time = "2025-09-08T23:22:14.596Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/9f/e0/6cbe77a53acf5acc7c08cc186c9928864bd7c005f9efd0d126884858a5fe/cffi-2.0.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9332088d75dc3241c702d852d4671613136d90fa6881da7d770a483fd05248b4", size = 203079, upload-time = "2025-09-08T23:22:15.769Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/98/29/9b366e70e243eb3d14a5cb488dfd3a0b6b2f1fb001a203f653b93ccfac88/cffi-2.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fc7de24befaeae77ba923797c7c87834c73648a05a4bde34b3b7e5588973a453", size = 216475, upload-time = "2025-09-08T23:22:17.427Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/21/7a/13b24e70d2f90a322f2900c5d8e1f14fa7e2a6b3332b7309ba7b2ba51a5a/cffi-2.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cf364028c016c03078a23b503f02058f1814320a56ad535686f90565636a9495", size = 218829, upload-time = "2025-09-08T23:22:19.069Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/60/99/c9dc110974c59cc981b1f5b66e1d8af8af764e00f0293266824d9c4254bc/cffi-2.0.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e11e82b744887154b182fd3e7e8512418446501191994dbf9c9fc1f32cc8efd5", size = 211211, upload-time = "2025-09-08T23:22:20.588Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/49/72/ff2d12dbf21aca1b32a40ed792ee6b40f6dc3a9cf1644bd7ef6e95e0ac5e/cffi-2.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8ea985900c5c95ce9db1745f7933eeef5d314f0565b27625d9a10ec9881e1bfb", size = 218036, upload-time = "2025-09-08T23:22:22.143Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/e2/cc/027d7fb82e58c48ea717149b03bcadcbdc293553edb283af792bd4bcbb3f/cffi-2.0.0-cp310-cp310-win32.whl", hash = "sha256:1f72fb8906754ac8a2cc3f9f5aaa298070652a0ffae577e0ea9bd480dc3c931a", size = 172184, upload-time = "2025-09-08T23:22:23.328Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/33/fa/072dd15ae27fbb4e06b437eb6e944e75b068deb09e2a2826039e49ee2045/cffi-2.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:b18a3ed7d5b3bd8d9ef7a8cb226502c6bf8308df1525e1cc676c3680e7176739", size = 182790, upload-time = "2025-09-08T23:22:24.752Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/12/4a/3dfd5f7850cbf0d06dc84ba9aa00db766b52ca38d8b86e3a38314d52498c/cffi-2.0.0-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:b4c854ef3adc177950a8dfc81a86f5115d2abd545751a304c5bcf2c2c7283cfe", size = 184344, upload-time = "2025-09-08T23:22:26.456Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/4f/8b/f0e4c441227ba756aafbe78f117485b25bb26b1c059d01f137fa6d14896b/cffi-2.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2de9a304e27f7596cd03d16f1b7c72219bd944e99cc52b84d0145aefb07cbd3c", size = 180560, upload-time = "2025-09-08T23:22:28.197Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/b1/b7/1200d354378ef52ec227395d95c2576330fd22a869f7a70e88e1447eb234/cffi-2.0.0-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:baf5215e0ab74c16e2dd324e8ec067ef59e41125d3eade2b863d294fd5035c92", size = 209613, upload-time = "2025-09-08T23:22:29.475Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/b8/56/6033f5e86e8cc9bb629f0077ba71679508bdf54a9a5e112a3c0b91870332/cffi-2.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:730cacb21e1bdff3ce90babf007d0a0917cc3e6492f336c2f0134101e0944f93", size = 216476, upload-time = "2025-09-08T23:22:31.063Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/dc/7f/55fecd70f7ece178db2f26128ec41430d8720f2d12ca97bf8f0a628207d5/cffi-2.0.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:6824f87845e3396029f3820c206e459ccc91760e8fa24422f8b0c3d1731cbec5", size = 203374, upload-time = "2025-09-08T23:22:32.507Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/84/ef/a7b77c8bdc0f77adc3b46888f1ad54be8f3b7821697a7b89126e829e676a/cffi-2.0.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9de40a7b0323d889cf8d23d1ef214f565ab154443c42737dfe52ff82cf857664", size = 202597, upload-time = "2025-09-08T23:22:34.132Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/d7/91/500d892b2bf36529a75b77958edfcd5ad8e2ce4064ce2ecfeab2125d72d1/cffi-2.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8941aaadaf67246224cee8c3803777eed332a19d909b47e29c9842ef1e79ac26", size = 215574, upload-time = "2025-09-08T23:22:35.443Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/44/64/58f6255b62b101093d5df22dcb752596066c7e89dd725e0afaed242a61be/cffi-2.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a05d0c237b3349096d3981b727493e22147f934b20f6f125a3eba8f994bec4a9", size = 218971, upload-time = "2025-09-08T23:22:36.805Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/ab/49/fa72cebe2fd8a55fbe14956f9970fe8eb1ac59e5df042f603ef7c8ba0adc/cffi-2.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:94698a9c5f91f9d138526b48fe26a199609544591f859c870d477351dc7b2414", size = 211972, upload-time = "2025-09-08T23:22:38.436Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/0b/28/dd0967a76aab36731b6ebfe64dec4e981aff7e0608f60c2d46b46982607d/cffi-2.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:5fed36fccc0612a53f1d4d9a816b50a36702c28a2aa880cb8a122b3466638743", size = 217078, upload-time = "2025-09-08T23:22:39.776Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/2b/c0/015b25184413d7ab0a410775fdb4a50fca20f5589b5dab1dbbfa3baad8ce/cffi-2.0.0-cp311-cp311-win32.whl", hash = "sha256:c649e3a33450ec82378822b3dad03cc228b8f5963c0c12fc3b1e0ab940f768a5", size = 172076, upload-time = "2025-09-08T23:22:40.95Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/ae/8f/dc5531155e7070361eb1b7e4c1a9d896d0cb21c49f807a6c03fd63fc877e/cffi-2.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:66f011380d0e49ed280c789fbd08ff0d40968ee7b665575489afa95c98196ab5", size = 182820, upload-time = "2025-09-08T23:22:42.463Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/95/5c/1b493356429f9aecfd56bc171285a4c4ac8697f76e9bbbbb105e537853a1/cffi-2.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:c6638687455baf640e37344fe26d37c404db8b80d037c3d29f58fe8d1c3b194d", size = 177635, upload-time = "2025-09-08T23:22:43.623Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/c0/cc/08ed5a43f2996a16b462f64a7055c6e962803534924b9b2f1371d8c00b7b/cffi-2.0.0-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:fe562eb1a64e67dd297ccc4f5addea2501664954f2692b69a76449ec7913ecbf", size = 184288, upload-time = "2025-09-08T23:23:48.404Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/3d/de/38d9726324e127f727b4ecc376bc85e505bfe61ef130eaf3f290c6847dd4/cffi-2.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:de8dad4425a6ca6e4e5e297b27b5c824ecc7581910bf9aee86cb6835e6812aa7", size = 180509, upload-time = "2025-09-08T23:23:49.73Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/9b/13/c92e36358fbcc39cf0962e83223c9522154ee8630e1df7c0b3a39a8124e2/cffi-2.0.0-cp39-cp39-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:4647afc2f90d1ddd33441e5b0e85b16b12ddec4fca55f0d9671fef036ecca27c", size = 208813, upload-time = "2025-09-08T23:23:51.263Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/15/12/a7a79bd0df4c3bff744b2d7e52cc1b68d5e7e427b384252c42366dc1ecbc/cffi-2.0.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3f4d46d8b35698056ec29bca21546e1551a205058ae1a181d871e278b0b28165", size = 216498, upload-time = "2025-09-08T23:23:52.494Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/a3/ad/5c51c1c7600bdd7ed9a24a203ec255dccdd0ebf4527f7b922a0bde2fb6ed/cffi-2.0.0-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:e6e73b9e02893c764e7e8d5bb5ce277f1a009cd5243f8228f75f842bf937c534", size = 203243, upload-time = "2025-09-08T23:23:53.836Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/32/f2/81b63e288295928739d715d00952c8c6034cb6c6a516b17d37e0c8be5600/cffi-2.0.0-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:cb527a79772e5ef98fb1d700678fe031e353e765d1ca2d409c92263c6d43e09f", size = 203158, upload-time = "2025-09-08T23:23:55.169Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/1f/74/cc4096ce66f5939042ae094e2e96f53426a979864aa1f96a621ad128be27/cffi-2.0.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:61d028e90346df14fedc3d1e5441df818d095f3b87d286825dfcbd6459b7ef63", size = 216548, upload-time = "2025-09-08T23:23:56.506Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/e8/be/f6424d1dc46b1091ffcc8964fa7c0ab0cd36839dd2761b49c90481a6ba1b/cffi-2.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0f6084a0ea23d05d20c3edcda20c3d006f9b6f3fefeac38f59262e10cef47ee2", size = 218897, upload-time = "2025-09-08T23:23:57.825Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f7/e0/dda537c2309817edf60109e39265f24f24aa7f050767e22c98c53fe7f48b/cffi-2.0.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:1cd13c99ce269b3ed80b417dcd591415d3372bcac067009b6e0f59c7d4015e65", size = 211249, upload-time = "2025-09-08T23:23:59.139Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/2b/e7/7c769804eb75e4c4b35e658dba01de1640a351a9653c3d49ca89d16ccc91/cffi-2.0.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:89472c9762729b5ae1ad974b777416bfda4ac5642423fa93bd57a09204712322", size = 218041, upload-time = "2025-09-08T23:24:00.496Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/aa/d9/6218d78f920dcd7507fc16a766b5ef8f3b913cc7aa938e7fc80b9978d089/cffi-2.0.0-cp39-cp39-win32.whl", hash = "sha256:2081580ebb843f759b9f617314a24ed5738c51d2aee65d31e02f6f7a2b97707a", size = 172138, upload-time = "2025-09-08T23:24:01.7Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/54/8f/a1e836f82d8e32a97e6b29cc8f641779181ac7363734f12df27db803ebda/cffi-2.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:b882b3df248017dba09d6b16defe9b5c407fe32fc7c65a9c69798e6175601be9", size = 182794, upload-time = "2025-09-08T23:24:02.943Z" }, +] + +[[package]] +name = "chongming" +version = "0.1.0" +source = { editable = "." } +dependencies = [ + { name = "aiosqlite", version = "0.20.0", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version < '3.9'" }, + { name = "aiosqlite", version = "0.22.1", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version >= '3.9'" }, + { name = "bcrypt" }, + { name = "fastapi", version = "0.124.4", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version < '3.9'" }, + { name = "fastapi", version = "0.128.8", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version == '3.9.*'" }, + { name = "fastapi", version = "0.135.1", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version >= '3.10'" }, + { name = "module-bank" }, + { name = "passlib", extra = ["bcrypt"] }, + { name = "pyjwt", version = "2.9.0", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version < '3.9'" }, + { name = "pyjwt", version = "2.11.0", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version >= '3.9'" }, + { name = "sqlite-vfs" }, + { name = "sqlitedict" }, + { name = "sqlmodel", version = "0.0.29", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version < '3.9'" }, + { name = "sqlmodel", version = "0.0.34", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version == '3.9.*'" }, + { name = "sqlmodel", version = "0.0.37", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version >= '3.10'" }, + { name = "tomli" }, + { name = "typing-extensions", version = "4.13.2", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version < '3.9'" }, + { name = "typing-extensions", version = "4.15.0", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version >= '3.9'" }, + { name = "uvicorn", version = "0.33.0", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version < '3.9'" }, + { name = "uvicorn", version = "0.39.0", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version == '3.9.*'" }, + { name = "uvicorn", version = "0.41.0", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version >= '3.10'" }, +] + +[package.dev-dependencies] +dev = [ + { name = "pyarmor" }, + { name = "pyinstaller" }, +] + +[package.metadata] +requires-dist = [ + { name = "aiosqlite" }, + { name = "bcrypt", specifier = "==4.0.1" }, + { name = "fastapi", extras = ["uvicorn"] }, + { name = "module-bank" }, + { name = "passlib", extras = ["bcrypt"] }, + { name = "pyjwt" }, + { name = "sqlite-vfs" }, + { name = "sqlitedict" }, + { name = "sqlmodel", extras = ["aiosqlite"] }, + { name = "tomli" }, + { name = "typing-extensions" }, + { name = "uvicorn" }, +] + +[package.metadata.requires-dev] +dev = [ + { name = "pyarmor" }, + { name = "pyinstaller" }, +] + +[[package]] +name = "click" +version = "8.1.8" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +resolution-markers = [ + "python_full_version == '3.9.*'", + "python_full_version < '3.9'", +] +dependencies = [ + { name = "colorama", marker = "python_full_version < '3.10' and sys_platform == 'win32'" }, +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", size = 226593, upload-time = "2024-12-21T18:38:44.339Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2", size = 98188, upload-time = "2024-12-21T18:38:41.666Z" }, +] + +[[package]] +name = "click" +version = "8.3.1" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +resolution-markers = [ + "python_full_version >= '3.10'", +] +dependencies = [ + { name = "colorama", marker = "python_full_version >= '3.10' and sys_platform == 'win32'" }, +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/3d/fa/656b739db8587d7b5dfa22e22ed02566950fbfbcdc20311993483657a5c0/click-8.3.1.tar.gz", hash = "sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a", size = 295065, upload-time = "2025-11-15T20:45:42.706Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/98/78/01c019cdb5d6498122777c1a43056ebb3ebfeef2076d9d026bfe15583b2b/click-8.3.1-py3-none-any.whl", hash = "sha256:981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6", size = 108274, upload-time = "2025-11-15T20:45:41.139Z" }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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 = "46.0.5" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +dependencies = [ + { name = "cffi", version = "1.17.1", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version < '3.9' and platform_python_implementation != 'PyPy'" }, + { name = "cffi", version = "2.0.0", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version >= '3.9' and platform_python_implementation != 'PyPy'" }, + { name = "typing-extensions", version = "4.13.2", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version < '3.9'" }, + { name = "typing-extensions", version = "4.15.0", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version >= '3.9' and python_full_version < '3.11'" }, +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/60/04/ee2a9e8542e4fa2773b81771ff8349ff19cdd56b7258a0cc442639052edb/cryptography-46.0.5.tar.gz", hash = "sha256:abace499247268e3757271b2f1e244b36b06f8515cf27c4d49468fc9eb16e93d", size = 750064, upload-time = "2026-02-10T19:18:38.255Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f7/81/b0bb27f2ba931a65409c6b8a8b358a7f03c0e46eceacddff55f7c84b1f3b/cryptography-46.0.5-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:351695ada9ea9618b3500b490ad54c739860883df6c1f555e088eaf25b1bbaad", size = 7176289, upload-time = "2026-02-10T19:17:08.274Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/ff/9e/6b4397a3e3d15123de3b1806ef342522393d50736c13b20ec4c9ea6693a6/cryptography-46.0.5-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c18ff11e86df2e28854939acde2d003f7984f721eba450b56a200ad90eeb0e6b", size = 4275637, upload-time = "2026-02-10T19:17:10.53Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/63/e7/471ab61099a3920b0c77852ea3f0ea611c9702f651600397ac567848b897/cryptography-46.0.5-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4d7e3d356b8cd4ea5aff04f129d5f66ebdc7b6f8eae802b93739ed520c47c79b", size = 4424742, upload-time = "2026-02-10T19:17:12.388Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/37/53/a18500f270342d66bf7e4d9f091114e31e5ee9e7375a5aba2e85a91e0044/cryptography-46.0.5-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:50bfb6925eff619c9c023b967d5b77a54e04256c4281b0e21336a130cd7fc263", size = 4277528, upload-time = "2026-02-10T19:17:13.853Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/22/29/c2e812ebc38c57b40e7c583895e73c8c5adb4d1e4a0cc4c5a4fdab2b1acc/cryptography-46.0.5-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:803812e111e75d1aa73690d2facc295eaefd4439be1023fefc4995eaea2af90d", size = 4947993, upload-time = "2026-02-10T19:17:15.618Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/6b/e7/237155ae19a9023de7e30ec64e5d99a9431a567407ac21170a046d22a5a3/cryptography-46.0.5-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3ee190460e2fbe447175cda91b88b84ae8322a104fc27766ad09428754a618ed", size = 4456855, upload-time = "2026-02-10T19:17:17.221Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/2d/87/fc628a7ad85b81206738abbd213b07702bcbdada1dd43f72236ef3cffbb5/cryptography-46.0.5-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:f145bba11b878005c496e93e257c1e88f154d278d2638e6450d17e0f31e558d2", size = 3984635, upload-time = "2026-02-10T19:17:18.792Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/84/29/65b55622bde135aedf4565dc509d99b560ee4095e56989e815f8fd2aa910/cryptography-46.0.5-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:e9251e3be159d1020c4030bd2e5f84d6a43fe54b6c19c12f51cde9542a2817b2", size = 4277038, upload-time = "2026-02-10T19:17:20.256Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/bc/36/45e76c68d7311432741faf1fbf7fac8a196a0a735ca21f504c75d37e2558/cryptography-46.0.5-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:47fb8a66058b80e509c47118ef8a75d14c455e81ac369050f20ba0d23e77fee0", size = 4912181, upload-time = "2026-02-10T19:17:21.825Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/6d/1a/c1ba8fead184d6e3d5afcf03d569acac5ad063f3ac9fb7258af158f7e378/cryptography-46.0.5-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:4c3341037c136030cb46e4b1e17b7418ea4cbd9dd207e4a6f3b2b24e0d4ac731", size = 4456482, upload-time = "2026-02-10T19:17:25.133Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f9/e5/3fb22e37f66827ced3b902cf895e6a6bc1d095b5b26be26bd13c441fdf19/cryptography-46.0.5-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:890bcb4abd5a2d3f852196437129eb3667d62630333aacc13dfd470fad3aaa82", size = 4405497, upload-time = "2026-02-10T19:17:26.66Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/1a/df/9d58bb32b1121a8a2f27383fabae4d63080c7ca60b9b5c88be742be04ee7/cryptography-46.0.5-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:80a8d7bfdf38f87ca30a5391c0c9ce4ed2926918e017c29ddf643d0ed2778ea1", size = 4667819, upload-time = "2026-02-10T19:17:28.569Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/ea/ed/325d2a490c5e94038cdb0117da9397ece1f11201f425c4e9c57fe5b9f08b/cryptography-46.0.5-cp311-abi3-win32.whl", hash = "sha256:60ee7e19e95104d4c03871d7d7dfb3d22ef8a9b9c6778c94e1c8fcc8365afd48", size = 3028230, upload-time = "2026-02-10T19:17:30.518Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/e9/5a/ac0f49e48063ab4255d9e3b79f5def51697fce1a95ea1370f03dc9db76f6/cryptography-46.0.5-cp311-abi3-win_amd64.whl", hash = "sha256:38946c54b16c885c72c4f59846be9743d699eee2b69b6988e0a00a01f46a61a4", size = 3480909, upload-time = "2026-02-10T19:17:32.083Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/00/13/3d278bfa7a15a96b9dc22db5a12ad1e48a9eb3d40e1827ef66a5df75d0d0/cryptography-46.0.5-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:94a76daa32eb78d61339aff7952ea819b1734b46f73646a07decb40e5b3448e2", size = 7119287, upload-time = "2026-02-10T19:17:33.801Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/67/c8/581a6702e14f0898a0848105cbefd20c058099e2c2d22ef4e476dfec75d7/cryptography-46.0.5-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5be7bf2fb40769e05739dd0046e7b26f9d4670badc7b032d6ce4db64dddc0678", size = 4265728, upload-time = "2026-02-10T19:17:35.569Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/dd/4a/ba1a65ce8fc65435e5a849558379896c957870dd64fecea97b1ad5f46a37/cryptography-46.0.5-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fe346b143ff9685e40192a4960938545c699054ba11d4f9029f94751e3f71d87", size = 4408287, upload-time = "2026-02-10T19:17:36.938Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f8/67/8ffdbf7b65ed1ac224d1c2df3943553766914a8ca718747ee3871da6107e/cryptography-46.0.5-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:c69fd885df7d089548a42d5ec05be26050ebcd2283d89b3d30676eb32ff87dee", size = 4270291, upload-time = "2026-02-10T19:17:38.748Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f8/e5/f52377ee93bc2f2bba55a41a886fd208c15276ffbd2569f2ddc89d50e2c5/cryptography-46.0.5-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:8293f3dea7fc929ef7240796ba231413afa7b68ce38fd21da2995549f5961981", size = 4927539, upload-time = "2026-02-10T19:17:40.241Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/3b/02/cfe39181b02419bbbbcf3abdd16c1c5c8541f03ca8bda240debc467d5a12/cryptography-46.0.5-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:1abfdb89b41c3be0365328a410baa9df3ff8a9110fb75e7b52e66803ddabc9a9", size = 4442199, upload-time = "2026-02-10T19:17:41.789Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/c0/96/2fcaeb4873e536cf71421a388a6c11b5bc846e986b2b069c79363dc1648e/cryptography-46.0.5-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:d66e421495fdb797610a08f43b05269e0a5ea7f5e652a89bfd5a7d3c1dee3648", size = 3960131, upload-time = "2026-02-10T19:17:43.379Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/d8/d2/b27631f401ddd644e94c5cf33c9a4069f72011821cf3dc7309546b0642a0/cryptography-46.0.5-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:4e817a8920bfbcff8940ecfd60f23d01836408242b30f1a708d93198393a80b4", size = 4270072, upload-time = "2026-02-10T19:17:45.481Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f4/a7/60d32b0370dae0b4ebe55ffa10e8599a2a59935b5ece1b9f06edb73abdeb/cryptography-46.0.5-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:68f68d13f2e1cb95163fa3b4db4bf9a159a418f5f6e7242564fc75fcae667fd0", size = 4892170, upload-time = "2026-02-10T19:17:46.997Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/d2/b9/cf73ddf8ef1164330eb0b199a589103c363afa0cf794218c24d524a58eab/cryptography-46.0.5-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:a3d1fae9863299076f05cb8a778c467578262fae09f9dc0ee9b12eb4268ce663", size = 4441741, upload-time = "2026-02-10T19:17:48.661Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/5f/eb/eee00b28c84c726fe8fa0158c65afe312d9c3b78d9d01daf700f1f6e37ff/cryptography-46.0.5-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:c4143987a42a2397f2fc3b4d7e3a7d313fbe684f67ff443999e803dd75a76826", size = 4396728, upload-time = "2026-02-10T19:17:50.058Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/65/f4/6bc1a9ed5aef7145045114b75b77c2a8261b4d38717bd8dea111a63c3442/cryptography-46.0.5-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:7d731d4b107030987fd61a7f8ab512b25b53cef8f233a97379ede116f30eb67d", size = 4652001, upload-time = "2026-02-10T19:17:51.54Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/86/ef/5d00ef966ddd71ac2e6951d278884a84a40ffbd88948ef0e294b214ae9e4/cryptography-46.0.5-cp314-cp314t-win32.whl", hash = "sha256:c3bcce8521d785d510b2aad26ae2c966092b7daa8f45dd8f44734a104dc0bc1a", size = 3003637, upload-time = "2026-02-10T19:17:52.997Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/b7/57/f3f4160123da6d098db78350fdfd9705057aad21de7388eacb2401dceab9/cryptography-46.0.5-cp314-cp314t-win_amd64.whl", hash = "sha256:4d8ae8659ab18c65ced284993c2265910f6c9e650189d4e3f68445ef82a810e4", size = 3469487, upload-time = "2026-02-10T19:17:54.549Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/e2/fa/a66aa722105ad6a458bebd64086ca2b72cdd361fed31763d20390f6f1389/cryptography-46.0.5-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:4108d4c09fbbf2789d0c926eb4152ae1760d5a2d97612b92d508d96c861e4d31", size = 7170514, upload-time = "2026-02-10T19:17:56.267Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/0f/04/c85bdeab78c8bc77b701bf0d9bdcf514c044e18a46dcff330df5448631b0/cryptography-46.0.5-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7d1f30a86d2757199cb2d56e48cce14deddf1f9c95f1ef1b64ee91ea43fe2e18", size = 4275349, upload-time = "2026-02-10T19:17:58.419Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/5c/32/9b87132a2f91ee7f5223b091dc963055503e9b442c98fc0b8a5ca765fab0/cryptography-46.0.5-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:039917b0dc418bb9f6edce8a906572d69e74bd330b0b3fea4f79dab7f8ddd235", size = 4420667, upload-time = "2026-02-10T19:18:00.619Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/a1/a6/a7cb7010bec4b7c5692ca6f024150371b295ee1c108bdc1c400e4c44562b/cryptography-46.0.5-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:ba2a27ff02f48193fc4daeadf8ad2590516fa3d0adeeb34336b96f7fa64c1e3a", size = 4276980, upload-time = "2026-02-10T19:18:02.379Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/8e/7c/c4f45e0eeff9b91e3f12dbd0e165fcf2a38847288fcfd889deea99fb7b6d/cryptography-46.0.5-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:61aa400dce22cb001a98014f647dc21cda08f7915ceb95df0c9eaf84b4b6af76", size = 4939143, upload-time = "2026-02-10T19:18:03.964Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/37/19/e1b8f964a834eddb44fa1b9a9976f4e414cbb7aa62809b6760c8803d22d1/cryptography-46.0.5-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3ce58ba46e1bc2aac4f7d9290223cead56743fa6ab94a5d53292ffaac6a91614", size = 4453674, upload-time = "2026-02-10T19:18:05.588Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/db/ed/db15d3956f65264ca204625597c410d420e26530c4e2943e05a0d2f24d51/cryptography-46.0.5-cp38-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:420d0e909050490d04359e7fdb5ed7e667ca5c3c402b809ae2563d7e66a92229", size = 3978801, upload-time = "2026-02-10T19:18:07.167Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/41/e2/df40a31d82df0a70a0daf69791f91dbb70e47644c58581d654879b382d11/cryptography-46.0.5-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:582f5fcd2afa31622f317f80426a027f30dc792e9c80ffee87b993200ea115f1", size = 4276755, upload-time = "2026-02-10T19:18:09.813Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/33/45/726809d1176959f4a896b86907b98ff4391a8aa29c0aaaf9450a8a10630e/cryptography-46.0.5-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:bfd56bb4b37ed4f330b82402f6f435845a5f5648edf1ad497da51a8452d5d62d", size = 4901539, upload-time = "2026-02-10T19:18:11.263Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/99/0f/a3076874e9c88ecb2ecc31382f6e7c21b428ede6f55aafa1aa272613e3cd/cryptography-46.0.5-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:a3d507bb6a513ca96ba84443226af944b0f7f47dcc9a399d110cd6146481d24c", size = 4452794, upload-time = "2026-02-10T19:18:12.914Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/02/ef/ffeb542d3683d24194a38f66ca17c0a4b8bf10631feef44a7ef64e631b1a/cryptography-46.0.5-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9f16fbdf4da055efb21c22d81b89f155f02ba420558db21288b3d0035bafd5f4", size = 4404160, upload-time = "2026-02-10T19:18:14.375Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/96/93/682d2b43c1d5f1406ed048f377c0fc9fc8f7b0447a478d5c65ab3d3a66eb/cryptography-46.0.5-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:ced80795227d70549a411a4ab66e8ce307899fad2220ce5ab2f296e687eacde9", size = 4667123, upload-time = "2026-02-10T19:18:15.886Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/45/2d/9c5f2926cb5300a8eefc3f4f0b3f3df39db7f7ce40c8365444c49363cbda/cryptography-46.0.5-cp38-abi3-win32.whl", hash = "sha256:02f547fce831f5096c9a567fd41bc12ca8f11df260959ecc7c3202555cc47a72", size = 3010220, upload-time = "2026-02-10T19:18:17.361Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/48/ef/0c2f4a8e31018a986949d34a01115dd057bf536905dca38897bacd21fac3/cryptography-46.0.5-cp38-abi3-win_amd64.whl", hash = "sha256:556e106ee01aa13484ce9b0239bca667be5004efb0aabbed28d353df86445595", size = 3467050, upload-time = "2026-02-10T19:18:18.899Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/eb/dd/2d9fdb07cebdf3d51179730afb7d5e576153c6744c3ff8fded23030c204e/cryptography-46.0.5-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:3b4995dc971c9fb83c25aa44cf45f02ba86f71ee600d81091c2f0cbae116b06c", size = 3476964, upload-time = "2026-02-10T19:18:20.687Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/e9/6f/6cc6cc9955caa6eaf83660b0da2b077c7fe8ff9950a3c5e45d605038d439/cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:bc84e875994c3b445871ea7181d424588171efec3e185dced958dad9e001950a", size = 4218321, upload-time = "2026-02-10T19:18:22.349Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/3e/5d/c4da701939eeee699566a6c1367427ab91a8b7088cc2328c09dbee940415/cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:2ae6971afd6246710480e3f15824ed3029a60fc16991db250034efd0b9fb4356", size = 4381786, upload-time = "2026-02-10T19:18:24.529Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/ac/97/a538654732974a94ff96c1db621fa464f455c02d4bb7d2652f4edc21d600/cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:d861ee9e76ace6cf36a6a89b959ec08e7bc2493ee39d07ffe5acb23ef46d27da", size = 4217990, upload-time = "2026-02-10T19:18:25.957Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/ae/11/7e500d2dd3ba891197b9efd2da5454b74336d64a7cc419aa7327ab74e5f6/cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:2b7a67c9cd56372f3249b39699f2ad479f6991e62ea15800973b956f4b73e257", size = 4381252, upload-time = "2026-02-10T19:18:27.496Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/bc/58/6b3d24e6b9bc474a2dcdee65dfd1f008867015408a271562e4b690561a4d/cryptography-46.0.5-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:8456928655f856c6e1533ff59d5be76578a7157224dbd9ce6872f25055ab9ab7", size = 3407605, upload-time = "2026-02-10T19:18:29.233Z" }, +] + +[[package]] +name = "exceptiongroup" +version = "1.3.1" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +dependencies = [ + { name = "typing-extensions", version = "4.13.2", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version < '3.9'" }, + { name = "typing-extensions", version = "4.15.0", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version >= '3.9' and python_full_version < '3.13'" }, +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size = 30371, upload-time = "2025-11-21T23:01:54.787Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/8a/0e/97c33bf5009bdbac74fd2beace167cab3f978feb69cc36f1ef79360d6c4e/exceptiongroup-1.3.1-py3-none-any.whl", hash = "sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598", size = 16740, upload-time = "2025-11-21T23:01:53.443Z" }, +] + +[[package]] +name = "fastapi" +version = "0.124.4" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +resolution-markers = [ + "python_full_version < '3.9'", +] +dependencies = [ + { name = "annotated-doc", marker = "python_full_version < '3.9'" }, + { name = "pydantic", version = "2.10.6", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version < '3.9'" }, + { name = "starlette", version = "0.44.0", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version < '3.9'" }, + { name = "typing-extensions", version = "4.13.2", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version < '3.9'" }, +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/cd/21/ade3ff6745a82ea8ad88552b4139d27941549e4f19125879f848ac8f3c3d/fastapi-0.124.4.tar.gz", hash = "sha256:0e9422e8d6b797515f33f500309f6e1c98ee4e85563ba0f2debb282df6343763", size = 378460, upload-time = "2025-12-12T15:00:43.891Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/3e/57/aa70121b5008f44031be645a61a7c4abc24e0e888ad3fc8fda916f4d188e/fastapi-0.124.4-py3-none-any.whl", hash = "sha256:6d1e703698443ccb89e50abe4893f3c84d9d6689c0cf1ca4fad6d3c15cf69f15", size = 113281, upload-time = "2025-12-12T15:00:42.44Z" }, +] + +[[package]] +name = "fastapi" +version = "0.128.8" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +resolution-markers = [ + "python_full_version == '3.9.*'", +] +dependencies = [ + { name = "annotated-doc", marker = "python_full_version == '3.9.*'" }, + { name = "pydantic", version = "2.12.5", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version == '3.9.*'" }, + { name = "starlette", version = "0.49.3", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version == '3.9.*'" }, + { name = "typing-extensions", version = "4.15.0", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version == '3.9.*'" }, + { name = "typing-inspection", marker = "python_full_version == '3.9.*'" }, +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/01/72/0df5c58c954742f31a7054e2dd1143bae0b408b7f36b59b85f928f9b456c/fastapi-0.128.8.tar.gz", hash = "sha256:3171f9f328c4a218f0a8d2ba8310ac3a55d1ee12c28c949650288aee25966007", size = 375523, upload-time = "2026-02-11T15:19:36.69Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/9f/37/37b07e276f8923c69a5df266bfcb5bac4ba8b55dfe4a126720f8c48681d1/fastapi-0.128.8-py3-none-any.whl", hash = "sha256:5618f492d0fe973a778f8fec97723f598aa9deee495040a8d51aaf3cf123ecf1", size = 103630, upload-time = "2026-02-11T15:19:35.209Z" }, +] + +[[package]] +name = "fastapi" +version = "0.135.1" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +resolution-markers = [ + "python_full_version >= '3.10'", +] +dependencies = [ + { name = "annotated-doc", marker = "python_full_version >= '3.10'" }, + { name = "pydantic", version = "2.12.5", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version >= '3.10'" }, + { name = "starlette", version = "0.52.1", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version >= '3.10'" }, + { name = "typing-extensions", version = "4.15.0", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version >= '3.10'" }, + { name = "typing-inspection", marker = "python_full_version >= '3.10'" }, +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/e7/7b/f8e0211e9380f7195ba3f3d40c292594fd81ba8ec4629e3854c353aaca45/fastapi-0.135.1.tar.gz", hash = "sha256:d04115b508d936d254cea545b7312ecaa58a7b3a0f84952535b4c9afae7668cd", size = 394962, upload-time = "2026-03-01T18:18:29.369Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/e4/72/42e900510195b23a56bde950d26a51f8b723846bfcaa0286e90287f0422b/fastapi-0.135.1-py3-none-any.whl", hash = "sha256:46e2fc5745924b7c840f71ddd277382af29ce1cdb7d5eab5bf697e3fb9999c9e", size = 116999, upload-time = "2026-03-01T18:18:30.831Z" }, +] + +[[package]] +name = "greenlet" +version = "3.1.1" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +resolution-markers = [ + "python_full_version < '3.9'", +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/2f/ff/df5fede753cc10f6a5be0931204ea30c35fa2f2ea7a35b25bdaf4fe40e46/greenlet-3.1.1.tar.gz", hash = "sha256:4ce3ac6cdb6adf7946475d7ef31777c26d94bccc377e070a7986bd2d5c515467", size = 186022, upload-time = "2024-09-20T18:21:04.506Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/25/90/5234a78dc0ef6496a6eb97b67a42a8e96742a56f7dc808cb954a85390448/greenlet-3.1.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:0bbae94a29c9e5c7e4a2b7f0aae5c17e8e90acbfd3bf6270eeba60c39fce3563", size = 271235, upload-time = "2024-09-20T17:07:18.761Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/7c/16/cd631fa0ab7d06ef06387135b7549fdcc77d8d859ed770a0d28e47b20972/greenlet-3.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fde093fb93f35ca72a556cf72c92ea3ebfda3d79fc35bb19fbe685853869a83", size = 637168, upload-time = "2024-09-20T17:36:43.774Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/2f/b1/aed39043a6fec33c284a2c9abd63ce191f4f1a07319340ffc04d2ed3256f/greenlet-3.1.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:36b89d13c49216cadb828db8dfa6ce86bbbc476a82d3a6c397f0efae0525bdd0", size = 648826, upload-time = "2024-09-20T17:39:16.921Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/76/25/40e0112f7f3ebe54e8e8ed91b2b9f970805143efef16d043dfc15e70f44b/greenlet-3.1.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94b6150a85e1b33b40b1464a3f9988dcc5251d6ed06842abff82e42632fac120", size = 644443, upload-time = "2024-09-20T17:44:21.896Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/fb/2f/3850b867a9af519794784a7eeed1dd5bc68ffbcc5b28cef703711025fd0a/greenlet-3.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93147c513fac16385d1036b7e5b102c7fbbdb163d556b791f0f11eada7ba65dc", size = 643295, upload-time = "2024-09-20T17:08:37.951Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/cf/69/79e4d63b9387b48939096e25115b8af7cd8a90397a304f92436bcb21f5b2/greenlet-3.1.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:da7a9bff22ce038e19bf62c4dd1ec8391062878710ded0a845bcf47cc0200617", size = 599544, upload-time = "2024-09-20T17:08:27.894Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/46/1d/44dbcb0e6c323bd6f71b8c2f4233766a5faf4b8948873225d34a0b7efa71/greenlet-3.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b2795058c23988728eec1f36a4e5e4ebad22f8320c85f3587b539b9ac84128d7", size = 1125456, upload-time = "2024-09-20T17:44:11.755Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/e0/1d/a305dce121838d0278cee39d5bb268c657f10a5363ae4b726848f833f1bb/greenlet-3.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ed10eac5830befbdd0c32f83e8aa6288361597550ba669b04c48f0f9a2c843c6", size = 1149111, upload-time = "2024-09-20T17:09:22.104Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/96/28/d62835fb33fb5652f2e98d34c44ad1a0feacc8b1d3f1aecab035f51f267d/greenlet-3.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:77c386de38a60d1dfb8e55b8c1101d68c79dfdd25c7095d51fec2dd800892b80", size = 298392, upload-time = "2024-09-20T17:28:51.988Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/28/62/1c2665558618553c42922ed47a4e6d6527e2fa3516a8256c2f431c5d0441/greenlet-3.1.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:e4d333e558953648ca09d64f13e6d8f0523fa705f51cae3f03b5983489958c70", size = 272479, upload-time = "2024-09-20T17:07:22.332Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/76/9d/421e2d5f07285b6e4e3a676b016ca781f63cfe4a0cd8eaecf3fd6f7a71ae/greenlet-3.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09fc016b73c94e98e29af67ab7b9a879c307c6731a2c9da0db5a7d9b7edd1159", size = 640404, upload-time = "2024-09-20T17:36:45.588Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/e5/de/6e05f5c59262a584e502dd3d261bbdd2c97ab5416cc9c0b91ea38932a901/greenlet-3.1.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d5e975ca70269d66d17dd995dafc06f1b06e8cb1ec1e9ed54c1d1e4a7c4cf26e", size = 652813, upload-time = "2024-09-20T17:39:19.052Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/49/93/d5f93c84241acdea15a8fd329362c2c71c79e1a507c3f142a5d67ea435ae/greenlet-3.1.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b2813dc3de8c1ee3f924e4d4227999285fd335d1bcc0d2be6dc3f1f6a318ec1", size = 648517, upload-time = "2024-09-20T17:44:24.101Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/15/85/72f77fc02d00470c86a5c982b8daafdf65d38aefbbe441cebff3bf7037fc/greenlet-3.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e347b3bfcf985a05e8c0b7d462ba6f15b1ee1c909e2dcad795e49e91b152c383", size = 647831, upload-time = "2024-09-20T17:08:40.577Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f7/4b/1c9695aa24f808e156c8f4813f685d975ca73c000c2a5056c514c64980f6/greenlet-3.1.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e8f8c9cb53cdac7ba9793c276acd90168f416b9ce36799b9b885790f8ad6c0a", size = 602413, upload-time = "2024-09-20T17:08:31.728Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/76/70/ad6e5b31ef330f03b12559d19fda2606a522d3849cde46b24f223d6d1619/greenlet-3.1.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:62ee94988d6b4722ce0028644418d93a52429e977d742ca2ccbe1c4f4a792511", size = 1129619, upload-time = "2024-09-20T17:44:14.222Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f4/fb/201e1b932e584066e0f0658b538e73c459b34d44b4bd4034f682423bc801/greenlet-3.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1776fd7f989fc6b8d8c8cb8da1f6b82c5814957264d1f6cf818d475ec2bf6395", size = 1155198, upload-time = "2024-09-20T17:09:23.903Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/12/da/b9ed5e310bb8b89661b80cbcd4db5a067903bbcd7fc854923f5ebb4144f0/greenlet-3.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:48ca08c771c268a768087b408658e216133aecd835c0ded47ce955381105ba39", size = 298930, upload-time = "2024-09-20T17:25:18.656Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/7d/ec/bad1ac26764d26aa1353216fcbfa4670050f66d445448aafa227f8b16e80/greenlet-3.1.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:4afe7ea89de619adc868e087b4d2359282058479d7cfb94970adf4b55284574d", size = 274260, upload-time = "2024-09-20T17:08:07.301Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/66/d4/c8c04958870f482459ab5956c2942c4ec35cac7fe245527f1039837c17a9/greenlet-3.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f406b22b7c9a9b4f8aa9d2ab13d6ae0ac3e85c9a809bd590ad53fed2bf70dc79", size = 649064, upload-time = "2024-09-20T17:36:47.628Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/51/41/467b12a8c7c1303d20abcca145db2be4e6cd50a951fa30af48b6ec607581/greenlet-3.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c3a701fe5a9695b238503ce5bbe8218e03c3bcccf7e204e455e7462d770268aa", size = 663420, upload-time = "2024-09-20T17:39:21.258Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/27/8f/2a93cd9b1e7107d5c7b3b7816eeadcac2ebcaf6d6513df9abaf0334777f6/greenlet-3.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2846930c65b47d70b9d178e89c7e1a69c95c1f68ea5aa0a58646b7a96df12441", size = 658035, upload-time = "2024-09-20T17:44:26.501Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/57/5c/7c6f50cb12be092e1dccb2599be5a942c3416dbcfb76efcf54b3f8be4d8d/greenlet-3.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99cfaa2110534e2cf3ba31a7abcac9d328d1d9f1b95beede58294a60348fba36", size = 660105, upload-time = "2024-09-20T17:08:42.048Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f1/66/033e58a50fd9ec9df00a8671c74f1f3a320564c6415a4ed82a1c651654ba/greenlet-3.1.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1443279c19fca463fc33e65ef2a935a5b09bb90f978beab37729e1c3c6c25fe9", size = 613077, upload-time = "2024-09-20T17:08:33.707Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/19/c5/36384a06f748044d06bdd8776e231fadf92fc896bd12cb1c9f5a1bda9578/greenlet-3.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b7cede291382a78f7bb5f04a529cb18e068dd29e0fb27376074b6d0317bf4dd0", size = 1135975, upload-time = "2024-09-20T17:44:15.989Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/38/f9/c0a0eb61bdf808d23266ecf1d63309f0e1471f284300ce6dac0ae1231881/greenlet-3.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23f20bb60ae298d7d8656c6ec6db134bca379ecefadb0b19ce6f19d1f232a942", size = 1163955, upload-time = "2024-09-20T17:09:25.539Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/43/21/a5d9df1d21514883333fc86584c07c2b49ba7c602e670b174bd73cfc9c7f/greenlet-3.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:7124e16b4c55d417577c2077be379514321916d5790fa287c9ed6f23bd2ffd01", size = 299655, upload-time = "2024-09-20T17:21:22.427Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f3/57/0db4940cd7bb461365ca8d6fd53e68254c9dbbcc2b452e69d0d41f10a85e/greenlet-3.1.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:05175c27cb459dcfc05d026c4232f9de8913ed006d42713cb8a5137bd49375f1", size = 272990, upload-time = "2024-09-20T17:08:26.312Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/1c/ec/423d113c9f74e5e402e175b157203e9102feeb7088cee844d735b28ef963/greenlet-3.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:935e943ec47c4afab8965954bf49bfa639c05d4ccf9ef6e924188f762145c0ff", size = 649175, upload-time = "2024-09-20T17:36:48.983Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/a9/46/ddbd2db9ff209186b7b7c621d1432e2f21714adc988703dbdd0e65155c77/greenlet-3.1.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:667a9706c970cb552ede35aee17339a18e8f2a87a51fba2ed39ceeeb1004798a", size = 663425, upload-time = "2024-09-20T17:39:22.705Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/bc/f9/9c82d6b2b04aa37e38e74f0c429aece5eeb02bab6e3b98e7db89b23d94c6/greenlet-3.1.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b8a678974d1f3aa55f6cc34dc480169d58f2e6d8958895d68845fa4ab566509e", size = 657736, upload-time = "2024-09-20T17:44:28.544Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/d9/42/b87bc2a81e3a62c3de2b0d550bf91a86939442b7ff85abb94eec3fc0e6aa/greenlet-3.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efc0f674aa41b92da8c49e0346318c6075d734994c3c4e4430b1c3f853e498e4", size = 660347, upload-time = "2024-09-20T17:08:45.56Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/37/fa/71599c3fd06336cdc3eac52e6871cfebab4d9d70674a9a9e7a482c318e99/greenlet-3.1.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0153404a4bb921f0ff1abeb5ce8a5131da56b953eda6e14b88dc6bbc04d2049e", size = 615583, upload-time = "2024-09-20T17:08:36.85Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/4e/96/e9ef85de031703ee7a4483489b40cf307f93c1824a02e903106f2ea315fe/greenlet-3.1.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:275f72decf9932639c1c6dd1013a1bc266438eb32710016a1c742df5da6e60a1", size = 1133039, upload-time = "2024-09-20T17:44:18.287Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/87/76/b2b6362accd69f2d1889db61a18c94bc743e961e3cab344c2effaa4b4a25/greenlet-3.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:c4aab7f6381f38a4b42f269057aee279ab0fc7bf2e929e3d4abfae97b682a12c", size = 1160716, upload-time = "2024-09-20T17:09:27.112Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/1f/1b/54336d876186920e185066d8c3024ad55f21d7cc3683c856127ddb7b13ce/greenlet-3.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:b42703b1cf69f2aa1df7d1030b9d77d3e584a70755674d60e710f0af570f3761", size = 299490, upload-time = "2024-09-20T17:17:09.501Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/5f/17/bea55bf36990e1638a2af5ba10c1640273ef20f627962cf97107f1e5d637/greenlet-3.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1695e76146579f8c06c1509c7ce4dfe0706f49c6831a817ac04eebb2fd02011", size = 643731, upload-time = "2024-09-20T17:36:50.376Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/78/d2/aa3d2157f9ab742a08e0fd8f77d4699f37c22adfbfeb0c610a186b5f75e0/greenlet-3.1.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7876452af029456b3f3549b696bb36a06db7c90747740c5302f74a9e9fa14b13", size = 649304, upload-time = "2024-09-20T17:39:24.55Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f1/8e/d0aeffe69e53ccff5a28fa86f07ad1d2d2d6537a9506229431a2a02e2f15/greenlet-3.1.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4ead44c85f8ab905852d3de8d86f6f8baf77109f9da589cb4fa142bd3b57b475", size = 646537, upload-time = "2024-09-20T17:44:31.102Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/05/79/e15408220bbb989469c8871062c97c6c9136770657ba779711b90870d867/greenlet-3.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8320f64b777d00dd7ccdade271eaf0cad6636343293a25074cc5566160e4de7b", size = 642506, upload-time = "2024-09-20T17:08:47.852Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/18/87/470e01a940307796f1d25f8167b551a968540fbe0551c0ebb853cb527dd6/greenlet-3.1.1-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6510bf84a6b643dabba74d3049ead221257603a253d0a9873f55f6a59a65f822", size = 602753, upload-time = "2024-09-20T17:08:38.079Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/e2/72/576815ba674eddc3c25028238f74d7b8068902b3968cbe456771b166455e/greenlet-3.1.1-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:04b013dc07c96f83134b1e99888e7a79979f1a247e2a9f59697fa14b5862ed01", size = 1122731, upload-time = "2024-09-20T17:44:20.556Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/ac/38/08cc303ddddc4b3d7c628c3039a61a3aae36c241ed01393d00c2fd663473/greenlet-3.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:411f015496fec93c1c8cd4e5238da364e1da7a124bcb293f085bf2860c32c6f6", size = 1142112, upload-time = "2024-09-20T17:09:28.753Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/97/83/bdf5f69fcf304065ec7cf8fc7c08248479cfed9bcca02bf0001c07e000aa/greenlet-3.1.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:346bed03fe47414091be4ad44786d1bd8bef0c3fcad6ed3dee074a032ab408a9", size = 271017, upload-time = "2024-09-20T17:08:54.806Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/31/4a/2d4443adcb38e1e90e50c653a26b2be39998ea78ca1a4cf414dfdeb2e98b/greenlet-3.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfc59d69fc48664bc693842bd57acfdd490acafda1ab52c7836e3fc75c90a111", size = 642888, upload-time = "2024-09-20T17:36:53.307Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/5a/c9/b5d9ac1b932aa772dd1eb90a8a2b30dbd7ad5569dcb7fdac543810d206b4/greenlet-3.1.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d21e10da6ec19b457b82636209cbe2331ff4306b54d06fa04b7c138ba18c8a81", size = 655451, upload-time = "2024-09-20T17:39:28.564Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/a8/18/218e21caf7caba5b2236370196eaebc00987d4a2b2d3bf63cc4d4dd5a69f/greenlet-3.1.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:37b9de5a96111fc15418819ab4c4432e4f3c2ede61e660b1e33971eba26ef9ba", size = 651409, upload-time = "2024-09-20T17:44:34.134Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/a7/25/de419a2b22fa6e18ce3b2a5adb01d33ec7b2784530f76fa36ba43d8f0fac/greenlet-3.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ef9ea3f137e5711f0dbe5f9263e8c009b7069d8a1acea822bd5e9dae0ae49c8", size = 650661, upload-time = "2024-09-20T17:08:50.932Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/d8/88/0ce16c0afb2d71d85562a7bcd9b092fec80a7767ab5b5f7e1bbbca8200f8/greenlet-3.1.1-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85f3ff71e2e60bd4b4932a043fbbe0f499e263c628390b285cb599154a3b03b1", size = 605959, upload-time = "2024-09-20T17:08:43.376Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/5a/10/39a417ad0afb0b7e5b150f1582cdeb9416f41f2e1df76018434dfac4a6cc/greenlet-3.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:95ffcf719966dd7c453f908e208e14cde192e09fde6c7186c8f1896ef778d8cd", size = 1132341, upload-time = "2024-09-20T17:44:25.225Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/9f/f5/e9b151ddd2ed0508b7a47bef7857e46218dbc3fd10e564617a3865abfaac/greenlet-3.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:03a088b9de532cbfe2ba2034b2b85e82df37874681e8c470d6fb2f8c04d7e4b7", size = 1159409, upload-time = "2024-09-20T17:09:32.224Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/86/97/2c86989ca4e0f089fbcdc9229c972a01ef53abdafd5ae89e0f3dcdcd4adb/greenlet-3.1.1-cp38-cp38-win32.whl", hash = "sha256:8b8b36671f10ba80e159378df9c4f15c14098c4fd73a36b9ad715f057272fbef", size = 281126, upload-time = "2024-09-20T17:48:09.107Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/d3/50/7b7a3e10ed82c760c1fd8d3167a7c95508e9fdfc0b0604f05ed1a9a9efdc/greenlet-3.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:7017b2be767b9d43cc31416aba48aab0d2309ee31b4dbf10a1d38fb7972bdf9d", size = 298285, upload-time = "2024-09-20T17:37:05.007Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/8c/82/8051e82af6d6b5150aacb6789a657a8afd48f0a44d8e91cb72aaaf28553a/greenlet-3.1.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:396979749bd95f018296af156201d6211240e7a23090f50a8d5d18c370084dc3", size = 270027, upload-time = "2024-09-20T17:08:27.964Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f9/74/f66de2785880293780eebd18a2958aeea7cbe7814af1ccef634f4701f846/greenlet-3.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca9d0ff5ad43e785350894d97e13633a66e2b50000e8a183a50a88d834752d42", size = 634822, upload-time = "2024-09-20T17:36:54.764Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/68/23/acd9ca6bc412b02b8aa755e47b16aafbe642dde0ad2f929f836e57a7949c/greenlet-3.1.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f6ff3b14f2df4c41660a7dec01045a045653998784bf8cfcb5a525bdffffbc8f", size = 646866, upload-time = "2024-09-20T17:39:30.2Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/a9/ab/562beaf8a53dc9f6b2459f200e7bc226bb07e51862a66351d8b7817e3efd/greenlet-3.1.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94ebba31df2aa506d7b14866fed00ac141a867e63143fe5bca82a8e503b36437", size = 641985, upload-time = "2024-09-20T17:44:36.168Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/03/d3/1006543621f16689f6dc75f6bcf06e3c23e044c26fe391c16c253623313e/greenlet-3.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73aaad12ac0ff500f62cebed98d8789198ea0e6f233421059fa68a5aa7220145", size = 641268, upload-time = "2024-09-20T17:08:52.469Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/2f/c1/ad71ce1b5f61f900593377b3f77b39408bce5dc96754790311b49869e146/greenlet-3.1.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:63e4844797b975b9af3a3fb8f7866ff08775f5426925e1e0bbcfe7932059a12c", size = 597376, upload-time = "2024-09-20T17:08:46.096Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f7/ff/183226685b478544d61d74804445589e069d00deb8ddef042699733950c7/greenlet-3.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7939aa3ca7d2a1593596e7ac6d59391ff30281ef280d8632fa03d81f7c5f955e", size = 1123359, upload-time = "2024-09-20T17:44:27.559Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/c0/8b/9b3b85a89c22f55f315908b94cd75ab5fed5973f7393bbef000ca8b2c5c1/greenlet-3.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d0028e725ee18175c6e422797c407874da24381ce0690d6b9396c204c7f7276e", size = 1147458, upload-time = "2024-09-20T17:09:33.708Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/b8/1c/248fadcecd1790b0ba793ff81fa2375c9ad6442f4c748bf2cc2e6563346a/greenlet-3.1.1-cp39-cp39-win32.whl", hash = "sha256:5e06afd14cbaf9e00899fae69b24a32f2196c19de08fcb9f4779dd4f004e5e7c", size = 281131, upload-time = "2024-09-20T17:44:53.141Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/ae/02/e7d0aef2354a38709b764df50b2b83608f0621493e47f47694eb80922822/greenlet-3.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:3319aa75e0e0639bc15ff54ca327e8dc7a6fe404003496e3c6925cd3142e0e22", size = 298306, upload-time = "2024-09-20T17:33:23.059Z" }, +] + +[[package]] +name = "greenlet" +version = "3.2.5" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +resolution-markers = [ + "python_full_version == '3.9.*'", +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/b0/f5/3e9eafb4030588337b2a2ae4df46212956854e9069c07b53aa3caabafd47/greenlet-3.2.5.tar.gz", hash = "sha256:c816554eb33e7ecf9ba4defcb1fd8c994e59be6b4110da15480b3e7447ea4286", size = 191501, upload-time = "2026-02-20T20:08:51.539Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/ff/d6/b3db928fc329b1b19ba32ffe143d2305f3aaafc583f5e1074c74ec445189/greenlet-3.2.5-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:34cc7cf8ab6f4b85298b01e13e881265ee7b3c1daf6bc10a2944abc15d4f87c3", size = 275803, upload-time = "2026-02-20T20:06:42.541Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/b3/ff/ab0ad4ff3d9e1faa266de4f6c79763b33fccd9265995f2940192494cc0ec/greenlet-3.2.5-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c11fe0cfb0ce33132f0b5d27eeadd1954976a82e5e9b60909ec2c4b884a55382", size = 633556, upload-time = "2026-02-20T20:30:41.594Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/da/dd/7b3ac77099a1671af8077ecedb12c9a1be1310e4c35bb69fd34c18ab6093/greenlet-3.2.5-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:a145f4b1c4ed7a2c94561b7f18b4beec3d3fb6f0580db22f7ed1d544e0620b34", size = 644943, upload-time = "2026-02-20T20:37:23.084Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/56/f0/bea7e7909ea9045b0c5055dad1ec9b81c82b761b4567e625f4f8349acfa1/greenlet-3.2.5-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:edbf4ab9a7057ee430a678fe2ef37ea5d69125d6bdc7feb42ed8d871c737e63b", size = 640849, upload-time = "2026-02-20T20:43:57.305Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/0f/36/84630e9ff1dfc8b7690957c0f77834a84eabdbd9c4977c3a2d0cbd5325c2/greenlet-3.2.5-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cc1d01bdd67db3e5711e6246e451d7a0f75fae7bbf40adde129296a7f9aa7cc9", size = 639841, upload-time = "2026-02-20T20:07:17.473Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/12/c4/6a2ee6c676dea7a05a3c3c1291fbc8ea44f26456b0accc891471293825af/greenlet-3.2.5-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bd593db7ee1fa8a513a48a404f8cc4126998a48025e3f5cbbc68d51be0a6bf66", size = 588813, upload-time = "2026-02-20T20:07:56.171Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/01/c0/75e75c2c993aa850292561ec80f5c263e3924e5843aa95a38716df69304c/greenlet-3.2.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ac8db07bced2c39b987bba13a3195f8157b0cfbce54488f86919321444a1cc3c", size = 1117377, upload-time = "2026-02-20T20:32:48.452Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/ee/03/e38ebf9024a0873fe8f60f5b7bc36bfb3be5e13efe4d798240f2d1f0fb73/greenlet-3.2.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4544ab2cfd5912e42458b13516429e029f87d8bbcdc8d5506db772941ae12493", size = 1141246, upload-time = "2026-02-20T20:06:23.576Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/d8/7b/c6e1192c795c0c12871e199237909a6bd35757d92c8472c7c019959b8637/greenlet-3.2.5-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:acabf468466d18017e2ae5fbf1a5a88b86b48983e550e1ae1437b69a83d9f4ac", size = 276916, upload-time = "2026-02-20T20:06:18.166Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/3e/b6/9887b559f3e1952d23052ec352e9977e808a2246c7cb8282a38337221e88/greenlet-3.2.5-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:472841de62d60f2cafd60edd4fd4dd7253eb70e6eaf14b8990dcaf177f4af957", size = 636107, upload-time = "2026-02-20T20:30:43.362Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/8a/be/e3e48b63bbc27d660fa1d98aecb64906b90a12e686a436169c1330ef34b2/greenlet-3.2.5-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:7d951e7d628a6e8b68af469f0fe4f100ef64c4054abeb9cdafbfaa30a920c950", size = 648240, upload-time = "2026-02-20T20:37:24.608Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/17/f6/2cbe999683f759f14f598234f04ae8ba6f22953a624b3a7a630003e6bfff/greenlet-3.2.5-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:87b791dd0e031a574249af717ac36f7031b18c35329561c1e0368201c18caf1f", size = 644170, upload-time = "2026-02-20T20:43:59.002Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/4c/ac/e731ed62576e91e533b36d0d97325adc2786674ab9e48ed8a6a24f4ef4e9/greenlet-3.2.5-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c8317d732e2ae0935d9ed2af2ea876fa714cf6f3b887a31ca150b54329b0a6e9", size = 643313, upload-time = "2026-02-20T20:07:19.012Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/70/64/99e5cdceb494bd4c1341c45b93f322601d2c8a5e1e4d1c7a2d24c5ed0570/greenlet-3.2.5-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ce8aed6fdd5e07d3cbb988cbdc188266a4eb9e1a52db9ef5c6526e59962d3933", size = 591295, upload-time = "2026-02-20T20:07:57.286Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/ee/e9/968e11f388c2b8792d3b8b40a57984c894a3b4745dae3662dce722653bc5/greenlet-3.2.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:60c06b502d56d5451f60ca665691da29f79ed95e247bcf8ce5024d7bbe64acb9", size = 1120277, upload-time = "2026-02-20T20:32:50.103Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/cb/2c/b5f2c4c68d753dce08218dc5a6b21d82238fdfdc44309032f6fe24d285e6/greenlet-3.2.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0d2a78e6f1bf3f1672df91e212a2f8314e1e7c922f065d14cbad4bc815059467", size = 1145746, upload-time = "2026-02-20T20:06:26.296Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/ad/32/022b21523eee713e7550162d5ca6aed23f913cc2c6232b154b9fd9badc07/greenlet-3.2.5-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:2acb30e77042f747ca81f0a10cc153296567e92e666c5e1b117f4595afd43352", size = 278412, upload-time = "2026-02-20T20:03:15.02Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/90/c5/8a3b0ed3cc34d8b988a44349437dfa0941f9c23ac108175f7b4ccea97111/greenlet-3.2.5-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:393c03c26c865f17f31d8db2f09603fadbe0581ad85a5d5908b131549fc38217", size = 644616, upload-time = "2026-02-20T20:30:44.823Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/b1/2c/2627bea183554695016af6cae93d7474fa90f61e5a6601a84ae7841cb720/greenlet-3.2.5-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:04e6a202cde56043fd355fefd1552c4caa5c087528121871d950eb4f1b51fa99", size = 658813, upload-time = "2026-02-20T20:37:26.255Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/44/c6/a80fc96f7cca7962dd972875d12c52dfabc94cb02bfeb19f3e7e169fca44/greenlet-3.2.5-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:d5583b2ffa677578a384337ee13125bdf9a427485d689014b39d638a4f3d8dbe", size = 653512, upload-time = "2026-02-20T20:44:00.343Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/2f/1b/75a5aeff487a26ba427a3837da6372f1fe6f2a9c6b2898e28ac99d491c11/greenlet-3.2.5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:45fcea7b697b91290b36eafc12fff479aca6ba6500d98ef6f34d5634c7119cbe", size = 655426, upload-time = "2026-02-20T20:07:20.124Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/53/91/9b5dfb4f3c88f8247c7a8f4c3759f0740bfa6bb0c59a9f6bf938e913df56/greenlet-3.2.5-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f96e2bb8a56b7e1aed1dbfbbe0050cb2ecca99c7c91892fd1771e3afab63b3e3", size = 611138, upload-time = "2026-02-20T20:07:58.966Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/b4/8d/d0b086410512d9859c84e9242a9b341de9f5566011ddf3a3f6886b842b61/greenlet-3.2.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d7456e67b0be653dfe643bb37d9566cd30939c80f858e2ce6d2d54951f75b14a", size = 1126896, upload-time = "2026-02-20T20:32:52.198Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/ef/37/59fe12fe456e84ced6ba71781e28cde52a3124d1dd2077bc1727021f49fd/greenlet-3.2.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5ceb29d1f74c7280befbbfa27b9bf91ba4a07a1a00b2179a5d953fc219b16c42", size = 1154779, upload-time = "2026-02-20T20:06:27.583Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/dd/95/d5d332fb73affaf7a1fbe80e49c2c7eae4f17c645af24a3b3fa25736d6f0/greenlet-3.2.5-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:f2cc88b50b9006b324c1b9f5f3552f9d4564c78af57cdfb4c7baf4f0aa089146", size = 277166, upload-time = "2026-02-20T20:03:57.077Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/6c/77/89458e20db5a4f1c64f9a0191561227e76d809941ca2d7529006d17d3450/greenlet-3.2.5-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e66872daffa360b2537170b73ad530f14fa31785b1bc78080125d92edf0a6def", size = 644674, upload-time = "2026-02-20T20:30:46.118Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/90/f8/9962175d2f2eaa629a7fd7545abacc8c4deda3baa4e52c1526d2eb5f5546/greenlet-3.2.5-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:c5445ddb7b586d870dad32ca9fc47c287d6022a528d194efdb8912093c5303ad", size = 658834, upload-time = "2026-02-20T20:37:27.466Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/81/71/52c21a7106ce5218aa6fa59ec32825b2655f875a09b69f68bd3e5d01feb3/greenlet-3.2.5-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:fd904626b8779810062cb455514594776e3cba3b8c0ba4939894df9f7b384971", size = 653091, upload-time = "2026-02-20T20:44:01.927Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f5/d7/826d0e080f0a7ad5ec47c8d143bbd3ca0887657bb806595fe2434d12938a/greenlet-3.2.5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:752c896a8c976548faafe8a306d446c6a4c68d4fd24699b84d4393bd9ac69a8e", size = 655760, upload-time = "2026-02-20T20:07:21.551Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/41/cc/33bd4c2f816be8c8e16f71740c4130adf3a66a3dd2ba29de72b9d8dd1096/greenlet-3.2.5-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:499b809e7738c8af0ff9ac9d5dd821cb93f4293065a9237543217f0b252f950a", size = 614132, upload-time = "2026-02-20T20:08:00.351Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/48/79/f3891dcfc59097474a53cc3c624f2f2465e431ab493bda043b8c873fb20a/greenlet-3.2.5-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:2c7429f6e9cea7cbf2637d86d3db12806ba970f7f972fcab39d6b54b4457cbaf", size = 1125286, upload-time = "2026-02-20T20:32:54.032Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/ca/47/212b47e6d2d7a04c4083db1af2fdd291bc8fe99b7e3571bfa560b65fc361/greenlet-3.2.5-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:a5e4b25e855800fba17713020c5c33e0a4b7a1829027719344f0c7c8870092a2", size = 1152825, upload-time = "2026-02-20T20:06:29Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f6/9d/4e9b941be05f8da7ba804c6413761d2c11cca05994cbf0a015bd729419f0/greenlet-3.2.5-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:7123b29e6bad2f3f89681be4ef316480fca798ebe8d22fbaced9cc3775007a4f", size = 277627, upload-time = "2026-02-20T20:06:04.798Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/23/cb/a73625c9a35138330014ecf3740c0d62e0c2b5e7279bb7f2586b1b199fac/greenlet-3.2.5-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:6e8fe0c72603201a86b2e038daf9b6c8570715f8779566419cff543b6ace88de", size = 690001, upload-time = "2026-02-20T20:30:47.754Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/83/49/6d1531109507bce7dfb23acf57a87013627ed3ac058851176e443a6a9134/greenlet-3.2.5-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:050703a60603db0e817364d69e048c70af299040c13a7e67792b9e62d4571196", size = 702953, upload-time = "2026-02-20T20:37:29.125Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/90/ac/6d8fff3b273fc60ad4b46f8411fe91c1e4cca064dfff68d096bc982fa6d0/greenlet-3.2.5-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:04633da773ae432649a3f092a8e4add390732cc9e1ab52c8ff2c91b8dc86f202", size = 698353, upload-time = "2026-02-20T20:44:03.547Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f7/38/f958ee90fab93529b30cc1e4a59b27c1112b640570043a84af84da3b3b98/greenlet-3.2.5-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6712bfd520530eb67331813f7112d3ee18e206f48b3d026d8a96cd2d2ad20251", size = 698995, upload-time = "2026-02-20T20:07:22.663Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/51/c1/a603906e79716d61f08afedaf8aed62017661457aef233d62d6e57ecd511/greenlet-3.2.5-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0bc06a78fa3ffbe2a75f1ebc7e040eacf6fa1050a9432953ab111fbbbf0d03c1", size = 661175, upload-time = "2026-02-20T20:08:01.477Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/3f/8f/f880ff4587d236b4d06893fb34da6b299aa0d00f6c8259673f80e1b6d63c/greenlet-3.2.5-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:dbe0e81e24982bb45907ca20152b31c2e3300ca352fdc4acbd4956e4a2cbc195", size = 274946, upload-time = "2026-02-20T20:05:21.979Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/3c/50/f6c78b8420187fdfe97fcf2e6d1dd243a7742d272c32fd4d4b1095474b37/greenlet-3.2.5-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:15871afc0d78ec87d15d8412b337f287fc69f8f669346e391585824970931c48", size = 631781, upload-time = "2026-02-20T20:30:48.845Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/26/d6/3277f92e1961e6e9f41d9f173ea74b5c1f7065072637669f761626f26cc0/greenlet-3.2.5-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:5bf0d7d62e356ef2e87e55e46a4e930ac165f9372760fb983b5631bb479e9d3a", size = 643740, upload-time = "2026-02-20T20:37:30.639Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f8/8a/c37b87659378759f158dbe03eaeb7ed002a8968f1c649b2972f5323f99b2/greenlet-3.2.5-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:e3f03ddd7142c758ab41c18089a1407b9959bd276b4e6dfbd8fd06403832c87a", size = 639098, upload-time = "2026-02-20T20:44:07.287Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/2a/6a/4f79d2e7b5ef3723fc5ffea0d6cb22627e5f95e0f19c973fa12bf1cf7891/greenlet-3.2.5-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6dff6433742073e5b6ad40953a78a0e8cddcb3f6869e5ea635d29a810ca5e7d0", size = 638382, upload-time = "2026-02-20T20:07:23.883Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/4d/59/7aadf33f23c65dbf4db27e7f5b60c414797a61e954352ae4a86c5c8b0553/greenlet-3.2.5-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bdd67619cefe1cc9fcab57c8853d2bb36eca9f166c0058cc0d428d471f7c785c", size = 587516, upload-time = "2026-02-20T20:08:02.841Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/1d/46/b3422959f830de28a4eea447414e6bd7b980d755892f66ab52ad805da1c4/greenlet-3.2.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3828b309dfb1f117fe54867512a8265d8d4f00f8de6908eef9b885f4d8789062", size = 1115818, upload-time = "2026-02-20T20:32:55.786Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/54/4a/3d1c9728f093415637cf3696909fa10852632e33e68238fb8ca60eb90de1/greenlet-3.2.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:67725ae9fea62c95cf1aa230f1b8d4dc38f7cd14f6103d1df8a5a95657eb8e54", size = 1140219, upload-time = "2026-02-20T20:06:30.334Z" }, +] + +[[package]] +name = "greenlet" +version = "3.3.2" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +resolution-markers = [ + "python_full_version >= '3.10'", +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/a3/51/1664f6b78fc6ebbd98019a1fd730e83fa78f2db7058f72b1463d3612b8db/greenlet-3.3.2.tar.gz", hash = "sha256:2eaf067fc6d886931c7962e8c6bede15d2f01965560f3359b27c80bde2d151f2", size = 188267, upload-time = "2026-02-20T20:54:15.531Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/38/3f/9859f655d11901e7b2996c6e3d33e0caa9a1d4572c3bc61ed0faa64b2f4c/greenlet-3.3.2-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:9bc885b89709d901859cf95179ec9f6bb67a3d2bb1f0e88456461bd4b7f8fd0d", size = 277747, upload-time = "2026-02-20T20:16:21.325Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/fb/07/cb284a8b5c6498dbd7cba35d31380bb123d7dceaa7907f606c8ff5993cbf/greenlet-3.3.2-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b568183cf65b94919be4438dc28416b234b678c608cafac8874dfeeb2a9bbe13", size = 579202, upload-time = "2026-02-20T20:47:28.955Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/ed/45/67922992b3a152f726163b19f890a85129a992f39607a2a53155de3448b8/greenlet-3.3.2-cp310-cp310-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:527fec58dc9f90efd594b9b700662ed3fb2493c2122067ac9c740d98080a620e", size = 590620, upload-time = "2026-02-20T20:55:55.581Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/03/5f/6e2a7d80c353587751ef3d44bb947f0565ec008a2e0927821c007e96d3a7/greenlet-3.3.2-cp310-cp310-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:508c7f01f1791fbc8e011bd508f6794cb95397fdb198a46cb6635eb5b78d85a7", size = 602132, upload-time = "2026-02-20T21:02:43.261Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/ad/55/9f1ebb5a825215fadcc0f7d5073f6e79e3007e3282b14b22d6aba7ca6cb8/greenlet-3.3.2-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ad0c8917dd42a819fe77e6bdfcb84e3379c0de956469301d9fd36427a1ca501f", size = 591729, upload-time = "2026-02-20T20:20:58.395Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/24/b4/21f5455773d37f94b866eb3cf5caed88d6cea6dd2c6e1f9c34f463cba3ec/greenlet-3.3.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:97245cc10e5515dbc8c3104b2928f7f02b6813002770cfaffaf9a6e0fc2b94ef", size = 1551946, upload-time = "2026-02-20T20:49:31.102Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/00/68/91f061a926abead128fe1a87f0b453ccf07368666bd59ffa46016627a930/greenlet-3.3.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8c1fdd7d1b309ff0da81d60a9688a8bd044ac4e18b250320a96fc68d31c209ca", size = 1618494, upload-time = "2026-02-20T20:21:06.541Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/ac/78/f93e840cbaef8becaf6adafbaf1319682a6c2d8c1c20224267a5c6c8c891/greenlet-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:5d0e35379f93a6d0222de929a25ab47b5eb35b5ef4721c2b9cbcc4036129ff1f", size = 230092, upload-time = "2026-02-20T20:17:09.379Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f3/47/16400cb42d18d7a6bb46f0626852c1718612e35dcb0dffa16bbaffdf5dd2/greenlet-3.3.2-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:c56692189a7d1c7606cb794be0a8381470d95c57ce5be03fb3d0ef57c7853b86", size = 278890, upload-time = "2026-02-20T20:19:39.263Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/a3/90/42762b77a5b6aa96cd8c0e80612663d39211e8ae8a6cd47c7f1249a66262/greenlet-3.3.2-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1ebd458fa8285960f382841da585e02201b53a5ec2bac6b156fc623b5ce4499f", size = 581120, upload-time = "2026-02-20T20:47:30.161Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/bf/6f/f3d64f4fa0a9c7b5c5b3c810ff1df614540d5aa7d519261b53fba55d4df9/greenlet-3.3.2-cp311-cp311-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a443358b33c4ec7b05b79a7c8b466f5d275025e750298be7340f8fc63dff2a55", size = 594363, upload-time = "2026-02-20T20:55:56.965Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/9c/8b/1430a04657735a3f23116c2e0d5eb10220928846e4537a938a41b350bed6/greenlet-3.3.2-cp311-cp311-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:4375a58e49522698d3e70cc0b801c19433021b5c37686f7ce9c65b0d5c8677d2", size = 605046, upload-time = "2026-02-20T21:02:45.234Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/72/83/3e06a52aca8128bdd4dcd67e932b809e76a96ab8c232a8b025b2850264c5/greenlet-3.3.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8e2cd90d413acbf5e77ae41e5d3c9b3ac1d011a756d7284d7f3f2b806bbd6358", size = 594156, upload-time = "2026-02-20T20:20:59.955Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/70/79/0de5e62b873e08fe3cef7dbe84e5c4bc0e8ed0c7ff131bccb8405cd107c8/greenlet-3.3.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:442b6057453c8cb29b4fb36a2ac689382fc71112273726e2423f7f17dc73bf99", size = 1554649, upload-time = "2026-02-20T20:49:32.293Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/5a/00/32d30dee8389dc36d42170a9c66217757289e2afb0de59a3565260f38373/greenlet-3.3.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:45abe8eb6339518180d5a7fa47fa01945414d7cca5ecb745346fc6a87d2750be", size = 1619472, upload-time = "2026-02-20T20:21:07.966Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f1/3a/efb2cf697fbccdf75b24e2c18025e7dfa54c4f31fab75c51d0fe79942cef/greenlet-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:1e692b2dae4cc7077cbb11b47d258533b48c8fde69a33d0d8a82e2fe8d8531d5", size = 230389, upload-time = "2026-02-20T20:17:18.772Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/e1/a1/65bbc059a43a7e2143ec4fc1f9e3f673e04f9c7b371a494a101422ac4fd5/greenlet-3.3.2-cp311-cp311-win_arm64.whl", hash = "sha256:02b0a8682aecd4d3c6c18edf52bc8e51eacdd75c8eac52a790a210b06aa295fd", size = 229645, upload-time = "2026-02-20T20:18:18.695Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/ea/ab/1608e5a7578e62113506740b88066bf09888322a311cff602105e619bd87/greenlet-3.3.2-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:ac8d61d4343b799d1e526db579833d72f23759c71e07181c2d2944e429eb09cd", size = 280358, upload-time = "2026-02-20T20:17:43.971Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/a5/23/0eae412a4ade4e6623ff7626e38998cb9b11e9ff1ebacaa021e4e108ec15/greenlet-3.3.2-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3ceec72030dae6ac0c8ed7591b96b70410a8be370b6a477b1dbc072856ad02bd", size = 601217, upload-time = "2026-02-20T20:47:31.462Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f8/16/5b1678a9c07098ecb9ab2dd159fafaf12e963293e61ee8d10ecb55273e5e/greenlet-3.3.2-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a2a5be83a45ce6188c045bcc44b0ee037d6a518978de9a5d97438548b953a1ac", size = 611792, upload-time = "2026-02-20T20:55:58.423Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/5c/c5/cc09412a29e43406eba18d61c70baa936e299bc27e074e2be3806ed29098/greenlet-3.3.2-cp312-cp312-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ae9e21c84035c490506c17002f5c8ab25f980205c3e61ddb3a2a2a2e6c411fcb", size = 626250, upload-time = "2026-02-20T21:02:46.596Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/50/1f/5155f55bd71cabd03765a4aac9ac446be129895271f73872c36ebd4b04b6/greenlet-3.3.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:43e99d1749147ac21dde49b99c9abffcbc1e2d55c67501465ef0930d6e78e070", size = 613875, upload-time = "2026-02-20T20:21:01.102Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/fc/dd/845f249c3fcd69e32df80cdab059b4be8b766ef5830a3d0aa9d6cad55beb/greenlet-3.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4c956a19350e2c37f2c48b336a3afb4bff120b36076d9d7fb68cb44e05d95b79", size = 1571467, upload-time = "2026-02-20T20:49:33.495Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/2a/50/2649fe21fcc2b56659a452868e695634722a6655ba245d9f77f5656010bf/greenlet-3.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6c6f8ba97d17a1e7d664151284cb3315fc5f8353e75221ed4324f84eb162b395", size = 1640001, upload-time = "2026-02-20T20:21:09.154Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/9b/40/cc802e067d02af8b60b6771cea7d57e21ef5e6659912814babb42b864713/greenlet-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:34308836d8370bddadb41f5a7ce96879b72e2fdfb4e87729330c6ab52376409f", size = 231081, upload-time = "2026-02-20T20:17:28.121Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/58/2e/fe7f36ff1982d6b10a60d5e0740c759259a7d6d2e1dc41da6d96de32fff6/greenlet-3.3.2-cp312-cp312-win_arm64.whl", hash = "sha256:d3a62fa76a32b462a97198e4c9e99afb9ab375115e74e9a83ce180e7a496f643", size = 230331, upload-time = "2026-02-20T20:17:23.34Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/ac/48/f8b875fa7dea7dd9b33245e37f065af59df6a25af2f9561efa8d822fde51/greenlet-3.3.2-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:aa6ac98bdfd716a749b84d4034486863fd81c3abde9aa3cf8eff9127981a4ae4", size = 279120, upload-time = "2026-02-20T20:19:01.9Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/49/8d/9771d03e7a8b1ee456511961e1b97a6d77ae1dea4a34a5b98eee706689d3/greenlet-3.3.2-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ab0c7e7901a00bc0a7284907273dc165b32e0d109a6713babd04471327ff7986", size = 603238, upload-time = "2026-02-20T20:47:32.873Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/59/0e/4223c2bbb63cd5c97f28ffb2a8aee71bdfb30b323c35d409450f51b91e3e/greenlet-3.3.2-cp313-cp313-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:d248d8c23c67d2291ffd47af766e2a3aa9fa1c6703155c099feb11f526c63a92", size = 614219, upload-time = "2026-02-20T20:55:59.817Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/94/2b/4d012a69759ac9d77210b8bfb128bc621125f5b20fc398bce3940d036b1c/greenlet-3.3.2-cp313-cp313-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ccd21bb86944ca9be6d967cf7691e658e43417782bce90b5d2faeda0ff78a7dd", size = 628268, upload-time = "2026-02-20T21:02:48.024Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/7a/34/259b28ea7a2a0c904b11cd36c79b8cef8019b26ee5dbe24e73b469dea347/greenlet-3.3.2-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b6997d360a4e6a4e936c0f9625b1c20416b8a0ea18a8e19cabbefc712e7397ab", size = 616774, upload-time = "2026-02-20T20:21:02.454Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/0a/03/996c2d1689d486a6e199cb0f1cf9e4aa940c500e01bdf201299d7d61fa69/greenlet-3.3.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:64970c33a50551c7c50491671265d8954046cb6e8e2999aacdd60e439b70418a", size = 1571277, upload-time = "2026-02-20T20:49:34.795Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/d9/c4/2570fc07f34a39f2caf0bf9f24b0a1a0a47bc2e8e465b2c2424821389dfc/greenlet-3.3.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:1a9172f5bf6bd88e6ba5a84e0a68afeac9dc7b6b412b245dd64f52d83c81e55b", size = 1640455, upload-time = "2026-02-20T20:21:10.261Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/91/39/5ef5aa23bc545aa0d31e1b9b55822b32c8da93ba657295840b6b34124009/greenlet-3.3.2-cp313-cp313-win_amd64.whl", hash = "sha256:a7945dd0eab63ded0a48e4dcade82939783c172290a7903ebde9e184333ca124", size = 230961, upload-time = "2026-02-20T20:16:58.461Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/62/6b/a89f8456dcb06becff288f563618e9f20deed8dd29beea14f9a168aef64b/greenlet-3.3.2-cp313-cp313-win_arm64.whl", hash = "sha256:394ead29063ee3515b4e775216cb756b2e3b4a7e55ae8fd884f17fa579e6b327", size = 230221, upload-time = "2026-02-20T20:17:37.152Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/3f/ae/8bffcbd373b57a5992cd077cbe8858fff39110480a9d50697091faea6f39/greenlet-3.3.2-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:8d1658d7291f9859beed69a776c10822a0a799bc4bfe1bd4272bb60e62507dab", size = 279650, upload-time = "2026-02-20T20:18:00.783Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/d1/c0/45f93f348fa49abf32ac8439938726c480bd96b2a3c6f4d949ec0124b69f/greenlet-3.3.2-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:18cb1b7337bca281915b3c5d5ae19f4e76d35e1df80f4ad3c1a7be91fadf1082", size = 650295, upload-time = "2026-02-20T20:47:34.036Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/b3/de/dd7589b3f2b8372069ab3e4763ea5329940fc7ad9dcd3e272a37516d7c9b/greenlet-3.3.2-cp314-cp314-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c2e47408e8ce1c6f1ceea0dffcdf6ebb85cc09e55c7af407c99f1112016e45e9", size = 662163, upload-time = "2026-02-20T20:56:01.295Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/cd/ac/85804f74f1ccea31ba518dcc8ee6f14c79f73fe36fa1beba38930806df09/greenlet-3.3.2-cp314-cp314-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e3cb43ce200f59483eb82949bf1835a99cf43d7571e900d7c8d5c62cdf25d2f9", size = 675371, upload-time = "2026-02-20T21:02:49.664Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/d2/d8/09bfa816572a4d83bccd6750df1926f79158b1c36c5f73786e26dbe4ee38/greenlet-3.3.2-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:63d10328839d1973e5ba35e98cccbca71b232b14051fd957b6f8b6e8e80d0506", size = 664160, upload-time = "2026-02-20T20:21:04.015Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/48/cf/56832f0c8255d27f6c35d41b5ec91168d74ec721d85f01a12131eec6b93c/greenlet-3.3.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:8e4ab3cfb02993c8cc248ea73d7dae6cec0253e9afa311c9b37e603ca9fad2ce", size = 1619181, upload-time = "2026-02-20T20:49:36.052Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/0a/23/b90b60a4aabb4cec0796e55f25ffbfb579a907c3898cd2905c8918acaa16/greenlet-3.3.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:94ad81f0fd3c0c0681a018a976e5c2bd2ca2d9d94895f23e7bb1af4e8af4e2d5", size = 1687713, upload-time = "2026-02-20T20:21:11.684Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f3/ca/2101ca3d9223a1dc125140dbc063644dca76df6ff356531eb27bc267b446/greenlet-3.3.2-cp314-cp314-win_amd64.whl", hash = "sha256:8c4dd0f3997cf2512f7601563cc90dfb8957c0cff1e3a1b23991d4ea1776c492", size = 232034, upload-time = "2026-02-20T20:20:08.186Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f6/4a/ecf894e962a59dea60f04877eea0fd5724618da89f1867b28ee8b91e811f/greenlet-3.3.2-cp314-cp314-win_arm64.whl", hash = "sha256:cd6f9e2bbd46321ba3bbb4c8a15794d32960e3b0ae2cc4d49a1a53d314805d71", size = 231437, upload-time = "2026-02-20T20:18:59.722Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/98/6d/8f2ef704e614bcf58ed43cfb8d87afa1c285e98194ab2cfad351bf04f81e/greenlet-3.3.2-cp314-cp314t-macosx_11_0_universal2.whl", hash = "sha256:e26e72bec7ab387ac80caa7496e0f908ff954f31065b0ffc1f8ecb1338b11b54", size = 286617, upload-time = "2026-02-20T20:19:29.856Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/5e/0d/93894161d307c6ea237a43988f27eba0947b360b99ac5239ad3fe09f0b47/greenlet-3.3.2-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8b466dff7a4ffda6ca975979bab80bdadde979e29fc947ac3be4451428d8b0e4", size = 655189, upload-time = "2026-02-20T20:47:35.742Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f5/2c/d2d506ebd8abcb57386ec4f7ba20f4030cbe56eae541bc6fd6ef399c0b41/greenlet-3.3.2-cp314-cp314t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b8bddc5b73c9720bea487b3bffdb1840fe4e3656fba3bd40aa1489e9f37877ff", size = 658225, upload-time = "2026-02-20T20:56:02.527Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/d1/67/8197b7e7e602150938049d8e7f30de1660cfb87e4c8ee349b42b67bdb2e1/greenlet-3.3.2-cp314-cp314t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:59b3e2c40f6706b05a9cd299c836c6aa2378cabe25d021acd80f13abf81181cf", size = 666581, upload-time = "2026-02-20T21:02:51.526Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/8e/30/3a09155fbf728673a1dea713572d2d31159f824a37c22da82127056c44e4/greenlet-3.3.2-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b26b0f4428b871a751968285a1ac9648944cea09807177ac639b030bddebcea4", size = 657907, upload-time = "2026-02-20T20:21:05.259Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f3/fd/d05a4b7acd0154ed758797f0a43b4c0962a843bedfe980115e842c5b2d08/greenlet-3.3.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:1fb39a11ee2e4d94be9a76671482be9398560955c9e568550de0224e41104727", size = 1618857, upload-time = "2026-02-20T20:49:37.309Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/6f/e1/50ee92a5db521de8f35075b5eff060dd43d39ebd46c2181a2042f7070385/greenlet-3.3.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:20154044d9085151bc309e7689d6f7ba10027f8f5a8c0676ad398b951913d89e", size = 1680010, upload-time = "2026-02-20T20:21:13.427Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/29/4b/45d90626aef8e65336bed690106d1382f7a43665e2249017e9527df8823b/greenlet-3.3.2-cp314-cp314t-win_amd64.whl", hash = "sha256:c04c5e06ec3e022cbfe2cd4a846e1d4e50087444f875ff6d2c2ad8445495cf1a", size = 237086, upload-time = "2026-02-20T20:20:45.786Z" }, +] + +[[package]] +name = "h11" +version = "0.16.0" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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 = "idna" +version = "3.11" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/6f/6d/0703ccc57f3a7233505399edb88de3cbd678da106337b9fcde432b65ed60/idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902", size = 194582, upload-time = "2025-10-12T14:55:20.501Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008, upload-time = "2025-10-12T14:55:18.883Z" }, +] + +[[package]] +name = "importlib-metadata" +version = "8.5.0" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +resolution-markers = [ + "python_full_version < '3.9'", +] +dependencies = [ + { name = "zipp", version = "3.20.2", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version < '3.9'" }, +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/cd/12/33e59336dca5be0c398a7482335911a33aa0e20776128f038019f1a95f1b/importlib_metadata-8.5.0.tar.gz", hash = "sha256:71522656f0abace1d072b9e5481a48f07c138e00f079c38c8f883823f9c26bd7", size = 55304, upload-time = "2024-09-11T14:56:08.937Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/a0/d9/a1e041c5e7caa9a05c925f4bdbdfb7f006d1f74996af53467bc394c97be7/importlib_metadata-8.5.0-py3-none-any.whl", hash = "sha256:45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b", size = 26514, upload-time = "2024-09-11T14:56:07.019Z" }, +] + +[[package]] +name = "importlib-metadata" +version = "8.7.1" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +resolution-markers = [ + "python_full_version == '3.9.*'", +] +dependencies = [ + { name = "zipp", version = "3.23.0", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version == '3.9.*'" }, +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/f3/49/3b30cad09e7771a4982d9975a8cbf64f00d4a1ececb53297f1d9a7be1b10/importlib_metadata-8.7.1.tar.gz", hash = "sha256:49fef1ae6440c182052f407c8d34a68f72efc36db9ca90dc0113398f2fdde8bb", size = 57107, upload-time = "2025-12-21T10:00:19.278Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/fa/5e/f8e9a1d23b9c20a551a8a02ea3637b4642e22c2626e3a13a9a29cdea99eb/importlib_metadata-8.7.1-py3-none-any.whl", hash = "sha256:5a1f80bf1daa489495071efbb095d75a634cf28a8bc299581244063b53176151", size = 27865, upload-time = "2025-12-21T10:00:18.329Z" }, +] + +[[package]] +name = "macholib" +version = "1.16.4" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +dependencies = [ + { name = "altgraph" }, +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/10/2f/97589876ea967487978071c9042518d28b958d87b17dceb7cdc1d881f963/macholib-1.16.4.tar.gz", hash = "sha256:f408c93ab2e995cd2c46e34fe328b130404be143469e41bc366c807448979362", size = 59427, upload-time = "2025-11-22T08:28:38.373Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/c7/d1/a9f36f8ecdf0fb7c9b1e78c8d7af12b8c8754e74851ac7b94a8305540fc7/macholib-1.16.4-py2.py3-none-any.whl", hash = "sha256:da1a3fa8266e30f0ce7e97c6a54eefaae8edd1e5f86f3eb8b95457cae90265ea", size = 38117, upload-time = "2025-11-22T08:28:36.939Z" }, +] + +[[package]] +name = "module-bank" +version = "0.2.1" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +dependencies = [ + { name = "cryptography" }, +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/d7/a0/50e0d4823c9f4252e8ef16f84b6e6ec6364ec78e4d1efb86d386df9d3ebe/module_bank-0.2.1.tar.gz", hash = "sha256:5763f44e0a4b8dc800a07863531b1f3bcd81bb7c23140c5a0e17e00234d492ff", size = 68562, upload-time = "2026-03-03T06:47:54.24Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/81/f5/620332e48df7a3796e632b455c5f95e89ed7c19d86bb00a99567884d6efe/module_bank-0.2.1-py3-none-any.whl", hash = "sha256:8e15904d4968de3329a749f275cc4c54d4c5e3e403835883caa132870211f201", size = 12205, upload-time = "2026-03-03T06:47:51.588Z" }, +] + +[[package]] +name = "packaging" +version = "26.0" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/65/ee/299d360cdc32edc7d2cf530f3accf79c4fca01e96ffc950d8a52213bd8e4/packaging-26.0.tar.gz", hash = "sha256:00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4", size = 143416, upload-time = "2026-01-21T20:50:39.064Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl", hash = "sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529", size = 74366, upload-time = "2026-01-21T20:50:37.788Z" }, +] + +[[package]] +name = "passlib" +version = "1.7.4" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/b6/06/9da9ee59a67fae7761aab3ccc84fa4f3f33f125b370f1ccdb915bf967c11/passlib-1.7.4.tar.gz", hash = "sha256:defd50f72b65c5402ab2c573830a6978e5f202ad0d984793c8dde2c4152ebe04", size = 689844, upload-time = "2020-10-08T19:00:52.121Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/3b/a4/ab6b7589382ca3df236e03faa71deac88cae040af60c071a78d254a62172/passlib-1.7.4-py2.py3-none-any.whl", hash = "sha256:aa6bca462b8d8bda89c70b382f0c298a20b5560af6cbfa2dce410c0a2fb669f1", size = 525554, upload-time = "2020-10-08T19:00:49.856Z" }, +] + +[package.optional-dependencies] +bcrypt = [ + { name = "bcrypt" }, +] + +[[package]] +name = "pefile" +version = "2024.8.26" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/03/4f/2750f7f6f025a1507cd3b7218691671eecfd0bbebebe8b39aa0fe1d360b8/pefile-2024.8.26.tar.gz", hash = "sha256:3ff6c5d8b43e8c37bb6e6dd5085658d658a7a0bdcd20b6a07b1fcfc1c4e9d632", size = 76008, upload-time = "2024-08-26T20:58:38.155Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/54/16/12b82f791c7f50ddec566873d5bdd245baa1491bac11d15ffb98aecc8f8b/pefile-2024.8.26-py3-none-any.whl", hash = "sha256:76f8b485dcd3b1bb8166f1128d395fa3d87af26360c2358fb75b80019b957c6f", size = 74766, upload-time = "2024-08-26T21:01:02.632Z" }, +] + +[[package]] +name = "pyarmor" +version = "9.2.3" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +dependencies = [ + { name = "pyarmor-cli-core" }, +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/ca/69/898019565e06dde56f4334639ffd367434d9bc440f34128cf2ca622482f4/pyarmor-9.2.3.tar.gz", hash = "sha256:79147cff22d5f555c1dad9f73eae1fa1f7cc30b5f374762350a2b280efad7f3e", size = 3012226, upload-time = "2025-12-16T09:50:00.202Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f9/46/36b6bb6ccc001ba3530fd0e792aaf87f38413e2885a974a040a65060c2d8/pyarmor-9.2.3-py3-none-any.whl", hash = "sha256:2ad39b019c957ef247f91f0e690ea0ba5c9755f86262b22cc9fdd65a73567b37", size = 3071053, upload-time = "2025-12-16T09:50:05.768Z" }, +] + +[[package]] +name = "pyarmor-cli-core" +version = "8.1.0" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/e1/eb/7127e8bb109dc33bad7a9482fb75ff4c64e91574279e4b4a2eda05bbc8dd/pyarmor_cli_core-8.1.0.tar.gz", hash = "sha256:0a1abb280947b0c67897a1a459f23b2d674ca7b9e3dc2078bd76b53a10bc6955", size = 4496, upload-time = "2025-10-31T10:33:06.097Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/67/bc/6948451b2c46c6f39d58f9496429f941e7d4224721141b2b8db23da12762/pyarmor_cli_core-8.1.0-cp310-none-macosx_10_14_x86_64.whl", hash = "sha256:b8df4634ed70b41018a36bb6a8a2bdfeeacd4dfec37c16e7861c9d6ac16e43dd", size = 510228, upload-time = "2025-10-31T10:33:14.711Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f9/af/0cef585e8f4fd91dc34ddbbcd1a2623e91c52da584a6ee0865312103d870/pyarmor_cli_core-8.1.0-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:c89f171e25f7cff3350f2c0a0bbd48ece647e5ec6dca22b7416bbd925bb5b7f3", size = 402117, upload-time = "2025-10-31T10:33:22.887Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/49/21/8e06722e43fb86cc07466f7155d8cbccb4dfe381b716e85ffaf435ea9259/pyarmor_cli_core-8.1.0-cp310-none-manylinux1_i686.whl", hash = "sha256:9067657df18557e7860abf58804e67d648db67ec052023a5bbcbac9259751f18", size = 481154, upload-time = "2025-10-31T10:33:28.04Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/d3/47/cdfbb628e37ebe40ffeed6be39d6ca02f6f606616e936f3a7a9ae2826ff4/pyarmor_cli_core-8.1.0-cp310-none-manylinux1_x86_64.whl", hash = "sha256:a6edd9d223e7caa233138c363a431407eb0f7fbb013d262a6413b620b405b69a", size = 452133, upload-time = "2025-10-31T10:33:32.53Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/a6/d5/8283102b11091ae41b5dbb24999b5972e023e528aa713ec40a5d978d5edd/pyarmor_cli_core-8.1.0-cp310-none-manylinux2014_aarch64.whl", hash = "sha256:3a50bd9cb4a35126dba2d0ad166211a5758c234a0610ddeb1e2cba62cbf11f45", size = 598650, upload-time = "2025-10-31T10:33:37.481Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/fc/20/6c9a4d45bc865c2831447069517e7edf94dce0630a7cd01766e0dd19e214/pyarmor_cli_core-8.1.0-cp310-none-manylinux2014_armv7l.whl", hash = "sha256:384a15c08b3914785d528b99bab87c14c342f90546579a5e184eaef2554ea348", size = 994622, upload-time = "2025-10-31T10:33:42.693Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/06/a1/fbef86c3ece13421095cf5c358f8283be1ec42c38edd8a296c7b93f827e4/pyarmor_cli_core-8.1.0-cp310-none-musllinux_1_1_aarch64.whl", hash = "sha256:28d211fb03c3b0c5d139271a6d37f0e367b5df887f42f9150a836394d54e6494", size = 643613, upload-time = "2025-10-31T10:33:47.882Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/c4/2a/3e1d16443d92933317c40ecf428a5338176478d9184609a2b8144b0b72d8/pyarmor_cli_core-8.1.0-cp310-none-musllinux_1_1_x86_64.whl", hash = "sha256:0b0915285656f65803e31973b09057595225e6169c0986cc62ccdae6244abf08", size = 439391, upload-time = "2025-10-31T10:33:52.497Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/5b/98/6595e47c8195589f0e10b9feb2fb1eafc057e65568fbce870f6d01e98b45/pyarmor_cli_core-8.1.0-cp310-none-win32.whl", hash = "sha256:d4498960d9fab77df9b692c4a346fa512737fde78bf518a4c17eb39b67e818b7", size = 454426, upload-time = "2025-10-31T10:33:57.326Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/69/e2/26963f0771c3a7ddc5ebeb4b5909ee25c6a7dcefcceb35203986c74717f7/pyarmor_cli_core-8.1.0-cp310-none-win_amd64.whl", hash = "sha256:c13a6e51cb8e0ceb73e4a4d3f27b3025df591839aef2447bd23cd0534cb089dd", size = 414136, upload-time = "2025-10-31T10:34:02.039Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/94/99/ebbb204dad8310e3d6245ace0f015ae47ac85086caa30fcdffcbeaba0c7c/pyarmor_cli_core-8.1.0-cp311-none-macosx_10_14_x86_64.whl", hash = "sha256:2698b7f3ca7c23bdce5a255d8ffb2d9215839eea0fe0bde8a70d785749a0f9b8", size = 511440, upload-time = "2025-10-31T10:34:06.689Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/84/ac/54598ffae11375c59b987a22ff60b3ce2c9601d3b074012361b23f203d0b/pyarmor_cli_core-8.1.0-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:eeb990b1930c328c5aafa47cceae54076b558ab9b50e7c5694b09ea91775653b", size = 403386, upload-time = "2025-10-31T10:34:11.529Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/2c/5c/701a95fce1895f34fd338a0732fcfd4888d59e0457c3841b180973ca0478/pyarmor_cli_core-8.1.0-cp311-none-manylinux1_i686.whl", hash = "sha256:5385021c5c270bffc4bd347625d305dd182ab2c21efde4d138868e899b5a20ab", size = 483666, upload-time = "2025-10-31T10:34:18.688Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/0d/ec/c3a57dfe07499b07d19c43c48e31791d90f012d46114a304b9177567a643/pyarmor_cli_core-8.1.0-cp311-none-manylinux1_x86_64.whl", hash = "sha256:97dcbf08dde2c6653b663ef75d9833c3c75de2701b8a8676927fe494972523b1", size = 451458, upload-time = "2025-10-31T10:34:23.413Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/3b/1a/2f66ba351dbf5e6acea90c2c16b625fc475ecc381e516742ff6d40eca20d/pyarmor_cli_core-8.1.0-cp311-none-manylinux2014_aarch64.whl", hash = "sha256:00387ad6f79e39efbbe0625819cf354fa2e0c62d2ed8d3d0287bf9b063efaf40", size = 598801, upload-time = "2025-10-31T10:34:28.74Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/8d/01/2d7c441231ecb0a387b85d1a425f8cb956cc06e9daae997b189ce226946b/pyarmor_cli_core-8.1.0-cp311-none-manylinux2014_armv7l.whl", hash = "sha256:571aaac32dd9aaa50d1d37a8fcb5036beed43afebf69f50e4c3d4de067719f13", size = 995193, upload-time = "2025-10-31T10:34:34.023Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/9a/4b/95b19eb1a7daec5b8b28541524d47fd0f8abb6188a456763484098a8b27d/pyarmor_cli_core-8.1.0-cp311-none-musllinux_1_1_aarch64.whl", hash = "sha256:7dac676711d16ed34364b63d8e9fb225ee032064be57d5f4cb7c0a6b7b6405c0", size = 644237, upload-time = "2025-10-31T10:34:40.018Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/c2/0a/5e257e55292c79182efa3f04731e00c2d785a64453a8fe0fc69f47fd13ae/pyarmor_cli_core-8.1.0-cp311-none-musllinux_1_1_x86_64.whl", hash = "sha256:b46e59af5f21565440c3c17f468d5f2c7cffb9e5a744d5c17dfaf6971294c27b", size = 441034, upload-time = "2025-10-31T10:34:44.941Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/b7/b4/6bb442f3ca58f19353690e9b4182c765e98498088452c71b768bf5cfc314/pyarmor_cli_core-8.1.0-cp311-none-win32.whl", hash = "sha256:aba8e66095c752091c9717a484283d4ec7680126d09c00c1ee7c3f9e1ba1de41", size = 454739, upload-time = "2025-10-31T10:34:49.111Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/40/8a/65e5c1dae6e4c1143a48a9fcb8e5b2b7749a7f34567e3eb307accb58658b/pyarmor_cli_core-8.1.0-cp311-none-win_amd64.whl", hash = "sha256:3a86b845b5590f3f1960a13a216723d3940495dbed4b3f943165c286722422c6", size = 414498, upload-time = "2025-10-31T10:34:57.293Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/2b/e1/2d759e01b717009c802bf5d92a1ed279152d9b59a0cfdcb5aafb934c9939/pyarmor_cli_core-8.1.0-cp312-none-macosx_10_14_x86_64.whl", hash = "sha256:b4a4e93476476c9872f4d6e9f8fadb7e3c7a96ddcef2ae58ecff1ef85c628c76", size = 515270, upload-time = "2025-10-31T10:35:01.924Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/d7/f5/eef86f856912618cd9953674b570f5ff85187314bd0de273ec49f58c75d7/pyarmor_cli_core-8.1.0-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:c7ee1998d5682a493fe28cb792654299010f5dd124c5c1f126bc87fddfeaa453", size = 407374, upload-time = "2025-10-31T10:35:06.35Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/c7/a6/ca55d043bbe31362ea7a6cce3ed80bb3a29b2ff87fab60bb73c73771c8f4/pyarmor_cli_core-8.1.0-cp312-none-manylinux1_i686.whl", hash = "sha256:da18fa871a3e5cc97646061d5dac38494c2b32138b53caa0b84d6d9ed874d12f", size = 488930, upload-time = "2025-10-31T10:35:11.081Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/57/52/c3d07514c3b0601697a28bdddd7af98f00f76baccfaffc71c1890507565f/pyarmor_cli_core-8.1.0-cp312-none-manylinux1_x86_64.whl", hash = "sha256:d170a0ffe44dc662efbc2561753d12b1985f6fe26039029da6d214aca5ae9e79", size = 457284, upload-time = "2025-10-31T10:35:15.458Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/39/57/9b27b3d9bb28b049fa26f008b855dc6c070c3d3065d8efc9479a1bf55dc4/pyarmor_cli_core-8.1.0-cp312-none-manylinux2014_aarch64.whl", hash = "sha256:479e24ca6444bcc3849034f37b723146063290866cabe20186723db41c9b72e7", size = 603915, upload-time = "2025-10-31T10:35:19.843Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/8c/ad/559674fdbe51bca5750e17b05033dbff35cb8afeee1235afe60feaa9d352/pyarmor_cli_core-8.1.0-cp312-none-manylinux2014_armv7l.whl", hash = "sha256:8c0c1e3799575bf3bbdc069237b02d6b6cdca030382002a4ba0c2dd4978c61c5", size = 1000731, upload-time = "2025-10-31T10:35:25.264Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/10/a0/b0aa0bc2892b5cba505098bb27a69023b5c897afe8fcdff89b252679435d/pyarmor_cli_core-8.1.0-cp312-none-musllinux_1_1_aarch64.whl", hash = "sha256:b965929843cb4d44407ac4ace7200548d3c01db75d2b8d271d99d5e7a402257e", size = 649113, upload-time = "2025-10-31T10:35:30.432Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/b2/11/03291b5a35c8516b12808dadd5eb21ed2c9de62198d09b4303f83e5c2982/pyarmor_cli_core-8.1.0-cp312-none-musllinux_1_1_x86_64.whl", hash = "sha256:53b465ce8091a3ebd73ea7d374c6b4c9bc02d408f6bf742915e365145b02a227", size = 445998, upload-time = "2025-10-31T10:35:35.425Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/cb/e6/eec375e65bc4e5e6238d4c1df946e7fa237c85f251b41f03601eb3a761ab/pyarmor_cli_core-8.1.0-cp312-none-win32.whl", hash = "sha256:926f04af648e6f763d7aed049ebcb2713a36ffc9d059ba6a1e4d094a859d7f7c", size = 459742, upload-time = "2025-10-31T10:35:40.226Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/cc/40/b3f815264ca5aab4435fc44e4979b433824a9e8d3b912949c71c6300a130/pyarmor_cli_core-8.1.0-cp312-none-win_amd64.whl", hash = "sha256:846ae067a0fb2b94262fb437f863054f1661e6452bd5e77894cf8d40ca909a82", size = 420175, upload-time = "2025-10-31T10:35:44.941Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/4b/a0/d398a9472eba1e2360dcd2dddecfdfc367e0a2442ead2ee01357caf44710/pyarmor_cli_core-8.1.0-cp313-cp313-win32.whl", hash = "sha256:b6b0f70ced3ff077cb7232c2bf47b83d6f140bd658a2fd58ad7361d07e9f5912", size = 460518, upload-time = "2025-12-16T09:41:25.646Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/5a/6c/224668639ee3cc0756d58d470feb653d2107c504f8e96e27a1a7958beb26/pyarmor_cli_core-8.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:2ba30e1da2758eedba89e8116dd8c6f1a6e17dd11748874ecb25b7827a4bf709", size = 421141, upload-time = "2025-12-16T09:41:30.938Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/53/09/173d69791f300e816cb1e2094a42bbf8c1fbe19ea704e859a5ecbe2826ba/pyarmor_cli_core-8.1.0-cp313-none-macosx_10_14_x86_64.whl", hash = "sha256:b7659a53be26da68bd6e553263113713ccf7523c7bf374e29c269aacfe64ff33", size = 517216, upload-time = "2025-10-31T10:35:55.086Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/62/5f/b7d5347cf71dee7643e748ff79df78b8ad517684097b3e58ea72afbafa18/pyarmor_cli_core-8.1.0-cp313-none-macosx_11_0_arm64.whl", hash = "sha256:e89201cc59c256518df1141fe24143f8537b3005dcedeefb5b0fb7f163a7c3fb", size = 409526, upload-time = "2025-10-31T10:35:59.593Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/52/80/834b40453eb93194f309b07083407e445a23fb041bf88e56f876e36b0afb/pyarmor_cli_core-8.1.0-cp313-none-manylinux1_i686.whl", hash = "sha256:ec7b666f653e02ca479f502d9c5d8ebe79d481fb692d97ce507fcea3b4cff587", size = 489382, upload-time = "2025-10-31T10:36:04.335Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f6/17/d250e62cc9fd007db4dc7e7f0cc0f5c792ba9d7bfd8dddf935a258093df3/pyarmor_cli_core-8.1.0-cp313-none-manylinux1_x86_64.whl", hash = "sha256:432e0f7f1f9c54850a459f61e13621ab5accd6667bc135f4e8337502e51bebc4", size = 457730, upload-time = "2025-10-31T10:36:08.809Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/cc/53/db66c75fd3aa2698db98eba1a02c495d644ea9b4d76297bdb12412fd6047/pyarmor_cli_core-8.1.0-cp313-none-manylinux2014_aarch64.whl", hash = "sha256:e3361081b7dfb3848080b3f4a669c7a26426fb8065665f50b0fa3a83b51734b4", size = 604260, upload-time = "2025-10-31T10:36:13.734Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/fd/5c/d85b5535a4d28c19eb75018d35fa5325d2fe20f6819ae8394f94f8807751/pyarmor_cli_core-8.1.0-cp313-none-manylinux2014_armv7l.whl", hash = "sha256:1c28a8f2643dfec58c6d257c7efe7e3eac8352e2dbf1b88cc325e36eb8e9cb19", size = 1001051, upload-time = "2025-10-31T10:36:19.228Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/ed/9f/0ae2e6d4b8de772d40d7457cd423cb2d1cb4f5751c0d3629bbf59c655978/pyarmor_cli_core-8.1.0-cp313-none-musllinux_1_1_aarch64.whl", hash = "sha256:c6687d5ab5e3ca8d127899dfc2553cd2591dbeb4027c68726d87ea243f8b74ba", size = 650791, upload-time = "2025-10-31T10:36:24.086Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/da/c2/56569b2c9d2694ac35987e3e04d4a61b76a6713a5090ed1b8c19bd30529a/pyarmor_cli_core-8.1.0-cp313-none-musllinux_1_1_x86_64.whl", hash = "sha256:a5648d029a03966cebcc5e8b232b29f00bd1e49e7c1e041cc17c1d99ee785134", size = 446830, upload-time = "2025-10-31T10:36:29.294Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/59/41/4221eeabc1e2d59a928cf1c245eae1af6833d47ff7c6540556d8013fb42d/pyarmor_cli_core-8.1.0-cp313-none-win32.whl", hash = "sha256:8697e48a3175806f18aa35c00a75259cfbec14c348efc8fcfdb55d6cb68cae8d", size = 460387, upload-time = "2025-10-31T10:36:34.185Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/d5/bc/deefd48c9c2fb153bc8512a2eb387cc8aac93cf4504ddcd300183864865d/pyarmor_cli_core-8.1.0-cp313-none-win_amd64.whl", hash = "sha256:0dd2762fd6f2fb4e95c95339c2d20564af487c6563f20f2e424c3eb0919b3414", size = 421052, upload-time = "2025-10-31T10:36:38.79Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/4e/e2/c5ea4afda666a71386c3e2fcae8042f236c63d205ab50df7fa2e9f9a1308/pyarmor_cli_core-8.1.0-cp314-none-macosx_10_14_x86_64.whl", hash = "sha256:a454abc5ea9467ef08185fd06aaa243263022d56a0d24d0cbcc1a5b6106c2260", size = 522546, upload-time = "2025-10-31T10:36:43.612Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/44/0a/4fa22cae7712301c6ef991e1da61bacb7ec0ce10f301e58abbdf16307899/pyarmor_cli_core-8.1.0-cp314-none-macosx_11_0_arm64.whl", hash = "sha256:66e34d23815aa6d96a1180a44af8ece9e0d50f543406798c6cd3ca3e0685cad8", size = 414096, upload-time = "2025-10-31T10:36:48.021Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/b3/a5/f4d907c0dac852b6eccfde02077a920b50099d23c6d41c96a9a15e25b34d/pyarmor_cli_core-8.1.0-cp314-none-manylinux1_i686.whl", hash = "sha256:adf95f0b3a9e5f77f008543d77fb1c93b228e42918b1bbb0883d7238dfd7c36b", size = 494905, upload-time = "2025-10-31T10:36:51.893Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/5b/e4/047026384217a2b5475762f02a2b49b725acef6fb91fe509215a91fa2acd/pyarmor_cli_core-8.1.0-cp314-none-manylinux1_x86_64.whl", hash = "sha256:964167cecdc897c53b154ecac88ff3ff376bec5760ec7229022de434f0bc4fed", size = 461758, upload-time = "2025-10-31T10:37:02.459Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/4b/ab/181608b02bb020ad48e51fa0b603bf105526947b1813cef5fd066892b3db/pyarmor_cli_core-8.1.0-cp314-none-manylinux2014_aarch64.whl", hash = "sha256:309ffc600e588abbeba7a6cf07f5fef2c8c978c389c5ab1c4cd3144fa9087715", size = 609122, upload-time = "2025-10-31T10:37:07.416Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/e3/3a/f50d54c13363f533fa421f4203a5884e977561959e3d6c4c874c36d067cf/pyarmor_cli_core-8.1.0-cp314-none-manylinux2014_armv7l.whl", hash = "sha256:6ef2aa2aea8e0c7ded413722d9a4ff460b5df021411b8f815f2cdff45f75e76f", size = 1004684, upload-time = "2025-10-31T10:37:12.705Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/71/f3/f4ee432243945458a3e61a01cecd9c0cfd6d70b003cdb1ec1a2e2b156fde/pyarmor_cli_core-8.1.0-cp314-none-musllinux_1_1_aarch64.whl", hash = "sha256:15616ba1c3e53079e6f57948ca0f8ed15996e68e4efc662523988497041071ee", size = 654860, upload-time = "2025-10-31T10:37:17.755Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/6d/52/8867eb80f25d165c305914f9feed160afdcccb353a2e56da4bf9bca57b66/pyarmor_cli_core-8.1.0-cp314-none-musllinux_1_1_x86_64.whl", hash = "sha256:6ab953f303b72c9e3c76a9d5171bbf8b13a6f1fd1976fd3864c9276ac9be19d9", size = 450601, upload-time = "2025-10-31T10:37:22.943Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/93/b0/52a524838c206f8c09de2e9b7e7e5b1c5f02e1e55233f34146e0539576e0/pyarmor_cli_core-8.1.0-cp314-none-win32.whl", hash = "sha256:3ee715136f4d47458def84291246a3ded06e4590a277c31795eff9454d48eaf8", size = 464965, upload-time = "2025-10-31T10:37:27.95Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/60/d2/7ac492a842564143682e460fa1fe7cbcba82a7cca984fc0060ed54542452/pyarmor_cli_core-8.1.0-cp314-none-win_amd64.whl", hash = "sha256:a208e3789bc043df574dedc4554c47ebf71bf810f5c9b897583dcd0408611156", size = 424178, upload-time = "2025-10-31T10:37:33.555Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/67/8c/0ff85ab1e65058c38ef593664a60900bb33517e0b26078bfec57f6eb45dd/pyarmor_cli_core-8.1.0-cp315-none-macosx_10_14_x86_64.whl", hash = "sha256:a967bdb7719a826f99eea4dfbe2230bfa03898b572f4a81829558c8c19b8e92e", size = 522601, upload-time = "2025-10-31T10:37:38.577Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/10/08/13ca2d483afc88718a15a909844256ea3006aef19b6036dd04254716e10b/pyarmor_cli_core-8.1.0-cp315-none-macosx_11_0_arm64.whl", hash = "sha256:edf2a04e1f3b694cba63d92dfc87987c40c0e8dedca418611767eb403c12086a", size = 414128, upload-time = "2025-10-31T10:37:43.405Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/a9/fb/d07a0388d34dd0025c7479f386b1102a205e6e56a242cd236ce3e04f9943/pyarmor_cli_core-8.1.0-cp315-none-manylinux1_i686.whl", hash = "sha256:fe098c4e50ee84acb0508a0f795164a2108e476ad8f0b8dfa014975cc6a9f2c7", size = 494810, upload-time = "2025-10-31T10:37:48.639Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/70/e7/94beb43fb7877897b1a3cb621ef9850b2db5c085bde84e4efe7b34169b0b/pyarmor_cli_core-8.1.0-cp315-none-manylinux1_x86_64.whl", hash = "sha256:11d31836182cc94a5bd27957d39cbb7f950480fea5cf37dafa931dfd470ac9f1", size = 461602, upload-time = "2025-10-31T10:37:53.167Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/7b/f3/1ea2b36c3e9bc1e2c384cddcddce5a8df18c3a8f16a0f3bab586045e7e98/pyarmor_cli_core-8.1.0-cp315-none-manylinux2014_aarch64.whl", hash = "sha256:e17b9f2f916996f8aa7292b8417c3d7460b37a3926ba32aa25f7bb47d6ba669b", size = 609250, upload-time = "2025-10-31T10:37:57.671Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/6c/f2/9a165daba1a63fbe30e2f3467f11ce33c5b8cc0d6e6c9201be560cbc46f8/pyarmor_cli_core-8.1.0-cp315-none-manylinux2014_armv7l.whl", hash = "sha256:02aa64b212ffee806c1e8a5f25546a1eaa5c246ae4a85ed2668b99b267006b48", size = 1004582, upload-time = "2025-10-31T10:38:03.709Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/23/55/5eb3df1b829c813b74e86dc8039a2a97716bf3b5c24ef83657bbc8cdeef6/pyarmor_cli_core-8.1.0-cp315-none-musllinux_1_1_aarch64.whl", hash = "sha256:b354169c214d90a1fa13e71bc872fc14c09b7dbd0529dd7669ff4aa0117ecf64", size = 654853, upload-time = "2025-10-31T10:38:10.983Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/22/ba/7f1ab3529e7e73fc1284190263624fddf9a5e2b327f6efc67e3ef3a4668c/pyarmor_cli_core-8.1.0-cp315-none-musllinux_1_1_x86_64.whl", hash = "sha256:75d79568b684c678111324832cddc9fa841d3efdf05a95688a3658529af2d959", size = 450556, upload-time = "2025-10-31T10:38:16.083Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/1f/0a/43c7c4165d476f02889f29267578ceb31c0f642f7ef29f0ae5e06e63c732/pyarmor_cli_core-8.1.0-cp315-none-win32.whl", hash = "sha256:ef87f7933a0aa115ae3a57ea4379a9312595d931f5c83007b4065c6cf1e14e3d", size = 464946, upload-time = "2025-10-31T10:38:27.479Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/0c/14/2b4b5a5ae469c74b687ef3c7a6d8faa62185efb204b38475d3911b53fbe8/pyarmor_cli_core-8.1.0-cp315-none-win_amd64.whl", hash = "sha256:e90a7c18d42b08535bf25142b73bbb32bdfd57c9954767dc08d65c00b50b79bb", size = 424034, upload-time = "2025-10-31T10:38:32.017Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/92/13/dea4f63f24efd91d0ae44a5baae4bd9c28e526d468a1bb1efc24c6f6a859/pyarmor_cli_core-8.1.0-cp38-none-macosx_10_14_x86_64.whl", hash = "sha256:85fe64cb4e823c62e50c5a3420b879f3ec2cb36f6fd18690112689882230e10b", size = 510738, upload-time = "2025-10-31T10:39:22.636Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/5d/81/a08dbe5a5aae628d58be9eae92908218e6ef8c5bde8e90b3158588d313c4/pyarmor_cli_core-8.1.0-cp38-none-manylinux1_i686.whl", hash = "sha256:097c4465cfb38d803b26a3a6db3270579afbf69744b0efdd93c02033e9a2de55", size = 482870, upload-time = "2025-10-31T10:39:27.177Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/80/38/ae25c54c41b5051eb779e8ef07c7623847a12a7bd46215a91d5fa7bf27bd/pyarmor_cli_core-8.1.0-cp38-none-manylinux1_x86_64.whl", hash = "sha256:0e49691da5691b88459bf4ad9f8f7a21d80e513c41493561214c574f9be752cb", size = 460419, upload-time = "2025-10-31T10:39:31.771Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/9b/d1/c95f2dd2a616f02c85e5eaf390377139aec491ed1f942d091fdc3cff9dca/pyarmor_cli_core-8.1.0-cp38-none-manylinux2014_aarch64.whl", hash = "sha256:308067ffd63741aa6e2b1eefbf6c57ef77ed92498d72aa9d0b114371e34a6008", size = 597068, upload-time = "2025-10-31T10:39:38.344Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/2a/7f/461c1e0b3ac23f433bb8a6384a528a54695affc47f7529153bf5e130f272/pyarmor_cli_core-8.1.0-cp38-none-manylinux2014_armv7l.whl", hash = "sha256:967ea42c8e0554ba9def77734fcf8c613614b48fa6da8df2a0d8a4c08fe0bdca", size = 992850, upload-time = "2025-10-31T10:39:46.479Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/50/8e/f4d6be63b6a54e7007a24cc6a2c0e24b819fa6b8d0d8eaf054d148c5fc13/pyarmor_cli_core-8.1.0-cp38-none-musllinux_1_1_aarch64.whl", hash = "sha256:3348116c3c8994f9d386254d5ffa0dcd18f060f7ab3d5c6f52fbd87439d79de3", size = 643790, upload-time = "2025-10-31T10:39:51.771Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/33/f1/610de3212f99805ce6a24fd42ca5a3376b91e2cb1d7ede91115c446bc301/pyarmor_cli_core-8.1.0-cp38-none-musllinux_1_1_x86_64.whl", hash = "sha256:35673cf164a15f04bd613ff7a96368008e9b04e60400100b15b97144f24830de", size = 438592, upload-time = "2025-10-31T10:39:56.604Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/39/b3/bb0ec5f8043b49359f03fe7737b5eecddb098629a10e206f11871796bd32/pyarmor_cli_core-8.1.0-cp38-none-win32.whl", hash = "sha256:8a4da6c8dbce91f735c11ab4db7185176951ffbbb4a4d1ec35b1f58eb14333bc", size = 452460, upload-time = "2025-10-31T10:40:01.577Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/7a/ac/d02d98020022891c27413b149c4217396c96c1624ee6aa6ddc2e62f6021d/pyarmor_cli_core-8.1.0-cp38-none-win_amd64.whl", hash = "sha256:18f187b691a33b29d400600ee8d041d6a66c9e81428dddf6d44a2719775a1bad", size = 413362, upload-time = "2025-10-31T10:40:06.483Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/10/97/da5b7301a09534bfc7c5b4e45b90622735a827f0701138d6b049dcfb2c8d/pyarmor_cli_core-8.1.0-cp39-none-macosx_10_14_x86_64.whl", hash = "sha256:f6287d42da28cf42fa689411ff55eecea0d5a6acb4d75c3e882a8f5aacd7cf23", size = 510055, upload-time = "2025-10-31T10:40:10.97Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/44/8a/f687141dab964e05ee9163aeaf716240fd6e9ad00ec051c7c065d53e5c32/pyarmor_cli_core-8.1.0-cp39-none-macosx_11_0_arm64.whl", hash = "sha256:d23c1eb3b01c5d6e515e1057260bbfc64bc05897b81aa2e1766ffddbd4f9fc59", size = 402096, upload-time = "2025-10-31T10:40:15.556Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/18/9d/50c1b13875be535b8bc7c5a9c67a1101cb868fdb11777e7c814a7ced29ef/pyarmor_cli_core-8.1.0-cp39-none-manylinux1_i686.whl", hash = "sha256:adb14bda4762f12e62e4db78ea37ef2ca4b3258fa046443fcc62683331bde0dd", size = 481034, upload-time = "2025-10-31T10:40:20.793Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/77/f2/59629b81cf2fcc69d582c769282cb434afc0f5f05be341526471e8f49404/pyarmor_cli_core-8.1.0-cp39-none-manylinux1_x86_64.whl", hash = "sha256:b884118e3f2c7d5cff40119a8318226ccacdd176d1106d491917a88976d1843f", size = 460586, upload-time = "2025-10-31T10:40:25.818Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f6/a7/20cd2ae3fd6989e93aa81ac71b6166b3e1bdb71abda13ae3c47172ac0ff6/pyarmor_cli_core-8.1.0-cp39-none-manylinux2014_aarch64.whl", hash = "sha256:170ebe5c5e07d59e0471cc74922984a6019ed47bf4d8dbc00819a22f1feb895c", size = 598411, upload-time = "2025-10-31T10:40:31.343Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f3/0e/0325346a0de81bc5eaa33a90e5826a5127d2d09a9788ffb878767c40de8d/pyarmor_cli_core-8.1.0-cp39-none-manylinux2014_armv7l.whl", hash = "sha256:11687e3e8487f50768b85663643242d1ddcb7ad804bdabfc35940e4d088ec259", size = 994063, upload-time = "2025-10-31T10:40:36.932Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/65/ba/e659822a8fe62f95932267b937cca544ebbc3a912cc1d7cb0d32d6f202cd/pyarmor_cli_core-8.1.0-cp39-none-musllinux_1_1_aarch64.whl", hash = "sha256:301d13e778b189676741575221045c8a430bab2ca9153a5e609eec3d472ac020", size = 643432, upload-time = "2025-10-31T10:40:43.634Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/af/4a/b14e07e1c7d79d573c8632220bbf4faf883bb8c9d67500fa5009682faabf/pyarmor_cli_core-8.1.0-cp39-none-musllinux_1_1_x86_64.whl", hash = "sha256:ee5ad09de2402f0e115e02fa50b6ee54b61393c549f3c02c1aa5f15d1017d341", size = 439194, upload-time = "2025-10-31T10:40:48.234Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/da/d9/471f9f4fdd2a9f179111db9abb72f2f8634737ff9116f9a29a52da38d866/pyarmor_cli_core-8.1.0-cp39-none-win32.whl", hash = "sha256:5db77e7d3a19685c24960296c8993f1b235a220eb515cf1e6e78efc71d7f3ce1", size = 454108, upload-time = "2025-10-31T10:40:52.851Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/fc/f0/7e8fb4eb164458062540e689d34c7239d3a355a909af1dcaae49bace90ba/pyarmor_cli_core-8.1.0-cp39-none-win_amd64.whl", hash = "sha256:44ab15c39d72e5d35370bf4e0536dc1efc04decb7c28bc0e214bc559e3d5c5fc", size = 413633, upload-time = "2025-10-31T10:40:57.274Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/88/3a/d3732110517ce1021066862e362fa7ced6c89946b71cb43d1e3ec1d3292d/pyarmor_cli_core-8.1.0-py3-none-any.whl", hash = "sha256:72d4704ea468fcce761526f702f36d0d7a9c2b319452840a40e053909625effe", size = 5179, upload-time = "2025-10-31T10:41:00.3Z" }, +] + +[[package]] +name = "pycparser" +version = "2.23" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +resolution-markers = [ + "python_full_version == '3.9.*'", + "python_full_version < '3.9'", +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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 = "pycparser" +version = "3.0" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +resolution-markers = [ + "python_full_version >= '3.10'", +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/1b/7d/92392ff7815c21062bea51aa7b87d45576f649f16458d78b7cf94b9ab2e6/pycparser-3.0.tar.gz", hash = "sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29", size = 103492, upload-time = "2026-01-21T14:26:51.89Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl", hash = "sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992", size = 48172, upload-time = "2026-01-21T14:26:50.693Z" }, +] + +[[package]] +name = "pydantic" +version = "2.10.6" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +resolution-markers = [ + "python_full_version < '3.9'", +] +dependencies = [ + { name = "annotated-types", marker = "python_full_version < '3.9'" }, + { name = "pydantic-core", version = "2.27.2", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version < '3.9'" }, + { name = "typing-extensions", version = "4.13.2", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version < '3.9'" }, +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/b7/ae/d5220c5c52b158b1de7ca89fc5edb72f304a70a4c540c84c8844bf4008de/pydantic-2.10.6.tar.gz", hash = "sha256:ca5daa827cce33de7a42be142548b0096bf05a7e7b365aebfa5f8eeec7128236", size = 761681, upload-time = "2025-01-24T01:42:12.693Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f4/3c/8cc1cc84deffa6e25d2d0c688ebb80635dfdbf1dbea3e30c541c8cf4d860/pydantic-2.10.6-py3-none-any.whl", hash = "sha256:427d664bf0b8a2b34ff5dd0f5a18df00591adcee7198fbd71981054cef37b584", size = 431696, upload-time = "2025-01-24T01:42:10.371Z" }, +] + +[[package]] +name = "pydantic" +version = "2.12.5" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +resolution-markers = [ + "python_full_version >= '3.10'", + "python_full_version == '3.9.*'", +] +dependencies = [ + { name = "annotated-types", marker = "python_full_version >= '3.9'" }, + { name = "pydantic-core", version = "2.41.5", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version >= '3.9'" }, + { name = "typing-extensions", version = "4.15.0", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version >= '3.9'" }, + { name = "typing-inspection", marker = "python_full_version >= '3.9'" }, +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/69/44/36f1a6e523abc58ae5f928898e4aca2e0ea509b5aa6f6f392a5d882be928/pydantic-2.12.5.tar.gz", hash = "sha256:4d351024c75c0f085a9febbb665ce8c0c6ec5d30e903bdb6394b7ede26aebb49", size = 821591, upload-time = "2025-11-26T15:11:46.471Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/5a/87/b70ad306ebb6f9b585f114d0ac2137d792b48be34d732d60e597c2f8465a/pydantic-2.12.5-py3-none-any.whl", hash = "sha256:e561593fccf61e8a20fc46dfc2dfe075b8be7d0188df33f221ad1f0139180f9d", size = 463580, upload-time = "2025-11-26T15:11:44.605Z" }, +] + +[[package]] +name = "pydantic-core" +version = "2.27.2" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +resolution-markers = [ + "python_full_version < '3.9'", +] +dependencies = [ + { name = "typing-extensions", version = "4.13.2", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version < '3.9'" }, +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/fc/01/f3e5ac5e7c25833db5eb555f7b7ab24cd6f8c322d3a3ad2d67a952dc0abc/pydantic_core-2.27.2.tar.gz", hash = "sha256:eb026e5a4c1fee05726072337ff51d1efb6f59090b7da90d30ea58625b1ffb39", size = 413443, upload-time = "2024-12-18T11:31:54.917Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/3a/bc/fed5f74b5d802cf9a03e83f60f18864e90e3aed7223adaca5ffb7a8d8d64/pydantic_core-2.27.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2d367ca20b2f14095a8f4fa1210f5a7b78b8a20009ecced6b12818f455b1e9fa", size = 1895938, upload-time = "2024-12-18T11:27:14.406Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/71/2a/185aff24ce844e39abb8dd680f4e959f0006944f4a8a0ea372d9f9ae2e53/pydantic_core-2.27.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:491a2b73db93fab69731eaee494f320faa4e093dbed776be1a829c2eb222c34c", size = 1815684, upload-time = "2024-12-18T11:27:16.489Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/c3/43/fafabd3d94d159d4f1ed62e383e264f146a17dd4d48453319fd782e7979e/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7969e133a6f183be60e9f6f56bfae753585680f3b7307a8e555a948d443cc05a", size = 1829169, upload-time = "2024-12-18T11:27:22.16Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/a2/d1/f2dfe1a2a637ce6800b799aa086d079998959f6f1215eb4497966efd2274/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3de9961f2a346257caf0aa508a4da705467f53778e9ef6fe744c038119737ef5", size = 1867227, upload-time = "2024-12-18T11:27:25.097Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/7d/39/e06fcbcc1c785daa3160ccf6c1c38fea31f5754b756e34b65f74e99780b5/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2bb4d3e5873c37bb3dd58714d4cd0b0e6238cebc4177ac8fe878f8b3aa8e74c", size = 2037695, upload-time = "2024-12-18T11:27:28.656Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/7a/67/61291ee98e07f0650eb756d44998214231f50751ba7e13f4f325d95249ab/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:280d219beebb0752699480fe8f1dc61ab6615c2046d76b7ab7ee38858de0a4e7", size = 2741662, upload-time = "2024-12-18T11:27:30.798Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/32/90/3b15e31b88ca39e9e626630b4c4a1f5a0dfd09076366f4219429e6786076/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47956ae78b6422cbd46f772f1746799cbb862de838fd8d1fbd34a82e05b0983a", size = 1993370, upload-time = "2024-12-18T11:27:33.692Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/ff/83/c06d333ee3a67e2e13e07794995c1535565132940715931c1c43bfc85b11/pydantic_core-2.27.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:14d4a5c49d2f009d62a2a7140d3064f686d17a5d1a268bc641954ba181880236", size = 1996813, upload-time = "2024-12-18T11:27:37.111Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/7c/f7/89be1c8deb6e22618a74f0ca0d933fdcb8baa254753b26b25ad3acff8f74/pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:337b443af21d488716f8d0b6164de833e788aa6bd7e3a39c005febc1284f4962", size = 2005287, upload-time = "2024-12-18T11:27:40.566Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/b7/7d/8eb3e23206c00ef7feee17b83a4ffa0a623eb1a9d382e56e4aa46fd15ff2/pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:03d0f86ea3184a12f41a2d23f7ccb79cdb5a18e06993f8a45baa8dfec746f0e9", size = 2128414, upload-time = "2024-12-18T11:27:43.757Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/4e/99/fe80f3ff8dd71a3ea15763878d464476e6cb0a2db95ff1c5c554133b6b83/pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7041c36f5680c6e0f08d922aed302e98b3745d97fe1589db0a3eebf6624523af", size = 2155301, upload-time = "2024-12-18T11:27:47.36Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/2b/a3/e50460b9a5789ca1451b70d4f52546fa9e2b420ba3bfa6100105c0559238/pydantic_core-2.27.2-cp310-cp310-win32.whl", hash = "sha256:50a68f3e3819077be2c98110c1f9dcb3817e93f267ba80a2c05bb4f8799e2ff4", size = 1816685, upload-time = "2024-12-18T11:27:50.508Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/57/4c/a8838731cb0f2c2a39d3535376466de6049034d7b239c0202a64aaa05533/pydantic_core-2.27.2-cp310-cp310-win_amd64.whl", hash = "sha256:e0fd26b16394ead34a424eecf8a31a1f5137094cabe84a1bcb10fa6ba39d3d31", size = 1982876, upload-time = "2024-12-18T11:27:53.54Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/c2/89/f3450af9d09d44eea1f2c369f49e8f181d742f28220f88cc4dfaae91ea6e/pydantic_core-2.27.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8e10c99ef58cfdf2a66fc15d66b16c4a04f62bca39db589ae8cba08bc55331bc", size = 1893421, upload-time = "2024-12-18T11:27:55.409Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/9e/e3/71fe85af2021f3f386da42d291412e5baf6ce7716bd7101ea49c810eda90/pydantic_core-2.27.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:26f32e0adf166a84d0cb63be85c562ca8a6fa8de28e5f0d92250c6b7e9e2aff7", size = 1814998, upload-time = "2024-12-18T11:27:57.252Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/a6/3c/724039e0d848fd69dbf5806894e26479577316c6f0f112bacaf67aa889ac/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c19d1ea0673cd13cc2f872f6c9ab42acc4e4f492a7ca9d3795ce2b112dd7e15", size = 1826167, upload-time = "2024-12-18T11:27:59.146Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/2b/5b/1b29e8c1fb5f3199a9a57c1452004ff39f494bbe9bdbe9a81e18172e40d3/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e68c4446fe0810e959cdff46ab0a41ce2f2c86d227d96dc3847af0ba7def306", size = 1865071, upload-time = "2024-12-18T11:28:02.625Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/89/6c/3985203863d76bb7d7266e36970d7e3b6385148c18a68cc8915fd8c84d57/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9640b0059ff4f14d1f37321b94061c6db164fbe49b334b31643e0528d100d99", size = 2036244, upload-time = "2024-12-18T11:28:04.442Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/0e/41/f15316858a246b5d723f7d7f599f79e37493b2e84bfc789e58d88c209f8a/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:40d02e7d45c9f8af700f3452f329ead92da4c5f4317ca9b896de7ce7199ea459", size = 2737470, upload-time = "2024-12-18T11:28:07.679Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/a8/7c/b860618c25678bbd6d1d99dbdfdf0510ccb50790099b963ff78a124b754f/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c1fd185014191700554795c99b347d64f2bb637966c4cfc16998a0ca700d048", size = 1992291, upload-time = "2024-12-18T11:28:10.297Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/bf/73/42c3742a391eccbeab39f15213ecda3104ae8682ba3c0c28069fbcb8c10d/pydantic_core-2.27.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d81d2068e1c1228a565af076598f9e7451712700b673de8f502f0334f281387d", size = 1994613, upload-time = "2024-12-18T11:28:13.362Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/94/7a/941e89096d1175d56f59340f3a8ebaf20762fef222c298ea96d36a6328c5/pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1a4207639fb02ec2dbb76227d7c751a20b1a6b4bc52850568e52260cae64ca3b", size = 2002355, upload-time = "2024-12-18T11:28:16.587Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/6e/95/2359937a73d49e336a5a19848713555605d4d8d6940c3ec6c6c0ca4dcf25/pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:3de3ce3c9ddc8bbd88f6e0e304dea0e66d843ec9de1b0042b0911c1663ffd474", size = 2126661, upload-time = "2024-12-18T11:28:18.407Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/2b/4c/ca02b7bdb6012a1adef21a50625b14f43ed4d11f1fc237f9d7490aa5078c/pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:30c5f68ded0c36466acede341551106821043e9afaad516adfb6e8fa80a4e6a6", size = 2153261, upload-time = "2024-12-18T11:28:21.471Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/72/9d/a241db83f973049a1092a079272ffe2e3e82e98561ef6214ab53fe53b1c7/pydantic_core-2.27.2-cp311-cp311-win32.whl", hash = "sha256:c70c26d2c99f78b125a3459f8afe1aed4d9687c24fd677c6a4436bc042e50d6c", size = 1812361, upload-time = "2024-12-18T11:28:23.53Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/e8/ef/013f07248041b74abd48a385e2110aa3a9bbfef0fbd97d4e6d07d2f5b89a/pydantic_core-2.27.2-cp311-cp311-win_amd64.whl", hash = "sha256:08e125dbdc505fa69ca7d9c499639ab6407cfa909214d500897d02afb816e7cc", size = 1982484, upload-time = "2024-12-18T11:28:25.391Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/10/1c/16b3a3e3398fd29dca77cea0a1d998d6bde3902fa2706985191e2313cc76/pydantic_core-2.27.2-cp311-cp311-win_arm64.whl", hash = "sha256:26f0d68d4b235a2bae0c3fc585c585b4ecc51382db0e3ba402a22cbc440915e4", size = 1867102, upload-time = "2024-12-18T11:28:28.593Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/d6/74/51c8a5482ca447871c93e142d9d4a92ead74de6c8dc5e66733e22c9bba89/pydantic_core-2.27.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9e0c8cfefa0ef83b4da9588448b6d8d2a2bf1a53c3f1ae5fca39eb3061e2f0b0", size = 1893127, upload-time = "2024-12-18T11:28:30.346Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/d3/f3/c97e80721735868313c58b89d2de85fa80fe8dfeeed84dc51598b92a135e/pydantic_core-2.27.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:83097677b8e3bd7eaa6775720ec8e0405f1575015a463285a92bfdfe254529ef", size = 1811340, upload-time = "2024-12-18T11:28:32.521Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/9e/91/840ec1375e686dbae1bd80a9e46c26a1e0083e1186abc610efa3d9a36180/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:172fce187655fece0c90d90a678424b013f8fbb0ca8b036ac266749c09438cb7", size = 1822900, upload-time = "2024-12-18T11:28:34.507Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f6/31/4240bc96025035500c18adc149aa6ffdf1a0062a4b525c932065ceb4d868/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:519f29f5213271eeeeb3093f662ba2fd512b91c5f188f3bb7b27bc5973816934", size = 1869177, upload-time = "2024-12-18T11:28:36.488Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/fa/20/02fbaadb7808be578317015c462655c317a77a7c8f0ef274bc016a784c54/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05e3a55d124407fffba0dd6b0c0cd056d10e983ceb4e5dbd10dda135c31071d6", size = 2038046, upload-time = "2024-12-18T11:28:39.409Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/06/86/7f306b904e6c9eccf0668248b3f272090e49c275bc488a7b88b0823444a4/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c3ed807c7b91de05e63930188f19e921d1fe90de6b4f5cd43ee7fcc3525cb8c", size = 2685386, upload-time = "2024-12-18T11:28:41.221Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/8d/f0/49129b27c43396581a635d8710dae54a791b17dfc50c70164866bbf865e3/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fb4aadc0b9a0c063206846d603b92030eb6f03069151a625667f982887153e2", size = 1997060, upload-time = "2024-12-18T11:28:44.709Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/0d/0f/943b4af7cd416c477fd40b187036c4f89b416a33d3cc0ab7b82708a667aa/pydantic_core-2.27.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:28ccb213807e037460326424ceb8b5245acb88f32f3d2777427476e1b32c48c4", size = 2004870, upload-time = "2024-12-18T11:28:46.839Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/35/40/aea70b5b1a63911c53a4c8117c0a828d6790483f858041f47bab0b779f44/pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:de3cd1899e2c279b140adde9357c4495ed9d47131b4a4eaff9052f23398076b3", size = 1999822, upload-time = "2024-12-18T11:28:48.896Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f2/b3/807b94fd337d58effc5498fd1a7a4d9d59af4133e83e32ae39a96fddec9d/pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:220f892729375e2d736b97d0e51466252ad84c51857d4d15f5e9692f9ef12be4", size = 2130364, upload-time = "2024-12-18T11:28:50.755Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/fc/df/791c827cd4ee6efd59248dca9369fb35e80a9484462c33c6649a8d02b565/pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a0fcd29cd6b4e74fe8ddd2c90330fd8edf2e30cb52acda47f06dd615ae72da57", size = 2158303, upload-time = "2024-12-18T11:28:54.122Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/9b/67/4e197c300976af185b7cef4c02203e175fb127e414125916bf1128b639a9/pydantic_core-2.27.2-cp312-cp312-win32.whl", hash = "sha256:1e2cb691ed9834cd6a8be61228471d0a503731abfb42f82458ff27be7b2186fc", size = 1834064, upload-time = "2024-12-18T11:28:56.074Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/1f/ea/cd7209a889163b8dcca139fe32b9687dd05249161a3edda62860430457a5/pydantic_core-2.27.2-cp312-cp312-win_amd64.whl", hash = "sha256:cc3f1a99a4f4f9dd1de4fe0312c114e740b5ddead65bb4102884b384c15d8bc9", size = 1989046, upload-time = "2024-12-18T11:28:58.107Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/bc/49/c54baab2f4658c26ac633d798dab66b4c3a9bbf47cff5284e9c182f4137a/pydantic_core-2.27.2-cp312-cp312-win_arm64.whl", hash = "sha256:3911ac9284cd8a1792d3cb26a2da18f3ca26c6908cc434a18f730dc0db7bfa3b", size = 1885092, upload-time = "2024-12-18T11:29:01.335Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/41/b1/9bc383f48f8002f99104e3acff6cba1231b29ef76cfa45d1506a5cad1f84/pydantic_core-2.27.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7d14bd329640e63852364c306f4d23eb744e0f8193148d4044dd3dacdaacbd8b", size = 1892709, upload-time = "2024-12-18T11:29:03.193Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/10/6c/e62b8657b834f3eb2961b49ec8e301eb99946245e70bf42c8817350cbefc/pydantic_core-2.27.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82f91663004eb8ed30ff478d77c4d1179b3563df6cdb15c0817cd1cdaf34d154", size = 1811273, upload-time = "2024-12-18T11:29:05.306Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/ba/15/52cfe49c8c986e081b863b102d6b859d9defc63446b642ccbbb3742bf371/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71b24c7d61131bb83df10cc7e687433609963a944ccf45190cfc21e0887b08c9", size = 1823027, upload-time = "2024-12-18T11:29:07.294Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/b1/1c/b6f402cfc18ec0024120602bdbcebc7bdd5b856528c013bd4d13865ca473/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa8e459d4954f608fa26116118bb67f56b93b209c39b008277ace29937453dc9", size = 1868888, upload-time = "2024-12-18T11:29:09.249Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/bd/7b/8cb75b66ac37bc2975a3b7de99f3c6f355fcc4d89820b61dffa8f1e81677/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce8918cbebc8da707ba805b7fd0b382816858728ae7fe19a942080c24e5b7cd1", size = 2037738, upload-time = "2024-12-18T11:29:11.23Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/c8/f1/786d8fe78970a06f61df22cba58e365ce304bf9b9f46cc71c8c424e0c334/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eda3f5c2a021bbc5d976107bb302e0131351c2ba54343f8a496dc8783d3d3a6a", size = 2685138, upload-time = "2024-12-18T11:29:16.396Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/a6/74/d12b2cd841d8724dc8ffb13fc5cef86566a53ed358103150209ecd5d1999/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd8086fa684c4775c27f03f062cbb9eaa6e17f064307e86b21b9e0abc9c0f02e", size = 1997025, upload-time = "2024-12-18T11:29:20.25Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/a0/6e/940bcd631bc4d9a06c9539b51f070b66e8f370ed0933f392db6ff350d873/pydantic_core-2.27.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8d9b3388db186ba0c099a6d20f0604a44eabdeef1777ddd94786cdae158729e4", size = 2004633, upload-time = "2024-12-18T11:29:23.877Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/50/cc/a46b34f1708d82498c227d5d80ce615b2dd502ddcfd8376fc14a36655af1/pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7a66efda2387de898c8f38c0cf7f14fca0b51a8ef0b24bfea5849f1b3c95af27", size = 1999404, upload-time = "2024-12-18T11:29:25.872Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/ca/2d/c365cfa930ed23bc58c41463bae347d1005537dc8db79e998af8ba28d35e/pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:18a101c168e4e092ab40dbc2503bdc0f62010e95d292b27827871dc85450d7ee", size = 2130130, upload-time = "2024-12-18T11:29:29.252Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f4/d7/eb64d015c350b7cdb371145b54d96c919d4db516817f31cd1c650cae3b21/pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ba5dd002f88b78a4215ed2f8ddbdf85e8513382820ba15ad5ad8955ce0ca19a1", size = 2157946, upload-time = "2024-12-18T11:29:31.338Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/a4/99/bddde3ddde76c03b65dfd5a66ab436c4e58ffc42927d4ff1198ffbf96f5f/pydantic_core-2.27.2-cp313-cp313-win32.whl", hash = "sha256:1ebaf1d0481914d004a573394f4be3a7616334be70261007e47c2a6fe7e50130", size = 1834387, upload-time = "2024-12-18T11:29:33.481Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/71/47/82b5e846e01b26ac6f1893d3c5f9f3a2eb6ba79be26eef0b759b4fe72946/pydantic_core-2.27.2-cp313-cp313-win_amd64.whl", hash = "sha256:953101387ecf2f5652883208769a79e48db18c6df442568a0b5ccd8c2723abee", size = 1990453, upload-time = "2024-12-18T11:29:35.533Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/51/b2/b2b50d5ecf21acf870190ae5d093602d95f66c9c31f9d5de6062eb329ad1/pydantic_core-2.27.2-cp313-cp313-win_arm64.whl", hash = "sha256:ac4dbfd1691affb8f48c2c13241a2e3b60ff23247cbcf981759c768b6633cf8b", size = 1885186, upload-time = "2024-12-18T11:29:37.649Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/43/53/13e9917fc69c0a4aea06fd63ed6a8d6cda9cf140ca9584d49c1650b0ef5e/pydantic_core-2.27.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d3e8d504bdd3f10835468f29008d72fc8359d95c9c415ce6e767203db6127506", size = 1899595, upload-time = "2024-12-18T11:29:40.887Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f4/20/26c549249769ed84877f862f7bb93f89a6ee08b4bee1ed8781616b7fbb5e/pydantic_core-2.27.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:521eb9b7f036c9b6187f0b47318ab0d7ca14bd87f776240b90b21c1f4f149320", size = 1775010, upload-time = "2024-12-18T11:29:44.823Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/35/eb/8234e05452d92d2b102ffa1b56d801c3567e628fdc63f02080fdfc68fd5e/pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85210c4d99a0114f5a9481b44560d7d1e35e32cc5634c656bc48e590b669b145", size = 1830727, upload-time = "2024-12-18T11:29:46.904Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/8f/df/59f915c8b929d5f61e5a46accf748a87110ba145156f9326d1a7d28912b2/pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d716e2e30c6f140d7560ef1538953a5cd1a87264c737643d481f2779fc247fe1", size = 1868393, upload-time = "2024-12-18T11:29:49.098Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/d5/52/81cf4071dca654d485c277c581db368b0c95b2b883f4d7b736ab54f72ddf/pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f66d89ba397d92f840f8654756196d93804278457b5fbede59598a1f9f90b228", size = 2040300, upload-time = "2024-12-18T11:29:51.43Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/9c/00/05197ce1614f5c08d7a06e1d39d5d8e704dc81971b2719af134b844e2eaf/pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:669e193c1c576a58f132e3158f9dfa9662969edb1a250c54d8fa52590045f046", size = 2738785, upload-time = "2024-12-18T11:29:55.001Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f7/a3/5f19bc495793546825ab160e530330c2afcee2281c02b5ffafd0b32ac05e/pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdbe7629b996647b99c01b37f11170a57ae675375b14b8c13b8518b8320ced5", size = 1996493, upload-time = "2024-12-18T11:29:57.13Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/ed/e8/e0102c2ec153dc3eed88aea03990e1b06cfbca532916b8a48173245afe60/pydantic_core-2.27.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d262606bf386a5ba0b0af3b97f37c83d7011439e3dc1a9298f21efb292e42f1a", size = 1998544, upload-time = "2024-12-18T11:30:00.681Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/fb/a3/4be70845b555bd80aaee9f9812a7cf3df81550bce6dadb3cfee9c5d8421d/pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:cabb9bcb7e0d97f74df8646f34fc76fbf793b7f6dc2438517d7a9e50eee4f14d", size = 2007449, upload-time = "2024-12-18T11:30:02.985Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/e3/9f/b779ed2480ba355c054e6d7ea77792467631d674b13d8257085a4bc7dcda/pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_armv7l.whl", hash = "sha256:d2d63f1215638d28221f664596b1ccb3944f6e25dd18cd3b86b0a4c408d5ebb9", size = 2129460, upload-time = "2024-12-18T11:30:06.55Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/a0/f0/a6ab0681f6e95260c7fbf552874af7302f2ea37b459f9b7f00698f875492/pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bca101c00bff0adb45a833f8451b9105d9df18accb8743b08107d7ada14bd7da", size = 2159609, upload-time = "2024-12-18T11:30:09.428Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/8a/2b/e1059506795104349712fbca647b18b3f4a7fd541c099e6259717441e1e0/pydantic_core-2.27.2-cp38-cp38-win32.whl", hash = "sha256:f6f8e111843bbb0dee4cb6594cdc73e79b3329b526037ec242a3e49012495b3b", size = 1819886, upload-time = "2024-12-18T11:30:11.777Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/aa/6d/df49c17f024dfc58db0bacc7b03610058018dd2ea2eaf748ccbada4c3d06/pydantic_core-2.27.2-cp38-cp38-win_amd64.whl", hash = "sha256:fd1aea04935a508f62e0d0ef1f5ae968774a32afc306fb8545e06f5ff5cdf3ad", size = 1980773, upload-time = "2024-12-18T11:30:14.828Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/27/97/3aef1ddb65c5ccd6eda9050036c956ff6ecbfe66cb7eb40f280f121a5bb0/pydantic_core-2.27.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c10eb4f1659290b523af58fa7cffb452a61ad6ae5613404519aee4bfbf1df993", size = 1896475, upload-time = "2024-12-18T11:30:18.316Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/ad/d3/5668da70e373c9904ed2f372cb52c0b996426f302e0dee2e65634c92007d/pydantic_core-2.27.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ef592d4bad47296fb11f96cd7dc898b92e795032b4894dfb4076cfccd43a9308", size = 1772279, upload-time = "2024-12-18T11:30:20.547Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/8a/9e/e44b8cb0edf04a2f0a1f6425a65ee089c1d6f9c4c2dcab0209127b6fdfc2/pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c61709a844acc6bf0b7dce7daae75195a10aac96a596ea1b776996414791ede4", size = 1829112, upload-time = "2024-12-18T11:30:23.255Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/1c/90/1160d7ac700102effe11616e8119e268770f2a2aa5afb935f3ee6832987d/pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c5f762659e47fdb7b16956c71598292f60a03aa92f8b6351504359dbdba6cf", size = 1866780, upload-time = "2024-12-18T11:30:25.742Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/ee/33/13983426df09a36d22c15980008f8d9c77674fc319351813b5a2739b70f3/pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c9775e339e42e79ec99c441d9730fccf07414af63eac2f0e48e08fd38a64d76", size = 2037943, upload-time = "2024-12-18T11:30:28.036Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/01/d7/ced164e376f6747e9158c89988c293cd524ab8d215ae4e185e9929655d5c/pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57762139821c31847cfb2df63c12f725788bd9f04bc2fb392790959b8f70f118", size = 2740492, upload-time = "2024-12-18T11:30:30.412Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/8b/1f/3dc6e769d5b7461040778816aab2b00422427bcaa4b56cc89e9c653b2605/pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d1e85068e818c73e048fe28cfc769040bb1f475524f4745a5dc621f75ac7630", size = 1995714, upload-time = "2024-12-18T11:30:34.358Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/07/d7/a0bd09bc39283530b3f7c27033a814ef254ba3bd0b5cfd040b7abf1fe5da/pydantic_core-2.27.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:097830ed52fd9e427942ff3b9bc17fab52913b2f50f2880dc4a5611446606a54", size = 1997163, upload-time = "2024-12-18T11:30:37.979Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/2d/bb/2db4ad1762e1c5699d9b857eeb41959191980de6feb054e70f93085e1bcd/pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:044a50963a614ecfae59bb1eaf7ea7efc4bc62f49ed594e18fa1e5d953c40e9f", size = 2005217, upload-time = "2024-12-18T11:30:40.367Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/53/5f/23a5a3e7b8403f8dd8fc8a6f8b49f6b55c7d715b77dcf1f8ae919eeb5628/pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:4e0b4220ba5b40d727c7f879eac379b822eee5d8fff418e9d3381ee45b3b0362", size = 2127899, upload-time = "2024-12-18T11:30:42.737Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/c2/ae/aa38bb8dd3d89c2f1d8362dd890ee8f3b967330821d03bbe08fa01ce3766/pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5e4f4bb20d75e9325cc9696c6802657b58bc1dbbe3022f32cc2b2b632c3fbb96", size = 2155726, upload-time = "2024-12-18T11:30:45.279Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/98/61/4f784608cc9e98f70839187117ce840480f768fed5d386f924074bf6213c/pydantic_core-2.27.2-cp39-cp39-win32.whl", hash = "sha256:cca63613e90d001b9f2f9a9ceb276c308bfa2a43fafb75c8031c4f66039e8c6e", size = 1817219, upload-time = "2024-12-18T11:30:47.718Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/57/82/bb16a68e4a1a858bb3768c2c8f1ff8d8978014e16598f001ea29a25bf1d1/pydantic_core-2.27.2-cp39-cp39-win_amd64.whl", hash = "sha256:77d1bca19b0f7021b3a982e6f903dcd5b2b06076def36a652e3907f596e29f67", size = 1985382, upload-time = "2024-12-18T11:30:51.871Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/46/72/af70981a341500419e67d5cb45abe552a7c74b66326ac8877588488da1ac/pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2bf14caea37e91198329b828eae1618c068dfb8ef17bb33287a7ad4b61ac314e", size = 1891159, upload-time = "2024-12-18T11:30:54.382Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/ad/3d/c5913cccdef93e0a6a95c2d057d2c2cba347815c845cda79ddd3c0f5e17d/pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b0cb791f5b45307caae8810c2023a184c74605ec3bcbb67d13846c28ff731ff8", size = 1768331, upload-time = "2024-12-18T11:30:58.178Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f6/f0/a3ae8fbee269e4934f14e2e0e00928f9346c5943174f2811193113e58252/pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:688d3fd9fcb71f41c4c015c023d12a79d1c4c0732ec9eb35d96e3388a120dcf3", size = 1822467, upload-time = "2024-12-18T11:31:00.6Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/d7/7a/7bbf241a04e9f9ea24cd5874354a83526d639b02674648af3f350554276c/pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d591580c34f4d731592f0e9fe40f9cc1b430d297eecc70b962e93c5c668f15f", size = 1979797, upload-time = "2024-12-18T11:31:07.243Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/4f/5f/4784c6107731f89e0005a92ecb8a2efeafdb55eb992b8e9d0a2be5199335/pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:82f986faf4e644ffc189a7f1aafc86e46ef70372bb153e7001e8afccc6e54133", size = 1987839, upload-time = "2024-12-18T11:31:09.775Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/6d/a7/61246562b651dff00de86a5f01b6e4befb518df314c54dec187a78d81c84/pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:bec317a27290e2537f922639cafd54990551725fc844249e64c523301d0822fc", size = 1998861, upload-time = "2024-12-18T11:31:13.469Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/86/aa/837821ecf0c022bbb74ca132e117c358321e72e7f9702d1b6a03758545e2/pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:0296abcb83a797db256b773f45773da397da75a08f5fcaef41f2044adec05f50", size = 2116582, upload-time = "2024-12-18T11:31:17.423Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/81/b0/5e74656e95623cbaa0a6278d16cf15e10a51f6002e3ec126541e95c29ea3/pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0d75070718e369e452075a6017fbf187f788e17ed67a3abd47fa934d001863d9", size = 2151985, upload-time = "2024-12-18T11:31:19.901Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/63/37/3e32eeb2a451fddaa3898e2163746b0cffbbdbb4740d38372db0490d67f3/pydantic_core-2.27.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7e17b560be3c98a8e3aa66ce828bdebb9e9ac6ad5466fba92eb74c4c95cb1151", size = 2004715, upload-time = "2024-12-18T11:31:22.821Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/29/0e/dcaea00c9dbd0348b723cae82b0e0c122e0fa2b43fa933e1622fd237a3ee/pydantic_core-2.27.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c33939a82924da9ed65dab5a65d427205a73181d8098e79b6b426bdf8ad4e656", size = 1891733, upload-time = "2024-12-18T11:31:26.876Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/86/d3/e797bba8860ce650272bda6383a9d8cad1d1c9a75a640c9d0e848076f85e/pydantic_core-2.27.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:00bad2484fa6bda1e216e7345a798bd37c68fb2d97558edd584942aa41b7d278", size = 1768375, upload-time = "2024-12-18T11:31:29.276Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/41/f7/f847b15fb14978ca2b30262548f5fc4872b2724e90f116393eb69008299d/pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c817e2b40aba42bac6f457498dacabc568c3b7a986fc9ba7c8d9d260b71485fb", size = 1822307, upload-time = "2024-12-18T11:31:33.123Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/9c/63/ed80ec8255b587b2f108e514dc03eed1546cd00f0af281e699797f373f38/pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:251136cdad0cb722e93732cb45ca5299fb56e1344a833640bf93b2803f8d1bfd", size = 1979971, upload-time = "2024-12-18T11:31:35.755Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/a9/6d/6d18308a45454a0de0e975d70171cadaf454bc7a0bf86b9c7688e313f0bb/pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d2088237af596f0a524d3afc39ab3b036e8adb054ee57cbb1dcf8e09da5b29cc", size = 1987616, upload-time = "2024-12-18T11:31:38.534Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/82/8a/05f8780f2c1081b800a7ca54c1971e291c2d07d1a50fb23c7e4aef4ed403/pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d4041c0b966a84b4ae7a09832eb691a35aec90910cd2dbe7a208de59be77965b", size = 1998943, upload-time = "2024-12-18T11:31:41.853Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/5e/3e/fe5b6613d9e4c0038434396b46c5303f5ade871166900b357ada4766c5b7/pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:8083d4e875ebe0b864ffef72a4304827015cff328a1be6e22cc850753bfb122b", size = 2116654, upload-time = "2024-12-18T11:31:44.756Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/db/ad/28869f58938fad8cc84739c4e592989730bfb69b7c90a8fff138dff18e1e/pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f141ee28a0ad2123b6611b6ceff018039df17f32ada8b534e6aa039545a3efb2", size = 2152292, upload-time = "2024-12-18T11:31:48.613Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/a1/0c/c5c5cd3689c32ed1fe8c5d234b079c12c281c051759770c05b8bed6412b5/pydantic_core-2.27.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7d0c8399fcc1848491f00e0314bd59fb34a9c008761bcb422a057670c3f65e35", size = 2004961, upload-time = "2024-12-18T11:31:52.446Z" }, +] + +[[package]] +name = "pydantic-core" +version = "2.41.5" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +resolution-markers = [ + "python_full_version >= '3.10'", + "python_full_version == '3.9.*'", +] +dependencies = [ + { name = "typing-extensions", version = "4.15.0", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version >= '3.9'" }, +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/71/70/23b021c950c2addd24ec408e9ab05d59b035b39d97cdc1130e1bce647bb6/pydantic_core-2.41.5.tar.gz", hash = "sha256:08daa51ea16ad373ffd5e7606252cc32f07bc72b28284b6bc9c6df804816476e", size = 460952, upload-time = "2025-11-04T13:43:49.098Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/c6/90/32c9941e728d564b411d574d8ee0cf09b12ec978cb22b294995bae5549a5/pydantic_core-2.41.5-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:77b63866ca88d804225eaa4af3e664c5faf3568cea95360d21f4725ab6e07146", size = 2107298, upload-time = "2025-11-04T13:39:04.116Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/fb/a8/61c96a77fe28993d9a6fb0f4127e05430a267b235a124545d79fea46dd65/pydantic_core-2.41.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:dfa8a0c812ac681395907e71e1274819dec685fec28273a28905df579ef137e2", size = 1901475, upload-time = "2025-11-04T13:39:06.055Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/5d/b6/338abf60225acc18cdc08b4faef592d0310923d19a87fba1faf05af5346e/pydantic_core-2.41.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5921a4d3ca3aee735d9fd163808f5e8dd6c6972101e4adbda9a4667908849b97", size = 1918815, upload-time = "2025-11-04T13:39:10.41Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/d1/1c/2ed0433e682983d8e8cba9c8d8ef274d4791ec6a6f24c58935b90e780e0a/pydantic_core-2.41.5-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e25c479382d26a2a41b7ebea1043564a937db462816ea07afa8a44c0866d52f9", size = 2065567, upload-time = "2025-11-04T13:39:12.244Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/b3/24/cf84974ee7d6eae06b9e63289b7b8f6549d416b5c199ca2d7ce13bbcf619/pydantic_core-2.41.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f547144f2966e1e16ae626d8ce72b4cfa0caedc7fa28052001c94fb2fcaa1c52", size = 2230442, upload-time = "2025-11-04T13:39:13.962Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/fd/21/4e287865504b3edc0136c89c9c09431be326168b1eb7841911cbc877a995/pydantic_core-2.41.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f52298fbd394f9ed112d56f3d11aabd0d5bd27beb3084cc3d8ad069483b8941", size = 2350956, upload-time = "2025-11-04T13:39:15.889Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/a8/76/7727ef2ffa4b62fcab916686a68a0426b9b790139720e1934e8ba797e238/pydantic_core-2.41.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:100baa204bb412b74fe285fb0f3a385256dad1d1879f0a5cb1499ed2e83d132a", size = 2068253, upload-time = "2025-11-04T13:39:17.403Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/d5/8c/a4abfc79604bcb4c748e18975c44f94f756f08fb04218d5cb87eb0d3a63e/pydantic_core-2.41.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:05a2c8852530ad2812cb7914dc61a1125dc4e06252ee98e5638a12da6cc6fb6c", size = 2177050, upload-time = "2025-11-04T13:39:19.351Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/67/b1/de2e9a9a79b480f9cb0b6e8b6ba4c50b18d4e89852426364c66aa82bb7b3/pydantic_core-2.41.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:29452c56df2ed968d18d7e21f4ab0ac55e71dc59524872f6fc57dcf4a3249ed2", size = 2147178, upload-time = "2025-11-04T13:39:21Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/16/c1/dfb33f837a47b20417500efaa0378adc6635b3c79e8369ff7a03c494b4ac/pydantic_core-2.41.5-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:d5160812ea7a8a2ffbe233d8da666880cad0cbaf5d4de74ae15c313213d62556", size = 2341833, upload-time = "2025-11-04T13:39:22.606Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/47/36/00f398642a0f4b815a9a558c4f1dca1b4020a7d49562807d7bc9ff279a6c/pydantic_core-2.41.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:df3959765b553b9440adfd3c795617c352154e497a4eaf3752555cfb5da8fc49", size = 2321156, upload-time = "2025-11-04T13:39:25.843Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/7e/70/cad3acd89fde2010807354d978725ae111ddf6d0ea46d1ea1775b5c1bd0c/pydantic_core-2.41.5-cp310-cp310-win32.whl", hash = "sha256:1f8d33a7f4d5a7889e60dc39856d76d09333d8a6ed0f5f1190635cbec70ec4ba", size = 1989378, upload-time = "2025-11-04T13:39:27.92Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/76/92/d338652464c6c367e5608e4488201702cd1cbb0f33f7b6a85a60fe5f3720/pydantic_core-2.41.5-cp310-cp310-win_amd64.whl", hash = "sha256:62de39db01b8d593e45871af2af9e497295db8d73b085f6bfd0b18c83c70a8f9", size = 2013622, upload-time = "2025-11-04T13:39:29.848Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/e8/72/74a989dd9f2084b3d9530b0915fdda64ac48831c30dbf7c72a41a5232db8/pydantic_core-2.41.5-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:a3a52f6156e73e7ccb0f8cced536adccb7042be67cb45f9562e12b319c119da6", size = 2105873, upload-time = "2025-11-04T13:39:31.373Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/12/44/37e403fd9455708b3b942949e1d7febc02167662bf1a7da5b78ee1ea2842/pydantic_core-2.41.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7f3bf998340c6d4b0c9a2f02d6a400e51f123b59565d74dc60d252ce888c260b", size = 1899826, upload-time = "2025-11-04T13:39:32.897Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/33/7f/1d5cab3ccf44c1935a359d51a8a2a9e1a654b744b5e7f80d41b88d501eec/pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:378bec5c66998815d224c9ca994f1e14c0c21cb95d2f52b6021cc0b2a58f2a5a", size = 1917869, upload-time = "2025-11-04T13:39:34.469Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/6e/6a/30d94a9674a7fe4f4744052ed6c5e083424510be1e93da5bc47569d11810/pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e7b576130c69225432866fe2f4a469a85a54ade141d96fd396dffcf607b558f8", size = 2063890, upload-time = "2025-11-04T13:39:36.053Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/50/be/76e5d46203fcb2750e542f32e6c371ffa9b8ad17364cf94bb0818dbfb50c/pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6cb58b9c66f7e4179a2d5e0f849c48eff5c1fca560994d6eb6543abf955a149e", size = 2229740, upload-time = "2025-11-04T13:39:37.753Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/d3/ee/fed784df0144793489f87db310a6bbf8118d7b630ed07aa180d6067e653a/pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:88942d3a3dff3afc8288c21e565e476fc278902ae4d6d134f1eeda118cc830b1", size = 2350021, upload-time = "2025-11-04T13:39:40.94Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/c8/be/8fed28dd0a180dca19e72c233cbf58efa36df055e5b9d90d64fd1740b828/pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f31d95a179f8d64d90f6831d71fa93290893a33148d890ba15de25642c5d075b", size = 2066378, upload-time = "2025-11-04T13:39:42.523Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/b0/3b/698cf8ae1d536a010e05121b4958b1257f0b5522085e335360e53a6b1c8b/pydantic_core-2.41.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c1df3d34aced70add6f867a8cf413e299177e0c22660cc767218373d0779487b", size = 2175761, upload-time = "2025-11-04T13:39:44.553Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/b8/ba/15d537423939553116dea94ce02f9c31be0fa9d0b806d427e0308ec17145/pydantic_core-2.41.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4009935984bd36bd2c774e13f9a09563ce8de4abaa7226f5108262fa3e637284", size = 2146303, upload-time = "2025-11-04T13:39:46.238Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/58/7f/0de669bf37d206723795f9c90c82966726a2ab06c336deba4735b55af431/pydantic_core-2.41.5-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:34a64bc3441dc1213096a20fe27e8e128bd3ff89921706e83c0b1ac971276594", size = 2340355, upload-time = "2025-11-04T13:39:48.002Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/e5/de/e7482c435b83d7e3c3ee5ee4451f6e8973cff0eb6007d2872ce6383f6398/pydantic_core-2.41.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c9e19dd6e28fdcaa5a1de679aec4141f691023916427ef9bae8584f9c2fb3b0e", size = 2319875, upload-time = "2025-11-04T13:39:49.705Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/fe/e6/8c9e81bb6dd7560e33b9053351c29f30c8194b72f2d6932888581f503482/pydantic_core-2.41.5-cp311-cp311-win32.whl", hash = "sha256:2c010c6ded393148374c0f6f0bf89d206bf3217f201faa0635dcd56bd1520f6b", size = 1987549, upload-time = "2025-11-04T13:39:51.842Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/11/66/f14d1d978ea94d1bc21fc98fcf570f9542fe55bfcc40269d4e1a21c19bf7/pydantic_core-2.41.5-cp311-cp311-win_amd64.whl", hash = "sha256:76ee27c6e9c7f16f47db7a94157112a2f3a00e958bc626e2f4ee8bec5c328fbe", size = 2011305, upload-time = "2025-11-04T13:39:53.485Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/56/d8/0e271434e8efd03186c5386671328154ee349ff0354d83c74f5caaf096ed/pydantic_core-2.41.5-cp311-cp311-win_arm64.whl", hash = "sha256:4bc36bbc0b7584de96561184ad7f012478987882ebf9f9c389b23f432ea3d90f", size = 1972902, upload-time = "2025-11-04T13:39:56.488Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/5f/5d/5f6c63eebb5afee93bcaae4ce9a898f3373ca23df3ccaef086d0233a35a7/pydantic_core-2.41.5-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f41a7489d32336dbf2199c8c0a215390a751c5b014c2c1c5366e817202e9cdf7", size = 2110990, upload-time = "2025-11-04T13:39:58.079Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/aa/32/9c2e8ccb57c01111e0fd091f236c7b371c1bccea0fa85247ac55b1e2b6b6/pydantic_core-2.41.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:070259a8818988b9a84a449a2a7337c7f430a22acc0859c6b110aa7212a6d9c0", size = 1896003, upload-time = "2025-11-04T13:39:59.956Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/68/b8/a01b53cb0e59139fbc9e4fda3e9724ede8de279097179be4ff31f1abb65a/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e96cea19e34778f8d59fe40775a7a574d95816eb150850a85a7a4c8f4b94ac69", size = 1919200, upload-time = "2025-11-04T13:40:02.241Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/38/de/8c36b5198a29bdaade07b5985e80a233a5ac27137846f3bc2d3b40a47360/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed2e99c456e3fadd05c991f8f437ef902e00eedf34320ba2b0842bd1c3ca3a75", size = 2052578, upload-time = "2025-11-04T13:40:04.401Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/00/b5/0e8e4b5b081eac6cb3dbb7e60a65907549a1ce035a724368c330112adfdd/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:65840751b72fbfd82c3c640cff9284545342a4f1eb1586ad0636955b261b0b05", size = 2208504, upload-time = "2025-11-04T13:40:06.072Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/77/56/87a61aad59c7c5b9dc8caad5a41a5545cba3810c3e828708b3d7404f6cef/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e536c98a7626a98feb2d3eaf75944ef6f3dbee447e1f841eae16f2f0a72d8ddc", size = 2335816, upload-time = "2025-11-04T13:40:07.835Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/0d/76/941cc9f73529988688a665a5c0ecff1112b3d95ab48f81db5f7606f522d3/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eceb81a8d74f9267ef4081e246ffd6d129da5d87e37a77c9bde550cb04870c1c", size = 2075366, upload-time = "2025-11-04T13:40:09.804Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/d3/43/ebef01f69baa07a482844faaa0a591bad1ef129253ffd0cdaa9d8a7f72d3/pydantic_core-2.41.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d38548150c39b74aeeb0ce8ee1d8e82696f4a4e16ddc6de7b1d8823f7de4b9b5", size = 2171698, upload-time = "2025-11-04T13:40:12.004Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/b1/87/41f3202e4193e3bacfc2c065fab7706ebe81af46a83d3e27605029c1f5a6/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c23e27686783f60290e36827f9c626e63154b82b116d7fe9adba1fda36da706c", size = 2132603, upload-time = "2025-11-04T13:40:13.868Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/49/7d/4c00df99cb12070b6bccdef4a195255e6020a550d572768d92cc54dba91a/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:482c982f814460eabe1d3bb0adfdc583387bd4691ef00b90575ca0d2b6fe2294", size = 2329591, upload-time = "2025-11-04T13:40:15.672Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/cc/6a/ebf4b1d65d458f3cda6a7335d141305dfa19bdc61140a884d165a8a1bbc7/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:bfea2a5f0b4d8d43adf9d7b8bf019fb46fdd10a2e5cde477fbcb9d1fa08c68e1", size = 2319068, upload-time = "2025-11-04T13:40:17.532Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/49/3b/774f2b5cd4192d5ab75870ce4381fd89cf218af999515baf07e7206753f0/pydantic_core-2.41.5-cp312-cp312-win32.whl", hash = "sha256:b74557b16e390ec12dca509bce9264c3bbd128f8a2c376eaa68003d7f327276d", size = 1985908, upload-time = "2025-11-04T13:40:19.309Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/86/45/00173a033c801cacf67c190fef088789394feaf88a98a7035b0e40d53dc9/pydantic_core-2.41.5-cp312-cp312-win_amd64.whl", hash = "sha256:1962293292865bca8e54702b08a4f26da73adc83dd1fcf26fbc875b35d81c815", size = 2020145, upload-time = "2025-11-04T13:40:21.548Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f9/22/91fbc821fa6d261b376a3f73809f907cec5ca6025642c463d3488aad22fb/pydantic_core-2.41.5-cp312-cp312-win_arm64.whl", hash = "sha256:1746d4a3d9a794cacae06a5eaaccb4b8643a131d45fbc9af23e353dc0a5ba5c3", size = 1976179, upload-time = "2025-11-04T13:40:23.393Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/87/06/8806241ff1f70d9939f9af039c6c35f2360cf16e93c2ca76f184e76b1564/pydantic_core-2.41.5-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:941103c9be18ac8daf7b7adca8228f8ed6bb7a1849020f643b3a14d15b1924d9", size = 2120403, upload-time = "2025-11-04T13:40:25.248Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/94/02/abfa0e0bda67faa65fef1c84971c7e45928e108fe24333c81f3bfe35d5f5/pydantic_core-2.41.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:112e305c3314f40c93998e567879e887a3160bb8689ef3d2c04b6cc62c33ac34", size = 1896206, upload-time = "2025-11-04T13:40:27.099Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/15/df/a4c740c0943e93e6500f9eb23f4ca7ec9bf71b19e608ae5b579678c8d02f/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cbaad15cb0c90aa221d43c00e77bb33c93e8d36e0bf74760cd00e732d10a6a0", size = 1919307, upload-time = "2025-11-04T13:40:29.806Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/9a/e3/6324802931ae1d123528988e0e86587c2072ac2e5394b4bc2bc34b61ff6e/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:03ca43e12fab6023fc79d28ca6b39b05f794ad08ec2feccc59a339b02f2b3d33", size = 2063258, upload-time = "2025-11-04T13:40:33.544Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/c9/d4/2230d7151d4957dd79c3044ea26346c148c98fbf0ee6ebd41056f2d62ab5/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc799088c08fa04e43144b164feb0c13f9a0bc40503f8df3e9fde58a3c0c101e", size = 2214917, upload-time = "2025-11-04T13:40:35.479Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/e6/9f/eaac5df17a3672fef0081b6c1bb0b82b33ee89aa5cec0d7b05f52fd4a1fa/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:97aeba56665b4c3235a0e52b2c2f5ae9cd071b8a8310ad27bddb3f7fb30e9aa2", size = 2332186, upload-time = "2025-11-04T13:40:37.436Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/cf/4e/35a80cae583a37cf15604b44240e45c05e04e86f9cfd766623149297e971/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:406bf18d345822d6c21366031003612b9c77b3e29ffdb0f612367352aab7d586", size = 2073164, upload-time = "2025-11-04T13:40:40.289Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/bf/e3/f6e262673c6140dd3305d144d032f7bd5f7497d3871c1428521f19f9efa2/pydantic_core-2.41.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b93590ae81f7010dbe380cdeab6f515902ebcbefe0b9327cc4804d74e93ae69d", size = 2179146, upload-time = "2025-11-04T13:40:42.809Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/75/c7/20bd7fc05f0c6ea2056a4565c6f36f8968c0924f19b7d97bbfea55780e73/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:01a3d0ab748ee531f4ea6c3e48ad9dac84ddba4b0d82291f87248f2f9de8d740", size = 2137788, upload-time = "2025-11-04T13:40:44.752Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/3a/8d/34318ef985c45196e004bc46c6eab2eda437e744c124ef0dbe1ff2c9d06b/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:6561e94ba9dacc9c61bce40e2d6bdc3bfaa0259d3ff36ace3b1e6901936d2e3e", size = 2340133, upload-time = "2025-11-04T13:40:46.66Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/9c/59/013626bf8c78a5a5d9350d12e7697d3d4de951a75565496abd40ccd46bee/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:915c3d10f81bec3a74fbd4faebe8391013ba61e5a1a8d48c4455b923bdda7858", size = 2324852, upload-time = "2025-11-04T13:40:48.575Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/1a/d9/c248c103856f807ef70c18a4f986693a46a8ffe1602e5d361485da502d20/pydantic_core-2.41.5-cp313-cp313-win32.whl", hash = "sha256:650ae77860b45cfa6e2cdafc42618ceafab3a2d9a3811fcfbd3bbf8ac3c40d36", size = 1994679, upload-time = "2025-11-04T13:40:50.619Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/9e/8b/341991b158ddab181cff136acd2552c9f35bd30380422a639c0671e99a91/pydantic_core-2.41.5-cp313-cp313-win_amd64.whl", hash = "sha256:79ec52ec461e99e13791ec6508c722742ad745571f234ea6255bed38c6480f11", size = 2019766, upload-time = "2025-11-04T13:40:52.631Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/73/7d/f2f9db34af103bea3e09735bb40b021788a5e834c81eedb541991badf8f5/pydantic_core-2.41.5-cp313-cp313-win_arm64.whl", hash = "sha256:3f84d5c1b4ab906093bdc1ff10484838aca54ef08de4afa9de0f5f14d69639cd", size = 1981005, upload-time = "2025-11-04T13:40:54.734Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/ea/28/46b7c5c9635ae96ea0fbb779e271a38129df2550f763937659ee6c5dbc65/pydantic_core-2.41.5-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:3f37a19d7ebcdd20b96485056ba9e8b304e27d9904d233d7b1015db320e51f0a", size = 2119622, upload-time = "2025-11-04T13:40:56.68Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/74/1a/145646e5687e8d9a1e8d09acb278c8535ebe9e972e1f162ed338a622f193/pydantic_core-2.41.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1d1d9764366c73f996edd17abb6d9d7649a7eb690006ab6adbda117717099b14", size = 1891725, upload-time = "2025-11-04T13:40:58.807Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/23/04/e89c29e267b8060b40dca97bfc64a19b2a3cf99018167ea1677d96368273/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25e1c2af0fce638d5f1988b686f3b3ea8cd7de5f244ca147c777769e798a9cd1", size = 1915040, upload-time = "2025-11-04T13:41:00.853Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/84/a3/15a82ac7bd97992a82257f777b3583d3e84bdb06ba6858f745daa2ec8a85/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:506d766a8727beef16b7adaeb8ee6217c64fc813646b424d0804d67c16eddb66", size = 2063691, upload-time = "2025-11-04T13:41:03.504Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/74/9b/0046701313c6ef08c0c1cf0e028c67c770a4e1275ca73131563c5f2a310a/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4819fa52133c9aa3c387b3328f25c1facc356491e6135b459f1de698ff64d869", size = 2213897, upload-time = "2025-11-04T13:41:05.804Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/8a/cd/6bac76ecd1b27e75a95ca3a9a559c643b3afcd2dd62086d4b7a32a18b169/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2b761d210c9ea91feda40d25b4efe82a1707da2ef62901466a42492c028553a2", size = 2333302, upload-time = "2025-11-04T13:41:07.809Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/4c/d2/ef2074dc020dd6e109611a8be4449b98cd25e1b9b8a303c2f0fca2f2bcf7/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22f0fb8c1c583a3b6f24df2470833b40207e907b90c928cc8d3594b76f874375", size = 2064877, upload-time = "2025-11-04T13:41:09.827Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/18/66/e9db17a9a763d72f03de903883c057b2592c09509ccfe468187f2a2eef29/pydantic_core-2.41.5-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2782c870e99878c634505236d81e5443092fba820f0373997ff75f90f68cd553", size = 2180680, upload-time = "2025-11-04T13:41:12.379Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/d3/9e/3ce66cebb929f3ced22be85d4c2399b8e85b622db77dad36b73c5387f8f8/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:0177272f88ab8312479336e1d777f6b124537d47f2123f89cb37e0accea97f90", size = 2138960, upload-time = "2025-11-04T13:41:14.627Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/a6/62/205a998f4327d2079326b01abee48e502ea739d174f0a89295c481a2272e/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:63510af5e38f8955b8ee5687740d6ebf7c2a0886d15a6d65c32814613681bc07", size = 2339102, upload-time = "2025-11-04T13:41:16.868Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/3c/0d/f05e79471e889d74d3d88f5bd20d0ed189ad94c2423d81ff8d0000aab4ff/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:e56ba91f47764cc14f1daacd723e3e82d1a89d783f0f5afe9c364b8bb491ccdb", size = 2326039, upload-time = "2025-11-04T13:41:18.934Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/ec/e1/e08a6208bb100da7e0c4b288eed624a703f4d129bde2da475721a80cab32/pydantic_core-2.41.5-cp314-cp314-win32.whl", hash = "sha256:aec5cf2fd867b4ff45b9959f8b20ea3993fc93e63c7363fe6851424c8a7e7c23", size = 1995126, upload-time = "2025-11-04T13:41:21.418Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/48/5d/56ba7b24e9557f99c9237e29f5c09913c81eeb2f3217e40e922353668092/pydantic_core-2.41.5-cp314-cp314-win_amd64.whl", hash = "sha256:8e7c86f27c585ef37c35e56a96363ab8de4e549a95512445b85c96d3e2f7c1bf", size = 2015489, upload-time = "2025-11-04T13:41:24.076Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/4e/bb/f7a190991ec9e3e0ba22e4993d8755bbc4a32925c0b5b42775c03e8148f9/pydantic_core-2.41.5-cp314-cp314-win_arm64.whl", hash = "sha256:e672ba74fbc2dc8eea59fb6d4aed6845e6905fc2a8afe93175d94a83ba2a01a0", size = 1977288, upload-time = "2025-11-04T13:41:26.33Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/92/ed/77542d0c51538e32e15afe7899d79efce4b81eee631d99850edc2f5e9349/pydantic_core-2.41.5-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:8566def80554c3faa0e65ac30ab0932b9e3a5cd7f8323764303d468e5c37595a", size = 2120255, upload-time = "2025-11-04T13:41:28.569Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/bb/3d/6913dde84d5be21e284439676168b28d8bbba5600d838b9dca99de0fad71/pydantic_core-2.41.5-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:b80aa5095cd3109962a298ce14110ae16b8c1aece8b72f9dafe81cf597ad80b3", size = 1863760, upload-time = "2025-11-04T13:41:31.055Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/5a/f0/e5e6b99d4191da102f2b0eb9687aaa7f5bea5d9964071a84effc3e40f997/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3006c3dd9ba34b0c094c544c6006cc79e87d8612999f1a5d43b769b89181f23c", size = 1878092, upload-time = "2025-11-04T13:41:33.21Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/71/48/36fb760642d568925953bcc8116455513d6e34c4beaa37544118c36aba6d/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72f6c8b11857a856bcfa48c86f5368439f74453563f951e473514579d44aa612", size = 2053385, upload-time = "2025-11-04T13:41:35.508Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/20/25/92dc684dd8eb75a234bc1c764b4210cf2646479d54b47bf46061657292a8/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5cb1b2f9742240e4bb26b652a5aeb840aa4b417c7748b6f8387927bc6e45e40d", size = 2218832, upload-time = "2025-11-04T13:41:37.732Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/e2/09/f53e0b05023d3e30357d82eb35835d0f6340ca344720a4599cd663dca599/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bd3d54f38609ff308209bd43acea66061494157703364ae40c951f83ba99a1a9", size = 2327585, upload-time = "2025-11-04T13:41:40Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/aa/4e/2ae1aa85d6af35a39b236b1b1641de73f5a6ac4d5a7509f77b814885760c/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ff4321e56e879ee8d2a879501c8e469414d948f4aba74a2d4593184eb326660", size = 2041078, upload-time = "2025-11-04T13:41:42.323Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/cd/13/2e215f17f0ef326fc72afe94776edb77525142c693767fc347ed6288728d/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d0d2568a8c11bf8225044aa94409e21da0cb09dcdafe9ecd10250b2baad531a9", size = 2173914, upload-time = "2025-11-04T13:41:45.221Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/02/7a/f999a6dcbcd0e5660bc348a3991c8915ce6599f4f2c6ac22f01d7a10816c/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:a39455728aabd58ceabb03c90e12f71fd30fa69615760a075b9fec596456ccc3", size = 2129560, upload-time = "2025-11-04T13:41:47.474Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/3a/b1/6c990ac65e3b4c079a4fb9f5b05f5b013afa0f4ed6780a3dd236d2cbdc64/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:239edca560d05757817c13dc17c50766136d21f7cd0fac50295499ae24f90fdf", size = 2329244, upload-time = "2025-11-04T13:41:49.992Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/d9/02/3c562f3a51afd4d88fff8dffb1771b30cfdfd79befd9883ee094f5b6c0d8/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:2a5e06546e19f24c6a96a129142a75cee553cc018ffee48a460059b1185f4470", size = 2331955, upload-time = "2025-11-04T13:41:54.079Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/5c/96/5fb7d8c3c17bc8c62fdb031c47d77a1af698f1d7a406b0f79aaa1338f9ad/pydantic_core-2.41.5-cp314-cp314t-win32.whl", hash = "sha256:b4ececa40ac28afa90871c2cc2b9ffd2ff0bf749380fbdf57d165fd23da353aa", size = 1988906, upload-time = "2025-11-04T13:41:56.606Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/22/ed/182129d83032702912c2e2d8bbe33c036f342cc735737064668585dac28f/pydantic_core-2.41.5-cp314-cp314t-win_amd64.whl", hash = "sha256:80aa89cad80b32a912a65332f64a4450ed00966111b6615ca6816153d3585a8c", size = 1981607, upload-time = "2025-11-04T13:41:58.889Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/9f/ed/068e41660b832bb0b1aa5b58011dea2a3fe0ba7861ff38c4d4904c1c1a99/pydantic_core-2.41.5-cp314-cp314t-win_arm64.whl", hash = "sha256:35b44f37a3199f771c3eaa53051bc8a70cd7b54f333531c59e29fd4db5d15008", size = 1974769, upload-time = "2025-11-04T13:42:01.186Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/54/db/160dffb57ed9a3705c4cbcbff0ac03bdae45f1ca7d58ab74645550df3fbd/pydantic_core-2.41.5-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:8bfeaf8735be79f225f3fefab7f941c712aaca36f1128c9d7e2352ee1aa87bdf", size = 2107999, upload-time = "2025-11-04T13:42:03.885Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/a3/7d/88e7de946f60d9263cc84819f32513520b85c0f8322f9b8f6e4afc938383/pydantic_core-2.41.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:346285d28e4c8017da95144c7f3acd42740d637ff41946af5ce6e5e420502dd5", size = 1929745, upload-time = "2025-11-04T13:42:06.075Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/d5/c2/aef51e5b283780e85e99ff19db0f05842d2d4a8a8cd15e63b0280029b08f/pydantic_core-2.41.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a75dafbf87d6276ddc5b2bf6fae5254e3d0876b626eb24969a574fff9149ee5d", size = 1920220, upload-time = "2025-11-04T13:42:08.457Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/c7/97/492ab10f9ac8695cd76b2fdb24e9e61f394051df71594e9bcc891c9f586e/pydantic_core-2.41.5-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7b93a4d08587e2b7e7882de461e82b6ed76d9026ce91ca7915e740ecc7855f60", size = 2067296, upload-time = "2025-11-04T13:42:10.817Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/ec/23/984149650e5269c59a2a4c41d234a9570adc68ab29981825cfaf4cfad8f4/pydantic_core-2.41.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e8465ab91a4bd96d36dde3263f06caa6a8a6019e4113f24dc753d79a8b3a3f82", size = 2231548, upload-time = "2025-11-04T13:42:13.843Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/71/0c/85bcbb885b9732c28bec67a222dbed5ed2d77baee1f8bba2002e8cd00c5c/pydantic_core-2.41.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:299e0a22e7ae2b85c1a57f104538b2656e8ab1873511fd718a1c1c6f149b77b5", size = 2362571, upload-time = "2025-11-04T13:42:16.208Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/c0/4a/412d2048be12c334003e9b823a3fa3d038e46cc2d64dd8aab50b31b65499/pydantic_core-2.41.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:707625ef0983fcfb461acfaf14de2067c5942c6bb0f3b4c99158bed6fedd3cf3", size = 2068175, upload-time = "2025-11-04T13:42:18.911Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/73/f4/c58b6a776b502d0a5540ad02e232514285513572060f0d78f7832ca3c98b/pydantic_core-2.41.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f41eb9797986d6ebac5e8edff36d5cef9de40def462311b3eb3eeded1431e425", size = 2177203, upload-time = "2025-11-04T13:42:22.578Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/ed/ae/f06ea4c7e7a9eead3d165e7623cd2ea0cb788e277e4f935af63fc98fa4e6/pydantic_core-2.41.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0384e2e1021894b1ff5a786dbf94771e2986ebe2869533874d7e43bc79c6f504", size = 2148191, upload-time = "2025-11-04T13:42:24.89Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/c1/57/25a11dcdc656bf5f8b05902c3c2934ac3ea296257cc4a3f79a6319e61856/pydantic_core-2.41.5-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:f0cd744688278965817fd0839c4a4116add48d23890d468bc436f78beb28abf5", size = 2343907, upload-time = "2025-11-04T13:42:27.683Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/96/82/e33d5f4933d7a03327c0c43c65d575e5919d4974ffc026bc917a5f7b9f61/pydantic_core-2.41.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:753e230374206729bf0a807954bcc6c150d3743928a73faffee51ac6557a03c3", size = 2322174, upload-time = "2025-11-04T13:42:30.776Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/81/45/4091be67ce9f469e81656f880f3506f6a5624121ec5eb3eab37d7581897d/pydantic_core-2.41.5-cp39-cp39-win32.whl", hash = "sha256:873e0d5b4fb9b89ef7c2d2a963ea7d02879d9da0da8d9d4933dee8ee86a8b460", size = 1990353, upload-time = "2025-11-04T13:42:33.111Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/44/8a/a98aede18db6e9cd5d66bcacd8a409fcf8134204cdede2e7de35c5a2c5ef/pydantic_core-2.41.5-cp39-cp39-win_amd64.whl", hash = "sha256:e4f4a984405e91527a0d62649ee21138f8e3d0ef103be488c1dc11a80d7f184b", size = 2015698, upload-time = "2025-11-04T13:42:35.484Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/11/72/90fda5ee3b97e51c494938a4a44c3a35a9c96c19bba12372fb9c634d6f57/pydantic_core-2.41.5-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:b96d5f26b05d03cc60f11a7761a5ded1741da411e7fe0909e27a5e6a0cb7b034", size = 2115441, upload-time = "2025-11-04T13:42:39.557Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/1f/53/8942f884fa33f50794f119012dc6a1a02ac43a56407adaac20463df8e98f/pydantic_core-2.41.5-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:634e8609e89ceecea15e2d61bc9ac3718caaaa71963717bf3c8f38bfde64242c", size = 1930291, upload-time = "2025-11-04T13:42:42.169Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/79/c8/ecb9ed9cd942bce09fc888ee960b52654fbdbede4ba6c2d6e0d3b1d8b49c/pydantic_core-2.41.5-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:93e8740d7503eb008aa2df04d3b9735f845d43ae845e6dcd2be0b55a2da43cd2", size = 1948632, upload-time = "2025-11-04T13:42:44.564Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/2e/1b/687711069de7efa6af934e74f601e2a4307365e8fdc404703afc453eab26/pydantic_core-2.41.5-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f15489ba13d61f670dcc96772e733aad1a6f9c429cc27574c6cdaed82d0146ad", size = 2138905, upload-time = "2025-11-04T13:42:47.156Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/09/32/59b0c7e63e277fa7911c2fc70ccfb45ce4b98991e7ef37110663437005af/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:7da7087d756b19037bc2c06edc6c170eeef3c3bafcb8f532ff17d64dc427adfd", size = 2110495, upload-time = "2025-11-04T13:42:49.689Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/aa/81/05e400037eaf55ad400bcd318c05bb345b57e708887f07ddb2d20e3f0e98/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:aabf5777b5c8ca26f7824cb4a120a740c9588ed58df9b2d196ce92fba42ff8dc", size = 1915388, upload-time = "2025-11-04T13:42:52.215Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/6e/0d/e3549b2399f71d56476b77dbf3cf8937cec5cd70536bdc0e374a421d0599/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c007fe8a43d43b3969e8469004e9845944f1a80e6acd47c150856bb87f230c56", size = 1942879, upload-time = "2025-11-04T13:42:56.483Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f7/07/34573da085946b6a313d7c42f82f16e8920bfd730665de2d11c0c37a74b5/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76d0819de158cd855d1cbb8fcafdf6f5cf1eb8e470abe056d5d161106e38062b", size = 2139017, upload-time = "2025-11-04T13:42:59.471Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/e6/b0/1a2aa41e3b5a4ba11420aba2d091b2d17959c8d1519ece3627c371951e73/pydantic_core-2.41.5-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b5819cd790dbf0c5eb9f82c73c16b39a65dd6dd4d1439dcdea7816ec9adddab8", size = 2103351, upload-time = "2025-11-04T13:43:02.058Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/a4/ee/31b1f0020baaf6d091c87900ae05c6aeae101fa4e188e1613c80e4f1ea31/pydantic_core-2.41.5-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:5a4e67afbc95fa5c34cf27d9089bca7fcab4e51e57278d710320a70b956d1b9a", size = 1925363, upload-time = "2025-11-04T13:43:05.159Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/e1/89/ab8e86208467e467a80deaca4e434adac37b10a9d134cd2f99b28a01e483/pydantic_core-2.41.5-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ece5c59f0ce7d001e017643d8d24da587ea1f74f6993467d85ae8a5ef9d4f42b", size = 2135615, upload-time = "2025-11-04T13:43:08.116Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/99/0a/99a53d06dd0348b2008f2f30884b34719c323f16c3be4e6cc1203b74a91d/pydantic_core-2.41.5-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:16f80f7abe3351f8ea6858914ddc8c77e02578544a0ebc15b4c2e1a0e813b0b2", size = 2175369, upload-time = "2025-11-04T13:43:12.49Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/6d/94/30ca3b73c6d485b9bb0bc66e611cff4a7138ff9736b7e66bcf0852151636/pydantic_core-2.41.5-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:33cb885e759a705b426baada1fe68cbb0a2e68e34c5d0d0289a364cf01709093", size = 2144218, upload-time = "2025-11-04T13:43:15.431Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/87/57/31b4f8e12680b739a91f472b5671294236b82586889ef764b5fbc6669238/pydantic_core-2.41.5-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:c8d8b4eb992936023be7dee581270af5c6e0697a8559895f527f5b7105ecd36a", size = 2329951, upload-time = "2025-11-04T13:43:18.062Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/7d/73/3c2c8edef77b8f7310e6fb012dbc4b8551386ed575b9eb6fb2506e28a7eb/pydantic_core-2.41.5-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:242a206cd0318f95cd21bdacff3fcc3aab23e79bba5cac3db5a841c9ef9c6963", size = 2318428, upload-time = "2025-11-04T13:43:20.679Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/2f/02/8559b1f26ee0d502c74f9cca5c0d2fd97e967e083e006bbbb4e97f3a043a/pydantic_core-2.41.5-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d3a978c4f57a597908b7e697229d996d77a6d3c94901e9edee593adada95ce1a", size = 2147009, upload-time = "2025-11-04T13:43:23.286Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/5f/9b/1b3f0e9f9305839d7e84912f9e8bfbd191ed1b1ef48083609f0dabde978c/pydantic_core-2.41.5-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b2379fa7ed44ddecb5bfe4e48577d752db9fc10be00a6b7446e9663ba143de26", size = 2101980, upload-time = "2025-11-04T13:43:25.97Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/a4/ed/d71fefcb4263df0da6a85b5d8a7508360f2f2e9b3bf5814be9c8bccdccc1/pydantic_core-2.41.5-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:266fb4cbf5e3cbd0b53669a6d1b039c45e3ce651fd5442eff4d07c2cc8d66808", size = 1923865, upload-time = "2025-11-04T13:43:28.763Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/ce/3a/626b38db460d675f873e4444b4bb030453bbe7b4ba55df821d026a0493c4/pydantic_core-2.41.5-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58133647260ea01e4d0500089a8c4f07bd7aa6ce109682b1426394988d8aaacc", size = 2134256, upload-time = "2025-11-04T13:43:31.71Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/83/d9/8412d7f06f616bbc053d30cb4e5f76786af3221462ad5eee1f202021eb4e/pydantic_core-2.41.5-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:287dad91cfb551c363dc62899a80e9e14da1f0e2b6ebde82c806612ca2a13ef1", size = 2174762, upload-time = "2025-11-04T13:43:34.744Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/55/4c/162d906b8e3ba3a99354e20faa1b49a85206c47de97a639510a0e673f5da/pydantic_core-2.41.5-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:03b77d184b9eb40240ae9fd676ca364ce1085f203e1b1256f8ab9984dca80a84", size = 2143141, upload-time = "2025-11-04T13:43:37.701Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/1f/f2/f11dd73284122713f5f89fc940f370d035fa8e1e078d446b3313955157fe/pydantic_core-2.41.5-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:a668ce24de96165bb239160b3d854943128f4334822900534f2fe947930e5770", size = 2330317, upload-time = "2025-11-04T13:43:40.406Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/88/9d/b06ca6acfe4abb296110fb1273a4d848a0bfb2ff65f3ee92127b3244e16b/pydantic_core-2.41.5-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f14f8f046c14563f8eb3f45f499cc658ab8d10072961e07225e507adb700e93f", size = 2316992, upload-time = "2025-11-04T13:43:43.602Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/36/c7/cfc8e811f061c841d7990b0201912c3556bfeb99cdcb7ed24adc8d6f8704/pydantic_core-2.41.5-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:56121965f7a4dc965bff783d70b907ddf3d57f6eba29b6d2e5dabfaf07799c51", size = 2145302, upload-time = "2025-11-04T13:43:46.64Z" }, +] + +[[package]] +name = "pyinstaller" +version = "6.19.0" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +dependencies = [ + { name = "altgraph" }, + { name = "importlib-metadata", version = "8.5.0", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version < '3.9'" }, + { name = "importlib-metadata", version = "8.7.1", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version == '3.9.*'" }, + { name = "macholib", marker = "sys_platform == 'darwin'" }, + { name = "packaging" }, + { name = "pefile", marker = "sys_platform == 'win32'" }, + { name = "pyinstaller-hooks-contrib" }, + { name = "pywin32-ctypes", marker = "sys_platform == 'win32'" }, + { name = "setuptools", version = "75.3.4", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version < '3.9'" }, + { name = "setuptools", version = "82.0.0", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version >= '3.9'" }, +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/c8/63/fd62472b6371d89dc138d40c36d87a50dc2de18a035803bbdc376b4ffac4/pyinstaller-6.19.0.tar.gz", hash = "sha256:ec73aeb8bd9b7f2f1240d328a4542e90b3c6e6fbc106014778431c616592a865", size = 4036072, upload-time = "2026-02-14T18:06:28.718Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/e3/eb/23374721fecfa72677e79800921cb6aceefa6ba48574dc404f3f6c6c3be7/pyinstaller-6.19.0-py3-none-macosx_10_13_universal2.whl", hash = "sha256:4190e76b74f0c4b5c5f11ac360928cd2e36ec8e3194d437bf6b8648c7bc0c134", size = 1040563, upload-time = "2026-02-14T18:05:22.436Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/cd/7e/dfd724b0b533f5aaec0ee5df406fe2319987ed6964480a706f85478b12ea/pyinstaller-6.19.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:8bd68abd812d8a6ba33b9f1810e91fee0f325969733721b78151f0065319ca11", size = 735477, upload-time = "2026-02-14T18:05:27.143Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/88/c9/ee3a4101c31f26344e66896c73c1fd6ed8282bf871473365b7f8674af406/pyinstaller-6.19.0-py3-none-manylinux2014_i686.whl", hash = "sha256:1ec54ef967996ca61dacba676227e2b23219878ccce5ee9d6f3aada7b8ed8abf", size = 747143, upload-time = "2026-02-14T18:05:31.488Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/da/0a/fc77e9f861be8cf300ac37155f59cc92aff99b29f2ddd78546f563a5b5a6/pyinstaller-6.19.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:4ab2bb52e58448e14ddf9450601bdedd66800465043501c1d8f1cab87b60b122", size = 744849, upload-time = "2026-02-14T18:05:35.492Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/6d/e3/6872e020ee758afe0b821663858492c10745608b07150e5e2c824a5b3e1c/pyinstaller-6.19.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:da6d5c6391ccefe73554b9fa29b86001c8e378e0f20c2a4004f836ba537eff63", size = 741590, upload-time = "2026-02-14T18:05:39.59Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/53/60/b8db5f1a4b0fb228175f2ea0aa33f949adcc097fbe981cc524f9faf85777/pyinstaller-6.19.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:a0fc5f6b3c55aa54353f0c74ffa59b1115433c1850c6f655d62b461a2ed6cbbe", size = 741448, upload-time = "2026-02-14T18:05:45.636Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/6f/4d/63b0600f2694e9141b83129fbc1c488ec84d5a0770b1448ec154dcd0fee9/pyinstaller-6.19.0-py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:e649ba6bd1b0b89b210ad92adb5fbdc8a42dd2c5ca4f72ef3a0bfec83a424b83", size = 740613, upload-time = "2026-02-14T18:05:49.726Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/01/d4/e812ad36178093a0e9fd4b8127577748dd85b0cb71de912229dca21fd741/pyinstaller-6.19.0-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:481a909c8e60c8692fc60fcb1344d984b44b943f8bc9682f2fcdae305ad297e6", size = 740350, upload-time = "2026-02-14T18:05:54.093Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/52/03/b2c2ee41fb8e10fd2a45d21f5ec2ef25852cfb978dbf762972eed59e3d63/pyinstaller-6.19.0-py3-none-win32.whl", hash = "sha256:3c5c251054fe4cfaa04c34a363dcfbf811545438cb7198304cd444756bc2edd2", size = 1324317, upload-time = "2026-02-14T18:06:00.085Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/9c/d3/6d5e62b8270e2b53a6065e281b3a7785079b00e9019c8019952828dd1669/pyinstaller-6.19.0-py3-none-win_amd64.whl", hash = "sha256:b5bb6536c6560330d364d91522250f254b107cf69129d9cbcd0e6727c570be33", size = 1384894, upload-time = "2026-02-14T18:06:06.425Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/81/65/458cd523308a101a22fd2742893405030cc24994cc74b1b767cecf137160/pyinstaller-6.19.0-py3-none-win_arm64.whl", hash = "sha256:c2d5a539b0bfe6159d5522c8c70e1c0e487f22c2badae0f97d45246223b798ea", size = 1325374, upload-time = "2026-02-14T18:06:12.804Z" }, +] + +[[package]] +name = "pyinstaller-hooks-contrib" +version = "2026.2" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +dependencies = [ + { name = "importlib-metadata", version = "8.5.0", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version < '3.9'" }, + { name = "importlib-metadata", version = "8.7.1", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version == '3.9.*'" }, + { name = "packaging" }, + { name = "setuptools", version = "75.3.4", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version < '3.9'" }, + { name = "setuptools", version = "82.0.0", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version >= '3.9'" }, +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/6b/90/f3b30d72b89ab5b8f3ef714db94d09c7c263cce6562b4c7c636d99630695/pyinstaller_hooks_contrib-2026.2.tar.gz", hash = "sha256:cbd1eb00b5d13301b1cce602e1fffb17f0c531c0391f0a87a383d376be68a186", size = 171884, upload-time = "2026-03-02T23:07:01.221Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/34/3b/1efef5ff4d4d150f646b873e963437c0b800cb375a37df01fefab149f4d9/pyinstaller_hooks_contrib-2026.2-py3-none-any.whl", hash = "sha256:fc29f0481b58adf78ce9c1d9cf135fe96f38c708f74b2aa0670ef93e59578ab9", size = 453939, upload-time = "2026-03-02T23:06:59.469Z" }, +] + +[[package]] +name = "pyjwt" +version = "2.9.0" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +resolution-markers = [ + "python_full_version < '3.9'", +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/fb/68/ce067f09fca4abeca8771fe667d89cc347d1e99da3e093112ac329c6020e/pyjwt-2.9.0.tar.gz", hash = "sha256:7e1e5b56cc735432a7369cbfa0efe50fa113ebecdc04ae6922deba8b84582d0c", size = 78825, upload-time = "2024-08-01T15:01:08.445Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/79/84/0fdf9b18ba31d69877bd39c9cd6052b47f3761e9910c15de788e519f079f/PyJWT-2.9.0-py3-none-any.whl", hash = "sha256:3b02fb0f44517787776cf48f2ae25d8e14f300e6d7545a4315cee571a415e850", size = 22344, upload-time = "2024-08-01T15:01:06.481Z" }, +] + +[[package]] +name = "pyjwt" +version = "2.11.0" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +resolution-markers = [ + "python_full_version >= '3.10'", + "python_full_version == '3.9.*'", +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/5c/5a/b46fa56bf322901eee5b0454a34343cdbdae202cd421775a8ee4e42fd519/pyjwt-2.11.0.tar.gz", hash = "sha256:35f95c1f0fbe5d5ba6e43f00271c275f7a1a4db1dab27bf708073b75318ea623", size = 98019, upload-time = "2026-01-30T19:59:55.694Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/6f/01/c26ce75ba460d5cd503da9e13b21a33804d38c2165dec7b716d06b13010c/pyjwt-2.11.0-py3-none-any.whl", hash = "sha256:94a6bde30eb5c8e04fee991062b534071fd1439ef58d2adc9ccb823e7bcd0469", size = 28224, upload-time = "2026-01-30T19:59:54.539Z" }, +] + +[[package]] +name = "pywin32-ctypes" +version = "0.2.3" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/85/9f/01a1a99704853cb63f253eea009390c88e7131c67e66a0a02099a8c917cb/pywin32-ctypes-0.2.3.tar.gz", hash = "sha256:d162dc04946d704503b2edc4d55f3dba5c1d539ead017afa00142c38b9885755", size = 29471, upload-time = "2024-08-14T10:15:34.626Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/de/3d/8161f7711c017e01ac9f008dfddd9410dff3674334c233bde66e7ba65bbf/pywin32_ctypes-0.2.3-py3-none-any.whl", hash = "sha256:8a1513379d709975552d202d942d9837758905c8d01eb82b8bcc30918929e7b8", size = 30756, upload-time = "2024-08-14T10:15:33.187Z" }, +] + +[[package]] +name = "setuptools" +version = "75.3.4" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +resolution-markers = [ + "python_full_version < '3.9'", +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/0e/93/d2622cbf262418995140dfc1ddb890badd6322893fa122302577c82b9617/setuptools-75.3.4.tar.gz", hash = "sha256:b4ea3f76e1633c4d2d422a5d68ab35fd35402ad71e6acaa5d7e5956eb47e8887", size = 1354595, upload-time = "2026-02-08T14:12:34.287Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/cd/b1/961ba076c7d3732e3a97e6681c55ef647afb795fe8bfcd27becec8a762ce/setuptools-75.3.4-py3-none-any.whl", hash = "sha256:2dd50a7f42dddfa1d02a36f275dbe716f38ed250224f609d35fb60a09593d93e", size = 1251633, upload-time = "2026-02-08T14:12:32.364Z" }, +] + +[[package]] +name = "setuptools" +version = "82.0.0" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +resolution-markers = [ + "python_full_version >= '3.10'", + "python_full_version == '3.9.*'", +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/82/f3/748f4d6f65d1756b9ae577f329c951cda23fb900e4de9f70900ced962085/setuptools-82.0.0.tar.gz", hash = "sha256:22e0a2d69474c6ae4feb01951cb69d515ed23728cf96d05513d36e42b62b37cb", size = 1144893, upload-time = "2026-02-08T15:08:40.206Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/e1/c6/76dc613121b793286a3f91621d7b75a2b493e0390ddca50f11993eadf192/setuptools-82.0.0-py3-none-any.whl", hash = "sha256:70b18734b607bd1da571d097d236cfcfacaf01de45717d59e6e04b96877532e0", size = 1003468, upload-time = "2026-02-08T15:08:38.723Z" }, +] + +[[package]] +name = "sniffio" +version = "1.3.1" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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 = "sqlalchemy" +version = "2.0.48" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +dependencies = [ + { name = "greenlet", version = "3.1.1", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "(python_full_version < '3.9' and platform_machine == 'AMD64') or (python_full_version < '3.9' and platform_machine == 'WIN32') or (python_full_version < '3.9' and platform_machine == 'aarch64') or (python_full_version < '3.9' and platform_machine == 'amd64') or (python_full_version < '3.9' and platform_machine == 'ppc64le') or (python_full_version < '3.9' and platform_machine == 'win32') or (python_full_version < '3.9' and platform_machine == 'x86_64')" }, + { name = "greenlet", version = "3.2.5", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "(python_full_version == '3.9.*' and platform_machine == 'AMD64') or (python_full_version == '3.9.*' and platform_machine == 'WIN32') or (python_full_version == '3.9.*' and platform_machine == 'aarch64') or (python_full_version == '3.9.*' and platform_machine == 'amd64') or (python_full_version == '3.9.*' and platform_machine == 'ppc64le') or (python_full_version == '3.9.*' and platform_machine == 'win32') or (python_full_version == '3.9.*' and platform_machine == 'x86_64')" }, + { name = "greenlet", version = "3.3.2", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "(python_full_version >= '3.10' and platform_machine == 'AMD64') or (python_full_version >= '3.10' and platform_machine == 'WIN32') or (python_full_version >= '3.10' and platform_machine == 'aarch64') or (python_full_version >= '3.10' and platform_machine == 'amd64') or (python_full_version >= '3.10' and platform_machine == 'ppc64le') or (python_full_version >= '3.10' and platform_machine == 'win32') or (python_full_version >= '3.10' and platform_machine == 'x86_64')" }, + { name = "typing-extensions", version = "4.13.2", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version < '3.9'" }, + { name = "typing-extensions", version = "4.15.0", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version >= '3.9'" }, +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/1f/73/b4a9737255583b5fa858e0bb8e116eb94b88c910164ed2ed719147bde3de/sqlalchemy-2.0.48.tar.gz", hash = "sha256:5ca74f37f3369b45e1f6b7b06afb182af1fd5dde009e4ffd831830d98cbe5fe7", size = 9886075, upload-time = "2026-03-02T15:28:51.474Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/9a/67/1235676e93dd3b742a4a8eddfae49eea46c85e3eed29f0da446a8dd57500/sqlalchemy-2.0.48-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7001dc9d5f6bb4deb756d5928eaefe1930f6f4179da3924cbd95ee0e9f4dce89", size = 2157384, upload-time = "2026-03-02T15:38:26.781Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/4d/d7/fa728b856daa18c10e1390e76f26f64ac890c947008284387451d56ca3d0/sqlalchemy-2.0.48-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1a89ce07ad2d4b8cfc30bd5889ec40613e028ed80ef47da7d9dd2ce969ad30e0", size = 3236981, upload-time = "2026-03-02T15:58:53.53Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/5c/ad/6c4395649a212a6c603a72c5b9ab5dce3135a1546cfdffa3c427e71fd535/sqlalchemy-2.0.48-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:10853a53a4a00417a00913d270dddda75815fcb80675874285f41051c094d7dd", size = 3235232, upload-time = "2026-03-02T15:52:25.654Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/01/f4/58f845e511ac0509765a6f85eb24924c1ef0d54fb50de9d15b28c3601458/sqlalchemy-2.0.48-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:fac0fa4e4f55f118fd87177dacb1c6522fe39c28d498d259014020fec9164c29", size = 3188106, upload-time = "2026-03-02T15:58:55.193Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/3f/f9/6dcc7bfa5f5794c3a095e78cd1de8269dfb5584dfd4c2c00a50d3c1ade44/sqlalchemy-2.0.48-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3713e21ea67bca727eecd4a24bf68bcd414c403faae4989442be60994301ded0", size = 3209522, upload-time = "2026-03-02T15:52:27.407Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/d7/5a/b632875ab35874d42657f079529f0745410604645c269a8c21fb4272ff7a/sqlalchemy-2.0.48-cp310-cp310-win32.whl", hash = "sha256:d404dc897ce10e565d647795861762aa2d06ca3f4a728c5e9a835096c7059018", size = 2117695, upload-time = "2026-03-02T15:46:51.389Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/de/03/9752eb2a41afdd8568e41ac3c3128e32a0a73eada5ab80483083604a56d1/sqlalchemy-2.0.48-cp310-cp310-win_amd64.whl", hash = "sha256:841a94c66577661c1f088ac958cd767d7c9bf507698f45afffe7a4017049de76", size = 2140928, upload-time = "2026-03-02T15:46:52.992Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/d7/6d/b8b78b5b80f3c3ab3f7fa90faa195ec3401f6d884b60221260fd4d51864c/sqlalchemy-2.0.48-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b4c575df7368b3b13e0cebf01d4679f9a28ed2ae6c1cd0b1d5beffb6b2007dc", size = 2157184, upload-time = "2026-03-02T15:38:28.161Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/21/4b/4f3d4a43743ab58b95b9ddf5580a265b593d017693df9e08bd55780af5bb/sqlalchemy-2.0.48-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e83e3f959aaa1c9df95c22c528096d94848a1bc819f5d0ebf7ee3df0ca63db6c", size = 3313555, upload-time = "2026-03-02T15:58:57.21Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/21/dd/3b7c53f1dbbf736fd27041aee68f8ac52226b610f914085b1652c2323442/sqlalchemy-2.0.48-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6f7b7243850edd0b8b97043f04748f31de50cf426e939def5c16bedb540698f7", size = 3313057, upload-time = "2026-03-02T15:52:29.366Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/d9/cc/3e600a90ae64047f33313d7d32e5ad025417f09d2ded487e8284b5e21a15/sqlalchemy-2.0.48-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:82745b03b4043e04600a6b665cb98697c4339b24e34d74b0a2ac0a2488b6f94d", size = 3265431, upload-time = "2026-03-02T15:58:59.096Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/8b/19/780138dacfe3f5024f4cf96e4005e91edf6653d53d3673be4844578faf1d/sqlalchemy-2.0.48-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e5e088bf43f6ee6fec7dbf1ef7ff7774a616c236b5c0cb3e00662dd71a56b571", size = 3287646, upload-time = "2026-03-02T15:52:31.569Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/40/fd/f32ced124f01a23151f4777e4c705f3a470adc7bd241d9f36a7c941a33bf/sqlalchemy-2.0.48-cp311-cp311-win32.whl", hash = "sha256:9c7d0a77e36b5f4b01ca398482230ab792061d243d715299b44a0b55c89fe617", size = 2116956, upload-time = "2026-03-02T15:46:54.535Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/58/d5/dd767277f6feef12d05651538f280277e661698f617fa4d086cce6055416/sqlalchemy-2.0.48-cp311-cp311-win_amd64.whl", hash = "sha256:583849c743e0e3c9bb7446f5b5addeacedc168d657a69b418063dfdb2d90081c", size = 2141627, upload-time = "2026-03-02T15:46:55.849Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/ef/91/a42ae716f8925e9659df2da21ba941f158686856107a61cc97a95e7647a3/sqlalchemy-2.0.48-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:348174f228b99f33ca1f773e85510e08927620caa59ffe7803b37170df30332b", size = 2155737, upload-time = "2026-03-02T15:49:13.207Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/b9/52/f75f516a1f3888f027c1cfb5d22d4376f4b46236f2e8669dcb0cddc60275/sqlalchemy-2.0.48-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:53667b5f668991e279d21f94ccfa6e45b4e3f4500e7591ae59a8012d0f010dcb", size = 3337020, upload-time = "2026-03-02T15:50:34.547Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/37/9a/0c28b6371e0cdcb14f8f1930778cb3123acfcbd2c95bb9cf6b4a2ba0cce3/sqlalchemy-2.0.48-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:34634e196f620c7a61d18d5cf7dc841ca6daa7961aed75d532b7e58b309ac894", size = 3349983, upload-time = "2026-03-02T15:53:25.542Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/1c/46/0aee8f3ff20b1dcbceb46ca2d87fcc3d48b407925a383ff668218509d132/sqlalchemy-2.0.48-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:546572a1793cc35857a2ffa1fe0e58571af1779bcc1ffa7c9fb0839885ed69a9", size = 3279690, upload-time = "2026-03-02T15:50:36.277Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/ce/8c/a957bc91293b49181350bfd55e6dfc6e30b7f7d83dc6792d72043274a390/sqlalchemy-2.0.48-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:07edba08061bc277bfdc772dd2a1a43978f5a45994dd3ede26391b405c15221e", size = 3314738, upload-time = "2026-03-02T15:53:27.519Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/4b/44/1d257d9f9556661e7bdc83667cc414ba210acfc110c82938cb3611eea58f/sqlalchemy-2.0.48-cp312-cp312-win32.whl", hash = "sha256:908a3fa6908716f803b86896a09a2c4dde5f5ce2bb07aacc71ffebb57986ce99", size = 2115546, upload-time = "2026-03-02T15:54:31.591Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f2/af/c3c7e1f3a2b383155a16454df62ae8c62a30dd238e42e68c24cebebbfae6/sqlalchemy-2.0.48-cp312-cp312-win_amd64.whl", hash = "sha256:68549c403f79a8e25984376480959975212a670405e3913830614432b5daa07a", size = 2142484, upload-time = "2026-03-02T15:54:34.072Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/d1/c6/569dc8bf3cd375abc5907e82235923e986799f301cd79a903f784b996fca/sqlalchemy-2.0.48-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e3070c03701037aa418b55d36532ecb8f8446ed0135acb71c678dbdf12f5b6e4", size = 2152599, upload-time = "2026-03-02T15:49:14.41Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/6d/ff/f4e04a4bd5a24304f38cb0d4aa2ad4c0fb34999f8b884c656535e1b2b74c/sqlalchemy-2.0.48-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2645b7d8a738763b664a12a1542c89c940daa55196e8d73e55b169cc5c99f65f", size = 3278825, upload-time = "2026-03-02T15:50:38.269Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/fe/88/cb59509e4668d8001818d7355d9995be90c321313078c912420603a7cb95/sqlalchemy-2.0.48-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b19151e76620a412c2ac1c6f977ab1b9fa7ad43140178345136456d5265b32ed", size = 3295200, upload-time = "2026-03-02T15:53:29.366Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/87/dc/1609a4442aefd750ea2f32629559394ec92e89ac1d621a7f462b70f736ff/sqlalchemy-2.0.48-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5b193a7e29fd9fa56e502920dca47dffe60f97c863494946bd698c6058a55658", size = 3226876, upload-time = "2026-03-02T15:50:39.802Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/37/c3/6ae2ab5ea2fa989fbac4e674de01224b7a9d744becaf59bb967d62e99bed/sqlalchemy-2.0.48-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:36ac4ddc3d33e852da9cb00ffb08cea62ca05c39711dc67062ca2bb1fae35fd8", size = 3265045, upload-time = "2026-03-02T15:53:31.421Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/6f/82/ea4665d1bb98c50c19666e672f21b81356bd6077c4574e3d2bbb84541f53/sqlalchemy-2.0.48-cp313-cp313-win32.whl", hash = "sha256:389b984139278f97757ea9b08993e7b9d1142912e046ab7d82b3fbaeb0209131", size = 2113700, upload-time = "2026-03-02T15:54:35.825Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/b7/2b/b9040bec58c58225f073f5b0c1870defe1940835549dafec680cbd58c3c3/sqlalchemy-2.0.48-cp313-cp313-win_amd64.whl", hash = "sha256:d612c976cbc2d17edfcc4c006874b764e85e990c29ce9bd411f926bbfb02b9a2", size = 2139487, upload-time = "2026-03-02T15:54:37.079Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f4/f4/7b17bd50244b78a49d22cc63c969d71dc4de54567dc152a9b46f6fae40ce/sqlalchemy-2.0.48-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:69f5bc24904d3bc3640961cddd2523e361257ef68585d6e364166dfbe8c78fae", size = 3558851, upload-time = "2026-03-02T15:57:48.607Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/20/0d/213668e9aca61d370f7d2a6449ea4ec699747fac67d4bda1bb3d129025be/sqlalchemy-2.0.48-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fd08b90d211c086181caed76931ecfa2bdfc83eea3cfccdb0f82abc6c4b876cb", size = 3525525, upload-time = "2026-03-02T16:04:38.058Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/85/d7/a84edf412979e7d59c69b89a5871f90a49228360594680e667cb2c46a828/sqlalchemy-2.0.48-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:1ccd42229aaac2df431562117ac7e667d702e8e44afdb6cf0e50fa3f18160f0b", size = 3466611, upload-time = "2026-03-02T15:57:50.759Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/86/55/42404ce5770f6be26a2b0607e7866c31b9a4176c819e9a7a5e0a055770be/sqlalchemy-2.0.48-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:f0dcbc588cd5b725162c076eb9119342f6579c7f7f55057bb7e3c6ff27e13121", size = 3475812, upload-time = "2026-03-02T16:04:40.092Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/ae/ae/29b87775fadc43e627cf582fe3bda4d02e300f6b8f2747c764950d13784c/sqlalchemy-2.0.48-cp313-cp313t-win32.whl", hash = "sha256:9764014ef5e58aab76220c5664abb5d47d5bc858d9debf821e55cfdd0f128485", size = 2141335, upload-time = "2026-03-02T15:52:51.518Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/91/44/f39d063c90f2443e5b46ec4819abd3d8de653893aae92df42a5c4f5843de/sqlalchemy-2.0.48-cp313-cp313t-win_amd64.whl", hash = "sha256:e2f35b4cccd9ed286ad62e0a3c3ac21e06c02abc60e20aa51a3e305a30f5fa79", size = 2173095, upload-time = "2026-03-02T15:52:52.79Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f7/b3/f437eaa1cf028bb3c927172c7272366393e73ccd104dcf5b6963f4ab5318/sqlalchemy-2.0.48-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:e2d0d88686e3d35a76f3e15a34e8c12d73fc94c1dea1cd55782e695cc14086dd", size = 2154401, upload-time = "2026-03-02T15:49:17.24Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/6c/1c/b3abdf0f402aa3f60f0df6ea53d92a162b458fca2321d8f1f00278506402/sqlalchemy-2.0.48-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:49b7bddc1eebf011ea5ab722fdbe67a401caa34a350d278cc7733c0e88fecb1f", size = 3274528, upload-time = "2026-03-02T15:50:41.489Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f2/5e/327428a034407651a048f5e624361adf3f9fbac9d0fa98e981e9c6ff2f5e/sqlalchemy-2.0.48-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:426c5ca86415d9b8945c7073597e10de9644802e2ff502b8e1f11a7a2642856b", size = 3279523, upload-time = "2026-03-02T15:53:32.962Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/2a/ca/ece73c81a918add0965b76b868b7b5359e068380b90ef1656ee995940c02/sqlalchemy-2.0.48-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:288937433bd44e3990e7da2402fabc44a3c6c25d3704da066b85b89a85474ae0", size = 3224312, upload-time = "2026-03-02T15:50:42.996Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/88/11/fbaf1ae91fa4ee43f4fe79661cead6358644824419c26adb004941bdce7c/sqlalchemy-2.0.48-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:8183dc57ae7d9edc1346e007e840a9f3d6aa7b7f165203a99e16f447150140d2", size = 3246304, upload-time = "2026-03-02T15:53:34.937Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/fa/a8/5fb0deb13930b4f2f698c5541ae076c18981173e27dd00376dbaea7a9c82/sqlalchemy-2.0.48-cp314-cp314-win32.whl", hash = "sha256:1182437cb2d97988cfea04cf6cdc0b0bb9c74f4d56ec3d08b81e23d621a28cc6", size = 2116565, upload-time = "2026-03-02T15:54:38.321Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/95/7e/e83615cb63f80047f18e61e31e8e32257d39458426c23006deeaf48f463b/sqlalchemy-2.0.48-cp314-cp314-win_amd64.whl", hash = "sha256:144921da96c08feb9e2b052c5c5c1d0d151a292c6135623c6b2c041f2a45f9e0", size = 2142205, upload-time = "2026-03-02T15:54:39.831Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/83/e3/69d8711b3f2c5135e9cde5f063bc1605860f0b2c53086d40c04017eb1f77/sqlalchemy-2.0.48-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5aee45fd2c6c0f2b9cdddf48c48535e7471e42d6fb81adfde801da0bd5b93241", size = 3563519, upload-time = "2026-03-02T15:57:52.387Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f8/4f/a7cce98facca73c149ea4578981594aaa5fd841e956834931de503359336/sqlalchemy-2.0.48-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7cddca31edf8b0653090cbb54562ca027c421c58ddde2c0685f49ff56a1690e0", size = 3528611, upload-time = "2026-03-02T16:04:42.097Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/cd/7d/5936c7a03a0b0cb0fa0cc425998821c6029756b0855a8f7ee70fba1de955/sqlalchemy-2.0.48-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7a936f1bb23d370b7c8cc079d5fce4c7d18da87a33c6744e51a93b0f9e97e9b3", size = 3472326, upload-time = "2026-03-02T15:57:54.423Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f4/33/cea7dfc31b52904efe3dcdc169eb4514078887dff1f5ae28a7f4c5d54b3c/sqlalchemy-2.0.48-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:e004aa9248e8cb0a5f9b96d003ca7c1c0a5da8decd1066e7b53f59eb8ce7c62b", size = 3478453, upload-time = "2026-03-02T16:04:44.584Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/c8/95/32107c4d13be077a9cae61e9ae49966a35dc4bf442a8852dd871db31f62e/sqlalchemy-2.0.48-cp314-cp314t-win32.whl", hash = "sha256:b8438ec5594980d405251451c5b7ea9aa58dda38eb7ac35fb7e4c696712ee24f", size = 2147209, upload-time = "2026-03-02T15:52:54.274Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/d2/d7/1e073da7a4bc645eb83c76067284a0374e643bc4be57f14cc6414656f92c/sqlalchemy-2.0.48-cp314-cp314t-win_amd64.whl", hash = "sha256:d854b3970067297f3a7fbd7a4683587134aa9b3877ee15aa29eea478dc68f933", size = 2182198, upload-time = "2026-03-02T15:52:55.606Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/1f/c9/9fb0a349dc398e4b6a6aab60495d08f7ab94c27d4aa4a0dca8812e10f80d/sqlalchemy-2.0.48-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f8649a14caa5f8a243628b1d61cf530ad9ae4578814ba726816adb1121fc493e", size = 2168111, upload-time = "2026-03-02T15:44:09.552Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/60/61/d6fc6b1dc0d0ac5efa1ec75916efef64092a22542544d0dcedd00d5ee62a/sqlalchemy-2.0.48-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6bb85c546591569558571aa1b06aba711b26ae62f111e15e56136d69920e1616", size = 3253992, upload-time = "2026-03-02T16:01:24.919Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/d5/2a/05092fa5cfce2665cf244e9a07ee0fc05f1d569a8a6d4425efc7f1a5be70/sqlalchemy-2.0.48-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a6b764fb312bd35e47797ad2e63f0d323792837a6ac785a4ca967019357d2bc7", size = 3254470, upload-time = "2026-03-02T16:07:54.099Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/49/4f/4a9315373b963cb20b30cb91a61386673dcb6bc38d17709f9f720c60e9c5/sqlalchemy-2.0.48-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:7c998f2ace8bf76b453b75dbcca500d4f4b9dd3908c13e89b86289b37784848b", size = 3203438, upload-time = "2026-03-02T16:01:27.001Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/7e/b1/b89a81c0f021b59aab9f8f071d3f2c9dcdefa5de6264cb324fdf732ae27e/sqlalchemy-2.0.48-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:d64177f443594c8697369c10e4bbcac70ef558e0f7921a1de7e4a3d1734bcf67", size = 3220252, upload-time = "2026-03-02T16:07:55.897Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/4e/ce/c9d1193b2bd603c7f7ea644eeb9d76bb37d4b038c2d7b9fe9bc514277923/sqlalchemy-2.0.48-cp38-cp38-win32.whl", hash = "sha256:01f6bbd4308b23240cf7d3ef117557c8fd097ec9549d5d8a52977544e35b40ad", size = 2124480, upload-time = "2026-03-02T15:50:22.173Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/c4/9b/06e7d47b19f8defb5e23befde8118b1a4c476e869f678442756710683091/sqlalchemy-2.0.48-cp38-cp38-win_amd64.whl", hash = "sha256:858e433f12b0e5b3ed2f8da917433b634f4937d0e8793e5cb33c54a1a01df565", size = 2148694, upload-time = "2026-03-02T15:50:23.671Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f1/69/c84f10a7fb0d6c50c0f6028cab1373ac1bc70a824d53bf857c33eddde5c4/sqlalchemy-2.0.48-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4599a95f9430ae0de82b52ff0d27304fe898c17cb5f4099f7438a51b9998ac77", size = 2160429, upload-time = "2026-03-02T15:44:11.019Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/ed/c8/2e0de4efcba76ae8cc84000bc0aedf45f7d2674a7d8cf66b884a03c3f310/sqlalchemy-2.0.48-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f27f9da0a7d22b9f981108fd4b62f8b5743423388915a563e651c20d06c1f457", size = 3236035, upload-time = "2026-03-02T16:01:29.41Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/86/93/0822c24212a2943b3df02a02c49b2b32ab67705eaa0d2f40f28f9c2e8084/sqlalchemy-2.0.48-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d8fcccbbc0c13c13702c471da398b8cd72ba740dca5859f148ae8e0e8e0d3e7e", size = 3235358, upload-time = "2026-03-02T16:07:58.002Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/6b/ce/f1c7c16d5ea0e4fbc14b473f02daedef8d77c582ef3c18b30b7307f85cff/sqlalchemy-2.0.48-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:a5b429eb84339f9f05e06083f119ad814e6d85e27ecbdf9c551dfdbb128eaf8a", size = 3185479, upload-time = "2026-03-02T16:01:32.781Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/6c/b8/95cb9642e608d02a0fd96bb3f7571b20a081313a178e1e661cc5dba37472/sqlalchemy-2.0.48-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:bcb8ebbf2e2c36cfe01a94f2438012c6a9d494cf80f129d9753bcdf33bfc35a6", size = 3207488, upload-time = "2026-03-02T16:07:59.763Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/24/cd/0dda04e28df0db4ed0b7d374f7eb7da8566db523dbac9f627cc6e0422c6d/sqlalchemy-2.0.48-cp39-cp39-win32.whl", hash = "sha256:e214d546c8ecb5fc22d6e6011746082abf13a9cf46eefb45769c7b31407c97b5", size = 2119494, upload-time = "2026-03-02T15:50:24.983Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/d7/1d/a98057e05608316cd3c2710f0b3d35e83cec6bdf00833b53a02235a1712f/sqlalchemy-2.0.48-cp39-cp39-win_amd64.whl", hash = "sha256:b8fc3454b4f3bd0a368001d0e968852dad45a873f8b4babd41bc302ec851a099", size = 2142903, upload-time = "2026-03-02T15:50:26.333Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/46/2c/9664130905f03db57961b8980b05cab624afd114bf2be2576628a9f22da4/sqlalchemy-2.0.48-py3-none-any.whl", hash = "sha256:a66fe406437dd65cacd96a72689a3aaaecaebbcd62d81c5ac1c0fdbeac835096", size = 1940202, upload-time = "2026-03-02T15:52:43.285Z" }, +] + +[[package]] +name = "sqlite-vfs" +version = "0.1.0" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/70/ff/9cbb7f704d59f88ae048bb84a3de19b5d6dd0c1ae21af53396723af18d14/sqlite_vfs-0.1.0.tar.gz", hash = "sha256:cd6cf5cb7d60c1983d9befdc6c4cce8ab050fc4fd215e5e63ece1d2d28f4f9bb", size = 57435, upload-time = "2025-11-08T08:16:01.715Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/ef/26/a3f51ea9d10efe2c4f85cac78dcbd898b437d2331cf25d470f804e4498b7/sqlite_vfs-0.1.0-py3-none-any.whl", hash = "sha256:c6e27a35e504bb6360fb0d9083d79572367a903788b3b14aea5f1188130e9314", size = 10768, upload-time = "2025-11-08T08:15:18.588Z" }, +] + +[[package]] +name = "sqlitedict" +version = "2.1.0" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/12/9a/7620d1e9dcb02839ed6d4b14064e609cdd7a8ae1e47289aa0456796dd9ca/sqlitedict-2.1.0.tar.gz", hash = "sha256:03d9cfb96d602996f1d4c2db2856f1224b96a9c431bdd16e78032a72940f9e8c", size = 21846, upload-time = "2022-12-03T13:39:13.102Z" } + +[[package]] +name = "sqlmodel" +version = "0.0.29" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +resolution-markers = [ + "python_full_version < '3.9'", +] +dependencies = [ + { name = "pydantic", version = "2.10.6", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version < '3.9'" }, + { name = "sqlalchemy", marker = "python_full_version < '3.9'" }, +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/16/9c/5438f6c0f2bf3ea8760de230badc7df355e1b84cccda6d3cac696578ab0c/sqlmodel-0.0.29.tar.gz", hash = "sha256:cdebdeda7addb3d934c7a70812a23aa8bdff5550bfffa023db72dec1ba5e45d7", size = 119485, upload-time = "2025-12-23T20:59:46.807Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/c2/3f/f71798ed4cc6784122af8d404df187cfc683db795b3eee542e2df23f94a9/sqlmodel-0.0.29-py3-none-any.whl", hash = "sha256:56e4b3e9ab5825f6cbdd40bc46f90f01c0f73c73f44843a03d494c0845a948cd", size = 29355, upload-time = "2025-12-23T20:59:45.368Z" }, +] + +[[package]] +name = "sqlmodel" +version = "0.0.34" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +resolution-markers = [ + "python_full_version == '3.9.*'", +] +dependencies = [ + { name = "pydantic", version = "2.12.5", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version == '3.9.*'" }, + { name = "sqlalchemy", marker = "python_full_version == '3.9.*'" }, +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/3b/6a/b1b26d589063e53a08c10a2d7bc624cba63dec045a312758d68f550a4ea1/sqlmodel-0.0.34.tar.gz", hash = "sha256:577e4aae1ba96ee5038e03d8b1404c642dad1a92e628988cdf4ce68d27abe982", size = 96236, upload-time = "2026-02-16T19:06:34.275Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/eb/ee/1910f4eee41af4268b0d8cd688a05fb8ea23e9e6c64b8710592df24a8c66/sqlmodel-0.0.34-py3-none-any.whl", hash = "sha256:aeabc8f0de32076a0ed9216e88568459d737fca1e7133bfc6d1c657920789a2d", size = 27445, upload-time = "2026-02-16T19:06:35.709Z" }, +] + +[[package]] +name = "sqlmodel" +version = "0.0.37" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +resolution-markers = [ + "python_full_version >= '3.10'", +] +dependencies = [ + { name = "pydantic", version = "2.12.5", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version >= '3.10'" }, + { name = "sqlalchemy", marker = "python_full_version >= '3.10'" }, +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/fb/26/1d2faa0fd5a765267f49751de533adac6b9ff9366c7c6e7692df4f32230f/sqlmodel-0.0.37.tar.gz", hash = "sha256:d2c19327175794faf50b1ee31cc966764f55b1dedefc046450bc5741a3d68352", size = 85527, upload-time = "2026-02-21T16:39:47.038Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/b1/e1/7c8d18e737433f3b5bbe27b56a9072a9fcb36342b48f1bef34b6da1d61f2/sqlmodel-0.0.37-py3-none-any.whl", hash = "sha256:2137a4045ef3fd66a917a7717ada959a1ceb3630d95e1f6aaab39dd2c0aef278", size = 27224, upload-time = "2026-02-21T16:39:47.781Z" }, +] + +[[package]] +name = "starlette" +version = "0.44.0" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +resolution-markers = [ + "python_full_version < '3.9'", +] +dependencies = [ + { name = "anyio", version = "4.5.2", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version < '3.9'" }, + { name = "typing-extensions", version = "4.13.2", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version < '3.9'" }, +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/8d/b4/910f693584958b687b8f9c628f8217cfef19a42b64d2de7840814937365c/starlette-0.44.0.tar.gz", hash = "sha256:e35166950a3ccccc701962fe0711db0bc14f2ecd37c6f9fe5e3eae0cbaea8715", size = 2575579, upload-time = "2024-12-28T07:32:56.003Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/b6/c5/7ae467eeddb57260c8ce17a3a09f9f5edba35820fc022d7c55b7decd5d3a/starlette-0.44.0-py3-none-any.whl", hash = "sha256:19edeb75844c16dcd4f9dd72f22f9108c1539f3fc9c4c88885654fef64f85aea", size = 73412, upload-time = "2024-12-28T07:32:53.871Z" }, +] + +[[package]] +name = "starlette" +version = "0.49.3" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +resolution-markers = [ + "python_full_version == '3.9.*'", +] +dependencies = [ + { name = "anyio", version = "4.12.1", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version == '3.9.*'" }, + { name = "typing-extensions", version = "4.15.0", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version == '3.9.*'" }, +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/de/1a/608df0b10b53b0beb96a37854ee05864d182ddd4b1156a22f1ad3860425a/starlette-0.49.3.tar.gz", hash = "sha256:1c14546f299b5901a1ea0e34410575bc33bbd741377a10484a54445588d00284", size = 2655031, upload-time = "2025-11-01T15:12:26.13Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/a3/e0/021c772d6a662f43b63044ab481dc6ac7592447605b5b35a957785363122/starlette-0.49.3-py3-none-any.whl", hash = "sha256:b579b99715fdc2980cf88c8ec96d3bf1ce16f5a8051a7c2b84ef9b1cdecaea2f", size = 74340, upload-time = "2025-11-01T15:12:24.387Z" }, +] + +[[package]] +name = "starlette" +version = "0.52.1" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +resolution-markers = [ + "python_full_version >= '3.10'", +] +dependencies = [ + { name = "anyio", version = "4.12.1", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version >= '3.10'" }, + { name = "typing-extensions", version = "4.15.0", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version >= '3.10' and python_full_version < '3.13'" }, +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/c4/68/79977123bb7be889ad680d79a40f339082c1978b5cfcf62c2d8d196873ac/starlette-0.52.1.tar.gz", hash = "sha256:834edd1b0a23167694292e94f597773bc3f89f362be6effee198165a35d62933", size = 2653702, upload-time = "2026-01-18T13:34:11.062Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/81/0d/13d1d239a25cbfb19e740db83143e95c772a1fe10202dda4b76792b114dd/starlette-0.52.1-py3-none-any.whl", hash = "sha256:0029d43eb3d273bc4f83a08720b4912ea4b071087a3b48db01b7c839f7954d74", size = 74272, upload-time = "2026-01-18T13:34:09.188Z" }, +] + +[[package]] +name = "tomli" +version = "2.4.0" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/82/30/31573e9457673ab10aa432461bee537ce6cef177667deca369efb79df071/tomli-2.4.0.tar.gz", hash = "sha256:aa89c3f6c277dd275d8e243ad24f3b5e701491a860d5121f2cdd399fbb31fc9c", size = 17477, upload-time = "2026-01-11T11:22:38.165Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/3c/d9/3dc2289e1f3b32eb19b9785b6a006b28ee99acb37d1d47f78d4c10e28bf8/tomli-2.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b5ef256a3fd497d4973c11bf142e9ed78b150d36f5773f1ca6088c230ffc5867", size = 153663, upload-time = "2026-01-11T11:21:45.27Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/51/32/ef9f6845e6b9ca392cd3f64f9ec185cc6f09f0a2df3db08cbe8809d1d435/tomli-2.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5572e41282d5268eb09a697c89a7bee84fae66511f87533a6f88bd2f7b652da9", size = 148469, upload-time = "2026-01-11T11:21:46.873Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/d6/c2/506e44cce89a8b1b1e047d64bd495c22c9f71f21e05f380f1a950dd9c217/tomli-2.4.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:551e321c6ba03b55676970b47cb1b73f14a0a4dce6a3e1a9458fd6d921d72e95", size = 236039, upload-time = "2026-01-11T11:21:48.503Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/b3/40/e1b65986dbc861b7e986e8ec394598187fa8aee85b1650b01dd925ca0be8/tomli-2.4.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5e3f639a7a8f10069d0e15408c0b96a2a828cfdec6fca05296ebcdcc28ca7c76", size = 243007, upload-time = "2026-01-11T11:21:49.456Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/9c/6f/6e39ce66b58a5b7ae572a0f4352ff40c71e8573633deda43f6a379d56b3e/tomli-2.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1b168f2731796b045128c45982d3a4874057626da0e2ef1fdd722848b741361d", size = 240875, upload-time = "2026-01-11T11:21:50.755Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/aa/ad/cb089cb190487caa80204d503c7fd0f4d443f90b95cf4ef5cf5aa0f439b0/tomli-2.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:133e93646ec4300d651839d382d63edff11d8978be23da4cc106f5a18b7d0576", size = 246271, upload-time = "2026-01-11T11:21:51.81Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/0b/63/69125220e47fd7a3a27fd0de0c6398c89432fec41bc739823bcc66506af6/tomli-2.4.0-cp311-cp311-win32.whl", hash = "sha256:b6c78bdf37764092d369722d9946cb65b8767bfa4110f902a1b2542d8d173c8a", size = 96770, upload-time = "2026-01-11T11:21:52.647Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/1e/0d/a22bb6c83f83386b0008425a6cd1fa1c14b5f3dd4bad05e98cf3dbbf4a64/tomli-2.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:d3d1654e11d724760cdb37a3d7691f0be9db5fbdaef59c9f532aabf87006dbaa", size = 107626, upload-time = "2026-01-11T11:21:53.459Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/2f/6d/77be674a3485e75cacbf2ddba2b146911477bd887dda9d8c9dfb2f15e871/tomli-2.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:cae9c19ed12d4e8f3ebf46d1a75090e4c0dc16271c5bce1c833ac168f08fb614", size = 94842, upload-time = "2026-01-11T11:21:54.831Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/3c/43/7389a1869f2f26dba52404e1ef13b4784b6b37dac93bac53457e3ff24ca3/tomli-2.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:920b1de295e72887bafa3ad9f7a792f811847d57ea6b1215154030cf131f16b1", size = 154894, upload-time = "2026-01-11T11:21:56.07Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/e9/05/2f9bf110b5294132b2edf13fe6ca6ae456204f3d749f623307cbb7a946f2/tomli-2.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7d6d9a4aee98fac3eab4952ad1d73aee87359452d1c086b5ceb43ed02ddb16b8", size = 149053, upload-time = "2026-01-11T11:21:57.467Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/e8/41/1eda3ca1abc6f6154a8db4d714a4d35c4ad90adc0bcf700657291593fbf3/tomli-2.4.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:36b9d05b51e65b254ea6c2585b59d2c4cb91c8a3d91d0ed0f17591a29aaea54a", size = 243481, upload-time = "2026-01-11T11:21:58.661Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/d2/6d/02ff5ab6c8868b41e7d4b987ce2b5f6a51d3335a70aa144edd999e055a01/tomli-2.4.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1c8a885b370751837c029ef9bc014f27d80840e48bac415f3412e6593bbc18c1", size = 251720, upload-time = "2026-01-11T11:22:00.178Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/7b/57/0405c59a909c45d5b6f146107c6d997825aa87568b042042f7a9c0afed34/tomli-2.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8768715ffc41f0008abe25d808c20c3d990f42b6e2e58305d5da280ae7d1fa3b", size = 247014, upload-time = "2026-01-11T11:22:01.238Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/2c/0e/2e37568edd944b4165735687cbaf2fe3648129e440c26d02223672ee0630/tomli-2.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7b438885858efd5be02a9a133caf5812b8776ee0c969fea02c45e8e3f296ba51", size = 251820, upload-time = "2026-01-11T11:22:02.727Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/5a/1c/ee3b707fdac82aeeb92d1a113f803cf6d0f37bdca0849cb489553e1f417a/tomli-2.4.0-cp312-cp312-win32.whl", hash = "sha256:0408e3de5ec77cc7f81960c362543cbbd91ef883e3138e81b729fc3eea5b9729", size = 97712, upload-time = "2026-01-11T11:22:03.777Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/69/13/c07a9177d0b3bab7913299b9278845fc6eaaca14a02667c6be0b0a2270c8/tomli-2.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:685306e2cc7da35be4ee914fd34ab801a6acacb061b6a7abca922aaf9ad368da", size = 108296, upload-time = "2026-01-11T11:22:04.86Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/18/27/e267a60bbeeee343bcc279bb9e8fbed0cbe224bc7b2a3dc2975f22809a09/tomli-2.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:5aa48d7c2356055feef06a43611fc401a07337d5b006be13a30f6c58f869e3c3", size = 94553, upload-time = "2026-01-11T11:22:05.854Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/34/91/7f65f9809f2936e1f4ce6268ae1903074563603b2a2bd969ebbda802744f/tomli-2.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:84d081fbc252d1b6a982e1870660e7330fb8f90f676f6e78b052ad4e64714bf0", size = 154915, upload-time = "2026-01-11T11:22:06.703Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/20/aa/64dd73a5a849c2e8f216b755599c511badde80e91e9bc2271baa7b2cdbb1/tomli-2.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9a08144fa4cba33db5255f9b74f0b89888622109bd2776148f2597447f92a94e", size = 149038, upload-time = "2026-01-11T11:22:07.56Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/9e/8a/6d38870bd3d52c8d1505ce054469a73f73a0fe62c0eaf5dddf61447e32fa/tomli-2.4.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c73add4bb52a206fd0c0723432db123c0c75c280cbd67174dd9d2db228ebb1b4", size = 242245, upload-time = "2026-01-11T11:22:08.344Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/59/bb/8002fadefb64ab2669e5b977df3f5e444febea60e717e755b38bb7c41029/tomli-2.4.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1fb2945cbe303b1419e2706e711b7113da57b7db31ee378d08712d678a34e51e", size = 250335, upload-time = "2026-01-11T11:22:09.951Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/a5/3d/4cdb6f791682b2ea916af2de96121b3cb1284d7c203d97d92d6003e91c8d/tomli-2.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bbb1b10aa643d973366dc2cb1ad94f99c1726a02343d43cbc011edbfac579e7c", size = 245962, upload-time = "2026-01-11T11:22:11.27Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f2/4a/5f25789f9a460bd858ba9756ff52d0830d825b458e13f754952dd15fb7bb/tomli-2.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4cbcb367d44a1f0c2be408758b43e1ffb5308abe0ea222897d6bfc8e8281ef2f", size = 250396, upload-time = "2026-01-11T11:22:12.325Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/aa/2f/b73a36fea58dfa08e8b3a268750e6853a6aac2a349241a905ebd86f3047a/tomli-2.4.0-cp313-cp313-win32.whl", hash = "sha256:7d49c66a7d5e56ac959cb6fc583aff0651094ec071ba9ad43df785abc2320d86", size = 97530, upload-time = "2026-01-11T11:22:13.865Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/3b/af/ca18c134b5d75de7e8dc551c5234eaba2e8e951f6b30139599b53de9c187/tomli-2.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:3cf226acb51d8f1c394c1b310e0e0e61fecdd7adcb78d01e294ac297dd2e7f87", size = 108227, upload-time = "2026-01-11T11:22:15.224Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/22/c3/b386b832f209fee8073c8138ec50f27b4460db2fdae9ffe022df89a57f9b/tomli-2.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:d20b797a5c1ad80c516e41bc1fb0443ddb5006e9aaa7bda2d71978346aeb9132", size = 94748, upload-time = "2026-01-11T11:22:16.009Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f3/c4/84047a97eb1004418bc10bdbcfebda209fca6338002eba2dc27cc6d13563/tomli-2.4.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:26ab906a1eb794cd4e103691daa23d95c6919cc2fa9160000ac02370cc9dd3f6", size = 154725, upload-time = "2026-01-11T11:22:17.269Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/a8/5d/d39038e646060b9d76274078cddf146ced86dc2b9e8bbf737ad5983609a0/tomli-2.4.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:20cedb4ee43278bc4f2fee6cb50daec836959aadaf948db5172e776dd3d993fc", size = 148901, upload-time = "2026-01-11T11:22:18.287Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/73/e5/383be1724cb30f4ce44983d249645684a48c435e1cd4f8b5cded8a816d3c/tomli-2.4.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:39b0b5d1b6dd03684b3fb276407ebed7090bbec989fa55838c98560c01113b66", size = 243375, upload-time = "2026-01-11T11:22:19.154Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/31/f0/bea80c17971c8d16d3cc109dc3585b0f2ce1036b5f4a8a183789023574f2/tomli-2.4.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a26d7ff68dfdb9f87a016ecfd1e1c2bacbe3108f4e0f8bcd2228ef9a766c787d", size = 250639, upload-time = "2026-01-11T11:22:20.168Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/2c/8f/2853c36abbb7608e3f945d8a74e32ed3a74ee3a1f468f1ffc7d1cb3abba6/tomli-2.4.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:20ffd184fb1df76a66e34bd1b36b4a4641bd2b82954befa32fe8163e79f1a702", size = 246897, upload-time = "2026-01-11T11:22:21.544Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/49/f0/6c05e3196ed5337b9fe7ea003e95fd3819a840b7a0f2bf5a408ef1dad8ed/tomli-2.4.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:75c2f8bbddf170e8effc98f5e9084a8751f8174ea6ccf4fca5398436e0320bc8", size = 254697, upload-time = "2026-01-11T11:22:23.058Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f3/f5/2922ef29c9f2951883525def7429967fc4d8208494e5ab524234f06b688b/tomli-2.4.0-cp314-cp314-win32.whl", hash = "sha256:31d556d079d72db7c584c0627ff3a24c5d3fb4f730221d3444f3efb1b2514776", size = 98567, upload-time = "2026-01-11T11:22:24.033Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/7b/31/22b52e2e06dd2a5fdbc3ee73226d763b184ff21fc24e20316a44ccc4d96b/tomli-2.4.0-cp314-cp314-win_amd64.whl", hash = "sha256:43e685b9b2341681907759cf3a04e14d7104b3580f808cfde1dfdb60ada85475", size = 108556, upload-time = "2026-01-11T11:22:25.378Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/48/3d/5058dff3255a3d01b705413f64f4306a141a8fd7a251e5a495e3f192a998/tomli-2.4.0-cp314-cp314-win_arm64.whl", hash = "sha256:3d895d56bd3f82ddd6faaff993c275efc2ff38e52322ea264122d72729dca2b2", size = 96014, upload-time = "2026-01-11T11:22:26.138Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/b8/4e/75dab8586e268424202d3a1997ef6014919c941b50642a1682df43204c22/tomli-2.4.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:5b5807f3999fb66776dbce568cc9a828544244a8eb84b84b9bafc080c99597b9", size = 163339, upload-time = "2026-01-11T11:22:27.143Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/06/e3/b904d9ab1016829a776d97f163f183a48be6a4deb87304d1e0116a349519/tomli-2.4.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c084ad935abe686bd9c898e62a02a19abfc9760b5a79bc29644463eaf2840cb0", size = 159490, upload-time = "2026-01-11T11:22:28.399Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/e3/5a/fc3622c8b1ad823e8ea98a35e3c632ee316d48f66f80f9708ceb4f2a0322/tomli-2.4.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0f2e3955efea4d1cfbcb87bc321e00dc08d2bcb737fd1d5e398af111d86db5df", size = 269398, upload-time = "2026-01-11T11:22:29.345Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/fd/33/62bd6152c8bdd4c305ad9faca48f51d3acb2df1f8791b1477d46ff86e7f8/tomli-2.4.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0e0fe8a0b8312acf3a88077a0802565cb09ee34107813bba1c7cd591fa6cfc8d", size = 276515, upload-time = "2026-01-11T11:22:30.327Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/4b/ff/ae53619499f5235ee4211e62a8d7982ba9e439a0fb4f2f351a93d67c1dd2/tomli-2.4.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:413540dce94673591859c4c6f794dfeaa845e98bf35d72ed59636f869ef9f86f", size = 273806, upload-time = "2026-01-11T11:22:32.56Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/47/71/cbca7787fa68d4d0a9f7072821980b39fbb1b6faeb5f5cf02f4a5559fa28/tomli-2.4.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:0dc56fef0e2c1c470aeac5b6ca8cc7b640bb93e92d9803ddaf9ea03e198f5b0b", size = 281340, upload-time = "2026-01-11T11:22:33.505Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f5/00/d595c120963ad42474cf6ee7771ad0d0e8a49d0f01e29576ee9195d9ecdf/tomli-2.4.0-cp314-cp314t-win32.whl", hash = "sha256:d878f2a6707cc9d53a1be1414bbb419e629c3d6e67f69230217bb663e76b5087", size = 108106, upload-time = "2026-01-11T11:22:34.451Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/de/69/9aa0c6a505c2f80e519b43764f8b4ba93b5a0bbd2d9a9de6e2b24271b9a5/tomli-2.4.0-cp314-cp314t-win_amd64.whl", hash = "sha256:2add28aacc7425117ff6364fe9e06a183bb0251b03f986df0e78e974047571fd", size = 120504, upload-time = "2026-01-11T11:22:35.764Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/b3/9f/f1668c281c58cfae01482f7114a4b88d345e4c140386241a1a24dcc9e7bc/tomli-2.4.0-cp314-cp314t-win_arm64.whl", hash = "sha256:2b1e3b80e1d5e52e40e9b924ec43d81570f0e7d09d11081b797bc4692765a3d4", size = 99561, upload-time = "2026-01-11T11:22:36.624Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/23/d1/136eb2cb77520a31e1f64cbae9d33ec6df0d78bdf4160398e86eec8a8754/tomli-2.4.0-py3-none-any.whl", hash = "sha256:1f776e7d669ebceb01dee46484485f43a4048746235e683bcdffacdf1fb4785a", size = 14477, upload-time = "2026-01-11T11:22:37.446Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.13.2" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +resolution-markers = [ + "python_full_version < '3.9'", +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/f6/37/23083fcd6e35492953e8d2aaaa68b860eb422b34627b13f2ce3eb6106061/typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef", size = 106967, upload-time = "2025-04-10T14:19:05.416Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/8b/54/b1ae86c0973cc6f0210b53d508ca3641fb6d0c56823f288d108bc7ab3cc8/typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c", size = 45806, upload-time = "2025-04-10T14:19:03.967Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.15.0" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +resolution-markers = [ + "python_full_version >= '3.10'", + "python_full_version == '3.9.*'", +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/web/simple/" } +dependencies = [ + { name = "typing-extensions", version = "4.15.0", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version >= '3.9'" }, +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/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://mirrors.ustc.edu.cn/pypi/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 = "uvicorn" +version = "0.33.0" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +resolution-markers = [ + "python_full_version < '3.9'", +] +dependencies = [ + { name = "click", version = "8.1.8", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version < '3.9'" }, + { name = "h11", marker = "python_full_version < '3.9'" }, + { name = "typing-extensions", version = "4.13.2", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version < '3.9'" }, +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/cb/81/a083ae41716b00df56d45d4b5f6ca8e90fc233a62e6c04ab3ad3c476b6c4/uvicorn-0.33.0.tar.gz", hash = "sha256:3577119f82b7091cf4d3d4177bfda0bae4723ed92ab1439e8d779de880c9cc59", size = 76590, upload-time = "2024-12-14T11:14:46.526Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/98/79/2e2620337ef1e4ef7a058b351603b765f59ac28e6e3ac7c5e7cdee9ea1ab/uvicorn-0.33.0-py3-none-any.whl", hash = "sha256:2c30de4aeea83661a520abab179b24084a0019c0c1bbe137e5409f741cbde5f8", size = 62297, upload-time = "2024-12-14T11:14:43.408Z" }, +] + +[[package]] +name = "uvicorn" +version = "0.39.0" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +resolution-markers = [ + "python_full_version == '3.9.*'", +] +dependencies = [ + { name = "click", version = "8.1.8", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version == '3.9.*'" }, + { name = "h11", marker = "python_full_version == '3.9.*'" }, + { name = "typing-extensions", version = "4.15.0", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version == '3.9.*'" }, +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/ae/4f/f9fdac7cf6dd79790eb165639b5c452ceeabc7bbabbba4569155470a287d/uvicorn-0.39.0.tar.gz", hash = "sha256:610512b19baa93423d2892d7823741f6d27717b642c8964000d7194dded19302", size = 82001, upload-time = "2025-12-21T13:05:17.973Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/6b/25/db2b1c6c35bf22e17fe5412d2ee5d3fd7a20d07ebc9dac8b58f7db2e23a0/uvicorn-0.39.0-py3-none-any.whl", hash = "sha256:7beec21bd2693562b386285b188a7963b06853c0d006302b3e4cfed950c9929a", size = 68491, upload-time = "2025-12-21T13:05:16.291Z" }, +] + +[[package]] +name = "uvicorn" +version = "0.41.0" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +resolution-markers = [ + "python_full_version >= '3.10'", +] +dependencies = [ + { name = "click", version = "8.3.1", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version >= '3.10'" }, + { name = "h11", marker = "python_full_version >= '3.10'" }, + { name = "typing-extensions", version = "4.15.0", source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" }, marker = "python_full_version == '3.10.*'" }, +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/32/ce/eeb58ae4ac36fe09e3842eb02e0eb676bf2c53ae062b98f1b2531673efdd/uvicorn-0.41.0.tar.gz", hash = "sha256:09d11cf7008da33113824ee5a1c6422d89fbc2ff476540d69a34c87fab8b571a", size = 82633, upload-time = "2026-02-16T23:07:24.1Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/83/e4/d04a086285c20886c0daad0e026f250869201013d18f81d9ff5eada73a88/uvicorn-0.41.0-py3-none-any.whl", hash = "sha256:29e35b1d2c36a04b9e180d4007ede3bcb32a85fbdfd6c6aeb3f26839de088187", size = 68783, upload-time = "2026-02-16T23:07:22.357Z" }, +] + +[[package]] +name = "zipp" +version = "3.20.2" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +resolution-markers = [ + "python_full_version < '3.9'", +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/54/bf/5c0000c44ebc80123ecbdddba1f5dcd94a5ada602a9c225d84b5aaa55e86/zipp-3.20.2.tar.gz", hash = "sha256:bc9eb26f4506fda01b81bcde0ca78103b6e62f991b381fec825435c836edbc29", size = 24199, upload-time = "2024-09-13T13:44:16.101Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/62/8b/5ba542fa83c90e09eac972fc9baca7a88e7e7ca4b221a89251954019308b/zipp-3.20.2-py3-none-any.whl", hash = "sha256:a817ac80d6cf4b23bf7f2828b7cabf326f15a001bea8b1f9b49631780ba28350", size = 9200, upload-time = "2024-09-13T13:44:14.38Z" }, +] + +[[package]] +name = "zipp" +version = "3.23.0" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/web/simple/" } +resolution-markers = [ + "python_full_version == '3.9.*'", +] +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/e3/02/0f2892c661036d50ede074e376733dca2ae7c6eb617489437771209d4180/zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166", size = 25547, upload-time = "2025-06-08T17:06:39.4Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/2e/54/647ade08bf0db230bfea292f893923872fd20be6ac6f53b2b936ba839d75/zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e", size = 10276, upload-time = "2025-06-08T17:06:38.034Z" }, +]