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.4.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.4-py3-none-any.whl (11.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: kiahk-0.1.4.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.4.tar.gz
Algorithm Hash digest
SHA256 475808463f99f13bec0bc9fa8a317e563731d30a77161b3d07eb4a7399e159a1
MD5 97e38c9e3f03e4c676d5f72719031da9
BLAKE2b-256 dcd5e6b833b0ad3c6bed0ffaa9734d13b808cf984735666f3b6646f3614742a3

See more details on using hashes here.

Provenance

The following attestation bundles were made for kiahk-0.1.4.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.4-py3-none-any.whl.

File metadata

  • Download URL: kiahk-0.1.4-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.4-py3-none-any.whl
Algorithm Hash digest
SHA256 fc2021d753f0b3c5b24f62f45fb725b5e0d63b0d0da456dba15bd04d056c06c4
MD5 23a6a98748816709513e232e109daab2
BLAKE2b-256 e1032827899ae32f195f3488f753394c85e17731cdd84a87bd21c9bc181eda14

See more details on using hashes here.

Provenance

The following attestation bundles were made for kiahk-0.1.4-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