pull/32/merge
nlp4whp 3 weeks ago committed by GitHub
commit 8c6c5fcfc8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -0,0 +1,313 @@
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Human System Optimization Knowledge Graph</title>
<script src="../skill/references/graph-data.js"></script>
<style>
:root {
color-scheme: light;
--bg: #f7f7f2;
--ink: #18221f;
--muted: #5f6862;
--line: #cfd8d1;
--module: #2f6f73;
--practice: #6d8f3f;
--mechanism: #6a5b9a;
--risk: #a6503d;
--panel: #ffffff;
}
* {
box-sizing: border-box;
}
body {
margin: 0;
min-height: 100vh;
background: var(--bg);
color: var(--ink);
font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
header {
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
gap: 16px;
align-items: end;
padding: 24px 28px 16px;
border-bottom: 1px solid var(--line);
background: #fbfbf7;
}
h1 {
margin: 0;
font-size: 26px;
font-weight: 720;
letter-spacing: 0;
}
.subtitle {
margin: 8px 0 0;
color: var(--muted);
font-size: 14px;
line-height: 1.55;
}
.toolbar {
display: flex;
gap: 8px;
align-items: center;
}
input {
width: min(320px, 42vw);
border: 1px solid var(--line);
border-radius: 8px;
padding: 10px 12px;
font-size: 14px;
background: #fff;
color: var(--ink);
}
main {
display: grid;
grid-template-columns: minmax(0, 1fr) 340px;
min-height: calc(100vh - 98px);
}
#graph {
width: 100%;
height: calc(100vh - 98px);
display: block;
}
aside {
border-left: 1px solid var(--line);
background: var(--panel);
padding: 20px;
overflow: auto;
}
.legend {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 8px;
margin: 18px 0;
}
.legend span {
display: inline-flex;
gap: 7px;
align-items: center;
color: var(--muted);
font-size: 13px;
}
.dot {
width: 10px;
height: 10px;
border-radius: 50%;
display: inline-block;
}
h2 {
margin: 0 0 8px;
font-size: 18px;
letter-spacing: 0;
}
.detail {
color: var(--muted);
line-height: 1.6;
font-size: 14px;
}
.relations {
margin-top: 18px;
padding-top: 16px;
border-top: 1px solid var(--line);
}
.relation {
margin: 0 0 12px;
font-size: 13px;
line-height: 1.5;
color: var(--muted);
}
.relation strong {
color: var(--ink);
font-weight: 650;
}
@media (max-width: 820px) {
header {
grid-template-columns: 1fr;
align-items: start;
}
input {
width: 100%;
}
main {
grid-template-columns: 1fr;
}
#graph {
height: 62vh;
}
aside {
border-left: 0;
border-top: 1px solid var(--line);
}
}
</style>
</head>
<body>
<header>
<div>
<h1>Human System Optimization Knowledge Graph</h1>
<p class="subtitle">睡眠、饮食、动力、专注、大脑健康、长寿与个人实践之间的知识关系。</p>
</div>
<div class="toolbar">
<input id="search" type="search" placeholder="搜索节点,例如 睡眠、禁食、多巴胺">
</div>
</header>
<main>
<svg id="graph" role="img" aria-label="Human System Optimization knowledge graph"></svg>
<aside>
<h2 id="node-title">选择一个节点</h2>
<p id="node-detail" class="detail">点击图中的节点查看说明和相关关系。</p>
<div class="legend">
<span><i class="dot" style="background: var(--module)"></i>模块</span>
<span><i class="dot" style="background: var(--practice)"></i>实践</span>
<span><i class="dot" style="background: var(--mechanism)"></i>机制</span>
<span><i class="dot" style="background: var(--risk)"></i>风险</span>
</div>
<div class="relations">
<h2>关系</h2>
<div id="relations"></div>
</div>
</aside>
</main>
<script>
const graph = window.HSO_GRAPH;
const svg = document.getElementById("graph");
const search = document.getElementById("search");
const title = document.getElementById("node-title");
const detail = document.getElementById("node-detail");
const relations = document.getElementById("relations");
const colors = {
module: "#2f6f73",
practice: "#6d8f3f",
mechanism: "#6a5b9a",
risk: "#a6503d"
};
let selectedId = "sleep";
function layout(width, height) {
const cx = width / 2;
const cy = height / 2;
const ring = Math.min(width, height) * 0.34;
const center = new Set(["sleep", "diet", "dopamine", "focus", "brain", "longevity", "practice"]);
const outer = graph.nodes.filter(node => !center.has(node.id));
const inner = graph.nodes.filter(node => center.has(node.id));
inner.forEach((node, index) => {
const angle = (Math.PI * 2 * index) / inner.length - Math.PI / 2;
node.x = cx + Math.cos(angle) * ring * 0.52;
node.y = cy + Math.sin(angle) * ring * 0.52;
});
outer.forEach((node, index) => {
const angle = (Math.PI * 2 * index) / outer.length - Math.PI / 2;
node.x = cx + Math.cos(angle) * ring;
node.y = cy + Math.sin(angle) * ring;
});
}
function nodeById(id) {
return graph.nodes.find(node => node.id === id);
}
function render() {
const width = svg.clientWidth;
const height = svg.clientHeight;
const query = search.value.trim().toLowerCase();
layout(width, height);
svg.setAttribute("viewBox", `0 0 ${width} ${height}`);
svg.innerHTML = "";
const edgeLayer = document.createElementNS("http://www.w3.org/2000/svg", "g");
graph.edges.forEach(edge => {
const source = nodeById(edge.source);
const target = nodeById(edge.target);
const line = document.createElementNS("http://www.w3.org/2000/svg", "line");
line.setAttribute("x1", source.x);
line.setAttribute("y1", source.y);
line.setAttribute("x2", target.x);
line.setAttribute("y2", target.y);
line.setAttribute("stroke", "#b9c5bd");
line.setAttribute("stroke-width", selectedId === edge.source || selectedId === edge.target ? "2.4" : "1.2");
line.setAttribute("opacity", selectedId === edge.source || selectedId === edge.target ? "0.95" : "0.5");
edgeLayer.appendChild(line);
});
svg.appendChild(edgeLayer);
graph.nodes.forEach(node => {
const matched = !query || node.label.toLowerCase().includes(query) || node.detail.toLowerCase().includes(query);
const group = document.createElementNS("http://www.w3.org/2000/svg", "g");
group.setAttribute("cursor", "pointer");
group.setAttribute("opacity", matched ? "1" : "0.22");
group.addEventListener("click", () => {
selectedId = node.id;
updatePanel();
render();
});
const circle = document.createElementNS("http://www.w3.org/2000/svg", "circle");
circle.setAttribute("cx", node.x);
circle.setAttribute("cy", node.y);
circle.setAttribute("r", selectedId === node.id ? "30" : "24");
circle.setAttribute("fill", colors[node.type]);
circle.setAttribute("stroke", selectedId === node.id ? "#18221f" : "#ffffff");
circle.setAttribute("stroke-width", selectedId === node.id ? "3" : "2");
group.appendChild(circle);
const label = document.createElementNS("http://www.w3.org/2000/svg", "text");
label.setAttribute("x", node.x);
label.setAttribute("y", node.y + 42);
label.setAttribute("text-anchor", "middle");
label.setAttribute("font-size", "13");
label.setAttribute("font-weight", selectedId === node.id ? "700" : "560");
label.setAttribute("fill", "#18221f");
label.textContent = node.label;
group.appendChild(label);
svg.appendChild(group);
});
}
function updatePanel() {
const node = nodeById(selectedId);
title.textContent = node.label;
detail.textContent = node.detail;
const connected = graph.edges.filter(edge => edge.source === node.id || edge.target === node.id);
relations.innerHTML = connected.map(edge => {
const other = nodeById(edge.source === node.id ? edge.target : edge.source);
return `<p class="relation"><strong>${other.label}</strong><br>${edge.relation}</p>`;
}).join("") || "<p class=\"relation\">暂无关系。</p>";
}
search.addEventListener("input", render);
window.addEventListener("resize", render);
updatePanel();
render();
</script>
</body>
</html>

@ -0,0 +1,26 @@
[project]
name = "humansystemoptimization"
version = "0.1.0"
description = "Structured knowledge base and MCP server for HumanSystemOptimization"
requires-python = ">=3.12"
dependencies = [
"mcp>=1.0.0",
]
[project.scripts]
hso-mcp = "humansystemoptimization.mcp_server:main"
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
packages = ["src/humansystemoptimization"]
[dependency-groups]
dev = [
"pytest>=8.0.0",
]
[tool.pytest.ini_options]
pythonpath = ["src"]

@ -0,0 +1,5 @@
"""Human System Optimization knowledge tools."""
from humansystemoptimization.knowledge import KnowledgeBase, load_knowledge_base
__all__ = ["KnowledgeBase", "load_knowledge_base"]

@ -0,0 +1,120 @@
from __future__ import annotations
import json
from dataclasses import dataclass
from pathlib import Path
from typing import Any
def _default_root() -> Path:
return Path(__file__).resolve().parents[3]
@dataclass(frozen=True)
class KnowledgeBase:
root: Path
data: dict[str, Any]
def list_modules(self) -> list[dict[str, Any]]:
return [
{
"id": module["id"],
"title": module["title"],
"summary": module["summary"],
"priority": module["priority"],
"chapter_path": module["chapter_path"],
}
for module in self.data["modules"]
]
def get_module(self, module_id: str) -> dict[str, Any]:
for module in self.data["modules"]:
if module["id"] == module_id:
return module
raise KeyError(f"Unknown module_id: {module_id}")
def search(self, query: str, limit: int = 5) -> list[dict[str, Any]]:
tokens = [token.lower() for token in query.split() if token.strip()]
if not tokens:
return []
scored: list[tuple[int, dict[str, Any]]] = []
for module in self.data["modules"]:
haystacks = self._search_fields(module)
score = 0
matches: list[str] = []
for field in haystacks:
lowered = field.lower()
hits = sum(1 for token in tokens if token in lowered)
if hits:
score += hits
matches.append(field)
if score:
scored.append(
(
score,
{
"module_id": module["id"],
"title": module["title"],
"summary": module["summary"],
"matches": matches[:6],
},
)
)
scored.sort(key=lambda item: (-item[0], self._module_rank(item[1]["module_id"])))
return [item for _, item in scored[:limit]]
def plan_template(self, focus: str = "general") -> dict[str, Any]:
focus_id = focus if focus in {module["id"] for module in self.data["modules"]} else "general"
selected = [
module
for module in self.data["modules"]
if focus_id == "general" or module["id"] == focus_id
]
if focus_id == "general":
selected = self.data["modules"][:4]
return {
"focus": focus_id,
"medical_boundary": self.data["medical_boundary"],
"daily_actions": [
{
"module_id": module["id"],
"title": module["title"],
"actions": module["practices"][:3],
"cautions": module["cautions"][:2],
}
for module in selected
],
"tracking_metrics": self.data["tracking_metrics"],
"review_cadence": "每 7 天回顾执行难度、睡眠/精力/运动/饮食记录,每 30 天结合身体指标或专业建议调整。",
}
def graph(self) -> dict[str, Any]:
return self.data["graph"]
def references(self) -> list[dict[str, Any]]:
return self.data["references"]
def _module_rank(self, module_id: str) -> int:
for index, module in enumerate(self.data["modules"]):
if module["id"] == module_id:
return index
return 10_000
@staticmethod
def _search_fields(module: dict[str, Any]) -> list[str]:
fields = [module["title"], module["summary"]]
for key in ("mechanisms", "practices", "cautions", "keywords"):
fields.extend(module.get(key, []))
fields.extend(ref["title"] for ref in module.get("references", []))
return fields
def load_knowledge_base(root: Path | None = None) -> KnowledgeBase:
repo_root = root or _default_root()
index_path = repo_root / "skill" / "references" / "index.json"
with index_path.open("r", encoding="utf-8") as file:
data = json.load(file)
return KnowledgeBase(root=repo_root, data=data)

@ -0,0 +1,121 @@
from __future__ import annotations
import argparse
import json
from typing import Any
from mcp.server.fastmcp import FastMCP
from humansystemoptimization.knowledge import load_knowledge_base
SERVER_NAME = "human-system-optimization"
def list_modules_payload() -> dict[str, Any]:
kb = load_knowledge_base()
modules = kb.list_modules()
return {
"count": len(modules),
"modules": modules,
"medical_boundary": kb.data["medical_boundary"],
}
def search_knowledge_payload(query: str, limit: int = 5) -> dict[str, Any]:
kb = load_knowledge_base()
return {
"query": query,
"limit": limit,
"results": kb.search(query, limit=limit),
"medical_boundary": kb.data["medical_boundary"],
}
def get_module_payload(module_id: str) -> dict[str, Any]:
kb = load_knowledge_base()
return {
"module": kb.get_module(module_id),
"medical_boundary": kb.data["medical_boundary"],
}
def build_life_plan_payload(focus: str = "general") -> dict[str, Any]:
kb = load_knowledge_base()
return {
"plan": kb.plan_template(focus),
"source": kb.data["source"],
}
def get_graph_payload() -> dict[str, Any]:
kb = load_knowledge_base()
return {
"graph": kb.graph(),
"medical_boundary": kb.data["medical_boundary"],
}
def create_server() -> FastMCP:
mcp = FastMCP(SERVER_NAME)
@mcp.tool()
def list_modules() -> dict[str, Any]:
"""List the structured health habit knowledge modules."""
return list_modules_payload()
@mcp.tool()
def search_knowledge(query: str, limit: int = 5) -> dict[str, Any]:
"""Search the local health habit knowledge base by keyword."""
return search_knowledge_payload(query=query, limit=limit)
@mcp.tool()
def get_module(module_id: str) -> dict[str, Any]:
"""Return one full knowledge module by id."""
return get_module_payload(module_id=module_id)
@mcp.tool()
def build_life_plan(focus: str = "general") -> dict[str, Any]:
"""Build a conservative habit-plan template for a module or general health."""
return build_life_plan_payload(focus=focus)
@mcp.tool()
def get_graph() -> dict[str, Any]:
"""Return knowledge graph nodes and edges."""
return get_graph_payload()
return mcp
def _self_test() -> dict[str, Any]:
modules = list_modules_payload()
graph = get_graph_payload()
return {
"server": SERVER_NAME,
"module_count": modules["count"],
"graph_nodes": len(graph["graph"]["nodes"]),
"graph_edges": len(graph["graph"]["edges"]),
"tools": [
"list_modules",
"search_knowledge",
"get_module",
"build_life_plan",
"get_graph",
],
}
def main() -> None:
parser = argparse.ArgumentParser(description="HumanSystemOptimization MCP server")
parser.add_argument("--self-test", action="store_true", help="Load local knowledge and print a JSON health check.")
args = parser.parse_args()
if args.self_test:
print(json.dumps(_self_test(), ensure_ascii=False, indent=2))
return
create_server().run()
if __name__ == "__main__":
main()

@ -0,0 +1,49 @@
from pathlib import Path
from humansystemoptimization.knowledge import load_knowledge_base
def test_lists_core_modules_in_readme_order():
kb = load_knowledge_base(Path(__file__).resolve().parents[2])
module_ids = [module["id"] for module in kb.list_modules()]
assert module_ids[:7] == [
"sleep",
"diet",
"mindset_dopamine",
"learning_focus",
"brain_health",
"longevity",
"personal_practice",
]
def test_search_finds_practices_across_modules():
kb = load_knowledge_base(Path(__file__).resolve().parents[2])
results = kb.search("早晨 阳光 睡眠")
assert results[0]["module_id"] == "sleep"
assert any("起床后" in hit for hit in results[0]["matches"])
def test_get_module_preserves_cautions_and_references():
kb = load_knowledge_base(Path(__file__).resolve().parents[2])
module = kb.get_module("longevity")
assert "Sinclair" in module["summary"]
assert any("争议" in caution for caution in module["cautions"])
assert any(ref["title"] == "程序员延寿指南" for ref in module["references"])
def test_plan_template_returns_actionable_sections_for_focus():
kb = load_knowledge_base(Path(__file__).resolve().parents[2])
plan = kb.plan_template("sleep")
assert plan["focus"] == "sleep"
assert plan["medical_boundary"]
assert any(item["module_id"] == "sleep" for item in plan["daily_actions"])
assert any("睡眠" in metric for metric in plan["tracking_metrics"])

@ -0,0 +1,44 @@
from humansystemoptimization.mcp_server import (
build_life_plan_payload,
get_graph_payload,
get_module_payload,
list_modules_payload,
search_knowledge_payload,
)
def test_list_modules_payload_contains_reader_paths():
payload = list_modules_payload()
assert payload["count"] >= 7
assert payload["modules"][0]["id"] == "sleep"
assert payload["modules"][0]["chapter_path"].startswith("references/modules/")
def test_search_knowledge_payload_returns_matches():
payload = search_knowledge_payload("发酵 肠道")
assert payload["query"] == "发酵 肠道"
assert payload["results"][0]["module_id"] == "diet"
def test_get_module_payload_includes_assets_for_longevity():
payload = get_module_payload("longevity")
assert "imgs/diet_for_longevity.png" in payload["module"]["assets"]
assert payload["medical_boundary"]
def test_build_life_plan_payload_includes_boundary_and_actions():
payload = build_life_plan_payload("learning_focus")
assert payload["plan"]["focus"] == "learning_focus"
assert payload["plan"]["medical_boundary"]
assert payload["plan"]["daily_actions"][0]["module_id"] == "learning_focus"
def test_get_graph_payload_exposes_nodes_and_edges():
payload = get_graph_payload()
assert any(node["id"] == "sleep" for node in payload["graph"]["nodes"])
assert any(edge["target"] == "longevity" for edge in payload["graph"]["edges"])

