From 14f5baf77cc662349f9dbed999549a6eb19dc90e Mon Sep 17 00:00:00 2001 From: Edward Betts Date: Mon, 22 Jun 2026 09:08:33 +0100 Subject: [PATCH] Validate conference date ranges --- validate_yaml.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/validate_yaml.py b/validate_yaml.py index 1e5b29e..c8d4022 100755 --- a/validate_yaml.py +++ b/validate_yaml.py @@ -17,6 +17,7 @@ import agenda.data import agenda.travel import agenda.trip import agenda.types +import agenda.utils config = __import__("config.default", fromlist=[""]) data_dir = config.PERSONAL_DATA @@ -267,6 +268,23 @@ def check_trains() -> None: print(len(trains), "trains") +def check_conference_dates(conf: agenda.conference.Conference) -> None: + """Check conference start/end range.""" + if normalize_datetime(conf.start) > normalize_datetime(conf.end): + pprint(conf) + print(f"conference {conf.name!r} ends before it starts") + sys.exit(-1) + + duration = (agenda.utils.as_date(conf.end) - agenda.utils.as_date(conf.start)).days + if duration >= agenda.conference.MAX_CONF_DAYS: + pprint(conf) + print( + f"conference {conf.name!r} is {duration} days; " + + f"maximum is {agenda.conference.MAX_CONF_DAYS - 1}" + ) + sys.exit(-1) + + def check_conferences() -> None: """Check conferences and ensure they are in chronological order.""" filepath = os.path.join(data_dir, "conferences.yaml") @@ -285,6 +303,7 @@ def check_conferences() -> None: sys.exit(-1) check_country_code(conf_data, "conference", required=False) + check_conference_dates(conf) current_start = normalize_datetime(conf_data["start"]) if prev_start and current_start < prev_start: