From f4f51b5a1fe3cce9a5e5169b8ccd601723998326 Mon Sep 17 00:00:00 2001 From: lmflash Date: Wed, 22 Apr 2026 11:43:10 +0800 Subject: [PATCH] init --- .gitignore | 5 + .pre-commit-config.yaml | 24 + .well-known/schema.json | 2268 ++++++++++++++++++++++++++++ README | 1 + __init__.py | 0 conftest.py | 120 ++ core/__init__.py | 0 core/metric_manager.py | 82 + glrocky_sdk-0.4.3-py3-none-any.whl | Bin 0 -> 231911 bytes justfile | 62 + pyproject.toml | 76 + scenarios/__init__.py | 0 scenarios/tc_generator.py | 483 ++++++ scenarios/test_cases.yaml | 785 ++++++++++ uv.lock | 1251 +++++++++++++++ 15 files changed, 5157 insertions(+) create mode 100644 .gitignore create mode 100644 .pre-commit-config.yaml create mode 100644 .well-known/schema.json create mode 100644 README create mode 100644 __init__.py create mode 100644 conftest.py create mode 100644 core/__init__.py create mode 100644 core/metric_manager.py create mode 100644 glrocky_sdk-0.4.3-py3-none-any.whl create mode 100644 justfile create mode 100644 pyproject.toml create mode 100644 scenarios/__init__.py create mode 100644 scenarios/tc_generator.py create mode 100644 scenarios/test_cases.yaml create mode 100644 uv.lock diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6950c51 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +__pycache__ +doc.xlsx +.env +logs/ +.config.json \ No newline at end of file diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..10772c9 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,24 @@ +exclude: "^assets|^test/" +repos: + - repo: https://github.com/astral-sh/ruff-pre-commit + rev: v0.11.11 + hooks: + - id: ruff-check + args: [--fix] + - id: ruff-format + + - repo: https://github.com/asottile/pyupgrade + rev: v3.20.0 + hooks: + - id: pyupgrade + args: [--py312-plus] + + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.3.0 + hooks: + - id: check-added-large-files + - id: check-toml + - id: check-yaml + exclude: "^helm/" + args: [--unsafe] + - id: check-merge-conflict diff --git a/.well-known/schema.json b/.well-known/schema.json new file mode 100644 index 0000000..f0096bf --- /dev/null +++ b/.well-known/schema.json @@ -0,0 +1,2268 @@ +{ + "schemaVersion": "2.0.0", + "metadata": { + "name": "xiaomi-Phone-Test-Project-xiaomi", + "uuid": "157f58111-aaa9-4636-b476-20251201xiaomi002", + "description": "xiaomi", + "remoteUrl": "https://gitea.glrocky.cn/aitest-scripts/xiaomi.git", + "branch": "master", + "tags": { + "osName": "android", + "osVersion": "16", + "brand": "Xiaomi", + "model": "2509FPN0BC", + "manufacturer": "Xiaomi" + } + }, + "requirements": { + "devices": [ + { + "type": "phone", + "os": "android", + "count": 1 + } + ] + }, + "cases": [ + { + "name": "TC-0101-audio", + "description": "AI代接", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0102-audio", + "description": "通话实时翻译", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0103-audio", + "description": "通话摘要", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0104-txt", + "description": "文本通话", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0105-audio", + "description": "AI通话降噪", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0106-audio", + "description": "AI隐私保护(防漏音)", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0107-audio", + "description": "对话翻译", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0108-audio", + "description": "面对面同声传译", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0109-txt", + "description": "AI短信", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0110-txt", + "description": "AR虚拟表情", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0110-img", + "description": "AR虚拟表情", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0111-video", + "description": "视频电话AI鉴伪", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0201-img", + "description": "日程管理", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0201-audio", + "description": "日程管理", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0202-audio", + "description": "语音转写", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0202-video", + "description": "语音转写", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0203-doc", + "description": "智能纪要", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0204-txt", + "description": "文稿创作", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0204-img", + "description": "文稿创作", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0205-txt", + "description": "文稿润色-文本", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0205-doc", + "description": "文稿润色-文档", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0206-txt", + "description": "文稿排版", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0206-doc", + "description": "文稿排版", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0207-txt", + "description": "长文本摘要", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0208-doc", + "description": "文档摘要", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0209-doc", + "description": "多语言摘要", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0210-img", + "description": "图片转表格", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0211-img", + "description": "表格提取", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0212-txt", + "description": "文件搜索", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0213-txt", + "description": "图片搜索", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0301-txt", + "description": "用机问答", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0302-doc", + "description": "文档问答", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0303-txt", + "description": "对话问答", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0304-txt", + "description": "网页问答", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0305-img", + "description": "多模态问答", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0305-audio", + "description": "多模态问答", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0305-video", + "description": "多模态问答", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0306-txt", + "description": "深度推理", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0307-txt", + "description": "文本翻译", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0308-doc", + "description": "文档翻译", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0309-txt", + "description": "网页翻译", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0310-audio", + "description": "口语陪练", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0311-img", + "description": "图片解题", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0312-img", + "description": "拍摄解题", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0313-img", + "description": "试卷还原", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0314-img", + "description": "作业批改", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0315-img", + "description": "作业讲解", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0401-txt", + "description": "智能体唤醒拍照", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0401-audio", + "description": "智能体唤醒拍照", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0402-img", + "description": "笑脸抓拍", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0403-video", + "description": "录制视频(美颜/美化)", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0404-video", + "description": "识文", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0405-img", + "description": "识物", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0406-img", + "description": "AR翻译", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0407-txt", + "description": "文生图", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0408-img", + "description": "AI路人消除", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0409-img", + "description": "AI物体消除", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0410-img", + "description": "AI扩图", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0411-img", + "description": "图片风格转化", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0412-img", + "description": "涂鸦生图", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0413-img", + "description": "图片翻译", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0414-img", + "description": "AI搜图", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0415-img", + "description": "AI美颜", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0416-img", + "description": "AI美化", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0417-img", + "description": "智能抠图", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0418-img", + "description": "闭眼修复", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0419-img", + "description": "一键成片", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0420-img", + "description": "视频字幕生成", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0421-img", + "description": "视频翻译", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0501-txt", + "description": "公共服务查询(天气/交通路线/节假日等)", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0502-txt", + "description": "通信业务查询(话费/流量/短信等)", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0503-txt", + "description": "生活费用查询(水/电/煤/物业等)", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0504-txt", + "description": "生活建议(美食推荐/穿搭建议等)", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0505-txt", + "description": "系统控制(开关机/音量/字体等)", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0506-txt", + "description": "应用管理", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0507-img", + "description": "AI圈选", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0508-audio", + "description": "智能打开乘车码(地铁/公交等)", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0509-txt", + "description": "商品比价", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0509-img", + "description": "商品比价", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0510-txt", + "description": "AI导航", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0511-txt", + "description": "网约车", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0512-txt", + "description": "行程规划", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0513-txt", + "description": "健康问答", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0514-txt", + "description": "AI读屏", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0515-txt", + "description": "AI看见", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + }, + { + "name": "TC-0601-audio", + "description": "语音唤醒", + "supportedMetrics": [], + "materialParams": [ + { + "name": "paramGroupUuid", + "description": "UUID", + "type": "text", + "isArray": true + }, + { + "name": "inputTextList", + "description": "对话列表,支持多轮对话", + "type": "text", + "isArray": true + }, + { + "name": "prompt", + "description": "提示词", + "type": "text", + "isArray": true + } + ], + "parameters": [] + } + ], + "commands": { + "generateSchema": "uv run --reinstall-package glrocky-sdk pytest --co --generate-schema --continue-on-collection-errors", + "startTest": "uv run pytest" + } +} \ No newline at end of file diff --git a/README b/README new file mode 100644 index 0000000..eb509a8 --- /dev/null +++ b/README @@ -0,0 +1 @@ +Honor \ No newline at end of file diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/conftest.py b/conftest.py new file mode 100644 index 0000000..ca4ccb2 --- /dev/null +++ b/conftest.py @@ -0,0 +1,120 @@ +from typing import Callable, Literal +from glrocky.framework.schemas import ( + TestSessionRuntime, + Device as _Device, + TestCaseExecutionState, + TestCaseRuntime, +) +from glrocky.framework.const_stash_keys import CASE_RUNTIME_CONFIG_KEY +import pytest +from glrocky.framework.schemas import TestCaseMertic as MetricItem +from glrocky.framework.schemas import TestCaseMetrics as MetricPacked +from glrocky.core.logger import core_logger + + +@pytest.fixture(scope="function") +def device_info( + request: pytest.FixtureRequest, +) -> _Device: + runtime: TestSessionRuntime | None = getattr(request.config, "project", None) + if runtime is None: + raise RuntimeError("unreachable!!!!!") + ret = runtime.devices[0] if runtime.devices else None + if not ret: + raise RuntimeError("no device found") + return ret + + +@pytest.fixture(scope="function", autouse=True) +def metric(record_metric: Callable[[MetricPacked], None]): + """usage: + def test_g(metric): + metric.span() # optional + metric.add() + metric.add() + metric.send_all() # optianl + """ + + class M: + def __init__(self): + self.data: list[tuple[str, str, int, list[MetricItem]]] = [] + self.span() + + def add( + self, + name: str, + value: float | int | str, + label: str | None = None, + type: Literal["number", "image", "video", "text"] = "text", + ) -> None: + metric = MetricItem( + name=name, value=value, label=label or name, unit=None, type=type + ) + self.data[-1][-1].append(metric) + + def span( + self, + material_type: str = "default", + material_id: str = "default", + material_iteration: int = 1, + ): + # DO NOT ADD DUPLICATE ITEM!! + if len(self.data): + last_span = self.data[-1] + if all( + ( + last_span[0] == material_type, + last_span[1] == material_id, + last_span[2] == material_iteration, + ) + ): + core_logger.debug( + f"SKIP DUPLICATE SPAN:{material_type=},{material_id=},{material_iteration=}" + ) + return + + self.data.append((material_type, material_id, material_iteration, [])) + core_logger.info( + f"added new span for metric:{material_type=},{material_id=},{material_iteration=}" + ) + + def send_all( + self, + ): + if len(self.data) < 1: + core_logger.debug("no materics to send") + return # no span at all,skip + + data = self.data[::-1] + self.data.clear() # TODO: not safe,to be improved + core_logger.info(f"{len(data)} metrics for send.") + while True: + if len(data) == 0: + break + item = data.pop() + material_type, material_id, material_iteration, metrics = ( + item[0], + item[1], + item[2], + item[3], + ) + if len(metrics) == 0: + core_logger.info("skip empty metrics") + continue + for_send = MetricPacked( + type=material_type, + material=material_id, + iteration=material_iteration, + metrics=metrics, + ) + core_logger.info(f"rebuild metric:{for_send=}") + core_logger.info("sending metrics to executor...") + record_metric(for_send) + core_logger.info("sent") + + _m = M() + yield _m + try: + _m.send_all() + except Exception as e: + raise RuntimeError(f"Cloud not send metric to server,Detail: {e}") diff --git a/core/__init__.py b/core/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/core/metric_manager.py b/core/metric_manager.py new file mode 100644 index 0000000..751692d --- /dev/null +++ b/core/metric_manager.py @@ -0,0 +1,82 @@ +from pathlib import Path + + +class MetricManager: + def __init__(self, metric): + self.metric = metric + + def new_span(self, m_type: str = "default", m_id: str = "default", m_iter: int = 1): + self.metric.span(m_type, m_id, m_iter) + + def _smart_name_label(self, name: str, label: str | None) -> tuple[str, str]: + """retruns: (name,label)""" + if not name: + raise ValueError() + if not name.strip(): + raise ValueError("Empty name") + + if label: + return name, label + for sep in ("|", ":"): + if sep in name: + _n, _l = name.split(sep, maxsplit=1) + return (_n, _l) + return name, name + + def add_text_metric(self, name: str, value: str, label: str | None = None): + _n, _l = self._smart_name_label(name, label) + self.metric.add( + name=_n, + label=_l, + value=value, + type="text", + ) + + def add_number_metric(self, name: str, value: float, label: str | None = None): + _n, _l = self._smart_name_label(name, label) + self.metric.add( + name=_n, + label=_l, + value=value, + type="number", + ) + + def add_image_metric(self, name: str, value: Path | str, label: str | None = None): + _n, _l = self._smart_name_label(name, label) + self.metric.add( + name=_n, + label=_l, + value=str(value), + type="image", + ) + + def add_video_metric(self, name: str, value: Path | str, label: str | None = None): + _n, _l = self._smart_name_label(name, label) + self.metric.add( + name=_n, + label=_l, + value=value, + type="video", + ) + + def send(self): + self.metric.send_all() + + def from_dict(self, the_dict: dict): + if not the_dict: + raise ValueError("dict is null") + for k, v in the_dict.items(): + if isinstance(v, (int, float)): + self.add_number_metric(name=k, value=v) + elif isinstance(v, str): + self.add_text_metric(name=k, value=v) + elif isinstance(v, Path): + if v.suffix.lower() in (".jpg", ".png", ".gif", ".bmp"): + self.add_image_metric(name=k, value=str(v.resolve())) + elif v.suffix.lower() in (".mp4", ".mkv"): + self.add_video_metric(name=k, value=str(v.resolve())) + else: + self.add_text_metric(name=k, value=str(v.resolve())) + + else: + raise NotImplementedError(f"{type(v)} not supported") diff --git a/glrocky_sdk-0.4.3-py3-none-any.whl b/glrocky_sdk-0.4.3-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..09529a508ee0d561e265ac42a9491a56b1b8d39a GIT binary patch literal 231911 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

Mu6bJaS-qqO7uZO1gi)} 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

