60 lines
1.7 KiB
TOML
60 lines
1.7 KiB
TOML
[project]
|
||
name = "aps"
|
||
version = "0.1.0"
|
||
description = "APS:独立的高级排产业务系统。开发期与平台同仓不同目录(ADR-0010),工具链与依赖独立。"
|
||
requires-python = ">=3.11"
|
||
dependencies = [
|
||
# 接口层(B5:契约化 API)
|
||
"fastapi>=0.115",
|
||
"uvicorn[standard]>=0.30",
|
||
"pydantic>=2.7",
|
||
"python-multipart>=0.0.9",
|
||
"httpx>=0.27",
|
||
# 求解引擎(B1 搬入 server/engines)
|
||
"ortools>=9.10",
|
||
"scipy>=1.14",
|
||
# 导入与文档解析(B1 搬入 server/importers;图纸解析归 APS)
|
||
"openpyxl>=3.1",
|
||
"pdfplumber>=0.11",
|
||
"python-docx>=1.1",
|
||
"lxml>=5.0",
|
||
"ezdxf>=1.4",
|
||
"fonttools>=4.50",
|
||
# 持久层:APS 库归 APS(ADR-0008),独立账号、独立 database
|
||
"sqlalchemy>=2.0",
|
||
"alembic>=1.13",
|
||
"pymysql>=1.1",
|
||
# APS 自己的审计归档加密(B4)
|
||
"cryptography>=42",
|
||
"python-dotenv>=1.0",
|
||
]
|
||
|
||
# 开发依赖用 uv 的 dependency-group(uv sync 默认安装,CI 用 --locked 保证一致)
|
||
[dependency-groups]
|
||
dev = ["ruff>=0.7", "pytest>=8.3", "pytest-asyncio>=0.24"]
|
||
|
||
[build-system]
|
||
requires = ["hatchling"]
|
||
build-backend = "hatchling.build"
|
||
|
||
[tool.hatch.build.targets.wheel]
|
||
packages = ["src/aps"]
|
||
|
||
[tool.ruff]
|
||
line-length = 120
|
||
target-version = "py311"
|
||
src = ["src", "tests"]
|
||
|
||
[tool.ruff.lint]
|
||
select = ["E", "F", "W", "I", "UP", "B", "SIM"]
|
||
|
||
[tool.ruff.lint.per-file-ignores]
|
||
# B1 从 main 分支原样搬入的旧代码:先保证行为与旧系统一致,格式与风格清理放到 B3(那时删掉这一段)
|
||
"src/aps/domain/*.py" = ["E501", "I001", "B007", "SIM103", "SIM108"]
|
||
"src/aps/engines/*.py" = ["E501", "I001"]
|
||
"src/aps/timeutil.py" = ["I001"]
|
||
|
||
[tool.pytest.ini_options]
|
||
testpaths = ["tests"]
|
||
asyncio_mode = "auto"
|
||
addopts = "-q" |