Unify dataset/tooling scripts into a single dwarf Typer CLI

Replace the five separately-hyphenated uv entry points (steps-to-parquet,
steps-to-parquet-parallel, migrate-geant-steps, bump-dataset-version,
create-root-files) plus the unregistered hparam_scan.py with one `dwarf`
command exposing convert/migrate/bump-gen/bump-schema/status/
update-manifest/create-manifest/make-root/hparam-scan as subcommands.

Each scripts/*.py module now only holds argparse-free business logic;
scripts/dwarf.py wires it up with Typer, matching giant/cli.py's style.
`dwarf convert` merges the old serial/parallel conversion scripts behind
a --jobs flag (default 1: sequential with plain -o; >1: dataset-layout
fan-out via subprocess).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-02 09:52:37 +02:00
parent 7b37b284f8
commit d5853d5a75
13 changed files with 662 additions and 505 deletions
-21
View File
@@ -244,24 +244,3 @@ def test_run_all_caps_concurrency(tmp_path):
concurrent += delta
peak = max(peak, concurrent)
assert peak <= 2
def test_build_parser_defaults():
args = create_root_files.build_parser().parse_args(
[
"--executable",
"fake",
"--detector",
"pbwo4",
"--num-files",
"2",
"--events-per-file",
"10000",
"--gen",
"gen1",
]
)
assert args.jobs == 4
assert args.kind == "steps"
assert args.dataset_root == "/ceph/lbogner/geant_steps"
assert args.execute is False