Ngl z&wXp9M>n`zj&!T{5khrwCo~7j+r*@Jrkwl^leS9lQ*FTb5)t9Bbs1T9zmn@t2a2#}H+# z)M@#qUG_=lPX(RplgNH9bR#lpW0Uuq2vr(vmSlJx2W-^NBq#4DAzR=a+v$KQN) ztBME)zDcmCB!$h(nuGe2ar=|>8Itl`O9m9w*dc)^G3T78$|D6i?iJb_Uy;pWA}P)- zXX@_Pq!m|CicHF*5^|VyB5isqPo(aQWP23)ZftRIM^XiG6E3LJhk6vN>sXfzTE(80 zzdCuf=Ns^3YZPmoo;=9hB@}zXwWhtZjF61pxwNPWO(4r8wTPSYaH#z>@h#~%e<-TCyT3_?cAV>hRK z@IWgiHg&pH!}R{WT6V+1`L#*iV9Na*-ZyFPUpu|Ghv;60yG$Ys@$xCQ$81!RRJBDb zecSz}vX&m8P3RVez>0J{u!6%2^*W!jopXARDL02Ed{aoqaQhfXq?#f*#0-Z%d)MS< zgjrTd5RwU^p9TfUC)exS*9UxCFOO$6dl2ay9}XHGSKLJ% z4&!$+OMJ>dfx0LR^Fb?I30YB)CkNTBUbgmw-7QCy91~_Wo91%7c0$EF2uL&X*!OgH zY7e4jQdTX`>oQ3N@(gyeg5}5%#CgpYv*Ht!YC7JE#J+1M4$#r3!HIRMm4c&_Im?4g zz45fpEka!D*1LgjE(0v}znNRf3$xfh_%vP^NM8_WhXid3K?3c$G;M43<5|s<&QI6M z>MJ33C#qB@_20qE^G1Q*vJ*zE1iy&EU@-APPzX6up8Vhr-{ti=kFW)k1blzD>`T~_ zD%R5|r(Pc;t67YhF+_c$`85@NBsi`x;1~i3CPH58&6jA>@nu0_k^@ry8Nav*@=rtB zgV>Y$^6H)h0=nt?w}e}>1*RyysUEz-`e5uHlg@?CWH=pEs@)%aFM?}tPBY_$n6R-? z5qS+p+qhV2D6Y3U^=?3>2VtRy>&>_4?^-N@Jc*;Wd&_`dr8*nqLMLZH7v-{EUktWg z|8CEW;D~}!%~Oz7=UBUxa%3y|y&-OZb<@t?xwGoEkev8K-cJeQpo73%I_0@C6>0F+ zEVILUm4?Xqjd=!De!($4rosd}A0{g486LKcSTXA_xJD%9B#8qa)7j$<^ga&!-`}Em z@OR3@*166&dQ=Q0s`tgjiT0jkJUER$^fk}1FPmvapiO^VAJX>V!FFlYQo_=D?$eex z9mtv}bxtLsC_>GPhVSHGo-1N{wVyQh4ZlcHSxIZ9S&qbP)PKHupTz(^cxK2S)yExY zq%qtbqgW|KNLO%A6R#|88B)c$Z^5^452Md0`ymDW%*SUL6;;;nn=(bCjpLroV8S8^ zEt#usqo0hG?yc`|$!MhP#@o`8vVoT>r}cW8yj>3x>$@$}(CHDX=ay45DXJSqQ@(n+ z*-cUzjdT)XDBUyb+SlZnHSXiV(bkyT7rwt_%0x}+-2aK)m!>27NuTP9yTogh0X^Az zFPgb2Wp^*9li~FTkJkyxA|G%%g9NG7q+t6fH*zS~eR5Wxce|!Wi+@_fEveB35lxwX zEVbFuV@%wgrzG;HeCPF)o6#UEPpivoBC%)geZXd#=Bu8i+f`#0`fUNXhKUHynom}R zhQ3WKyuOVj=a+VuM}l7!>BDgn4~N?@X|J`xfhLAq7*BGFHKob}l=>wJ)3fF$V;|nz zjdoia(xNY{htqt)X>wKzL3mm^HYnn=}jD0n4|Saj@7+tYx~Z_Yp*)7Yp`vV zmpeCXW+Jqq1~gSK9kh&nFjgkeiZ>cd@ly5K96WZ0q^ds$PzpbZZ7F2{S+Ah1cQ$yC*@WyUnt$tk^H2I=V=W9UUP_vYQW`nqRN^YT|Q!#z2k-VEyW`sg5h<<2{j##>~l2>ZL*wT>X7hVX-of%z9-CJj+A6ZL0jd( zK3x2w+XyH2Bi}V4iOmz)lP_svS&>&yLm3-5lPYZ_o78dZAM;;CHdKpDdmmTylJBqwG(W`qUl95sd zKe5kPS4qrqYD=1EXD!*SNseIVQi{d%obtO%;?2D2(I)Yl-XpD)@5@JZuM|85gqi}z z6lp|mz~;H3WQSTLFXuZ50n0&!#Z3{gqFe{l4?L>-V7v%k)(N6nA{*f=u)$i|lGaiU)eemGMfK{hdek&K6BD+@e-2FDYAvvym$S0JgpldnKCF8^=J0t{XQ}YrQU>M>LR#Cxh@V<65%v57DTQq$ zEj+DNVkNDJAQ`#7c;XMApmE{h^3D$?u{9lO=U-NW7kF?T6EN^QfFt?4DsYpC4xWsV zw~QOfXe{QRlzJCn#k6CATV^sl@mF`>*)HYsw8(CU>&XR}R6PEuGUV&-VwSI6+~4e+ zXnOwi;M)tVoQ{nwpKb{JE#B93PE_9RMDiu8Tud{)Hm!DO>S_nWMlkMCt)w#4fS3 z^-M4XiQ4wIYf-emaQVl{CN}?+r&MvgOdMa-;>X9OPo%b2EvTQMI7)%FKST zg3Qy!mxP0HusI=&XV-37W2OepXgi+HRi%I7LRmYbe=NI?shw--4mIetsuzb7AOys?{AGWLZ&!&3mzr zyAVPPLwKtj-jcRw4O6Pc*DDmkB^FrMfzJ1;?xSpr%bEtrwAphpS(f9*=3U%|6I*z7$B}(GUmEwvO4)+jym^`M}5Y*temu6UuDD zWIPH9^L>fH&BZMF!e)6MtB4TqsF7ew+Mv9x!@yJ8wsfI&wqY4Fc@f(Macu2*GFV&u z{!s+m!EkwYfKOV%`0*;=x8V9ix$T0l2fRdUyGzf3-U>^B^$1zuMz}!>f`z&IU?0ho zJAo@q*dUy<)0v$1b%RCA=GUB|+8D-fRAkl=+x;XpB>Kpx^Q3U^o2Aqi<|{G9C8!** zc`G#st8y1)qb8hBM}LPa)1n?LP8GNzS&&Cx3RQ-ha5|EQF+SEJ`Lbb}`?4fIi`mxA zeyJQ|?qkqc_xi1K^QGdvC%C#pairKEDI><811|=uto0@zXFd+{z~#%?CrXdO;io=@ zjDOLeDy~L=KgH#zCu!KF-q>D~tbzZCEXLY@kSoM_6fC48rtjB`FJ?Yk2E#FzB;It-63udk#d2?`q7k(JJz8Uj2=Un*{A zHjk<2&jxCe98-K@Qb8W6F5iAMJ%@S>MgDTMJ+E;f%_L>5il2 zR$)^2YH}`;-gj>m=9Kw$z_A!iG9qB^=j~cua`=!5He^xt8sW3a@E&Nyp56RC+r7|c z;~Afi(2t`m{MbGsW>{k_M3YiWVzFh!Ba-i(6OAbA%7=GK9^QiXpV0E?8>8m06F6AW zm$75eyT0zs%W14M)ts>xqkT%|{w>#$3b^Z=CAIG3ki3yxk2_dhy|;*bk(euwF+hXL zVjoQ{Bs~SP%%jEx$+w3Wy7S1rY6JRlk+$OgxNu2MQEFW9JNd3)PrN5v6TSFpA`Gp( zss`JUS~(9}VBrs&hUJc>oTl-1QMczK-cB&nH*T9N*mtd|fRzew6(v@Y#x+QG?22Eg^0T+O8x z_oG%!p6o@^`#GgqPUy2CY^A*U7&lDdroedvbhda79BqYx#R2{Oz6I_ANct_XXfF%w zqhJHyKb}mVi=TeHeW9xhv4Ys^>M~oq{0!iv^~}ZtHelKiKp@;7zYTn6`po|W0Jd_3 z*g~x=f$gj-7^oGf3nYL7OaSNhB?c?-D##Bdz|MwXYkLUP%I*rpH={6WA!HC}iU>TthbpPDe{BK(>ehX0HkLTj$lOIo}&pz-v$`3vCO#mzGSS+Ci z5DT!bgB_UV8uyHdrb==FI`uyJb93ZxBtLNC_t(fjgj`{#T;>P^)R z_d1@nE!5KbD&JE})8DZKe4h?LFE-JBJefX|%+~?!A(mjM!&Srxyr=Jhlgyxpzz6>a z4*1UW31$5U(ZL7;z0PwYPkqax0i~*esFGa5oc|Zb4(ecKq-&{f1-Q-j3a_QYiS-2n zMxp_{%h}Px@wZBb7Lbd#2XyVhc30WezU>k&31m4r76^3bl0u|#AMZ?E0a5KTIj{$8 zI0ZhJZSfWS2Lx(+ZE{B>*7ZpNcHjabx*TaHp`R$m7j4A?c$Mo4Wk{W(U*ZEVcBlev z|8k@YMSsFTEG-@E^$je*Mn(|BtAezmOB7WJc&7qr^_R;LjLc6g3#iG}+47ku_sj^; zC+QaGk4pI?)|oyVKu-T?vxXPWv4&WKuds-kg36Zz(83OI4#AIK2fj0X{DAHAO9VT6 zsI@NG@#?~uST5tf3~=%QYc6xPfUWo+93!wJ#1L%9@}KW3^wE~xLH!Ekiy0CKM0QD^ zn`-~f0UTqfZ?9_$);GGcHQiH)#B2rpvko|z;u4Kj+{SP4Uo$0dQ@|CfGN`3Z zMFN;9-~)64e?6H#ji%RP?JhDHh>M+r#Z@io0`wy)_x_?@sG9`2mTL-jum#Sq{10!) zFzjTA0L?=YNXg6i^?!{AUbnFaisV(}fy9+t;Whw17{Ie!(%#eZ-)axG0R{_K!D|aA z*H8d>6VM2NzUZ$f(?`JO-@+kwx@LCJs|tK)!gJdOfGz-3RldL27mkkxO7@RN|BvSI zBlrH{c#DgQVrOa(h5#+^qS0KDIMb9^PauGt&%jUu=mr0JGJT4i|E(NbunE{1=y>f7 zO|OtJ`sQ5@3P9%rIyzu5@z;~-W9t5|B|sfat}3w?u&dLv*7sUA(BO5=9E?nWf_crj zjmIeS%{`#<5&;h4`AhMOAYl6aTfDWttsTV5MAsB-VGXvuDv|zagvcc+vHt&7ioTT{ z@Ln{~j)9o#TNz&4VH5L~u?+!9s}1z|LYL$n{=U3lR;J~t!|qzZhpzx1UY5of`rFoB zIQ7b2sbUN&0>Jei=VT zuf~mbpjdbSqrl7V>`wlDaX$k1KjJ5J$(`S`|E~gp@abDvTvt$x?q(4X00Wad!0h3{ zC21NtzbWmPk!z%y1SbQLa|a@KSyoTMZ_4^**lM5YPwE5B?j0}}x$MQZqTiJDFJlHw zm;QP(eV)Jnx6+LD4ef!B9b)ftUAz_!DtD-Wcxhw)+zZeBj-+44N=0QwrW=SAAt38= zZ?9MV8y5XCPKq7a?X*CgsBwUi#b18A=+K_k{Dz!=8KcWxCt}OLm1F`;iS(~+Ph^6A zh>Jjed!T_pT$k+8{l7~2Wo#4(p$rPZX#E6Os<|v9q5c18$uHxgDPipR0f;{;V9RB1 zJ?Q;E%J`Qt0Veo=J()fV{r^^qDNx}Y3?Wwka}IX5n(MJMkj~F;fa#0Uq))7=pY~lh}6Z5<8qy=nfnckei^23 zUCi)mfIa)b?CG-S@)v$X&Tqv?bM@a!0#=WW9W1QCz->m?Oh(8E)Lo{4q2|fOTz5yhrciGmw^L+=Qth%0@njrciEjhN53!bn)uleQ+Q|sc0~an>Pz<7pIt2wD0&vx zHYOe2js*fBLV-Xnr@e%{d43)8&sDe!{1tPFtse81aRBBEv>t{_P-_^NE9>>2dS29M z3p?G5At}_>Q+Lk=XL zA5hszFQGQCME$XarfaBgYjlNPk91QPJ^&CTz`2(bOBVAgy?}|joxLt_`JA1pt~uD{ zs`Y>zjWKI(ApQ{m5^(8XPo~c!tgDcg`nKj*an1+YdKrN!J}0oWNcb1!BIMOKui{u+ zIG9|yQu88Pv)gXiraJ?(guBk5JvYD^N{kd&& z1(B2joze^--UWy>mxyq{(%_Fl*x$MPm({>}DA*RFe^sHFVWek^0+|@a)>be0nc>teMTv9iT>v}ZU{;HkIysvUvWq_*WKrel{ro95v{2KHB z-0J!Dj)kIIL=82NO)fz3x$J{@zH7n%dn<`o)fmi<3Ic5aS;~IN2S^XDLjT!z>{x&u z+l#R>SohC1p!>@JYmP(ZA~hF4@-NN1(E7tjor zZv9-1Xq2v_0=xPqKr_3l$xdZ(LDzvy&;yc}@{*!UYS$rc!B#*mzCuTF3t?uS3R&xkSX(X*AjX#uxL5#h zHUDTze=75f6alGQo+1OoE?8jtN&lA`7rg?p{m%#puxQO<0o6AG)|H`up`U0h7} z-$!1)ewaeI0cgbwRCel1SWDL{v455ypj!p@B!Q4#f#jtkOk4sI+UI_jT8=c`&s$B5ikJ`h$}z^j){mw$F0@tQ_g z>@?hWG1Bn?K9{pa062c~!*mOX!L>OTEiPhQ2-FxV@}K+d#(z*O4Xs&>Aja1&V%CU9 zB0UFmkppt?@(3U|@^5{B+0CB^2(Fpeyyu``y{Of|nB*tR%%ZL!*#ox~0K=r84~uD0 zIh>RO1<4l}A6-7X()BCKf2VA}bH39mP%F|N{ye0te0hZ`fB5L)pDR+8bXwi*!Xi%K zbGgf$D!Kw?0t~A4uN$J?rPtie1yV{6=rS)4QRRz&$@_zPg>n;uhB|ftj2>v7my?O( z_1~}`hkRHbNsEfhDU1K?^4bD;{)@fWixK|i6qtB(1?8F)fC^drUlg%*pcP)$NBr$o zBz8q*-ED{6O)h~~3zrVYR^2^bg7|qPiDqxfjpweZ~cGXp&Uyeihx$y%0 z0Eix7*JThcurT|h(f;M|m+f;xOe{tQ&k0;Zo>>8ZDm60tJVx(&d0R~34hNf3FpTa6) zXc%B@BT$nsldYS6t*EKKttHgTv z13704RE^7(-oEwMG-qpldsE$uS?(21z0e7;{Ez2ycU0PW1=1EcDhaG1T~|9`Mp&7l z0MZ$#{FiIT?sdeA>yH1sMn+l)FA7}D>wypDf7HDA%JfO?xkA1FT&ixY5A*}TnH1ok zpUX(My*cXwP`O!w5h}$cAo0qtfq!0CYie(4@iR|yfDP_bEC`gE3G>s|is;s_d4@(- zEWii2kqB5efjHVSTY>FatgJ0r938+yY(L8|S@}HbkqQE_CBgo*Vy_zj``-=w$IbE= zGJs_nW-}WHFt8?L2(@JS^G7CjW-ew{W=mkQZD#kgu%9ok|KX!dA6`1RUkm%^HTFLv zf4=nkZ=?d_uaSRUf&DY?=X;F*#&t4Zi~G;u@xN{U`QqZgiA*fl5`SD{{IiNbUrqHl zFzNoaz#kV?{S$a`MbOVzE&UB77W@l%<%K~%U%d1)`RD79{w5Fn5Aq+EBmIo~`7Wcs xabThA75#Cu(a*%6ujTohxF&o(@y|<6!`BhFi6VL0QwNn{{#O@R;K^} literal 0 HcmV?d00001 diff --git a/justfile b/justfile new file mode 100644 index 0000000..2890b79 --- /dev/null +++ b/justfile @@ -0,0 +1,62 @@ +set shell := ["powershell.exe","-NoLogo","-NoProfile", "-c"] # windows +set dotenv-load +set quiet :=true + +@_: + just --list + +[group("build")] +generate-schema: + rm {{quote(".well-known"/"*.json")}} + @fd -e json -H "schema" + uv run --reinstall-package glrocky-sdk \ + python -m \ + pytest --co --generate-schema --continue-on-collection-errors -q + mv {{ quote (".well-known" / "schema_autogenerated.json")}} {{ quote (".well-known" / "schema.json")}} + @fd -e json -H "schema" + +[group("qa")] +lint: + uvx ruff check --fix --unsafe-fixes . + uvx ruff format + +[group("run")] +[doc("run a specific test,eg: j run 0101_02")] +run TEST: + uv run python -m pytest -sqv -k {{TEST}} + +[group("clean")] +clean-pycache: + @rm.exe -rf .pytest_cache .mypy_cache .ruff_cache .coverage + rm.exe -rf log out + @fd -td -I "__pycache__" -x rm -rf '{}' + @echo "✅ Done" + +[group("clean")] +clean-cache: + @rm.exe -rf .pytest_cache .mypy_cache .ruff_cache .coverage + +[group("clean")] +clean-out-and-log: + rm.exe -rf logs/ out/ + +[group("clean")] +clean-all: + just clean-cache + just clean-out-and-log + just clean-pycache + +[group("dev")] +[doc("invoke ipython with u2")] +debug-u2: + uvx --with uiautomator2 --with .packages/glrocky_sdk-0.1.2-py3-none-any.whl --directory . ipython + +[group("dev")] +[doc("show android ui")] +debug-ui: + uvx uiviewer + +[group("dev")] +[doc("start test executor server,from glrocky framework")] +debug-srv: + uv run api-test-server diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..583b12f --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,76 @@ +[project] +name = "xiaomi-Phone-Test-Project-xiaomi" +version = "0.3.1" +description = "xiaomi" +readme = "README.md" +authors = [{ name = "liumin", email = "liumin@glrocy.com" }] +requires-python = "==3.12.6" + +dependencies = ["glrocky-sdk", "uvicorn>=0.34.2"] + +[tool.pytest.ini_options] +minversion = "8.3.5" +#addopts = "--no-summary --no-header -rfEX --strict-markers --capture=tee-sys " +addopts = "--capture=tee-sys " +testpaths = ["scenarios"] +python_files = "tc_*.py" +markers = [] + +[tool.pyright] +venv = ".venv" +venvPath = "." +reportMissingTypeStubs = false +reportUnknownMemberType = false +[tool.uv.sources] +#glrocky-sdk = { path = "../../packages/glrocky-sdk" } +glrocky-sdk = { path = "./glrocky_sdk-0.4.3-py3-none-any.whl" } + +[[tool.uv.index]] +url = "https://mirrors.aliyun.com/pypi/simple/" +default = true + +[tool.glrocky] +remote_url = "https://gitea.glrocky.cn/aitest-scripts/xiaomi.git" +branch = "master" +uuid = "157f58111-aaa9-4636-b476-20251201xiaomi002" + +[tool.glrocky.tags] +osName="android" #adb -s 513a205d shell "getprop ro.build.version.release" +osVersion="16" +brand="Xiaomi" #adb -s 513a205d shell "getprop ro.product.brand" +model="2509FPN0BC" #adb -s 513a205d shell "getprop ro.product.model" +manufacturer="Xiaomi" #adb -s 513a205d shell "getprop ro.product.manufacturer" + +[tool.glrocky.commands] +generateSchema = "uv run --reinstall-package glrocky-sdk pytest --co --generate-schema --continue-on-collection-errors" +startTest = "uv run pytest" + +[tool.glrocky.requirements] +devices = [{ type = "phone", os = "android", count = 1 }] + +[tool.glrocky.project_settings] +screen-record-extra-commands = [ + "--window-x=1380", + "--window-y=50", + "--always-on-top", + "--disable-screensaver", + "--window-borderless", + "-m", + "600", + "--video-codec", + "h264", + "--video-bit-rate", + "5M", + "--max-fps", + "60", + "--time-limit", + "3600", + "--print-fps", + "--video-buffer", + "100", + "--no-audio-playback", + "--no-audio", +] + +[dependency-groups] +dev = ["ruff>=0.12.2"] diff --git a/scenarios/__init__.py b/scenarios/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/scenarios/tc_generator.py b/scenarios/tc_generator.py new file mode 100644 index 0000000..f2959f6 --- /dev/null +++ b/scenarios/tc_generator.py @@ -0,0 +1,483 @@ +import os +import re +import sys +import json +import time +import concurrent.futures +from dataclasses import dataclass +from pathlib import Path + +from typing import Callable, Any + +import pytest +import yaml +from glrocky.core.logger import logger +from glrocky.framework.marks import Marks as M +from glrocky.framework.schemas import Device +from glrocky.services.dify.dify import run_workflow +from loguru._logger import Logger +from pydantic import BaseModel, ConfigDict, Field, field_serializer, create_model +import socket + +PRODUCTION_ENV_NAME = "GLROCKY_PRODUCTION_MODE" +PRODUCTION_EXECUTOR = "192.168.0.139" +YAML_FILE = Path(__file__).parent / "test_cases.yaml" + +def _get_local_ip() -> str: + s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + try: + s.connect(("8.8.8.8", 80)) + ip: str = s.getsockname()[0] + return str(ip) + finally: + s.close() + + +def _is_production_mode() -> bool: + env_val = os.getenv(PRODUCTION_ENV_NAME) + if env_val is not None: + return env_val.lower() in ("true", "yes", "1") + return _get_local_ip() == PRODUCTION_EXECUTOR + + +def pre_process_material(input: list[str]) -> str: + + assert isinstance(input, list) + if not input: + return json.dumps([], ensure_ascii=False) + result = [] + for text in input: + splited = _Q_PATTERN.split(text, maxsplit=50) + for part in splited: + if not part.strip(): + continue + result.append(part.strip()) + return json.dumps(result, ensure_ascii=False) + + +IS_PRODUCTION = _is_production_mode() + +METRIC_FIELD_MAPPING: dict[str, str] = { + "result": "result|结果", + "_dify_result": "_dify_result|业务完成", + "_dify_message": "_dify_message|业务错误信息", + "resultText": "resultText|文本结果", + "recordVideo": "recordVideo|录像", + "recordAudio": "recordAudio|录音", + "screenshotList": "screenshotList|截图", + "firstToken": "firstToken|首字符时长", + "timeSeries": "timeSeries|时间序列", + "fileList": "fileList|文件", +} + +IMAGE_EXTENSIONS = {".jpg", ".png", ".gif", ".bmp"} +VIDEO_EXTENSIONS = {".mp4", ".mkv"} +_Q_PATTERN = re.compile(r"Q\d+\s*[::\.]+\s*", flags=re.MULTILINE) + + +@dataclass +class _TimeoutCtx: + client: Any = None + task_id: str | None = None + + def stop(self): + if self.client and self.task_id: + try: + logger.info(f"Stopping workflow: {self.task_id}") + self.client.stop_workflow(self.task_id) + logger.info(f"Stopped workflow: {self.task_id}") + except Exception as e: + logger.debug(f"Stop workflow failed: {e}") + + +class MetricManager: + def __init__(self, metric): + self.metric = metric + + def new_span(self, m_type: str = "default", m_id: str = "default", m_iter: int = 1): + self.metric.span(m_type, m_id, m_iter) + + def _smart_name_label(self, name: str, label: str | None) -> tuple[str, str]: + """retruns: (name,label)""" + if not name or not name.strip(): + raise ValueError("Empty name") + + if label: + return name, label + sep = next((s for s in ("|", ":") if s in name), None) + if sep: + _n, _l = name.split(sep, maxsplit=1) + return (_n, _l) + return name, name + + def _add_metric(self, name: str, value: Any, m_type: str, label: str | None = None): + _n, _l = self._smart_name_label(name, label) + self.metric.add(name=_n, label=_l, value=value, type=m_type) + + def add_text_metric(self, name: str, value: str, label: str | None = None): + self._add_metric(name, value, "text", label) + + def add_number_metric(self, name: str, value: float, label: str | None = None): + self._add_metric(name, value, "number", label) + + def add_image_metric(self, name: str, value: Path | str, label: str | None = None): + self._add_metric(name, str(value), "image", label) + + def add_video_metric(self, name: str, value: Path | str, label: str | None = None): + self._add_metric(name, value, "video", label) + + def send(self): + self.metric.send_all() + + def from_dict(self, the_dict: dict[str, Any]): + if not the_dict: + raise ValueError("dict is null") + for _k, v in the_dict.items(): + k = METRIC_FIELD_MAPPING.get(_k, _k) + logger.info(k) + + match v: + case None: + self.add_text_metric(name=k, value="") + case int() | float(): + self.add_number_metric(name=k, value=v) + case str(): + self.add_text_metric(name=k, value=v) + case Path(): + match v.suffix.lower(): + case s if s in IMAGE_EXTENSIONS: + self.add_image_metric(name=k, value=str(v.resolve())) + case s if s in VIDEO_EXTENSIONS: + self.add_video_metric(name=k, value=str(v.resolve())) + case _: + self.add_text_metric(name=k, value=str(v.resolve())) + case _: + raise TypeError(f"{type(v)} not supported") + + +class DifySettings(BaseModel): + difyUrl: str = Field( + title="Dify服务地址", + ) + difyWorkflowId: str = Field( + title="Dify工作流ID", + ) + difyApiKey: str = Field( + title="Dify API密钥", + ) + + +class MaterialForDify(BaseModel): + paramGroupUuid: list[str] = Field( + default_factory=list, title="UUID", description="UUID" + ) + inputTextList: list[str] = Field( + default_factory=list, + title="对话列表,支持多轮对话", + description="对话列表,支持多轮对话", + ) + prompt: list[str] = Field( + default_factory=list, title="提示词", description="提示词" + ) + model_config = ConfigDict(arbitrary_types_allowed=True) # allows uuid extra... + + +class DifyPayload(BaseModel): + inputTextList: list[str] | str + prompt: list[str] | str + deviceId: str + address: str + caseId: str + parameters: dict[str, Any] |str| None = None + + @field_serializer("inputTextList") + def serialize_input_text(self, value: list[str] | str) -> str: + if isinstance(value, list): + return pre_process_material(value) + return value + + @field_serializer("prompt") + def serialize_prompt_as_single_str(self, value: list[str] | str) -> str: + if isinstance(value, list): + return value[0] if len(value) > 0 else "" + return value + + +def create_dynamic_model(model_name: str, parameters: list[dict]) -> type[BaseModel]: + field_definitions = {} + for idx, param in enumerate(parameters): + name: str = ( + param.get("name", "").strip() if isinstance(param.get("name"), str) else "" + ) + if not name: + raise ValueError(f"参数定义错误: 第 {idx + 1} 个参数缺少 'name' 字段或为空") + + label = ( + param.get("label", "").strip() + if isinstance(param.get("label"), str) + else name + ) + description = ( + param.get("description", label).strip() + if isinstance(param.get("description"), str) + else label + ) + param_type = ( + param.get("type", "string").strip() + if isinstance(param.get("type"), str) + else "string" + ) + + if param_type not in ("string",): + raise ValueError( + f"参数 '{name}' 不支持的类型 '{param_type}',目前仅支持 'string'" + ) + + default = param.get("defaultValue", "") + if default and isinstance(default, str): + default = default.strip() + + field_definitions[name] = ( + str, + Field(default=default, title=label, description=description), + ) + + try: + model = create_model(model_name, __base__=BaseModel, **field_definitions) + model.model_config["extra"] = "ignore" + + model() + return model + except Exception as e: + raise ValueError(f"创建参数模型 '{model_name}' 失败: {e}") + + +def call_dify( + case_meta_info: dict[str, str], + logger: Logger, + device_info: Device, + material: list[MaterialForDify], + dify_cfg: DifySettings, + metric, + material_reporter, + parameters: dict[str, Any] | None = None, + timeout_sec: int | None = None, +): + # logger.info(device_info.device_serial) + logger.info(dify_cfg) + + event_callbacks: dict[str, Callable[..., None]] = {} + + def on_node_started(_, __, d: dict[str, Any]): + logger.info(f"开始执行:{d.get('title', '')}") + logger.info(f"输入节点参数:{d.get('inputs')}") + + def on_node_finished(_, __, d): + logger.info(f"结束执行:{d.get('title', '')}") + logger.info(f"节点输出:{d.get('outputs')}") + + event_callbacks["on_node_started"] = on_node_started + event_callbacks["on_node_finished"] = on_node_finished + + if timeout_sec: + ctx = _TimeoutCtx() + + def on_workflow_started(client, event_name, event_data): + logger.info("开始执行dify任务") + ctx.client = client + ctx.task_id = event_data.get("task_id") + + event_callbacks["on_workflow_started"] = on_workflow_started + if not material: + raise RuntimeError("缺少素材") + else: + logger.info(f"下发素材:{material}") + metric_manager = MetricManager(metric) + local_ip = _get_local_ip() + + for material_index, item in enumerate(material, 1): + paramGroupUuid = item.paramGroupUuid[0] + assert paramGroupUuid, "The param Group Uuid Value must be set." + + material_reporter.begin(paramGroupUuid) + dify_final_status = False + try: + # IMPORTANT: the group uuid for params + payload_data = { + **item.model_dump(), + "deviceId": device_info.device_serial, + "address": local_ip, + "caseId": case_meta_info.get("id", "Unknown"), + } + if parameters: + payload_data["parameters"] = json.dumps(parameters) + payload = DifyPayload(**payload_data) + logger.info(f"payload send to dify:\n{payload.model_dump_json(indent=2)}\n") + metric_manager.new_span( + "default", f"default-{material_index}", material_index + ) + + def _run_workflow(): + return run_workflow( + api_key=dify_cfg.difyApiKey, + base_url=dify_cfg.difyUrl, + workflow_id=dify_cfg.difyWorkflowId, + inputs=payload.model_dump(exclude_none=True), + event_callbacks=event_callbacks, + ) + + if timeout_sec: + with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor: + future = executor.submit(_run_workflow) + try: + result = future.result(timeout=timeout_sec) + except concurrent.futures.TimeoutError: + logger.error(f"Workflow timeout after {timeout_sec}s,(yaml config)") + time.sleep(0.1) + logger.info("尝试停止工作流...") + ctx.stop() + raise TimeoutError(f"Workflow timeout after {timeout_sec}s") + else: + result = _run_workflow() + logger.info(f"工作流返回结果:{result.outputs}") + logger.info(f"工作流最终状态:{result.success}") + + if result.outputs: + logger.info("提交结果到执行器") + metric_manager.from_dict(result.outputs) + metric.send_all() + logger.info("提交结果到执行器完成") + else: + logger.warning("dify 工作流无返回") + if not result.success: + logger.error(f"工作流执行失败:{result.error}") + dify_final_status = result.success + except Exception as e: + logger.error(e) + dify_final_status = False + continue # do not break next round + finally: + material_reporter.end_with(paramGroupUuid, dify_final_status) + + +def make_dify_test( + meta: dict[str, str], + dify_settings: DifySettings | None = None, + param_model: type[BaseModel] | None = None, + timeout: int | None = None, +) -> Callable[..., None]: + if param_model is None: + param_model = create_model("EmptyParams", __base__=BaseModel) + + @pytest.mark.usefixtures("cfg") + def _func_impl( + logger: Logger, + device_info: Device, + material: list[MaterialForDify], + metric, + material_reporter, + cfg: param_model, + ) -> None: + param_dict = cfg.model_dump() if cfg else {} + call_dify( + meta, + logger, + device_info, + material, + dify_cfg=dify_settings, + metric=metric, + material_reporter=material_reporter, + parameters=param_dict, + timeout_sec=timeout, + ) + + # always use cfg fixture + # _func_impl = pytest.mark.usefixtures("cfg")(_func_impl) + return M.meta(**meta)(_func_impl) + + +def make_skip_test(meta: dict[str, str]) -> Callable[..., None]: + @M.skip(reason=f"{meta['id']} 未实现") + @M.meta(**meta) + def _func( + logger: Logger, + device_info: Device, + material: list[MaterialForDify], + metric, + ) -> None: + logger.error(f"此用例在手机{device_info.device_serial}上暂未实现") + assert False, "not implemented" + + return _func + + +def generate_cases_from_yaml(module_name: str, yaml_path: Path): + if not yaml_path.exists(): + logger.warning(f"Test case definition file not found: {yaml_path}") + return + + try: + with open(file=yaml_path, mode="r", encoding="utf-8") as f: + all_cases: list[dict[str, Any]] = yaml.safe_load( # pyright: ignore[reportAny] + f + ) + except yaml.YAMLError as e: + logger.error(f"Failed to parse YAML file {yaml_path}: {e}") + pytest.fail(f"YAML解析失败: {yaml_path}") + return + if not all_cases: + return + for case_info in all_cases.get("cases", []): + if not isinstance(case_info, dict): + logger.debug(f"Skipping non-dictionary item in YAML file: {case_info}") + continue + case_id: str = case_info.get("id", "") + if not case_id: + logger.warning(f"用例 缺少 case_id 字段。{case_info=}") + pytest.fail(f"用例 缺少 case_id 字段。{case_info=}") + description: str = case_info.get("description", "") + if not description: + logger.warning(f"用例{case_id} 缺少 description 字段。") + pytest.fail(f"用例{case_id} 缺少 description 字段。") + action: str = case_info.get("action", "skipped") + + meta = {"id": case_id, "description": description} + fn_name = f"test_{case_id.lower().replace('-', '_')}" + + if action == "dify": + dify_settings: DifySettings | None = None + param_model: type[BaseModel] | None = None + timeout = case_info.get("timeout") + + if parameters_def := case_info.get("parameters"): + model_name = f"{case_id.replace('-', '_')}_Params" + param_model = create_dynamic_model(model_name, parameters_def) + + if dify_config_block := case_info.get("dify_config"): + env_key = "production" if IS_PRODUCTION else "testing" + if env_config := dify_config_block.get(env_key): + dify_settings = DifySettings( + difyUrl=env_config.get("url"), + difyWorkflowId=env_config.get("workflow_id"), + difyApiKey=env_config.get("api_key"), + ) + else: + logger.warning( + f"No '{env_key}' config found for {case_id}, will use default." + ) + fn = make_dify_test(meta, dify_settings, param_model, timeout) + elif action == "skipped": + fn = make_skip_test(meta) + elif action == "custom": + logger.info(f"Case {case_id} is a custom test.") + continue + else: + logger.warning(f"Unknown action '{action}' for case {case_id}. Skipping.") + continue + + setattr(sys.modules[module_name], fn_name, fn) + logger.info(f"Generated {fn_name} for {case_id} with action '{action}'") + + + +generate_cases_from_yaml(__name__, YAML_FILE) diff --git a/scenarios/test_cases.yaml b/scenarios/test_cases.yaml new file mode 100644 index 0000000..34f1fdf --- /dev/null +++ b/scenarios/test_cases.yaml @@ -0,0 +1,785 @@ +dify_templates: + tianjin_dify_config: &testing_config + url: "http://192.168.0.163:8090/v1" + workflow_id: "d4a40bf2-99cb-440f-97be-3793e2274318" + api_key: "app-cvFr7cpcHytfYIS0q2LpdS0B" + guangzhou_dify_config: &production_config + url: "http://192.168.0.140:8090/v1" + workflow_id: "887d8b8b-bbd0-4ca2-91d9-157e6b1dfba4" + api_key: "app-js5wzUdItrV6fGFZ7auEmpez" +cases: + + - id: TC-0101-audio + description: AI代接 + category: AI社交.语音交流 + action: skipped + + - id: TC-0102-audio + description: 通话实时翻译 + category: AI社交.语音交流 + action: skipped + + - id: TC-0103-audio + description: 通话摘要 + category: AI社交.语音交流 + action: skipped + + - id: TC-0104-txt + description: 文本通话 + category: AI社交.语音交流 + action: skipped + + - id: TC-0105-audio + description: AI通话降噪 + category: AI社交.语音交流 + action: skipped + + - id: TC-0106-audio + description: AI隐私保护(防漏音) + category: AI社交.语音交流 + action: skipped + + - id: TC-0107-audio + description: 对话翻译 + category: AI社交.语音交流 + action: skipped + + - id: TC-0108-audio + description: 面对面同声传译 + category: AI社交.语音交流 + action: skipped + + - id: TC-0109-txt + description: AI短信 + category: AI社交.短信 + action: dify + dify_config: + production: *production_config + testing: *testing_config + + - id: TC-0110-txt + description: AR虚拟表情 + category: AI社交.短信 + action: skipped + + - id: TC-0110-img + description: AR虚拟表情 + category: AI社交.短信 + action: skipped + + - id: TC-0111-video + description: 视频电话AI鉴伪 + category: AI社交.社交应用 + action: skipped + + - id: TC-0201-img + description: 日程管理 + category: AI办公.日程管理 + action: dify + dify_config: + production: + url: "http://192.168.0.140:8090/v1" + workflow_id: "6d31519a-f16b-41fb-b4cf-576828584259" + api_key: "app-N4LRiNAFzM9E6YdhBSCNhO02" + testing: + url: "http://192.168.0.163:8090/v1" + workflow_id: "30ecb958-b56d-4b65-8713-f23945a8db91" + api_key: "app-w2NVHlHZzlIGnmxmkRUO4FPJ" + + - id: TC-0201-audio + description: 日程管理 + category: AI办公.日程管理 + action: dify + dify_config: + production: + url: "http://192.168.0.140:8090/v1" + workflow_id: "20410cc9-93da-4e23-afed-000c4599a7b1" + api_key: "app-esPo8u1OLCR6gmcQXg6cGRRS" + testing: + url: "http://192.168.0.163:8090/v1" + workflow_id: "30ecb958-b56d-4b65-8713-f23945a8db91" + api_key: "app-w2NVHlHZzlIGnmxmkRUO4FPJ" + + - id: TC-0202-audio + description: 语音转写 + category: AI办公.会议助手 + action: skipped + + - id: TC-0202-video + description: 语音转写 + category: AI办公.会议助手 + action: skipped + + - id: TC-0203-doc + description: 智能纪要 + category: AI办公.会议助手 + action: skipped + + - id: TC-0204-txt + description: 文稿创作 + category: AI办公.工作文稿处理 + action: dify + dify_config: + production: *production_config + testing: *testing_config + + - id: TC-0204-img + description: 文稿创作 + category: AI办公.工作文稿处理 + action: dify + dify_config: + production: + url: "http://192.168.0.140:8090/v1" + workflow_id: "6d31519a-f16b-41fb-b4cf-576828584259" + api_key: "app-N4LRiNAFzM9E6YdhBSCNhO02" + testing: + url: "http://192.168.0.163:8090/v1" + workflow_id: "30ecb958-b56d-4b65-8713-f23945a8db91" + api_key: "app-w2NVHlHZzlIGnmxmkRUO4FPJ" + + + - id: TC-0205-txt + description: 文稿润色-文本 + category: AI办公.工作文稿处理 + action: dify + dify_config: + production: *production_config + testing: *testing_config + + - id: TC-0205-doc + description: 文稿润色-文档 + category: AI办公.工作文稿处理 + action: dify + dify_config: + production: + url: "http://192.168.0.140:8090/v1" + workflow_id: "232dcf92-dc22-4496-bcf9-16128adaac9c" + api_key: "app-JAes29Tbx8gg6eUpUitiLbyI" + testing: + url: "http://192.168.0.163:8090/v1" + workflow_id: "2c7809b7-baea-478f-9f19-c722a7a276c4" + api_key: "app-puoiD0ZqPRtFb7wrUimw4cSt" + + - id: TC-0206-txt + description: 文稿排版 + category: AI办公.工作文稿处理 + action: dify + dify_config: + production: *production_config + testing: *testing_config + + - id: TC-0206-doc + description: 文稿排版 + category: AI办公.工作文稿处理 + action: dify + dify_config: + production: + url: "http://192.168.0.140:8090/v1" + workflow_id: "232dcf92-dc22-4496-bcf9-16128adaac9c" + api_key: "app-JAes29Tbx8gg6eUpUitiLbyI" + testing: + url: "http://192.168.0.163:8090/v1" + workflow_id: "2c7809b7-baea-478f-9f19-c722a7a276c4" + api_key: "app-puoiD0ZqPRtFb7wrUimw4cSt" + + - id: TC-0207-txt + description: 长文本摘要 + category: AI办公.工作文稿处理 + action: dify + dify_config: + production: *production_config + testing: *testing_config + + - id: TC-0208-doc + description: 文档摘要 + category: AI办公.工作文稿处理 + action: dify + dify_config: + production: + url: "http://192.168.0.140:8090/v1" + workflow_id: "232dcf92-dc22-4496-bcf9-16128adaac9c" + api_key: "app-JAes29Tbx8gg6eUpUitiLbyI" + testing: + url: "http://192.168.0.163:8090/v1" + workflow_id: "2c7809b7-baea-478f-9f19-c722a7a276c4" + api_key: "app-puoiD0ZqPRtFb7wrUimw4cSt" + + - id: TC-0209-doc + description: 多语言摘要 + category: AI办公.工作文稿处理 + action: dify + dify_config: + production: + url: "http://192.168.0.140:8090/v1" + workflow_id: "232dcf92-dc22-4496-bcf9-16128adaac9c" + api_key: "app-JAes29Tbx8gg6eUpUitiLbyI" + testing: + url: "http://192.168.0.163:8090/v1" + workflow_id: "2c7809b7-baea-478f-9f19-c722a7a276c4" + api_key: "app-puoiD0ZqPRtFb7wrUimw4cSt" + + - id: TC-0210-img + description: 图片转表格 + category: AI办公.表格处理 + action: dify + dify_config: + production: + url: "http://192.168.0.140:8090/v1" + workflow_id: "6d31519a-f16b-41fb-b4cf-576828584259" + api_key: "app-N4LRiNAFzM9E6YdhBSCNhO02" + testing: + url: "http://192.168.0.163:8090/v1" + workflow_id: "30ecb958-b56d-4b65-8713-f23945a8db91" + api_key: "app-w2NVHlHZzlIGnmxmkRUO4FPJ" + + + + - id: TC-0211-img + description: 表格提取 + category: AI办公.表格处理 + action: dify + dify_config: + production: + url: "http://192.168.0.140:8090/v1" + workflow_id: "6d31519a-f16b-41fb-b4cf-576828584259" + api_key: "app-N4LRiNAFzM9E6YdhBSCNhO02" + testing: + url: "http://192.168.0.163:8090/v1" + workflow_id: "30ecb958-b56d-4b65-8713-f23945a8db91" + api_key: "app-w2NVHlHZzlIGnmxmkRUO4FPJ" + + - id: TC-0212-txt + description: 文件搜索 + category: AI办公.AI全局搜索 + action: skipped + + - id: TC-0213-txt + description: 图片搜索 + category: AI办公.AI全局搜索 + action: skipped + + - id: TC-0301-txt + description: 用机问答 + category: AI学习.学习问答 + action: dify + dify_config: + production: *production_config + testing: *testing_config + + - id: TC-0302-doc + description: 文档问答 + category: AI学习.学习问答 + action: dify + dify_config: + production: + url: "http://192.168.0.140:8090/v1" + workflow_id: "232dcf92-dc22-4496-bcf9-16128adaac9c" + api_key: "app-JAes29Tbx8gg6eUpUitiLbyI" + testing: + url: "http://192.168.0.163:8090/v1" + workflow_id: "2c7809b7-baea-478f-9f19-c722a7a276c4" + api_key: "app-puoiD0ZqPRtFb7wrUimw4cSt" + + - id: TC-0303-txt + description: 对话问答 + category: AI学习.学习问答 + action: dify + dify_config: + production: *production_config + testing: *testing_config + + - id: TC-0304-txt + description: 网页问答 + category: AI学习.学习问答 + action: dify + dify_config: + production: *production_config + testing: *testing_config + + - id: TC-0305-img + description: 多模态问答 + category: AI学习.学习问答 + action: dify + dify_config: + production: + url: "http://192.168.0.140:8090/v1" + workflow_id: "6d31519a-f16b-41fb-b4cf-576828584259" + api_key: "app-N4LRiNAFzM9E6YdhBSCNhO02" + testing: + url: "http://192.168.0.163:8090/v1" + workflow_id: "30ecb958-b56d-4b65-8713-f23945a8db91" + api_key: "app-w2NVHlHZzlIGnmxmkRUO4FPJ" + + - id: TC-0305-audio + description: 多模态问答 + category: AI学习.学习问答 + action: skipped + - id: TC-0305-video + description: 多模态问答 + category: AI学习.学习问答 + action: skipped + + - id: TC-0306-txt + description: 深度推理 + category: AI学习.学习问答 + action: dify + dify_config: + production: *production_config + testing: *testing_config + + - id: TC-0307-txt + description: 文本翻译 + category: AI学习.翻译 + action: dify + dify_config: + production: *production_config + testing: *testing_config + + - id: TC-0308-doc + description: 文档翻译 + category: AI学习.翻译 + action: dify + dify_config: + production: + url: "http://192.168.0.140:8090/v1" + workflow_id: "232dcf92-dc22-4496-bcf9-16128adaac9c" + api_key: "app-JAes29Tbx8gg6eUpUitiLbyI" + testing: + url: "http://192.168.0.163:8090/v1" + workflow_id: "2c7809b7-baea-478f-9f19-c722a7a276c4" + api_key: "app-puoiD0ZqPRtFb7wrUimw4cSt" + + - id: TC-0309-txt + description: 网页翻译 + category: AI学习.翻译 + action: skipped + + - id: TC-0310-audio + description: 口语陪练 + category: AI学习.AI教学 + action: skipped + + - id: TC-0311-img + description: 图片解题 + category: AI学习.AI教学 + action: dify + dify_config: + production: + url: "http://192.168.0.140:8090/v1" + workflow_id: "6d31519a-f16b-41fb-b4cf-576828584259" + api_key: "app-N4LRiNAFzM9E6YdhBSCNhO02" + testing: + url: "http://192.168.0.163:8090/v1" + workflow_id: "30ecb958-b56d-4b65-8713-f23945a8db91" + api_key: "app-w2NVHlHZzlIGnmxmkRUO4FPJ" + + - id: TC-0312-img + description: 拍摄解题 + category: AI学习.AI教学 + action: dify + dify_config: + production: + url: "http://192.168.0.140:8090/v1" + workflow_id: "6d31519a-f16b-41fb-b4cf-576828584259" + api_key: "app-N4LRiNAFzM9E6YdhBSCNhO02" + testing: + url: "http://192.168.0.163:8090/v1" + workflow_id: "30ecb958-b56d-4b65-8713-f23945a8db91" + api_key: "app-w2NVHlHZzlIGnmxmkRUO4FPJ" + + - id: TC-0313-img + description: 试卷还原 + category: AI学习.AI教学 + action: dify + dify_config: + production: + url: "http://192.168.0.140:8090/v1" + workflow_id: "6d31519a-f16b-41fb-b4cf-576828584259" + api_key: "app-N4LRiNAFzM9E6YdhBSCNhO02" + testing: + url: "http://192.168.0.163:8090/v1" + workflow_id: "30ecb958-b56d-4b65-8713-f23945a8db91" + api_key: "app-w2NVHlHZzlIGnmxmkRUO4FPJ" + + - id: TC-0314-img + description: 作业批改 + category: AI学习.AI教学 + action: dify + dify_config: + production: + url: "http://192.168.0.140:8090/v1" + workflow_id: "6d31519a-f16b-41fb-b4cf-576828584259" + api_key: "app-N4LRiNAFzM9E6YdhBSCNhO02" + testing: + url: "http://192.168.0.163:8090/v1" + workflow_id: "30ecb958-b56d-4b65-8713-f23945a8db91" + api_key: "app-w2NVHlHZzlIGnmxmkRUO4FPJ" + + - id: TC-0315-img + description: 作业讲解 + category: AI学习.AI教学 + action: dify + dify_config: + production: + url: "http://192.168.0.140:8090/v1" + workflow_id: "6d31519a-f16b-41fb-b4cf-576828584259" + api_key: "app-N4LRiNAFzM9E6YdhBSCNhO02" + testing: + url: "http://192.168.0.163:8090/v1" + workflow_id: "30ecb958-b56d-4b65-8713-f23945a8db91" + api_key: "app-w2NVHlHZzlIGnmxmkRUO4FPJ" + + - id: TC-0401-txt + description: 智能体唤醒拍照 + category: AI影像.AI拍摄 + action: skipped + + - id: TC-0401-audio + description: 智能体唤醒拍照 + category: AI影像.AI拍摄 + action: skipped + + - id: TC-0402-img + description: 笑脸抓拍 + category: AI影像.AI拍摄 + action: skipped + + - id: TC-0403-video + description: 录制视频(美颜/美化) + category: AI影像.AI拍摄 + action: skipped + + - id: TC-0404-video + description: 识文 + category: AI影像.AI拍摄 + action: skipped + + - id: TC-0405-img + description: 识物 + category: AI影像.AI拍摄 + action: dify + dify_config: + production: + url: "http://192.168.0.140:8090/v1" + workflow_id: "6d31519a-f16b-41fb-b4cf-576828584259" + api_key: "app-N4LRiNAFzM9E6YdhBSCNhO02" + testing: + url: "http://192.168.0.163:8090/v1" + workflow_id: "30ecb958-b56d-4b65-8713-f23945a8db91" + api_key: "app-w2NVHlHZzlIGnmxmkRUO4FPJ" + + - id: TC-0406-img + description: AR翻译 + category: AI影像.AI拍摄 + action: dify + dify_config: + production: + url: "http://192.168.0.140:8090/v1" + workflow_id: "6d31519a-f16b-41fb-b4cf-576828584259" + api_key: "app-N4LRiNAFzM9E6YdhBSCNhO02" + testing: + url: "http://192.168.0.163:8090/v1" + workflow_id: "30ecb958-b56d-4b65-8713-f23945a8db91" + api_key: "app-w2NVHlHZzlIGnmxmkRUO4FPJ" + + - id: TC-0407-txt + description: 文生图 + category: AI影像.图片生成 + action: dify + dify_config: + production: + url: "http://192.168.0.140:8090/v1" + workflow_id: "23d55bb9-2a48-429f-bbb6-c62c4de7960e" + api_key: "app-bpjmfzy0brQiMouj1dSkFLtl" + testing: + url: "http://192.168.0.163:8090/v1" + workflow_id: "6962c5d6-9d85-487c-844b-82f81fbfe246" + api_key: "app-QfWiJwbzSiGcakxHmFouPund" + + - id: TC-0408-img + description: AI路人消除 + category: AI影像.图片生成 + action: dify + dify_config: + production: + url: "http://192.168.0.140:8090/v1" + workflow_id: "6d31519a-f16b-41fb-b4cf-576828584259" + api_key: "app-N4LRiNAFzM9E6YdhBSCNhO02" + testing: + url: "http://192.168.0.163:8090/v1" + workflow_id: "30ecb958-b56d-4b65-8713-f23945a8db91" + api_key: "app-w2NVHlHZzlIGnmxmkRUO4FPJ" + + - id: TC-0409-img + description: AI物体消除 + category: AI影像.图片生成 + action: dify + dify_config: + production: + url: "http://192.168.0.140:8090/v1" + workflow_id: "6d31519a-f16b-41fb-b4cf-576828584259" + api_key: "app-N4LRiNAFzM9E6YdhBSCNhO02" + testing: + url: "http://192.168.0.163:8090/v1" + workflow_id: "30ecb958-b56d-4b65-8713-f23945a8db91" + api_key: "app-w2NVHlHZzlIGnmxmkRUO4FPJ" + + - id: TC-0410-img + description: AI扩图 + category: AI影像.图片生成 + action: dify + dify_config: + production: + url: "http://192.168.0.140:8090/v1" + workflow_id: "6d31519a-f16b-41fb-b4cf-576828584259" + api_key: "app-N4LRiNAFzM9E6YdhBSCNhO02" + testing: + url: "http://192.168.0.163:8090/v1" + workflow_id: "30ecb958-b56d-4b65-8713-f23945a8db91" + api_key: "app-w2NVHlHZzlIGnmxmkRUO4FPJ" + + - id: TC-0411-img + description: 图片风格转化 + category: AI影像.图片生成 + action: dify + dify_config: + production: + url: "http://192.168.0.140:8090/v1" + workflow_id: "6d31519a-f16b-41fb-b4cf-576828584259" + api_key: "app-N4LRiNAFzM9E6YdhBSCNhO02" + testing: + url: "http://192.168.0.163:8090/v1" + workflow_id: "30ecb958-b56d-4b65-8713-f23945a8db91" + api_key: "app-w2NVHlHZzlIGnmxmkRUO4FPJ" + + - id: TC-0412-img + description: 涂鸦生图 + category: AI影像.图片生成 + action: skipped + + - id: TC-0413-img + description: 图片翻译 + category: AI影像.图片处理 + action: dify + dify_config: + production: + url: "http://192.168.0.140:8090/v1" + workflow_id: "6d31519a-f16b-41fb-b4cf-576828584259" + api_key: "app-N4LRiNAFzM9E6YdhBSCNhO02" + testing: + url: "http://192.168.0.163:8090/v1" + workflow_id: "30ecb958-b56d-4b65-8713-f23945a8db91" + api_key: "app-w2NVHlHZzlIGnmxmkRUO4FPJ" + + - id: TC-0414-img + description: AI搜图 + category: AI影像.图片处理 + action: skipped + + - id: TC-0415-img + description: AI美颜 + category: AI影像.图片处理 + action: dify + dify_config: + production: + url: "http://192.168.0.140:8090/v1" + workflow_id: "6d31519a-f16b-41fb-b4cf-576828584259" + api_key: "app-N4LRiNAFzM9E6YdhBSCNhO02" + testing: + url: "http://192.168.0.163:8090/v1" + workflow_id: "30ecb958-b56d-4b65-8713-f23945a8db91" + api_key: "app-w2NVHlHZzlIGnmxmkRUO4FPJ" + + - id: TC-0416-img + description: AI美化 + category: AI影像.图片处理 + action: dify + dify_config: + production: + url: "http://192.168.0.140:8090/v1" + workflow_id: "6d31519a-f16b-41fb-b4cf-576828584259" + api_key: "app-N4LRiNAFzM9E6YdhBSCNhO02" + testing: + url: "http://192.168.0.163:8090/v1" + workflow_id: "30ecb958-b56d-4b65-8713-f23945a8db91" + api_key: "app-w2NVHlHZzlIGnmxmkRUO4FPJ" + + - id: TC-0417-img + description: 智能抠图 + category: AI影像.图片处理 + action: dify + dify_config: + production: + url: "http://192.168.0.140:8090/v1" + workflow_id: "6d31519a-f16b-41fb-b4cf-576828584259" + api_key: "app-N4LRiNAFzM9E6YdhBSCNhO02" + testing: + url: "http://192.168.0.163:8090/v1" + workflow_id: "30ecb958-b56d-4b65-8713-f23945a8db91" + api_key: "app-w2NVHlHZzlIGnmxmkRUO4FPJ" + + - id: TC-0418-img + description: 闭眼修复 + category: AI影像.图片处理 + action: dify + dify_config: + production: + url: "http://192.168.0.140:8090/v1" + workflow_id: "6d31519a-f16b-41fb-b4cf-576828584259" + api_key: "app-N4LRiNAFzM9E6YdhBSCNhO02" + testing: + url: "http://192.168.0.163:8090/v1" + workflow_id: "30ecb958-b56d-4b65-8713-f23945a8db91" + api_key: "app-w2NVHlHZzlIGnmxmkRUO4FPJ" + + - id: TC-0419-img + description: 一键成片 + category: AI影像.视频生成 + action: skipped + + - id: TC-0420-img + description: 视频字幕生成 + category: AI影像.视频处理 + action: skipped + + - id: TC-0421-img + description: 视频翻译 + category: AI影像.视频处理 + action: skipped + + - id: TC-0501-txt + description: 公共服务查询(天气/交通路线/节假日等) + category: AI生活.生活类问答 + action: dify + dify_config: + production: *production_config + testing: *testing_config + + - id: TC-0502-txt + description: 通信业务查询(话费/流量/短信等) + category: AI生活.生活类问答 + action: dify + dify_config: + production: *production_config + testing: *testing_config + + - id: TC-0503-txt + description: 生活费用查询(水/电/煤/物业等) + category: AI生活.生活类问答 + action: dify + dify_config: + production: *production_config + testing: *testing_config + + - id: TC-0504-txt + description: 生活建议(美食推荐/穿搭建议等) + category: AI生活.生活类问答 + action: dify + dify_config: + production: *production_config + testing: *testing_config + + - id: TC-0505-txt + description: 系统控制(开关机/音量/字体等) + category: AI生活.系统操作 + action: dify + dify_config: + production: *production_config + testing: *testing_config + + - id: TC-0506-txt + description: 应用管理 + category: AI生活.系统操作 + action: dify + dify_config: + production: *production_config + testing: *testing_config + + - id: TC-0507-img + description: AI圈选 + category: AI生活.系统操作 + action: skipped + + + - id: TC-0508-audio + description: 智能打开乘车码(地铁/公交等) + category: AI生活.购物/支付 + action: dify + dify_config: + production: + url: "http://192.168.0.140:8090/v1" + workflow_id: "375edfd9-bf28-4792-8f03-399b9201f6cf" + api_key: "app-dHfCMjyNgVwvny9oODgZNKui" + testing: + url: "http://192.168.0.163:8090/v1" + workflow_id: "30ecb958-b56d-4b65-8713-f23945a8db91" + api_key: "app-w2NVHlHZzlIGnmxmkRUO4FPJ" + + - id: TC-0509-txt + description: 商品比价 + category: AI生活.购物/支付 + action: dify + dify_config: + production: *production_config + testing: *testing_config + + - id: TC-0509-img + description: 商品比价 + category: AI生活.购物/支付 + action: dify + dify_config: + production: + url: "http://192.168.0.140:8090/v1" + workflow_id: "6d31519a-f16b-41fb-b4cf-576828584259" + api_key: "app-N4LRiNAFzM9E6YdhBSCNhO02" + testing: + url: "http://192.168.0.163:8090/v1" + workflow_id: "30ecb958-b56d-4b65-8713-f23945a8db91" + api_key: "app-w2NVHlHZzlIGnmxmkRUO4FPJ" + + - id: TC-0510-txt + description: AI导航 + category: AI生活.出行 + action: dify + dify_config: + production: *production_config + testing: *testing_config + + - id: TC-0511-txt + description: 网约车 + category: AI生活.出行 + action: dify + dify_config: + production: *production_config + testing: *testing_config + + - id: TC-0512-txt + description: 行程规划 + category: AI生活.出行 + action: dify + dify_config: + production: *production_config + testing: *testing_config + + - id: TC-0513-txt + description: 健康问答 + category: AI生活.运动健康 + action: dify + dify_config: + production: *production_config + testing: *testing_config + + - id: TC-0514-txt + description: AI读屏 + category: AI生活.无障碍辅助 + action: skipped + + - id: TC-0515-txt + description: AI看见 + category: AI生活.无障碍辅助 + action: skipped + + - id: TC-0601-audio + description: 语音唤醒 + category: 智能体基础测试.语音唤醒 + action: skipped diff --git a/uv.lock b/uv.lock new file mode 100644 index 0000000..4dc6441 --- /dev/null +++ b/uv.lock @@ -0,0 +1,1251 @@ +version = 1 +revision = 2 +requires-python = "==3.12.6" + +[[package]] +name = "adbutils" +version = "2.9.3" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +dependencies = [ + { name = "deprecation" }, + { name = "pillow" }, + { name = "requests" }, + { name = "retry2" }, +] +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/89/26/d522ca7dd18e51e48952046e5f26b0436532f1f433f9d1376f3b4700f99e/adbutils-2.9.3.tar.gz", hash = "sha256:9adb922796f1096cb5bfebc6754f419ec781136b3f38a5588ca58a07bec26147" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/66/3b/616c81dc14b8cf03ffb3202365d2593a3e5aad5c91356b6e41090e3b56cb/adbutils-2.9.3-py3-none-macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:db11a3273f755f50bd7d80d14feb470ad5f02fe73d3d6b8442a1408374a5174b" }, + { url = "https://mirrors.aliyun.com/pypi/packages/6b/27/5da73f56315694de3bbbbb3ded61199b4ea4a714e19df5ad5285f9b2534f/adbutils-2.9.3-py3-none-manylinux1_x86_64.whl", hash = "sha256:fe91d59324dfcdebf01cd76e843467d8efb1ab78bd697bc81ec9b83918dc9c8d" }, + { url = "https://mirrors.aliyun.com/pypi/packages/d6/9c/fe66312844bd048190fc3cbb803c19eb57a2679f1ea0aea5e2f6dd2ef4a1/adbutils-2.9.3-py3-none-win32.whl", hash = "sha256:82cf82ad5b4ff74cbe44c54c9a92364c906c6fd93eba25b1f47941862140edfa" }, + { url = "https://mirrors.aliyun.com/pypi/packages/f3/56/ecc00bcb16dc7358573f9886571281ed4dfdb14d20c47783301b046d96f7/adbutils-2.9.3-py3-none-win_amd64.whl", hash = "sha256:73f6ca710bdfb9bc72d9b7e5c9c51325751c1e43d4bdc98b9cee910e2e97588c" }, +] + +[[package]] +name = "agno" +version = "1.7.0" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +dependencies = [ + { name = "docstring-parser" }, + { name = "gitpython" }, + { name = "httpx" }, + { name = "pydantic" }, + { name = "pydantic-settings" }, + { name = "python-dotenv" }, + { name = "python-multipart" }, + { name = "pyyaml" }, + { name = "rich" }, + { name = "tomli" }, + { name = "typer" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/b9/9b/55cf2f1b983a46e885abd685c9c22d4e23a5b607d8b0d63e9b41e9dcf5f2/agno-1.7.0.tar.gz", hash = "sha256:52bfe110c43cac6902b0493e902e7e6ad3aa0890263640b9fbf98567b77866e4" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/25/91/a1a719caf50fdec33bdfa5106906da158c0b204871f6f041be052a626baf/agno-1.7.0-py3-none-any.whl", hash = "sha256:473bd8f67c8084a45c7f98f4c98fe372d58934dfaa21966b71624e62c1dd7010" }, +] + +[[package]] +name = "aiohappyeyeballs" +version = "2.6.1" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/26/30/f84a107a9c4331c14b2b586036f40965c128aa4fee4dda5d3d51cb14ad54/aiohappyeyeballs-2.6.1.tar.gz", hash = "sha256:c3f9d0113123803ccadfdf3f0faa505bc78e6a72d1cc4806cbd719826e943558" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/0f/15/5bf3b99495fb160b63f95972b81750f18f7f4e02ad051373b669d17d44f2/aiohappyeyeballs-2.6.1-py3-none-any.whl", hash = "sha256:f349ba8f4b75cb25c99c5c2d84e997e485204d2902a9597802b0371f09331fb8" }, +] + +[[package]] +name = "aiohttp" +version = "3.12.13" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +dependencies = [ + { name = "aiohappyeyeballs" }, + { name = "aiosignal" }, + { name = "attrs" }, + { name = "frozenlist" }, + { name = "multidict" }, + { name = "propcache" }, + { name = "yarl" }, +] +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/42/6e/ab88e7cb2a4058bed2f7870276454f85a7c56cd6da79349eb314fc7bbcaa/aiohttp-3.12.13.tar.gz", hash = "sha256:47e2da578528264a12e4e3dd8dd72a7289e5f812758fe086473fab037a10fcce" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/b4/6a/ce40e329788013cd190b1d62bbabb2b6a9673ecb6d836298635b939562ef/aiohttp-3.12.13-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0aa580cf80558557285b49452151b9c69f2fa3ad94c5c9e76e684719a8791b73" }, + { url = "https://mirrors.aliyun.com/pypi/packages/28/d9/7150d5cf9163e05081f1c5c64a0cdf3c32d2f56e2ac95db2a28fe90eca69/aiohttp-3.12.13-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b103a7e414b57e6939cc4dece8e282cfb22043efd0c7298044f6594cf83ab347" }, + { url = "https://mirrors.aliyun.com/pypi/packages/f8/91/d42ba4aed039ce6e449b3e2db694328756c152a79804e64e3da5bc19dffc/aiohttp-3.12.13-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:78f64e748e9e741d2eccff9597d09fb3cd962210e5b5716047cbb646dc8fe06f" }, + { url = "https://mirrors.aliyun.com/pypi/packages/99/3b/06f0a632775946981d7c4e5a865cddb6e8dfdbaed2f56f9ade7bb4a1039b/aiohttp-3.12.13-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29c955989bf4c696d2ededc6b0ccb85a73623ae6e112439398935362bacfaaf6" }, + { url = "https://mirrors.aliyun.com/pypi/packages/92/a6/2552eebad9ec5e3581a89256276009e6a974dc0793632796af144df8b740/aiohttp-3.12.13-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:d640191016763fab76072c87d8854a19e8e65d7a6fcfcbf017926bdbbb30a7e5" }, + { url = "https://mirrors.aliyun.com/pypi/packages/d8/9f/bd08fdde114b3fec7a021381b537b21920cdd2aa29ad48c5dffd8ee314f1/aiohttp-3.12.13-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4dc507481266b410dede95dd9f26c8d6f5a14315372cc48a6e43eac652237d9b" }, + { url = "https://mirrors.aliyun.com/pypi/packages/f7/e1/affdea8723aec5bd0959171b5490dccd9a91fcc505c8c26c9f1dca73474d/aiohttp-3.12.13-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8a94daa873465d518db073bd95d75f14302e0208a08e8c942b2f3f1c07288a75" }, + { url = "https://mirrors.aliyun.com/pypi/packages/f3/9d/666d856cc3af3a62ae86393baa3074cc1d591a47d89dc3bf16f6eb2c8d32/aiohttp-3.12.13-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:177f52420cde4ce0bb9425a375d95577fe082cb5721ecb61da3049b55189e4e6" }, + { url = "https://mirrors.aliyun.com/pypi/packages/f3/ce/3c185293843d17be063dada45efd2712bb6bf6370b37104b4eda908ffdbd/aiohttp-3.12.13-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f7df1f620ec40f1a7fbcb99ea17d7326ea6996715e78f71a1c9a021e31b96b8" }, + { url = "https://mirrors.aliyun.com/pypi/packages/3a/5b/f3413f4b238113be35dfd6794e65029250d4b93caa0974ca572217745bdb/aiohttp-3.12.13-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3062d4ad53b36e17796dce1c0d6da0ad27a015c321e663657ba1cc7659cfc710" }, + { url = "https://mirrors.aliyun.com/pypi/packages/82/c8/0e56e8bf12081faca85d14a6929ad5c1263c146149cd66caa7bc12255b6d/aiohttp-3.12.13-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:8605e22d2a86b8e51ffb5253d9045ea73683d92d47c0b1438e11a359bdb94462" }, + { url = "https://mirrors.aliyun.com/pypi/packages/ea/f3/33192b4761f7f9b2f7f4281365d925d663629cfaea093a64b658b94fc8e1/aiohttp-3.12.13-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:54fbbe6beafc2820de71ece2198458a711e224e116efefa01b7969f3e2b3ddae" }, + { url = "https://mirrors.aliyun.com/pypi/packages/5e/0b/26ddd91ca8f84c48452431cb4c5dd9523b13bc0c9766bda468e072ac9e29/aiohttp-3.12.13-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:050bd277dfc3768b606fd4eae79dd58ceda67d8b0b3c565656a89ae34525d15e" }, + { url = "https://mirrors.aliyun.com/pypi/packages/c3/8d/e04569aae853302648e2c138a680a6a2f02e374c5b6711732b29f1e129cc/aiohttp-3.12.13-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:2637a60910b58f50f22379b6797466c3aa6ae28a6ab6404e09175ce4955b4e6a" }, + { url = "https://mirrors.aliyun.com/pypi/packages/ac/98/c193c1d1198571d988454e4ed75adc21c55af247a9fda08236602921c8c8/aiohttp-3.12.13-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e986067357550d1aaa21cfe9897fa19e680110551518a5a7cf44e6c5638cb8b5" }, + { url = "https://mirrors.aliyun.com/pypi/packages/e7/9e/07bb8aa11eec762c6b1ff61575eeeb2657df11ab3d3abfa528d95f3e9337/aiohttp-3.12.13-cp312-cp312-win32.whl", hash = "sha256:ac941a80aeea2aaae2875c9500861a3ba356f9ff17b9cb2dbfb5cbf91baaf5bf" }, + { url = "https://mirrors.aliyun.com/pypi/packages/52/66/3ce877e56ec0813069cdc9607cd979575859c597b6fb9b4182c6d5f31886/aiohttp-3.12.13-cp312-cp312-win_amd64.whl", hash = "sha256:671f41e6146a749b6c81cb7fd07f5a8356d46febdaaaf07b0e774ff04830461e" }, +] + +[[package]] +name = "aiosignal" +version = "1.3.2" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +dependencies = [ + { name = "frozenlist" }, +] +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/ba/b5/6d55e80f6d8a08ce22b982eafa278d823b541c925f11ee774b0b9c43473d/aiosignal-1.3.2.tar.gz", hash = "sha256:a8c255c66fafb1e499c9351d0bf32ff2d8a0321595ebac3b93713656d2436f54" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/ec/6a/bc7e17a3e87a2985d3e8f4da4cd0f481060eb78fb08596c42be62c90a4d9/aiosignal-1.3.2-py2.py3-none-any.whl", hash = "sha256:45cde58e409a301715980c2b01d0c28bdde3770d8290b5eb2173759d9acb31a5" }, +] + +[[package]] +name = "annotated-types" +version = "0.7.0" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53" }, +] + +[[package]] +name = "anyio" +version = "4.9.0" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +dependencies = [ + { name = "idna" }, + { name = "sniffio" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/95/7d/4c1bd541d4dffa1b52bd83fb8527089e097a106fc90b467a7313b105f840/anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/a1/ee/48ca1a7c89ffec8b6a0c5d02b89c305671d5ffd8d3c94acf8b8c408575bb/anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c" }, +] + +[[package]] +name = "attrs" +version = "25.3.0" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3" }, +] + +[[package]] +name = "certifi" +version = "2025.6.15" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/73/f7/f14b46d4bcd21092d7d3ccef689615220d8a08fb25e564b65d20738e672e/certifi-2025.6.15.tar.gz", hash = "sha256:d747aa5a8b9bbbb1bb8c22bb13e22bd1f18e9796defa16bab421f7f7a317323b" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/84/ae/320161bd181fc06471eed047ecce67b693fd7515b16d495d8932db763426/certifi-2025.6.15-py3-none-any.whl", hash = "sha256:2e0c7ce7cb5d8f8634ca55d2ba7e6ec2689a2fd6537d8dec1296a477a4910057" }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.2" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/e4/33/89c2ced2b67d1c2a61c19c6751aa8902d46ce3dacb23600a283619f5a12d/charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/d7/a4/37f4d6035c89cac7930395a35cc0f1b872e652eaafb76a6075943754f095/charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7" }, + { url = "https://mirrors.aliyun.com/pypi/packages/ee/8a/1a5e33b73e0d9287274f899d967907cd0bf9c343e651755d9307e0dbf2b3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3" }, + { url = "https://mirrors.aliyun.com/pypi/packages/66/52/59521f1d8e6ab1482164fa21409c5ef44da3e9f653c13ba71becdd98dec3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a" }, + { url = "https://mirrors.aliyun.com/pypi/packages/86/2d/fb55fdf41964ec782febbf33cb64be480a6b8f16ded2dbe8db27a405c09f/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214" }, + { url = "https://mirrors.aliyun.com/pypi/packages/8c/73/6ede2ec59bce19b3edf4209d70004253ec5f4e319f9a2e3f2f15601ed5f7/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a" }, + { url = "https://mirrors.aliyun.com/pypi/packages/09/14/957d03c6dc343c04904530b6bef4e5efae5ec7d7990a7cbb868e4595ee30/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd" }, + { url = "https://mirrors.aliyun.com/pypi/packages/0d/c8/8174d0e5c10ccebdcb1b53cc959591c4c722a3ad92461a273e86b9f5a302/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981" }, + { url = "https://mirrors.aliyun.com/pypi/packages/58/aa/8904b84bc8084ac19dc52feb4f5952c6df03ffb460a887b42615ee1382e8/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c" }, + { url = "https://mirrors.aliyun.com/pypi/packages/c2/26/89ee1f0e264d201cb65cf054aca6038c03b1a0c6b4ae998070392a3ce605/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b" }, + { url = "https://mirrors.aliyun.com/pypi/packages/fd/07/68e95b4b345bad3dbbd3a8681737b4338ff2c9df29856a6d6d23ac4c73cb/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d" }, + { url = "https://mirrors.aliyun.com/pypi/packages/77/1a/5eefc0ce04affb98af07bc05f3bac9094513c0e23b0562d64af46a06aae4/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f" }, + { url = "https://mirrors.aliyun.com/pypi/packages/37/a0/2410e5e6032a174c95e0806b1a6585eb21e12f445ebe239fac441995226a/charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c" }, + { url = "https://mirrors.aliyun.com/pypi/packages/6c/4f/c02d5c493967af3eda9c771ad4d2bbc8df6f99ddbeb37ceea6e8716a32bc/charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e" }, + { url = "https://mirrors.aliyun.com/pypi/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0" }, +] + +[[package]] +name = "click" +version = "8.2.1" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b" }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6" }, +] + +[[package]] +name = "dashscope" +version = "1.23.6" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +dependencies = [ + { name = "aiohttp" }, + { name = "requests" }, + { name = "websocket-client" }, +] +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/17/52/acf3b2ace5aec0a66ee51ac7f441522b82601a0a936658fb196032835ab0/dashscope-1.23.6-py3-none-any.whl", hash = "sha256:aadf9fd0e1648f8b492e060e857b1be025a4ecb9ec440c36129633cd60b54a23" }, +] + +[[package]] +name = "decorator" +version = "5.2.1" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a" }, +] + +[[package]] +name = "deprecation" +version = "2.1.0" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +dependencies = [ + { name = "packaging" }, +] +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/5a/d3/8ae2869247df154b64c1884d7346d412fed0c49df84db635aab2d1c40e62/deprecation-2.1.0.tar.gz", hash = "sha256:72b3bde64e5d778694b0cf68178aed03d15e15477116add3fb773e581f9518ff" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/02/c3/253a89ee03fc9b9682f1541728eb66db7db22148cd94f89ab22528cd1e1b/deprecation-2.1.0-py2.py3-none-any.whl", hash = "sha256:a10811591210e1fb0e768a8c25517cabeabcba6f0bf96564f8ff45189f90b14a" }, +] + +[[package]] +name = "distro" +version = "1.9.0" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/fc/f8/98eea607f65de6527f8a2e8885fc8015d3e6f5775df186e443e0964a11c3/distro-1.9.0.tar.gz", hash = "sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl", hash = "sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2" }, +] + +[[package]] +name = "docstring-parser" +version = "0.16" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/08/12/9c22a58c0b1e29271051222d8906257616da84135af9ed167c9e28f85cb3/docstring_parser-0.16.tar.gz", hash = "sha256:538beabd0af1e2db0146b6bd3caa526c35a34d61af9fd2887f3a8a27a739aa6e" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/d5/7c/e9fcff7623954d86bdc17782036cbf715ecab1bec4847c008557affe1ca8/docstring_parser-0.16-py3-none-any.whl", hash = "sha256:bf0a1387354d3691d102edef7ec124f219ef639982d096e26e3b60aeffa90637" }, +] + +[[package]] +name = "fastapi" +version = "0.115.14" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +dependencies = [ + { name = "pydantic" }, + { name = "starlette" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/ca/53/8c38a874844a8b0fa10dd8adf3836ac154082cf88d3f22b544e9ceea0a15/fastapi-0.115.14.tar.gz", hash = "sha256:b1de15cdc1c499a4da47914db35d0e4ef8f1ce62b624e94e0e5824421df99739" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/53/50/b1222562c6d270fea83e9c9075b8e8600b8479150a18e4516a6138b980d1/fastapi-0.115.14-py3-none-any.whl", hash = "sha256:6c0c8bf9420bd58f565e585036d971872472b4f7d3f6c73b698e10cffdefb3ca" }, +] + +[[package]] +name = "filelock" +version = "3.18.0" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/0a/10/c23352565a6544bdc5353e0b15fc1c563352101f30e24bf500207a54df9a/filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de" }, +] + +[[package]] +name = "frozenlist" +version = "1.7.0" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/79/b1/b64018016eeb087db503b038296fd782586432b9c077fc5c7839e9cb6ef6/frozenlist-1.7.0.tar.gz", hash = "sha256:2e310d81923c2437ea8670467121cc3e9b0f76d3043cc1d2331d56c7fb7a3a8f" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/ef/a2/c8131383f1e66adad5f6ecfcce383d584ca94055a34d683bbb24ac5f2f1c/frozenlist-1.7.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:3dbf9952c4bb0e90e98aec1bd992b3318685005702656bc6f67c1a32b76787f2" }, + { url = "https://mirrors.aliyun.com/pypi/packages/4c/9d/02754159955088cb52567337d1113f945b9e444c4960771ea90eb73de8db/frozenlist-1.7.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:1f5906d3359300b8a9bb194239491122e6cf1444c2efb88865426f170c262cdb" }, + { url = "https://mirrors.aliyun.com/pypi/packages/01/7a/0046ef1bd6699b40acd2067ed6d6670b4db2f425c56980fa21c982c2a9db/frozenlist-1.7.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3dabd5a8f84573c8d10d8859a50ea2dec01eea372031929871368c09fa103478" }, + { url = "https://mirrors.aliyun.com/pypi/packages/d6/a2/a910bafe29c86997363fb4c02069df4ff0b5bc39d33c5198b4e9dd42d8f8/frozenlist-1.7.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa57daa5917f1738064f302bf2626281a1cb01920c32f711fbc7bc36111058a8" }, + { url = "https://mirrors.aliyun.com/pypi/packages/64/3e/5036af9d5031374c64c387469bfcc3af537fc0f5b1187d83a1cf6fab1639/frozenlist-1.7.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c193dda2b6d49f4c4398962810fa7d7c78f032bf45572b3e04dd5249dff27e08" }, + { url = "https://mirrors.aliyun.com/pypi/packages/06/39/6a17b7c107a2887e781a48ecf20ad20f1c39d94b2a548c83615b5b879f28/frozenlist-1.7.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bfe2b675cf0aaa6d61bf8fbffd3c274b3c9b7b1623beb3809df8a81399a4a9c4" }, + { url = "https://mirrors.aliyun.com/pypi/packages/be/00/711d1337c7327d88c44d91dd0f556a1c47fb99afc060ae0ef66b4d24793d/frozenlist-1.7.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8fc5d5cda37f62b262405cf9652cf0856839c4be8ee41be0afe8858f17f4c94b" }, + { url = "https://mirrors.aliyun.com/pypi/packages/24/fe/74e6ec0639c115df13d5850e75722750adabdc7de24e37e05a40527ca539/frozenlist-1.7.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b0d5ce521d1dd7d620198829b87ea002956e4319002ef0bc8d3e6d045cb4646e" }, + { url = "https://mirrors.aliyun.com/pypi/packages/8d/db/48421f62a6f77c553575201e89048e97198046b793f4a089c79a6e3268bd/frozenlist-1.7.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:488d0a7d6a0008ca0db273c542098a0fa9e7dfaa7e57f70acef43f32b3f69dca" }, + { url = "https://mirrors.aliyun.com/pypi/packages/1d/fa/cb4a76bea23047c8462976ea7b7a2bf53997a0ca171302deae9d6dd12096/frozenlist-1.7.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:15a7eaba63983d22c54d255b854e8108e7e5f3e89f647fc854bd77a237e767df" }, + { url = "https://mirrors.aliyun.com/pypi/packages/5d/32/476a4b5cfaa0ec94d3f808f193301debff2ea42288a099afe60757ef6282/frozenlist-1.7.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:1eaa7e9c6d15df825bf255649e05bd8a74b04a4d2baa1ae46d9c2d00b2ca2cb5" }, + { url = "https://mirrors.aliyun.com/pypi/packages/8d/ba/9a28042f84a6bf8ea5dbc81cfff8eaef18d78b2a1ad9d51c7bc5b029ad16/frozenlist-1.7.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e4389e06714cfa9d47ab87f784a7c5be91d3934cd6e9a7b85beef808297cc025" }, + { url = "https://mirrors.aliyun.com/pypi/packages/bc/29/3a32959e68f9cf000b04e79ba574527c17e8842e38c91d68214a37455786/frozenlist-1.7.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:73bd45e1488c40b63fe5a7df892baf9e2a4d4bb6409a2b3b78ac1c6236178e01" }, + { url = "https://mirrors.aliyun.com/pypi/packages/80/e8/edf2f9e00da553f07f5fa165325cfc302dead715cab6ac8336a5f3d0adc2/frozenlist-1.7.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:99886d98e1643269760e5fe0df31e5ae7050788dd288947f7f007209b8c33f08" }, + { url = "https://mirrors.aliyun.com/pypi/packages/1c/80/9a0eb48b944050f94cc51ee1c413eb14a39543cc4f760ed12657a5a3c45a/frozenlist-1.7.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:290a172aae5a4c278c6da8a96222e6337744cd9c77313efe33d5670b9f65fc43" }, + { url = "https://mirrors.aliyun.com/pypi/packages/f3/74/87601e0fb0369b7a2baf404ea921769c53b7ae00dee7dcfe5162c8c6dbf0/frozenlist-1.7.0-cp312-cp312-win32.whl", hash = "sha256:426c7bc70e07cfebc178bc4c2bf2d861d720c4fff172181eeb4a4c41d4ca2ad3" }, + { url = "https://mirrors.aliyun.com/pypi/packages/0b/15/c026e9a9fc17585a9d461f65d8593d281fedf55fbf7eb53f16c6df2392f9/frozenlist-1.7.0-cp312-cp312-win_amd64.whl", hash = "sha256:563b72efe5da92e02eb68c59cb37205457c977aa7a449ed1b37e6939e5c47c6a" }, + { url = "https://mirrors.aliyun.com/pypi/packages/ee/45/b82e3c16be2182bff01179db177fe144d58b5dc787a7d4492c6ed8b9317f/frozenlist-1.7.0-py3-none-any.whl", hash = "sha256:9a5af342e34f7e97caf8c995864c7a396418ae2859cc6fdf1b1073020d516a7e" }, +] + +[[package]] +name = "fsspec" +version = "2025.5.1" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/00/f7/27f15d41f0ed38e8fcc488584b57e902b331da7f7c6dcda53721b15838fc/fsspec-2025.5.1.tar.gz", hash = "sha256:2e55e47a540b91843b755e83ded97c6e897fa0942b11490113f09e9c443c2475" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/bb/61/78c7b3851add1481b048b5fdc29067397a1784e2910592bc81bb3f608635/fsspec-2025.5.1-py3-none-any.whl", hash = "sha256:24d3a2e663d5fc735ab256263c4075f374a174c3410c0b25e5bd1970bceaa462" }, +] + +[[package]] +name = "gitdb" +version = "4.0.12" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +dependencies = [ + { name = "smmap" }, +] +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/72/94/63b0fc47eb32792c7ba1fe1b694daec9a63620db1e313033d18140c2320a/gitdb-4.0.12.tar.gz", hash = "sha256:5ef71f855d191a3326fcfbc0d5da835f26b13fbcba60c32c21091c349ffdb571" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/a0/61/5c78b91c3143ed5c14207f463aecfc8f9dbb5092fb2869baf37c273b2705/gitdb-4.0.12-py3-none-any.whl", hash = "sha256:67073e15955400952c6565cc3e707c554a4eea2e428946f7a4c162fab9bd9bcf" }, +] + +[[package]] +name = "gitpython" +version = "3.1.44" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +dependencies = [ + { name = "gitdb" }, +] +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/c0/89/37df0b71473153574a5cdef8f242de422a0f5d26d7a9e231e6f169b4ad14/gitpython-3.1.44.tar.gz", hash = "sha256:c87e30b26253bf5418b01b0660f818967f3c503193838337fe5e573331249269" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/1d/9a/4114a9057db2f1462d5c8f8390ab7383925fe1ac012eaa42402ad65c2963/GitPython-3.1.44-py3-none-any.whl", hash = "sha256:9e0e10cda9bed1ee64bc9a6de50e7e38a9c9943241cd7f585f6df3ed28011110" }, +] + +[[package]] +name = "glrocky-sdk" +version = "0.4.3" +source = { path = "glrocky_sdk-0.4.3-py3-none-any.whl" } +dependencies = [ + { name = "agno" }, + { name = "dashscope" }, + { name = "fastapi" }, + { name = "hmdriver2" }, + { name = "litellm" }, + { name = "loguru" }, + { name = "pillow" }, + { name = "pydantic" }, + { name = "pytest" }, + { name = "python-dotenv" }, + { name = "requests" }, + { name = "tenacity" }, + { name = "uiautomator2" }, + { name = "uvicorn" }, +] +wheels = [ + { filename = "glrocky_sdk-0.4.3-py3-none-any.whl", hash = "sha256:604769f87f7550bd1b2ef5c0bae1d48129ff05c255bb5c5156f1b3b684eb6268" }, +] + +[package.metadata] +requires-dist = [ + { name = "agno", specifier = ">=1.5.1" }, + { name = "dashscope", specifier = ">=1.23.3" }, + { name = "fastapi", specifier = ">=0.115.12" }, + { name = "hmdriver2", specifier = ">=1.4.3" }, + { name = "litellm", specifier = ">=1.69.3" }, + { name = "loguru", specifier = "==0.7.3" }, + { name = "pillow", specifier = ">=11.2.1" }, + { name = "pydantic", specifier = "==2.11.3" }, + { name = "pytest", specifier = "==8.3.5" }, + { name = "python-dotenv", specifier = ">=1.1.0" }, + { name = "requests", specifier = ">=2.32.3" }, + { name = "tenacity", specifier = ">=9.1.2" }, + { name = "uiautomator2", specifier = ">=3.2.9" }, + { name = "uvicorn" }, +] + +[[package]] +name = "h11" +version = "0.16.0" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86" }, +] + +[[package]] +name = "hf-xet" +version = "1.1.5" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/ed/d4/7685999e85945ed0d7f0762b686ae7015035390de1161dcea9d5276c134c/hf_xet-1.1.5.tar.gz", hash = "sha256:69ebbcfd9ec44fdc2af73441619eeb06b94ee34511bbcf57cd423820090f5694" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/00/89/a1119eebe2836cb25758e7661d6410d3eae982e2b5e974bcc4d250be9012/hf_xet-1.1.5-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:f52c2fa3635b8c37c7764d8796dfa72706cc4eded19d638331161e82b0792e23" }, + { url = "https://mirrors.aliyun.com/pypi/packages/de/5f/2c78e28f309396e71ec8e4e9304a6483dcbc36172b5cea8f291994163425/hf_xet-1.1.5-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:9fa6e3ee5d61912c4a113e0708eaaef987047616465ac7aa30f7121a48fc1af8" }, + { url = "https://mirrors.aliyun.com/pypi/packages/6d/2f/6cad7b5fe86b7652579346cb7f85156c11761df26435651cbba89376cd2c/hf_xet-1.1.5-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc874b5c843e642f45fd85cda1ce599e123308ad2901ead23d3510a47ff506d1" }, + { url = "https://mirrors.aliyun.com/pypi/packages/d0/54/0fcf2b619720a26fbb6cc941e89f2472a522cd963a776c089b189559447f/hf_xet-1.1.5-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:dbba1660e5d810bd0ea77c511a99e9242d920790d0e63c0e4673ed36c4022d18" }, + { url = "https://mirrors.aliyun.com/pypi/packages/f3/92/1d351ac6cef7c4ba8c85744d37ffbfac2d53d0a6c04d2cabeba614640a78/hf_xet-1.1.5-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ab34c4c3104133c495785d5d8bba3b1efc99de52c02e759cf711a91fd39d3a14" }, + { url = "https://mirrors.aliyun.com/pypi/packages/c9/65/4b2ddb0e3e983f2508528eb4501288ae2f84963586fbdfae596836d5e57a/hf_xet-1.1.5-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:83088ecea236d5113de478acb2339f92c95b4fb0462acaa30621fac02f5a534a" }, + { url = "https://mirrors.aliyun.com/pypi/packages/f0/55/ef77a85ee443ae05a9e9cba1c9f0dd9241eb42da2aeba1dc50f51154c81a/hf_xet-1.1.5-cp37-abi3-win_amd64.whl", hash = "sha256:73e167d9807d166596b4b2f0b585c6d5bd84a26dea32843665a8b58f6edba245" }, +] + +[[package]] +name = "hmdriver2" +version = "1.4.4" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +dependencies = [ + { name = "lxml" }, +] +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/20/dd/58578a0b8b9e28917f5c8ec559e41bbec46d5c3abd87aa2f32793d2e08f1/hmdriver2-1.4.4.tar.gz", hash = "sha256:ea2cd1f4b9ad9fe9a1dfa79f78c3d8f4be5a9e5ae805edae3ebee3f28e76d55a" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/2c/8b/d1e764ad756c4d9db6b1616c5a3ebd34abca98388cd378cd572a91f00066/hmdriver2-1.4.4-py3-none-any.whl", hash = "sha256:19ac55fb7f2a21bd60ceb4aba6d5f72cb5128a772ff3bef6bf6ce72277bf8bd1" }, +] + +[[package]] +name = "httpcore" +version = "1.0.9" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +dependencies = [ + { name = "certifi" }, + { name = "h11" }, +] +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55" }, +] + +[[package]] +name = "httpx" +version = "0.28.1" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +dependencies = [ + { name = "anyio" }, + { name = "certifi" }, + { name = "httpcore" }, + { name = "idna" }, +] +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad" }, +] + +[[package]] +name = "huggingface-hub" +version = "0.33.1" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +dependencies = [ + { name = "filelock" }, + { name = "fsspec" }, + { name = "hf-xet", marker = "platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'arm64' or platform_machine == 'x86_64'" }, + { name = "packaging" }, + { name = "pyyaml" }, + { name = "requests" }, + { name = "tqdm" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/a4/01/bfe0534a63ce7a2285e90dbb33e8a5b815ff096d8f7743b135c256916589/huggingface_hub-0.33.1.tar.gz", hash = "sha256:589b634f979da3ea4b8bdb3d79f97f547840dc83715918daf0b64209c0844c7b" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/d0/fb/5307bd3612eb0f0e62c3a916ae531d3a31e58fb5c82b58e3ebf7fd6f47a1/huggingface_hub-0.33.1-py3-none-any.whl", hash = "sha256:ec8d7444628210c0ba27e968e3c4c973032d44dcea59ca0d78ef3f612196f095" }, +] + +[[package]] +name = "idna" +version = "3.10" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3" }, +] + +[[package]] +name = "importlib-metadata" +version = "8.7.0" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +dependencies = [ + { name = "zipp" }, +] +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/76/66/650a33bd90f786193e4de4b3ad86ea60b53c89b669a5c7be931fac31cdb0/importlib_metadata-8.7.0.tar.gz", hash = "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/20/b0/36bd937216ec521246249be3bf9855081de4c5e06a0c9b4219dbeda50373/importlib_metadata-8.7.0-py3-none-any.whl", hash = "sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd" }, +] + +[[package]] +name = "iniconfig" +version = "2.1.0" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760" }, +] + +[[package]] +name = "jinja2" +version = "3.1.6" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67" }, +] + +[[package]] +name = "jiter" +version = "0.10.0" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/ee/9d/ae7ddb4b8ab3fb1b51faf4deb36cb48a4fbbd7cb36bad6a5fca4741306f7/jiter-0.10.0.tar.gz", hash = "sha256:07a7142c38aacc85194391108dc91b5b57093c978a9932bd86a36862759d9500" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/6d/b5/348b3313c58f5fbfb2194eb4d07e46a35748ba6e5b3b3046143f3040bafa/jiter-0.10.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:1e274728e4a5345a6dde2d343c8da018b9d4bd4350f5a472fa91f66fda44911b" }, + { url = "https://mirrors.aliyun.com/pypi/packages/9c/4a/6a2397096162b21645162825f058d1709a02965606e537e3304b02742e9b/jiter-0.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7202ae396446c988cb2a5feb33a543ab2165b786ac97f53b59aafb803fef0744" }, + { url = "https://mirrors.aliyun.com/pypi/packages/2a/85/1ce02cade7516b726dd88f59a4ee46914bf79d1676d1228ef2002ed2f1c9/jiter-0.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23ba7722d6748b6920ed02a8f1726fb4b33e0fd2f3f621816a8b486c66410ab2" }, + { url = "https://mirrors.aliyun.com/pypi/packages/75/d0/bb6b4f209a77190ce10ea8d7e50bf3725fc16d3372d0a9f11985a2b23eff/jiter-0.10.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:371eab43c0a288537d30e1f0b193bc4eca90439fc08a022dd83e5e07500ed026" }, + { url = "https://mirrors.aliyun.com/pypi/packages/a0/f5/a61787da9b8847a601e6827fbc42ecb12be2c925ced3252c8ffcb56afcaf/jiter-0.10.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6c675736059020365cebc845a820214765162728b51ab1e03a1b7b3abb70f74c" }, + { url = "https://mirrors.aliyun.com/pypi/packages/12/e4/6f906272810a7b21406c760a53aadbe52e99ee070fc5c0cb191e316de30b/jiter-0.10.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0c5867d40ab716e4684858e4887489685968a47e3ba222e44cde6e4a2154f959" }, + { url = "https://mirrors.aliyun.com/pypi/packages/e2/ba/77013b0b8ba904bf3762f11e0129b8928bff7f978a81838dfcc958ad5728/jiter-0.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:395bb9a26111b60141757d874d27fdea01b17e8fac958b91c20128ba8f4acc8a" }, + { url = "https://mirrors.aliyun.com/pypi/packages/67/27/c62568e3ccb03368dbcc44a1ef3a423cb86778a4389e995125d3d1aaa0a4/jiter-0.10.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6842184aed5cdb07e0c7e20e5bdcfafe33515ee1741a6835353bb45fe5d1bd95" }, + { url = "https://mirrors.aliyun.com/pypi/packages/c0/72/0d6b7e31fc17a8fdce76164884edef0698ba556b8eb0af9546ae1a06b91d/jiter-0.10.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:62755d1bcea9876770d4df713d82606c8c1a3dca88ff39046b85a048566d56ea" }, + { url = "https://mirrors.aliyun.com/pypi/packages/2f/09/bc1661fbbcbeb6244bd2904ff3a06f340aa77a2b94e5a7373fd165960ea3/jiter-0.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:533efbce2cacec78d5ba73a41756beff8431dfa1694b6346ce7af3a12c42202b" }, + { url = "https://mirrors.aliyun.com/pypi/packages/1b/84/5a5d5400e9d4d54b8004c9673bbe4403928a00d28529ff35b19e9d176b19/jiter-0.10.0-cp312-cp312-win32.whl", hash = "sha256:8be921f0cadd245e981b964dfbcd6fd4bc4e254cdc069490416dd7a2632ecc01" }, + { url = "https://mirrors.aliyun.com/pypi/packages/9b/52/7ec47455e26f2d6e5f2ea4951a0652c06e5b995c291f723973ae9e724a65/jiter-0.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:a7c7d785ae9dda68c2678532a5a1581347e9c15362ae9f6e68f3fdbfb64f2e49" }, +] + +[[package]] +name = "jsonschema" +version = "4.24.0" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +dependencies = [ + { name = "attrs" }, + { name = "jsonschema-specifications" }, + { name = "referencing" }, + { name = "rpds-py" }, +] +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/bf/d3/1cf5326b923a53515d8f3a2cd442e6d7e94fcc444716e879ea70a0ce3177/jsonschema-4.24.0.tar.gz", hash = "sha256:0b4e8069eb12aedfa881333004bccaec24ecef5a8a6a4b6df142b2cc9599d196" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/a2/3d/023389198f69c722d039351050738d6755376c8fd343e91dc493ea485905/jsonschema-4.24.0-py3-none-any.whl", hash = "sha256:a462455f19f5faf404a7902952b6f0e3ce868f3ee09a359b05eca6673bd8412d" }, +] + +[[package]] +name = "jsonschema-specifications" +version = "2025.4.1" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +dependencies = [ + { name = "referencing" }, +] +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/bf/ce/46fbd9c8119cfc3581ee5643ea49464d168028cfb5caff5fc0596d0cf914/jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/01/0e/b27cdbaccf30b890c40ed1da9fd4a3593a5cf94dae54fb34f8a4b74fcd3f/jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af" }, +] + +[[package]] +name = "litellm" +version = "1.73.6" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +dependencies = [ + { name = "aiohttp" }, + { name = "click" }, + { name = "httpx" }, + { name = "importlib-metadata" }, + { name = "jinja2" }, + { name = "jsonschema" }, + { name = "openai" }, + { name = "pydantic" }, + { name = "python-dotenv" }, + { name = "tiktoken" }, + { name = "tokenizers" }, +] +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/26/58/1a8ecf64b9a1f01dbddc123200f3156638c919fc3de683bd206235ccd33c/litellm-1.73.6.tar.gz", hash = "sha256:072ff9225aaa9caafe0fa9782df0ba4c93f893791cc55dd5ed218a401e788e88" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/81/be/3e9a3097c3b25bd1bc24073afdf5e6316120d8f4127e38bd6dcc3e193f55/litellm-1.73.6-py3-none-any.whl", hash = "sha256:98b3c7f436e6521e280f98faf9bad06c4c76d6a1678db2b370ffa175c206d288" }, +] + +[[package]] +name = "loguru" +version = "0.7.3" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "win32-setctime", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/3a/05/a1dae3dffd1116099471c643b8924f5aa6524411dc6c63fdae648c4f1aca/loguru-0.7.3.tar.gz", hash = "sha256:19480589e77d47b8d85b2c827ad95d49bf31b0dcde16593892eb51dd18706eb6" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/0c/29/0348de65b8cc732daa3e33e67806420b2ae89bdce2b04af740289c5c6c8c/loguru-0.7.3-py3-none-any.whl", hash = "sha256:31a33c10c8e1e10422bfd431aeb5d351c7cf7fa671e3c4df004162264b28220c" }, +] + +[[package]] +name = "lxml" +version = "5.4.0" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/76/3d/14e82fc7c8fb1b7761f7e748fd47e2ec8276d137b6acfe5a4bb73853e08f/lxml-5.4.0.tar.gz", hash = "sha256:d12832e1dbea4be280b22fd0ea7c9b87f0d8fc51ba06e92dc62d52f804f78ebd" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/f8/4c/d101ace719ca6a4ec043eb516fcfcb1b396a9fccc4fcd9ef593df34ba0d5/lxml-5.4.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b5aff6f3e818e6bdbbb38e5967520f174b18f539c2b9de867b1e7fde6f8d95a4" }, + { url = "https://mirrors.aliyun.com/pypi/packages/11/84/beddae0cec4dd9ddf46abf156f0af451c13019a0fa25d7445b655ba5ccb7/lxml-5.4.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:942a5d73f739ad7c452bf739a62a0f83e2578afd6b8e5406308731f4ce78b16d" }, + { url = "https://mirrors.aliyun.com/pypi/packages/d0/25/d0d93a4e763f0462cccd2b8a665bf1e4343dd788c76dcfefa289d46a38a9/lxml-5.4.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:460508a4b07364d6abf53acaa0a90b6d370fafde5693ef37602566613a9b0779" }, + { url = "https://mirrors.aliyun.com/pypi/packages/31/ce/1df18fb8f7946e7f3388af378b1f34fcf253b94b9feedb2cec5969da8012/lxml-5.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:529024ab3a505fed78fe3cc5ddc079464e709f6c892733e3f5842007cec8ac6e" }, + { url = "https://mirrors.aliyun.com/pypi/packages/4e/62/f4a6c60ae7c40d43657f552f3045df05118636be1165b906d3423790447f/lxml-5.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7ca56ebc2c474e8f3d5761debfd9283b8b18c76c4fc0967b74aeafba1f5647f9" }, + { url = "https://mirrors.aliyun.com/pypi/packages/9e/aa/04f00009e1e3a77838c7fc948f161b5d2d5de1136b2b81c712a263829ea4/lxml-5.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a81e1196f0a5b4167a8dafe3a66aa67c4addac1b22dc47947abd5d5c7a3f24b5" }, + { url = "https://mirrors.aliyun.com/pypi/packages/c9/1f/e0b2f61fa2404bf0f1fdf1898377e5bd1b74cc9b2cf2c6ba8509b8f27990/lxml-5.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00b8686694423ddae324cf614e1b9659c2edb754de617703c3d29ff568448df5" }, + { url = "https://mirrors.aliyun.com/pypi/packages/24/a2/8263f351b4ffe0ed3e32ea7b7830f845c795349034f912f490180d88a877/lxml-5.4.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:c5681160758d3f6ac5b4fea370495c48aac0989d6a0f01bb9a72ad8ef5ab75c4" }, + { url = "https://mirrors.aliyun.com/pypi/packages/05/00/41db052f279995c0e35c79d0f0fc9f8122d5b5e9630139c592a0b58c71b4/lxml-5.4.0-cp312-cp312-manylinux_2_28_ppc64le.whl", hash = "sha256:2dc191e60425ad70e75a68c9fd90ab284df64d9cd410ba8d2b641c0c45bc006e" }, + { url = "https://mirrors.aliyun.com/pypi/packages/1d/be/ee99e6314cdef4587617d3b3b745f9356d9b7dd12a9663c5f3b5734b64ba/lxml-5.4.0-cp312-cp312-manylinux_2_28_s390x.whl", hash = "sha256:67f779374c6b9753ae0a0195a892a1c234ce8416e4448fe1e9f34746482070a7" }, + { url = "https://mirrors.aliyun.com/pypi/packages/ad/36/239820114bf1d71f38f12208b9c58dec033cbcf80101cde006b9bde5cffd/lxml-5.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:79d5bfa9c1b455336f52343130b2067164040604e41f6dc4d8313867ed540079" }, + { url = "https://mirrors.aliyun.com/pypi/packages/d4/e1/1b795cc0b174efc9e13dbd078a9ff79a58728a033142bc6d70a1ee8fc34d/lxml-5.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3d3c30ba1c9b48c68489dc1829a6eede9873f52edca1dda900066542528d6b20" }, + { url = "https://mirrors.aliyun.com/pypi/packages/72/48/3c198455ca108cec5ae3662ae8acd7fd99476812fd712bb17f1b39a0b589/lxml-5.4.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:1af80c6316ae68aded77e91cd9d80648f7dd40406cef73df841aa3c36f6907c8" }, + { url = "https://mirrors.aliyun.com/pypi/packages/d6/10/5bf51858971c51ec96cfc13e800a9951f3fd501686f4c18d7d84fe2d6352/lxml-5.4.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:4d885698f5019abe0de3d352caf9466d5de2baded00a06ef3f1216c1a58ae78f" }, + { url = "https://mirrors.aliyun.com/pypi/packages/2b/11/06710dd809205377da380546f91d2ac94bad9ff735a72b64ec029f706c85/lxml-5.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:aea53d51859b6c64e7c51d522c03cc2c48b9b5d6172126854cc7f01aa11f52bc" }, + { url = "https://mirrors.aliyun.com/pypi/packages/f5/b0/15b6217834b5e3a59ebf7f53125e08e318030e8cc0d7310355e6edac98ef/lxml-5.4.0-cp312-cp312-win32.whl", hash = "sha256:d90b729fd2732df28130c064aac9bb8aff14ba20baa4aee7bd0795ff1187545f" }, + { url = "https://mirrors.aliyun.com/pypi/packages/91/1e/05ddcb57ad2f3069101611bd5f5084157d90861a2ef460bf42f45cced944/lxml-5.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:1dc4ca99e89c335a7ed47d38964abcb36c5910790f9bd106f2a8fa2ee0b909d2" }, +] + +[[package]] +name = "markdown-it-py" +version = "3.0.0" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +dependencies = [ + { name = "mdurl" }, +] +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1" }, +] + +[[package]] +name = "markupsafe" +version = "3.0.2" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/22/09/d1f21434c97fc42f09d290cbb6350d44eb12f09cc62c9476effdb33a18aa/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf" }, + { url = "https://mirrors.aliyun.com/pypi/packages/6b/b0/18f76bba336fa5aecf79d45dcd6c806c280ec44538b3c13671d49099fdd0/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225" }, + { url = "https://mirrors.aliyun.com/pypi/packages/e0/25/dd5c0f6ac1311e9b40f4af06c78efde0f3b5cbf02502f8ef9501294c425b/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028" }, + { url = "https://mirrors.aliyun.com/pypi/packages/f3/f0/89e7aadfb3749d0f52234a0c8c7867877876e0a20b60e2188e9850794c17/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8" }, + { url = "https://mirrors.aliyun.com/pypi/packages/d5/da/f2eeb64c723f5e3777bc081da884b414671982008c47dcc1873d81f625b6/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c" }, + { url = "https://mirrors.aliyun.com/pypi/packages/da/0e/1f32af846df486dce7c227fe0f2398dc7e2e51d4a370508281f3c1c5cddc/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557" }, + { url = "https://mirrors.aliyun.com/pypi/packages/c4/f6/bb3ca0532de8086cbff5f06d137064c8410d10779c4c127e0e47d17c0b71/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22" }, + { url = "https://mirrors.aliyun.com/pypi/packages/a2/82/8be4c96ffee03c5b4a034e60a31294daf481e12c7c43ab8e34a1453ee48b/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48" }, + { url = "https://mirrors.aliyun.com/pypi/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30" }, + { url = "https://mirrors.aliyun.com/pypi/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87" }, +] + +[[package]] +name = "mdurl" +version = "0.1.2" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8" }, +] + +[[package]] +name = "multidict" +version = "6.6.3" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/3d/2c/5dad12e82fbdf7470f29bff2171484bf07cb3b16ada60a6589af8f376440/multidict-6.6.3.tar.gz", hash = "sha256:798a9eb12dab0a6c2e29c1de6f3468af5cb2da6053a20dfa3344907eed0937cc" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/0e/a0/6b57988ea102da0623ea814160ed78d45a2645e4bbb499c2896d12833a70/multidict-6.6.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:056bebbeda16b2e38642d75e9e5310c484b7c24e3841dc0fb943206a72ec89d6" }, + { url = "https://mirrors.aliyun.com/pypi/packages/07/7a/d1e92665b0850c6c0508f101f9cf0410c1afa24973e1115fe9c6a185ebf7/multidict-6.6.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e5f481cccb3c5c5e5de5d00b5141dc589c1047e60d07e85bbd7dea3d4580d63f" }, + { url = "https://mirrors.aliyun.com/pypi/packages/52/6f/dd104490e01be6ef8bf9573705d8572f8c2d2c561f06e3826b081d9e6591/multidict-6.6.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:10bea2ee839a759ee368b5a6e47787f399b41e70cf0c20d90dfaf4158dfb4e55" }, + { url = "https://mirrors.aliyun.com/pypi/packages/44/fe/06e0e01b1b0611e6581b7fd5a85b43dacc08b6cea3034f902f383b0873e5/multidict-6.6.3-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:2334cfb0fa9549d6ce2c21af2bfbcd3ac4ec3646b1b1581c88e3e2b1779ec92b" }, + { url = "https://mirrors.aliyun.com/pypi/packages/ce/71/4f0e558fb77696b89c233c1ee2d92f3e1d5459070a0e89153c9e9e804186/multidict-6.6.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b8fee016722550a2276ca2cb5bb624480e0ed2bd49125b2b73b7010b9090e888" }, + { url = "https://mirrors.aliyun.com/pypi/packages/e3/25/cca0e68228addad24903801ed1ab42e21307a1b4b6dd2cf63da5d3ae082a/multidict-6.6.3-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e5511cb35f5c50a2db21047c875eb42f308c5583edf96bd8ebf7d770a9d68f6d" }, + { url = "https://mirrors.aliyun.com/pypi/packages/6e/a3/46f2d420d86bbcb8fe660b26a10a219871a0fbf4d43cb846a4031533f3e0/multidict-6.6.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:712b348f7f449948e0a6c4564a21c7db965af900973a67db432d724619b3c680" }, + { url = "https://mirrors.aliyun.com/pypi/packages/9e/73/1c743542fe00794a2ec7466abd3f312ccb8fad8dff9f36d42e18fb1ec33e/multidict-6.6.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e4e15d2138ee2694e038e33b7c3da70e6b0ad8868b9f8094a72e1414aeda9c1a" }, + { url = "https://mirrors.aliyun.com/pypi/packages/a4/11/6ec9dcbe2264b92778eeb85407d1df18812248bf3506a5a1754bc035db0c/multidict-6.6.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8df25594989aebff8a130f7899fa03cbfcc5d2b5f4a461cf2518236fe6f15961" }, + { url = "https://mirrors.aliyun.com/pypi/packages/9b/2b/631b1e2afeb5f1696846d747d36cda075bfdc0bc7245d6ba5c319278d6c4/multidict-6.6.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:159ca68bfd284a8860f8d8112cf0521113bffd9c17568579e4d13d1f1dc76b65" }, + { url = "https://mirrors.aliyun.com/pypi/packages/bf/0e/7e3b93f79efeb6111d3bf9a1a69e555ba1d07ad1c11bceb56b7310d0d7ee/multidict-6.6.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:e098c17856a8c9ade81b4810888c5ad1914099657226283cab3062c0540b0643" }, + { url = "https://mirrors.aliyun.com/pypi/packages/ad/9e/086846c1d6601948e7de556ee464a2d4c85e33883e749f46b9547d7b0704/multidict-6.6.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:67c92ed673049dec52d7ed39f8cf9ebbadf5032c774058b4406d18c8f8fe7063" }, + { url = "https://mirrors.aliyun.com/pypi/packages/8c/7b/86ec260118e522f1a31550e87b23542294880c97cfbf6fb18cc67b044c66/multidict-6.6.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:bd0578596e3a835ef451784053cfd327d607fc39ea1a14812139339a18a0dbc3" }, + { url = "https://mirrors.aliyun.com/pypi/packages/8c/bd/22ce8f47abb0be04692c9fc4638508b8340987b18691aa7775d927b73f72/multidict-6.6.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:346055630a2df2115cd23ae271910b4cae40f4e336773550dca4889b12916e75" }, + { url = "https://mirrors.aliyun.com/pypi/packages/07/9c/91b7ac1691be95cd1f4a26e36a74b97cda6aa9820632d31aab4410f46ebd/multidict-6.6.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:555ff55a359302b79de97e0468e9ee80637b0de1fce77721639f7cd9440b3a10" }, + { url = "https://mirrors.aliyun.com/pypi/packages/6f/5c/4d7adc739884f7a9fbe00d1eac8c034023ef8bad71f2ebe12823ca2e3649/multidict-6.6.3-cp312-cp312-win32.whl", hash = "sha256:73ab034fb8d58ff85c2bcbadc470efc3fafeea8affcf8722855fb94557f14cc5" }, + { url = "https://mirrors.aliyun.com/pypi/packages/6a/a3/0fbc7afdf7cb1aa12a086b02959307848eb6bcc8f66fcb66c0cb57e2a2c1/multidict-6.6.3-cp312-cp312-win_amd64.whl", hash = "sha256:04cbcce84f63b9af41bad04a54d4cc4e60e90c35b9e6ccb130be2d75b71f8c17" }, + { url = "https://mirrors.aliyun.com/pypi/packages/b8/95/8c825bd70ff9b02462dc18d1295dd08d3e9e4eb66856d292ffa62cfe1920/multidict-6.6.3-cp312-cp312-win_arm64.whl", hash = "sha256:0f1130b896ecb52d2a1e615260f3ea2af55fa7dc3d7c3003ba0c3121a759b18b" }, + { url = "https://mirrors.aliyun.com/pypi/packages/d8/30/9aec301e9772b098c1f5c0ca0279237c9766d94b97802e9888010c64b0ed/multidict-6.6.3-py3-none-any.whl", hash = "sha256:8db10f29c7541fc5da4defd8cd697e1ca429db743fa716325f236079b96f775a" }, +] + +[[package]] +name = "openai" +version = "1.93.0" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +dependencies = [ + { name = "anyio" }, + { name = "distro" }, + { name = "httpx" }, + { name = "jiter" }, + { name = "pydantic" }, + { name = "sniffio" }, + { name = "tqdm" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/e4/d7/e91c6a9cf71726420cddf539852ee4c29176ebb716a702d9118d0409fd8e/openai-1.93.0.tar.gz", hash = "sha256:988f31ade95e1ff0585af11cc5a64510225e4f5cd392698c675d0a9265b8e337" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/64/46/a10d9df4673df56f71201d129ba1cb19eaff3366d08c8664d61a7df52e65/openai-1.93.0-py3-none-any.whl", hash = "sha256:3d746fe5498f0dd72e0d9ab706f26c91c0f646bf7459e5629af8ba7c9dbdf090" }, +] + +[[package]] +name = "packaging" +version = "25.0" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484" }, +] + +[[package]] +name = "pillow" +version = "11.2.1" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/af/cb/bb5c01fcd2a69335b86c22142b2bccfc3464087efb7fd382eee5ffc7fdf7/pillow-11.2.1.tar.gz", hash = "sha256:a64dd61998416367b7ef979b73d3a85853ba9bec4c2925f74e588879a58716b6" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/c7/40/052610b15a1b8961f52537cc8326ca6a881408bc2bdad0d852edeb6ed33b/pillow-11.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:78afba22027b4accef10dbd5eed84425930ba41b3ea0a86fa8d20baaf19d807f" }, + { url = "https://mirrors.aliyun.com/pypi/packages/e5/7e/b86dbd35a5f938632093dc40d1682874c33dcfe832558fc80ca56bfcb774/pillow-11.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:78092232a4ab376a35d68c4e6d5e00dfd73454bd12b230420025fbe178ee3b0b" }, + { url = "https://mirrors.aliyun.com/pypi/packages/a4/5c/467a161f9ed53e5eab51a42923c33051bf8d1a2af4626ac04f5166e58e0c/pillow-11.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25a5f306095c6780c52e6bbb6109624b95c5b18e40aab1c3041da3e9e0cd3e2d" }, + { url = "https://mirrors.aliyun.com/pypi/packages/62/73/972b7742e38ae0e2ac76ab137ca6005dcf877480da0d9d61d93b613065b4/pillow-11.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c7b29dbd4281923a2bfe562acb734cee96bbb129e96e6972d315ed9f232bef4" }, + { url = "https://mirrors.aliyun.com/pypi/packages/e4/3a/427e4cb0b9e177efbc1a84798ed20498c4f233abde003c06d2650a6d60cb/pillow-11.2.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:3e645b020f3209a0181a418bffe7b4a93171eef6c4ef6cc20980b30bebf17b7d" }, + { url = "https://mirrors.aliyun.com/pypi/packages/fe/7c/d8b1330458e4d2f3f45d9508796d7caf0c0d3764c00c823d10f6f1a3b76d/pillow-11.2.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b2dbea1012ccb784a65349f57bbc93730b96e85b42e9bf7b01ef40443db720b4" }, + { url = "https://mirrors.aliyun.com/pypi/packages/b3/2f/65738384e0b1acf451de5a573d8153fe84103772d139e1e0bdf1596be2ea/pillow-11.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:da3104c57bbd72948d75f6a9389e6727d2ab6333c3617f0a89d72d4940aa0443" }, + { url = "https://mirrors.aliyun.com/pypi/packages/6a/c5/e795c9f2ddf3debb2dedd0df889f2fe4b053308bb59a3cc02a0cd144d641/pillow-11.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:598174aef4589af795f66f9caab87ba4ff860ce08cd5bb447c6fc553ffee603c" }, + { url = "https://mirrors.aliyun.com/pypi/packages/96/ae/ca0099a3995976a9fce2f423166f7bff9b12244afdc7520f6ed38911539a/pillow-11.2.1-cp312-cp312-win32.whl", hash = "sha256:1d535df14716e7f8776b9e7fee118576d65572b4aad3ed639be9e4fa88a1cad3" }, + { url = "https://mirrors.aliyun.com/pypi/packages/7c/18/24bff2ad716257fc03da964c5e8f05d9790a779a8895d6566e493ccf0189/pillow-11.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:14e33b28bf17c7a38eede290f77db7c664e4eb01f7869e37fa98a5aa95978941" }, + { url = "https://mirrors.aliyun.com/pypi/packages/da/bb/e8d656c9543276517ee40184aaa39dcb41e683bca121022f9323ae11b39d/pillow-11.2.1-cp312-cp312-win_arm64.whl", hash = "sha256:21e1470ac9e5739ff880c211fc3af01e3ae505859392bf65458c224d0bf283eb" }, +] + +[[package]] +name = "pluggy" +version = "1.6.0" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746" }, +] + +[[package]] +name = "propcache" +version = "0.3.2" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/a6/16/43264e4a779dd8588c21a70f0709665ee8f611211bdd2c87d952cfa7c776/propcache-0.3.2.tar.gz", hash = "sha256:20d7d62e4e7ef05f221e0db2856b979540686342e7dd9973b815599c7057e168" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/a8/42/9ca01b0a6f48e81615dca4765a8f1dd2c057e0540f6116a27dc5ee01dfb6/propcache-0.3.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:8de106b6c84506b31c27168582cd3cb3000a6412c16df14a8628e5871ff83c10" }, + { url = "https://mirrors.aliyun.com/pypi/packages/af/6e/21293133beb550f9c901bbece755d582bfaf2176bee4774000bd4dd41884/propcache-0.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:28710b0d3975117239c76600ea351934ac7b5ff56e60953474342608dbbb6154" }, + { url = "https://mirrors.aliyun.com/pypi/packages/0c/c8/0393a0a3a2b8760eb3bde3c147f62b20044f0ddac81e9d6ed7318ec0d852/propcache-0.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce26862344bdf836650ed2487c3d724b00fbfec4233a1013f597b78c1cb73615" }, + { url = "https://mirrors.aliyun.com/pypi/packages/37/2c/489afe311a690399d04a3e03b069225670c1d489eb7b044a566511c1c498/propcache-0.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bca54bd347a253af2cf4544bbec232ab982f4868de0dd684246b67a51bc6b1db" }, + { url = "https://mirrors.aliyun.com/pypi/packages/9d/ca/63b520d2f3d418c968bf596839ae26cf7f87bead026b6192d4da6a08c467/propcache-0.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:55780d5e9a2ddc59711d727226bb1ba83a22dd32f64ee15594b9392b1f544eb1" }, + { url = "https://mirrors.aliyun.com/pypi/packages/11/60/1d0ed6fff455a028d678df30cc28dcee7af77fa2b0e6962ce1df95c9a2a9/propcache-0.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:035e631be25d6975ed87ab23153db6a73426a48db688070d925aa27e996fe93c" }, + { url = "https://mirrors.aliyun.com/pypi/packages/37/7c/54fd5301ef38505ab235d98827207176a5c9b2aa61939b10a460ca53e123/propcache-0.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee6f22b6eaa39297c751d0e80c0d3a454f112f5c6481214fcf4c092074cecd67" }, + { url = "https://mirrors.aliyun.com/pypi/packages/ee/1a/89a40e0846f5de05fdc6779883bf46ba980e6df4d2ff8fb02643de126592/propcache-0.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7ca3aee1aa955438c4dba34fc20a9f390e4c79967257d830f137bd5a8a32ed3b" }, + { url = "https://mirrors.aliyun.com/pypi/packages/5e/33/ca98368586c9566a6b8d5ef66e30484f8da84c0aac3f2d9aec6d31a11bd5/propcache-0.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7a4f30862869fa2b68380d677cc1c5fcf1e0f2b9ea0cf665812895c75d0ca3b8" }, + { url = "https://mirrors.aliyun.com/pypi/packages/ba/11/ace870d0aafe443b33b2f0b7efdb872b7c3abd505bfb4890716ad7865e9d/propcache-0.3.2-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:b77ec3c257d7816d9f3700013639db7491a434644c906a2578a11daf13176251" }, + { url = "https://mirrors.aliyun.com/pypi/packages/5b/d2/86fd6f7adffcfc74b42c10a6b7db721d1d9ca1055c45d39a1a8f2a740a21/propcache-0.3.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:cab90ac9d3f14b2d5050928483d3d3b8fb6b4018893fc75710e6aa361ecb2474" }, + { url = "https://mirrors.aliyun.com/pypi/packages/07/94/2d7d1e328f45ff34a0a284cf5a2847013701e24c2a53117e7c280a4316b3/propcache-0.3.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:0b504d29f3c47cf6b9e936c1852246c83d450e8e063d50562115a6be6d3a2535" }, + { url = "https://mirrors.aliyun.com/pypi/packages/b7/05/37ae63a0087677e90b1d14710e532ff104d44bc1efa3b3970fff99b891dc/propcache-0.3.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:ce2ac2675a6aa41ddb2a0c9cbff53780a617ac3d43e620f8fd77ba1c84dcfc06" }, + { url = "https://mirrors.aliyun.com/pypi/packages/a4/7c/3f539fcae630408d0bd8bf3208b9a647ccad10976eda62402a80adf8fc34/propcache-0.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:62b4239611205294cc433845b914131b2a1f03500ff3c1ed093ed216b82621e1" }, + { url = "https://mirrors.aliyun.com/pypi/packages/7c/d2/34b9eac8c35f79f8a962546b3e97e9d4b990c420ee66ac8255d5d9611648/propcache-0.3.2-cp312-cp312-win32.whl", hash = "sha256:df4a81b9b53449ebc90cc4deefb052c1dd934ba85012aa912c7ea7b7e38b60c1" }, + { url = "https://mirrors.aliyun.com/pypi/packages/19/61/d582be5d226cf79071681d1b46b848d6cb03d7b70af7063e33a2787eaa03/propcache-0.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:7046e79b989d7fe457bb755844019e10f693752d169076138abf17f31380800c" }, + { url = "https://mirrors.aliyun.com/pypi/packages/cc/35/cc0aaecf278bb4575b8555f2b137de5ab821595ddae9da9d3cd1da4072c7/propcache-0.3.2-py3-none-any.whl", hash = "sha256:98f1ec44fb675f5052cccc8e609c46ed23a35a1cfd18545ad4e29002d858a43f" }, +] + +[[package]] +name = "pydantic" +version = "2.11.3" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/10/2e/ca897f093ee6c5f3b0bee123ee4465c50e75431c3d5b6a3b44a47134e891/pydantic-2.11.3.tar.gz", hash = "sha256:7471657138c16adad9322fe3070c0116dd6c3ad8d649300e3cbdfe91f4db4ec3" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/b0/1d/407b29780a289868ed696d1616f4aad49d6388e5a77f567dcd2629dcd7b8/pydantic-2.11.3-py3-none-any.whl", hash = "sha256:a082753436a07f9ba1289c6ffa01cd93db3548776088aa917cc43b63f68fa60f" }, +] + +[[package]] +name = "pydantic-core" +version = "2.33.1" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/17/19/ed6a078a5287aea7922de6841ef4c06157931622c89c2a47940837b5eecd/pydantic_core-2.33.1.tar.gz", hash = "sha256:bcc9c6fdb0ced789245b02b7d6603e17d1563064ddcfc36f046b61c0c05dd9df" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/c8/ce/3cb22b07c29938f97ff5f5bb27521f95e2ebec399b882392deb68d6c440e/pydantic_core-2.33.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:1293d7febb995e9d3ec3ea09caf1a26214eec45b0f29f6074abb004723fc1de8" }, + { url = "https://mirrors.aliyun.com/pypi/packages/19/78/f381d643b12378fee782a72126ec5d793081ef03791c28a0fd542a5bee64/pydantic_core-2.33.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:99b56acd433386c8f20be5c4000786d1e7ca0523c8eefc995d14d79c7a081498" }, + { url = "https://mirrors.aliyun.com/pypi/packages/9d/2b/98a37b80b15aac9eb2c6cfc6dbd35e5058a352891c5cce3a8472d77665a6/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35a5ec3fa8c2fe6c53e1b2ccc2454398f95d5393ab398478f53e1afbbeb4d939" }, + { url = "https://mirrors.aliyun.com/pypi/packages/4e/d4/3c59514e0f55a161004792b9ff3039da52448f43f5834f905abef9db6e4a/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b172f7b9d2f3abc0efd12e3386f7e48b576ef309544ac3a63e5e9cdd2e24585d" }, + { url = "https://mirrors.aliyun.com/pypi/packages/a9/b6/c2c7946ef70576f79a25db59a576bce088bdc5952d1b93c9789b091df716/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9097b9f17f91eea659b9ec58148c0747ec354a42f7389b9d50701610d86f812e" }, + { url = "https://mirrors.aliyun.com/pypi/packages/88/fe/65a880f81e3f2a974312b61f82a03d85528f89a010ce21ad92f109d94deb/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cc77ec5b7e2118b152b0d886c7514a4653bcb58c6b1d760134a9fab915f777b3" }, + { url = "https://mirrors.aliyun.com/pypi/packages/6f/ff/4459e4146afd0462fb483bb98aa2436d69c484737feaceba1341615fb0ac/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5e3d15245b08fa4a84cefc6c9222e6f37c98111c8679fbd94aa145f9a0ae23d" }, + { url = "https://mirrors.aliyun.com/pypi/packages/7c/76/1c42e384e8d78452ededac8b583fe2550c84abfef83a0552e0e7478ccbc3/pydantic_core-2.33.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ef99779001d7ac2e2461d8ab55d3373fe7315caefdbecd8ced75304ae5a6fc6b" }, + { url = "https://mirrors.aliyun.com/pypi/packages/00/72/7d0cf05095c15f7ffe0eb78914b166d591c0eed72f294da68378da205101/pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:fc6bf8869e193855e8d91d91f6bf59699a5cdfaa47a404e278e776dd7f168b39" }, + { url = "https://mirrors.aliyun.com/pypi/packages/b3/69/94a514066bb7d8be499aa764926937409d2389c09be0b5107a970286ef81/pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:b1caa0bc2741b043db7823843e1bde8aaa58a55a58fda06083b0569f8b45693a" }, + { url = "https://mirrors.aliyun.com/pypi/packages/84/b0/e390071eadb44b41f4f54c3cef64d8bf5f9612c92686c9299eaa09e267e2/pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ec259f62538e8bf364903a7d0d0239447059f9434b284f5536e8402b7dd198db" }, + { url = "https://mirrors.aliyun.com/pypi/packages/d6/b2/288b3579ffc07e92af66e2f1a11be3b056fe1214aab314748461f21a31c3/pydantic_core-2.33.1-cp312-cp312-win32.whl", hash = "sha256:e14f369c98a7c15772b9da98987f58e2b509a93235582838bd0d1d8c08b68fda" }, + { url = "https://mirrors.aliyun.com/pypi/packages/02/28/58442ad1c22b5b6742b992ba9518420235adced665513868f99a1c2638a5/pydantic_core-2.33.1-cp312-cp312-win_amd64.whl", hash = "sha256:1c607801d85e2e123357b3893f82c97a42856192997b95b4d8325deb1cd0c5f4" }, + { url = "https://mirrors.aliyun.com/pypi/packages/a1/eb/f54809b51c7e2a1d9f439f158b8dd94359321abcc98767e16fc48ae5a77e/pydantic_core-2.33.1-cp312-cp312-win_arm64.whl", hash = "sha256:8d13f0276806ee722e70a1c93da19748594f19ac4299c7e41237fc791d1861ea" }, +] + +[[package]] +name = "pydantic-settings" +version = "2.10.1" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +dependencies = [ + { name = "pydantic" }, + { name = "python-dotenv" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/68/85/1ea668bbab3c50071ca613c6ab30047fb36ab0da1b92fa8f17bbc38fd36c/pydantic_settings-2.10.1.tar.gz", hash = "sha256:06f0062169818d0f5524420a360d632d5857b83cffd4d42fe29597807a1614ee" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/58/f0/427018098906416f580e3cf1366d3b1abfb408a0652e9f31600c24a1903c/pydantic_settings-2.10.1-py3-none-any.whl", hash = "sha256:a60952460b99cf661dc25c29c0ef171721f98bfcb52ef8d9ea4c943d7c8cc796" }, +] + +[[package]] +name = "pygments" +version = "2.19.2" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b" }, +] + +[[package]] +name = "pytest" +version = "8.3.5" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "iniconfig" }, + { name = "packaging" }, + { name = "pluggy" }, +] +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/ae/3c/c9d525a414d506893f0cd8a8d0de7706446213181570cdbd766691164e40/pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/30/3d/64ad57c803f1fa1e963a7946b6e0fea4a70df53c1a7fed304586539c2bac/pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820" }, +] + +[[package]] +name = "python-dotenv" +version = "1.1.1" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/f6/b0/4bc07ccd3572a2f9df7e6782f52b0c6c90dcbb803ac4a167702d7d0dfe1e/python_dotenv-1.1.1.tar.gz", hash = "sha256:a8a6399716257f45be6a007360200409fce5cda2661e3dec71d23dc15f6189ab" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/5f/ed/539768cf28c661b5b068d66d96a2f155c4971a5d55684a514c1a0e0dec2f/python_dotenv-1.1.1-py3-none-any.whl", hash = "sha256:31f23644fe2602f88ff55e1f5c79ba497e01224ee7737937930c448e4d0e24dc" }, +] + +[[package]] +name = "python-multipart" +version = "0.0.20" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/f3/87/f44d7c9f274c7ee665a29b885ec97089ec5dc034c7f3fafa03da9e39a09e/python_multipart-0.0.20.tar.gz", hash = "sha256:8dd0cab45b8e23064ae09147625994d090fa46f5b0d1e13af944c331a7fa9d13" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/45/58/38b5afbc1a800eeea951b9285d3912613f2603bdf897a4ab0f4bd7f405fc/python_multipart-0.0.20-py3-none-any.whl", hash = "sha256:8a62d3a8335e06589fe01f2a3e178cdcc632f3fbe0d492ad9ee0ec35aab1f104" }, +] + +[[package]] +name = "pyyaml" +version = "6.0.2" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab" }, + { url = "https://mirrors.aliyun.com/pypi/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725" }, + { url = "https://mirrors.aliyun.com/pypi/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5" }, + { url = "https://mirrors.aliyun.com/pypi/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425" }, + { url = "https://mirrors.aliyun.com/pypi/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476" }, + { url = "https://mirrors.aliyun.com/pypi/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48" }, + { url = "https://mirrors.aliyun.com/pypi/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b" }, + { url = "https://mirrors.aliyun.com/pypi/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4" }, + { url = "https://mirrors.aliyun.com/pypi/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8" }, +] + +[[package]] +name = "referencing" +version = "0.36.2" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +dependencies = [ + { name = "attrs" }, + { name = "rpds-py" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0" }, +] + +[[package]] +name = "regex" +version = "2024.11.6" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/8e/5f/bd69653fbfb76cf8604468d3b4ec4c403197144c7bfe0e6a5fc9e02a07cb/regex-2024.11.6.tar.gz", hash = "sha256:7ab159b063c52a0333c884e4679f8d7a85112ee3078fe3d9004b2dd875585519" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/ba/30/9a87ce8336b172cc232a0db89a3af97929d06c11ceaa19d97d84fa90a8f8/regex-2024.11.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:52fb28f528778f184f870b7cf8f225f5eef0a8f6e3778529bdd40c7b3920796a" }, + { url = "https://mirrors.aliyun.com/pypi/packages/01/e8/00008ad4ff4be8b1844786ba6636035f7ef926db5686e4c0f98093612add/regex-2024.11.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdd6028445d2460f33136c55eeb1f601ab06d74cb3347132e1c24250187500d9" }, + { url = "https://mirrors.aliyun.com/pypi/packages/60/85/cebcc0aff603ea0a201667b203f13ba75d9fc8668fab917ac5b2de3967bc/regex-2024.11.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:805e6b60c54bf766b251e94526ebad60b7de0c70f70a4e6210ee2891acb70bf2" }, + { url = "https://mirrors.aliyun.com/pypi/packages/94/2b/701a4b0585cb05472a4da28ee28fdfe155f3638f5e1ec92306d924e5faf0/regex-2024.11.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b85c2530be953a890eaffde05485238f07029600e8f098cdf1848d414a8b45e4" }, + { url = "https://mirrors.aliyun.com/pypi/packages/4b/bf/fa87e563bf5fee75db8915f7352e1887b1249126a1be4813837f5dbec965/regex-2024.11.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb26437975da7dc36b7efad18aa9dd4ea569d2357ae6b783bf1118dabd9ea577" }, + { url = "https://mirrors.aliyun.com/pypi/packages/a1/56/7295e6bad94b047f4d0834e4779491b81216583c00c288252ef625c01d23/regex-2024.11.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:abfa5080c374a76a251ba60683242bc17eeb2c9818d0d30117b4486be10c59d3" }, + { url = "https://mirrors.aliyun.com/pypi/packages/fb/13/e3b075031a738c9598c51cfbc4c7879e26729c53aa9cca59211c44235314/regex-2024.11.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b7fa6606c2881c1db9479b0eaa11ed5dfa11c8d60a474ff0e095099f39d98e" }, + { url = "https://mirrors.aliyun.com/pypi/packages/24/56/0b3f1b66d592be6efec23a795b37732682520b47c53da5a32c33ed7d84e3/regex-2024.11.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c32f75920cf99fe6b6c539c399a4a128452eaf1af27f39bce8909c9a3fd8cbe" }, + { url = "https://mirrors.aliyun.com/pypi/packages/f9/a1/eb378dada8b91c0e4c5f08ffb56f25fcae47bf52ad18f9b2f33b83e6d498/regex-2024.11.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:982e6d21414e78e1f51cf595d7f321dcd14de1f2881c5dc6a6e23bbbbd68435e" }, + { url = "https://mirrors.aliyun.com/pypi/packages/83/f2/033e7dec0cfd6dda93390089864732a3409246ffe8b042e9554afa9bff4e/regex-2024.11.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a7c2155f790e2fb448faed6dd241386719802296ec588a8b9051c1f5c481bc29" }, + { url = "https://mirrors.aliyun.com/pypi/packages/83/23/15d4552ea28990a74e7696780c438aadd73a20318c47e527b47a4a5a596d/regex-2024.11.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:149f5008d286636e48cd0b1dd65018548944e495b0265b45e1bffecce1ef7f39" }, + { url = "https://mirrors.aliyun.com/pypi/packages/e3/39/ed4416bc90deedbfdada2568b2cb0bc1fdb98efe11f5378d9892b2a88f8f/regex-2024.11.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e5364a4502efca094731680e80009632ad6624084aff9a23ce8c8c6820de3e51" }, + { url = "https://mirrors.aliyun.com/pypi/packages/93/2d/dd56bb76bd8e95bbce684326302f287455b56242a4f9c61f1bc76e28360e/regex-2024.11.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0a86e7eeca091c09e021db8eb72d54751e527fa47b8d5787caf96d9831bd02ad" }, + { url = "https://mirrors.aliyun.com/pypi/packages/0b/55/31877a249ab7a5156758246b9c59539abbeba22461b7d8adc9e8475ff73e/regex-2024.11.6-cp312-cp312-win32.whl", hash = "sha256:32f9a4c643baad4efa81d549c2aadefaeba12249b2adc5af541759237eee1c54" }, + { url = "https://mirrors.aliyun.com/pypi/packages/38/ec/ad2d7de49a600cdb8dd78434a1aeffe28b9d6fc42eb36afab4a27ad23384/regex-2024.11.6-cp312-cp312-win_amd64.whl", hash = "sha256:a93c194e2df18f7d264092dc8539b8ffb86b45b899ab976aa15d48214138e81b" }, +] + +[[package]] +name = "requests" +version = "2.32.4" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/e1/0a/929373653770d8a0d7ea76c37de6e41f11eb07559b103b1c02cafb3f7cf8/requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/7c/e4/56027c4a6b4ae70ca9de302488c5ca95ad4a39e190093d6c1a8ace08341b/requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c" }, +] + +[[package]] +name = "retry2" +version = "0.9.5" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +dependencies = [ + { name = "decorator" }, +] +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/97/49/1cae6d9b932378cc75f902fa70648945b7ea7190cb0d09ff83b47de3e60a/retry2-0.9.5-py2.py3-none-any.whl", hash = "sha256:f7fee13b1e15d0611c462910a6aa72a8919823988dd0412152bc3719c89a4e55" }, +] + +[[package]] +name = "rich" +version = "14.0.0" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +dependencies = [ + { name = "markdown-it-py" }, + { name = "pygments" }, +] +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/a1/53/830aa4c3066a8ab0ae9a9955976fb770fe9c6102117c8ec4ab3ea62d89e8/rich-14.0.0.tar.gz", hash = "sha256:82f1bc23a6a21ebca4ae0c45af9bdbc492ed20231dcb63f297d6d1021a9d5725" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/0d/9b/63f4c7ebc259242c89b3acafdb37b41d1185c07ff0011164674e9076b491/rich-14.0.0-py3-none-any.whl", hash = "sha256:1c9491e1951aac09caffd42f448ee3d04e58923ffe14993f6e83068dc395d7e0" }, +] + +[[package]] +name = "rpds-py" +version = "0.25.1" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/8c/a6/60184b7fc00dd3ca80ac635dd5b8577d444c57e8e8742cecabfacb829921/rpds_py-0.25.1.tar.gz", hash = "sha256:8960b6dac09b62dac26e75d7e2c4a22efb835d827a7278c34f72b2b84fa160e3" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/7f/81/28ab0408391b1dc57393653b6a0cf2014cc282cc2909e4615e63e58262be/rpds_py-0.25.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:b5ffe453cde61f73fea9430223c81d29e2fbf412a6073951102146c84e19e34c" }, + { url = "https://mirrors.aliyun.com/pypi/packages/2c/9a/7797f04cad0d5e56310e1238434f71fc6939d0bc517192a18bb99a72a95f/rpds_py-0.25.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:115874ae5e2fdcfc16b2aedc95b5eef4aebe91b28e7e21951eda8a5dc0d3461b" }, + { url = "https://mirrors.aliyun.com/pypi/packages/69/3c/93d2ef941b04898011e5d6eaa56a1acf46a3b4c9f4b3ad1bbcbafa0bee1f/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a714bf6e5e81b0e570d01f56e0c89c6375101b8463999ead3a93a5d2a4af91fa" }, + { url = "https://mirrors.aliyun.com/pypi/packages/c1/57/ad0e31e928751dde8903a11102559628d24173428a0f85e25e187defb2c1/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:35634369325906bcd01577da4c19e3b9541a15e99f31e91a02d010816b49bfda" }, + { url = "https://mirrors.aliyun.com/pypi/packages/16/ad/c0c652fa9bba778b4f54980a02962748479dc09632e1fd34e5282cf2556c/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d4cb2b3ddc16710548801c6fcc0cfcdeeff9dafbc983f77265877793f2660309" }, + { url = "https://mirrors.aliyun.com/pypi/packages/2a/39/3e1839bc527e6fcf48d5fec4770070f872cdee6c6fbc9b259932f4e88a38/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9ceca1cf097ed77e1a51f1dbc8d174d10cb5931c188a4505ff9f3e119dfe519b" }, + { url = "https://mirrors.aliyun.com/pypi/packages/7a/95/dd6b91cd4560da41df9d7030a038298a67d24f8ca38e150562644c829c48/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c2cd1a4b0c2b8c5e31ffff50d09f39906fe351389ba143c195566056c13a7ea" }, + { url = "https://mirrors.aliyun.com/pypi/packages/64/48/1be88a820e7494ce0a15c2d390ccb7c52212370badabf128e6a7bb4cb802/rpds_py-0.25.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1de336a4b164c9188cb23f3703adb74a7623ab32d20090d0e9bf499a2203ad65" }, + { url = "https://mirrors.aliyun.com/pypi/packages/cf/07/3e2a17927ef6d7720b9949ec1b37d1e963b829ad0387f7af18d923d5cfa5/rpds_py-0.25.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9fca84a15333e925dd59ce01da0ffe2ffe0d6e5d29a9eeba2148916d1824948c" }, + { url = "https://mirrors.aliyun.com/pypi/packages/d2/e5/76cf010998deccc4f95305d827847e2eae9c568099c06b405cf96384762b/rpds_py-0.25.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:88ec04afe0c59fa64e2f6ea0dd9657e04fc83e38de90f6de201954b4d4eb59bd" }, + { url = "https://mirrors.aliyun.com/pypi/packages/52/9a/df55efd84403736ba37a5a6377b70aad0fd1cb469a9109ee8a1e21299a1c/rpds_py-0.25.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a8bd2f19e312ce3e1d2c635618e8a8d8132892bb746a7cf74780a489f0f6cdcb" }, + { url = "https://mirrors.aliyun.com/pypi/packages/ab/aa/dc3620dd8db84454aaf9374bd318f1aa02578bba5e567f5bf6b79492aca4/rpds_py-0.25.1-cp312-cp312-win32.whl", hash = "sha256:e5e2f7280d8d0d3ef06f3ec1b4fd598d386cc6f0721e54f09109a8132182fbfe" }, + { url = "https://mirrors.aliyun.com/pypi/packages/a3/7f/7cef485269a50ed5b4e9bae145f512d2a111ca638ae70cc101f661b4defd/rpds_py-0.25.1-cp312-cp312-win_amd64.whl", hash = "sha256:db58483f71c5db67d643857404da360dce3573031586034b7d59f245144cc192" }, + { url = "https://mirrors.aliyun.com/pypi/packages/99/f2/c2d64f6564f32af913bf5f3f7ae41c7c263c5ae4c4e8f1a17af8af66cd46/rpds_py-0.25.1-cp312-cp312-win_arm64.whl", hash = "sha256:6d50841c425d16faf3206ddbba44c21aa3310a0cebc3c1cdfc3e3f4f9f6f5728" }, +] + +[[package]] +name = "ruff" +version = "0.12.2" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/6c/3d/d9a195676f25d00dbfcf3cf95fdd4c685c497fcfa7e862a44ac5e4e96480/ruff-0.12.2.tar.gz", hash = "sha256:d7b4f55cd6f325cb7621244f19c873c565a08aff5a4ba9c69aa7355f3f7afd3e" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/74/b6/2098d0126d2d3318fd5bec3ad40d06c25d377d95749f7a0c5af17129b3b1/ruff-0.12.2-py3-none-linux_armv6l.whl", hash = "sha256:093ea2b221df1d2b8e7ad92fc6ffdca40a2cb10d8564477a987b44fd4008a7be" }, + { url = "https://mirrors.aliyun.com/pypi/packages/b1/4b/5da0142033dbe155dc598cfb99262d8ee2449d76920ea92c4eeb9547c208/ruff-0.12.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:09e4cf27cc10f96b1708100fa851e0daf21767e9709e1649175355280e0d950e" }, + { url = "https://mirrors.aliyun.com/pypi/packages/3e/21/967b82550a503d7c5c5c127d11c935344b35e8c521f52915fc858fb3e473/ruff-0.12.2-py3-none-macosx_11_0_arm64.whl", hash = "sha256:8ae64755b22f4ff85e9c52d1f82644abd0b6b6b6deedceb74bd71f35c24044cc" }, + { url = "https://mirrors.aliyun.com/pypi/packages/33/91/00cff7102e2ec71a4890fb7ba1803f2cdb122d82787c7d7cf8041fe8cbc1/ruff-0.12.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3eb3a6b2db4d6e2c77e682f0b988d4d61aff06860158fdb413118ca133d57922" }, + { url = "https://mirrors.aliyun.com/pypi/packages/9b/eb/928814daec4e1ba9115858adcda44a637fb9010618721937491e4e2283b8/ruff-0.12.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:73448de992d05517170fc37169cbca857dfeaeaa8c2b9be494d7bcb0d36c8f4b" }, + { url = "https://mirrors.aliyun.com/pypi/packages/50/fa/f15089bc20c40f4f72334f9145dde55ab2b680e51afb3b55422effbf2fb6/ruff-0.12.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3b8b94317cbc2ae4a2771af641739f933934b03555e51515e6e021c64441532d" }, + { url = "https://mirrors.aliyun.com/pypi/packages/43/9f/1f6f98f39f2b9302acc161a4a2187b1e3a97634fe918a8e731e591841cf4/ruff-0.12.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:45fc42c3bf1d30d2008023a0a9a0cfb06bf9835b147f11fe0679f21ae86d34b1" }, + { url = "https://mirrors.aliyun.com/pypi/packages/d8/70/08991ac46e38ddd231c8f4fd05ef189b1b94be8883e8c0c146a025c20a19/ruff-0.12.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce48f675c394c37e958bf229fb5c1e843e20945a6d962cf3ea20b7a107dcd9f4" }, + { url = "https://mirrors.aliyun.com/pypi/packages/88/a9/5a55266fec474acfd0a1c73285f19dd22461d95a538f29bba02edd07a5d9/ruff-0.12.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:793d8859445ea47591272021a81391350205a4af65a9392401f418a95dfb75c9" }, + { url = "https://mirrors.aliyun.com/pypi/packages/87/e5/0c270e458fc73c46c0d0f7cf970bb14786e5fdb88c87b5e423a4bd65232b/ruff-0.12.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6932323db80484dda89153da3d8e58164d01d6da86857c79f1961934354992da" }, + { url = "https://mirrors.aliyun.com/pypi/packages/b7/b6/45ab96070c9752af37f0be364d849ed70e9ccede07675b0ec4e3ef76b63b/ruff-0.12.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:6aa7e623a3a11538108f61e859ebf016c4f14a7e6e4eba1980190cacb57714ce" }, + { url = "https://mirrors.aliyun.com/pypi/packages/86/91/26a6e6a424eb147cc7627eebae095cfa0b4b337a7c1c413c447c9ebb72fd/ruff-0.12.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:2a4a20aeed74671b2def096bdf2eac610c7d8ffcbf4fb0e627c06947a1d7078d" }, + { url = "https://mirrors.aliyun.com/pypi/packages/f5/0c/9f344583465a61c8918a7cda604226e77b2c548daf8ef7c2bfccf2b37200/ruff-0.12.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:71a4c550195612f486c9d1f2b045a600aeba851b298c667807ae933478fcef04" }, + { url = "https://mirrors.aliyun.com/pypi/packages/1c/b7/99c34ded8fb5f86c0280278fa89a0066c3760edc326e935ce0b1550d315d/ruff-0.12.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:4987b8f4ceadf597c927beee65a5eaf994c6e2b631df963f86d8ad1bdea99342" }, + { url = "https://mirrors.aliyun.com/pypi/packages/51/de/8589fa724590faa057e5a6d171e7f2f6cffe3287406ef40e49c682c07d89/ruff-0.12.2-py3-none-win32.whl", hash = "sha256:369ffb69b70cd55b6c3fc453b9492d98aed98062db9fec828cdfd069555f5f1a" }, + { url = "https://mirrors.aliyun.com/pypi/packages/94/47/8abf129102ae4c90cba0c2199a1a9b0fa896f6f806238d6f8c14448cc748/ruff-0.12.2-py3-none-win_amd64.whl", hash = "sha256:dca8a3b6d6dc9810ed8f328d406516bf4d660c00caeaef36eb831cf4871b0639" }, + { url = "https://mirrors.aliyun.com/pypi/packages/e2/1f/72d2946e3cc7456bb837e88000eb3437e55f80db339c840c04015a11115d/ruff-0.12.2-py3-none-win_arm64.whl", hash = "sha256:48d6c6bfb4761df68bc05ae630e24f506755e702d4fb08f08460be778c7ccb12" }, +] + +[[package]] +name = "shellingham" +version = "1.5.4" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686" }, +] + +[[package]] +name = "smmap" +version = "5.0.2" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/44/cd/a040c4b3119bbe532e5b0732286f805445375489fceaec1f48306068ee3b/smmap-5.0.2.tar.gz", hash = "sha256:26ea65a03958fa0c8a1c7e8c7a58fdc77221b8910f6be2131affade476898ad5" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/04/be/d09147ad1ec7934636ad912901c5fd7667e1c858e19d355237db0d0cd5e4/smmap-5.0.2-py3-none-any.whl", hash = "sha256:b30115f0def7d7531d22a0fb6502488d879e75b260a9db4d0819cfb25403af5e" }, +] + +[[package]] +name = "sniffio" +version = "1.3.1" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2" }, +] + +[[package]] +name = "starlette" +version = "0.46.2" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +dependencies = [ + { name = "anyio" }, +] +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/ce/20/08dfcd9c983f6a6f4a1000d934b9e6d626cff8d2eeb77a89a68eef20a2b7/starlette-0.46.2.tar.gz", hash = "sha256:7f7361f34eed179294600af672f565727419830b54b7b084efe44bb82d2fccd5" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/8b/0c/9d30a4ebeb6db2b25a841afbb80f6ef9a854fc3b41be131d249a977b4959/starlette-0.46.2-py3-none-any.whl", hash = "sha256:595633ce89f8ffa71a015caed34a5b2dc1c0cdb3f0f1fbd1e69339cf2abeec35" }, +] + +[[package]] +name = "tenacity" +version = "9.1.2" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/0a/d4/2b0cd0fe285e14b36db076e78c93766ff1d529d70408bd1d2a5a84f1d929/tenacity-9.1.2.tar.gz", hash = "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/e5/30/643397144bfbfec6f6ef821f36f33e57d35946c44a2352d3c9f0ae847619/tenacity-9.1.2-py3-none-any.whl", hash = "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138" }, +] + +[[package]] +name = "tiktoken" +version = "0.9.0" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +dependencies = [ + { name = "regex" }, + { name = "requests" }, +] +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/ea/cf/756fedf6981e82897f2d570dd25fa597eb3f4459068ae0572d7e888cfd6f/tiktoken-0.9.0.tar.gz", hash = "sha256:d02a5ca6a938e0490e1ff957bc48c8b078c88cb83977be1625b1fd8aac792c5d" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/cf/e5/21ff33ecfa2101c1bb0f9b6df750553bd873b7fb532ce2cb276ff40b197f/tiktoken-0.9.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e88f121c1c22b726649ce67c089b90ddda8b9662545a8aeb03cfef15967ddd03" }, + { url = "https://mirrors.aliyun.com/pypi/packages/8e/03/a95e7b4863ee9ceec1c55983e4cc9558bcfd8f4f80e19c4f8a99642f697d/tiktoken-0.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a6600660f2f72369acb13a57fb3e212434ed38b045fd8cc6cdd74947b4b5d210" }, + { url = "https://mirrors.aliyun.com/pypi/packages/40/10/1305bb02a561595088235a513ec73e50b32e74364fef4de519da69bc8010/tiktoken-0.9.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:95e811743b5dfa74f4b227927ed86cbc57cad4df859cb3b643be797914e41794" }, + { url = "https://mirrors.aliyun.com/pypi/packages/1b/40/da42522018ca496432ffd02793c3a72a739ac04c3794a4914570c9bb2925/tiktoken-0.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99376e1370d59bcf6935c933cb9ba64adc29033b7e73f5f7569f3aad86552b22" }, + { url = "https://mirrors.aliyun.com/pypi/packages/5c/41/1e59dddaae270ba20187ceb8aa52c75b24ffc09f547233991d5fd822838b/tiktoken-0.9.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:badb947c32739fb6ddde173e14885fb3de4d32ab9d8c591cbd013c22b4c31dd2" }, + { url = "https://mirrors.aliyun.com/pypi/packages/5b/64/b16003419a1d7728d0d8c0d56a4c24325e7b10a21a9dd1fc0f7115c02f0a/tiktoken-0.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:5a62d7a25225bafed786a524c1b9f0910a1128f4232615bf3f8257a73aaa3b16" }, +] + +[[package]] +name = "tokenizers" +version = "0.21.2" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +dependencies = [ + { name = "huggingface-hub" }, +] +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/ab/2d/b0fce2b8201635f60e8c95990080f58461cc9ca3d5026de2e900f38a7f21/tokenizers-0.21.2.tar.gz", hash = "sha256:fdc7cffde3e2113ba0e6cc7318c40e3438a4d74bbc62bf04bcc63bdfb082ac77" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/1d/cc/2936e2d45ceb130a21d929743f1e9897514691bec123203e10837972296f/tokenizers-0.21.2-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:342b5dfb75009f2255ab8dec0041287260fed5ce00c323eb6bab639066fef8ec" }, + { url = "https://mirrors.aliyun.com/pypi/packages/6c/e6/33f41f2cc7861faeba8988e7a77601407bf1d9d28fc79c5903f8f77df587/tokenizers-0.21.2-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:126df3205d6f3a93fea80c7a8a266a78c1bd8dd2fe043386bafdd7736a23e45f" }, + { url = "https://mirrors.aliyun.com/pypi/packages/33/2b/1791eb329c07122a75b01035b1a3aa22ad139f3ce0ece1b059b506d9d9de/tokenizers-0.21.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a32cd81be21168bd0d6a0f0962d60177c447a1aa1b1e48fa6ec9fc728ee0b12" }, + { url = "https://mirrors.aliyun.com/pypi/packages/05/15/fd2d8104faa9f86ac68748e6f7ece0b5eb7983c7efc3a2c197cb98c99030/tokenizers-0.21.2-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8bd8999538c405133c2ab999b83b17c08b7fc1b48c1ada2469964605a709ef91" }, + { url = "https://mirrors.aliyun.com/pypi/packages/a5/2e/53e8fd053e1f3ffbe579ca5f9546f35ac67cf0039ed357ad7ec57f5f5af0/tokenizers-0.21.2-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5e9944e61239b083a41cf8fc42802f855e1dca0f499196df37a8ce219abac6eb" }, + { url = "https://mirrors.aliyun.com/pypi/packages/00/15/79713359f4037aa8f4d1f06ffca35312ac83629da062670e8830917e2153/tokenizers-0.21.2-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:514cd43045c5d546f01142ff9c79a96ea69e4b5cda09e3027708cb2e6d5762ab" }, + { url = "https://mirrors.aliyun.com/pypi/packages/38/5f/959f3a8756fc9396aeb704292777b84f02a5c6f25c3fc3ba7530db5feb2c/tokenizers-0.21.2-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b1b9405822527ec1e0f7d8d2fdb287a5730c3a6518189c968254a8441b21faae" }, + { url = "https://mirrors.aliyun.com/pypi/packages/c5/74/f41a432a0733f61f3d21b288de6dfa78f7acff309c6f0f323b2833e9189f/tokenizers-0.21.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fed9a4d51c395103ad24f8e7eb976811c57fbec2af9f133df471afcd922e5020" }, + { url = "https://mirrors.aliyun.com/pypi/packages/3c/6a/bc220a11a17e5d07b0dfb3b5c628621d4dcc084bccd27cfaead659963016/tokenizers-0.21.2-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2c41862df3d873665ec78b6be36fcc30a26e3d4902e9dd8608ed61d49a48bc19" }, + { url = "https://mirrors.aliyun.com/pypi/packages/6c/bd/ac386d79c4ef20dc6f39c4706640c24823dca7ebb6f703bfe6b5f0292d88/tokenizers-0.21.2-cp39-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:ed21dc7e624e4220e21758b2e62893be7101453525e3d23264081c9ef9a6d00d" }, + { url = "https://mirrors.aliyun.com/pypi/packages/63/7b/5440bf203b2a5358f074408f7f9c42884849cd9972879e10ee6b7a8c3b3d/tokenizers-0.21.2-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:0e73770507e65a0e0e2a1affd6b03c36e3bc4377bd10c9ccf51a82c77c0fe365" }, + { url = "https://mirrors.aliyun.com/pypi/packages/a4/d2/faa1acac3f96a7427866e94ed4289949b2524f0c1878512516567d80563c/tokenizers-0.21.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:106746e8aa9014a12109e58d540ad5465b4c183768ea96c03cbc24c44d329958" }, + { url = "https://mirrors.aliyun.com/pypi/packages/d8/a5/896e1ef0707212745ae9f37e84c7d50269411aef2e9ccd0de63623feecdf/tokenizers-0.21.2-cp39-abi3-win32.whl", hash = "sha256:cabda5a6d15d620b6dfe711e1af52205266d05b379ea85a8a301b3593c60e962" }, + { url = "https://mirrors.aliyun.com/pypi/packages/13/c3/cc2755ee10be859c4338c962a35b9a663788c0c0b50c0bdd8078fb6870cf/tokenizers-0.21.2-cp39-abi3-win_amd64.whl", hash = "sha256:58747bb898acdb1007f37a7bbe614346e98dc28708ffb66a3fd50ce169ac6c98" }, +] + +[[package]] +name = "tomli" +version = "2.2.1" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/52/e1/f8af4c2fcde17500422858155aeb0d7e93477a0d59a98e56cbfe75070fd0/tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea" }, + { url = "https://mirrors.aliyun.com/pypi/packages/03/b8/152c68bb84fc00396b83e7bbddd5ec0bd3dd409db4195e2a9b3e398ad2e3/tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8" }, + { url = "https://mirrors.aliyun.com/pypi/packages/c8/d6/fc9267af9166f79ac528ff7e8c55c8181ded34eb4b0e93daa767b8841573/tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192" }, + { url = "https://mirrors.aliyun.com/pypi/packages/5c/51/51c3f2884d7bab89af25f678447ea7d297b53b5a3b5730a7cb2ef6069f07/tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222" }, + { url = "https://mirrors.aliyun.com/pypi/packages/ab/df/bfa89627d13a5cc22402e441e8a931ef2108403db390ff3345c05253935e/tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77" }, + { url = "https://mirrors.aliyun.com/pypi/packages/9e/6e/fa2b916dced65763a5168c6ccb91066f7639bdc88b48adda990db10c8c0b/tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6" }, + { url = "https://mirrors.aliyun.com/pypi/packages/b4/04/885d3b1f650e1153cbb93a6a9782c58a972b94ea4483ae4ac5cedd5e4a09/tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd" }, + { url = "https://mirrors.aliyun.com/pypi/packages/9c/de/6b432d66e986e501586da298e28ebeefd3edc2c780f3ad73d22566034239/tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e" }, + { url = "https://mirrors.aliyun.com/pypi/packages/1c/9a/47c0449b98e6e7d1be6cbac02f93dd79003234ddc4aaab6ba07a9a7482e2/tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98" }, + { url = "https://mirrors.aliyun.com/pypi/packages/ef/60/9b9638f081c6f1261e2688bd487625cd1e660d0a85bd469e91d8db969734/tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4" }, + { url = "https://mirrors.aliyun.com/pypi/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc" }, +] + +[[package]] +name = "tqdm" +version = "4.67.1" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/a8/4b/29b4ef32e036bb34e4ab51796dd745cdba7ed47ad142a9f4a1eb8e0c744d/tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2" }, +] + +[[package]] +name = "typer" +version = "0.16.0" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +dependencies = [ + { name = "click" }, + { name = "rich" }, + { name = "shellingham" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/c5/8c/7d682431efca5fd290017663ea4588bf6f2c6aad085c7f108c5dbc316e70/typer-0.16.0.tar.gz", hash = "sha256:af377ffaee1dbe37ae9440cb4e8f11686ea5ce4e9bae01b84ae7c63b87f1dd3b" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/76/42/3efaf858001d2c2913de7f354563e3a3a2f0decae3efe98427125a8f441e/typer-0.16.0-py3-none-any.whl", hash = "sha256:1f79bed11d4d02d4310e3c1b7ba594183bcedb0ac73b27a9e5f28f6fb5b98855" }, +] + +[[package]] +name = "typing-extensions" +version = "4.14.0" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/d1/bc/51647cd02527e87d05cb083ccc402f93e441606ff1f01739a62c8ad09ba5/typing_extensions-4.14.0.tar.gz", hash = "sha256:8676b788e32f02ab42d9e7c61324048ae4c6d844a399eebace3d4979d75ceef4" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/69/e0/552843e0d356fbb5256d21449fa957fa4eff3bbc135a74a691ee70c7c5da/typing_extensions-4.14.0-py3-none-any.whl", hash = "sha256:a1514509136dd0b477638fc68d6a91497af5076466ad0fa6c338e44e359944af" }, +] + +[[package]] +name = "typing-inspection" +version = "0.4.1" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51" }, +] + +[[package]] +name = "uiautomator2" +version = "3.3.3" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +dependencies = [ + { name = "adbutils" }, + { name = "lxml" }, + { name = "pillow" }, + { name = "requests" }, + { name = "retry2" }, +] +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/6c/9c/83c3c7a6071133deced5d1ca4b3dc432b3f658d172f4908dd45beb6c2138/uiautomator2-3.3.3.tar.gz", hash = "sha256:15e5425dba73913979a234dae917f576f91a6862784af816042ab0ba4d94fa1e" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/0b/50/d41b28eb876ad7049215a0bf1e28725d9b900ca797c6bc78b72bb712307f/uiautomator2-3.3.3-py3-none-any.whl", hash = "sha256:8e1b0bdf788f15e1c81cf53817d066a908301c64f040aa4d7a8407e999f24328" }, +] + +[[package]] +name = "urllib3" +version = "2.5.0" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/15/22/9ee70a2574a4f4599c47dd506532914ce044817c7752a79b6a51286319bc/urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc" }, +] + +[[package]] +name = "uvicorn" +version = "0.35.0" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +dependencies = [ + { name = "click" }, + { name = "h11" }, +] +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/5e/42/e0e305207bb88c6b8d3061399c6a961ffe5fbb7e2aa63c9234df7259e9cd/uvicorn-0.35.0.tar.gz", hash = "sha256:bc662f087f7cf2ce11a1d7fd70b90c9f98ef2e2831556dd078d131b96cc94a01" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/d2/e2/dc81b1bd1dcfe91735810265e9d26bc8ec5da45b4c0f6237e286819194c3/uvicorn-0.35.0-py3-none-any.whl", hash = "sha256:197535216b25ff9b785e29a0b79199f55222193d47f820816e7da751e9bc8d4a" }, +] + +[[package]] +name = "websocket-client" +version = "1.8.0" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/e6/30/fba0d96b4b5fbf5948ed3f4681f7da2f9f64512e1d303f94b4cc174c24a5/websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526" }, +] + +[[package]] +name = "win32-setctime" +version = "1.2.0" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/b3/8f/705086c9d734d3b663af0e9bb3d4de6578d08f46b1b101c2442fd9aecaa2/win32_setctime-1.2.0.tar.gz", hash = "sha256:ae1fdf948f5640aae05c511ade119313fb6a30d7eabe25fef9764dca5873c4c0" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/e1/07/c6fe3ad3e685340704d314d765b7912993bcb8dc198f0e7a89382d37974b/win32_setctime-1.2.0-py3-none-any.whl", hash = "sha256:95d644c4e708aba81dc3704a116d8cbc974d70b3bdb8be1d150e36be6e9d1390" }, +] + +[[package]] +name = "xiaomi-phone-test-project-xiaomi" +version = "0.3.1" +source = { virtual = "." } +dependencies = [ + { name = "glrocky-sdk" }, + { name = "uvicorn" }, +] + +[package.dev-dependencies] +dev = [ + { name = "ruff" }, +] + +[package.metadata] +requires-dist = [ + { name = "glrocky-sdk", path = "glrocky_sdk-0.4.3-py3-none-any.whl" }, + { name = "uvicorn", specifier = ">=0.34.2" }, +] + +[package.metadata.requires-dev] +dev = [{ name = "ruff", specifier = ">=0.12.2" }] + +[[package]] +name = "yarl" +version = "1.20.1" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +dependencies = [ + { name = "idna" }, + { name = "multidict" }, + { name = "propcache" }, +] +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/3c/fb/efaa23fa4e45537b827620f04cf8f3cd658b76642205162e072703a5b963/yarl-1.20.1.tar.gz", hash = "sha256:d017a4997ee50c91fd5466cef416231bb82177b93b029906cefc542ce14c35ac" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/5f/9a/cb7fad7d73c69f296eda6815e4a2c7ed53fc70c2f136479a91c8e5fbdb6d/yarl-1.20.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdcc4cd244e58593a4379fe60fdee5ac0331f8eb70320a24d591a3be197b94a9" }, + { url = "https://mirrors.aliyun.com/pypi/packages/67/38/688577a1cb1e656e3971fb66a3492501c5a5df56d99722e57c98249e5b8a/yarl-1.20.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b29a2c385a5f5b9c7d9347e5812b6f7ab267193c62d282a540b4fc528c8a9d2a" }, + { url = "https://mirrors.aliyun.com/pypi/packages/50/ec/72991ae51febeb11a42813fc259f0d4c8e0507f2b74b5514618d8b640365/yarl-1.20.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1112ae8154186dfe2de4732197f59c05a83dc814849a5ced892b708033f40dc2" }, + { url = "https://mirrors.aliyun.com/pypi/packages/99/da/4d798025490e89426e9f976702e5f9482005c548c579bdae792a4c37769e/yarl-1.20.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:90bbd29c4fe234233f7fa2b9b121fb63c321830e5d05b45153a2ca68f7d310ee" }, + { url = "https://mirrors.aliyun.com/pypi/packages/1a/26/54a15c6a567aac1c61b18aa0f4b8aa2e285a52d547d1be8bf48abe2b3991/yarl-1.20.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:680e19c7ce3710ac4cd964e90dad99bf9b5029372ba0c7cbfcd55e54d90ea819" }, + { url = "https://mirrors.aliyun.com/pypi/packages/d6/95/9dcf2386cb875b234353b93ec43e40219e14900e046bf6ac118f94b1e353/yarl-1.20.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4a979218c1fdb4246a05efc2cc23859d47c89af463a90b99b7c56094daf25a16" }, + { url = "https://mirrors.aliyun.com/pypi/packages/91/b2/33a8750f6a4bc224242a635f5f2cff6d6ad5ba651f6edcccf721992c21a0/yarl-1.20.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255b468adf57b4a7b65d8aad5b5138dce6a0752c139965711bdcb81bc370e1b6" }, + { url = "https://mirrors.aliyun.com/pypi/packages/98/28/3ab7acc5b51f4434b181b0cee8f1f4b77a65919700a355fb3617f9488874/yarl-1.20.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a97d67108e79cfe22e2b430d80d7571ae57d19f17cda8bb967057ca8a7bf5bfd" }, + { url = "https://mirrors.aliyun.com/pypi/packages/36/a3/f666894aa947a371724ec7cd2e5daa78ee8a777b21509b4252dd7bd15e29/yarl-1.20.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8570d998db4ddbfb9a590b185a0a33dbf8aafb831d07a5257b4ec9948df9cb0a" }, + { url = "https://mirrors.aliyun.com/pypi/packages/f1/81/5f466427e09773c04219d3450d7a1256138a010b6c9f0af2d48565e9ad13/yarl-1.20.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:97c75596019baae7c71ccf1d8cc4738bc08134060d0adfcbe5642f778d1dca38" }, + { url = "https://mirrors.aliyun.com/pypi/packages/2e/e3/e4b0ad8403e97e6c9972dd587388940a032f030ebec196ab81a3b8e94d31/yarl-1.20.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:1c48912653e63aef91ff988c5432832692ac5a1d8f0fb8a33091520b5bbe19ef" }, + { url = "https://mirrors.aliyun.com/pypi/packages/ac/99/b8a142e79eb86c926f9f06452eb13ecb1bb5713bd01dc0038faf5452e544/yarl-1.20.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4c3ae28f3ae1563c50f3d37f064ddb1511ecc1d5584e88c6b7c63cf7702a6d5f" }, + { url = "https://mirrors.aliyun.com/pypi/packages/34/f2/08ed34a4a506d82a1a3e5bab99ccd930a040f9b6449e9fd050320e45845c/yarl-1.20.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c5e9642f27036283550f5f57dc6156c51084b458570b9d0d96100c8bebb186a8" }, + { url = "https://mirrors.aliyun.com/pypi/packages/92/f8/9a3fbf0968eac704f681726eff595dce9b49c8a25cd92bf83df209668285/yarl-1.20.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:2c26b0c49220d5799f7b22c6838409ee9bc58ee5c95361a4d7831f03cc225b5a" }, + { url = "https://mirrors.aliyun.com/pypi/packages/af/85/9363f77bdfa1e4d690957cd39d192c4cacd1c58965df0470a4905253b54f/yarl-1.20.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:564ab3d517e3d01c408c67f2e5247aad4019dcf1969982aba3974b4093279004" }, + { url = "https://mirrors.aliyun.com/pypi/packages/35/99/9918c8739ba271dcd935400cff8b32e3cd319eaf02fcd023d5dcd487a7c8/yarl-1.20.1-cp312-cp312-win32.whl", hash = "sha256:daea0d313868da1cf2fac6b2d3a25c6e3a9e879483244be38c8e6a41f1d876a5" }, + { url = "https://mirrors.aliyun.com/pypi/packages/eb/83/5d9092950565481b413b31a23e75dd3418ff0a277d6e0abf3729d4d1ce25/yarl-1.20.1-cp312-cp312-win_amd64.whl", hash = "sha256:48ea7d7f9be0487339828a4de0360d7ce0efc06524a48e1810f945c45b813698" }, + { url = "https://mirrors.aliyun.com/pypi/packages/b4/2d/2345fce04cfd4bee161bf1e7d9cdc702e3e16109021035dbb24db654a622/yarl-1.20.1-py3-none-any.whl", hash = "sha256:83b8eb083fe4683c6115795d9fc1cfaf2cbbefb19b3a1cb68f6527460f483a77" }, +] + +[[package]] +name = "zipp" +version = "3.23.0" +source = { registry = "https://mirrors.aliyun.com/pypi/simple/" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/e3/02/0f2892c661036d50ede074e376733dca2ae7c6eb617489437771209d4180/zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/2e/54/647ade08bf0db230bfea292f893923872fd20be6ac6f53b2b936ba839d75/zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e" }, +]