escloud-mcp-server 0.0.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,13 @@
1
+ # Python-generated files
2
+ __pycache__/
3
+ *.py[oc]
4
+ build/
5
+ dist/
6
+ wheels/
7
+ *.egg-info
8
+
9
+ # Virtual environments
10
+ .venv
11
+
12
+ # PyCharm
13
+ .idea
@@ -0,0 +1 @@
1
+ 3.10
@@ -0,0 +1,109 @@
1
+ Metadata-Version: 2.4
2
+ Name: escloud-mcp-server
3
+ Version: 0.0.1
4
+ Summary: ESCloud MCP Server
5
+ License-Expression: MIT
6
+ Requires-Python: >=3.10
7
+ Requires-Dist: mcp[cli]>=1.6.0
8
+ Requires-Dist: volcengine-python-sdk>=1.1.3
9
+ Description-Content-Type: text/markdown
10
+
11
+ # ESCloud MCP Server
12
+ This mcp server is used to provide interaction with escloud service on volcengine platform. It is a Model
13
+ Control Protocol([MCP](https://modelcontextprotocol.io/introduction)) server implementation. This server enables
14
+ querying the available zones in specific region, getting the config, nodes, plugins of instance, and more.
15
+
16
+ ## Prerequisites
17
+ Before using this mcp server, you need to install the following components:
18
+ - ak/sk for volcano engine
19
+ - python 3.10+ or higher
20
+ - [uv](https://github.com/astral-sh/uv) installed
21
+
22
+ ## Usage
23
+ Obtain ak/sk from the [volcengine](https://www.volcengine.com/): login -> right top user icon -> api access secret key.
24
+
25
+ ### Usage with Trae
26
+ TODO
27
+
28
+
29
+ ### Usage with Cline
30
+ #### Using uvx with published package
31
+ First, adding the following code to the config file `cline_mcp_settings.json`, it will automatically download the
32
+ latest published package from the registry and run it. Then you need to change `your_volcengine_ak`
33
+ and `your_volcengine_sk` to your ak and sk.
34
+ ```json
35
+ {
36
+ "mcpServers": {
37
+ "escloud-mcp-server": {
38
+ "disabled": false,
39
+ "timeout": 60,
40
+ "command": "uvx",
41
+ "args": [
42
+ "escloud-mcp-server"
43
+ ],
44
+ "env": {
45
+ "VOLC_ACCESS_KEY": "your_volcengine_ak",
46
+ "VOLC_SECRET_KEY": "your_volcengine_sk"
47
+ },
48
+ "transportType": "stdio"
49
+ }
50
+ }
51
+ }
52
+ ```
53
+
54
+ #### Using uv with local development
55
+ First, cloning the repository locally and specifying the path to source code. Then add the following code to
56
+ the config file `cline_mcp_settings.json`. Last you need to change `path/to/src/escloud_mcp_server` to the path
57
+ where you cloned the repository, and change `your_volcengine_ak` and `your_volcengine_sk` to your ak and sk.
58
+ ```json
59
+ {
60
+ "mcpServers": {
61
+ "escloud-mcp-server": {
62
+ "disabled": false,
63
+ "timeout": 60,
64
+ "command": "uv",
65
+ "args": [
66
+ "--directory",
67
+ "path/to/src/escloud_mcp_server",
68
+ "run",
69
+ "server.py"
70
+ ],
71
+ "env": {
72
+ "VOLC_ACCESS_KEY": "your_volcengine_ak",
73
+ "VOLC_SECRET_KEY": "your_volcengine_sk"
74
+ },
75
+ "transportType": "stdio"
76
+ }
77
+ }
78
+ }
79
+ ```
80
+
81
+ ## Tools
82
+ The server provides the following tools:
83
+ - `escloud_describe_zones`: query available zones in a specific region
84
+ - parameters:
85
+ - `region_id`: the id of region
86
+ - `escloud_describe_instance`: query the information of a instance
87
+ - parameters:
88
+ - `region_id`: the id of region
89
+ - `instance_id`: the id of instance
90
+ - `escloud_describe_instances`: query the information of instances
91
+ - parameters:
92
+ - `region_id`: the id of region
93
+ - `zone_id`: the id of zone, support fuzzy query
94
+ - `instance_id`: the id of instance, support fuzzy query
95
+ - `instance_name`: the name of instance, support fuzzy query
96
+ - `status`: the status of instance
97
+ - `version`: the version of instance
98
+ - `charge_type`: the charge type of instance
99
+ - `project_name`: the project name that instance belongs to
100
+ - `page_number`: the page number of the result list
101
+ - `page_size`: the page size of the result list
102
+ - `escloud_describe_instance_nodes`: query the nodes of a instance
103
+ - parameters:
104
+ - `region_id`: the id of region
105
+ - `instance_id`: the id of instance
106
+ - `escloud_describe_instance_plugins`: query the plugins of a instance
107
+ - parameters:
108
+ - `region_id`: the id of region
109
+ - `instance_id`: the id of instance
@@ -0,0 +1,99 @@
1
+ # ESCloud MCP Server
2
+ This mcp server is used to provide interaction with escloud service on volcengine platform. It is a Model
3
+ Control Protocol([MCP](https://modelcontextprotocol.io/introduction)) server implementation. This server enables
4
+ querying the available zones in specific region, getting the config, nodes, plugins of instance, and more.
5
+
6
+ ## Prerequisites
7
+ Before using this mcp server, you need to install the following components:
8
+ - ak/sk for volcano engine
9
+ - python 3.10+ or higher
10
+ - [uv](https://github.com/astral-sh/uv) installed
11
+
12
+ ## Usage
13
+ Obtain ak/sk from the [volcengine](https://www.volcengine.com/): login -> right top user icon -> api access secret key.
14
+
15
+ ### Usage with Trae
16
+ TODO
17
+
18
+
19
+ ### Usage with Cline
20
+ #### Using uvx with published package
21
+ First, adding the following code to the config file `cline_mcp_settings.json`, it will automatically download the
22
+ latest published package from the registry and run it. Then you need to change `your_volcengine_ak`
23
+ and `your_volcengine_sk` to your ak and sk.
24
+ ```json
25
+ {
26
+ "mcpServers": {
27
+ "escloud-mcp-server": {
28
+ "disabled": false,
29
+ "timeout": 60,
30
+ "command": "uvx",
31
+ "args": [
32
+ "escloud-mcp-server"
33
+ ],
34
+ "env": {
35
+ "VOLC_ACCESS_KEY": "your_volcengine_ak",
36
+ "VOLC_SECRET_KEY": "your_volcengine_sk"
37
+ },
38
+ "transportType": "stdio"
39
+ }
40
+ }
41
+ }
42
+ ```
43
+
44
+ #### Using uv with local development
45
+ First, cloning the repository locally and specifying the path to source code. Then add the following code to
46
+ the config file `cline_mcp_settings.json`. Last you need to change `path/to/src/escloud_mcp_server` to the path
47
+ where you cloned the repository, and change `your_volcengine_ak` and `your_volcengine_sk` to your ak and sk.
48
+ ```json
49
+ {
50
+ "mcpServers": {
51
+ "escloud-mcp-server": {
52
+ "disabled": false,
53
+ "timeout": 60,
54
+ "command": "uv",
55
+ "args": [
56
+ "--directory",
57
+ "path/to/src/escloud_mcp_server",
58
+ "run",
59
+ "server.py"
60
+ ],
61
+ "env": {
62
+ "VOLC_ACCESS_KEY": "your_volcengine_ak",
63
+ "VOLC_SECRET_KEY": "your_volcengine_sk"
64
+ },
65
+ "transportType": "stdio"
66
+ }
67
+ }
68
+ }
69
+ ```
70
+
71
+ ## Tools
72
+ The server provides the following tools:
73
+ - `escloud_describe_zones`: query available zones in a specific region
74
+ - parameters:
75
+ - `region_id`: the id of region
76
+ - `escloud_describe_instance`: query the information of a instance
77
+ - parameters:
78
+ - `region_id`: the id of region
79
+ - `instance_id`: the id of instance
80
+ - `escloud_describe_instances`: query the information of instances
81
+ - parameters:
82
+ - `region_id`: the id of region
83
+ - `zone_id`: the id of zone, support fuzzy query
84
+ - `instance_id`: the id of instance, support fuzzy query
85
+ - `instance_name`: the name of instance, support fuzzy query
86
+ - `status`: the status of instance
87
+ - `version`: the version of instance
88
+ - `charge_type`: the charge type of instance
89
+ - `project_name`: the project name that instance belongs to
90
+ - `page_number`: the page number of the result list
91
+ - `page_size`: the page size of the result list
92
+ - `escloud_describe_instance_nodes`: query the nodes of a instance
93
+ - parameters:
94
+ - `region_id`: the id of region
95
+ - `instance_id`: the id of instance
96
+ - `escloud_describe_instance_plugins`: query the plugins of a instance
97
+ - parameters:
98
+ - `region_id`: the id of region
99
+ - `instance_id`: the id of instance
@@ -0,0 +1,18 @@
1
+ [project]
2
+ name = "escloud-mcp-server"
3
+ version = "0.0.1"
4
+ description = "ESCloud MCP Server"
5
+ readme = "README.md"
6
+ requires-python = ">=3.10"
7
+ license = "MIT"
8
+ dependencies = [
9
+ "mcp[cli]>=1.6.0",
10
+ "volcengine-python-sdk>=1.1.3",
11
+ ]
12
+
13
+ [project.scripts]
14
+ mcp-server-opensearch = "escloud_mcp_server:main"
15
+
16
+ [build-system]
17
+ requires = ["hatchling"]
18
+ build-backend = "hatchling.build"
@@ -0,0 +1,8 @@
1
+ from escloud_mcp_server import server
2
+
3
+
4
+ def main():
5
+ """
6
+ Main entry point for the package.
7
+ """
8
+ server.main()
@@ -0,0 +1,3 @@
1
+ if __name__ == "__main__":
2
+ from escloud_mcp_server import main
3
+ main()
@@ -0,0 +1,22 @@
1
+ import os
2
+ import volcenginesdkcore
3
+ import volcenginesdkescloud
4
+ from dotenv import load_dotenv
5
+
6
+
7
+ def create_escloud_client(region_id: str) -> volcenginesdkescloud.ESCLOUDApi:
8
+ """创建火山引擎云搜索服务客户端"""
9
+ load_dotenv()
10
+ config = {
11
+ "ak": os.getenv("VOLC_ACCESS_KEY"),
12
+ "sk": os.getenv("VOLC_SECRET_KEY"),
13
+ }
14
+ if region_id is not None:
15
+ config["region"] = region_id
16
+
17
+ configuration = volcenginesdkcore.Configuration()
18
+ configuration.ak = config["ak"]
19
+ configuration.sk = config["sk"]
20
+ configuration.region = config["region"]
21
+ configuration.client_side_validation = True
22
+ return volcenginesdkescloud.ESCLOUDApi(volcenginesdkcore.ApiClient(configuration))
@@ -0,0 +1,29 @@
1
+ from mcp.server.fastmcp import FastMCP
2
+
3
+ from escloud_mcp_server.tools import instance_info, resource_info
4
+
5
+
6
+ class ESCloudMCPServer:
7
+ def __init__(self):
8
+ self.name = "ESCloudMCPServer"
9
+ self.mcp = FastMCP(self.name)
10
+ self._register_tools()
11
+
12
+ def _register_tools(self):
13
+ """Register tools to the mcp server."""
14
+ resource_info.register_tools(self.mcp)
15
+ instance_info.register_tools(self.mcp)
16
+
17
+ def run(self):
18
+ """Run the mcp server."""
19
+ self.mcp.run(transport="stdio")
20
+
21
+
22
+ def main():
23
+ server = ESCloudMCPServer()
24
+ server.run()
25
+
26
+
27
+ if __name__ == "__main__":
28
+ print("Start ESCloud MCP Server")
29
+ main()
@@ -0,0 +1,117 @@
1
+ import volcenginesdkescloud
2
+ from mcp.server.fastmcp import FastMCP
3
+ from mcp.types import TextContent
4
+
5
+ from escloud_mcp_server.client import create_escloud_client
6
+
7
+
8
+ def register_tools(mcp: FastMCP):
9
+ @mcp.tool()
10
+ async def escloud_describe_instance(region_id: str, instance_id: str):
11
+ """
12
+ 查询云搜索服务在指定区域下的实例详细信息,包括实例 id、名称、版本、状态、创建时间、计费类型、规格配置、标签列表、网络配置、数据迁移等信息。
13
+
14
+ :param region_id: 区域 id
15
+ :param instance_id: 实例 id
16
+ :return: 实例详细信息
17
+ """
18
+ try:
19
+ client = create_escloud_client(region_id)
20
+ response = client.describe_instance(
21
+ volcenginesdkescloud.DescribeInstanceRequest(instance_id=instance_id)
22
+ )
23
+ return TextContent(type="text", text=str(response))
24
+ except Exception as e:
25
+ return TextContent(type="text", text=f"Error: {str(e)}")
26
+
27
+ @mcp.tool()
28
+ async def escloud_describe_instances(region_id: str, zone_id=None, instance_id=None, instance_name=None,
29
+ status=None, version=None, charge_type=None, project_name=None,
30
+ page_number=1, page_size=10):
31
+ """
32
+ 查询云搜索服务在指定区域下的实例列表,包括每个实例的详细信息。
33
+
34
+ :param region_id: 区域 id
35
+ :param zone_id: 可用区 id,支持模糊查询
36
+ :param instance_id: 实例 id,支持模糊查询
37
+ :param instance_name: 实例名称,支持模糊查询
38
+ :param status: 实例状态
39
+ :param version: 实例版本
40
+ :param charge_type: 实例计费类型
41
+ :param project_name: 项目名称
42
+ :param page_number: 分页页码
43
+ :param page_size: 分页大小
44
+ :return: 实例列表
45
+ """
46
+ try:
47
+ filters = []
48
+ if zone_id:
49
+ filters.append(
50
+ volcenginesdkescloud.FilterForDescribeInstancesInput(name="ZoneId", values=[zone_id])
51
+ )
52
+ if instance_id:
53
+ filters.append(
54
+ volcenginesdkescloud.FilterForDescribeInstancesInput(name="InstanceId", values=[instance_id])
55
+ )
56
+ if instance_name:
57
+ filters.append(
58
+ volcenginesdkescloud.FilterForDescribeInstancesInput(name="InstanceName", values=[instance_name])
59
+ )
60
+ if status:
61
+ filters.append(
62
+ volcenginesdkescloud.FilterForDescribeInstancesInput(name="Status", values=[status])
63
+ )
64
+ if version:
65
+ filters.append(
66
+ volcenginesdkescloud.FilterForDescribeInstancesInput(name="Version", values=[version])
67
+ )
68
+ if charge_type:
69
+ filters.append(
70
+ volcenginesdkescloud.FilterForDescribeInstancesInput(name="ChargeType", values=[charge_type])
71
+ )
72
+
73
+ client = create_escloud_client(region_id)
74
+ response = client.describe_instances(volcenginesdkescloud.DescribeInstancesRequest(
75
+ filters=filters,
76
+ project_name=project_name,
77
+ page_number=page_number,
78
+ page_size=page_size))
79
+ return TextContent(type="text", text=str(response))
80
+ except Exception as e:
81
+ return TextContent(type="text", text=f"Error: {str(e)}")
82
+
83
+ @mcp.tool()
84
+ async def escloud_describe_instance_nodes(region_id: str, instance_id: str):
85
+ """
86
+ 查询云搜索服务在指定区域下的实例节点列表,包括每个节点的名称、类型、状态、存储配置、规格配置、重启次数等信息。
87
+
88
+ :param region_id: 区域 id
89
+ :param instance_id: 实例 id
90
+ :return: 实例节点列表
91
+ """
92
+ try:
93
+ client = create_escloud_client(region_id)
94
+ response = client.describe_instance_nodes(
95
+ volcenginesdkescloud.DescribeInstanceNodesRequest(instance_id=instance_id)
96
+ )
97
+ return TextContent(type="text", text=str(response))
98
+ except Exception as e:
99
+ return TextContent(type="text", text=f"Error: {str(e)}")
100
+
101
+ @mcp.tool()
102
+ async def escloud_describe_instance_plugins(region_id: str, instance_id: str):
103
+ """
104
+ 查询云搜索服务在指定区域下的实例的插件列表,包括每个插件的名称、版本、状态、描述等信息。
105
+
106
+ :param region_id: 区域 id
107
+ :param instance_id: 实例 id
108
+ :return: 实例插件列表
109
+ """
110
+ try:
111
+ client = create_escloud_client(region_id)
112
+ response = client.describe_instance_plugins(
113
+ volcenginesdkescloud.DescribeInstancePluginsRequest(instance_id=instance_id)
114
+ )
115
+ return TextContent(type="text", text=str(response))
116
+ except Exception as e:
117
+ return TextContent(type="text", text=f"Error: {str(e)}")
@@ -0,0 +1,24 @@
1
+ import volcenginesdkescloud
2
+ from mcp.server.fastmcp import FastMCP
3
+ from mcp.types import TextContent
4
+
5
+ from escloud_mcp_server.client import create_escloud_client
6
+
7
+
8
+ def register_tools(mcp: FastMCP):
9
+ @mcp.tool()
10
+ async def escloud_describe_zones(region_id: str):
11
+ """
12
+ 查询云搜索服务在指定区域下的可用区列表,包括可用区 id、名称、状态等信息。
13
+
14
+ :param region_id: 区域 id
15
+ :return: 可用区列表
16
+ """
17
+ try:
18
+ client = create_escloud_client(region_id)
19
+ response = client.describe_zones(
20
+ volcenginesdkescloud.DescribeZonesRequest()
21
+ )
22
+ return TextContent(type="text", text=str(response))
23
+ except Exception as e:
24
+ return TextContent(type="text", text=f"Error: {str(e)}")
@@ -0,0 +1,464 @@
1
+ version = 1
2
+ revision = 1
3
+ requires-python = ">=3.10"
4
+
5
+ [[package]]
6
+ name = "annotated-types"
7
+ version = "0.7.0"
8
+ source = { registry = "https://pypi.org/simple" }
9
+ sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081 }
10
+ wheels = [
11
+ { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 },
12
+ ]
13
+
14
+ [[package]]
15
+ name = "anyio"
16
+ version = "4.9.0"
17
+ source = { registry = "https://pypi.org/simple" }
18
+ dependencies = [
19
+ { name = "exceptiongroup", marker = "python_full_version < '3.11'" },
20
+ { name = "idna" },
21
+ { name = "sniffio" },
22
+ { name = "typing-extensions", marker = "python_full_version < '3.13'" },
23
+ ]
24
+ sdist = { url = "https://files.pythonhosted.org/packages/95/7d/4c1bd541d4dffa1b52bd83fb8527089e097a106fc90b467a7313b105f840/anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028", size = 190949 }
25
+ wheels = [
26
+ { url = "https://files.pythonhosted.org/packages/a1/ee/48ca1a7c89ffec8b6a0c5d02b89c305671d5ffd8d3c94acf8b8c408575bb/anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c", size = 100916 },
27
+ ]
28
+
29
+ [[package]]
30
+ name = "certifi"
31
+ version = "2025.1.31"
32
+ source = { registry = "https://pypi.org/simple" }
33
+ sdist = { url = "https://files.pythonhosted.org/packages/1c/ab/c9f1e32b7b1bf505bf26f0ef697775960db7932abeb7b516de930ba2705f/certifi-2025.1.31.tar.gz", hash = "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651", size = 167577 }
34
+ wheels = [
35
+ { url = "https://files.pythonhosted.org/packages/38/fc/bce832fd4fd99766c04d1ee0eead6b0ec6486fb100ae5e74c1d91292b982/certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe", size = 166393 },
36
+ ]
37
+
38
+ [[package]]
39
+ name = "click"
40
+ version = "8.1.8"
41
+ source = { registry = "https://pypi.org/simple" }
42
+ dependencies = [
43
+ { name = "colorama", marker = "sys_platform == 'win32'" },
44
+ ]
45
+ sdist = { url = "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", size = 226593 }
46
+ wheels = [
47
+ { url = "https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2", size = 98188 },
48
+ ]
49
+
50
+ [[package]]
51
+ name = "colorama"
52
+ version = "0.4.6"
53
+ source = { registry = "https://pypi.org/simple" }
54
+ sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 }
55
+ wheels = [
56
+ { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 },
57
+ ]
58
+
59
+ [[package]]
60
+ name = "escloud-mcp-server"
61
+ version = "0.0.1"
62
+ source = { editable = "." }
63
+ dependencies = [
64
+ { name = "mcp", extra = ["cli"] },
65
+ { name = "volcengine-python-sdk" },
66
+ ]
67
+
68
+ [package.metadata]
69
+ requires-dist = [
70
+ { name = "mcp", extras = ["cli"], specifier = ">=1.6.0" },
71
+ { name = "volcengine-python-sdk", specifier = ">=1.1.3" },
72
+ ]
73
+
74
+ [[package]]
75
+ name = "exceptiongroup"
76
+ version = "1.2.2"
77
+ source = { registry = "https://pypi.org/simple" }
78
+ sdist = { url = "https://files.pythonhosted.org/packages/09/35/2495c4ac46b980e4ca1f6ad6db102322ef3ad2410b79fdde159a4b0f3b92/exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc", size = 28883 }
79
+ wheels = [
80
+ { url = "https://files.pythonhosted.org/packages/02/cc/b7e31358aac6ed1ef2bb790a9746ac2c69bcb3c8588b41616914eb106eaf/exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b", size = 16453 },
81
+ ]
82
+
83
+ [[package]]
84
+ name = "h11"
85
+ version = "0.14.0"
86
+ source = { registry = "https://pypi.org/simple" }
87
+ sdist = { url = "https://files.pythonhosted.org/packages/f5/38/3af3d3633a34a3316095b39c8e8fb4853a28a536e55d347bd8d8e9a14b03/h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d", size = 100418 }
88
+ wheels = [
89
+ { url = "https://files.pythonhosted.org/packages/95/04/ff642e65ad6b90db43e668d70ffb6736436c7ce41fcc549f4e9472234127/h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761", size = 58259 },
90
+ ]
91
+
92
+ [[package]]
93
+ name = "httpcore"
94
+ version = "1.0.7"
95
+ source = { registry = "https://pypi.org/simple" }
96
+ dependencies = [
97
+ { name = "certifi" },
98
+ { name = "h11" },
99
+ ]
100
+ sdist = { url = "https://files.pythonhosted.org/packages/6a/41/d7d0a89eb493922c37d343b607bc1b5da7f5be7e383740b4753ad8943e90/httpcore-1.0.7.tar.gz", hash = "sha256:8551cb62a169ec7162ac7be8d4817d561f60e08eaa485234898414bb5a8a0b4c", size = 85196 }
101
+ wheels = [
102
+ { url = "https://files.pythonhosted.org/packages/87/f5/72347bc88306acb359581ac4d52f23c0ef445b57157adedb9aee0cd689d2/httpcore-1.0.7-py3-none-any.whl", hash = "sha256:a3fff8f43dc260d5bd363d9f9cf1830fa3a458b332856f34282de498ed420edd", size = 78551 },
103
+ ]
104
+
105
+ [[package]]
106
+ name = "httpx"
107
+ version = "0.28.1"
108
+ source = { registry = "https://pypi.org/simple" }
109
+ dependencies = [
110
+ { name = "anyio" },
111
+ { name = "certifi" },
112
+ { name = "httpcore" },
113
+ { name = "idna" },
114
+ ]
115
+ sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406 }
116
+ wheels = [
117
+ { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517 },
118
+ ]
119
+
120
+ [[package]]
121
+ name = "httpx-sse"
122
+ version = "0.4.0"
123
+ source = { registry = "https://pypi.org/simple" }
124
+ sdist = { url = "https://files.pythonhosted.org/packages/4c/60/8f4281fa9bbf3c8034fd54c0e7412e66edbab6bc74c4996bd616f8d0406e/httpx-sse-0.4.0.tar.gz", hash = "sha256:1e81a3a3070ce322add1d3529ed42eb5f70817f45ed6ec915ab753f961139721", size = 12624 }
125
+ wheels = [
126
+ { url = "https://files.pythonhosted.org/packages/e1/9b/a181f281f65d776426002f330c31849b86b31fc9d848db62e16f03ff739f/httpx_sse-0.4.0-py3-none-any.whl", hash = "sha256:f329af6eae57eaa2bdfd962b42524764af68075ea87370a2de920af5341e318f", size = 7819 },
127
+ ]
128
+
129
+ [[package]]
130
+ name = "idna"
131
+ version = "3.10"
132
+ source = { registry = "https://pypi.org/simple" }
133
+ sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490 }
134
+ wheels = [
135
+ { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 },
136
+ ]
137
+
138
+ [[package]]
139
+ name = "markdown-it-py"
140
+ version = "3.0.0"
141
+ source = { registry = "https://pypi.org/simple" }
142
+ dependencies = [
143
+ { name = "mdurl" },
144
+ ]
145
+ sdist = { url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", size = 74596 }
146
+ wheels = [
147
+ { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528 },
148
+ ]
149
+
150
+ [[package]]
151
+ name = "mcp"
152
+ version = "1.6.0"
153
+ source = { registry = "https://pypi.org/simple" }
154
+ dependencies = [
155
+ { name = "anyio" },
156
+ { name = "httpx" },
157
+ { name = "httpx-sse" },
158
+ { name = "pydantic" },
159
+ { name = "pydantic-settings" },
160
+ { name = "sse-starlette" },
161
+ { name = "starlette" },
162
+ { name = "uvicorn" },
163
+ ]
164
+ sdist = { url = "https://files.pythonhosted.org/packages/95/d2/f587cb965a56e992634bebc8611c5b579af912b74e04eb9164bd49527d21/mcp-1.6.0.tar.gz", hash = "sha256:d9324876de2c5637369f43161cd71eebfd803df5a95e46225cab8d280e366723", size = 200031 }
165
+ wheels = [
166
+ { url = "https://files.pythonhosted.org/packages/10/30/20a7f33b0b884a9d14dd3aa94ff1ac9da1479fe2ad66dd9e2736075d2506/mcp-1.6.0-py3-none-any.whl", hash = "sha256:7bd24c6ea042dbec44c754f100984d186620d8b841ec30f1b19eda9b93a634d0", size = 76077 },
167
+ ]
168
+
169
+ [package.optional-dependencies]
170
+ cli = [
171
+ { name = "python-dotenv" },
172
+ { name = "typer" },
173
+ ]
174
+
175
+ [[package]]
176
+ name = "mdurl"
177
+ version = "0.1.2"
178
+ source = { registry = "https://pypi.org/simple" }
179
+ sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729 }
180
+ wheels = [
181
+ { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979 },
182
+ ]
183
+
184
+ [[package]]
185
+ name = "pydantic"
186
+ version = "2.11.2"
187
+ source = { registry = "https://pypi.org/simple" }
188
+ dependencies = [
189
+ { name = "annotated-types" },
190
+ { name = "pydantic-core" },
191
+ { name = "typing-extensions" },
192
+ { name = "typing-inspection" },
193
+ ]
194
+ sdist = { url = "https://files.pythonhosted.org/packages/b0/41/832125a41fe098b58d1fdd04ae819b4dc6b34d6b09ed78304fd93d4bc051/pydantic-2.11.2.tar.gz", hash = "sha256:2138628e050bd7a1e70b91d4bf4a91167f4ad76fdb83209b107c8d84b854917e", size = 784742 }
195
+ wheels = [
196
+ { url = "https://files.pythonhosted.org/packages/bf/c2/0f3baea344d0b15e35cb3e04ad5b953fa05106b76efbf4c782a3f47f22f5/pydantic-2.11.2-py3-none-any.whl", hash = "sha256:7f17d25846bcdf89b670a86cdfe7b29a9f1c9ca23dee154221c9aa81845cfca7", size = 443295 },
197
+ ]
198
+
199
+ [[package]]
200
+ name = "pydantic-core"
201
+ version = "2.33.1"
202
+ source = { registry = "https://pypi.org/simple" }
203
+ dependencies = [
204
+ { name = "typing-extensions" },
205
+ ]
206
+ sdist = { url = "https://files.pythonhosted.org/packages/17/19/ed6a078a5287aea7922de6841ef4c06157931622c89c2a47940837b5eecd/pydantic_core-2.33.1.tar.gz", hash = "sha256:bcc9c6fdb0ced789245b02b7d6603e17d1563064ddcfc36f046b61c0c05dd9df", size = 434395 }
207
+ wheels = [
208
+ { url = "https://files.pythonhosted.org/packages/38/ea/5f572806ab4d4223d11551af814d243b0e3e02cc6913def4d1fe4a5ca41c/pydantic_core-2.33.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3077cfdb6125cc8dab61b155fdd714663e401f0e6883f9632118ec12cf42df26", size = 2044021 },
209
+ { url = "https://files.pythonhosted.org/packages/8c/d1/f86cc96d2aa80e3881140d16d12ef2b491223f90b28b9a911346c04ac359/pydantic_core-2.33.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8ffab8b2908d152e74862d276cf5017c81a2f3719f14e8e3e8d6b83fda863927", size = 1861742 },
210
+ { url = "https://files.pythonhosted.org/packages/37/08/fbd2cd1e9fc735a0df0142fac41c114ad9602d1c004aea340169ae90973b/pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5183e4f6a2d468787243ebcd70cf4098c247e60d73fb7d68d5bc1e1beaa0c4db", size = 1910414 },
211
+ { url = "https://files.pythonhosted.org/packages/7f/73/3ac217751decbf8d6cb9443cec9b9eb0130eeada6ae56403e11b486e277e/pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:398a38d323f37714023be1e0285765f0a27243a8b1506b7b7de87b647b517e48", size = 1996848 },
212
+ { url = "https://files.pythonhosted.org/packages/9a/f5/5c26b265cdcff2661e2520d2d1e9db72d117ea00eb41e00a76efe68cb009/pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:87d3776f0001b43acebfa86f8c64019c043b55cc5a6a2e313d728b5c95b46969", size = 2141055 },
213
+ { url = "https://files.pythonhosted.org/packages/5d/14/a9c3cee817ef2f8347c5ce0713e91867a0dceceefcb2973942855c917379/pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c566dd9c5f63d22226409553531f89de0cac55397f2ab8d97d6f06cfce6d947e", size = 2753806 },
214
+ { url = "https://files.pythonhosted.org/packages/f2/68/866ce83a51dd37e7c604ce0050ff6ad26de65a7799df89f4db87dd93d1d6/pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0d5f3acc81452c56895e90643a625302bd6be351e7010664151cc55b7b97f89", size = 2007777 },
215
+ { url = "https://files.pythonhosted.org/packages/b6/a8/36771f4404bb3e49bd6d4344da4dede0bf89cc1e01f3b723c47248a3761c/pydantic_core-2.33.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d3a07fadec2a13274a8d861d3d37c61e97a816beae717efccaa4b36dfcaadcde", size = 2122803 },
216
+ { url = "https://files.pythonhosted.org/packages/18/9c/730a09b2694aa89360d20756369822d98dc2f31b717c21df33b64ffd1f50/pydantic_core-2.33.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:f99aeda58dce827f76963ee87a0ebe75e648c72ff9ba1174a253f6744f518f65", size = 2086755 },
217
+ { url = "https://files.pythonhosted.org/packages/54/8e/2dccd89602b5ec31d1c58138d02340ecb2ebb8c2cac3cc66b65ce3edb6ce/pydantic_core-2.33.1-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:902dbc832141aa0ec374f4310f1e4e7febeebc3256f00dc359a9ac3f264a45dc", size = 2257358 },
218
+ { url = "https://files.pythonhosted.org/packages/d1/9c/126e4ac1bfad8a95a9837acdd0963695d69264179ba4ede8b8c40d741702/pydantic_core-2.33.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fe44d56aa0b00d66640aa84a3cbe80b7a3ccdc6f0b1ca71090696a6d4777c091", size = 2257916 },
219
+ { url = "https://files.pythonhosted.org/packages/7d/ba/91eea2047e681a6853c81c20aeca9dcdaa5402ccb7404a2097c2adf9d038/pydantic_core-2.33.1-cp310-cp310-win32.whl", hash = "sha256:ed3eb16d51257c763539bde21e011092f127a2202692afaeaccb50db55a31383", size = 1923823 },
220
+ { url = "https://files.pythonhosted.org/packages/94/c0/fcdf739bf60d836a38811476f6ecd50374880b01e3014318b6e809ddfd52/pydantic_core-2.33.1-cp310-cp310-win_amd64.whl", hash = "sha256:694ad99a7f6718c1a498dc170ca430687a39894a60327f548e02a9c7ee4b6504", size = 1952494 },
221
+ { url = "https://files.pythonhosted.org/packages/d6/7f/c6298830cb780c46b4f46bb24298d01019ffa4d21769f39b908cd14bbd50/pydantic_core-2.33.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:6e966fc3caaf9f1d96b349b0341c70c8d6573bf1bac7261f7b0ba88f96c56c24", size = 2044224 },
222
+ { url = "https://files.pythonhosted.org/packages/a8/65/6ab3a536776cad5343f625245bd38165d6663256ad43f3a200e5936afd6c/pydantic_core-2.33.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bfd0adeee563d59c598ceabddf2c92eec77abcb3f4a391b19aa7366170bd9e30", size = 1858845 },
223
+ { url = "https://files.pythonhosted.org/packages/e9/15/9a22fd26ba5ee8c669d4b8c9c244238e940cd5d818649603ca81d1c69861/pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91815221101ad3c6b507804178a7bb5cb7b2ead9ecd600041669c8d805ebd595", size = 1910029 },
224
+ { url = "https://files.pythonhosted.org/packages/d5/33/8cb1a62818974045086f55f604044bf35b9342900318f9a2a029a1bec460/pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9fea9c1869bb4742d174a57b4700c6dadea951df8b06de40c2fedb4f02931c2e", size = 1997784 },
225
+ { url = "https://files.pythonhosted.org/packages/c0/ca/49958e4df7715c71773e1ea5be1c74544923d10319173264e6db122543f9/pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d20eb4861329bb2484c021b9d9a977566ab16d84000a57e28061151c62b349a", size = 2141075 },
226
+ { url = "https://files.pythonhosted.org/packages/7b/a6/0b3a167a9773c79ba834b959b4e18c3ae9216b8319bd8422792abc8a41b1/pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb935c5591573ae3201640579f30128ccc10739b45663f93c06796854405505", size = 2745849 },
227
+ { url = "https://files.pythonhosted.org/packages/0b/60/516484135173aa9e5861d7a0663dce82e4746d2e7f803627d8c25dfa5578/pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c964fd24e6166420d18fb53996d8c9fd6eac9bf5ae3ec3d03015be4414ce497f", size = 2005794 },
228
+ { url = "https://files.pythonhosted.org/packages/86/70/05b1eb77459ad47de00cf78ee003016da0cedf8b9170260488d7c21e9181/pydantic_core-2.33.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:681d65e9011f7392db5aa002b7423cc442d6a673c635668c227c6c8d0e5a4f77", size = 2123237 },
229
+ { url = "https://files.pythonhosted.org/packages/c7/57/12667a1409c04ae7dc95d3b43158948eb0368e9c790be8b095cb60611459/pydantic_core-2.33.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e100c52f7355a48413e2999bfb4e139d2977a904495441b374f3d4fb4a170961", size = 2086351 },
230
+ { url = "https://files.pythonhosted.org/packages/57/61/cc6d1d1c1664b58fdd6ecc64c84366c34ec9b606aeb66cafab6f4088974c/pydantic_core-2.33.1-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:048831bd363490be79acdd3232f74a0e9951b11b2b4cc058aeb72b22fdc3abe1", size = 2258914 },
231
+ { url = "https://files.pythonhosted.org/packages/d1/0a/edb137176a1f5419b2ddee8bde6a0a548cfa3c74f657f63e56232df8de88/pydantic_core-2.33.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:bdc84017d28459c00db6f918a7272a5190bec3090058334e43a76afb279eac7c", size = 2257385 },
232
+ { url = "https://files.pythonhosted.org/packages/26/3c/48ca982d50e4b0e1d9954919c887bdc1c2b462801bf408613ccc641b3daa/pydantic_core-2.33.1-cp311-cp311-win32.whl", hash = "sha256:32cd11c5914d1179df70406427097c7dcde19fddf1418c787540f4b730289896", size = 1923765 },
233
+ { url = "https://files.pythonhosted.org/packages/33/cd/7ab70b99e5e21559f5de38a0928ea84e6f23fdef2b0d16a6feaf942b003c/pydantic_core-2.33.1-cp311-cp311-win_amd64.whl", hash = "sha256:2ea62419ba8c397e7da28a9170a16219d310d2cf4970dbc65c32faf20d828c83", size = 1950688 },
234
+ { url = "https://files.pythonhosted.org/packages/4b/ae/db1fc237b82e2cacd379f63e3335748ab88b5adde98bf7544a1b1bd10a84/pydantic_core-2.33.1-cp311-cp311-win_arm64.whl", hash = "sha256:fc903512177361e868bc1f5b80ac8c8a6e05fcdd574a5fb5ffeac5a9982b9e89", size = 1908185 },
235
+ { url = "https://files.pythonhosted.org/packages/c8/ce/3cb22b07c29938f97ff5f5bb27521f95e2ebec399b882392deb68d6c440e/pydantic_core-2.33.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:1293d7febb995e9d3ec3ea09caf1a26214eec45b0f29f6074abb004723fc1de8", size = 2026640 },
236
+ { url = "https://files.pythonhosted.org/packages/19/78/f381d643b12378fee782a72126ec5d793081ef03791c28a0fd542a5bee64/pydantic_core-2.33.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:99b56acd433386c8f20be5c4000786d1e7ca0523c8eefc995d14d79c7a081498", size = 1852649 },
237
+ { url = "https://files.pythonhosted.org/packages/9d/2b/98a37b80b15aac9eb2c6cfc6dbd35e5058a352891c5cce3a8472d77665a6/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35a5ec3fa8c2fe6c53e1b2ccc2454398f95d5393ab398478f53e1afbbeb4d939", size = 1892472 },
238
+ { url = "https://files.pythonhosted.org/packages/4e/d4/3c59514e0f55a161004792b9ff3039da52448f43f5834f905abef9db6e4a/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b172f7b9d2f3abc0efd12e3386f7e48b576ef309544ac3a63e5e9cdd2e24585d", size = 1977509 },
239
+ { url = "https://files.pythonhosted.org/packages/a9/b6/c2c7946ef70576f79a25db59a576bce088bdc5952d1b93c9789b091df716/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9097b9f17f91eea659b9ec58148c0747ec354a42f7389b9d50701610d86f812e", size = 2128702 },
240
+ { url = "https://files.pythonhosted.org/packages/88/fe/65a880f81e3f2a974312b61f82a03d85528f89a010ce21ad92f109d94deb/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cc77ec5b7e2118b152b0d886c7514a4653bcb58c6b1d760134a9fab915f777b3", size = 2679428 },
241
+ { url = "https://files.pythonhosted.org/packages/6f/ff/4459e4146afd0462fb483bb98aa2436d69c484737feaceba1341615fb0ac/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5e3d15245b08fa4a84cefc6c9222e6f37c98111c8679fbd94aa145f9a0ae23d", size = 2008753 },
242
+ { url = "https://files.pythonhosted.org/packages/7c/76/1c42e384e8d78452ededac8b583fe2550c84abfef83a0552e0e7478ccbc3/pydantic_core-2.33.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ef99779001d7ac2e2461d8ab55d3373fe7315caefdbecd8ced75304ae5a6fc6b", size = 2114849 },
243
+ { url = "https://files.pythonhosted.org/packages/00/72/7d0cf05095c15f7ffe0eb78914b166d591c0eed72f294da68378da205101/pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:fc6bf8869e193855e8d91d91f6bf59699a5cdfaa47a404e278e776dd7f168b39", size = 2069541 },
244
+ { url = "https://files.pythonhosted.org/packages/b3/69/94a514066bb7d8be499aa764926937409d2389c09be0b5107a970286ef81/pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:b1caa0bc2741b043db7823843e1bde8aaa58a55a58fda06083b0569f8b45693a", size = 2239225 },
245
+ { url = "https://files.pythonhosted.org/packages/84/b0/e390071eadb44b41f4f54c3cef64d8bf5f9612c92686c9299eaa09e267e2/pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ec259f62538e8bf364903a7d0d0239447059f9434b284f5536e8402b7dd198db", size = 2248373 },
246
+ { url = "https://files.pythonhosted.org/packages/d6/b2/288b3579ffc07e92af66e2f1a11be3b056fe1214aab314748461f21a31c3/pydantic_core-2.33.1-cp312-cp312-win32.whl", hash = "sha256:e14f369c98a7c15772b9da98987f58e2b509a93235582838bd0d1d8c08b68fda", size = 1907034 },
247
+ { url = "https://files.pythonhosted.org/packages/02/28/58442ad1c22b5b6742b992ba9518420235adced665513868f99a1c2638a5/pydantic_core-2.33.1-cp312-cp312-win_amd64.whl", hash = "sha256:1c607801d85e2e123357b3893f82c97a42856192997b95b4d8325deb1cd0c5f4", size = 1956848 },
248
+ { url = "https://files.pythonhosted.org/packages/a1/eb/f54809b51c7e2a1d9f439f158b8dd94359321abcc98767e16fc48ae5a77e/pydantic_core-2.33.1-cp312-cp312-win_arm64.whl", hash = "sha256:8d13f0276806ee722e70a1c93da19748594f19ac4299c7e41237fc791d1861ea", size = 1903986 },
249
+ { url = "https://files.pythonhosted.org/packages/7a/24/eed3466a4308d79155f1cdd5c7432c80ddcc4530ba8623b79d5ced021641/pydantic_core-2.33.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:70af6a21237b53d1fe7b9325b20e65cbf2f0a848cf77bed492b029139701e66a", size = 2033551 },
250
+ { url = "https://files.pythonhosted.org/packages/ab/14/df54b1a0bc9b6ded9b758b73139d2c11b4e8eb43e8ab9c5847c0a2913ada/pydantic_core-2.33.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:282b3fe1bbbe5ae35224a0dbd05aed9ccabccd241e8e6b60370484234b456266", size = 1852785 },
251
+ { url = "https://files.pythonhosted.org/packages/fa/96/e275f15ff3d34bb04b0125d9bc8848bf69f25d784d92a63676112451bfb9/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b315e596282bbb5822d0c7ee9d255595bd7506d1cb20c2911a4da0b970187d3", size = 1897758 },
252
+ { url = "https://files.pythonhosted.org/packages/b7/d8/96bc536e975b69e3a924b507d2a19aedbf50b24e08c80fb00e35f9baaed8/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1dfae24cf9921875ca0ca6a8ecb4bb2f13c855794ed0d468d6abbec6e6dcd44a", size = 1986109 },
253
+ { url = "https://files.pythonhosted.org/packages/90/72/ab58e43ce7e900b88cb571ed057b2fcd0e95b708a2e0bed475b10130393e/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6dd8ecfde08d8bfadaea669e83c63939af76f4cf5538a72597016edfa3fad516", size = 2129159 },
254
+ { url = "https://files.pythonhosted.org/packages/dc/3f/52d85781406886c6870ac995ec0ba7ccc028b530b0798c9080531b409fdb/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2f593494876eae852dc98c43c6f260f45abdbfeec9e4324e31a481d948214764", size = 2680222 },
255
+ { url = "https://files.pythonhosted.org/packages/f4/56/6e2ef42f363a0eec0fd92f74a91e0ac48cd2e49b695aac1509ad81eee86a/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:948b73114f47fd7016088e5186d13faf5e1b2fe83f5e320e371f035557fd264d", size = 2006980 },
256
+ { url = "https://files.pythonhosted.org/packages/4c/c0/604536c4379cc78359f9ee0aa319f4aedf6b652ec2854953f5a14fc38c5a/pydantic_core-2.33.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e11f3864eb516af21b01e25fac915a82e9ddad3bb0fb9e95a246067398b435a4", size = 2120840 },
257
+ { url = "https://files.pythonhosted.org/packages/1f/46/9eb764814f508f0edfb291a0f75d10854d78113fa13900ce13729aaec3ae/pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:549150be302428b56fdad0c23c2741dcdb5572413776826c965619a25d9c6bde", size = 2072518 },
258
+ { url = "https://files.pythonhosted.org/packages/42/e3/fb6b2a732b82d1666fa6bf53e3627867ea3131c5f39f98ce92141e3e3dc1/pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:495bc156026efafd9ef2d82372bd38afce78ddd82bf28ef5276c469e57c0c83e", size = 2248025 },
259
+ { url = "https://files.pythonhosted.org/packages/5c/9d/fbe8fe9d1aa4dac88723f10a921bc7418bd3378a567cb5e21193a3c48b43/pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ec79de2a8680b1a67a07490bddf9636d5c2fab609ba8c57597e855fa5fa4dacd", size = 2254991 },
260
+ { url = "https://files.pythonhosted.org/packages/aa/99/07e2237b8a66438d9b26482332cda99a9acccb58d284af7bc7c946a42fd3/pydantic_core-2.33.1-cp313-cp313-win32.whl", hash = "sha256:ee12a7be1742f81b8a65b36c6921022301d466b82d80315d215c4c691724986f", size = 1915262 },
261
+ { url = "https://files.pythonhosted.org/packages/8a/f4/e457a7849beeed1e5defbcf5051c6f7b3c91a0624dd31543a64fc9adcf52/pydantic_core-2.33.1-cp313-cp313-win_amd64.whl", hash = "sha256:ede9b407e39949d2afc46385ce6bd6e11588660c26f80576c11c958e6647bc40", size = 1956626 },
262
+ { url = "https://files.pythonhosted.org/packages/20/d0/e8d567a7cff7b04e017ae164d98011f1e1894269fe8e90ea187a3cbfb562/pydantic_core-2.33.1-cp313-cp313-win_arm64.whl", hash = "sha256:aa687a23d4b7871a00e03ca96a09cad0f28f443690d300500603bd0adba4b523", size = 1909590 },
263
+ { url = "https://files.pythonhosted.org/packages/ef/fd/24ea4302d7a527d672c5be06e17df16aabfb4e9fdc6e0b345c21580f3d2a/pydantic_core-2.33.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:401d7b76e1000d0dd5538e6381d28febdcacb097c8d340dde7d7fc6e13e9f95d", size = 1812963 },
264
+ { url = "https://files.pythonhosted.org/packages/5f/95/4fbc2ecdeb5c1c53f1175a32d870250194eb2fdf6291b795ab08c8646d5d/pydantic_core-2.33.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7aeb055a42d734c0255c9e489ac67e75397d59c6fbe60d155851e9782f276a9c", size = 1986896 },
265
+ { url = "https://files.pythonhosted.org/packages/71/ae/fe31e7f4a62431222d8f65a3bd02e3fa7e6026d154a00818e6d30520ea77/pydantic_core-2.33.1-cp313-cp313t-win_amd64.whl", hash = "sha256:338ea9b73e6e109f15ab439e62cb3b78aa752c7fd9536794112e14bee02c8d18", size = 1931810 },
266
+ { url = "https://files.pythonhosted.org/packages/9c/c7/8b311d5adb0fe00a93ee9b4e92a02b0ec08510e9838885ef781ccbb20604/pydantic_core-2.33.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5c834f54f8f4640fd7e4b193f80eb25a0602bba9e19b3cd2fc7ffe8199f5ae02", size = 2041659 },
267
+ { url = "https://files.pythonhosted.org/packages/8a/d6/4f58d32066a9e26530daaf9adc6664b01875ae0691570094968aaa7b8fcc/pydantic_core-2.33.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:049e0de24cf23766f12cc5cc71d8abc07d4a9deb9061b334b62093dedc7cb068", size = 1873294 },
268
+ { url = "https://files.pythonhosted.org/packages/f7/3f/53cc9c45d9229da427909c751f8ed2bf422414f7664ea4dde2d004f596ba/pydantic_core-2.33.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a28239037b3d6f16916a4c831a5a0eadf856bdd6d2e92c10a0da3a59eadcf3e", size = 1903771 },
269
+ { url = "https://files.pythonhosted.org/packages/f0/49/bf0783279ce674eb9903fb9ae43f6c614cb2f1c4951370258823f795368b/pydantic_core-2.33.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d3da303ab5f378a268fa7d45f37d7d85c3ec19769f28d2cc0c61826a8de21fe", size = 2083558 },
270
+ { url = "https://files.pythonhosted.org/packages/9c/5b/0d998367687f986c7d8484a2c476d30f07bf5b8b1477649a6092bd4c540e/pydantic_core-2.33.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:25626fb37b3c543818c14821afe0fd3830bc327a43953bc88db924b68c5723f1", size = 2118038 },
271
+ { url = "https://files.pythonhosted.org/packages/b3/33/039287d410230ee125daee57373ac01940d3030d18dba1c29cd3089dc3ca/pydantic_core-2.33.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3ab2d36e20fbfcce8f02d73c33a8a7362980cff717926bbae030b93ae46b56c7", size = 2079315 },
272
+ { url = "https://files.pythonhosted.org/packages/1f/85/6d8b2646d99c062d7da2d0ab2faeb0d6ca9cca4c02da6076376042a20da3/pydantic_core-2.33.1-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:2f9284e11c751b003fd4215ad92d325d92c9cb19ee6729ebd87e3250072cdcde", size = 2249063 },
273
+ { url = "https://files.pythonhosted.org/packages/17/d7/c37d208d5738f7b9ad8f22ae8a727d88ebf9c16c04ed2475122cc3f7224a/pydantic_core-2.33.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:048c01eee07d37cbd066fc512b9d8b5ea88ceeb4e629ab94b3e56965ad655add", size = 2254631 },
274
+ { url = "https://files.pythonhosted.org/packages/13/e0/bafa46476d328e4553b85ab9b2f7409e7aaef0ce4c937c894821c542d347/pydantic_core-2.33.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:5ccd429694cf26af7997595d627dd2637e7932214486f55b8a357edaac9dae8c", size = 2080877 },
275
+ { url = "https://files.pythonhosted.org/packages/0b/76/1794e440c1801ed35415238d2c728f26cd12695df9057154ad768b7b991c/pydantic_core-2.33.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3a371dc00282c4b84246509a5ddc808e61b9864aa1eae9ecc92bb1268b82db4a", size = 2042858 },
276
+ { url = "https://files.pythonhosted.org/packages/73/b4/9cd7b081fb0b1b4f8150507cd59d27b275c3e22ad60b35cb19ea0977d9b9/pydantic_core-2.33.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:f59295ecc75a1788af8ba92f2e8c6eeaa5a94c22fc4d151e8d9638814f85c8fc", size = 1873745 },
277
+ { url = "https://files.pythonhosted.org/packages/e1/d7/9ddb7575d4321e40d0363903c2576c8c0c3280ebea137777e5ab58d723e3/pydantic_core-2.33.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08530b8ac922003033f399128505f513e30ca770527cc8bbacf75a84fcc2c74b", size = 1904188 },
278
+ { url = "https://files.pythonhosted.org/packages/d1/a8/3194ccfe461bb08da19377ebec8cb4f13c9bd82e13baebc53c5c7c39a029/pydantic_core-2.33.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bae370459da6a5466978c0eacf90690cb57ec9d533f8e63e564ef3822bfa04fe", size = 2083479 },
279
+ { url = "https://files.pythonhosted.org/packages/42/c7/84cb569555d7179ca0b3f838cef08f66f7089b54432f5b8599aac6e9533e/pydantic_core-2.33.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e3de2777e3b9f4d603112f78006f4ae0acb936e95f06da6cb1a45fbad6bdb4b5", size = 2118415 },
280
+ { url = "https://files.pythonhosted.org/packages/3b/67/72abb8c73e0837716afbb58a59cc9e3ae43d1aa8677f3b4bc72c16142716/pydantic_core-2.33.1-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3a64e81e8cba118e108d7126362ea30e021291b7805d47e4896e52c791be2761", size = 2079623 },
281
+ { url = "https://files.pythonhosted.org/packages/0b/cd/c59707e35a47ba4cbbf153c3f7c56420c58653b5801b055dc52cccc8e2dc/pydantic_core-2.33.1-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:52928d8c1b6bda03cc6d811e8923dffc87a2d3c8b3bfd2ce16471c7147a24850", size = 2250175 },
282
+ { url = "https://files.pythonhosted.org/packages/84/32/e4325a6676b0bed32d5b084566ec86ed7fd1e9bcbfc49c578b1755bde920/pydantic_core-2.33.1-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:1b30d92c9412beb5ac6b10a3eb7ef92ccb14e3f2a8d7732e2d739f58b3aa7544", size = 2254674 },
283
+ { url = "https://files.pythonhosted.org/packages/12/6f/5596dc418f2e292ffc661d21931ab34591952e2843e7168ea5a52591f6ff/pydantic_core-2.33.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:f995719707e0e29f0f41a8aa3bcea6e761a36c9136104d3189eafb83f5cec5e5", size = 2080951 },
284
+ ]
285
+
286
+ [[package]]
287
+ name = "pydantic-settings"
288
+ version = "2.8.1"
289
+ source = { registry = "https://pypi.org/simple" }
290
+ dependencies = [
291
+ { name = "pydantic" },
292
+ { name = "python-dotenv" },
293
+ ]
294
+ sdist = { url = "https://files.pythonhosted.org/packages/88/82/c79424d7d8c29b994fb01d277da57b0a9b09cc03c3ff875f9bd8a86b2145/pydantic_settings-2.8.1.tar.gz", hash = "sha256:d5c663dfbe9db9d5e1c646b2e161da12f0d734d422ee56f567d0ea2cee4e8585", size = 83550 }
295
+ wheels = [
296
+ { url = "https://files.pythonhosted.org/packages/0b/53/a64f03044927dc47aafe029c42a5b7aabc38dfb813475e0e1bf71c4a59d0/pydantic_settings-2.8.1-py3-none-any.whl", hash = "sha256:81942d5ac3d905f7f3ee1a70df5dfb62d5569c12f51a5a647defc1c3d9ee2e9c", size = 30839 },
297
+ ]
298
+
299
+ [[package]]
300
+ name = "pygments"
301
+ version = "2.19.1"
302
+ source = { registry = "https://pypi.org/simple" }
303
+ sdist = { url = "https://files.pythonhosted.org/packages/7c/2d/c3338d48ea6cc0feb8446d8e6937e1408088a72a39937982cc6111d17f84/pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f", size = 4968581 }
304
+ wheels = [
305
+ { url = "https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c", size = 1225293 },
306
+ ]
307
+
308
+ [[package]]
309
+ name = "python-dateutil"
310
+ version = "2.9.0.post0"
311
+ source = { registry = "https://pypi.org/simple" }
312
+ dependencies = [
313
+ { name = "six" },
314
+ ]
315
+ sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432 }
316
+ wheels = [
317
+ { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892 },
318
+ ]
319
+
320
+ [[package]]
321
+ name = "python-dotenv"
322
+ version = "1.1.0"
323
+ source = { registry = "https://pypi.org/simple" }
324
+ sdist = { url = "https://files.pythonhosted.org/packages/88/2c/7bb1416c5620485aa793f2de31d3df393d3686aa8a8506d11e10e13c5baf/python_dotenv-1.1.0.tar.gz", hash = "sha256:41f90bc6f5f177fb41f53e87666db362025010eb28f60a01c9143bfa33a2b2d5", size = 39920 }
325
+ wheels = [
326
+ { url = "https://files.pythonhosted.org/packages/1e/18/98a99ad95133c6a6e2005fe89faedf294a748bd5dc803008059409ac9b1e/python_dotenv-1.1.0-py3-none-any.whl", hash = "sha256:d7c01d9e2293916c18baf562d95698754b0dbbb5e74d457c45d4f6561fb9d55d", size = 20256 },
327
+ ]
328
+
329
+ [[package]]
330
+ name = "rich"
331
+ version = "14.0.0"
332
+ source = { registry = "https://pypi.org/simple" }
333
+ dependencies = [
334
+ { name = "markdown-it-py" },
335
+ { name = "pygments" },
336
+ { name = "typing-extensions", marker = "python_full_version < '3.11'" },
337
+ ]
338
+ sdist = { url = "https://files.pythonhosted.org/packages/a1/53/830aa4c3066a8ab0ae9a9955976fb770fe9c6102117c8ec4ab3ea62d89e8/rich-14.0.0.tar.gz", hash = "sha256:82f1bc23a6a21ebca4ae0c45af9bdbc492ed20231dcb63f297d6d1021a9d5725", size = 224078 }
339
+ wheels = [
340
+ { url = "https://files.pythonhosted.org/packages/0d/9b/63f4c7ebc259242c89b3acafdb37b41d1185c07ff0011164674e9076b491/rich-14.0.0-py3-none-any.whl", hash = "sha256:1c9491e1951aac09caffd42f448ee3d04e58923ffe14993f6e83068dc395d7e0", size = 243229 },
341
+ ]
342
+
343
+ [[package]]
344
+ name = "shellingham"
345
+ version = "1.5.4"
346
+ source = { registry = "https://pypi.org/simple" }
347
+ sdist = { url = "https://files.pythonhosted.org/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de", size = 10310 }
348
+ wheels = [
349
+ { url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755 },
350
+ ]
351
+
352
+ [[package]]
353
+ name = "six"
354
+ version = "1.17.0"
355
+ source = { registry = "https://pypi.org/simple" }
356
+ sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031 }
357
+ wheels = [
358
+ { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050 },
359
+ ]
360
+
361
+ [[package]]
362
+ name = "sniffio"
363
+ version = "1.3.1"
364
+ source = { registry = "https://pypi.org/simple" }
365
+ sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372 }
366
+ wheels = [
367
+ { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235 },
368
+ ]
369
+
370
+ [[package]]
371
+ name = "sse-starlette"
372
+ version = "2.2.1"
373
+ source = { registry = "https://pypi.org/simple" }
374
+ dependencies = [
375
+ { name = "anyio" },
376
+ { name = "starlette" },
377
+ ]
378
+ sdist = { url = "https://files.pythonhosted.org/packages/71/a4/80d2a11af59fe75b48230846989e93979c892d3a20016b42bb44edb9e398/sse_starlette-2.2.1.tar.gz", hash = "sha256:54470d5f19274aeed6b2d473430b08b4b379ea851d953b11d7f1c4a2c118b419", size = 17376 }
379
+ wheels = [
380
+ { url = "https://files.pythonhosted.org/packages/d9/e0/5b8bd393f27f4a62461c5cf2479c75a2cc2ffa330976f9f00f5f6e4f50eb/sse_starlette-2.2.1-py3-none-any.whl", hash = "sha256:6410a3d3ba0c89e7675d4c273a301d64649c03a5ef1ca101f10b47f895fd0e99", size = 10120 },
381
+ ]
382
+
383
+ [[package]]
384
+ name = "starlette"
385
+ version = "0.46.1"
386
+ source = { registry = "https://pypi.org/simple" }
387
+ dependencies = [
388
+ { name = "anyio" },
389
+ ]
390
+ sdist = { url = "https://files.pythonhosted.org/packages/04/1b/52b27f2e13ceedc79a908e29eac426a63465a1a01248e5f24aa36a62aeb3/starlette-0.46.1.tar.gz", hash = "sha256:3c88d58ee4bd1bb807c0d1acb381838afc7752f9ddaec81bbe4383611d833230", size = 2580102 }
391
+ wheels = [
392
+ { url = "https://files.pythonhosted.org/packages/a0/4b/528ccf7a982216885a1ff4908e886b8fb5f19862d1962f56a3fce2435a70/starlette-0.46.1-py3-none-any.whl", hash = "sha256:77c74ed9d2720138b25875133f3a2dae6d854af2ec37dceb56aef370c1d8a227", size = 71995 },
393
+ ]
394
+
395
+ [[package]]
396
+ name = "typer"
397
+ version = "0.15.2"
398
+ source = { registry = "https://pypi.org/simple" }
399
+ dependencies = [
400
+ { name = "click" },
401
+ { name = "rich" },
402
+ { name = "shellingham" },
403
+ { name = "typing-extensions" },
404
+ ]
405
+ sdist = { url = "https://files.pythonhosted.org/packages/8b/6f/3991f0f1c7fcb2df31aef28e0594d8d54b05393a0e4e34c65e475c2a5d41/typer-0.15.2.tar.gz", hash = "sha256:ab2fab47533a813c49fe1f16b1a370fd5819099c00b119e0633df65f22144ba5", size = 100711 }
406
+ wheels = [
407
+ { url = "https://files.pythonhosted.org/packages/7f/fc/5b29fea8cee020515ca82cc68e3b8e1e34bb19a3535ad854cac9257b414c/typer-0.15.2-py3-none-any.whl", hash = "sha256:46a499c6107d645a9c13f7ee46c5d5096cae6f5fc57dd11eccbbb9ae3e44ddfc", size = 45061 },
408
+ ]
409
+
410
+ [[package]]
411
+ name = "typing-extensions"
412
+ version = "4.13.1"
413
+ source = { registry = "https://pypi.org/simple" }
414
+ sdist = { url = "https://files.pythonhosted.org/packages/76/ad/cd3e3465232ec2416ae9b983f27b9e94dc8171d56ac99b345319a9475967/typing_extensions-4.13.1.tar.gz", hash = "sha256:98795af00fb9640edec5b8e31fc647597b4691f099ad75f469a2616be1a76dff", size = 106633 }
415
+ wheels = [
416
+ { url = "https://files.pythonhosted.org/packages/df/c5/e7a0b0f5ed69f94c8ab7379c599e6036886bffcde609969a5325f47f1332/typing_extensions-4.13.1-py3-none-any.whl", hash = "sha256:4b6cf02909eb5495cfbc3f6e8fd49217e6cc7944e145cdda8caa3734777f9e69", size = 45739 },
417
+ ]
418
+
419
+ [[package]]
420
+ name = "typing-inspection"
421
+ version = "0.4.0"
422
+ source = { registry = "https://pypi.org/simple" }
423
+ dependencies = [
424
+ { name = "typing-extensions" },
425
+ ]
426
+ sdist = { url = "https://files.pythonhosted.org/packages/82/5c/e6082df02e215b846b4b8c0b887a64d7d08ffaba30605502639d44c06b82/typing_inspection-0.4.0.tar.gz", hash = "sha256:9765c87de36671694a67904bf2c96e395be9c6439bb6c87b5142569dcdd65122", size = 76222 }
427
+ wheels = [
428
+ { url = "https://files.pythonhosted.org/packages/31/08/aa4fdfb71f7de5176385bd9e90852eaf6b5d622735020ad600f2bab54385/typing_inspection-0.4.0-py3-none-any.whl", hash = "sha256:50e72559fcd2a6367a19f7a7e610e6afcb9fac940c650290eed893d61386832f", size = 14125 },
429
+ ]
430
+
431
+ [[package]]
432
+ name = "urllib3"
433
+ version = "2.3.0"
434
+ source = { registry = "https://pypi.org/simple" }
435
+ sdist = { url = "https://files.pythonhosted.org/packages/aa/63/e53da845320b757bf29ef6a9062f5c669fe997973f966045cb019c3f4b66/urllib3-2.3.0.tar.gz", hash = "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d", size = 307268 }
436
+ wheels = [
437
+ { url = "https://files.pythonhosted.org/packages/c8/19/4ec628951a74043532ca2cf5d97b7b14863931476d117c471e8e2b1eb39f/urllib3-2.3.0-py3-none-any.whl", hash = "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df", size = 128369 },
438
+ ]
439
+
440
+ [[package]]
441
+ name = "uvicorn"
442
+ version = "0.34.0"
443
+ source = { registry = "https://pypi.org/simple" }
444
+ dependencies = [
445
+ { name = "click" },
446
+ { name = "h11" },
447
+ { name = "typing-extensions", marker = "python_full_version < '3.11'" },
448
+ ]
449
+ sdist = { url = "https://files.pythonhosted.org/packages/4b/4d/938bd85e5bf2edeec766267a5015ad969730bb91e31b44021dfe8b22df6c/uvicorn-0.34.0.tar.gz", hash = "sha256:404051050cd7e905de2c9a7e61790943440b3416f49cb409f965d9dcd0fa73e9", size = 76568 }
450
+ wheels = [
451
+ { url = "https://files.pythonhosted.org/packages/61/14/33a3a1352cfa71812a3a21e8c9bfb83f60b0011f5e36f2b1399d51928209/uvicorn-0.34.0-py3-none-any.whl", hash = "sha256:023dc038422502fa28a09c7a30bf2b6991512da7dcdb8fd35fe57cfc154126f4", size = 62315 },
452
+ ]
453
+
454
+ [[package]]
455
+ name = "volcengine-python-sdk"
456
+ version = "1.1.3"
457
+ source = { registry = "https://pypi.org/simple" }
458
+ dependencies = [
459
+ { name = "certifi" },
460
+ { name = "python-dateutil" },
461
+ { name = "six" },
462
+ { name = "urllib3" },
463
+ ]
464
+ sdist = { url = "https://files.pythonhosted.org/packages/7c/b3/86cc8c8a1e1657b37fe562aeb54b3717af1bb57100f1e37d7c6c5af42914/volcengine-python-sdk-1.1.3.tar.gz", hash = "sha256:0cb21a34acb0d302b68eaafd468956aa326f20bcb735c6ba48d847939cb3309b", size = 3634893 }