3c1d1da83f
CI / Sync project version with tag (pull_request) Has been skipped
CI / Lint (ruff check) (pull_request) Successful in 1m7s
CI / Format (ruff format) (pull_request) Successful in 1m5s
CI / Type check (ty) (pull_request) Successful in 1m5s
CI / Tests (pull_request) Successful in 4m31s
CI / Bump version, tag, and update changelog on merge to master (pull_request) Has been skipped
CI / Publish package to Gitea package registry (pull_request) Has been skipped
120 lines
2.5 KiB
TOML
120 lines
2.5 KiB
TOML
[project]
|
|
name = "giant"
|
|
version = "0.4.0"
|
|
description = "Geant4 step-function surrogate via conditional flow matching"
|
|
readme = "README.md"
|
|
requires-python = ">=3.12"
|
|
dependencies = [
|
|
"numpy>=1.26,<3",
|
|
"pandas>=2.2,<4",
|
|
"pyarrow>=16,<25",
|
|
"tqdm>=4.60,<5",
|
|
"typer>=0.12,<1",
|
|
"pyyaml>=6,<7",
|
|
"particle>=1.0,<2",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
cpu = [
|
|
"torch>=2.3,<2.4",
|
|
]
|
|
cuda = [
|
|
"torch>=2.3,<2.4",
|
|
]
|
|
dev = [
|
|
"pytest>=8,<10",
|
|
"pytest-cov>=5,<8",
|
|
"ruff>=0.15,<1",
|
|
"ty>=0.0.50,<0.1",
|
|
"bump-my-version>=1.2,<2",
|
|
"git-cliff>=2,<3",
|
|
"giant[convert,analysis,geometry,wandb,workflow]",
|
|
]
|
|
geometry = [
|
|
"scikit-learn>=1.4,<2",
|
|
]
|
|
wandb = [
|
|
"wandb>=0.16,<1",
|
|
]
|
|
convert = [
|
|
"uproot>=5.3,<6",
|
|
"awkward>=2.6,<3",
|
|
"polars>=1.0,<2",
|
|
]
|
|
analysis = [
|
|
"matplotlib>=3.8,<4",
|
|
"polars>=1.0,<2",
|
|
"ipykernel>=7.3.0",
|
|
# KIT matplotlib theme, published from git.larsbogner.de. Only the local
|
|
# `giant analyze render` step imports it; compute workers never do.
|
|
"plotstyle>=1.0.0",
|
|
]
|
|
# b2luigi pulls luigi + tenacity; the only sanctioned way to chain a
|
|
# multi-step pipeline (see giant/workflow/).
|
|
workflow = [
|
|
"b2luigi>=1.0,<2",
|
|
]
|
|
|
|
[project.scripts]
|
|
giant = "giant.cli:app"
|
|
dwarf = "giant.tools.dwarf:app"
|
|
|
|
[tool.ruff]
|
|
line-length = 120
|
|
|
|
[tool.coverage.run]
|
|
source = ["giant"]
|
|
omit = ["*/legacy/*"]
|
|
|
|
[tool.coverage.report]
|
|
exclude_also = [
|
|
"if TYPE_CHECKING:",
|
|
"raise NotImplementedError",
|
|
]
|
|
|
|
[build-system]
|
|
requires = ["hatchling"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[tool.hatch.build.targets.wheel]
|
|
packages = ["giant"]
|
|
|
|
[tool.uv]
|
|
conflicts = [
|
|
[
|
|
{ extra = "cpu" },
|
|
{ extra = "cuda" },
|
|
],
|
|
]
|
|
|
|
[tool.uv.sources]
|
|
torch = [
|
|
{ index = "pytorch-cpu", extra = "cpu" },
|
|
{ index = "pytorch-cu118", extra = "cuda" },
|
|
]
|
|
plotstyle = { index = "larsbogner" }
|
|
|
|
[[tool.uv.index]]
|
|
name = "pytorch-cpu"
|
|
url = "https://download.pytorch.org/whl/cpu"
|
|
explicit = true
|
|
|
|
[[tool.uv.index]]
|
|
name = "pytorch-cu118"
|
|
url = "https://download.pytorch.org/whl/cu118"
|
|
explicit = true
|
|
|
|
[[tool.uv.index]]
|
|
name = "larsbogner"
|
|
url = "https://git.larsbogner.de/api/packages/lars/pypi/simple/"
|
|
explicit = true
|
|
|
|
# luigi builds task constructors from class-level Parameter descriptors, so a
|
|
# static checker sees no keyword parameters at all on `Task(name=..., ...)`.
|
|
# The workflow code is written against that API; nothing else in the repo is.
|
|
[[tool.ty.overrides]]
|
|
include = ["giant/workflow/**", "tests/test_workflow_tasks.py"]
|
|
|
|
[tool.ty.overrides.rules]
|
|
unknown-argument = "ignore"
|