From 737bf6e826e619b7e9e09565cb3063056820c25e Mon Sep 17 00:00:00 2001 From: Jens Date: Wed, 29 Jul 2026 20:09:12 +0200 Subject: [PATCH] Allow checkpointed AOI-specific provisioning --- ...provision_belgium_building_training_portfolio.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/scripts/provision_belgium_building_training_portfolio.py b/scripts/provision_belgium_building_training_portfolio.py index aedeeaf4..d3113112 100644 --- a/scripts/provision_belgium_building_training_portfolio.py +++ b/scripts/provision_belgium_building_training_portfolio.py @@ -253,12 +253,23 @@ def main() -> int: parser.add_argument("--side-m", type=float, default=256.0) parser.add_argument("--resolution-m", type=float, default=0.25) parser.add_argument("--force-refresh", action="store_true") + parser.add_argument( + "--only-slug", + action="append", + default=[], + help="Provision only the named AOI slug; repeat to select multiple AOIs.", + ) parser.add_argument( "--session-token-file", type=Path, help="Read an operator session token from a local mode-0600 file instead of exposing it on the command line.", ) args = parser.parse_args() + known_slugs = {aoi.slug for aoi in AOIS} + unknown_slugs = sorted(set(args.only_slug) - known_slugs) + if unknown_slugs: + raise SystemExit(f"Unknown --only-slug value(s): {', '.join(unknown_slugs)}") + selected_aois = tuple(aoi for aoi in AOIS if not args.only_slug or aoi.slug in args.only_slug) session = requests.Session() if args.session_token_file: token = args.session_token_file.read_text(encoding="utf-8").strip() @@ -273,7 +284,7 @@ def main() -> int: if "sample_slug" not in sample and sample.get("slug"): sample["sample_slug"] = sample.pop("slug") completed = {str(sample.get("sample_slug") or sample.get("slug")) for sample in samples} - for aoi in AOIS: + for aoi in selected_aois: if aoi.slug in completed: print(f"{aoi.slug}: checkpoint reused", flush=True) continue