Restructure axiom project
Browse files- Dockerfile +2 -3
- LICENSE +21 -0
- chainlit.md +6 -1
- public/msg_icons/usb.png +0 -0
- pyproject.toml +41 -1
- src/axiom/__init__.py +0 -0
- agent.py → src/axiom/agent.py +0 -0
- app.py → src/axiom/app.py +3 -2
- prompts.py → src/axiom/prompts.py +0 -0
- uv.lock +85 -27
Dockerfile
CHANGED
|
@@ -32,12 +32,11 @@ ENV HOME=/home/user \
|
|
| 32 |
WORKDIR $HOME/app
|
| 33 |
|
| 34 |
# Copy application files with correct ownership
|
| 35 |
-
COPY --chown=user:user
|
| 36 |
-
COPY --chown=user:user . .
|
| 37 |
|
| 38 |
# Expose the necessary ports
|
| 39 |
EXPOSE 8082
|
| 40 |
EXPOSE 7860
|
| 41 |
|
| 42 |
# Run the two required commands concurrently using bash process control
|
| 43 |
-
CMD ["bash", "-c", "uv run mcpdoc --yaml docs_config.yaml --transport sse --port 8082 --host localhost & uv run chainlit run app.py -h --port 7860 --host 0.0.0.0"]
|
|
|
|
| 32 |
WORKDIR $HOME/app
|
| 33 |
|
| 34 |
# Copy application files with correct ownership
|
| 35 |
+
COPY --chown=user:user . .
|
|
|
|
| 36 |
|
| 37 |
# Expose the necessary ports
|
| 38 |
EXPOSE 8082
|
| 39 |
EXPOSE 7860
|
| 40 |
|
| 41 |
# Run the two required commands concurrently using bash process control
|
| 42 |
+
CMD ["bash", "-c", "uv run mcpdoc --yaml docs_config.yaml --transport sse --port 8082 --host localhost & uv run chainlit run src/axiom/app.py -h --port 7860 --host 0.0.0.0"]
|
LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
MIT License
|
| 2 |
+
|
| 3 |
+
Copyright (c) 2024 LangChain
|
| 4 |
+
|
| 5 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 6 |
+
of this software and associated documentation files (the "Software"), to deal
|
| 7 |
+
in the Software without restriction, including without limitation the rights
|
| 8 |
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 9 |
+
copies of the Software, and to permit persons to whom the Software is
|
| 10 |
+
furnished to do so, subject to the following conditions:
|
| 11 |
+
|
| 12 |
+
The above copyright notice and this permission notice shall be included in all
|
| 13 |
+
copies or substantial portions of the Software.
|
| 14 |
+
|
| 15 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 16 |
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 17 |
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
| 18 |
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
| 19 |
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
| 20 |
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
| 21 |
+
SOFTWARE.
|
chainlit.md
CHANGED
|
@@ -1,10 +1,13 @@
|
|
| 1 |
# Axiom - A Docs Expert Agent
|
| 2 |
|
| 3 |
-
|
| 4 |
|
| 5 |
## Features
|
| 6 |
|
| 7 |
- 🤖 Interactive chat interface
|
|
|
|
|
|
|
|
|
|
| 8 |
- 📚 Access to multiple documentation sources
|
| 9 |
- 🎨 Support for image processing and analysis
|
| 10 |
- 📈 Use images and graphs to create production-ready code
|
|
@@ -32,3 +35,5 @@ The agent has access to following documentations:
|
|
| 32 |
You can access the GitHub repository here:
|
| 33 |
|
| 34 |
🔹[Axiom](https://github.com/aasherkamal216/Axiom)
|
|
|
|
|
|
|
|
|
| 1 |
# Axiom - A Docs Expert Agent
|
| 2 |
|
| 3 |
+
Axiom is AI Agent specialized in modern AI frameworks, libraries and tools. It can assist in creating AI Agents, RAG systems, chatbots, authentication mechanisms, and even full-stack development. It is built with LangGraph, MCP Docs Server, Chainlit and Gemini, designed to help users create different projects using natural language instructions.
|
| 4 |
|
| 5 |
## Features
|
| 6 |
|
| 7 |
- 🤖 Interactive chat interface
|
| 8 |
+
- 🧪 Supports two modes:
|
| 9 |
+
- **Agent Mode:** Ideal for complex tasks like brainstorming, code generation, and web apps creation.
|
| 10 |
+
- **Chat Mode:** Suited for quick information retrieval and answering questions from the provided documentations.
|
| 11 |
- 📚 Access to multiple documentation sources
|
| 12 |
- 🎨 Support for image processing and analysis
|
| 13 |
- 📈 Use images and graphs to create production-ready code
|
|
|
|
| 35 |
You can access the GitHub repository here:
|
| 36 |
|
| 37 |
🔹[Axiom](https://github.com/aasherkamal216/Axiom)
|
| 38 |
+
|
| 39 |
+
---
|
public/msg_icons/usb.png
CHANGED
|
|
|
|
pyproject.toml
CHANGED
|
@@ -1,5 +1,5 @@
|
|
| 1 |
[project]
|
| 2 |
-
name = "
|
| 3 |
version = "0.1.0"
|
| 4 |
description = "Add your description here"
|
| 5 |
readme = "README.md"
|
|
@@ -14,3 +14,43 @@ dependencies = [
|
|
| 14 |
"python-dotenv>=1.0.1",
|
| 15 |
"websockets>=15.0.1",
|
| 16 |
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
[project]
|
| 2 |
+
name = "axiom-agent"
|
| 3 |
version = "0.1.0"
|
| 4 |
description = "Add your description here"
|
| 5 |
readme = "README.md"
|
|
|
|
| 14 |
"python-dotenv>=1.0.1",
|
| 15 |
"websockets>=15.0.1",
|
| 16 |
]
|
| 17 |
+
|
| 18 |
+
[project.optional-dependencies]
|
| 19 |
+
dev = ["mypy>=1.11.1", "ruff>=0.6.1"]
|
| 20 |
+
|
| 21 |
+
[build-system]
|
| 22 |
+
requires = ["setuptools>=73.0.0", "wheel"]
|
| 23 |
+
build-backend = "setuptools.build_meta"
|
| 24 |
+
|
| 25 |
+
[tool.setuptools]
|
| 26 |
+
packages = ["axiom"]
|
| 27 |
+
[tool.setuptools.package-dir]
|
| 28 |
+
"axiom" = "src/axiom"
|
| 29 |
+
|
| 30 |
+
[tool.setuptools.package-data]
|
| 31 |
+
"*" = ["py.typed"]
|
| 32 |
+
|
| 33 |
+
|
| 34 |
+
[tool.ruff]
|
| 35 |
+
lint.select = [
|
| 36 |
+
"E", # pycodestyle
|
| 37 |
+
"F", # pyflakes
|
| 38 |
+
"I", # isort
|
| 39 |
+
"D", # pydocstyle
|
| 40 |
+
"D401", # First line should be in imperative mood
|
| 41 |
+
"T201",
|
| 42 |
+
"UP",
|
| 43 |
+
]
|
| 44 |
+
lint.ignore = [
|
| 45 |
+
"UP006",
|
| 46 |
+
"UP007",
|
| 47 |
+
# We actually do want to import from typing_extensions
|
| 48 |
+
"UP035",
|
| 49 |
+
# Relax the convention by _not_ requiring documentation for every function parameter.
|
| 50 |
+
"D417",
|
| 51 |
+
"E501",
|
| 52 |
+
]
|
| 53 |
+
[tool.ruff.lint.per-file-ignores]
|
| 54 |
+
"tests/*" = ["D", "UP"]
|
| 55 |
+
[tool.ruff.lint.pydocstyle]
|
| 56 |
+
convention = "google"
|
src/axiom/__init__.py
ADDED
|
File without changes
|
agent.py → src/axiom/agent.py
RENAMED
|
File without changes
|
app.py → src/axiom/app.py
RENAMED
|
@@ -58,6 +58,9 @@ async def set_starters():
|
|
| 58 |
|
| 59 |
]
|
| 60 |
|
|
|
|
|
|
|
|
|
|
| 61 |
@cl.set_chat_profiles
|
| 62 |
async def chat_profile():
|
| 63 |
return [
|
|
@@ -73,7 +76,6 @@ async def chat_profile():
|
|
| 73 |
),
|
| 74 |
]
|
| 75 |
|
| 76 |
-
|
| 77 |
#################################
|
| 78 |
# Chat Settings
|
| 79 |
#################################
|
|
@@ -124,7 +126,6 @@ async def on_message(message: cl.Message):
|
|
| 124 |
# Get model & chat profile from session
|
| 125 |
model = cl.user_session.get("model", "gemini-2.0-flash")
|
| 126 |
answer_mode = cl.user_session.get("chat_profile", "Agent Mode")
|
| 127 |
-
print("=======", type(answer_mode))
|
| 128 |
|
| 129 |
# Prepare the content list for the current message
|
| 130 |
content = []
|
|
|
|
| 58 |
|
| 59 |
]
|
| 60 |
|
| 61 |
+
#################################
|
| 62 |
+
# Response modes for Axiom
|
| 63 |
+
#################################
|
| 64 |
@cl.set_chat_profiles
|
| 65 |
async def chat_profile():
|
| 66 |
return [
|
|
|
|
| 76 |
),
|
| 77 |
]
|
| 78 |
|
|
|
|
| 79 |
#################################
|
| 80 |
# Chat Settings
|
| 81 |
#################################
|
|
|
|
| 126 |
# Get model & chat profile from session
|
| 127 |
model = cl.user_session.get("model", "gemini-2.0-flash")
|
| 128 |
answer_mode = cl.user_session.get("chat_profile", "Agent Mode")
|
|
|
|
| 129 |
|
| 130 |
# Prepare the content list for the current message
|
| 131 |
content = []
|
prompts.py → src/axiom/prompts.py
RENAMED
|
File without changes
|
uv.lock
CHANGED
|
@@ -50,6 +50,41 @@ wheels = [
|
|
| 50 |
{ url = "https://files.pythonhosted.org/packages/3e/4b/40a1dc52fc26695b1e80a9e67dfb0fe7e6ddc57bbc5b61348e40c0045abb/asyncer-0.0.7-py3-none-any.whl", hash = "sha256:f0d579d4f67c4ead52ede3a45c854f462cae569058a8a6a68a4ebccac1c335d8", size = 8476 },
|
| 51 |
]
|
| 52 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 53 |
[[package]]
|
| 54 |
name = "beautifulsoup4"
|
| 55 |
version = "4.13.3"
|
|
@@ -247,33 +282,6 @@ wheels = [
|
|
| 247 |
{ url = "https://files.pythonhosted.org/packages/6e/c6/ac0b6c1e2d138f1002bcf799d330bd6d85084fece321e662a14223794041/Deprecated-1.2.18-py2.py3-none-any.whl", hash = "sha256:bd5011788200372a32418f888e326a09ff80d0214bd961147cfed01b5c018eec", size = 9998 },
|
| 248 |
]
|
| 249 |
|
| 250 |
-
[[package]]
|
| 251 |
-
name = "docs-agent-mcp"
|
| 252 |
-
version = "0.1.0"
|
| 253 |
-
source = { virtual = "." }
|
| 254 |
-
dependencies = [
|
| 255 |
-
{ name = "chainlit" },
|
| 256 |
-
{ name = "langchain-core" },
|
| 257 |
-
{ name = "langchain-google-genai" },
|
| 258 |
-
{ name = "langchain-mcp-adapters" },
|
| 259 |
-
{ name = "langgraph" },
|
| 260 |
-
{ name = "mcpdoc" },
|
| 261 |
-
{ name = "python-dotenv" },
|
| 262 |
-
{ name = "websockets" },
|
| 263 |
-
]
|
| 264 |
-
|
| 265 |
-
[package.metadata]
|
| 266 |
-
requires-dist = [
|
| 267 |
-
{ name = "chainlit", specifier = ">=2.4.201" },
|
| 268 |
-
{ name = "langchain-core", specifier = ">=0.3.47" },
|
| 269 |
-
{ name = "langchain-google-genai", specifier = ">=2.1.0" },
|
| 270 |
-
{ name = "langchain-mcp-adapters", specifier = ">=0.0.5" },
|
| 271 |
-
{ name = "langgraph", specifier = ">=0.3.18" },
|
| 272 |
-
{ name = "mcpdoc", specifier = ">=0.0.4" },
|
| 273 |
-
{ name = "python-dotenv", specifier = ">=1.0.1" },
|
| 274 |
-
{ name = "websockets", specifier = ">=15.0.1" },
|
| 275 |
-
]
|
| 276 |
-
|
| 277 |
[[package]]
|
| 278 |
name = "fastapi"
|
| 279 |
version = "0.115.11"
|
|
@@ -745,6 +753,31 @@ wheels = [
|
|
| 745 |
{ url = "https://files.pythonhosted.org/packages/b6/bc/8bd826dd03e022153bfa1766dcdec4976d6c818865ed54223d71f07862b3/msgpack-1.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:bce7d9e614a04d0883af0b3d4d501171fbfca038f12c77fa838d9f198147a23f", size = 75140 },
|
| 746 |
]
|
| 747 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 748 |
[[package]]
|
| 749 |
name = "mypy-extensions"
|
| 750 |
version = "1.0.0"
|
|
@@ -1195,6 +1228,31 @@ wheels = [
|
|
| 1195 |
{ url = "https://files.pythonhosted.org/packages/49/97/fa78e3d2f65c02c8e1268b9aba606569fe97f6c8f7c2d74394553347c145/rsa-4.9-py3-none-any.whl", hash = "sha256:90260d9058e514786967344d0ef75fa8727eed8a7d2e43ce9f4bcf1b536174f7", size = 34315 },
|
| 1196 |
]
|
| 1197 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1198 |
[[package]]
|
| 1199 |
name = "shellingham"
|
| 1200 |
version = "1.5.4"
|
|
|
|
| 50 |
{ url = "https://files.pythonhosted.org/packages/3e/4b/40a1dc52fc26695b1e80a9e67dfb0fe7e6ddc57bbc5b61348e40c0045abb/asyncer-0.0.7-py3-none-any.whl", hash = "sha256:f0d579d4f67c4ead52ede3a45c854f462cae569058a8a6a68a4ebccac1c335d8", size = 8476 },
|
| 51 |
]
|
| 52 |
|
| 53 |
+
[[package]]
|
| 54 |
+
name = "axiom-agent"
|
| 55 |
+
version = "0.1.0"
|
| 56 |
+
source = { editable = "." }
|
| 57 |
+
dependencies = [
|
| 58 |
+
{ name = "chainlit" },
|
| 59 |
+
{ name = "langchain-core" },
|
| 60 |
+
{ name = "langchain-google-genai" },
|
| 61 |
+
{ name = "langchain-mcp-adapters" },
|
| 62 |
+
{ name = "langgraph" },
|
| 63 |
+
{ name = "mcpdoc" },
|
| 64 |
+
{ name = "python-dotenv" },
|
| 65 |
+
{ name = "websockets" },
|
| 66 |
+
]
|
| 67 |
+
|
| 68 |
+
[package.optional-dependencies]
|
| 69 |
+
dev = [
|
| 70 |
+
{ name = "mypy" },
|
| 71 |
+
{ name = "ruff" },
|
| 72 |
+
]
|
| 73 |
+
|
| 74 |
+
[package.metadata]
|
| 75 |
+
requires-dist = [
|
| 76 |
+
{ name = "chainlit", specifier = ">=2.4.201" },
|
| 77 |
+
{ name = "langchain-core", specifier = ">=0.3.47" },
|
| 78 |
+
{ name = "langchain-google-genai", specifier = ">=2.1.0" },
|
| 79 |
+
{ name = "langchain-mcp-adapters", specifier = ">=0.0.5" },
|
| 80 |
+
{ name = "langgraph", specifier = ">=0.3.18" },
|
| 81 |
+
{ name = "mcpdoc", specifier = ">=0.0.4" },
|
| 82 |
+
{ name = "mypy", marker = "extra == 'dev'", specifier = ">=1.11.1" },
|
| 83 |
+
{ name = "python-dotenv", specifier = ">=1.0.1" },
|
| 84 |
+
{ name = "ruff", marker = "extra == 'dev'", specifier = ">=0.6.1" },
|
| 85 |
+
{ name = "websockets", specifier = ">=15.0.1" },
|
| 86 |
+
]
|
| 87 |
+
|
| 88 |
[[package]]
|
| 89 |
name = "beautifulsoup4"
|
| 90 |
version = "4.13.3"
|
|
|
|
| 282 |
{ url = "https://files.pythonhosted.org/packages/6e/c6/ac0b6c1e2d138f1002bcf799d330bd6d85084fece321e662a14223794041/Deprecated-1.2.18-py2.py3-none-any.whl", hash = "sha256:bd5011788200372a32418f888e326a09ff80d0214bd961147cfed01b5c018eec", size = 9998 },
|
| 283 |
]
|
| 284 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 285 |
[[package]]
|
| 286 |
name = "fastapi"
|
| 287 |
version = "0.115.11"
|
|
|
|
| 753 |
{ url = "https://files.pythonhosted.org/packages/b6/bc/8bd826dd03e022153bfa1766dcdec4976d6c818865ed54223d71f07862b3/msgpack-1.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:bce7d9e614a04d0883af0b3d4d501171fbfca038f12c77fa838d9f198147a23f", size = 75140 },
|
| 754 |
]
|
| 755 |
|
| 756 |
+
[[package]]
|
| 757 |
+
name = "mypy"
|
| 758 |
+
version = "1.15.0"
|
| 759 |
+
source = { registry = "https://pypi.org/simple" }
|
| 760 |
+
dependencies = [
|
| 761 |
+
{ name = "mypy-extensions" },
|
| 762 |
+
{ name = "typing-extensions" },
|
| 763 |
+
]
|
| 764 |
+
sdist = { url = "https://files.pythonhosted.org/packages/ce/43/d5e49a86afa64bd3839ea0d5b9c7103487007d728e1293f52525d6d5486a/mypy-1.15.0.tar.gz", hash = "sha256:404534629d51d3efea5c800ee7c42b72a6554d6c400e6a79eafe15d11341fd43", size = 3239717 }
|
| 765 |
+
wheels = [
|
| 766 |
+
{ url = "https://files.pythonhosted.org/packages/98/3a/03c74331c5eb8bd025734e04c9840532226775c47a2c39b56a0c8d4f128d/mypy-1.15.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:aea39e0583d05124836ea645f412e88a5c7d0fd77a6d694b60d9b6b2d9f184fd", size = 10793981 },
|
| 767 |
+
{ url = "https://files.pythonhosted.org/packages/f0/1a/41759b18f2cfd568848a37c89030aeb03534411eef981df621d8fad08a1d/mypy-1.15.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2f2147ab812b75e5b5499b01ade1f4a81489a147c01585cda36019102538615f", size = 9749175 },
|
| 768 |
+
{ url = "https://files.pythonhosted.org/packages/12/7e/873481abf1ef112c582db832740f4c11b2bfa510e829d6da29b0ab8c3f9c/mypy-1.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ce436f4c6d218a070048ed6a44c0bbb10cd2cc5e272b29e7845f6a2f57ee4464", size = 11455675 },
|
| 769 |
+
{ url = "https://files.pythonhosted.org/packages/b3/d0/92ae4cde706923a2d3f2d6c39629134063ff64b9dedca9c1388363da072d/mypy-1.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8023ff13985661b50a5928fc7a5ca15f3d1affb41e5f0a9952cb68ef090b31ee", size = 12410020 },
|
| 770 |
+
{ url = "https://files.pythonhosted.org/packages/46/8b/df49974b337cce35f828ba6fda228152d6db45fed4c86ba56ffe442434fd/mypy-1.15.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1124a18bc11a6a62887e3e137f37f53fbae476dc36c185d549d4f837a2a6a14e", size = 12498582 },
|
| 771 |
+
{ url = "https://files.pythonhosted.org/packages/13/50/da5203fcf6c53044a0b699939f31075c45ae8a4cadf538a9069b165c1050/mypy-1.15.0-cp312-cp312-win_amd64.whl", hash = "sha256:171a9ca9a40cd1843abeca0e405bc1940cd9b305eaeea2dda769ba096932bb22", size = 9366614 },
|
| 772 |
+
{ url = "https://files.pythonhosted.org/packages/6a/9b/fd2e05d6ffff24d912f150b87db9e364fa8282045c875654ce7e32fffa66/mypy-1.15.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:93faf3fdb04768d44bf28693293f3904bbb555d076b781ad2530214ee53e3445", size = 10788592 },
|
| 773 |
+
{ url = "https://files.pythonhosted.org/packages/74/37/b246d711c28a03ead1fd906bbc7106659aed7c089d55fe40dd58db812628/mypy-1.15.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:811aeccadfb730024c5d3e326b2fbe9249bb7413553f15499a4050f7c30e801d", size = 9753611 },
|
| 774 |
+
{ url = "https://files.pythonhosted.org/packages/a6/ac/395808a92e10cfdac8003c3de9a2ab6dc7cde6c0d2a4df3df1b815ffd067/mypy-1.15.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:98b7b9b9aedb65fe628c62a6dc57f6d5088ef2dfca37903a7d9ee374d03acca5", size = 11438443 },
|
| 775 |
+
{ url = "https://files.pythonhosted.org/packages/d2/8b/801aa06445d2de3895f59e476f38f3f8d610ef5d6908245f07d002676cbf/mypy-1.15.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c43a7682e24b4f576d93072216bf56eeff70d9140241f9edec0c104d0c515036", size = 12402541 },
|
| 776 |
+
{ url = "https://files.pythonhosted.org/packages/c7/67/5a4268782eb77344cc613a4cf23540928e41f018a9a1ec4c6882baf20ab8/mypy-1.15.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:baefc32840a9f00babd83251560e0ae1573e2f9d1b067719479bfb0e987c6357", size = 12494348 },
|
| 777 |
+
{ url = "https://files.pythonhosted.org/packages/83/3e/57bb447f7bbbfaabf1712d96f9df142624a386d98fb026a761532526057e/mypy-1.15.0-cp313-cp313-win_amd64.whl", hash = "sha256:b9378e2c00146c44793c98b8d5a61039a048e31f429fb0eb546d93f4b000bedf", size = 9373648 },
|
| 778 |
+
{ url = "https://files.pythonhosted.org/packages/09/4e/a7d65c7322c510de2c409ff3828b03354a7c43f5a8ed458a7a131b41c7b9/mypy-1.15.0-py3-none-any.whl", hash = "sha256:5469affef548bd1895d86d3bf10ce2b44e33d86923c29e4d675b3e323437ea3e", size = 2221777 },
|
| 779 |
+
]
|
| 780 |
+
|
| 781 |
[[package]]
|
| 782 |
name = "mypy-extensions"
|
| 783 |
version = "1.0.0"
|
|
|
|
| 1228 |
{ url = "https://files.pythonhosted.org/packages/49/97/fa78e3d2f65c02c8e1268b9aba606569fe97f6c8f7c2d74394553347c145/rsa-4.9-py3-none-any.whl", hash = "sha256:90260d9058e514786967344d0ef75fa8727eed8a7d2e43ce9f4bcf1b536174f7", size = 34315 },
|
| 1229 |
]
|
| 1230 |
|
| 1231 |
+
[[package]]
|
| 1232 |
+
name = "ruff"
|
| 1233 |
+
version = "0.11.2"
|
| 1234 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1235 |
+
sdist = { url = "https://files.pythonhosted.org/packages/90/61/fb87430f040e4e577e784e325351186976516faef17d6fcd921fe28edfd7/ruff-0.11.2.tar.gz", hash = "sha256:ec47591497d5a1050175bdf4e1a4e6272cddff7da88a2ad595e1e326041d8d94", size = 3857511 }
|
| 1236 |
+
wheels = [
|
| 1237 |
+
{ url = "https://files.pythonhosted.org/packages/62/99/102578506f0f5fa29fd7e0df0a273864f79af044757aef73d1cae0afe6ad/ruff-0.11.2-py3-none-linux_armv6l.whl", hash = "sha256:c69e20ea49e973f3afec2c06376eb56045709f0212615c1adb0eda35e8a4e477", size = 10113146 },
|
| 1238 |
+
{ url = "https://files.pythonhosted.org/packages/74/ad/5cd4ba58ab602a579997a8494b96f10f316e874d7c435bcc1a92e6da1b12/ruff-0.11.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:2c5424cc1c4eb1d8ecabe6d4f1b70470b4f24a0c0171356290b1953ad8f0e272", size = 10867092 },
|
| 1239 |
+
{ url = "https://files.pythonhosted.org/packages/fc/3e/d3f13619e1d152c7b600a38c1a035e833e794c6625c9a6cea6f63dbf3af4/ruff-0.11.2-py3-none-macosx_11_0_arm64.whl", hash = "sha256:ecf20854cc73f42171eedb66f006a43d0a21bfb98a2523a809931cda569552d9", size = 10224082 },
|
| 1240 |
+
{ url = "https://files.pythonhosted.org/packages/90/06/f77b3d790d24a93f38e3806216f263974909888fd1e826717c3ec956bbcd/ruff-0.11.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0c543bf65d5d27240321604cee0633a70c6c25c9a2f2492efa9f6d4b8e4199bb", size = 10394818 },
|
| 1241 |
+
{ url = "https://files.pythonhosted.org/packages/99/7f/78aa431d3ddebfc2418cd95b786642557ba8b3cb578c075239da9ce97ff9/ruff-0.11.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:20967168cc21195db5830b9224be0e964cc9c8ecf3b5a9e3ce19876e8d3a96e3", size = 9952251 },
|
| 1242 |
+
{ url = "https://files.pythonhosted.org/packages/30/3e/f11186d1ddfaca438c3bbff73c6a2fdb5b60e6450cc466129c694b0ab7a2/ruff-0.11.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:955a9ce63483999d9f0b8f0b4a3ad669e53484232853054cc8b9d51ab4c5de74", size = 11563566 },
|
| 1243 |
+
{ url = "https://files.pythonhosted.org/packages/22/6c/6ca91befbc0a6539ee133d9a9ce60b1a354db12c3c5d11cfdbf77140f851/ruff-0.11.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:86b3a27c38b8fce73bcd262b0de32e9a6801b76d52cdb3ae4c914515f0cef608", size = 12208721 },
|
| 1244 |
+
{ url = "https://files.pythonhosted.org/packages/19/b0/24516a3b850d55b17c03fc399b681c6a549d06ce665915721dc5d6458a5c/ruff-0.11.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a3b66a03b248c9fcd9d64d445bafdf1589326bee6fc5c8e92d7562e58883e30f", size = 11662274 },
|
| 1245 |
+
{ url = "https://files.pythonhosted.org/packages/d7/65/76be06d28ecb7c6070280cef2bcb20c98fbf99ff60b1c57d2fb9b8771348/ruff-0.11.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0397c2672db015be5aa3d4dac54c69aa012429097ff219392c018e21f5085147", size = 13792284 },
|
| 1246 |
+
{ url = "https://files.pythonhosted.org/packages/ce/d2/4ceed7147e05852876f3b5f3fdc23f878ce2b7e0b90dd6e698bda3d20787/ruff-0.11.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:869bcf3f9abf6457fbe39b5a37333aa4eecc52a3b99c98827ccc371a8e5b6f1b", size = 11327861 },
|
| 1247 |
+
{ url = "https://files.pythonhosted.org/packages/c4/78/4935ecba13706fd60ebe0e3dc50371f2bdc3d9bc80e68adc32ff93914534/ruff-0.11.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:2a2b50ca35457ba785cd8c93ebbe529467594087b527a08d487cf0ee7b3087e9", size = 10276560 },
|
| 1248 |
+
{ url = "https://files.pythonhosted.org/packages/81/7f/1b2435c3f5245d410bb5dc80f13ec796454c21fbda12b77d7588d5cf4e29/ruff-0.11.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:7c69c74bf53ddcfbc22e6eb2f31211df7f65054bfc1f72288fc71e5f82db3eab", size = 9945091 },
|
| 1249 |
+
{ url = "https://files.pythonhosted.org/packages/39/c4/692284c07e6bf2b31d82bb8c32f8840f9d0627d92983edaac991a2b66c0a/ruff-0.11.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:6e8fb75e14560f7cf53b15bbc55baf5ecbe373dd5f3aab96ff7aa7777edd7630", size = 10977133 },
|
| 1250 |
+
{ url = "https://files.pythonhosted.org/packages/94/cf/8ab81cb7dd7a3b0a3960c2769825038f3adcd75faf46dd6376086df8b128/ruff-0.11.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:842a472d7b4d6f5924e9297aa38149e5dcb1e628773b70e6387ae2c97a63c58f", size = 11378514 },
|
| 1251 |
+
{ url = "https://files.pythonhosted.org/packages/d9/3a/a647fa4f316482dacf2fd68e8a386327a33d6eabd8eb2f9a0c3d291ec549/ruff-0.11.2-py3-none-win32.whl", hash = "sha256:aca01ccd0eb5eb7156b324cfaa088586f06a86d9e5314b0eb330cb48415097cc", size = 10319835 },
|
| 1252 |
+
{ url = "https://files.pythonhosted.org/packages/86/54/3c12d3af58012a5e2cd7ebdbe9983f4834af3f8cbea0e8a8c74fa1e23b2b/ruff-0.11.2-py3-none-win_amd64.whl", hash = "sha256:3170150172a8f994136c0c66f494edf199a0bbea7a409f649e4bc8f4d7084080", size = 11373713 },
|
| 1253 |
+
{ url = "https://files.pythonhosted.org/packages/d6/d4/dd813703af8a1e2ac33bf3feb27e8a5ad514c9f219df80c64d69807e7f71/ruff-0.11.2-py3-none-win_arm64.whl", hash = "sha256:52933095158ff328f4c77af3d74f0379e34fd52f175144cefc1b192e7ccd32b4", size = 10441990 },
|
| 1254 |
+
]
|
| 1255 |
+
|
| 1256 |
[[package]]
|
| 1257 |
name = "shellingham"
|
| 1258 |
version = "1.5.4"
|