Skip to main content

Coptic calendar arithmetic — date conversion, Easter, and feast days

Project description

Kiahk logo

kiahk (Python)

PyPI version PyPI downloads Python versions license

Coptic calendar arithmetic — date conversion, Easter, and feast days. Python port of kiahk. Identical results to all other ports against core/test-vectors.json.

Package: https://pypi.org/project/kiahk/

Install

pip install kiahk

Or from this repo for development:

cd py
python3 -m venv .venv
.venv/bin/pip install -e ".[dev]"

Quick start

from kiahk import CopticDate, GregorianDate, CopticCalendar

# Convert Gregorian → Coptic
g = GregorianDate(2025, 1, 11)
c = g.to_coptic()
print(c.year, c.month, c.day)  # 1741 5 3

# Convert Coptic → Gregorian
c2 = CopticDate(1742, 1, 1)
g2 = c2.to_gregorian()
print(g2.year, g2.month, g2.day)  # 2025 9 11

# Coptic Easter for a Gregorian year
easter = CopticCalendar.easter_date(2025)
print(easter.year, easter.month, easter.day)  # 2025 4 20

# All major feasts for a Gregorian year, sorted by date
for feast in CopticCalendar.year_feasts(2025):
    g = feast.gregorian_date
    print(f"{g.year}-{g.month:02d}-{g.day:02d}  {feast.name('en')}")

Sample output:

1741 5 3
2025 9 11
2025 4 20
2025-01-07  Nativity of Christ
2025-01-19  Epiphany (Theophany)
2025-02-10  Nineveh Fast
2025-02-24  Great Lent (start)
2025-04-07  Annunciation
2025-04-13  Palm Sunday
2025-04-20  Easter Sunday
2025-05-29  Ascension
2025-06-08  Pentecost
2025-08-22  Assumption of Mary
2025-09-27  Feast of the Cross

Render a date in English and Arabic

The library exposes Coptic month names in en + ar via CopticCalendar.month_name(month, locale). The full 13-entry table is also re-exported as COPTIC_MONTHS for callers that prefer raw data.

from kiahk import GregorianDate, CopticCalendar

g = GregorianDate(2025, 4, 20)
c = g.to_coptic()
print(f"{c.day} {CopticCalendar.month_name(c.month, 'en')} {c.year} AM")
print(f"{c.day} {CopticCalendar.month_name(c.month, 'ar')} {c.year} للشهداء")

Sample output:

12 Parmouti 1741 AM
12 برمودة 1741 للشهداء

API at a glance

Type / method Purpose
GregorianDate(y, m, d) Value type; raises InvalidGregorianDateError on bad input
GregorianDate.to_coptic()CopticDate Convert
GregorianDate.to_native_date() / from_native_date(date) Interop with datetime.date
CopticDate(y, m, d) Value type; raises InvalidCopticDateError on bad input
CopticDate.to_gregorian()GregorianDate Convert
Feast id, type, category, gregorian_date, .name(locale)
Feast.name("fr") Raises UnsupportedLocaleError for unknown locale
CopticCalendar.easter_date(year)GregorianDate Coptic Easter
CopticCalendar.moveable_feast(feast_id, year)Feast One moveable feast
CopticCalendar.year_feasts(year)list[Feast] All feasts, sorted ascending
CopticCalendar.month_name(month, locale)str Coptic month name; raises InvalidCopticMonthError / UnsupportedLocaleError
COPTIC_MONTHS 13-entry list of dicts (mirrors core/coptic_months.json)

Supported locales for Feast.name(...) and CopticCalendar.month_name(...): en, ar.

Run tests

cd py
.venv/bin/pytest -v

License

Licensed under the MIT License.

Maintained by Amir Magdy at WizardLabz.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kiahk-0.1.5.tar.gz (12.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kiahk-0.1.5-py3-none-any.whl (11.1 kB view details)

Uploaded Python 3

File details

Details for the file kiahk-0.1.5.tar.gz.

File metadata

  • Download URL: kiahk-0.1.5.tar.gz
  • Upload date:
  • Size: 12.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for kiahk-0.1.5.tar.gz
Algorithm Hash digest
SHA256 7ff730521e9f439e50867a9480da8349fc5a61f20fb62c607b290b38fa068e6b
MD5 9da89aade9827b11312d16725f143023
BLAKE2b-256 25c112a242aef07731523204e17e5ec746edbe19ec5e2163ae1de08a7f188d6d

See more details on using hashes here.

Provenance

The following attestation bundles were made for kiahk-0.1.5.tar.gz:

Publisher: release-pypi.yml on amir-magdy-of-wizardlabz/kiahk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file kiahk-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: kiahk-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 11.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for kiahk-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 93c6e1b7a9c8c8433e841a141679a8c9ba727fd2b210d91ffcfbe775d322f35c
MD5 d8c3d0d36f53bf95b8f3f40bddc71fce
BLAKE2b-256 e1d9d5fda318f354b8100512931c287510238c5ec6b43f3b6dc0bada4180ed25

See more details on using hashes here.

Provenance

The following attestation bundles were made for kiahk-0.1.5-py3-none-any.whl:

Publisher: release-pypi.yml on amir-magdy-of-wizardlabz/kiahk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page