Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions calendarium/tests/test_liturgics.py
Original file line number Diff line number Diff line change
Expand Up @@ -288,6 +288,39 @@ async def test_day_feast_name_is_tradition_specific(self):
self.assertIn('Holy Apostle Ananias of the Seventy', slavic.saints)
self.assertIn('Holy Apostle Ananias of the Seventy', greek.saints)

async def test_greek_only_feast_labels(self):
"""Labels Greek practice carries on these dates and Slavic does not
headline; see docs/greek-commons.md, pass 13. Slavic is unchanged."""

for (month, day), label in (
((6, 25), 'Leavetaking of the Nativity of the Forerunner'),
((10, 28), 'Protection of the Most-Holy Theotokos'),
((12, 8), 'Forefeast of the Conception by St Anna of the Theotokos'),
((12, 21), 'Forefeast of Nativity'),
((12, 23), 'Forefeast of Nativity'),
):
with self.subTest(month=month, day=day):
slavic = liturgics.Day(2026, month, day, tradition=Tradition.Slavic)
greek = liturgics.Day(2026, month, day, tradition=Tradition.Greek)
await slavic.ainitialize()
await greek.ainitialize()

self.assertEqual(greek.summary_title, label)
self.assertNotIn(label, slavic.feasts)
self.assertEqual(
(greek.fast_level, greek.feast_level),
(slavic.fast_level, slavic.feast_level))

async def test_phocas_on_july_23_for_greek(self):
slavic = liturgics.Day(2026, 7, 23, tradition=Tradition.Slavic)
greek = liturgics.Day(2026, 7, 23, tradition=Tradition.Greek)
await slavic.ainitialize()
await greek.ainitialize()

phocas = 'Hieromartyr Phocas, Bishop of Sinope'
self.assertTrue(greek.summary_title.startswith(phocas))
self.assertNotIn(phocas, slavic.saints)

