Files
Mofox-Core/pyproject.toml
2025-12-09 22:26:28 +08:00

153 lines
3.6 KiB
TOML

[project]
name = "MoFox-Bot"
version = "0.13.0"
description = "MoFox-Bot 是一个基于大语言模型的可交互智能体"
requires-python = ">=3.11,<=3.13"
dependencies = [
"slowapi>=0.1.8",
"aiohttp>=3.12.14",
"aiohttp-cors>=0.8.1",
"aiofiles>=23.1.0",
"apscheduler>=3.11.0",
"asyncio>=4.0.0",
"beautifulsoup4>=4.13.4",
"chromadb>=1.2.0",
"colorama>=0.4.6",
"cryptography>=46.0.3",
"customtkinter>=5.2.2",
"dotenv>=0.9.9",
"exa-py>=1.14.20",
"faiss-cpu>=1.11.0",
"fastapi>=0.116.0",
"google>=3.0.0",
"filetype>=1.2.0",
"google-genai>=1.29.0",
"httpx>=0.28.1",
"jieba>=0.42.1",
"json-repair>=0.47.6",
"json5>=0.12.1",
"jsonlines>=4.0.0",
"langfuse==3.7.0",
"lunar-python>=1.4.4",
"lxml>=6.0.0",
"matplotlib>=3.10.3",
"networkx>=3.4.2",
"objgraph>=3.6.2",
"orjson>=3.10",
"numpy>=2.2.6",
"openai>=2.5.0",
"opencv-python>=4.11.0.86",
"aioboto3>=13.3.0",
"botocore>=1.35.0",
"packaging>=25.0",
"pandas>=2.3.1",
"peewee>=3.18.2",
"pillow>=12.0.0",
"pip-check-reqs>=2.5.5",
"psutil>=7.0.0",
"pympler>=1.1",
"pyarrow>=21.0.0",
"pydantic>=2.12.3",
"pygments>=2.19.2",
"pymongo>=4.13.2",
"pypinyin>=0.54.0",
"PyYAML>=6.0",
"python-dateutil>=2.9.0.post0",
"python-dotenv>=1.1.1",
"python-igraph>=0.11.9",
"quick-algo>=0.1.3",
"reportportal-client>=5.6.5",
"requests>=2.32.4",
"rich>=14.0.0",
"ruff>=0.12.2",
"scikit-learn>=1.7.0",
"scipy>=1.15.3",
"seaborn>=0.13.2",
"setuptools>=80.9.0",
"sqlalchemy>=2.0.42",
"strawberry-graphql[fastapi]>=0.275.5",
"structlog>=25.4.0",
"tavily-python>=0.7.10",
"toml>=0.10.2",
"tomli>=2.2.1",
"tomli-w>=1.2.0",
"tomlkit>=0.13.3",
"tqdm>=4.67.1",
"urllib3>=2.5.0",
"uvicorn>=0.35.0",
"watchdog>=6.0.0",
"websockets>=15.0.1",
"aiosqlite>=0.21.0",
"inkfox>=0.1.1",
"rjieba>=0.1.13",
"fastmcp>=2.13.0",
"mofox-wire",
"jinja2>=3.1.0",
"psycopg2-binary",
"redis>=7.1.0",
"asyncpg>=0.31.0",
]
[[tool.uv.index]]
url = "https://pypi.tuna.tsinghua.edu.cn/simple"
default = true
[tool.uv.sources]
amrita = { workspace = true }
[tool.ruff]
line-length = 120
target-version = "py310"
[tool.ruff.lint]
select = [
"F", # Pyflakes
"W", # pycodestyle warnings
"E", # pycodestyle errors
"UP", # pyupgrade
"ASYNC", # flake8-async
"C4", # flake8-comprehensions
"T10", # flake8-debugger
"PYI", # flake8-pyi
"PT", # flake8-pytest-style
"Q", # flake8-quotes
"RUF", # Ruff-specific rules
"I", # isort
"PERF", # pylint-performance
]
ignore = [
"E402", # module-import-not-at-top-of-file
"E501", # line-too-long
"UP037", # quoted-annotation
"RUF001", # ambiguous-unicode-character-string
"RUF002", # ambiguous-unicode-character-docstring
"RUF003", # ambiguous-unicode-character-comment
"PERF203", # try-except-in-loop (我们需要单独处理每个项的错误)
]
# 如果一个变量的名称以下划线开头,即使它未被使用,也不应该被视为错误或警告。
dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
[tool.ruff.format]
docstring-code-format = true
indent-style = "space"
# 使用双引号表示字符串
quote-style = "double"
# 尊重魔法尾随逗号
# 例如:
# items = [
# "apple",
# "banana",
# "cherry",
# ]
skip-magic-trailing-comma = false
# 自动检测合适的换行符
line-ending = "auto"
[dependency-groups]
lint = ["loguru>=0.7.3"]