Files
group_fqcd_jr/pyproject.toml
T

81 lines
2.2 KiB
TOML
Raw Normal View History

2026-09-09 21:55:37 +08:00
[build-system]
requires = ["setuptools>=75"]
build-backend = "setuptools.build_meta"
[project]
name = "jr-agent-platform"
version = "0.1.0"
description = "金融系统 Agent 通用底座"
requires-python = ">=3.13,<3.14"
dependencies = [
"fastapi>=0.115,<1",
"uvicorn[standard]>=0.34,<1",
"pydantic>=2.10,<3",
"pydantic-settings>=2.7,<3",
2026-09-11 16:57:47 +08:00
"python-dotenv>=1.0,<2",
"greenlet>=3.1,<4",
2026-09-09 21:55:37 +08:00
"sqlalchemy>=2.0,<3",
"alembic>=1.14,<2",
"asyncmy>=0.2,<1",
"pymysql>=1.1,<2",
"redis>=5.2,<6",
"neo4j>=5.28,<6",
"pymilvus>=2.5,<3",
"PyJWT>=2.10,<3",
"cryptography>=44,<51",
"bcrypt>=4.0,<5",
2026-09-09 21:55:37 +08:00
"httpx>=0.28,<1",
2026-09-11 16:57:47 +08:00
"tzdata>=2025.1,<2027",
"alibabacloud_docmind_api20220711==1.4.14",
"alibabacloud_tea_openapi>=0.4.3,<1",
"alibabacloud_tea_util>=0.3.13,<1",
"alibabacloud_credentials>=1.0.2,<2",
"python-pptx>=1.0,<2",
"python-docx>=1.1,<2",
2026-09-11 16:57:47 +08:00
"openpyxl>=3.1,<4",
"Pillow>=10,<12",
"matplotlib>=3.9,<4",
"python-multipart>=0.0.20,<1",
2026-09-09 21:55:37 +08:00
]
[project.optional-dependencies]
dev = [
"pytest>=8.3,<9",
"pytest-asyncio>=0.25,<1",
2026-09-11 11:49:11 +08:00
"aiosqlite>=0.20,<1",
2026-09-09 21:55:37 +08:00
"ruff>=0.9,<1",
"mypy>=1.14,<2",
# 测试用:场外邮件 Worker 等用例走 SQLAlchemy 的 SQLite 内存库。
# 原先没声明 —— 别人的环境装完依赖跑测试,这 6 个用例会直接
# ModuleNotFoundError: No module named 'aiosqlite'。
"aiosqlite>=0.20,<1",
2026-09-09 21:55:37 +08:00
]
[tool.setuptools.packages.find]
include = ["app*"]
[tool.pytest.ini_options]
testpaths = ["tests"]
asyncio_mode = "auto"
asyncio_default_fixture_loop_scope = "function"
2026-09-09 21:55:37 +08:00
markers = ["integration: requires local database services"]
# 临时目录的落点由 `tests/conftest.py` 覆盖 `tmp_path` 决定(落在仓库内 `.workdir/pytest-tmp`)。
# 这里**不**写 `basetemp`:pytest 只在命令行认它,写在 ini 里会被静默忽略(实测无效),
# 留着会让人误以为已经配好了。系统临时目录权限坏掉的原因与修法见 conftest 的说明。
2026-09-09 21:55:37 +08:00
[tool.ruff]
line-length = 100
target-version = "py313"
[tool.ruff.lint]
select = ["E", "F", "I", "B", "UP"]
[tool.ruff.lint.per-file-ignores]
"alembic/versions/*.py" = ["E501"]
"tools/*.py" = ["E501", "I001", "B007"]
[tool.mypy]
python_version = "3.13"
strict = true
packages = ["app"]