Skip to main content

Python library for the Gaian Calendar — a perpetual 13-month solar calendar based on ISO week-year arithmetic.

Project description

GaianCalendar

A pure-Python library for the Gaian Calendar — a perpetual 13-month solar calendar based on ISO week-year arithmetic.

from gaian_calendar import GaianDate

today = GaianDate.today()
print(today)                    # e.g. "Aquarius 22, 12026 GE"
print(today.day_of_year)        # e.g. 78
print(today.is_leap_year)       # True
print(today.format("WWWW, MMMM d, yyyy GE"))  # "Sunday, Aquarius 22, 12026 GE"

Status

Pre-release — planning phase. See planning/ for design documents.


What is the Gaian Calendar?

The Gaian Calendar is a perpetual reform calendar with these properties:

  • 13 regular months of exactly 28 days (4 weeks × 7 days), named after zodiac constellations
  • 1 intercalary month (Horus, 7 days) in leap years only — years with ISO week 53
  • Perpetual: every calendar date always falls on the same weekday, every year
  • Year numbering: Gaian year = ISO week-year + 10,000 (so 2026 CE = 12026 GE)
  • Zero weekday drift: recurring events stay on the same day of week indefinitely

The 13 months in order: Sagittarius · Capricorn · Aquarius · Pisces · Aries · Taurus · Gemini · Cancer · Leo · Virgo · Libra · Scorpius · Ophiuchus · (Horus in leap years)


Installation

pip install gaian-calendar

(Not yet published — coming soon)


Usage

from datetime import date, timedelta
from gaian_calendar import GaianDate, GaianMonth, is_leap_year

# Today
d = GaianDate.today()

# From Gregorian
d = GaianDate.from_gregorian(date(2026, 2, 22))
print(d)                  # "Aquarius 22, 12026 GE"
print(d.to_gregorian())   # 2026-02-22

# Properties
print(d.year)             # 12026
print(d.month)            # 3
print(d.day)              # 22
print(d.month_name)       # "Aquarius"
print(d.month_symbol)     # "♒"
print(d.weekday_name)     # "Sunday"
print(d.weekday_symbol)   # "☉"
print(d.day_of_year)      # 78
print(d.is_leap_year)     # True

# Arithmetic
next_week = d + timedelta(weeks=1)
yesterday = d - timedelta(days=1)
delta = d - GaianDate(12026, 1, 1)   # timedelta

# Parsing
d = GaianDate.parse("Aquarius 22, 12026")
d = GaianDate.parse("12026-03-22")
d = GaianDate.parse("3/22/12026")

# Formatting
d.format("MMMM d, yyyy GE")          # "Aquarius 22, 12026 GE"
d.format("MMM* DDD")                 # "♒ 078"
d.format("yyyy-MM-dd")               # "12026-03-22"
d.format("ddd")                      # "22nd"

# Leap year check
is_leap_year(12026)    # True
is_leap_year(12025)    # False

# Month info
from gaian_calendar import GaianMonth
m = GaianMonth.AQUARIUS
print(m.symbol)    # "♒"
print(m.element)   # "Air"

Similar Libraries

This library is modeled after:


License

MIT

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

gaiancalendar-0.1.0.tar.gz (12.2 kB view details)

Uploaded Source

Built Distribution

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

gaiancalendar-0.1.0-py3-none-any.whl (11.8 kB view details)

Uploaded Python 3

File details

Details for the file gaiancalendar-0.1.0.tar.gz.

File metadata

  • Download URL: gaiancalendar-0.1.0.tar.gz
  • Upload date:
  • Size: 12.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for gaiancalendar-0.1.0.tar.gz
Algorithm Hash digest
SHA256 5dbae956bfa89bcab79c85bd0851e8cd17b2f34e1ba0b471552906da3f649d4b
MD5 fb3babb2fa2bc8a4f6f40bc0c01d2de0
BLAKE2b-256 c3838b07bfe7d7fd0815ed5c9bd8607421b85e55f5deaa69ee29d0447ff5b6ef

See more details on using hashes here.

Provenance

The following attestation bundles were made for gaiancalendar-0.1.0.tar.gz:

Publisher: publish.yml on Emma-Leonhart/GaianCalendar

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

File details

Details for the file gaiancalendar-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: gaiancalendar-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 11.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for gaiancalendar-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a95e8463d6881dce91c38d6414547efd0d5bb423647f7d2476918a445ec2c98b
MD5 5b387e6b2f97033c93e19ce3fcc05dc1
BLAKE2b-256 1bb908747201ab828467b13027337b7aa4d18994baaf2a7968fd04b997970f9f

See more details on using hashes here.

Provenance

The following attestation bundles were made for gaiancalendar-0.1.0-py3-none-any.whl:

Publisher: publish.yml on Emma-Leonhart/GaianCalendar

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