合并后 tests/unit/worker/test_offsite_mail_worker.py 的 6 个用例直接 ModuleNotFoundError: No module named 'aiosqlite' —— 它们走 SQLAlchemy 的 SQLite 内存库,而 aiosqlite 既不在 requirements.txt、也不在 pyproject 的 dev 依赖里 (dev 原先只有 pytest / pytest-asyncio / ruff / mypy)。 后果不是"本机缺个包":任何人 clone 下来、按文档装完依赖、跑测试,这 6 个用例必然 失败,而且报错指向 SQLAlchemy 内部(aiosqlite.py:480),看不出是缺依赖。 已加入 dev 依赖并注明用途。 同时记录一个本机环境问题(未改代码):pytest 的默认 basetemp %TEMP%\pytest-of-Windows 被权限更高的会话占住,make_numbered_dir 扫不动 ⇒ 18 个 setup ERROR。NL_develop 的 conftest 修复(tmp_path 落到仓库内 .workdir/)能根治, 等合并;本次用重定向 $env:TEMP 临时绕开(--basetemp 无效,因为 pytest 仍会扫默认 root)。 另需注意 .workdir 目前不在 .gitignore 里,那套修复合并进来前要补上。 合并后现状:unit+contract 810 passed / integration 76 passed / ruff 干净 / 表数 68(alembic 已 upgrade 到位)/ mypy 3 个错(全在袁聪的 offsite_fund_service.py, 属真实类型问题,未擅自改别人的业务代码)。
75 lines
1.8 KiB
TOML
75 lines
1.8 KiB
TOML
[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",
|
|
"python-dotenv>=1.0,<2",
|
|
"greenlet>=3.1,<4",
|
|
"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",
|
|
"httpx>=0.28,<1",
|
|
"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",
|
|
"openpyxl>=3.1,<4",
|
|
"Pillow>=10,<12",
|
|
"matplotlib>=3.9,<4",
|
|
"python-multipart>=0.0.20,<1",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
dev = [
|
|
"pytest>=8.3,<9",
|
|
"pytest-asyncio>=0.25,<1",
|
|
"ruff>=0.9,<1",
|
|
"mypy>=1.14,<2",
|
|
# 测试用:场外邮件 Worker 等用例走 SQLAlchemy 的 SQLite 内存库。
|
|
# 原先没声明 —— 别人的环境装完依赖跑测试,这 6 个用例会直接
|
|
# ModuleNotFoundError: No module named 'aiosqlite'。
|
|
"aiosqlite>=0.20,<1",
|
|
]
|
|
|
|
[tool.setuptools.packages.find]
|
|
include = ["app*"]
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["tests"]
|
|
asyncio_mode = "auto"
|
|
asyncio_default_fixture_loop_scope = "function"
|
|
markers = ["integration: requires local database services"]
|
|
|
|
[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"]
|