# 开发工具链锁文件 —— 锁定 dev 依赖的具体版本，保证 CI 构建可复现。
# 运行时依赖（pandas/tzdata/click 等）由 pyproject.toml 的下界+上界约束，
# 此文件仅锁定 [dev] 工具链（pytest/mypy/ruff/scipy/coverage 等）。
#
# 版本兼容约束：pyproject.toml 声明 requires-python = ">=3.10"，CI 矩阵跑
# ["3.10", "3.12", "3.13"]。锁定版本必须覆盖 3.10 及更高版本，用 PEP 508 环境
# 标记按解释器分流（低版本走旧版、高版本走新版），不要一刀切锁死：新 Python
# （如 3.14）上旧版没有预编译 wheel，pip 会回退编译源码而失败。
# 例：scipy>=1.16 要求 Python>=3.11，而 1.15.x 又没有 cp314 wheel —— 单写任
# 一侧都会在某段 Python 上炸。升级任一工具前请用目标 Python 版本验证 wheel 存在。

# 测试框架
pytest==9.0.3
pytest-asyncio>=0.23
pytest-cov==7.1.0
coverage==7.14.0

# 静态检查
mypy==2.1.0
ruff==0.11.11

# 科学计算（[dev] 与 [science] 可选依赖）
# scipy：1.16+ 要求 Python>=3.11，1.18.x 又要求 >=3.12。1.17.1 是同时提供
# cp311~cp314 wheel 的最高版本，故 3.11 及以上统一锁它（3.11 上装不了 1.18）。
scipy==1.15.3; python_version < "3.11"
scipy==1.17.1; python_version >= "3.11"
# numpy：2.3+ 要求 Python>=3.11，2.2.3 是最后的 3.10 兼容版。
numpy==2.2.3; python_version < "3.11"
numpy==2.4.6; python_version >= "3.11"

# Web 可选依赖测试支持
fastapi==0.115.11
uvicorn==0.34.0
