agentr 0.1.0__tar.gz → 0.1.2__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.
- {agentr-0.1.0 → agentr-0.1.2}/PKG-INFO +3 -2
- {agentr-0.1.0 → agentr-0.1.2}/pyproject.toml +3 -2
- agentr-0.1.2/src/agentr/application.py +50 -0
- agentr-0.1.2/src/agentr/applications/zenquotes/app.py +21 -0
- {agentr-0.1.0 → agentr-0.1.2}/src/agentr/cli.py +6 -0
- agentr-0.1.2/src/agentr/mcp.py +9 -0
- agentr-0.1.2/src/agentr/server.py +33 -0
- agentr-0.1.2/src/agentr/store.py +35 -0
- agentr-0.1.2/uv.lock +347 -0
- agentr-0.1.0/openapi.yaml +0 -727
- agentr-0.1.0/src/agentr/server.py +0 -0
- agentr-0.1.0/uv.lock +0 -132
- {agentr-0.1.0 → agentr-0.1.2}/.gitignore +0 -0
- {agentr-0.1.0 → agentr-0.1.2}/.python-version +0 -0
- {agentr-0.1.0 → agentr-0.1.2}/README.md +0 -0
- {agentr-0.1.0 → agentr-0.1.2}/src/agentr/__init__.py +0 -0
- {agentr-0.1.0 → agentr-0.1.2}/src/agentr/py.typed +0 -0
- {agentr-0.1.0 → agentr-0.1.2}/src/agentr/utils/openapi.py +0 -0
@@ -1,8 +1,9 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: agentr
|
3
|
-
Version: 0.1.
|
3
|
+
Version: 0.1.2
|
4
4
|
Summary: Add your description here
|
5
5
|
Author-email: Manoj Bajaj <manojbajaj95@gmail.com>
|
6
|
-
Requires-Python: >=3.
|
6
|
+
Requires-Python: >=3.11
|
7
|
+
Requires-Dist: mcp>=1.5.0
|
7
8
|
Requires-Dist: pyyaml>=6.0.2
|
8
9
|
Requires-Dist: typer>=0.15.2
|
@@ -1,13 +1,14 @@
|
|
1
1
|
[project]
|
2
2
|
name = "agentr"
|
3
|
-
version = "0.1.
|
3
|
+
version = "0.1.2"
|
4
4
|
description = "Add your description here"
|
5
5
|
readme = "README.md"
|
6
6
|
authors = [
|
7
7
|
{ name = "Manoj Bajaj", email = "manojbajaj95@gmail.com" }
|
8
8
|
]
|
9
|
-
requires-python = ">=3.
|
9
|
+
requires-python = ">=3.11"
|
10
10
|
dependencies = [
|
11
|
+
"mcp>=1.5.0",
|
11
12
|
"pyyaml>=6.0.2",
|
12
13
|
"typer>=0.15.2",
|
13
14
|
]
|
@@ -0,0 +1,50 @@
|
|
1
|
+
from abc import ABC, abstractmethod
|
2
|
+
from agentr.store import Store
|
3
|
+
import httpx
|
4
|
+
|
5
|
+
class Application(ABC):
|
6
|
+
def __init__(self, name: str, **kwargs):
|
7
|
+
self.name = name
|
8
|
+
|
9
|
+
@abstractmethod
|
10
|
+
def list_tools(self):
|
11
|
+
pass
|
12
|
+
|
13
|
+
|
14
|
+
class APIApplication(Application):
|
15
|
+
def __init__(self, name: str, store: Store, **kwargs):
|
16
|
+
super().__init__(name, **kwargs)
|
17
|
+
self.store = store
|
18
|
+
|
19
|
+
def _get_headers(self):
|
20
|
+
return {}
|
21
|
+
|
22
|
+
def _get(self, url, params=None):
|
23
|
+
headers = self._get_headers()
|
24
|
+
response = httpx.get(url, headers=headers, params=params)
|
25
|
+
return response
|
26
|
+
|
27
|
+
def _post(self, url, data):
|
28
|
+
headers = self._get_headers()
|
29
|
+
response = httpx.post(url, headers=headers, data=data)
|
30
|
+
return response
|
31
|
+
|
32
|
+
def _put(self, url, data):
|
33
|
+
headers = self._get_headers()
|
34
|
+
response = httpx.put(url, headers=headers, data=data)
|
35
|
+
return response
|
36
|
+
|
37
|
+
def _delete(self, url):
|
38
|
+
headers = self._get_headers()
|
39
|
+
response = httpx.delete(url, headers=headers)
|
40
|
+
return response
|
41
|
+
|
42
|
+
def validate(self):
|
43
|
+
pass
|
44
|
+
|
45
|
+
def authorize(self):
|
46
|
+
pass
|
47
|
+
|
48
|
+
@abstractmethod
|
49
|
+
def list_tools(self):
|
50
|
+
pass
|
@@ -0,0 +1,21 @@
|
|
1
|
+
from agentr.application import APIApplication
|
2
|
+
|
3
|
+
|
4
|
+
class ZenQuoteApp(APIApplication):
|
5
|
+
def __init__(self, **kwargs) -> None:
|
6
|
+
super().__init__(name="zenquote", **kwargs)
|
7
|
+
|
8
|
+
def get_quote(self) -> str:
|
9
|
+
"""Get an inspirational quote from the Zen Quotes API
|
10
|
+
|
11
|
+
Returns:
|
12
|
+
A random inspirational quote
|
13
|
+
"""
|
14
|
+
url = "https://zenquotes.io/api/random"
|
15
|
+
response = self._get(url)
|
16
|
+
data = response.json()
|
17
|
+
quote_data = data[0]
|
18
|
+
return f"{quote_data['q']} - {quote_data['a']}"
|
19
|
+
|
20
|
+
def list_tools(self):
|
21
|
+
return [self.get_quote]
|
@@ -25,5 +25,11 @@ def generate(schema_path: Path = typer.Option(..., "--schema", "-s")):
|
|
25
25
|
code = generate_api_client(schema)
|
26
26
|
print(code)
|
27
27
|
|
28
|
+
@app.command()
|
29
|
+
def run():
|
30
|
+
"""Run the MCP server"""
|
31
|
+
from agentr.mcp import mcp
|
32
|
+
mcp.run()
|
33
|
+
|
28
34
|
if __name__ == "__main__":
|
29
35
|
app()
|
@@ -0,0 +1,33 @@
|
|
1
|
+
from abc import ABC, abstractmethod
|
2
|
+
from mcp.server.fastmcp import FastMCP
|
3
|
+
|
4
|
+
from agentr.applications.zenquotes.app import ZenQuoteApp
|
5
|
+
from agentr.store import Store
|
6
|
+
|
7
|
+
class Server(FastMCP, ABC):
|
8
|
+
"""
|
9
|
+
Server is responsible for managing the applications and the store
|
10
|
+
It also acts as a router for the applications, and exposed to the client
|
11
|
+
|
12
|
+
"""
|
13
|
+
def __init__(self, name: str, description: str, store: Store, **kwargs):
|
14
|
+
self.store = store
|
15
|
+
super().__init__(name, description, **kwargs)
|
16
|
+
|
17
|
+
|
18
|
+
class TestServer(Server):
|
19
|
+
"""
|
20
|
+
Test server for development purposes
|
21
|
+
"""
|
22
|
+
def __init__(self, **kwargs):
|
23
|
+
super().__init__(**kwargs)
|
24
|
+
self.apps_list = ["zenquotes"]
|
25
|
+
self.__load_apps()
|
26
|
+
|
27
|
+
def __load_apps(self):
|
28
|
+
self.apps = []
|
29
|
+
for app in self.apps_list:
|
30
|
+
if app == "zenquotes":
|
31
|
+
app = ZenQuoteApp(store=self.store)
|
32
|
+
tools = app.list_tools()
|
33
|
+
self.add_tool(tools[0])
|
@@ -0,0 +1,35 @@
|
|
1
|
+
|
2
|
+
from abc import ABC, abstractmethod
|
3
|
+
|
4
|
+
|
5
|
+
class Store(ABC):
|
6
|
+
@abstractmethod
|
7
|
+
def get(self, key: str):
|
8
|
+
pass
|
9
|
+
|
10
|
+
@abstractmethod
|
11
|
+
def set(self, key: str, value: str):
|
12
|
+
pass
|
13
|
+
|
14
|
+
@abstractmethod
|
15
|
+
def delete(self, key: str):
|
16
|
+
pass
|
17
|
+
|
18
|
+
class MemoryStore:
|
19
|
+
"""
|
20
|
+
Acts as credential store for the applications.
|
21
|
+
Responsible for storing and retrieving credentials.
|
22
|
+
Ideally should be a key value store
|
23
|
+
"""
|
24
|
+
def __init__(self):
|
25
|
+
self.data = {}
|
26
|
+
|
27
|
+
def get(self, key: str):
|
28
|
+
return self.data.get(key)
|
29
|
+
|
30
|
+
def set(self, key: str, value: str):
|
31
|
+
self.data[key] = value
|
32
|
+
|
33
|
+
def delete(self, key: str):
|
34
|
+
del self.data[key]
|
35
|
+
|
agentr-0.1.2/uv.lock
ADDED
@@ -0,0 +1,347 @@
|
|
1
|
+
version = 1
|
2
|
+
revision = 1
|
3
|
+
requires-python = ">=3.13"
|
4
|
+
|
5
|
+
[[package]]
|
6
|
+
name = "agentr"
|
7
|
+
version = "0.1.0"
|
8
|
+
source = { editable = "." }
|
9
|
+
dependencies = [
|
10
|
+
{ name = "mcp" },
|
11
|
+
{ name = "pyyaml" },
|
12
|
+
{ name = "typer" },
|
13
|
+
]
|
14
|
+
|
15
|
+
[package.metadata]
|
16
|
+
requires-dist = [
|
17
|
+
{ name = "mcp", specifier = ">=1.5.0" },
|
18
|
+
{ name = "pyyaml", specifier = ">=6.0.2" },
|
19
|
+
{ name = "typer", specifier = ">=0.15.2" },
|
20
|
+
]
|
21
|
+
|
22
|
+
[[package]]
|
23
|
+
name = "annotated-types"
|
24
|
+
version = "0.7.0"
|
25
|
+
source = { registry = "https://pypi.org/simple" }
|
26
|
+
sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081 }
|
27
|
+
wheels = [
|
28
|
+
{ url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 },
|
29
|
+
]
|
30
|
+
|
31
|
+
[[package]]
|
32
|
+
name = "anyio"
|
33
|
+
version = "4.9.0"
|
34
|
+
source = { registry = "https://pypi.org/simple" }
|
35
|
+
dependencies = [
|
36
|
+
{ name = "idna" },
|
37
|
+
{ name = "sniffio" },
|
38
|
+
]
|
39
|
+
sdist = { url = "https://files.pythonhosted.org/packages/95/7d/4c1bd541d4dffa1b52bd83fb8527089e097a106fc90b467a7313b105f840/anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028", size = 190949 }
|
40
|
+
wheels = [
|
41
|
+
{ url = "https://files.pythonhosted.org/packages/a1/ee/48ca1a7c89ffec8b6a0c5d02b89c305671d5ffd8d3c94acf8b8c408575bb/anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c", size = 100916 },
|
42
|
+
]
|
43
|
+
|
44
|
+
[[package]]
|
45
|
+
name = "certifi"
|
46
|
+
version = "2025.1.31"
|
47
|
+
source = { registry = "https://pypi.org/simple" }
|
48
|
+
sdist = { url = "https://files.pythonhosted.org/packages/1c/ab/c9f1e32b7b1bf505bf26f0ef697775960db7932abeb7b516de930ba2705f/certifi-2025.1.31.tar.gz", hash = "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651", size = 167577 }
|
49
|
+
wheels = [
|
50
|
+
{ url = "https://files.pythonhosted.org/packages/38/fc/bce832fd4fd99766c04d1ee0eead6b0ec6486fb100ae5e74c1d91292b982/certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe", size = 166393 },
|
51
|
+
]
|
52
|
+
|
53
|
+
[[package]]
|
54
|
+
name = "click"
|
55
|
+
version = "8.1.8"
|
56
|
+
source = { registry = "https://pypi.org/simple" }
|
57
|
+
dependencies = [
|
58
|
+
{ name = "colorama", marker = "sys_platform == 'win32'" },
|
59
|
+
]
|
60
|
+
sdist = { url = "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", size = 226593 }
|
61
|
+
wheels = [
|
62
|
+
{ url = "https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2", size = 98188 },
|
63
|
+
]
|
64
|
+
|
65
|
+
[[package]]
|
66
|
+
name = "colorama"
|
67
|
+
version = "0.4.6"
|
68
|
+
source = { registry = "https://pypi.org/simple" }
|
69
|
+
sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 }
|
70
|
+
wheels = [
|
71
|
+
{ url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 },
|
72
|
+
]
|
73
|
+
|
74
|
+
[[package]]
|
75
|
+
name = "h11"
|
76
|
+
version = "0.14.0"
|
77
|
+
source = { registry = "https://pypi.org/simple" }
|
78
|
+
sdist = { url = "https://files.pythonhosted.org/packages/f5/38/3af3d3633a34a3316095b39c8e8fb4853a28a536e55d347bd8d8e9a14b03/h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d", size = 100418 }
|
79
|
+
wheels = [
|
80
|
+
{ url = "https://files.pythonhosted.org/packages/95/04/ff642e65ad6b90db43e668d70ffb6736436c7ce41fcc549f4e9472234127/h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761", size = 58259 },
|
81
|
+
]
|
82
|
+
|
83
|
+
[[package]]
|
84
|
+
name = "httpcore"
|
85
|
+
version = "1.0.7"
|
86
|
+
source = { registry = "https://pypi.org/simple" }
|
87
|
+
dependencies = [
|
88
|
+
{ name = "certifi" },
|
89
|
+
{ name = "h11" },
|
90
|
+
]
|
91
|
+
sdist = { url = "https://files.pythonhosted.org/packages/6a/41/d7d0a89eb493922c37d343b607bc1b5da7f5be7e383740b4753ad8943e90/httpcore-1.0.7.tar.gz", hash = "sha256:8551cb62a169ec7162ac7be8d4817d561f60e08eaa485234898414bb5a8a0b4c", size = 85196 }
|
92
|
+
wheels = [
|
93
|
+
{ url = "https://files.pythonhosted.org/packages/87/f5/72347bc88306acb359581ac4d52f23c0ef445b57157adedb9aee0cd689d2/httpcore-1.0.7-py3-none-any.whl", hash = "sha256:a3fff8f43dc260d5bd363d9f9cf1830fa3a458b332856f34282de498ed420edd", size = 78551 },
|
94
|
+
]
|
95
|
+
|
96
|
+
[[package]]
|
97
|
+
name = "httpx"
|
98
|
+
version = "0.28.1"
|
99
|
+
source = { registry = "https://pypi.org/simple" }
|
100
|
+
dependencies = [
|
101
|
+
{ name = "anyio" },
|
102
|
+
{ name = "certifi" },
|
103
|
+
{ name = "httpcore" },
|
104
|
+
{ name = "idna" },
|
105
|
+
]
|
106
|
+
sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406 }
|
107
|
+
wheels = [
|
108
|
+
{ url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517 },
|
109
|
+
]
|
110
|
+
|
111
|
+
[[package]]
|
112
|
+
name = "httpx-sse"
|
113
|
+
version = "0.4.0"
|
114
|
+
source = { registry = "https://pypi.org/simple" }
|
115
|
+
sdist = { url = "https://files.pythonhosted.org/packages/4c/60/8f4281fa9bbf3c8034fd54c0e7412e66edbab6bc74c4996bd616f8d0406e/httpx-sse-0.4.0.tar.gz", hash = "sha256:1e81a3a3070ce322add1d3529ed42eb5f70817f45ed6ec915ab753f961139721", size = 12624 }
|
116
|
+
wheels = [
|
117
|
+
{ url = "https://files.pythonhosted.org/packages/e1/9b/a181f281f65d776426002f330c31849b86b31fc9d848db62e16f03ff739f/httpx_sse-0.4.0-py3-none-any.whl", hash = "sha256:f329af6eae57eaa2bdfd962b42524764af68075ea87370a2de920af5341e318f", size = 7819 },
|
118
|
+
]
|
119
|
+
|
120
|
+
[[package]]
|
121
|
+
name = "idna"
|
122
|
+
version = "3.10"
|
123
|
+
source = { registry = "https://pypi.org/simple" }
|
124
|
+
sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490 }
|
125
|
+
wheels = [
|
126
|
+
{ url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 },
|
127
|
+
]
|
128
|
+
|
129
|
+
[[package]]
|
130
|
+
name = "markdown-it-py"
|
131
|
+
version = "3.0.0"
|
132
|
+
source = { registry = "https://pypi.org/simple" }
|
133
|
+
dependencies = [
|
134
|
+
{ name = "mdurl" },
|
135
|
+
]
|
136
|
+
sdist = { url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", size = 74596 }
|
137
|
+
wheels = [
|
138
|
+
{ url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528 },
|
139
|
+
]
|
140
|
+
|
141
|
+
[[package]]
|
142
|
+
name = "mcp"
|
143
|
+
version = "1.5.0"
|
144
|
+
source = { registry = "https://pypi.org/simple" }
|
145
|
+
dependencies = [
|
146
|
+
{ name = "anyio" },
|
147
|
+
{ name = "httpx" },
|
148
|
+
{ name = "httpx-sse" },
|
149
|
+
{ name = "pydantic" },
|
150
|
+
{ name = "pydantic-settings" },
|
151
|
+
{ name = "sse-starlette" },
|
152
|
+
{ name = "starlette" },
|
153
|
+
{ name = "uvicorn" },
|
154
|
+
]
|
155
|
+
sdist = { url = "https://files.pythonhosted.org/packages/6d/c9/c55764824e893fdebe777ac7223200986a275c3191dba9169f8eb6d7c978/mcp-1.5.0.tar.gz", hash = "sha256:5b2766c05e68e01a2034875e250139839498c61792163a7b221fc170c12f5aa9", size = 159128 }
|
156
|
+
wheels = [
|
157
|
+
{ url = "https://files.pythonhosted.org/packages/c1/d1/3ff566ecf322077d861f1a68a1ff025cad337417bd66ad22a7c6f7dfcfaf/mcp-1.5.0-py3-none-any.whl", hash = "sha256:51c3f35ce93cb702f7513c12406bbea9665ef75a08db909200b07da9db641527", size = 73734 },
|
158
|
+
]
|
159
|
+
|
160
|
+
[[package]]
|
161
|
+
name = "mdurl"
|
162
|
+
version = "0.1.2"
|
163
|
+
source = { registry = "https://pypi.org/simple" }
|
164
|
+
sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729 }
|
165
|
+
wheels = [
|
166
|
+
{ url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979 },
|
167
|
+
]
|
168
|
+
|
169
|
+
[[package]]
|
170
|
+
name = "pydantic"
|
171
|
+
version = "2.10.6"
|
172
|
+
source = { registry = "https://pypi.org/simple" }
|
173
|
+
dependencies = [
|
174
|
+
{ name = "annotated-types" },
|
175
|
+
{ name = "pydantic-core" },
|
176
|
+
{ name = "typing-extensions" },
|
177
|
+
]
|
178
|
+
sdist = { url = "https://files.pythonhosted.org/packages/b7/ae/d5220c5c52b158b1de7ca89fc5edb72f304a70a4c540c84c8844bf4008de/pydantic-2.10.6.tar.gz", hash = "sha256:ca5daa827cce33de7a42be142548b0096bf05a7e7b365aebfa5f8eeec7128236", size = 761681 }
|
179
|
+
wheels = [
|
180
|
+
{ url = "https://files.pythonhosted.org/packages/f4/3c/8cc1cc84deffa6e25d2d0c688ebb80635dfdbf1dbea3e30c541c8cf4d860/pydantic-2.10.6-py3-none-any.whl", hash = "sha256:427d664bf0b8a2b34ff5dd0f5a18df00591adcee7198fbd71981054cef37b584", size = 431696 },
|
181
|
+
]
|
182
|
+
|
183
|
+
[[package]]
|
184
|
+
name = "pydantic-core"
|
185
|
+
version = "2.27.2"
|
186
|
+
source = { registry = "https://pypi.org/simple" }
|
187
|
+
dependencies = [
|
188
|
+
{ name = "typing-extensions" },
|
189
|
+
]
|
190
|
+
sdist = { url = "https://files.pythonhosted.org/packages/fc/01/f3e5ac5e7c25833db5eb555f7b7ab24cd6f8c322d3a3ad2d67a952dc0abc/pydantic_core-2.27.2.tar.gz", hash = "sha256:eb026e5a4c1fee05726072337ff51d1efb6f59090b7da90d30ea58625b1ffb39", size = 413443 }
|
191
|
+
wheels = [
|
192
|
+
{ url = "https://files.pythonhosted.org/packages/41/b1/9bc383f48f8002f99104e3acff6cba1231b29ef76cfa45d1506a5cad1f84/pydantic_core-2.27.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7d14bd329640e63852364c306f4d23eb744e0f8193148d4044dd3dacdaacbd8b", size = 1892709 },
|
193
|
+
{ url = "https://files.pythonhosted.org/packages/10/6c/e62b8657b834f3eb2961b49ec8e301eb99946245e70bf42c8817350cbefc/pydantic_core-2.27.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82f91663004eb8ed30ff478d77c4d1179b3563df6cdb15c0817cd1cdaf34d154", size = 1811273 },
|
194
|
+
{ url = "https://files.pythonhosted.org/packages/ba/15/52cfe49c8c986e081b863b102d6b859d9defc63446b642ccbbb3742bf371/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71b24c7d61131bb83df10cc7e687433609963a944ccf45190cfc21e0887b08c9", size = 1823027 },
|
195
|
+
{ url = "https://files.pythonhosted.org/packages/b1/1c/b6f402cfc18ec0024120602bdbcebc7bdd5b856528c013bd4d13865ca473/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa8e459d4954f608fa26116118bb67f56b93b209c39b008277ace29937453dc9", size = 1868888 },
|
196
|
+
{ url = "https://files.pythonhosted.org/packages/bd/7b/8cb75b66ac37bc2975a3b7de99f3c6f355fcc4d89820b61dffa8f1e81677/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce8918cbebc8da707ba805b7fd0b382816858728ae7fe19a942080c24e5b7cd1", size = 2037738 },
|
197
|
+
{ url = "https://files.pythonhosted.org/packages/c8/f1/786d8fe78970a06f61df22cba58e365ce304bf9b9f46cc71c8c424e0c334/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eda3f5c2a021bbc5d976107bb302e0131351c2ba54343f8a496dc8783d3d3a6a", size = 2685138 },
|
198
|
+
{ url = "https://files.pythonhosted.org/packages/a6/74/d12b2cd841d8724dc8ffb13fc5cef86566a53ed358103150209ecd5d1999/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd8086fa684c4775c27f03f062cbb9eaa6e17f064307e86b21b9e0abc9c0f02e", size = 1997025 },
|
199
|
+
{ url = "https://files.pythonhosted.org/packages/a0/6e/940bcd631bc4d9a06c9539b51f070b66e8f370ed0933f392db6ff350d873/pydantic_core-2.27.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8d9b3388db186ba0c099a6d20f0604a44eabdeef1777ddd94786cdae158729e4", size = 2004633 },
|
200
|
+
{ url = "https://files.pythonhosted.org/packages/50/cc/a46b34f1708d82498c227d5d80ce615b2dd502ddcfd8376fc14a36655af1/pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7a66efda2387de898c8f38c0cf7f14fca0b51a8ef0b24bfea5849f1b3c95af27", size = 1999404 },
|
201
|
+
{ url = "https://files.pythonhosted.org/packages/ca/2d/c365cfa930ed23bc58c41463bae347d1005537dc8db79e998af8ba28d35e/pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:18a101c168e4e092ab40dbc2503bdc0f62010e95d292b27827871dc85450d7ee", size = 2130130 },
|
202
|
+
{ url = "https://files.pythonhosted.org/packages/f4/d7/eb64d015c350b7cdb371145b54d96c919d4db516817f31cd1c650cae3b21/pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ba5dd002f88b78a4215ed2f8ddbdf85e8513382820ba15ad5ad8955ce0ca19a1", size = 2157946 },
|
203
|
+
{ url = "https://files.pythonhosted.org/packages/a4/99/bddde3ddde76c03b65dfd5a66ab436c4e58ffc42927d4ff1198ffbf96f5f/pydantic_core-2.27.2-cp313-cp313-win32.whl", hash = "sha256:1ebaf1d0481914d004a573394f4be3a7616334be70261007e47c2a6fe7e50130", size = 1834387 },
|
204
|
+
{ url = "https://files.pythonhosted.org/packages/71/47/82b5e846e01b26ac6f1893d3c5f9f3a2eb6ba79be26eef0b759b4fe72946/pydantic_core-2.27.2-cp313-cp313-win_amd64.whl", hash = "sha256:953101387ecf2f5652883208769a79e48db18c6df442568a0b5ccd8c2723abee", size = 1990453 },
|
205
|
+
{ url = "https://files.pythonhosted.org/packages/51/b2/b2b50d5ecf21acf870190ae5d093602d95f66c9c31f9d5de6062eb329ad1/pydantic_core-2.27.2-cp313-cp313-win_arm64.whl", hash = "sha256:ac4dbfd1691affb8f48c2c13241a2e3b60ff23247cbcf981759c768b6633cf8b", size = 1885186 },
|
206
|
+
]
|
207
|
+
|
208
|
+
[[package]]
|
209
|
+
name = "pydantic-settings"
|
210
|
+
version = "2.8.1"
|
211
|
+
source = { registry = "https://pypi.org/simple" }
|
212
|
+
dependencies = [
|
213
|
+
{ name = "pydantic" },
|
214
|
+
{ name = "python-dotenv" },
|
215
|
+
]
|
216
|
+
sdist = { url = "https://files.pythonhosted.org/packages/88/82/c79424d7d8c29b994fb01d277da57b0a9b09cc03c3ff875f9bd8a86b2145/pydantic_settings-2.8.1.tar.gz", hash = "sha256:d5c663dfbe9db9d5e1c646b2e161da12f0d734d422ee56f567d0ea2cee4e8585", size = 83550 }
|
217
|
+
wheels = [
|
218
|
+
{ url = "https://files.pythonhosted.org/packages/0b/53/a64f03044927dc47aafe029c42a5b7aabc38dfb813475e0e1bf71c4a59d0/pydantic_settings-2.8.1-py3-none-any.whl", hash = "sha256:81942d5ac3d905f7f3ee1a70df5dfb62d5569c12f51a5a647defc1c3d9ee2e9c", size = 30839 },
|
219
|
+
]
|
220
|
+
|
221
|
+
[[package]]
|
222
|
+
name = "pygments"
|
223
|
+
version = "2.19.1"
|
224
|
+
source = { registry = "https://pypi.org/simple" }
|
225
|
+
sdist = { url = "https://files.pythonhosted.org/packages/7c/2d/c3338d48ea6cc0feb8446d8e6937e1408088a72a39937982cc6111d17f84/pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f", size = 4968581 }
|
226
|
+
wheels = [
|
227
|
+
{ url = "https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c", size = 1225293 },
|
228
|
+
]
|
229
|
+
|
230
|
+
[[package]]
|
231
|
+
name = "python-dotenv"
|
232
|
+
version = "1.0.1"
|
233
|
+
source = { registry = "https://pypi.org/simple" }
|
234
|
+
sdist = { url = "https://files.pythonhosted.org/packages/bc/57/e84d88dfe0aec03b7a2d4327012c1627ab5f03652216c63d49846d7a6c58/python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca", size = 39115 }
|
235
|
+
wheels = [
|
236
|
+
{ url = "https://files.pythonhosted.org/packages/6a/3e/b68c118422ec867fa7ab88444e1274aa40681c606d59ac27de5a5588f082/python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a", size = 19863 },
|
237
|
+
]
|
238
|
+
|
239
|
+
[[package]]
|
240
|
+
name = "pyyaml"
|
241
|
+
version = "6.0.2"
|
242
|
+
source = { registry = "https://pypi.org/simple" }
|
243
|
+
sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631 }
|
244
|
+
wheels = [
|
245
|
+
{ url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309 },
|
246
|
+
{ url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679 },
|
247
|
+
{ url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428 },
|
248
|
+
{ url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361 },
|
249
|
+
{ url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523 },
|
250
|
+
{ url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660 },
|
251
|
+
{ url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597 },
|
252
|
+
{ url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527 },
|
253
|
+
{ url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446 },
|
254
|
+
]
|
255
|
+
|
256
|
+
[[package]]
|
257
|
+
name = "rich"
|
258
|
+
version = "13.9.4"
|
259
|
+
source = { registry = "https://pypi.org/simple" }
|
260
|
+
dependencies = [
|
261
|
+
{ name = "markdown-it-py" },
|
262
|
+
{ name = "pygments" },
|
263
|
+
]
|
264
|
+
sdist = { url = "https://files.pythonhosted.org/packages/ab/3a/0316b28d0761c6734d6bc14e770d85506c986c85ffb239e688eeaab2c2bc/rich-13.9.4.tar.gz", hash = "sha256:439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098", size = 223149 }
|
265
|
+
wheels = [
|
266
|
+
{ url = "https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl", hash = "sha256:6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90", size = 242424 },
|
267
|
+
]
|
268
|
+
|
269
|
+
[[package]]
|
270
|
+
name = "shellingham"
|
271
|
+
version = "1.5.4"
|
272
|
+
source = { registry = "https://pypi.org/simple" }
|
273
|
+
sdist = { url = "https://files.pythonhosted.org/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de", size = 10310 }
|
274
|
+
wheels = [
|
275
|
+
{ url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755 },
|
276
|
+
]
|
277
|
+
|
278
|
+
[[package]]
|
279
|
+
name = "sniffio"
|
280
|
+
version = "1.3.1"
|
281
|
+
source = { registry = "https://pypi.org/simple" }
|
282
|
+
sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372 }
|
283
|
+
wheels = [
|
284
|
+
{ url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235 },
|
285
|
+
]
|
286
|
+
|
287
|
+
[[package]]
|
288
|
+
name = "sse-starlette"
|
289
|
+
version = "2.2.1"
|
290
|
+
source = { registry = "https://pypi.org/simple" }
|
291
|
+
dependencies = [
|
292
|
+
{ name = "anyio" },
|
293
|
+
{ name = "starlette" },
|
294
|
+
]
|
295
|
+
sdist = { url = "https://files.pythonhosted.org/packages/71/a4/80d2a11af59fe75b48230846989e93979c892d3a20016b42bb44edb9e398/sse_starlette-2.2.1.tar.gz", hash = "sha256:54470d5f19274aeed6b2d473430b08b4b379ea851d953b11d7f1c4a2c118b419", size = 17376 }
|
296
|
+
wheels = [
|
297
|
+
{ url = "https://files.pythonhosted.org/packages/d9/e0/5b8bd393f27f4a62461c5cf2479c75a2cc2ffa330976f9f00f5f6e4f50eb/sse_starlette-2.2.1-py3-none-any.whl", hash = "sha256:6410a3d3ba0c89e7675d4c273a301d64649c03a5ef1ca101f10b47f895fd0e99", size = 10120 },
|
298
|
+
]
|
299
|
+
|
300
|
+
[[package]]
|
301
|
+
name = "starlette"
|
302
|
+
version = "0.46.1"
|
303
|
+
source = { registry = "https://pypi.org/simple" }
|
304
|
+
dependencies = [
|
305
|
+
{ name = "anyio" },
|
306
|
+
]
|
307
|
+
sdist = { url = "https://files.pythonhosted.org/packages/04/1b/52b27f2e13ceedc79a908e29eac426a63465a1a01248e5f24aa36a62aeb3/starlette-0.46.1.tar.gz", hash = "sha256:3c88d58ee4bd1bb807c0d1acb381838afc7752f9ddaec81bbe4383611d833230", size = 2580102 }
|
308
|
+
wheels = [
|
309
|
+
{ url = "https://files.pythonhosted.org/packages/a0/4b/528ccf7a982216885a1ff4908e886b8fb5f19862d1962f56a3fce2435a70/starlette-0.46.1-py3-none-any.whl", hash = "sha256:77c74ed9d2720138b25875133f3a2dae6d854af2ec37dceb56aef370c1d8a227", size = 71995 },
|
310
|
+
]
|
311
|
+
|
312
|
+
[[package]]
|
313
|
+
name = "typer"
|
314
|
+
version = "0.15.2"
|
315
|
+
source = { registry = "https://pypi.org/simple" }
|
316
|
+
dependencies = [
|
317
|
+
{ name = "click" },
|
318
|
+
{ name = "rich" },
|
319
|
+
{ name = "shellingham" },
|
320
|
+
{ name = "typing-extensions" },
|
321
|
+
]
|
322
|
+
sdist = { url = "https://files.pythonhosted.org/packages/8b/6f/3991f0f1c7fcb2df31aef28e0594d8d54b05393a0e4e34c65e475c2a5d41/typer-0.15.2.tar.gz", hash = "sha256:ab2fab47533a813c49fe1f16b1a370fd5819099c00b119e0633df65f22144ba5", size = 100711 }
|
323
|
+
wheels = [
|
324
|
+
{ url = "https://files.pythonhosted.org/packages/7f/fc/5b29fea8cee020515ca82cc68e3b8e1e34bb19a3535ad854cac9257b414c/typer-0.15.2-py3-none-any.whl", hash = "sha256:46a499c6107d645a9c13f7ee46c5d5096cae6f5fc57dd11eccbbb9ae3e44ddfc", size = 45061 },
|
325
|
+
]
|
326
|
+
|
327
|
+
[[package]]
|
328
|
+
name = "typing-extensions"
|
329
|
+
version = "4.12.2"
|
330
|
+
source = { registry = "https://pypi.org/simple" }
|
331
|
+
sdist = { url = "https://files.pythonhosted.org/packages/df/db/f35a00659bc03fec321ba8bce9420de607a1d37f8342eee1863174c69557/typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8", size = 85321 }
|
332
|
+
wheels = [
|
333
|
+
{ url = "https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", size = 37438 },
|
334
|
+
]
|
335
|
+
|
336
|
+
[[package]]
|
337
|
+
name = "uvicorn"
|
338
|
+
version = "0.34.0"
|
339
|
+
source = { registry = "https://pypi.org/simple" }
|
340
|
+
dependencies = [
|
341
|
+
{ name = "click" },
|
342
|
+
{ name = "h11" },
|
343
|
+
]
|
344
|
+
sdist = { url = "https://files.pythonhosted.org/packages/4b/4d/938bd85e5bf2edeec766267a5015ad969730bb91e31b44021dfe8b22df6c/uvicorn-0.34.0.tar.gz", hash = "sha256:404051050cd7e905de2c9a7e61790943440b3416f49cb409f965d9dcd0fa73e9", size = 76568 }
|
345
|
+
wheels = [
|
346
|
+
{ url = "https://files.pythonhosted.org/packages/61/14/33a3a1352cfa71812a3a21e8c9bfb83f60b0011f5e36f2b1399d51928209/uvicorn-0.34.0-py3-none-any.whl", hash = "sha256:023dc038422502fa28a09c7a30bf2b6991512da7dcdb8fd35fe57cfc154126f4", size = 62315 },
|
347
|
+
]
|