async def test_raphael_brooklyn_differing_commemoration_date(self):
"""St. Raphael of Brooklyn -- founding bishop of Antiochian
Orthodoxy in America -- is kept on Feb 27 (his repose date) by
Expand Down
35 changes: 35 additions & 0 deletions docs/greek-commons.md
Original file line number Diff line number Diff line change
Expand Up @@ -646,3 +646,38 @@ via this method and multi-year antiochian data plus an OCA cross-check:
day (Feb 17) and the group day (Oct 5), same as it would need to for
Slavic. Just a completeness gap in our own data, not a date conflict --
out of scope today.

## Pass 13 (headlines from issue #228, 2026-10-14)

Issue #228 compared goarch.org's daily headline with this app's and found 19
dates with no match. Thirteen were Sundays, fixed by naming Greek Sundays after
the Gospel (`GreekDay._apply_title_conventions`) and by giving the July Fathers
Sunday its Greek name. The rest were labels and commemorations the Greek data
lacked. Each is checked against every antiochian.org year that has the date:

| date | Greek | antiochian.org |
|---|---|---|
| Jun 25 | Leavetaking of the Nativity of the Forerunner | 2 of 2 years |
| Jul 23 | Hieromartyr Phocas, Bishop of Sinope | 2 of 2 |
| Oct 28 | Protection of the Most-Holy Theotokos | 4 of 5 |
| Dec 8 | Forefeast of the Conception | 8 of 8 |
| Dec 21-23 | Forefeast of Nativity | 8 of 8 each |

The labels are feast names, which an override row cannot set (`Day.OVERRIDABLE`),
so each `common` row became a `slavic` row and an identical `greek` copy that
adds the name -- the shape Oct 1's Protection already has. Fasting, rank and
saints are copied unchanged, and Slavic output is identical. Phocas is a new
`greek` commemoration on Jul 23 linked to his existing Saint, who keeps Sep 22
in both traditions; antiochian.org lists him on both dates. The Protection is
the Greek Oct 28 observance, alongside Slavic's Oct 1.

Left as they are:

- **Dec 26**: goarch.org heads it "Afterfeast of the Nativity". The app shows
the Synaxis of the Theotokos, which antiochian.org also uses as the headline
in most years.
- **Jan 8-13 and Feb 3**: antiochian.org heads these with the Afterfeast of
Theophany and of the Presentation, but goarch.org heads them with the day's
saints (the issue found a match for every one), and Greek here means GOA.
A feast name outranks the saints in `summary_title`, so adding the label
would move these days away from goarch.org.
138 changes: 132 additions & 6 deletions fixtures/calendarium.json
Original file line number Diff line number Diff line change
Expand Up @@ -12763,7 +12763,28 @@
"fast": 0,
"fast_exception": 0,
"flag": 0,
"tradition": "common",
"tradition": "slavic",
"fast_cap_exempt": null
}
},
{
"model": "calendarium.day",
"pk": 950,
"fields": {
"pdist": 999,
"month": 6,
"day": 25,
"title": "",
"subtitle": "",
"feast_name": "Leavetaking of the Nativity of the Forerunner",
"feast_level": 3,
"service": 0,
"service_note": "",
"story": null,
"fast": 0,
"fast_exception": 0,
"flag": 0,
"tradition": "greek",
"fast_cap_exempt": null
}
},
Expand Down Expand Up @@ -15388,7 +15409,28 @@
"fast": 0,
"fast_exception": 0,
"flag": 0,
"tradition": "common",
"tradition": "slavic",
"fast_cap_exempt": null
}
},
{
"model": "calendarium.day",
"pk": 951,
"fields": {
"pdist": 999,
"month": 10,
"day": 28,
"title": "",
"subtitle": "",
"feast_name": "Protection of the Most-Holy Theotokos",
"feast_level": 3,
"service": 0,
"service_note": "",
"story": null,
"fast": 0,
"fast_exception": 0,
"flag": 0,
"tradition": "greek",
"fast_cap_exempt": null
}
},
Expand Down Expand Up @@ -16249,7 +16291,28 @@
"fast": 5,
"fast_exception": 0,
"flag": 0,
"tradition": "common",
"tradition": "slavic",
"fast_cap_exempt": null
}
},
{
"model": "calendarium.day",
"pk": 952,
"fields": {
"pdist": 999,
"month": 12,
"day": 8,
"title": "",
"subtitle": "",
"feast_name": "Forefeast of the Conception by St Anna of the Theotokos",
"feast_level": 0,
"service": 0,
"service_note": "",
"story": null,
"fast": 5,
"fast_exception": 0,
"flag": 0,
"tradition": "greek",
"fast_cap_exempt": null
}
},
Expand Down Expand Up @@ -16522,7 +16585,28 @@
"fast": 5,
"fast_exception": 0,
"flag": 0,
"tradition": "common",
"tradition": "slavic",
"fast_cap_exempt": null
}
},
{
"model": "calendarium.day",
"pk": 953,
"fields": {
"pdist": 999,
"month": 12,
"day": 21,
"title": "",
"subtitle": "",
"feast_name": "Forefeast of Nativity",
"feast_level": 0,
"service": 0,
"service_note": "",
"story": null,
"fast": 5,
"fast_exception": 0,
"flag": 0,
"tradition": "greek",
"fast_cap_exempt": null
}
},
Expand All @@ -16543,7 +16627,28 @@
"fast": 5,
"fast_exception": 0,
"flag": 0,
"tradition": "common",
"tradition": "slavic",
"fast_cap_exempt": null
}
},
{
"model": "calendarium.day",
"pk": 954,
"fields": {
"pdist": 999,
"month": 12,
"day": 22,
"title": "",
"subtitle": "",
"feast_name": "Forefeast of Nativity",
"feast_level": 0,
"service": 0,
"service_note": "",
"story": null,
"fast": 5,
"fast_exception": 0,
"flag": 0,
"tradition": "greek",
"fast_cap_exempt": null
}
},
Expand All @@ -16564,7 +16669,28 @@
"fast": 5,
"fast_exception": 0,
"flag": 0,
"tradition": "common",
"tradition": "slavic",
"fast_cap_exempt": null
}
},
{
"model": "calendarium.day",
"pk": 955,
"fields": {
"pdist": 999,
"month": 12,
"day": 23,
"title": "",
"subtitle": "",
"feast_name": "Forefeast of Nativity",
"feast_level": 0,
"service": 0,
"service_note": "",
"story": null,
"fast": 5,
"fast_exception": 0,
"flag": 0,
"tradition": "greek",
"fast_cap_exempt": null
}
},
Expand Down
24 changes: 24 additions & 0 deletions fixtures/commemorations.json
Original file line number Diff line number Diff line change
Expand Up @@ -54648,6 +54648,21 @@
"tradition": "slavic"
}
},
{
"model": "commemorations.daycommemoration",
"pk": 7251,
"fields": {
"day": 640,
"title": "Hieromartyr Phocas, Bishop of Sinope",
"story": null,
"rank": 2,
"high_rank": false,
"new_style": false,
"day_native": true,
"ordering": 0,
"tradition": "greek"
}
},
{
"model": "commemorations.daycommemorationsaint",
"pk": 1731,
Expand All @@ -54656,5 +54671,14 @@
"saint": 6846,
"order": 1
}
},
{
"model": "commemorations.daycommemorationsaint",
"pk": 1732,
"fields": {
"commemoration": 7251,
"saint": 5399,
"order": 1
}
}
]
Loading