[project] name = "sheaf-admm" version = "0.1.0" description = "Learning multi-agent coordination via sheaf-constrained ADMM (JAX/Flax reference implementation)." readme = "README.md" requires-python = ">=3.12,<3.13" license = { text = "Apache-2.0" } authors = [ { name = "Jeffrey Seely" }, { name = "Bartłomiej Cupiał" }, { name = "Llion Jones" }, ] dependencies = [ "jax==0.10.1; sys_platform != 'linux'", "jax[cuda12]==0.10.1; sys_platform == 'linux'", "flax==0.12.7", "optax==0.2.8", "numpy==2.4.6", "hydra-core==1.3.2", "omegaconf==2.3.0", # dataset construction — required to build MNIST / Sudoku / maze locally "ml-datasets==0.2.1", "datasets==4.8.5", "huggingface-hub==1.17.0", # figures / artifacts "matplotlib==3.10.9", "pillow==12.2.0", # experiment tracking "wandb==0.27.0", ] [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["src/sheaf_admm"] [tool.hatch.build.targets.sdist] include = [ "/assets", "/configs", "/scripts", "/src", "/tests", "/LICENSE", "/README.md", "/pyproject.toml", "/uv.lock", ] [dependency-groups] dev = [ "pytest==9.0.3", "ruff==0.15.15", ] [tool.pytest.ini_options] testpaths = ["tests"] markers = [ "slow: end-to-end tests that train a tiny model (deselect with -m 'not slow')", ] [tool.ruff] line-length = 100 target-version = "py312" [tool.ruff.lint] # Keep math unicode (ρ, σ, γ, η, λ) — they read better than ASCII in this codebase. select = ["E", "F", "I", "UP", "B", "SIM"] ignore = ["E741", "RUF002", "RUF003", "B008"]