@ -0,0 +1,703 @@
version = 1
revision = 3
requires-python = ">=3.12"
resolution-markers = [
"python_full_version >= '3.14' and sys_platform == 'win32'",
"python_full_version >= '3.14' and sys_platform != 'win32'",
"python_full_version < '3.14' and sys_platform == 'win32'",
"python_full_version < '3.14' and sys_platform != 'win32'",
]
[[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.14.0"
source = { registry = "https://mirrors.aliyun.com/pypi/simple/" }
dependencies = [
{ name = "idna" },
{ name = "typing-extensions", marker = "python_full_version < '3.13'" },
]
sdist = { url = "https://mirrors.aliyun.com/pypi/packages/1c/b5/001890774a9552aff22502b8da382593109ce0c95314abaebbb116567545/anyio-4.14.0.tar.gz", hash = "sha256:b47c1f9ccf73e67021df785332508f99379c68fa7d0684e8e3492cb1d4b23f89" }
wheels = [
{ url = "https://mirrors.aliyun.com/pypi/packages/ba/16/9826f089383c593cdfc4a6e5aca94d9e91ae1692c57af82c3b2aa5e810f7/anyio-4.14.0-py3-none-any.whl", hash = "sha256:dd9b7a2a9799ed6552fde617b2c5df02b7fdd7d88392fc48101e51bae46164d9" },
]
[[package]]
name = "attrs"
version = "26.1.0"
source = { registry = "https://mirrors.aliyun.com/pypi/simple/" }
sdist = { url = "https://mirrors.aliyun.com/pypi/packages/9a/8e/82a0fe20a541c03148528be8cac2408564a6c9a0cc7e9171802bc1d26985/attrs-26.1.0.tar.gz", hash = "sha256:d03ceb89cb322a8fd706d4fb91940737b6642aa36998fe130a9bc96c985eff32" }
wheels = [
{ url = "https://mirrors.aliyun.com/pypi/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl", hash = "sha256:c647aa4a12dfbad9333ca4e71fe62ddc36f4e63b2d260a37a8b83d2f043ac309" },
]
[[package]]
name = "certifi"
version = "2026.6.17"
source = { registry = "https://mirrors.aliyun.com/pypi/simple/" }
sdist = { url = "https://mirrors.aliyun.com/pypi/packages/c9/c7/424b75da314c1045981bd9777432fad05a9e0c69daa4ed7e308bbaffe405/certifi-2026.6.17.tar.gz", hash = "sha256:024c88eeec92ca068db80f02b8b07c9cef7b9fe261d1d535abfd5abd6f6af432" }
wheels = [
{ url = "https://mirrors.aliyun.com/pypi/packages/ef/2f/c5464532e965badff2f4c4c1a3a83f5697f0d7c407ed0cda44aaa99bb451/certifi-2026.6.17-py3-none-any.whl", hash = "sha256:2227dcbaafe0d2f59279d1762ddddc37783ed4354594f194ffc31d20f41fc3db" },
]
[[package]]
name = "cffi"
version = "2.0.0"
source = { registry = "https://mirrors.aliyun.com/pypi/simple/" }
dependencies = [
{ name = "pycparser", marker = "implementation_name != 'PyPy'" },
]
sdist = { url = "https://mirrors.aliyun.com/pypi/packages/eb/56/b1ba7935a17738ae8453301356628e8147c79dbb825bcbc73dc7401f9846/cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529" }
wheels = [
{ url = "https://mirrors.aliyun.com/pypi/packages/ea/47/4f61023ea636104d4f16ab488e268b93008c3d0bb76893b1b31db1f96802/cffi-2.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d" },
{ url = "https://mirrors.aliyun.com/pypi/packages/df/a2/781b623f57358e360d62cdd7a8c681f074a71d445418a776eef0aadb4ab4/cffi-2.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c" },
{ url = "https://mirrors.aliyun.com/pypi/packages/ff/df/a4f0fbd47331ceeba3d37c2e51e9dfc9722498becbeec2bd8bc856c9538a/cffi-2.0.0-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe" },
{ url = "https://mirrors.aliyun.com/pypi/packages/d5/72/12b5f8d3865bf0f87cf1404d8c374e7487dcf097a1c91c436e72e6badd83/cffi-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062" },
{ url = "https://mirrors.aliyun.com/pypi/packages/c2/95/7a135d52a50dfa7c882ab0ac17e8dc11cec9d55d2c18dda414c051c5e69e/cffi-2.0.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e" },
{ url = "https://mirrors.aliyun.com/pypi/packages/3a/c8/15cb9ada8895957ea171c62dc78ff3e99159ee7adb13c0123c001a2546c1/cffi-2.0.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037" },
{ url = "https://mirrors.aliyun.com/pypi/packages/78/2d/7fa73dfa841b5ac06c7b8855cfc18622132e365f5b81d02230333ff26e9e/cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba" },
{ url = "https://mirrors.aliyun.com/pypi/packages/07/e0/267e57e387b4ca276b90f0434ff88b2c2241ad72b16d31836adddfd6031b/cffi-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94" },
{ url = "https://mirrors.aliyun.com/pypi/packages/b6/75/1f2747525e06f53efbd878f4d03bac5b859cbc11c633d0fb81432d98a795/cffi-2.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187" },
{ url = "https://mirrors.aliyun.com/pypi/packages/7b/2b/2b6435f76bfeb6bbf055596976da087377ede68df465419d192acf00c437/cffi-2.0.0-cp312-cp312-win32.whl", hash = "sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18" },
{ url = "https://mirrors.aliyun.com/pypi/packages/f8/ed/13bd4418627013bec4ed6e54283b1959cf6db888048c7cf4b4c3b5b36002/cffi-2.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5" },
{ url = "https://mirrors.aliyun.com/pypi/packages/95/31/9f7f93ad2f8eff1dbc1c3656d7ca5bfd8fb52c9d786b4dcf19b2d02217fa/cffi-2.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6" },
{ url = "https://mirrors.aliyun.com/pypi/packages/4b/8d/a0a47a0c9e413a658623d014e91e74a50cdd2c423f7ccfd44086ef767f90/cffi-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb" },
{ url = "https://mirrors.aliyun.com/pypi/packages/4a/d2/a6c0296814556c68ee32009d9c2ad4f85f2707cdecfd7727951ec228005d/cffi-2.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca" },
{ url = "https://mirrors.aliyun.com/pypi/packages/b0/1e/d22cc63332bd59b06481ceaac49d6c507598642e2230f201649058a7e704/cffi-2.0.0-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b" },
{ url = "https://mirrors.aliyun.com/pypi/packages/a9/f5/a2c23eb03b61a0b8747f211eb716446c826ad66818ddc7810cc2cc19b3f2/cffi-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b" },
{ url = "https://mirrors.aliyun.com/pypi/packages/f2/7f/e6647792fc5850d634695bc0e6ab4111ae88e89981d35ac269956605feba/cffi-2.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2" },
{ url = "https://mirrors.aliyun.com/pypi/packages/cb/1e/a5a1bd6f1fb30f22573f76533de12a00bf274abcdc55c8edab639078abb6/cffi-2.0.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3" },
{ url = "https://mirrors.aliyun.com/pypi/packages/98/df/0a1755e750013a2081e863e7cd37e0cdd02664372c754e5560099eb7aa44/cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26" },
{ url = "https://mirrors.aliyun.com/pypi/packages/50/e1/a969e687fcf9ea58e6e2a928ad5e2dd88cc12f6f0ab477e9971f2309b57c/cffi-2.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c" },
{ url = "https://mirrors.aliyun.com/pypi/packages/36/54/0362578dd2c9e557a28ac77698ed67323ed5b9775ca9d3fe73fe191bb5d8/cffi-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b" },
{ url = "https://mirrors.aliyun.com/pypi/packages/eb/6d/bf9bda840d5f1dfdbf0feca87fbdb64a918a69bca42cfa0ba7b137c48cb8/cffi-2.0.0-cp313-cp313-win32.whl", hash = "sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27" },
{ url = "https://mirrors.aliyun.com/pypi/packages/37/18/6519e1ee6f5a1e579e04b9ddb6f1676c17368a7aba48299c3759bbc3c8b3/cffi-2.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75" },
{ url = "https://mirrors.aliyun.com/pypi/packages/cb/0e/02ceeec9a7d6ee63bb596121c2c8e9b3a9e150936f4fbef6ca1943e6137c/cffi-2.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91" },
{ url = "https://mirrors.aliyun.com/pypi/packages/92/c4/3ce07396253a83250ee98564f8d7e9789fab8e58858f35d07a9a2c78de9f/cffi-2.0.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5" },
{ url = "https://mirrors.aliyun.com/pypi/packages/59/dd/27e9fa567a23931c838c6b02d0764611c62290062a6d4e8ff7863daf9730/cffi-2.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13" },
{ url = "https://mirrors.aliyun.com/pypi/packages/d6/43/0e822876f87ea8a4ef95442c3d766a06a51fc5298823f884ef87aaad168c/cffi-2.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b" },
{ url = "https://mirrors.aliyun.com/pypi/packages/b4/89/76799151d9c2d2d1ead63c2429da9ea9d7aac304603de0c6e8764e6e8e70/cffi-2.0.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c" },
{ url = "https://mirrors.aliyun.com/pypi/packages/bb/dd/3465b14bb9e24ee24cb88c9e3730f6de63111fffe513492bf8c808a3547e/cffi-2.0.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef" },
{ url = "https://mirrors.aliyun.com/pypi/packages/47/d9/d83e293854571c877a92da46fdec39158f8d7e68da75bf73581225d28e90/cffi-2.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775" },
{ url = "https://mirrors.aliyun.com/pypi/packages/2b/0f/1f177e3683aead2bb00f7679a16451d302c436b5cbf2505f0ea8146ef59e/cffi-2.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205" },
{ url = "https://mirrors.aliyun.com/pypi/packages/c6/0f/cafacebd4b040e3119dcb32fed8bdef8dfe94da653155f9d0b9dc660166e/cffi-2.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1" },
{ url = "https://mirrors.aliyun.com/pypi/packages/3e/aa/df335faa45b395396fcbc03de2dfcab242cd61a9900e914fe682a59170b1/cffi-2.0.0-cp314-cp314-win32.whl", hash = "sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f" },
{ url = "https://mirrors.aliyun.com/pypi/packages/bb/92/882c2d30831744296ce713f0feb4c1cd30f346ef747b530b5318715cc367/cffi-2.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25" },
{ url = "https://mirrors.aliyun.com/pypi/packages/9f/2c/98ece204b9d35a7366b5b2c6539c350313ca13932143e79dc133ba757104/cffi-2.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad" },
{ url = "https://mirrors.aliyun.com/pypi/packages/3e/61/c768e4d548bfa607abcda77423448df8c471f25dbe64fb2ef6d555eae006/cffi-2.0.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9" },
{ url = "https://mirrors.aliyun.com/pypi/packages/2c/ea/5f76bce7cf6fcd0ab1a1058b5af899bfbef198bea4d5686da88471ea0336/cffi-2.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d" },
{ url = "https://mirrors.aliyun.com/pypi/packages/be/b4/c56878d0d1755cf9caa54ba71e5d049479c52f9e4afc230f06822162ab2f/cffi-2.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c" },
{ url = "https://mirrors.aliyun.com/pypi/packages/e0/0d/eb704606dfe8033e7128df5e90fee946bbcb64a04fcdaa97321309004000/cffi-2.0.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8" },
{ url = "https://mirrors.aliyun.com/pypi/packages/d8/19/3c435d727b368ca475fb8742ab97c9cb13a0de600ce86f62eab7fa3eea60/cffi-2.0.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc" },
{ url = "https://mirrors.aliyun.com/pypi/packages/d0/44/681604464ed9541673e486521497406fadcc15b5217c3e326b061696899a/cffi-2.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592" },
{ url = "https://mirrors.aliyun.com/pypi/packages/25/8e/342a504ff018a2825d395d44d63a767dd8ebc927ebda557fecdaca3ac33a/cffi-2.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512" },
{ url = "https://mirrors.aliyun.com/pypi/packages/e1/5e/b666bacbbc60fbf415ba9988324a132c9a7a0448a9a8f125074671c0f2c3/cffi-2.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4" },
{ url = "https://mirrors.aliyun.com/pypi/packages/a0/1d/ec1a60bd1a10daa292d3cd6bb0b359a81607154fb8165f3ec95fe003b85c/cffi-2.0.0-cp314-cp314t-win32.whl", hash = "sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e" },
{ url = "https://mirrors.aliyun.com/pypi/packages/bf/41/4c1168c74fac325c0c8156f04b6749c8b6a8f405bbf91413ba088359f60d/cffi-2.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6" },
{ url = "https://mirrors.aliyun.com/pypi/packages/ae/3a/dbeec9d1ee0844c679f6bb5d6ad4e9f198b1224f4e7a32825f47f6192b0c/cffi-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9" },
]
[[package]]
name = "click"
version = "8.4.1"
source = { registry = "https://mirrors.aliyun.com/pypi/simple/" }
dependencies = [
{ name = "colorama", marker = "sys_platform == 'win32'" },
]
sdist = { url = "https://mirrors.aliyun.com/pypi/packages/9b/98/518d8e5081007684232226f475082b30087d0f585e8457db087298259f49/click-8.4.1.tar.gz", hash = "sha256:918b5633eddf6b41c32d4f454bf0de810065c74e3f7dbf8ee5452f8be88d3e96" }
wheels = [
{ url = "https://mirrors.aliyun.com/pypi/packages/c7/0d/67e5b4109ea4a837e80daa87c2c696711955e40449a97e8926672534def2/click-8.4.1-py3-none-any.whl", hash = "sha256:482be17c6991b8c19c5429a1e995d9b0efdbb63172824c41f99965dc0ade8ec2" },
]
[[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 = "cryptography"
version = "49.0.0"
source = { registry = "https://mirrors.aliyun.com/pypi/simple/" }
dependencies = [
{ name = "cffi", marker = "platform_python_implementation != 'PyPy'" },
]
sdist = { url = "https://mirrors.aliyun.com/pypi/packages/1f/99/d1c90d6041656cc6ee229dc99cd67fd0cd5aec3c5f7d72fffc27cc750054/cryptography-49.0.0.tar.gz", hash = "sha256:f89660a348f4f78a92366240a61404e337586ef7f5909a2fef59ca88ef505493" }
wheels = [
{ url = "https://mirrors.aliyun.com/pypi/packages/9b/22/adf66990e63584a68dfb50c24f48a125c07b1699899381c8151e63ed458c/cryptography-49.0.0-cp311-abi3-macosx_11_0_arm64.whl", hash = "sha256:966fe0e9c67490071f14c0d2b1cb2dfb3023c5ce39457343931415f08382f2db" },
{ url = "https://mirrors.aliyun.com/pypi/packages/09/41/3797cfaf69cae04a13ee78ebd83f0678d9c02b4779d21ce24445326f1a69/cryptography-49.0.0-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:36d1709f992593689b45bda411498d62c6e365f2ca00b84657d4dadd24de16db" },
{ url = "https://mirrors.aliyun.com/pypi/packages/e6/8b/43011f7ebe515a8aa20d61f290a326cd890c2e738e16e59eaff8d9c3a412/cryptography-49.0.0-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0e959b578856a3924bc0cbb710fc12c387b9412a951389f3ca61704a9e25f325" },
{ url = "https://mirrors.aliyun.com/pypi/packages/4a/91/01ce7303a4579e6d3a6abef01bd322848e9ea7a219adcabc5048b9033571/cryptography-49.0.0-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:53ecee2e23f7169b6117e99fc8a944e5e50f79e69758a83b52a00cb98ab2b2d2" },
{ url = "https://mirrors.aliyun.com/pypi/packages/62/99/a2c95cf8293f07491e9e27c20cc4dcd18176d944e674679adeb1d0173fd6/cryptography-49.0.0-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:2eda353d8a27bcbcaa4cbed18994a74ab4d19a2ca897db188ea269ab9b71419b" },
{ url = "https://mirrors.aliyun.com/pypi/packages/20/2c/0622f20ff02b2ef32558733443805dc82fd4c275be01b2d19d14676f3a1b/cryptography-49.0.0-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:2afe9051da7ae7bd5905da5a949280c7d2bb75682e188f650a9d0f2756b834c6" },
{ url = "https://mirrors.aliyun.com/pypi/packages/a3/5b/c5246635d5fd3b64e0d45ae10e99fd32fe9676a79915ccfe5a61ba9af1a5/cryptography-49.0.0-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:0b82e28ee398a386f0807bba7884d30f25218855690f45115831bcce5d90822c" },
{ url = "https://mirrors.aliyun.com/pypi/packages/6d/88/05563c7fe2e914e87d1a536d06fe83e66b4e1d95cb593e05aea375531da8/cryptography-49.0.0-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:ccac2bfebc306b862133e3bb71f3f6ee8bb525240089b2d952e4144b3a6d5da7" },
{ url = "https://mirrors.aliyun.com/pypi/packages/c4/b6/d7696e4e890d6ae1469935164c9e5215c557671cb78d6e3f458ccceaa632/cryptography-49.0.0-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:d0527ce944105f257f605a827d6ebead966c752038b6e8656abb9c5edee6fc68" },
{ url = "https://mirrors.aliyun.com/pypi/packages/a9/3c/f3ad17eecc1a57b0ba236dc01f90e783c51f4a2f35f64777cc4f47a184b2/cryptography-49.0.0-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:cbc77da8c523d5abd028635ba850a6966fcee2c82e2bf65a41d1d8afe0f98be9" },
{ url = "https://mirrors.aliyun.com/pypi/packages/4f/01/339573cf1023163a400b0b5d16f6d507de413b9f60be6fd1b77feeaf6737/cryptography-49.0.0-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:b87e65d263b3e5d3bb92a57e2a6638e2f31110fa7aa890c7b2dbba42248d0a3f" },
{ url = "https://mirrors.aliyun.com/pypi/packages/71/fd/577302e213a1be9468f92d1afef66fcf1ef83d516819d9992ca547f592bd/cryptography-49.0.0-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:66ec79c3904820572d7e987abdf304281f141d37ad9a489b8e97066e7b9b6459" },
{ url = "https://mirrors.aliyun.com/pypi/packages/1f/09/f42b1d190c5ba75f72062a387f8030d1d75f6ab035788f1d9c4b01de6525/cryptography-49.0.0-cp311-abi3-win_amd64.whl", hash = "sha256:e5dfc1e64de5677cec922ffa8da89c546d0415bf6efdf081842e5d44c84e1f0e" },
{ url = "https://mirrors.aliyun.com/pypi/packages/ec/9e/db72b3ae7fc9cfad53e630e56c6ae83b9b6ff0bf3718ffb8012d20b3aabf/cryptography-49.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:73a205dce83953d131a4aa1e0fd917a2fd1c5b1eef251e9d7152efefcbf5caf7" },
{ url = "https://mirrors.aliyun.com/pypi/packages/86/12/c48a424f38db03027be9f7ed5c7dc5de9933dbee992865f98b13727a009d/cryptography-49.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:196ecd6a36e4e9aa10270393bb98d8df88fccee0bf1e5128b91ae4eb4375896d" },
{ url = "https://mirrors.aliyun.com/pypi/packages/68/28/8a3ad4653662c93fc44dc4e5d8fd374c25c42e07b34bbfbadf49cf57a5a8/cryptography-49.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7abcee80084cda3f7691f3eb1ce480d8df49cec637b429aa35986c1de71738aa" },
{ url = "https://mirrors.aliyun.com/pypi/packages/a8/b2/2193fc74f81aee4f9b62733133b73b5176718932ed8f2e4b03fa040480a6/cryptography-49.0.0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:4ae387c9cb68ea569ca17e490d66d8142b81c3cc814bf179974b7d146e490bbb" },
{ url = "https://mirrors.aliyun.com/pypi/packages/47/f1/1d3eaa243bfc5de4a187b22aa8c048b3e4980bfbe830ac46e6bac2e66947/cryptography-49.0.0-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:f37d847238971164fdbc68ade6f6574aecc9c0af714190e2083429ff68f4ce9d" },
{ url = "https://mirrors.aliyun.com/pypi/packages/58/39/2d51306721330c486495853eda1c567880ff036de15a14c4b74f399934af/cryptography-49.0.0-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:c2bc30226390d60ea19d9f82b19db005fe0452154a23c1c410c12ea801e43561" },
{ url = "https://mirrors.aliyun.com/pypi/packages/17/50/983e838c7fd0d87fd8c969bcdd328edaf5f756e38df5281637424c155873/cryptography-49.0.0-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:07cab27cc7b7e0fd28e5e26bb9eeedde5c135c868b46de4a27845abe94af6122" },
{ url = "https://mirrors.aliyun.com/pypi/packages/a7/f5/8f571d7e27c55bce9f76f026143bcb1e040a4233149ecca0bea5fa5dd5f7/cryptography-49.0.0-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:b20133d204d2bb56ba047642199603876c872026ca53e79c35b83772ab2cc505" },
{ url = "https://mirrors.aliyun.com/pypi/packages/e7/84/0e27016a6fc5a0886f797018b26aa42f40c09a82332bff77822a451deaaa/cryptography-49.0.0-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:b970c6da94d5bb18629db453d14f2a1300f6bf59b61e9b82377931ef95504866" },
{ url = "https://mirrors.aliyun.com/pypi/packages/11/2d/5e1fb307cb5931881516b464c98774b3f2c36b5d4bb9a2830253cf553cad/cryptography-49.0.0-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:d8ecde755e2e91bf773fc94e8c9d730cd7f2007004cb492263a794ec3899a1c8" },
{ url = "https://mirrors.aliyun.com/pypi/packages/e4/c0/bff5a02ee731d207d6a1ed51732549d8c53d2bc8da1d10ec6f2844201d68/cryptography-49.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e3fb64c420688e5319ae25113a354015abbd8dffbfbc41781a1ea66fc7622ac3" },
{ url = "https://mirrors.aliyun.com/pypi/packages/b9/26/814681d14248d95d73d5c3eea0c39a94eb8302df966f670a2c60de90974b/cryptography-49.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:32703d93296f5c1f4b53349ad3a250c2cae0fdecd3a3dd5d47e616d8d616af27" },
{ url = "https://mirrors.aliyun.com/pypi/packages/4c/fe/93ecac273d3738939d023612ad12cca9a3740a5345d69fda04134c43fd96/cryptography-49.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:33cd0565932807baddb67b96dbee92f2c374b5c89dee09fd74079aeb8c8dba61" },
{ url = "https://mirrors.aliyun.com/pypi/packages/19/2a/5bb823f5bedcf80718cea7fbc95ec5515cca3769633c4b01a32be7f30e7c/cryptography-49.0.0-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:ec5e529fb80935c94fe7b729f9972b50e351a0e6b50aa294fd5cabb109fcc29a" },
{ url = "https://mirrors.aliyun.com/pypi/packages/3d/df/40577043ca124e17012f408ddddaeb213b856336ac82ddb3bc915f39e29f/cryptography-49.0.0-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f78ff2c9ed8dc2d036b0f4d640e22522213d047c1b14e61205a7e55c80a494d4" },
{ url = "https://mirrors.aliyun.com/pypi/packages/2c/99/2d13299eb3dd27b02dcfaafcc91d6b5cb3329f7cbd6d8f51921acd566c1a/cryptography-49.0.0-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:35b151772baff2c74cba7fa290ceaff4c3b11c0c881eb93eb5dbc05a7cfbba18" },
{ url = "https://mirrors.aliyun.com/pypi/packages/a5/4d/9c0cd02f95e2602dd5e563da149ee0830abef3537be8b34dc56281ebe27a/cryptography-49.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:0f21641cf4b30fca7aee061ced0ec7ad7b073518088b7c9969a297c0ae796c69" },
{ url = "https://mirrors.aliyun.com/pypi/packages/24/01/186c825898477d77e2324d5360fefe622ff1d8d1963ec0554e2cada8ec77/cryptography-49.0.0-cp39-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:9e82dcc8e56052715fb18b2429e3bca4823b1629136a2084fc45a9a5cecb9b64" },
{ url = "https://mirrors.aliyun.com/pypi/packages/b8/7b/62cbbab75d0659865bf0273790031544a0b16c8072d258f9428dcd8190dc/cryptography-49.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:6f2debedf9ca60cf1d5bd466475638af5130f89965605cd818484d19987d3a21" },
{ url = "https://mirrors.aliyun.com/pypi/packages/6c/72/3e798c064bc39e471008075d0f9bc9daf77a80879c092e4a8e170c585ed4/cryptography-49.0.0-cp39-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:8c25ceb16df5b9435f3f6a9829204985b0e0cbee3b48aacd432c7d2c850b44d9" },
{ url = "https://mirrors.aliyun.com/pypi/packages/f0/ee/6fca21d1ac73e06f8bef71940abfd4d2f6472b4bca284d770f32bd4086f6/cryptography-49.0.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:28d8b15e6275f12c8a207dc309dfa957903c927d08d0cc937ee3f63f200693cc" },
{ url = "https://mirrors.aliyun.com/pypi/packages/67/d0/a5fcd3515f0bae49a7b6d0413cc1bdccdcc1fc0047037a0d480642cdc5d6/cryptography-49.0.0-cp39-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:6fc361c34fb6aac015ce19435876635e5c6d21db31998b0920f675f131e043b8" },
{ url = "https://mirrors.aliyun.com/pypi/packages/a0/84/84fe36f19caf857d61cb7fc9c63035a47ffabd84ea12d1d393148efa3615/cryptography-49.0.0-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:2400ef9c9e2299a25614eb1dea3db54a69b1349efd043bfac9c67630d136df36" },
{ url = "https://mirrors.aliyun.com/pypi/packages/6c/a0/db537264e234f7273a73ec020873d6d6b39dfd8a53db78b550ca8320440e/cryptography-49.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:67e1d20ad9ef3a563c59ef22e7a8a0b8210bd26604369ea4a30a7c66aefe504e" },
{ url = "https://mirrors.aliyun.com/pypi/packages/93/77/8df9eb486495979bccecd1062e2eaf435250e84437040295b57d09048b0b/cryptography-49.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:42b0684e0e40cf26122427802486f6d93aea593612603a94fbf260c7eb1e9c1b" },
{ url = "https://mirrors.aliyun.com/pypi/packages/c2/e6/f60198ea8d9dfa15fff9ed4ca02ce362f6eadd9ba757dcc50634c4257b63/cryptography-49.0.0-cp39-abi3-win_amd64.whl", hash = "sha256:026ac7423e6fa66872d3bf889be5974507da3944f866f704fa200eadacd00001" },
]
[[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 = "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 = "httpx-sse"
version = "0.4.3"
source = { registry = "https://mirrors.aliyun.com/pypi/simple/" }
sdist = { url = "https://mirrors.aliyun.com/pypi/packages/0f/4c/751061ffa58615a32c31b2d82e8482be8dd4a89154f003147acee90f2be9/httpx_sse-0.4.3.tar.gz", hash = "sha256:9b1ed0127459a66014aec3c56bebd93da3c1bc8bb6618c8082039a44889a755d" }
wheels = [
{ url = "https://mirrors.aliyun.com/pypi/packages/d2/fd/6668e5aec43ab844de6fc74927e155a3b37bf40d7c3790e49fc0406b6578/httpx_sse-0.4.3-py3-none-any.whl", hash = "sha256:0ac1c9fe3c0afad2e0ebb25a934a59f4c7823b60792691f779fad2c5568830fc" },
]
[[package]]
name = "humansystemoptimization"
version = "0.1.0"
source = { editable = "." }
dependencies = [
{ name = "mcp" },
]
[package.dev-dependencies]
dev = [
{ name = "pytest" },
]
[package.metadata]
requires-dist = [{ name = "mcp", specifier = ">=1.0.0" }]
[package.metadata.requires-dev]
dev = [{ name = "pytest", specifier = ">=8.0.0" }]
[[package]]
name = "idna"
version = "3.18"
source = { registry = "https://mirrors.aliyun.com/pypi/simple/" }
sdist = { url = "https://mirrors.aliyun.com/pypi/packages/cd/63/9496c57188a2ee585e0f1db071d75089a11e98aa86eb99d9d7618fc1edce/idna-3.18.tar.gz", hash = "sha256:ffb385a7e039654cef1ab9ef32c6fafe283c0c0467bba1d9029738ce4a14a848" }
wheels = [
{ url = "https://mirrors.aliyun.com/pypi/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl", hash = "sha256:7f952cbe720b688055e3f87de14f5c3e5fdaa8bc3928985c4077ca689de849a2" },
]
[[package]]
name = "iniconfig"
version = "2.3.0"
source = { registry = "https://mirrors.aliyun.com/pypi/simple/" }
sdist = { url = "https://mirrors.aliyun.com/pypi/packages/72/34/14ca021ce8e5dfedc35312d08ba8bf51fdd999c576889fc2c24cb97f4f10/iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730" }
wheels = [
{ url = "https://mirrors.aliyun.com/pypi/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12" },
]
[[package]]
name = "jsonschema"
version = "4.26.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/b3/fc/e067678238fa451312d4c62bf6e6cf5ec56375422aee02f9cb5f909b3047/jsonschema-4.26.0.tar.gz", hash = "sha256:0c26707e2efad8aa1bfc5b7ce170f3fccc2e4918ff85989ba9ffa9facb2be326" }
wheels = [
{ url = "https://mirrors.aliyun.com/pypi/packages/69/90/f63fb5873511e014207a475e2bb4e8b2e570d655b00ac19a9a0ca0a385ee/jsonschema-4.26.0-py3-none-any.whl", hash = "sha256:d489f15263b8d200f8387e64b4c3a75f06629559fb73deb8fdfb525f2dab50ce" },
]
[[package]]
name = "jsonschema-specifications"
version = "2025.9.1"
source = { registry = "https://mirrors.aliyun.com/pypi/simple/" }
dependencies = [
{ name = "referencing" },
]
sdist = { url = "https://mirrors.aliyun.com/pypi/packages/19/74/a633ee74eb36c44aa6d1095e7cc5569bebf04342ee146178e2d36600708b/jsonschema_specifications-2025.9.1.tar.gz", hash = "sha256:b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d" }
wheels = [
{ url = "https://mirrors.aliyun.com/pypi/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl", hash = "sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe" },
]
[[package]]
name = "mcp"
version = "1.28.0"
source = { registry = "https://mirrors.aliyun.com/pypi/simple/" }
dependencies = [
{ name = "anyio" },
{ name = "httpx" },
{ name = "httpx-sse" },
{ name = "jsonschema" },
{ name = "pydantic" },
{ name = "pydantic-settings" },
{ name = "pyjwt", extra = ["crypto"] },
{ name = "python-multipart" },
{ name = "pywin32", marker = "sys_platform == 'win32'" },
{ name = "sse-starlette" },
{ name = "starlette" },
{ name = "typing-extensions" },
{ name = "typing-inspection" },
{ name = "uvicorn", marker = "sys_platform != 'emscripten'" },
]
sdist = { url = "https://mirrors.aliyun.com/pypi/packages/c1/ee/94c6c50ffc5b5cf4737052275d11b57367f32d1a8516e31dcd60591b3916/mcp-1.28.0.tar.gz", hash = "sha256:559d3f9943674cafbe5744c5d3794f3237e8b47f9bbc58e20c0fad680d8487c2" }
wheels = [
{ url = "https://mirrors.aliyun.com/pypi/packages/2e/e1/4c1dc1fbb688641a712d34650c3d58bbbdcb314ddb75bc5817bbf33515a4/mcp-1.28.0-py3-none-any.whl", hash = "sha256:9c1e7cf3a9125557e418ecd4fed8e9adddce81b0dfdae4d6601d700f5beb71a4" },
]
[[package]]
name = "packaging"
version = "26.2"
source = { registry = "https://mirrors.aliyun.com/pypi/simple/" }
sdist = { url = "https://mirrors.aliyun.com/pypi/packages/d7/f1/e7a6dd94a8d4a5626c03e4e99c87f241ba9e350cd9e6d75123f992427270/packaging-26.2.tar.gz", hash = "sha256:ff452ff5a3e828ce110190feff1178bb1f2ea2281fa2075aadb987c2fb221661" }
wheels = [
{ url = "https://mirrors.aliyun.com/pypi/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl", hash = "sha256:5fc45236b9446107ff2415ce77c807cee2862cb6fac22b8a73826d0693b0980e" },
]
[[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 = "pycparser"
version = "3.0"
source = { registry = "https://mirrors.aliyun.com/pypi/simple/" }
sdist = { url = "https://mirrors.aliyun.com/pypi/packages/1b/7d/92392ff7815c21062bea51aa7b87d45576f649f16458d78b7cf94b9ab2e6/pycparser-3.0.tar.gz", hash = "sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29" }
wheels = [
{ url = "https://mirrors.aliyun.com/pypi/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl", hash = "sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992" },
]
[[package]]
name = "pydantic"
version = "2.13.4"
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/18/a5/b60d21ac674192f8ab0ba4e9fd860690f9b4a6e51ca5df118733b487d8d6/pydantic-2.13.4.tar.gz", hash = "sha256:c40756b57adaa8b1efeeced5c196f3f3b7c435f90e84ea7f443901bec8099ef6" }
wheels = [
{ url = "https://mirrors.aliyun.com/pypi/packages/fd/7b/122376b1fd3c62c1ed9dc80c931ace4844b3c55407b6fb2d199377c9736f/pydantic-2.13.4-py3-none-any.whl", hash = "sha256:45a282cde31d808236fd7ea9d919b128653c8b38b393d1c4ab335c62924d9aba" },
]
[[package]]
name = "pydantic-core"
version = "2.46.4"
source = { registry = "https://mirrors.aliyun.com/pypi/simple/" }
dependencies = [
{ name = "typing-extensions" },
]
sdist = { url = "https://mirrors.aliyun.com/pypi/packages/9d/56/921726b776ace8d8f5db44c4ef961006580d91dc52b803c489fafd1aa249/pydantic_core-2.46.4.tar.gz", hash = "sha256:62f875393d7f270851f20523dd2e29f082bcc82292d66db2b64ea71f64b6e1c1" }
wheels = [
{ url = "https://mirrors.aliyun.com/pypi/packages/ce/8c/af022f0af448d7747c5154288d46b5f2bc5f17366eaa0e23e9aa04d59f3b/pydantic_core-2.46.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:3245406455a5d98187ec35530fd772b1d799b26667980872c8d4614991e2c4a2" },
{ url = "https://mirrors.aliyun.com/pypi/packages/19/95/6195171e385007300f0f5574592e467c568becce2d937a0b6804f218bc49/pydantic_core-2.46.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:962ccbab7b642487b1d8b7df90ef677e03134cf1fd8880bf698649b22a69371f" },
{ url = "https://mirrors.aliyun.com/pypi/packages/8e/bc/f47d1ff9cbb1620e1b5b697eef06010035735f07820180e74178226b27b3/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8233f2947cf85404441fd7e0085f53b10c93e0ee78611099b5c7237e36aacbf7" },
{ url = "https://mirrors.aliyun.com/pypi/packages/5b/11/9b9a5b0306345664a2da6410877af6e8082481b5884b3ddd78d47c6013ce/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3a233125ac121aa3ffba9a2b59edfc4a985a76092dc8279586ab4b71390875e7" },
{ url = "https://mirrors.aliyun.com/pypi/packages/f1/b7/a65fec226f5d78fc39f4a13c4cc0c768c22b113438f60c14adc9d2865038/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b712b53160b79a5850310b912a5ef8e57e56947c8ad690c227f5c9d7e561712" },
{ url = "https://mirrors.aliyun.com/pypi/packages/68/f0/92039db98b907ef49269a8271f67db9cb78ae2fc68062ef7e4e77adb5f61/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9401557acd873c3a7f3eb9383edef8ac4968f9510e340f4808d427e75667e7b4" },
{ url = "https://mirrors.aliyun.com/pypi/packages/5f/97/2aab507d3d00ca626e8e57c1eac6a79e4e5fbcc63eb99733ff55d1717f65/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:926c9541b14b12b1681dca8a0b75feb510b06c6341b70a8e500c2fdcff837cce" },
{ url = "https://mirrors.aliyun.com/pypi/packages/22/37/a8aca44d40d737dde2bc05b3c6c07dff0de07ce6f82e9f3167aeaf4d5dea/pydantic_core-2.46.4-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:56cb4851bcaf3d117eddcef4fe66afd750a50274b0da8e22be256d10e5611987" },
{ url = "https://mirrors.aliyun.com/pypi/packages/24/99/fcef1b79238c06a8cbec70819ac722ba76e02bc8ada9b0fd66eba40da01b/pydantic_core-2.46.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c68fcd102d71ea85c5b2dfac3f4f8476eff42a9e078fd5faefff6d145063536b" },
{ url = "https://mirrors.aliyun.com/pypi/packages/ae/6c/fc44000918855b42779d007ae63b0532794739027b2f417321cddbc44f6a/pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b2f69dec1725e79a012d920df1707de5caf7ed5e08f3be4435e25803efc47458" },
{ url = "https://mirrors.aliyun.com/pypi/packages/6b/65/d9cadc9f1920d7a127ad2edba16c1db7916e59719285cd6c94600b0080ba/pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:8d0820e8192167f80d88d64038e609c31452eeca865b4e1d9950a27a4609b00b" },
{ url = "https://mirrors.aliyun.com/pypi/packages/d0/cf/c873d91679f3a30bcf5e7ac280ce5573483e72295307685120d0d5ad3416/pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fbdb89b3e1c94a30cc5edfce477c6e6a5dc4d8f84665b455c27582f211a1c72c" },
{ url = "https://mirrors.aliyun.com/pypi/packages/47/bd/6f2fc8188f31bf10590f1e98e7b306336161fac930a8c514cd7bd828c7dc/pydantic_core-2.46.4-cp312-cp312-win32.whl", hash = "sha256:9aa768456404a8bf48a4406685ac2bec8e72b62c69313734fa3b73cf33b3a894" },
{ url = "https://mirrors.aliyun.com/pypi/packages/40/8c/985c1d41ea1107c2534abd9870e4ed5c8e7669b5c308297835c001e7a1c4/pydantic_core-2.46.4-cp312-cp312-win_amd64.whl", hash = "sha256:e9c26f834c65f5752f3f06cb08cb86a913ceb7274d0db6e267808a708b46bc89" },
{ url = "https://mirrors.aliyun.com/pypi/packages/c4/ba/f463d006e0c47373ca7ec5e1a261c59dc01ef4d62b2657af925fb0deee3a/pydantic_core-2.46.4-cp312-cp312-win_arm64.whl", hash = "sha256:4fc73cb559bdb54b1134a706a2802a4cddd27a0633f5abb7e53056268751ac6a" },
{ url = "https://mirrors.aliyun.com/pypi/packages/51/a2/5d30b469c5267a17b39dec53208222f76a8d351dfac4af661888c5aee77d/pydantic_core-2.46.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:5d5902252db0d3cedf8d4a1bc68f70eeb430f7e4c7104c8c476753519b423008" },
{ url = "https://mirrors.aliyun.com/pypi/packages/c1/81/4fa520eaffa8bd7d1525e644cd6d39e7d60b1592bc5b516693c7340b50f1/pydantic_core-2.46.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c94f0688e7b8d0a67abf40e57a7eaaecd17cc9586706a31b76c031f63df052b4" },
{ url = "https://mirrors.aliyun.com/pypi/packages/03/d5/fd02da45b659668b05923b17ba3a0100a0a3d5541e3bd8fcc4ecb711309e/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f027324c56cd5406ca49c124b0db10e56c69064fec039acc571c29020cc87c76" },
{ url = "https://mirrors.aliyun.com/pypi/packages/21/f2/95727e1368be3d3ed485eaab7adbd7dda408f33f7a36e8b48e0144002b91/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e739fee756ba1010f8bcccb534252e85a35fe45ae92c295a06059ce58b74ccd3" },
{ url = "https://mirrors.aliyun.com/pypi/packages/9c/86/5d99feea3f77c7234b8718075b23db11532773c1a0dbd9b9490215dc2eeb/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d56801be94b86a9da183e5f3766e6310752b99ff647e38b09a9500d88e46e76" },
{ url = "https://mirrors.aliyun.com/pypi/packages/d2/3a/508ac615935ef7588cf6d9e9b91309fdc2da751af865e02a9098de88258c/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2412e734dcb48da14d4e4006b82b46b74f2518b8a26ee7e58c6844a6cd6d03c4" },
{ url = "https://mirrors.aliyun.com/pypi/packages/07/f8/41db9de19d7987d6b04715a02b3b40aea467000275d9d758ffaa31af7d50/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9551187363ffc0de2a00b2e47c25aeaeb1020b69b668762966df15fc5659dd5a" },
{ url = "https://mirrors.aliyun.com/pypi/packages/2c/e2/f35033184cb11d0052daf4416e8e10a502ea2ac006fc4f459aee872727d1/pydantic_core-2.46.4-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:0186750b482eefa11d7f435892b09c5c606193ef3375bcf94aa00ae6bfb66262" },
{ url = "https://mirrors.aliyun.com/pypi/packages/7e/7b/6ceeb1cc90e193862f444ebe373d8fdf613f0a82572dde03fb10734c6c71/pydantic_core-2.46.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5855698a4856556d86e8e6cd8434bc3ac0314ee8e12089ae0e143f64c6256e4e" },
{ url = "https://mirrors.aliyun.com/pypi/packages/5a/f2/c8d7773ede6af08036423a00ae0ceffce266c3c52a096c435d68c896083f/pydantic_core-2.46.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:cbaf13819775b7f769bf4a1f066cb6df7a28d4480081a589828ef190226881cd" },
{ url = "https://mirrors.aliyun.com/pypi/packages/59/31/0c864784e31f09f05cdd87606f08923b9c9e7f6e51dd27f20f62f975ce9f/pydantic_core-2.46.4-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:633147d34cf4550417f12e2b1a0383973bdf5cdfde212cb09e9a581cf10820be" },
{ url = "https://mirrors.aliyun.com/pypi/packages/c2/eb/4f6c8a41efa30baa755590f4141abf3a8c370fab610915733e74134a7270/pydantic_core-2.46.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:82cf5301172168103724d49a1444d3378cb20cdee30b116a1bd6031236298a5d" },
{ url = "https://mirrors.aliyun.com/pypi/packages/5b/24/b375a480d53113860c299764bfe9f349a3dc9108b3adc0d7f0d786492ebf/pydantic_core-2.46.4-cp313-cp313-win32.whl", hash = "sha256:9fa8ae11da9e2b3126c6426f147e0fba88d96d65921799bb30c6abd1cb2c97fb" },
{ url = "https://mirrors.aliyun.com/pypi/packages/7e/e8/cff247591966f2d22ec8c003cd7587e27b7ba7b81ab2fb888e3ab75dc285/pydantic_core-2.46.4-cp313-cp313-win_amd64.whl", hash = "sha256:6b3ace8194b0e5204818c92802dcdca7fc6d88aabbb799d7c795540d9cd6d292" },
{ url = "https://mirrors.aliyun.com/pypi/packages/c6/1a/f4aee670d5670e9e148e0c82c7db98d780be566c6e6a97ee8035528ca0b3/pydantic_core-2.46.4-cp313-cp313-win_arm64.whl", hash = "sha256:184c081504d17f1c1066e430e117142b2c77d9448a97f7b65c6ac9fd9aee238d" },
{ url = "https://mirrors.aliyun.com/pypi/packages/8d/74/228a26ddad29c6672b805d9fd78e8d251cd04004fa7eed0e622096cd0250/pydantic_core-2.46.4-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:428e04521a40150c85216fc8b85e8d39fece235a9cf5e383761238c7fa9b96fb" },
{ url = "https://mirrors.aliyun.com/pypi/packages/ad/1f/8970b150a4b4365623ae00fc88603491f763c627311ae8031e3111356d6e/pydantic_core-2.46.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:23ace664830ee0bfe014a0c7bc248b1f7f25ed7ad103852c317624a1083af462" },
{ url = "https://mirrors.aliyun.com/pypi/packages/95/30/5211a831ae054928054b2f79731661087a2bc5c01e825c672b3a4a8f1b3e/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce5c1d2a8b27468f433ca974829c44060b8097eedc39933e3c206a90ee49c4a9" },
{ url = "https://mirrors.aliyun.com/pypi/packages/57/e9/689668733b1eb67adeef047db3c2e8788fcf65a7fd9c9e2b46b7744fe245/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7283d57845ecf5a163403eb0702dfc220cc4fbdd18919cb5ccea4f95ee1cdab4" },
{ url = "https://mirrors.aliyun.com/pypi/packages/60/d9/6715260422ff50a2109878fd24d948a6c3446bb2664f34ee78cd972b3acd/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8daafc69c93ee8a0204506a3b6b30f586ef54028f52aeeeb5c4cfc5184fd5914" },
{ url = "https://mirrors.aliyun.com/pypi/packages/18/ae/fdb2f64316afca925640f8e70bb1a564b0ec2721c1389e25b8eb4bf9a299/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd2213145bcc2ba85884d0ac63d222fece9209678f77b9b4d76f054c561adb28" },
{ url = "https://mirrors.aliyun.com/pypi/packages/89/1d/8eff589b45bb8190a9d12c49cfad0f176a5cbd1534908a6b5125e2886239/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a5f930472650a82629163023e630d160863fce524c616f4e5186e5de9d9a49b" },
{ url = "https://mirrors.aliyun.com/pypi/packages/06/d5/ee5a3366637fee41dee51a1fc91562dcf12ddbc68fda34e6b253da2324bb/pydantic_core-2.46.4-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:c1b3f518abeca3aa13c712fd202306e145abf59a18b094a6bafb2d2bbf59192c" },
{ url = "https://mirrors.aliyun.com/pypi/packages/94/33/2414be571d2c6a6c4d08be21f9292b6d3fdb08949a97b6dfe985017821db/pydantic_core-2.46.4-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1a7dd0b3ee80d90150e3495a3a13ac34dbcbfd4f012996a6a1d8900e91b5c0fb" },
{ url = "https://mirrors.aliyun.com/pypi/packages/7b/79/7daa95be995be0eecc4cf75064cb33f9bbbfe3fe0158caf2f0d4a996a5c7/pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:3fb702cd90b0446a3a1c5e470bfa0dd23c0233b676a9099ddcc964fa6ca13898" },
{ url = "https://mirrors.aliyun.com/pypi/packages/9f/cb/d0a382f5c0de8a222dc61c65348e0ce831b1f68e0a018450d31c2cace3a5/pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:b8458003118a712e66286df6a707db01c52c0f52f7db8e4a38f0da1d3b94fc4e" },
{ url = "https://mirrors.aliyun.com/pypi/packages/05/db/d9ba624cc4a5aced1598e88c04fdbd8310c8a69b9d38b9a3d39ce3a61ed7/pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:372429a130e469c9cd698925ce5fc50940b7a1336b0d82038e63d5bbc4edc519" },
{ url = "https://mirrors.aliyun.com/pypi/packages/f2/20/d15df15ba918c423461905802bfd2981c3af0bfa0e40d05e13edbfa48bc3/pydantic_core-2.46.4-cp314-cp314-win32.whl", hash = "sha256:85bb3611ff1802f3ee7fdd7dbff26b56f343fb432d57a4728fdd49b6ef35e2f4" },
{ url = "https://mirrors.aliyun.com/pypi/packages/fc/b6/6b8de4c0a7d7ab3004c439c80c5c1e0a3e8d78bbae19379b01960383d9e5/pydantic_core-2.46.4-cp314-cp314-win_amd64.whl", hash = "sha256:811ff8e9c313ab425368bcbb36e5c4ebd7108c2bbf4e4089cfbb0b01eff63fac" },
{ url = "https://mirrors.aliyun.com/pypi/packages/32/36/51eb763beec1f4cf59b1db243a7dcc39cbb41230f050a09b9d69faaf0a48/pydantic_core-2.46.4-cp314-cp314-win_arm64.whl", hash = "sha256:bfec22eab3c8cc2ceec0248aec886624116dc079afa027ecc8ad4a7e62010f8a" },
{ url = "https://mirrors.aliyun.com/pypi/packages/e8/91/855af51d625b23aa987116a19e231d2aaef9c4a415273ddc189b79a45fee/pydantic_core-2.46.4-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:af8244b2bef6aaad6d92cda81372de7f8c8d36c9f0c3ea36e827c60e7d9467a0" },
{ url = "https://mirrors.aliyun.com/pypi/packages/fb/1b/8784a54c65edb5f49f0a14d6977cf1b209bba85a4c77445b255c2de58ab3/pydantic_core-2.46.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:5a4330cdbc57162e4b3aa303f588ba752257694c9c9be3e7ebb11b4aca659b5d" },
{ url = "https://mirrors.aliyun.com/pypi/packages/e8/e7/1955d28d1afc56dd4b3ad7cc0cf39df1b9852964cf16e5d13912756d6d6b/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29c61fc04a3d840155ff08e475a04809278972fe6aef51e2720554e96367e34b" },
{ url = "https://mirrors.aliyun.com/pypi/packages/93/e2/3fedbf0ba7a22850e6e9fd78117f1c0f10f950182344d8a6c535d468fdd8/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c50f2528cf200c5eed56faf3f4e22fcd5f38c157a8b78576e6ba3168ec35f000" },
{ url = "https://mirrors.aliyun.com/pypi/packages/f8/61/46be275fcaaba0b4f5b9669dd852267ce1ff616592dccf7a7845588df091/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0cbe8b01f948de4286c74cdd6c667aceb38f5c1e26f0693b3983d9d74887c65e" },
{ url = "https://mirrors.aliyun.com/pypi/packages/60/db/12e93e46a8bac9988be3c016860f83293daea8c716c029c9ace279036f2f/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:617d7e2ca7dcb8c5cf6bcb8c59b8832c94b36196bbf1cbd1bfb56ed341905edd" },
{ url = "https://mirrors.aliyun.com/pypi/packages/e2/4a/4d8b19008f38d31c53b8219cfedc2e3d5de5fe99d90076b7e767de29274f/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7027560ee92211647d0d34e3f7cd6f50da56399d26a9c8ad0da286d3869a53f3" },
{ url = "https://mirrors.aliyun.com/pypi/packages/88/70/3cbc40978fefb7bb09c6708d40d4ad1a5d70fd7213c3d17f971de868ec1f/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:f99626688942fb746e545232e7726926f3be91b5975f8b55327665fafda991c7" },
{ url = "https://mirrors.aliyun.com/pypi/packages/9d/20/b8d36736216e29491125531685b2f9e61aa5b4b2599893f8268551da3338/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fc3e9034a63de20e15e8ade85358bc6efc614008cab72898b4b4952bea0509ff" },
{ url = "https://mirrors.aliyun.com/pypi/packages/1d/a2/367df868eb584dacf6bf82a389272406d7178e301c4ac82545ab98bc2dd9/pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:97e7cf2be5c77b7d1a9713a05605d49460d02c6078d38d8bef3cbe323c548424" },
{ url = "https://mirrors.aliyun.com/pypi/packages/c1/b8/4460f77f7e201893f649a29ab355dddd3beee8a97bcb1a320db414f9a06e/pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:3bf92c5d0e00fefaab325a4d27828fe6b6e2a21848686b5b60d2d9eeb09d76c6" },
{ url = "https://mirrors.aliyun.com/pypi/packages/64/c4/be2639293acd87dc8ddbcec41a73cee9b2ebf996fe6d892a1a74e88ad3f7/pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:3ecbc122d18468d06ca279dc26a8c2e2d5acb10943bb35e36ae92096dc3b5565" },
{ url = "https://mirrors.aliyun.com/pypi/packages/30/a6/9f9f380dbb301f67023bf8f707aaa75daadf84f7152d95c410fd7e81d994/pydantic_core-2.46.4-cp314-cp314t-win32.whl", hash = "sha256:e846ae7835bf0703ae43f534ab79a867146dadd59dc9ca5c8b53d5c8f7c9ef02" },
{ url = "https://mirrors.aliyun.com/pypi/packages/40/1f/f1eb9eb350e795d1af8586289746f5c5677d16043040d63710e22abc43c9/pydantic_core-2.46.4-cp314-cp314t-win_amd64.whl", hash = "sha256:2108ba5c1c1eca18030634489dc544844144ee36357f2f9f780b93e7ddbb44b5" },
{ url = "https://mirrors.aliyun.com/pypi/packages/f6/d2/42dd53d0a85c27606f316d3aa5d2869c4e8470a5ed6dec30e4a1abe19192/pydantic_core-2.46.4-cp314-cp314t-win_arm64.whl", hash = "sha256:4fcbe087dbc2068af7eda3aa87634eba216dbda64d1ae73c8684b621d33f6596" },
{ url = "https://mirrors.aliyun.com/pypi/packages/9d/1d/8987ad40f65ae1432753072f214fb5c74fe47ffbd0698bb9cbbb585664f8/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:1d8ba486450b14f3b1d63bc521d410ec7565e52f887b9fb671791886436a42f7" },
{ url = "https://mirrors.aliyun.com/pypi/packages/64/d3/84c282a7eee1d3ac4c0377546ef5a1ea436ce26840d9ac3b7ed54a377507/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:3009f12e4e90b7f88b4f9adb1b0c4a3d58fe7820f3238c190047209d148026df" },
{ url = "https://mirrors.aliyun.com/pypi/packages/d7/ca/eac61596cdeb4d7e174d3dc0bd8a6238f14f75f97a24e7b7db4c7e7340a0/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad785e92e6dc634c21555edc8bd6b64957ab844541bcb96a1366c202951ae526" },
{ url = "https://mirrors.aliyun.com/pypi/packages/fa/c3/7c8b240552251faf6b3a957db200fcfbbcec36763c050428b601e0c9b83b/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00c603d540afdd6b80eb39f078f33ebd46211f02f33e34a32d9f053bba711de0" },
]
[[package]]
name = "pydantic-settings"
version = "2.14.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/07/60/1d1e59c9c90d54591469ada7d268251f71c24bdb765f1a8a832cee8c6653/pydantic_settings-2.14.1.tar.gz", hash = "sha256:e874d3bec7e787b0c9958277956ed9b4dd5de6a80e162188fdaff7c5e26fd5fa" }
wheels = [
{ url = "https://mirrors.aliyun.com/pypi/packages/ae/8d/f1af3832f5e6eb13ba94ee809e72b8ecb5eef226d27ee0bef7d963d943c7/pydantic_settings-2.14.1-py3-none-any.whl", hash = "sha256:6e3c7edfd8277687cdc598f56e5cff0e9bfff0910a3749deaa8d4401c3a2b9de" },
]
[[package]]
name = "pygments"
version = "2.20.0"
source = { registry = "https://mirrors.aliyun.com/pypi/simple/" }
sdist = { url = "https://mirrors.aliyun.com/pypi/packages/c3/b2/bc9c9196916376152d655522fdcebac55e66de6603a76a02bca1b6414f6c/pygments-2.20.0.tar.gz", hash = "sha256:6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f" }
wheels = [
{ url = "https://mirrors.aliyun.com/pypi/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl", hash = "sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176" },
]
[[package]]
name = "pyjwt"
version = "2.13.0"
source = { registry = "https://mirrors.aliyun.com/pypi/simple/" }
sdist = { url = "https://mirrors.aliyun.com/pypi/packages/3b/81/58d0ac84e1ef3a3843791d6954d94c0b33d526c75eeb1efbce9d0a4c4077/pyjwt-2.13.0.tar.gz", hash = "sha256:41571c89ca91598c79e8ef18a2d07367d4810fbbd6f637794879baf1b7703423" }
wheels = [
{ url = "https://mirrors.aliyun.com/pypi/packages/a3/5e/ecf12fdb62546d64385c158514e9b2b671f7832108ef2ecd2020ce0af2d1/pyjwt-2.13.0-py3-none-any.whl", hash = "sha256:66adcc2aff09b3f1bbd95fc1e1577df8ac8723c978552fd43304c8a290ac5728" },
]
[package.optional-dependencies]
crypto = [
{ name = "cryptography" },
]
[[package]]
name = "pytest"
version = "9.1.1"
source = { registry = "https://mirrors.aliyun.com/pypi/simple/" }
dependencies = [
{ name = "colorama", marker = "sys_platform == 'win32'" },
{ name = "iniconfig" },
{ name = "packaging" },
{ name = "pluggy" },
{ name = "pygments" },
]
sdist = { url = "https://mirrors.aliyun.com/pypi/packages/e4/47/b9efed96c114afcfa3c9d3fe98a76a1d14c74a9e266d397cf6eb64be5e01/pytest-9.1.1.tar.gz", hash = "sha256:1088fbde8f2b49d95a549a195707afa7a76a3ce9bcadc26b6d71f0ffda5fe313" }
wheels = [
{ url = "https://mirrors.aliyun.com/pypi/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl", hash = "sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c" },
]
[[package]]
name = "python-dotenv"
version = "1.2.2"
source = { registry = "https://mirrors.aliyun.com/pypi/simple/" }
sdist = { url = "https://mirrors.aliyun.com/pypi/packages/82/ed/0301aeeac3e5353ef3d94b6ec08bbcabd04a72018415dcb29e588514bba8/python_dotenv-1.2.2.tar.gz", hash = "sha256:2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3" }
wheels = [
{ url = "https://mirrors.aliyun.com/pypi/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a" },
]
[[package]]
name = "python-multipart"
version = "0.0.32"
source = { registry = "https://mirrors.aliyun.com/pypi/simple/" }
sdist = { url = "https://mirrors.aliyun.com/pypi/packages/5b/42/55c32bb9b12693c092ad250a0e82edb5b31ddeda6eb772de5f308b3804ad/python_multipart-0.0.32.tar.gz", hash = "sha256:be54b7f3fa167bb83e4fcd936b887b708f4e57fe75911c02aebf53efaf8d938e" }
wheels = [
{ url = "https://mirrors.aliyun.com/pypi/packages/e1/04/e8135ebd1ad02c56ec633277529b2602ff99ff634be76cdba5744cf554fd/python_multipart-0.0.32-py3-none-any.whl", hash = "sha256:ff6d3f776f16878c894e52e107296ffc890e913c611b1a4ec6c44e2821fe2e23" },
]
[[package]]
name = "pywin32"
version = "312"
source = { registry = "https://mirrors.aliyun.com/pypi/simple/" }
wheels = [
{ url = "https://mirrors.aliyun.com/pypi/packages/83/ff/32aa7d2ed0ab12b323aaa64f9b75e6ad4f8fd09f9ccfc28c79414d46838d/pywin32-312-cp312-cp312-win32.whl", hash = "sha256:dab4f65ac9c4e48400a2a0530c46c3c579cd5905ecd11b80692373915269208b" },
{ url = "https://mirrors.aliyun.com/pypi/packages/03/d9/77040d3b43df3f3be32ea289433d660d2727f5ba327bc73be835127d9d60/pywin32-312-cp312-cp312-win_amd64.whl", hash = "sha256:b457f6d628a47e8a7346ce22acb7e1a46a4a78b52e1d17e1af56871bd19a93bc" },
{ url = "https://mirrors.aliyun.com/pypi/packages/e3/cc/7b1ec671775756020a0ee7f4feeaf3c568f0ab86bd3900088cf986937a92/pywin32-312-cp312-cp312-win_arm64.whl", hash = "sha256:6017c58e12f6809fbb0555b75df144c2922a9ffd18e4b9b5afa863b6c1a9d950" },
{ url = "https://mirrors.aliyun.com/pypi/packages/2d/41/12fbfd7f36ed2146d8bc9de96c2741296bf0d490b98508496cff322e274c/pywin32-312-cp313-cp313-win32.whl", hash = "sha256:7a27df850933d16a8eabfbaeb73d52b273e2da667f80d70b01a89d1f6828d02c" },
{ url = "https://mirrors.aliyun.com/pypi/packages/ba/db/36a78e3403099d31d9746d13fdcde5accc43c1155f375a34d15983a479a7/pywin32-312-cp313-cp313-win_amd64.whl", hash = "sha256:c53e878d15a1c44788082bfe712a905433473aa38f86375b7cf8b45e3acbaaf9" },
{ url = "https://mirrors.aliyun.com/pypi/packages/84/37/c1697194092b76de9ed47ca124323f02c57ffc8a45c06f88a3d5acaf01eb/pywin32-312-cp313-cp313-win_arm64.whl", hash = "sha256:59aba5d5940842075343a5ddc6b11f1cdf0d1567fe745290359dfbcc7c2eb831" },
{ url = "https://mirrors.aliyun.com/pypi/packages/fc/2b/1f3cded5822fd49c02f40544cbb5f58c7cfd6b1694869fd476cb6170ee97/pywin32-312-cp314-cp314-win32.whl", hash = "sha256:a77a90fbb6881238d2ca9c6fd797b25817f3768fe78d214a90137ff055a75f5b" },
{ url = "https://mirrors.aliyun.com/pypi/packages/21/82/3bf86d2e2808902013132e1ce905a7da0da53790f3836c64bf44d55e24f3/pywin32-312-cp314-cp314-win_amd64.whl", hash = "sha256:a4dd3a848290ef724347b19f301045831d8e802fa4464f491b98b1e0a081432e" },
{ url = "https://mirrors.aliyun.com/pypi/packages/a4/0e/73f6d6800b4f27655abd9e9f6aaeaefcddb2b946e4674efa2bab184a7f7b/pywin32-312-cp314-cp314-win_arm64.whl", hash = "sha256:9fce94568364e0155e6dfb781ac5d95903be8baf28670632beab1b523f300daa" },
{ url = "https://mirrors.aliyun.com/pypi/packages/eb/61/caa39686032d2ebdd04ff0ab5cbe163126c0066d98e00c9018646e42393b/pywin32-312-cp315-cp315-win32.whl", hash = "sha256:5c1fbe4a937a73ae9297384a3da38518cbc694c68ad8a809b2e19acd350f03ed" },
{ url = "https://mirrors.aliyun.com/pypi/packages/0f/cd/7e1de64a4a6f69c04214169657ccab0d93a670ea50e35eb8f489d7378249/pywin32-312-cp315-cp315-win_amd64.whl", hash = "sha256:c2f03a0f73f804a13c2735b99392b0cd426bb4f2c4d0178e5ac966a0f21618d5" },
{ url = "https://mirrors.aliyun.com/pypi/packages/23/ed/4532e9388e65fa16b46776ef47ad631a64eda1631884488af707666350ed/pywin32-312-cp315-cp315-win_arm64.whl", hash = "sha256:a8597d28f267b39074aef51fa593530082b39cbe5a074226096857b1fed2dfb9" },
]
[[package]]
name = "referencing"
version = "0.37.0"
source = { registry = "https://mirrors.aliyun.com/pypi/simple/" }
dependencies = [
{ name = "attrs" },
{ name = "rpds-py" },
{ name = "typing-extensions", marker = "python_full_version < '3.13'" },
]
sdist = { url = "https://mirrors.aliyun.com/pypi/packages/22/f5/df4e9027acead3ecc63e50fe1e36aca1523e1719559c499951bb4b53188f/referencing-0.37.0.tar.gz", hash = "sha256:44aefc3142c5b842538163acb373e24cce6632bd54bdb01b21ad5863489f50d8" }
wheels = [
{ url = "https://mirrors.aliyun.com/pypi/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl", hash = "sha256:381329a9f99628c9069361716891d34ad94af76e461dcb0335825aecc7692231" },
]
[[package]]
name = "rpds-py"
version = "2026.5.1"
source = { registry = "https://mirrors.aliyun.com/pypi/simple/" }
sdist = { url = "https://mirrors.aliyun.com/pypi/packages/2e/43/25a8dcd3feedd735039a8f0b5b7e3b118232b5eae288c4fd9ab200d41094/rpds_py-2026.5.1.tar.gz", hash = "sha256:07b24fea40541e28570e5b795a4a38fbdcd12550c06bd0748005ecc8116ca256" }
wheels = [
{ url = "https://mirrors.aliyun.com/pypi/packages/d4/e7/a78582dc57caa592dcc7d4fb69b61390561e908eb3d2f5df5928a8e354c0/rpds_py-2026.5.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:3abe24a66e57adcfa645d718063a5fa5103ecc71ddbf26d78af8f9368018ff1d" },
{ url = "https://mirrors.aliyun.com/pypi/packages/a3/43/35e3f136343aef451e545ce8c38d36c2f93c0ed88703db8b64ba2b205c68/rpds_py-2026.5.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:58b1d94308ddf0b1982f61f2eb54bf92997c9ece8a8093ef014250f4a517906c" },
{ url = "https://mirrors.aliyun.com/pypi/packages/20/e1/0f2160c5982d3157734d5cb3ed63d8b2d583a73c9864f77b666449f32cf8/rpds_py-2026.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fa92420128dadce7f54bd73ba1825a273e9268fe9e35dbf7e6362890efa4e08" },
{ url = "https://mirrors.aliyun.com/pypi/packages/d0/11/ee0ba42aff83bf4effdbc576673c6be64c5e173978c3f6d537e94482f77d/rpds_py-2026.5.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ca653c6546386227cd9800d1bef6a348099acf8db4250341da6d90f663d6dfcb" },
{ url = "https://mirrors.aliyun.com/pypi/packages/11/df/d94aa6a499d4ac40afe2d7620f2c597fd3c0f182e854ad7cf3f596a81cb6/rpds_py-2026.5.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:66c93681c4729e4e3ecba31b8179fae083ff3118841672835140338b4b9867c1" },
{ url = "https://mirrors.aliyun.com/pypi/packages/1f/75/33d30f43bb2f458de11979486a591b1bf6e5651765ed1704c6197c2dc773/rpds_py-2026.5.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:40ff257542e04796880e011e15cd4dc21c2599975df2aaa8f2c8495ca574e1a5" },
{ url = "https://mirrors.aliyun.com/pypi/packages/f4/1e/2c9096fc19d5fd084b0184ca2b651e659aa0a37e6fdbecf6ece47f147fe1/rpds_py-2026.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6825cc329b290e93c5f6a9be2393118a763f6ccf6abd83704e0c102ca583644" },
{ url = "https://mirrors.aliyun.com/pypi/packages/b9/e5/61ec9f8be8211ea7f48448195549e4aaf02004083475493b0e137702ecb2/rpds_py-2026.5.1-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:de42116e69cb53b911cc34aee5ab98f36c597b822545045d49e938818b99e5e4" },
{ url = "https://mirrors.aliyun.com/pypi/packages/0d/ca/bcec1005c4f4a234f92a29078631fee49206c7265ccae966f18fd332e80e/rpds_py-2026.5.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c0f920015df2a504bebaba6d4c31ccf3fcf942f92655c086da30b671aad19aa6" },
{ url = "https://mirrors.aliyun.com/pypi/packages/72/e6/4d5718c5cf26c522dc7c9999e238da1e77380b81d0c5d1df11e271ddfeb1/rpds_py-2026.5.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0408a24e44feb919423dc6d9da677cb5cddb894d2ca9e763967d156d9c60fab4" },
{ url = "https://mirrors.aliyun.com/pypi/packages/d4/25/2ee807bdb3e1f0b7eddf7782acd5665a8b5205a331a7d7244a52c4812fd9/rpds_py-2026.5.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:cea68bcd53467561ae2f96a6bdad1544299ba97b5b0ddcd5ac3d376e5c781c24" },
{ url = "https://mirrors.aliyun.com/pypi/packages/6a/c1/7d4c26f167f8c41501cc073d30ee22082b16ce358cf5b00ec97cbc7804ea/rpds_py-2026.5.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4be8b1d2a705cc37d08256004e1d07de143fa0075c8e85a3df020b776f62b732" },
{ url = "https://mirrors.aliyun.com/pypi/packages/04/1d/9d12b0a337bab46f4769f8857f4007e3b2d639e14f9a44a0efe157696e64/rpds_py-2026.5.1-cp312-cp312-win32.whl", hash = "sha256:6736718bd4fc49cbcb538ba30516fdbef161522acefb739657d48b97bd864fed" },
{ url = "https://mirrors.aliyun.com/pypi/packages/c5/93/e4116f2de7f56bc7406a76033dc501811ddeb22b7f056b92d632871ebb0c/rpds_py-2026.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:0a7d1eec967df0e9b22614a5e177622e0c89611d03727fa0cb48e45028907870" },
{ url = "https://mirrors.aliyun.com/pypi/packages/cb/53/6c3419d85eb2ec5938a37627c585b42d76a63bb731d6e42ed4b079ebf486/rpds_py-2026.5.1-cp312-cp312-win_arm64.whl", hash = "sha256:1841d067089e117142d79b98aa0df2f08b52f2ecc1819dd2700636c0db74a473" },
{ url = "https://mirrors.aliyun.com/pypi/packages/6c/32/14c961ad295f490eb0849ada8b79683e93a59b9de3afdd983eaf55fa6867/rpds_py-2026.5.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:efef4ac29c6ff495531eb17ee705b62841ecaa291b7c7077e848ea03e237164d" },
{ url = "https://mirrors.aliyun.com/pypi/packages/ca/bb/d1b85117967c11191441a7274ae616c65d93901d082c588f89a50a8da5ae/rpds_py-2026.5.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c39f5b67a8a2e67179ada2a954227d670fe65fa9098457f698f56ddf248709b3" },
{ url = "https://mirrors.aliyun.com/pypi/packages/7c/46/d84105f062e626a1b233f863907288a4708c2d833b8b4c6fb2764bc080c0/rpds_py-2026.5.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5c30f3f04eef4fbd362226a6f31d7c8895ca4fbb6e0b790f6890a98d8da8559" },
{ url = "https://mirrors.aliyun.com/pypi/packages/e2/ae/469d7959ce5b1201e1de135dc735b86db3b35dd0d1734f6a44246d5f061c/rpds_py-2026.5.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:277f6c82f0580848796c7ecc8a7173aa3bfb928e4ff831261c2f60a81dc270db" },
{ url = "https://mirrors.aliyun.com/pypi/packages/dc/a2/57853d31a1116a561aa072794602ad3f6341e18d70a8523f1bd5b9fc1e5a/rpds_py-2026.5.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:63c2c4c213f1a4e3f3de28ecab029dbdee976324e729c0d7a55211be72576b02" },
{ url = "https://mirrors.aliyun.com/pypi/packages/99/63/3a8eabcad9314b7daf5c65f451d2c33d989235cd8a5762186cf2c3f5a4f8/rpds_py-2026.5.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3350ec808fb538fe71a1f94dfaa0e29c598dfad805ce49f0caec5ae3183c652b" },
{ url = "https://mirrors.aliyun.com/pypi/packages/4b/25/05678d97fc25e2622df14dc530fb82023174ecfff6733991ed0d78f167bd/rpds_py-2026.5.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1b964e3ab599e718dc46c018d104b1ebc007cbc6567d827c94a687fca56d77e" },
{ url = "https://mirrors.aliyun.com/pypi/packages/88/d1/8c90b6431e80a3b91b284a5c7c8c0c4f9c006444d90477a740d6e0f9c694/rpds_py-2026.5.1-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:19cb09fab7b7fc96b2a6e28f2e34b72a3705ff27b37edb77455316e5d3f3dc9b" },
{ url = "https://mirrors.aliyun.com/pypi/packages/ff/99/4638f672ab356682d633ee0da9255f5b67ce6efd0b85eb94ad3e255e65a5/rpds_py-2026.5.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:abe76bcdba31e576cb83eeb8797aa0d882b738fef6dc65d0601fc753806a5b46" },
{ url = "https://mirrors.aliyun.com/pypi/packages/66/3f/3546524b6eb4cc2e1f363a3d638fa52f6c24faae3500c25fb488b02f1740/rpds_py-2026.5.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:8bff7073db3899158fff55ebf57b113a67030af26f80a18978f9f0aa60250ddf" },
{ url = "https://mirrors.aliyun.com/pypi/packages/c6/c3/7b3388c796fcf471bd17194242d4dc1a7608567c0fa422bcc1c5e79f9c1e/rpds_py-2026.5.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:8ba264fa49be666cd9cc56bf34ec7002fb3d27a4aee5bcb4d43d0d18feb1bb6f" },
{ url = "https://mirrors.aliyun.com/pypi/packages/61/1e/a3cb07f2795075d1d88efddae2f541359fde5f08c81ee114c29c2949c90a/rpds_py-2026.5.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4860b603ddda0475a8885499b3729e90229d480105b42651962a5397d995fa89" },
{ url = "https://mirrors.aliyun.com/pypi/packages/a1/74/e758c03a5ef46f04c37f2651a2893db846d569ba8a7bca469d4b58939bcd/rpds_py-2026.5.1-cp313-cp313-win32.whl", hash = "sha256:7944270ae71383f6e2657dd7d5ce4eeb4ac2d0059a6738f0510583d462ab4842" },
{ url = "https://mirrors.aliyun.com/pypi/packages/70/ec/a2aca432db9c7359b40fa393eeeaa0d166c2f70175be956e75fa24197c44/rpds_py-2026.5.1-cp313-cp313-win_amd64.whl", hash = "sha256:88647f43a73c4e01be19b04ceef0c8d3a1958153604d13c773becd8016f2a0cf" },
{ url = "https://mirrors.aliyun.com/pypi/packages/29/60/a73bfdd45b096574556acf303bbd9fa9eed36ca8a818b514e2a5d5fe2b9d/rpds_py-2026.5.1-cp313-cp313-win_arm64.whl", hash = "sha256:453895624ecf7db7063b1004e44037522bbaef9ff6a945e59bc71662d7a03abd" },
{ url = "https://mirrors.aliyun.com/pypi/packages/18/e2/408105fd611823f00882aea810f3989a30d26b1bab8b6beb20f98c724e0e/rpds_py-2026.5.1-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:b4e4bc98639ec915f512fde3aa7a95e0041d95d9c3cc86eea841fa63cb1e8600" },
{ url = "https://mirrors.aliyun.com/pypi/packages/8d/58/5c4a43436843c90d0f6d19f82c200c80e3843ca9fa07b237623327f6d384/rpds_py-2026.5.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:cacedb7a6e167680acba45ad5716e89067d225dc80da0d7040cae8c81d4572fa" },
{ url = "https://mirrors.aliyun.com/pypi/packages/fb/c2/1a71acdacaf4e259b10278fb87b039ded3cf80041bcd89dd8a3ea702ded6/rpds_py-2026.5.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68700371c5d7ae1412862ddfa719090925c93ecf351c566d66f09d04b136ea00" },
{ url = "https://mirrors.aliyun.com/pypi/packages/c2/c8/535f3d9b65addd8e28aa87b83c6e526799c3717a88273db8ea795beeef7a/rpds_py-2026.5.1-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:296c799becfa849c779c8725494fe9ed94959ed886787df4364b058465bad7f0" },
{ url = "https://mirrors.aliyun.com/pypi/packages/1c/91/dc033f313345c354ade914dbe73cdb90b615a4409ea02430d5356794f3d8/rpds_py-2026.5.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d3858b908218ee108d0bbfb2095ccc237648053c9bf98affad7cb079acaf1d97" },
{ url = "https://mirrors.aliyun.com/pypi/packages/27/fc/90fcbea459dbb8ddc18a2e0fd1de9412b48bc84ffff2db771cf714bacfd6/rpds_py-2026.5.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4fb8d2e7cb2f850b169806d61d1b991738acec96500a75c30f49caf064ce7cef" },
{ url = "https://mirrors.aliyun.com/pypi/packages/b2/1d/46cd11a228c9750684a798d98f878be6f614aa762438da7378f035e79e35/rpds_py-2026.5.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27b74c10ed6a8f190f4287f53bcfea348b92a84a9c9f70d30183d1e6172d580d" },
{ url = "https://mirrors.aliyun.com/pypi/packages/24/4a/d9b0c6af3a1de03eb93741bbe8be2bdce84d8fda8224f3005451d86df389/rpds_py-2026.5.1-cp313-cp313t-manylinux_2_31_riscv64.whl", hash = "sha256:b9a6528956191c48c52294a592dbd4a8386d7048bdb25c0efcb6b966466c6d83" },
{ url = "https://mirrors.aliyun.com/pypi/packages/c5/b4/db7aaabdda6d020afc87d981bcc2f57a434c7dec60ecfc2ab3dd50b20351/rpds_py-2026.5.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:af03e34e860047bc7a352b842856fcf78798fbb81132cc98bd2f907ab4eb9cd2" },
{ url = "https://mirrors.aliyun.com/pypi/packages/08/d6/070f6a41cbb343e2ac4171859bf3f3623e0ab002f72619d6d505313ec2de/rpds_py-2026.5.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:fea6e836d10abbe191d557d33bd58bd5987725fe63aa1eefe557d230209855bd" },
{ url = "https://mirrors.aliyun.com/pypi/packages/75/ab/1a71ea3589c4345dac0a0518f0e6a031cb42689277851b683c46d27463a5/rpds_py-2026.5.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:fc0c0f878ea770a0a8a462456c5ad36fc9fe6358e6b76fdadc7f17575e0b8bf1" },
{ url = "https://mirrors.aliyun.com/pypi/packages/8a/22/9bf80a56069c0c443fcfefac639a86a744550a2898817a6dfd3e26654924/rpds_py-2026.5.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e0b360f316d966b048b085857630b3cc51f3db2f07b06f440eac8f695374d1e3" },
{ url = "https://mirrors.aliyun.com/pypi/packages/da/68/3b2c0a75c9e04125696f84ebdbbf304acf5a40b58ba4481cdb98a922c3ba/rpds_py-2026.5.1-cp313-cp313t-win32.whl", hash = "sha256:a2999883eedf72fdfb7520b92c7d4ec2572a71ff40239377aa604cc529eecafc" },
{ url = "https://mirrors.aliyun.com/pypi/packages/e7/8b/609157d5a25d37d4f29f92840ba531f416907c34ae5c5739dd21fc2bef98/rpds_py-2026.5.1-cp313-cp313t-win_amd64.whl", hash = "sha256:e07be2a9d7122bd6e82dea89814ef8dc893feb1aae97fec1630f3263bbb30e55" },
{ url = "https://mirrors.aliyun.com/pypi/packages/d4/6f/19c1918a4b590d8de87e712e4abe4b3875771eff60216fb6153cf6665c68/rpds_py-2026.5.1-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:1f2c391c3059798093b65df23aca2cac150460ae9c630d99dec83d703d9485b9" },
{ url = "https://mirrors.aliyun.com/pypi/packages/e5/60/a06fe7da34eca79dacbf958a2ba0c6eea85bc2b29de20080bf40f72f66fa/rpds_py-2026.5.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:413b424f7c4ee65ab5e5be91f5731be0f8b41a1ee2b12dfe810d716312e95a78" },
{ url = "https://mirrors.aliyun.com/pypi/packages/bf/ec/b2333b97b90e2a6ef6ca8ad386ee284968e74bcfe113b3f1a8d9036429a9/rpds_py-2026.5.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c595a1d9255dce0599e13130d1440ab2506654f2b50294226ee06402f8fef63" },
{ url = "https://mirrors.aliyun.com/pypi/packages/14/7f/e00aae54067f2b488c4637961d5f58204d470795fc791085fa3f15060d2e/rpds_py-2026.5.1-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1c27c5f6102eac8c03e7595a00827a53b271ba40a53b59ff8709170e0855ea4a" },
{ url = "https://mirrors.aliyun.com/pypi/packages/be/cc/423999bbb8ae8dc93c77fc1d5e984ade5eb89d237d3bb884ccfa72ae2890/rpds_py-2026.5.1-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6c7fcf61d44cacecaf3aea542b0e053db77972a4573e7ceda16fb2b399161195" },
{ url = "https://mirrors.aliyun.com/pypi/packages/0f/aa/c671bf660f12e68d3c52ff86c7066ed1372df5a0f4f2ff584e419b8207e7/rpds_py-2026.5.1-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2c817a189d4ee14290420e5ff051e4dd6baa13f3edf84685071dee07a6d538ee" },
{ url = "https://mirrors.aliyun.com/pypi/packages/19/c8/d63bb75b68afe77b229e3021c6031bcaf01da5db5b0e69d0d10f9ba679a7/rpds_py-2026.5.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21846aac0ed2e0589f38c12dc44e77bb64e494b771eadbcf169cba00566ba7ba" },
{ url = "https://mirrors.aliyun.com/pypi/packages/82/35/c51122014d8274ff37dc606d60049c3db7d83da02b5b282511e5a906a9a6/rpds_py-2026.5.1-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:b317c87a13f769a4e787819bd508aaa5d69aa09b0880de9af6d3a8a54571cdec" },
{ url = "https://mirrors.aliyun.com/pypi/packages/e3/f9/2790cb99c136a5363acdeacf5c27c56f3de0d4118a1f48fca83404c99c89/rpds_py-2026.5.1-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ce87129d9f2c14fa6c4a8601fb80eb4488c80d38a20cd13758ef11123e14995d" },
{ url = "https://mirrors.aliyun.com/pypi/packages/e5/1b/e4fb584f8c75d35c38150ff6a332cda949e6f97acba1f4fd123b14ab56fe/rpds_py-2026.5.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:9cdddb6c1207d284d94fd1530adf57fbd797fe7c4b8704ba85f49414f2557e7d" },
{ url = "https://mirrors.aliyun.com/pypi/packages/d8/f7/a6731b4216cb3793ea1af5391da240f5683dacc0d13e034fe5fc3503f240/rpds_py-2026.5.1-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:4e237e139f94d3c036fd28eb9f564c99055476ff4ff05cd42be55ce349b5aa02" },
{ url = "https://mirrors.aliyun.com/pypi/packages/2c/ea/2e051a81d95d8e63f4b35a1c463a87e8766bc3d083c067c5dfb6bf220747/rpds_py-2026.5.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:ed0954b524873214369184a9c82b0eaa45a3fbb9a798cd95b17e0d98499e7ea0" },
{ url = "https://mirrors.aliyun.com/pypi/packages/65/56/b5f6fdb2083e32bca8a8993d89e70db114b4756c9e2c38421328126689d2/rpds_py-2026.5.1-cp314-cp314-win32.whl", hash = "sha256:2d88621d6a7d4dfa633d21abe90f280bb205274e16b1d1e61c6ad4640b2453b7" },
{ url = "https://mirrors.aliyun.com/pypi/packages/fb/80/65a5aa96c155e611d1ed844e4e1f57f3e36b021f396d9f8585d756e6b90d/rpds_py-2026.5.1-cp314-cp314-win_amd64.whl", hash = "sha256:cef8ac28d26f4dda3533060c20fbf80a325458fa9fd23ea72a73cdfa8e978838" },
{ url = "https://mirrors.aliyun.com/pypi/packages/27/7c/ad185212e87b05f196daef92bc5f3caf07298eb47c295b5585c3dd3093ac/rpds_py-2026.5.1-cp314-cp314-win_arm64.whl", hash = "sha256:eaaea962c68cdc68d4a533ba985ab8e9484277910bbfaa2ab3ef7732667bfed8" },
{ url = "https://mirrors.aliyun.com/pypi/packages/23/58/e14ae18759020334646b031e708ab4158d653a938822bfb7b95ef2e93aa3/rpds_py-2026.5.1-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:21942f52dbbd5f8758bf021213d28bd45c39e873e65e2407faf5f1846f5761ad" },
{ url = "https://mirrors.aliyun.com/pypi/packages/31/9b/5f4a1e2f960bca3ac5d052b139dd31eed97b259f9d909173821760d542e8/rpds_py-2026.5.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f414556f6e3958300ff941e40c9f97e3dc9774ddd1b3434c475d73dd354bbed3" },
{ url = "https://mirrors.aliyun.com/pypi/packages/1a/71/1d9574d6a2fa20ab60eaa55c7467f5aa20cbc770f341a05f09c0876f59e2/rpds_py-2026.5.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ef1013a8625c74043210190b246f5b1551e09757c1f356c6e4160ef96c5bc081" },
{ url = "https://mirrors.aliyun.com/pypi/packages/0c/9a/37e99f4915a80aa71670263c1267f7ae0af95f53a3f61e6c3bdc016d4515/rpds_py-2026.5.1-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:cc68e231a77a5f0d774ae278a1f8e55c0456501820847c1e4efb3829f3441df6" },
{ url = "https://mirrors.aliyun.com/pypi/packages/a8/ff/6e73f74b89d2e0715e0fc86b7dde893f9a61ae2f9b256ff3bdfe41ac4e94/rpds_py-2026.5.1-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9baffb505aff33acc69b422a19f77806680f3c8632227d79f48de8a810d1c2c5" },
{ url = "https://mirrors.aliyun.com/pypi/packages/ea/e0/425faba25f59d74d4638b267f7c7a80e8649d2ef4db10a19b0c4a71e6e6f/rpds_py-2026.5.1-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b8d2f912928d426e8cfa396f7f3f8d29a59e6689c86dcca3c420730c1096322b" },
{ url = "https://mirrors.aliyun.com/pypi/packages/c6/76/7a41960e3fddae47fab43a28684d5da981401dffd88253de0944148654cb/rpds_py-2026.5.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90f628283be835db980c941767d41c9a27b5239e54ba0a9c1335247e82406964" },
{ url = "https://mirrors.aliyun.com/pypi/packages/27/60/5f38dc70824fc6951b51d35377e577a3a3a4c81a6769cc5a2de25ebe0ad1/rpds_py-2026.5.1-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:1ebb2f0ab7e16132995a72de805170e0203df0c3dd22e1ef1cd1fdd90bd7a131" },
{ url = "https://mirrors.aliyun.com/pypi/packages/60/1a/d60a38caa1505f4b9483c3fbbde12c94e1079154f4f401a6da96f7e77621/rpds_py-2026.5.1-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f3df3d16ded76f1f8c9cdebd0e1ea55fdf4c23b812de189814da7cf229c22a81" },
{ url = "https://mirrors.aliyun.com/pypi/packages/87/ff/602fd3f174d6425f0bce05ad0dfbec0e96b38d0f7d08a79af5aa20083885/rpds_py-2026.5.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:9af8905b8f854990e40d5206aa5ac58d9b0fe0b7f351ff2bb086c20f6c8c6a47" },
{ url = "https://mirrors.aliyun.com/pypi/packages/b8/c1/1be13327acdbead3eca1fde03b6a34dbb011f1e864e217f0d32cc1779a7f/rpds_py-2026.5.1-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:036a36a87fb1cd3b214d11c4b3c4f7d2ddad933625dca1c900b56a057c07740a" },
{ url = "https://mirrors.aliyun.com/pypi/packages/f3/d7/afb49b49d7f2be8b7ba1a9f0977fa5168003437b93086726f066544e8351/rpds_py-2026.5.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:62ae3853454fe9ef283a03c96c2d835d39e84b14643a9d62c82ef0fb87d702ca" },
{ url = "https://mirrors.aliyun.com/pypi/packages/25/d1/dbef8c1f8a10f07beb62b5f054e20099fd9924b3ec001b8f0b6ac7813a85/rpds_py-2026.5.1-cp314-cp314t-win32.whl", hash = "sha256:6c3d771a46ec18b12af06ce36243a9a80b07a5d0515236332d90863ca8bb326a" },
{ url = "https://mirrors.aliyun.com/pypi/packages/2a/72/bfa4e61ab8e7dc1c8adf397e05e6cbdd4239357bd72b248d3de662f23915/rpds_py-2026.5.1-cp314-cp314t-win_amd64.whl", hash = "sha256:c93c629be4636cf54337bd5f06c104d55e42ced54d681f6fe21ae510a65116f6" },
{ url = "https://mirrors.aliyun.com/pypi/packages/27/3a/7b5da92b640f67b6717ccafc83cdd06bfa7ff2395c3685c68922bb54d703/rpds_py-2026.5.1-cp315-cp315-macosx_10_12_x86_64.whl", hash = "sha256:3574b55c604b8f75dacb007136508bbc0db406e626301778096a133327e7f2fb" },
{ url = "https://mirrors.aliyun.com/pypi/packages/d7/8a/2aafd7ad355a1bd48ca76e2262b74b15e6432b5a1efe150efd4d779cd55d/rpds_py-2026.5.1-cp315-cp315-macosx_11_0_arm64.whl", hash = "sha256:94068eb3ae6d43f5a786b7db96a406a34e6d5c24489feef32fd6e8946ea7b291" },
{ url = "https://mirrors.aliyun.com/pypi/packages/f7/7d/6c9523c1abbe840a1b7fba3c516d48e1d3487cc80fea4366c4071cf56784/rpds_py-2026.5.1-cp315-cp315-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3a5b10e8ce894825f380a8f1b6444cf73c294dfea62afbb2d13e3a9e630cec1" },
{ url = "https://mirrors.aliyun.com/pypi/packages/5a/5d/0b7b03fb1dc509321f01de3149784ab773e34c8573022029af8076afcb9c/rpds_py-2026.5.1-cp315-cp315-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fc09f82e63d4bcd58149572f857a431bae851dc747e313c3b5bdf7abb907fda8" },
{ url = "https://mirrors.aliyun.com/pypi/packages/d7/e2/8ef6012999ebf1cb1c22f876d9ce5e63d960fd4631d2af3202d3f480aa25/rpds_py-2026.5.1-cp315-cp315-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e10464d17df3b582745c25cec695cb9558bca2cb6ddb631aee1787fc72c767b2" },
{ url = "https://mirrors.aliyun.com/pypi/packages/80/af/1eeb029bec67582c226b7809172207cd005073af4ebd906e65ff494f4983/rpds_py-2026.5.1-cp315-cp315-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ba05adbf15d994c38ec0b7ab32e858e5110c21e9009a00a86545fd220f84e038" },
{ url = "https://mirrors.aliyun.com/pypi/packages/18/23/ffbe10711c4d766c1cab0557d6906c074f795814863c67b351355d29354a/rpds_py-2026.5.1-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77c004fdc7b891967106f78ddfd7b076bfe6813c6139c6fff6aed3bcaa960b26" },
{ url = "https://mirrors.aliyun.com/pypi/packages/bd/3a/30ba4a6ad457e5b070c18d742a33fb77d8d922b565cc881f8a5313d63bfe/rpds_py-2026.5.1-cp315-cp315-manylinux_2_31_riscv64.whl", hash = "sha256:83bcf894486c9d78dd290d3c0124ff6dd8875d3025e2090a8ec49fcc37c55fdd" },
{ url = "https://mirrors.aliyun.com/pypi/packages/d3/69/62e242b53ce39c0814bd24e1a6e6eba6c92be716277745f317f9540a2e7b/rpds_py-2026.5.1-cp315-cp315-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c3df104083952a0e0c6f10de33e440eabe98fb6317d23e1a58c68f6df08d01b9" },
{ url = "https://mirrors.aliyun.com/pypi/packages/38/c1/a770b9c186928a1ed0f7e6d7ae50e7f3950ed23e3f9e366dbc8e38cb55de/rpds_py-2026.5.1-cp315-cp315-musllinux_1_2_aarch64.whl", hash = "sha256:980450826cf22e133c57e0835070bdd0dd3f73b9b708c3ce223def2cb9469e14" },
{ url = "https://mirrors.aliyun.com/pypi/packages/21/7c/68e8579b95375b70d2a963103c42e705856cdb98569258bd807f4423891c/rpds_py-2026.5.1-cp315-cp315-musllinux_1_2_i686.whl", hash = "sha256:205dde846f24332ab0c1188699a043b8d165b79bb84529ce272c45048ff6be01" },
{ url = "https://mirrors.aliyun.com/pypi/packages/70/a1/a6135aed5730ff03ab957182259987ac11e55fb392a28dc6f0592048a280/rpds_py-2026.5.1-cp315-cp315-musllinux_1_2_x86_64.whl", hash = "sha256:3966b82dd563176396df030f3dd52a6e54cb69b718e95e78bd555ed3d1e0185d" },
{ url = "https://mirrors.aliyun.com/pypi/packages/09/6e/f24201a76a84e6c49d0bdfdfcb735210e21701e9b21c5bfc0ba497dd62f6/rpds_py-2026.5.1-cp315-cp315-win32.whl", hash = "sha256:7818f8d0a415be74d2be3590b0a1c1f463a642f4d0217e7d10602dceef5b79aa" },
{ url = "https://mirrors.aliyun.com/pypi/packages/9e/e4/966bc240bb0485fc265278f6de44d05834bf0b3618886e0b22e33d54c49a/rpds_py-2026.5.1-cp315-cp315-win_amd64.whl", hash = "sha256:b3cc20c0d800af78fd0fac68086e28c1856cec51ea528bb81ea851aa40d39325" },
{ url = "https://mirrors.aliyun.com/pypi/packages/5c/5c/a15a59269cd5e74472734516c73795c15eccfc841b3d4b0228c3f53f19d0/rpds_py-2026.5.1-cp315-cp315-win_arm64.whl", hash = "sha256:3609e9939a8a76cd904cf98a3f1f13b5dc7e150adeaee89e0ea09652ea213e16" },
{ url = "https://mirrors.aliyun.com/pypi/packages/e0/22/135ce03804e179a71ceb13be095deda4a279bc88f7a6b8fa161c5ad44e12/rpds_py-2026.5.1-cp315-cp315t-macosx_10_12_x86_64.whl", hash = "sha256:5d333a7127d4b307601ac37792bee01bb95c867cbfacf21b6375b804d6bbd723" },
{ url = "https://mirrors.aliyun.com/pypi/packages/3b/5f/f1f6d2652eb9d848f6eb369d8db83a2da6249bb49ad2c2a48f45d54538d3/rpds_py-2026.5.1-cp315-cp315t-macosx_11_0_arm64.whl", hash = "sha256:b5f077b44a4f7808520f66dae234988d867deb9aed9be5da057ce9ba831b2a41" },
{ url = "https://mirrors.aliyun.com/pypi/packages/88/66/b74182775691ea2290c99e52ac8d5db844e56fbec90ce421f107658c8314/rpds_py-2026.5.1-cp315-cp315t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55d8f9b7b78c9538fc9e04e82ec0e888ff0c3cffcfad152c77e57cd09351a98a" },
{ url = "https://mirrors.aliyun.com/pypi/packages/ff/8f/15e5a61d9f0a43902d36561d4f07cae6ae9f4716be825159fd72717f33af/rpds_py-2026.5.1-cp315-cp315t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e3a8ae58895ac107ed934a6bf51e5846f95c53b9b940c2c6d310838fd5846358" },
{ url = "https://mirrors.aliyun.com/pypi/packages/02/c3/f859b12763a80540cdf2af0f15b19904cf756a71d7bdd3f82ff3e5b1bbf9/rpds_py-2026.5.1-cp315-cp315t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0957cf3c2b8632ec7aaebffebea8005b353cc2a237b6e2ae3c2cac0820704cfb" },
{ url = "https://mirrors.aliyun.com/pypi/packages/1c/c7/ff27c2ac8411d30b03b1829fd88cae8dad1a4d0da48dd25e57c4038042e6/rpds_py-2026.5.1-cp315-cp315t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c396c1304de421050b3681ea70f371874b54d41b0151e96109758144c231e30b" },
{ url = "https://mirrors.aliyun.com/pypi/packages/6e/67/fe92ee32a6cc05c77228a2f8b1762e7124f386ec20ff83d0757b762d58d0/rpds_py-2026.5.1-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aad1bff7f666b9598e573815affd666aac6a13a585dde336f843e33350c7fadc" },
{ url = "https://mirrors.aliyun.com/pypi/packages/f8/91/b4d6685c27aba55bd82f25b278be8237038117d05f9659a6213ad3408130/rpds_py-2026.5.1-cp315-cp315t-manylinux_2_31_riscv64.whl", hash = "sha256:656a042550878f12d45752452d47094b7cfe5ad1e9d7b87b5a22ad3ae5ff8015" },
{ url = "https://mirrors.aliyun.com/pypi/packages/bd/79/2c1d832a53c8e0f8e98fc970ec257b950fecd4f62be2ab7182b500a0cbc8/rpds_py-2026.5.1-cp315-cp315t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:73c4bd4f70294737b5206a3e8e30ccadbf8a60301831c8ea23eec5dbeea1ecfa" },
{ url = "https://mirrors.aliyun.com/pypi/packages/78/c4/c98117b03c6a8581ab2c2dfccfe9a5ad82bd8128a3c28b46a6ad2d97c393/rpds_py-2026.5.1-cp315-cp315t-musllinux_1_2_aarch64.whl", hash = "sha256:43bca78665423cabae77146f2fe7ce55272b6c8d55d82cca83effd42c7e13972" },
{ url = "https://mirrors.aliyun.com/pypi/packages/3b/c1/bc479ca069200af730881b1bd525e3114b2b391a351509fcb1b772f28086/rpds_py-2026.5.1-cp315-cp315t-musllinux_1_2_i686.whl", hash = "sha256:42d0f20e85e549c870749d0e247f0c10d318a45b7e9676d575d2dcb04a1b2e66" },
{ url = "https://mirrors.aliyun.com/pypi/packages/77/65/38ab2f90df44c2febfb63cc10ced40763d9b4bc94d173e734528663fe7f5/rpds_py-2026.5.1-cp315-cp315t-musllinux_1_2_x86_64.whl", hash = "sha256:b1be5c35683684d5331b93600c210e8367c254683d8a6df6bd21bd2da3a334fb" },
{ url = "https://mirrors.aliyun.com/pypi/packages/15/2d/ce1f605fe036aadd460e5822e578c6c7ec3a860936cca37d6e0f299daa77/rpds_py-2026.5.1-cp315-cp315t-win32.whl", hash = "sha256:75808f6c38ce7749bb68cc2770161aae5045e6c6f6781a9782e74b93304399df" },
{ url = "https://mirrors.aliyun.com/pypi/packages/79/cb/966040123eb102371559746908ef2c9471f4d43e17ec9a645a2258dab64b/rpds_py-2026.5.1-cp315-cp315t-win_amd64.whl", hash = "sha256:90bd6630002a1c7f09e7843dd79f0d24f3d2897cc25a753480917865d14f15b3" },
]
[[package]]
name = "sse-starlette"
version = "3.4.4"
source = { registry = "https://mirrors.aliyun.com/pypi/simple/" }
dependencies = [
{ name = "anyio" },
{ name = "starlette" },
]
sdist = { url = "https://mirrors.aliyun.com/pypi/packages/f7/2b/58abc2d1fd397e7dde08e947e05c884d8ef2f78d5e2588c17a12d42d6994/sse_starlette-3.4.4.tar.gz", hash = "sha256:07e0fa0460138baf25cdd5fb28683472c3995dc1642225191b3832d62526bcb0" }
wheels = [
{ url = "https://mirrors.aliyun.com/pypi/packages/dc/67/805710444ea8cc75fbf70b920ed431a560c4bf9c57f7d5a3117213189399/sse_starlette-3.4.4-py3-none-any.whl", hash = "sha256:3f4dd50d8aed2771a091f3a83000323fc3844541c16b4fe585ae2420cc6df973" },
]
[[package]]
name = "starlette"
version = "1.3.1"
source = { registry = "https://mirrors.aliyun.com/pypi/simple/" }
dependencies = [
{ name = "anyio" },
{ name = "typing-extensions", marker = "python_full_version < '3.13'" },
]
sdist = { url = "https://mirrors.aliyun.com/pypi/packages/eb/e3/7c1dc7381d9f8ab7d854328ebfa884e62cb3f3d8549ddfd37c7814f42afa/starlette-1.3.1.tar.gz", hash = "sha256:05d0213193f2fbaae60e2ecb593b4add4262ad4e46536b54abe36f11a71724e0" }
wheels = [
{ url = "https://mirrors.aliyun.com/pypi/packages/ec/bb/2799cc2ede3ed41131f8975621e7213dfc7ef4acbbaadfa440f32500c370/starlette-1.3.1-py3-none-any.whl", hash = "sha256:c7372aae11c3c3f26a42df7bd626cec2f47d03483d261d369516a615a53714c6" },
]
[[package]]
name = "typing-extensions"
version = "4.15.0"
source = { registry = "https://mirrors.aliyun.com/pypi/simple/" }
sdist = { url = "https://mirrors.aliyun.com/pypi/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466" }
wheels = [
{ url = "https://mirrors.aliyun.com/pypi/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548" },
]
[[package]]
name = "typing-inspection"
version = "0.4.2"
source = { registry = "https://mirrors.aliyun.com/pypi/simple/" }
dependencies = [
{ name = "typing-extensions" },
]
sdist = { url = "https://mirrors.aliyun.com/pypi/packages/55/e3/70399cb7dd41c10ac53367ae42139cf4b1ca5f36bb3dc6c9d33acdb43655/typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464" }
wheels = [
{ url = "https://mirrors.aliyun.com/pypi/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7" },
]
[[package]]
name = "uvicorn"
version = "0.49.0"
source = { registry = "https://mirrors.aliyun.com/pypi/simple/" }
dependencies = [
{ name = "click" },
{ name = "h11" },
]
sdist = { url = "https://mirrors.aliyun.com/pypi/packages/c4/1f/fa18009dea8469069cca78a4e877a008ab78f08b064bfc9ab891579077ff/uvicorn-0.49.0.tar.gz", hash = "sha256:ebf4271aa580d9de97f93192d4595176df6e91f9aae919ca73e4fc07df1e66a3" }
wheels = [
{ url = "https://mirrors.aliyun.com/pypi/packages/88/fa/e1388bbcf24ef3274f45c0c1c7b501fd14971037c1b6ee23610553307497/uvicorn-0.49.0-py3-none-any.whl", hash = "sha256:ba3d14c3ee7e41c6c654c46c9eb489d33213cdd30aa1696eab1374337c13f68f" },
]

@ -0,0 +1,76 @@
---
name: human-system-optimization
description: Use when answering questions, teaching concepts, or drafting habit plans from the HumanSystemOptimization daily health practice knowledge base.
---
# Human System Optimization
Use this skill to help an agent answer questions and draft conservative life plans from this repository's health habit tutorial.
## Source Of Truth
Read these local artifacts before answering:
1. `references/index.json` for machine-readable modules, practices, cautions, references, and graph data.
2. `references/modules/*.md` for chapter-level explanations.
3. `README.md` when the user asks for original wording or full context.
4. `imgs/*.png` when answering about long-term diet, workout plans, longevity drugs, or cell reprogramming visuals.
Optional MCP access:
```bash
cd hso && uv run hso-mcp
```
The MCP server exposes:
- `list_modules`
- `search_knowledge`
- `get_module`
- `build_life_plan`
- `get_graph`
## Answering Rules
- Start from low-risk fundamentals: sleep, morning light, night light reduction, movement, reduced sugar, stable eating window, and focused work blocks.
- Preserve cautions. If a module has `cautions`, include relevant ones when giving advice.
- Do not present drugs, supplements, long fasting, or anti-aging interventions as routine recommendations.
- State that the knowledge base is for learning and habit design, not medical diagnosis or treatment.
- For medical conditions, abnormal lab values, pregnancy, minors, eating disorders, psychiatric concerns, chronic disease, or medication use, advise consultation with a qualified clinician.
## Planning Workflow
When drafting a plan:
1. Identify the user's focus: `sleep`, `diet`, `mindset_dopamine`, `learning_focus`, `brain_health`, `longevity`, `personal_practice`, or `general`.
2. Retrieve the module with MCP `get_module` or from `references/index.json`.
3. Select at most 3 actions for the first week.
4. Add tracking metrics from `tracking_metrics`.
5. Add a weekly review checkpoint.
6. Include relevant cautions and medical boundary text.
## Teaching Workflow
When helping the user absorb the material:
1. Explain the mechanism in plain language.
2. Give one concrete daily action.
3. Explain why the action maps to the mechanism.
4. Name one common failure mode.
5. Offer a short review question or self-check.
## Module Map
- `sleep`: sleep, circadian rhythm, morning light, night light, caffeine, NSDR.
- `diet`: intermittent fasting, eating windows, blood glucose, gut microbiome, fermented foods.
- `mindset_dopamine`: motivation, reward, dopamine baseline, addiction, growth mindset.
- `learning_focus`: neuroplasticity, errors, physiological sigh, attention, screen time.
- `brain_health`: aerobic exercise, Omega-3 EPA, choline, creatine, electrolytes.
- `longevity`: diet, exercise, monitoring, anti-aging drug controversy, cell reprogramming.
- `personal_practice`: author's practical routine and tool-based habit training.
## Safety Boundary
Use this exact boundary when the user asks for medical or high-risk advice:
> This repository supports health habit learning and planning. It is not a medical diagnosis, prescription, or treatment plan. For medications, supplements, prolonged fasting, chronic illness, abnormal lab values, pregnancy, minors, psychiatric concerns, or eating disorders, involve a qualified clinician.

@ -0,0 +1,38 @@
window.HSO_GRAPH = {
nodes: [
{ id: "sleep", label: "睡眠", type: "module", detail: "健康、学习、代谢和情绪的基础。" },
{ id: "diet", label: "饮食/禁食", type: "module", detail: "进食窗口、血糖状态、肠道菌群和饮食结构。" },
{ id: "dopamine", label: "多巴胺", type: "mechanism", detail: "动机、奖励、快乐阈值和专注协调。" },
{ id: "focus", label: "学习专注", type: "module", detail: "犯错信号、神经可塑性、休息和注意力环境。" },
{ id: "brain", label: "大脑健康", type: "module", detail: "有氧运动、Omega-3、胆碱、电解质。" },
{ id: "longevity", label: "长寿", type: "module", detail: "饮食、运动、监测、药物争议和细胞重编程。" },
{ id: "practice", label: "个人实践", type: "module", detail: "把知识转成低摩擦日常习惯。" },
{ id: "light", label: "晨间光照", type: "practice", detail: "起床后户外 2-10 分钟。" },
{ id: "night_light", label: "夜间避光", type: "practice", detail: "尤其避免 23:00-04:00 强光。" },
{ id: "fasting", label: "进食窗口", type: "practice", detail: "基础版睡前 2-3 小时不吃,高阶 8 小时窗口。" },
{ id: "fermented", label: "发酵食品", type: "practice", detail: "每天两次自然发酵食品,支持菌群多样性。" },
{ id: "exercise", label: "有氧+力量", type: "practice", detail: "每周约 150-180 分钟有氧,搭配力量训练。" },
{ id: "nsdr", label: "NSDR/冥想", type: "practice", detail: "午休、Yoga Nidra、生理叹息和深度休息。" },
{ id: "caution_drugs", label: "药物/补剂争议", type: "risk", detail: "NMN、白藜芦醇、二甲双胍、聪明药等需谨慎。" },
{ id: "medical", label: "医学边界", type: "risk", detail: "药物、慢病、异常指标、极端禁食需要专业意见。" }
],
edges: [
{ source: "light", target: "sleep", relation: "校准昼夜节律" },
{ source: "night_light", target: "sleep", relation: "降低节律扰动" },
{ source: "sleep", target: "dopamine", relation: "夜间光照影响后续多巴胺状态" },
{ source: "dopamine", target: "focus", relation: "支持动机和专注网络协调" },
{ source: "sleep", target: "focus", relation: "睡眠中巩固学习" },
{ source: "nsdr", target: "focus", relation: "降低压力并支持学习恢复" },
{ source: "fasting", target: "diet", relation: "控制进食时间和血糖状态" },
{ source: "fermented", target: "diet", relation: "提升肠道菌群多样性" },
{ source: "exercise", target: "brain", relation: "有氧支持大脑供能" },
{ source: "exercise", target: "longevity", relation: "心肺和肌肉能力支持延寿" },
{ source: "diet", target: "longevity", relation: "饮食结构和禁食影响衰老机制" },
{ source: "practice", target: "sleep", relation: "晨光和夜间避光可训练" },
{ source: "practice", target: "diet", relation: "进食窗口可训练" },
{ source: "practice", target: "focus", relation: "专注块和阅读可训练" },
{ source: "caution_drugs", target: "longevity", relation: "抗衰药物证据争议" },
{ source: "medical", target: "caution_drugs", relation: "涉及药物和异常指标需专业意见" },
{ source: "medical", target: "fasting", relation: "极端禁食需专业评估" }
]
};

@ -0,0 +1,281 @@
{
"version": "2026-06-20",
"source": "README.md",
"medical_boundary": "本知识库用于健康习惯学习、复盘和生活计划辅助,不构成医疗诊断、处方或治疗建议。涉及药物、补充剂、长时间禁食、慢病、孕产、精神健康、未成年人或异常指标时,应咨询医生或合格专业人员。",
"tracking_metrics": [
"睡眠时长、睡眠质量、入睡时间和夜间光照暴露",
"进食窗口、糖和深加工食品摄入、发酵食品和植物性食物摄入",
"每周有氧分钟数、力量训练次数、运动后睡眠影响",
"专注时段、手机使用时长、学习后的休息和复盘",
"体重、腰围、血糖 HbA1c、CRP、LDL 等需要专业解读的指标"
],
"modules": [
{
"id": "sleep",
"title": "睡眠与昼夜节律",
"summary": "睡眠是健康、免疫、代谢、心理状态、专注和学习的基础。README 将光照、体温、咖啡因、午睡和夜间行为作为调节昼夜节律的主要杠杆。",
"priority": 1,
"chapter_path": "references/modules/01_sleep.md",
"keywords": ["睡眠", "光照", "皮质醇", "褪黑素", "体温", "咖啡因", "Yoga Nidra"],
"mechanisms": [
"早晨光照通过黑视素神经节细胞校准内在生物钟,并影响皮质醇、肾上腺素和褪黑素倒计时。",
"夜间强光会让身体误判为白天,扰乱昼夜节律,并可能影响后续多巴胺、情绪、专注和代谢。",
"体温上升倾向于推动清醒,体温下降有利于进入睡眠;运动、冷水澡和环境温度会改变这个节律。"
],
"practices": [
"起床后到户外接触阳光 2-10 分钟;阴天可适当延长,隔窗效果显著下降。",
"晚上减少光源,尤其避免 23:00 到次日 04:00 的强光和手机光。",
"傍晚观察落日,帮助身体获得夜间到来的时间信号。",
"中午后咖啡因是否影响睡眠需要个人测试;默认应谨慎。",
"可用午睡、Yoga Nidra、冥想或自我催眠作为非睡眠深度休息。"
],
"cautions": [
"不建议把褪黑素作为常规入睡工具README 提到剂量监管和情绪风险。",
"镁、芹黄素、牛磺酸等补充剂应结合自身情况和专业意见。",
"晚间高强度运动可能推迟体温下降并影响入睡。"
],
"assets": [],
"references": [
{"title": "Huberman Lab", "url": "https://hubermanlab.com/", "role": "primary inspiration"},
{"title": "Yoga Nidra example", "url": "https://youtu.be/M0u9GST_j3s", "role": "practice example"},
{"title": "Examine.com", "url": "https://examine.com/", "role": "supplement lookup"}
]
},
{
"id": "diet",
"title": "饮食、禁食与肠道健康",
"summary": "饮食模块强调何时进食与吃什么同等重要:间歇性禁食影响血糖、修复和代谢状态,发酵食物和植物性饮食帮助肠道菌群与炎症管理。",
"priority": 2,
"chapter_path": "references/modules/02_diet.md",
"keywords": ["fasting", "间歇性禁食", "进食窗口", "血糖", "肠道菌群", "发酵食品", "地中海饮食"],
"mechanisms": [
"进食状态偏向血糖较高、细胞复制与成长;禁食状态偏向修复、清理和自噬。",
"稳定进食窗口与睡眠周期对齐,避免类似频繁倒时差的代谢扰动。",
"肠道菌群多样性与消化、免疫和炎症相关;抗生素会显著破坏菌群生态。"
],
"practices": [
"基础禁食:起床后至少 1 小时不吃,睡前 2-3 小时不吃。",
"高阶禁食:逐步尝试 8 小时进食窗口,如 10-18 点或 12-20 点。",
"禁食期间可喝水、茶、黑咖啡;糖会中断禁食。",
"晚饭后轻量散步帮助血糖清理。",
"每天两次摄入自然发酵食品如无糖酸奶、kefir、康普茶、泡菜、纳豆。",
"日常饮食以植物类食物为主,减少深度加工食品和糖。"
],
"cautions": [
"长时间禁食、胆结石风险、糖尿病、低血糖、孕产或进食障碍相关情况应先咨询医生。",
"益生菌和益生元效果并非总是可靠,产品监管有限。",
"生酮饮食长期实践可能存在风险README 更推荐可持续的地中海饮食结构。"
],
"assets": [],
"references": [
{"title": "Christopher Gardner diet comparison", "url": "https://youtu.be/sJLK3sVexIk", "role": "diet comparison"},
{"title": "中国居民膳食指南介绍", "url": "https://sspai.com/post/72984", "role": "localized dietary reference"},
{"title": "Bloch fasting gallbladder paper", "url": "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC1419405/", "role": "risk discussion"},
{"title": "Sichieri overnight fasting paper", "url": "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC1405175/", "role": "risk discussion"}
]
},
{
"id": "mindset_dopamine",
"title": "心态、动力与多巴胺",
"summary": "本模块把多巴胺视为动机、欲望、快乐和坚持的核心调节系统,重点是避免过度叠加刺激,建立随机奖励和成长型思维。",
"priority": 3,
"chapter_path": "references/modules/03_mindset_dopamine.md",
"keywords": ["多巴胺", "动力", "成长型思维", "奖励", "冷水浴", "上瘾"],
"mechanisms": [
"多巴胺的相对变化量比绝对水平更影响主观快乐;持续高刺激会抬高快乐阈值。",
"多巴胺储备有限,工作、游戏、社交、运动等活动会竞争同一套奖励系统。",
"刺激叠加会形成更高峰值,也可能带来更长低谷,削弱单一活动本身的吸引力。"
],
"practices": [
"对常规活动随机化奖励叠加因素,例如有时运动听音乐、有时不听。",
"把努力过程本身定义为奖励,用成长型思维降低对外部奖赏的依赖。",
"通过健康社交、运动、稳定睡眠等方式支持多巴胺系统。",
"必要时用冷水浴等行动工具,但控制频率并注意安全。"
],
"cautions": [
"尼古丁、可卡因、安非他命和滥用聪明药会强烈扰动奖励系统并有成瘾风险。",
"L-Tyrosine、PEA、Huperzine A、Modafinil、Alpha-GPC 等不应持续随意使用。",
"夜间光照和褪黑素可能降低多巴胺相关状态,影响情绪和专注。"
],
"assets": [],
"references": [
{"title": "Controlling Your Dopamine for Motivation, Focus and Satisfaction", "url": "https://hubermanlab.com/controlling-your-dopamine-for-motivation-focus-and-satisfaction/", "role": "primary topic source"}
]
},
{
"id": "learning_focus",
"title": "学习、专注与神经可塑性",
"summary": "学习被描述为神经元重新连接,需要足够专注和犯错信号。成年人可通过小幅增量学习、前庭系统新颖刺激、休息和注意力环境设计来提升学习效率。",
"priority": 4,
"chapter_path": "references/modules/04_learning_focus.md",
"keywords": ["学习", "专注", "神经可塑性", "犯错", "生理叹息", "冥想", "手机使用"],
"mechanisms": [
"学习需要神经可塑性状态,犯错会释放肾上腺素、乙酰胆碱和多巴胺来促进调整。",
"神经元重连接主要在休息和睡眠中巩固。",
"Default network 与 Task networks 需要像跷跷板一样协调;多巴胺有助于专注网络协调。"
],
"practices": [
"把学习拆成小幅增量,尤其适合 25 岁后神经可塑性下降的成年人。",
"用倒立、瑜伽、滑板等新颖平衡体验触发前庭系统,但必须注意安全。",
"压力过高时使用生理叹息:连续两次吸气后长呼气。",
"90 分钟学习后进行约 20 分钟非睡眠深度休息。",
"限制视野干扰、提高显示器位置,减少 context switch。",
"控制手机时长README 引用青少年少于 60 分钟、成年人少于 120 分钟的研究建议。"
],
"cautions": [
"心流更适合执行已掌握任务,不等同于学习新技能的最佳状态。",
"聪明药可能带来成瘾、代谢和长期学习效果风险。",
"前庭刺激、倒立和冷水等行动工具有安全风险。"
],
"assets": [],
"references": [
{"title": "Rich Roll interview with Andrew Huberman", "url": "https://youtu.be/2ekdc6jCu2E", "role": "background source"}
]
},
{
"id": "brain_health",
"title": "大脑健康与营养支持",
"summary": "大脑健康模块强调睡眠、有氧运动、电解质和关键营养素。README 把 Omega-3 EPA、磷脂酰丝氨酸、胆碱等列为相对重要的支持项。",
"priority": 5,
"chapter_path": "references/modules/05_brain_health.md",
"keywords": ["大脑健康", "有氧运动", "Omega-3", "EPA", "胆碱", "肌酸", "电解质"],
"mechanisms": [
"有氧运动提升心肺功能,支持大脑供能。",
"Omega-3 EPA 是神经细胞重要组成部分,并与情绪和注意力支持相关。",
"水、钠、钾、镁等电解质是神经元信号传递的基础。"
],
"practices": [
"每周 150-180 分钟有氧训练。",
"通过鱼、牡蛎、奇亚籽、核桃、大豆或鱼油补充 Omega-3 EPA。",
"通过鸡蛋尤其蛋黄、土豆、坚果、水果或 Alpha-GPC 获取胆碱来源。",
"不吃肉的人可关注肌酸摄入。",
"用心理暗示或与喜欢的食物搭配,逐步增加对健康食物的接受度。"
],
"cautions": [
"补充剂剂量和适用性需结合饮食、疾病、药物和专业意见。",
"Alpha-GPC、肌酸等补充剂不应替代睡眠、运动和饮食基础。",
"个体对食物和补剂反应不同,应记录并复盘。"
],
"assets": [],
"references": [
{"title": "Huberman supplements page", "url": "https://www.thorne.com/u/huberman", "role": "supplement example"}
]
},
{
"id": "longevity",
"title": "长寿、抗衰老与风险边界",
"summary": "长寿模块来自 Huberman 与 David Sinclair 相关访谈涵盖衰老机制、fasting、饮食、运动、药物、细胞重编程和监测。README 已在 2025-06-17 更新提醒 Sinclair 及白藜芦醇、NMN 等证据争议,应谨慎采纳。",
"priority": 6,
"chapter_path": "references/modules/06_longevity.md",
"keywords": ["长寿", "Sinclair", "fasting", "mTOR", "sirtuin", "NMN", "白藜芦醇", "二甲双胍", "Yamanaka Factors"],
"mechanisms": [
"README 将衰老描述为 DNA 信息和表观基因组控制信息损失,其中表观基因组占较大权重。",
"低血糖状态可能抑制 mTOR、激活 sirtuin、提高胰岛素敏感度并触发修复。",
"现代长寿研究更关注触发身体自身的抗衰老机制,而不是简单外源抗氧化。"
],
"practices": [
"长寿饮食倾向植物类蛋白和脂肪,减少精制碳水、糖、动物脂肪和动物蛋白。",
"每周约 3 小时有氧,搭配 2-3 次力量训练。",
"跟踪 HbA1c、CRP、LDL 等指标,并由专业人员解释。",
"避免吸烟、肥胖和不必要的 X 光暴露。",
"把药物和补充剂视为高风险候选项,不作为默认生活计划。"
],
"cautions": [
"Sinclair 相关主张、白藜芦醇、NMN、NR、二甲双胍等抗衰老方案存在较大争议。",
"药物研究多处于人体实验早期或适应症外讨论,不能自行处方。",
"长期或极端禁食可能增加胆结石、低血糖或其他风险。",
"长寿指标和医学范围需要个性化,不能只看通用参考区间。"
],
"assets": [
"imgs/diet_for_longevity.png",
"imgs/workout_plan.png",
"imgs/drugs_for_longevity.png",
"imgs/cell_reprogramming.png"
],
"references": [
{"title": "Nutrition, longevity and disease", "url": "https://www.cell.com/cell/pdf/S0092-8674(22)00398-1.pdf", "role": "diet and longevity paper"},
{"title": "The quest to slow ageing through drug discovery", "url": "https://www.nature.com/articles/s41573-020-0067-7", "role": "drug discovery overview"},
{"title": "程序员延寿指南", "url": "https://github.com/geekan/HowToLiveLonger", "role": "external Chinese longevity guide"},
{"title": "Life Biosciences", "url": "https://www.lifebiosciences.com/", "role": "company example"},
{"title": "Altos Labs", "url": "https://altoslabs.com/", "role": "company example"}
]
},
{
"id": "personal_practice",
"title": "个人实践与工具化训练",
"summary": "README 最后把作者实践整理成可训练习惯早晨光照、8 小时进食窗口、EPA 鱼油、专注模式、站立办公、Yoga Nidra、每周运动和 PAI 监控。",
"priority": 7,
"chapter_path": "references/modules/07_personal_practice.md",
"keywords": ["个人实践", "习惯", "PAI", "AG1", "鱼油", "站立办公", "运动"],
"mechanisms": [
"把复杂健康知识转为低摩擦日常动作,更容易形成习惯训练。",
"通过手环、App、阅读时长和专注模式等外部工具降低执行成本。",
"运动、饮食、睡眠、学习互相影响,晚间运动可能改善精神但损害睡眠。"
],
"practices": [
"早晨遛狗或通勤时完成自然光暴露。",
"尝试 8 小时进食窗口,中午偏蔬菜轻食,早上可喝盐水、茶或补剂。",
"优先考虑广泛认可的基础补充剂,如复合维生素和 EPA 鱼油。",
"用专注模式、番茄时钟、升降桌和 Yoga Nidra 支持工作学习。",
"用小米手环 PAI 或类似指标保持每周约 3 次跑步/羽毛球等运动。"
],
"cautions": [
"作者实践不是通用处方,需根据个人健康、家庭、工作和医学条件调整。",
"AG1、白藜芦醇、NMN、二甲双胍等在 README 中均带有性价比或证据争议提醒。",
"下班后 21-22 点运动可能影响睡眠质量,需要权衡。"
],
"assets": [],
"references": [
{"title": "My Circadian Clock App", "url": "https://mycircadianclock.org/", "role": "tracking tool"},
{"title": "Huberman supplement list", "url": "https://fastlifehacks.com/andrew-huberman-supplements-list/", "role": "supplement reference"},
{"title": "养生博主的 23 年总结", "url": "https://zhuanlan.zhihu.com/p/675470252", "role": "update article"},
{"title": "养生博主的 24 年总结", "url": "https://zhuanlan.zhihu.com/p/1896275046068094483", "role": "update article"}
]
}
],
"references": [
{"title": "Huberman Lab", "url": "https://hubermanlab.com/", "role": "primary source collection"},
{"title": "Lex Fridman daily routine article", "url": "https://zhuanlan.zhihu.com/p/371254789", "role": "background"},
{"title": "视频版", "url": "https://www.bilibili.com/video/BV1EW4y1R7yi/", "role": "README video summary"},
{"title": "养生博主的 23 年总结", "url": "https://zhuanlan.zhihu.com/p/675470252", "role": "author update"},
{"title": "养生博主的 24 年总结", "url": "https://zhuanlan.zhihu.com/p/1896275046068094483", "role": "author update"}
],
"graph": {
"nodes": [
{"id": "sleep", "label": "睡眠", "type": "module", "detail": "健康、学习、代谢和情绪的基础。"},
{"id": "diet", "label": "饮食/禁食", "type": "module", "detail": "进食窗口、血糖状态、肠道菌群和饮食结构。"},
{"id": "dopamine", "label": "多巴胺", "type": "mechanism", "detail": "动机、奖励、快乐阈值和专注协调。"},
{"id": "focus", "label": "学习专注", "type": "module", "detail": "犯错信号、神经可塑性、休息和注意力环境。"},
{"id": "brain", "label": "大脑健康", "type": "module", "detail": "有氧运动、Omega-3、胆碱、电解质。"},
{"id": "longevity", "label": "长寿", "type": "module", "detail": "饮食、运动、监测、药物争议和细胞重编程。"},
{"id": "practice", "label": "个人实践", "type": "module", "detail": "把知识转成低摩擦日常习惯。"},
{"id": "light", "label": "晨间光照", "type": "practice", "detail": "起床后户外 2-10 分钟。"},
{"id": "night_light", "label": "夜间避光", "type": "practice", "detail": "尤其避免 23:00-04:00 强光。"},
{"id": "fasting", "label": "进食窗口", "type": "practice", "detail": "基础版睡前 2-3 小时不吃,高阶 8 小时窗口。"},
{"id": "fermented", "label": "发酵食品", "type": "practice", "detail": "每天两次自然发酵食品,支持菌群多样性。"},
{"id": "exercise", "label": "有氧+力量", "type": "practice", "detail": "每周约 150-180 分钟有氧,搭配力量训练。"},
{"id": "nsdr", "label": "NSDR/冥想", "type": "practice", "detail": "午休、Yoga Nidra、生理叹息和深度休息。"},
{"id": "caution_drugs", "label": "药物/补剂争议", "type": "risk", "detail": "NMN、白藜芦醇、二甲双胍、聪明药等需谨慎。"},
{"id": "medical", "label": "医学边界", "type": "risk", "detail": "药物、慢病、异常指标、极端禁食需要专业意见。"}
],
"edges": [
{"source": "light", "target": "sleep", "relation": "校准昼夜节律"},
{"source": "night_light", "target": "sleep", "relation": "降低节律扰动"},
{"source": "sleep", "target": "dopamine", "relation": "夜间光照会影响后续多巴胺状态"},
{"source": "dopamine", "target": "focus", "relation": "支持动机和专注网络协调"},
{"source": "sleep", "target": "focus", "relation": "睡眠中巩固学习"},
{"source": "nsdr", "target": "focus", "relation": "降低压力并支持学习恢复"},
{"source": "fasting", "target": "diet", "relation": "控制进食时间和血糖状态"},
{"source": "fermented", "target": "diet", "relation": "提升肠道菌群多样性"},
{"source": "exercise", "target": "brain", "relation": "有氧支持大脑供能"},
{"source": "exercise", "target": "longevity", "relation": "心肺和肌肉能力支持延寿"},
{"source": "diet", "target": "longevity", "relation": "饮食结构和禁食影响衰老机制"},
{"source": "practice", "target": "sleep", "relation": "晨光和夜间避光可训练"},
{"source": "practice", "target": "diet", "relation": "进食窗口可训练"},
{"source": "practice", "target": "focus", "relation": "专注块和阅读可训练"},
{"source": "caution_drugs", "target": "longevity", "relation": "NMN/白藜芦醇/二甲双胍需谨慎"},
{"source": "medical", "target": "caution_drugs", "relation": "涉及药物和异常指标需专业意见"},
{"source": "medical", "target": "fasting", "relation": "极端禁食需专业评估"}
]
}
}

@ -0,0 +1,29 @@
# 睡眠与昼夜节律
## 定位
睡眠是本仓库健康系统优化的第一优先级。它影响免疫、代谢、心理状态、专注、学习巩固和运动恢复。README 的核心观点是:先把昼夜节律稳定住,再讨论饮食、专注、运动和补充剂。
## 关键机制
- 早晨光照通过黑视素神经节细胞校准生物钟,推动皮质醇和肾上腺素释放,并设定十多个小时后的褪黑素倒计时。
- 夜间强光,尤其 23:00 到次日 04:00 的光照,会让身体误判为白天,影响后续情绪、专注、学习和代谢状态。
- 体温上升偏向清醒,体温下降偏向睡眠。冷水澡、运动、环境温度和智能床垫都可通过体温影响节律。
## 可执行习惯
- 起床后到户外接触阳光 2-10 分钟;隔窗日光效果显著降低。
- 晚上减少强光和手机光,必要时使用低位暗红光或 blue blockers。
- 傍晚看落日,给身体一个夜间即将到来的时间信号。
- 中午后咖啡因是否影响睡眠要个人测试;默认先谨慎。
- 用午睡、Yoga Nidra、冥想或自我催眠替代硬撑。
## 风险边界
- 不把褪黑素作为常规入睡方案README 提到剂量监管和抑郁情绪风险。
- 镁、芹黄素、牛磺酸等补充剂应结合个人状态和专业意见。
- 晚间高强度运动可能推迟体温下降,若影响入睡,需要调整时段或强度。
## 适合 agent 的回答要点
回答睡眠问题时,优先询问作息、晨间光照、夜间光照、咖啡因、运动时间和午休方式。制定计划时,先给低风险零成本动作,再讨论补充剂和设备。

@ -0,0 +1,31 @@
# 饮食、禁食与肠道健康
## 定位
饮食模块强调两件事:何时进食与吃什么同等重要;肠道菌群是消化、免疫和炎症状态的重要调节因素。
## 关键机制
- 进食状态通常血糖较高,身体更偏向细胞复制和成长。
- 禁食状态血糖较低,身体更偏向修复、清理和自噬。
- 稳定进食窗口与睡眠周期对齐,避免类似频繁倒时差的代谢扰动。
- 肠道菌群多样性通常是更健康的信号;抗生素会严重破坏菌群生态。
## 可执行习惯
- 基础版:起床后至少 1 小时不吃,睡前 2-3 小时不吃。
- 高阶版:逐步缩短到 8 小时进食窗口,如 10-18 点或 12-20 点。
- 禁食期间可喝水、茶、黑咖啡;糖会中断禁食。
- 晚饭后散步,帮助血糖清理。
- 每天两次摄入自然发酵食品如无糖酸奶、kefir、康普茶、泡菜、纳豆。
- 日常饮食以植物类食物为主,减少糖和深加工食品。
## 风险边界
- 长时间禁食、糖尿病、低血糖、胆结石、孕产、进食障碍、慢病用药等情况,需要医生或专业营养师参与。
- 益生菌和益生元的效果并不稳定,产品监管有限。
- README 更倾向推荐可持续的地中海饮食结构,而不是长期严格生酮。
## 适合 agent 的回答要点
帮助用户制定饮食计划时,先确认睡眠时段、工作社交约束、运动目标和既往疾病。优先给稳定进食窗口、减少糖、增加发酵食品和植物性食物的低风险建议。

@ -0,0 +1,29 @@
# 心态、动力与多巴胺
## 定位
本模块解释为什么人会有动力、快乐、上瘾、倦怠和放弃。它支撑后续习惯训练:不要只靠意志力,要设计奖励系统。
## 关键机制
- 多巴胺的相对变化量比绝对值更影响快乐感。
- 多巴胺储备有限,工作、游戏、社交、运动和药物刺激会竞争同一套奖励系统。
- 刺激叠加会带来更高峰值,也可能带来更长低谷,并削弱活动本身的吸引力。
- 成长型思维可以把努力过程本身重新标记为奖励。
## 可执行习惯
- 对常规活动随机化奖励叠加因素,例如运动时有时听音乐、有时不听。
- 避免每次学习、运动或工作都叠加咖啡因、音乐、社交、社媒展示等奖励。
- 把“我正在变强”而不是“完成后奖励自己”作为努力时的主叙事。
- 用睡眠、健康社交、运动等基础行为维护奖励系统。
## 风险边界
- 尼古丁、可卡因、安非他命和滥用聪明药存在成瘾和系统扰动风险。
- L-Tyrosine、PEA、Huperzine A、Modafinil、Alpha-GPC 等不应持续随意使用。
- 冷水浴有安全风险,不适合所有人,也不需要高频执行。
## 适合 agent 的回答要点
当用户问自律、拖延、上瘾或动力时,优先从睡眠、刺激叠加、奖励随机化、过程奖励和环境设计分析,不要直接推荐药物或补剂。

@ -0,0 +1,31 @@
# 学习、专注与神经可塑性
## 定位
学习被视为神经元重新连接。专注、犯错、休息和睡眠共同决定学习效率。
## 关键机制
- 犯错信号会释放肾上腺素、乙酰胆碱和多巴胺,使大脑进入可塑性状态。
- 心流适合执行已掌握任务,不等同于学习新东西的最佳状态。
- 休息和睡眠是神经元重连接的重要窗口。
- Default network 与 Task networks 的协调影响专注能力。
## 可执行习惯
- 成年人学习新技能时,把任务拆成小幅增量。
- 使用安全的新颖平衡体验,如初级瑜伽、平衡训练,触发前庭系统的新颖信号。
- 压力过高时使用生理叹息:两次吸气后长呼气。
- 每 90 分钟学习后进行约 20 分钟非睡眠深度休息。
- 限制视野干扰,减少通知和 context switch。
- 控制手机使用时长,避免高频短视频切换损伤注意力。
## 风险边界
- 倒立、滑板、冷水等行动工具有安全门槛。
- 聪明药不应作为长期学习策略。
- 若存在 ADHD、焦虑、抑郁或睡眠障碍应寻求专业评估。
## 适合 agent 的回答要点
制定学习计划时,要包含训练块、休息块、错误反馈、睡眠巩固和环境控制。不要只给时间表,也要设计如何处理挫败感。

@ -0,0 +1,30 @@
# 大脑健康与营养支持
## 定位
大脑健康模块把睡眠、有氧运动、电解质和关键营养素作为基础,不把补充剂放在第一位。
## 关键机制
- 有氧运动提升心肺能力,支持大脑供能。
- Omega-3 EPA 是神经细胞的重要组成部分,也与情绪和注意力支持相关。
- 乙酰胆碱是重要神经调质,影响注意力。
- 水、钠、钾、镁等电解质是神经信号传递基础。
## 可执行习惯
- 每周累计 150-180 分钟有氧训练。
- 通过鱼、牡蛎、奇亚籽、核桃、大豆或鱼油补充 Omega-3 EPA。
- 通过鸡蛋尤其蛋黄、土豆、坚果、水果或 Alpha-GPC 获取胆碱来源。
- 不吃肉的人关注肌酸摄入。
- 通过心理暗示或与喜欢的食物搭配,逐步提高健康食物接受度。
## 风险边界
- 补充剂剂量和适用性取决于饮食、疾病、药物和体检指标。
- Alpha-GPC、肌酸、鱼油等不能替代睡眠、运动和饮食结构。
- 对海鲜、鸡蛋或特定补剂过敏的人需要替代方案。
## 适合 agent 的回答要点
回答大脑健康问题时,先看睡眠、运动和饮食结构,再讨论补剂。补剂建议要带剂量不确定性和专业咨询边界。

@ -0,0 +1,38 @@
# 长寿、抗衰老与风险边界
## 定位
长寿模块覆盖饮食、运动、药物、细胞重编程和监测但它也是本仓库风险最高、争议最多的部分。README 已在 2025-06-17 更新提醒 David Sinclair 及白藜芦醇、NMN 等抗衰产品存在较大争议。
## 关键机制
- README 将衰老描述为 DNA 信息和表观基因组控制信息损失。
- 低血糖状态可能抑制 mTOR、激活 sirtuin提高胰岛素敏感度并触发修复。
- 长寿研究关注触发身体自身抗衰机制,而不是简单依赖外源抗氧化剂。
- 山中因子和细胞重编程属于前沿技术,不是日常可执行习惯。
## 可执行习惯
- 饮食倾向植物类蛋白和脂肪,减少精制碳水、糖、动物脂肪和动物蛋白。
- 每周约 3 小时有氧,搭配 2-3 次力量训练。
- 关注 HbA1c、CRP、LDL 等指标,并由专业人员解释。
- 避免吸烟、肥胖和不必要的 X 光暴露。
- 把药物和补充剂放在高风险候选项,而不是默认计划。
## 图片资产
- `imgs/diet_for_longevity.png`:长寿饮食建议。
- `imgs/workout_plan.png`:力量训练计划。
- `imgs/drugs_for_longevity.png`:长寿药物研究概览。
- `imgs/cell_reprogramming.png`:山中因子与细胞重编程。
## 风险边界
- 白藜芦醇、NMN、NR、二甲双胍等抗衰方案存在证据争议或适应症边界。
- 药物研究多处于人体实验早期或适应症外讨论,不能自行处方。
- 长时间或极端禁食可能增加胆结石、低血糖或其他风险。
- 医学指标需要个性化解释,不能只看通用参考范围。
## 适合 agent 的回答要点
回答长寿问题时,先给睡眠、运动、饮食、戒烟和体检监控等高共识建议。涉及药物、补剂、基因治疗和细胞重编程时必须明确争议和医生边界。

@ -0,0 +1,31 @@
# 个人实践与工具化训练
## 定位
本模块把 README 的理论知识转成作者个人实践:晨间光照、进食窗口、补充剂、专注工具、运动监控和睡眠权衡。它适合作为后续为用户生成生活计划的模板来源。
## 实践清单
- 早晨遛狗或通勤时完成自然光暴露。
- 尝试 8 小时进食窗口,中午偏蔬菜轻食。
- 早上根据情况喝盐水、茶或 AG1 等补剂。
- 基础补充剂优先考虑复合维生素和 EPA 鱼油。
- 工作学习使用专注模式、番茄时钟、升降桌和 Yoga Nidra。
- 每天保持 30 分钟以上阅读或学习。
- 用手环 PAI 等指标维持每周约 3 次跑步、羽毛球或类似运动。
## 关键权衡
- 下班后 21-22 点运动能改善精神状态,但可能影响睡眠。
- 补剂存在证据、价格和适用性差异,不能替代基础习惯。
- 家庭、工作和身体状态会限制理想计划,需要先保证可持续。
## 风险边界
- 作者实践不是通用处方。
- AG1、白藜芦醇、NMN、二甲双胍等在 README 中均带有性价比或证据争议提醒。
- 若生活计划涉及药物、疾病、异常指标或极端饮食,应升级到专业建议。
## 适合 agent 的回答要点
给用户做计划时,优先建立“最小可执行版本”:晨光、固定睡眠窗口、基础禁食、每周运动、低糖和专注块。等用户能稳定执行,再叠加补剂、监测和高级策略。

@ -0,0 +1,7 @@
[
{"title": "Huberman Lab", "url": "https://hubermanlab.com/", "role": "primary source collection"},
{"title": "Controlling Your Dopamine for Motivation, Focus and Satisfaction", "url": "https://hubermanlab.com/controlling-your-dopamine-for-motivation-focus-and-satisfaction/", "role": "dopamine source"},
{"title": "Nutrition, longevity and disease", "url": "https://www.cell.com/cell/pdf/S0092-8674(22)00398-1.pdf", "role": "longevity diet paper"},
{"title": "The quest to slow ageing through drug discovery", "url": "https://www.nature.com/articles/s41573-020-0067-7", "role": "longevity drug overview"},
{"title": "程序员延寿指南", "url": "https://github.com/geekan/HowToLiveLonger", "role": "Chinese longevity reference"}
]

@ -0,0 +1,51 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "HumanSystemOptimization Knowledge Base",
"type": "object",
"required": ["version", "source", "medical_boundary", "modules", "references", "graph"],
"properties": {
"version": {"type": "string"},
"source": {"type": "string"},
"medical_boundary": {"type": "string"},
"tracking_metrics": {"type": "array", "items": {"type": "string"}},
"modules": {
"type": "array",
"items": {
"type": "object",
"required": ["id", "title", "summary", "priority", "chapter_path", "mechanisms", "practices", "cautions", "references"],
"properties": {
"id": {"type": "string"},
"title": {"type": "string"},
"summary": {"type": "string"},
"priority": {"type": "integer"},
"chapter_path": {"type": "string"},
"keywords": {"type": "array", "items": {"type": "string"}},
"mechanisms": {"type": "array", "items": {"type": "string"}},
"practices": {"type": "array", "items": {"type": "string"}},
"cautions": {"type": "array", "items": {"type": "string"}},
"assets": {"type": "array", "items": {"type": "string"}},
"references": {
"type": "array",
"items": {
"type": "object",
"required": ["title", "url", "role"],
"properties": {
"title": {"type": "string"},
"url": {"type": "string"},
"role": {"type": "string"}
}
}
}
}
}
},
"graph": {
"type": "object",
"required": ["nodes", "edges"],
"properties": {
"nodes": {"type": "array"},
"edges": {"type": "array"}
}
}
}
}
Loading…
Cancel
Save