[project] name = "mcm26b" version = "0.2.0" description = "CUMCM 2026 B题:无线电干扰源的快速自动定位与清除(协议基线、几何内核与策略骨架)" readme = "README.md" requires-python = ">=3.10" dependencies = [ "requests>=2.31", ] [dependency-groups] dev = [ "optuna>=5.0.0", "pytest>=8", # 独立评测机(自建模拟器):仅测试侧依赖,运行时代码零导入(懒加载 + 守卫测试) "mcm26b-referee", ] rl = [ "gymnasium>=1.1", "sb3-contrib==2.9.0", "stable-baselines3>=2.6", "torch==2.11.0", ] # uv 工作区:referee/ 是独立包(零第三方依赖、不依赖 mcm26b),双方仅通过 HTTP 协议耦合 [tool.uv.workspace] members = ["referee"] # RL 训练使用 CUDA 12.8 版 PyTorch(本机 RTX 4060;运行时依赖保持轻量)。 [[tool.uv.index]] name = "pytorch-cu128" url = "https://download.pytorch.org/whl/cu128" explicit = true [tool.uv.sources] mcm26b-referee = { workspace = true } torch = { index = "pytorch-cu128" } [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["src/mcm26b"] [project.scripts] mcm26b = "mcm26b.cli:main" [tool.pytest.ini_options] testpaths = ["tests", "referee/tests"]