diff options
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/extract_missalemeum_oracle.py | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/tools/extract_missalemeum_oracle.py b/tools/extract_missalemeum_oracle.py index 044aa54..a010b52 100644 --- a/tools/extract_missalemeum_oracle.py +++ b/tools/extract_missalemeum_oracle.py @@ -18,7 +18,7 @@ # exists for every day. # # One line per day, pipe-separated: -# date|rank|colors|title|tempora|commemorations|displaced|n_masses +# date|rank|colors|title|tempora|commemorations|displaced|n_masses|commemoration_ids # # - rank/colors/title/tempora/commemorations/displaced are info.rank, # info.colors (sorted, concatenated, e.g. "pv"), info.title, info.tempora @@ -31,6 +31,17 @@ # colors/tempora/commemorations/displaced are IDENTICAL across every Mass # of the same day for all 730 days -- checked below, not assumed; see the # task report for why entry[0] loses nothing). +# - commemoration_ids (Task B, branch ef-rg16a) is the ";"-joined info. +# commemorations[*].id, index-aligned with the commemorations field ("-" +# for an empty list, same convention) -- e.g. "sancti:01-05:4:r". Added so +# test_oracle.ml's identity comparison has a second, independent signal +# beyond the title text (the id encodes the commemorated saint's own rank +# and colour too, verified across the whole fixture to always carry the +# SAME calendar date as the day itself -- a commemoration's own natural +# fixed date, by construction, since only a saint impeded on their own day +# is ever commemorated there). Never parsed for its date component by this +# fixture or the comparator (info.rank/colors already give the day's own +# values); kept opaque and compared as a plain string. # - Spaces in tempora are turned to "_" (matching the "no field has an # internal space" convention test/fixtures/lectio-ef-2005-2050.txt already # uses, so this fixture can be read the same simple way -- split on '|', @@ -62,8 +73,9 @@ def main(): if first[k] != o[k]: print(f"WARNING: {date} masses disagree on {k}: {first[k]!r} vs {o[k]!r}", file=sys.stderr) comm_titles = [c["title"] for c in first["commemorations"]] + comm_ids = [c["id"] for c in first["commemorations"]] disp_titles = [d["title"] for d in first["displaced"]] - for t in [first["title"]] + comm_titles + disp_titles: + for t in [first["title"]] + comm_titles + comm_ids + disp_titles: if "|" in t or ";" in t: print(f"ERROR: {date}: field {t!r} contains a delimiter this fixture uses", file=sys.stderr) return 1 @@ -71,7 +83,10 @@ def main(): tempora = (first["tempora"] or "-").replace(" ", "_") comms = ";".join(comm_titles) or "-" disp = ";".join(disp_titles) or "-" - rows.append(f"{date}|{first['rank']}|{colors}|{first['title']}|{tempora}|{comms}|{disp}|{len(data)}") + ids = ";".join(comm_ids) or "-" + rows.append( + f"{date}|{first['rank']}|{colors}|{first['title']}|{tempora}|{comms}|{disp}|{len(data)}|{ids}" + ) if len(rows) != 730: print(f"ERROR: expected 730 days, got {len(rows)}", file=sys.stderr) |
