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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5dbae956bfa89bcab79c85bd0851e8cd17b2f34e1ba0b471552906da3f649d4b
|
|
| MD5 |
fb3babb2fa2bc8a4f6f40bc0c01d2de0
|
|
| BLAKE2b-256 |
c3838b07bfe7d7fd0815ed5c9bd8607421b85e55f5deaa69ee29d0447ff5b6ef
|
Provenance
The following attestation bundles were made for gaiancalendar-0.1.0.tar.gz:
Publisher:
publish.yml on Emma-Leonhart/GaianCalendar
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
gaiancalendar-0.1.0.tar.gz -
Subject digest:
5dbae956bfa89bcab79c85bd0851e8cd17b2f34e1ba0b471552906da3f649d4b - Sigstore transparency entry: 1004754098
- Sigstore integration time:
-
Permalink:
Emma-Leonhart/GaianCalendar@c575927f6c3d7123e60ac1e1d85ee28af95a06e0 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/Emma-Leonhart
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@c575927f6c3d7123e60ac1e1d85ee28af95a06e0 -
Trigger Event:
release
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a95e8463d6881dce91c38d6414547efd0d5bb423647f7d2476918a445ec2c98b
|
|
| MD5 |
5b387e6b2f97033c93e19ce3fcc05dc1
|
|
| BLAKE2b-256 |
1bb908747201ab828467b13027337b7aa4d18994baaf2a7968fd04b997970f9f
|
Provenance
The following attestation bundles were made for gaiancalendar-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on Emma-Leonhart/GaianCalendar
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
gaiancalendar-0.1.0-py3-none-any.whl -
Subject digest:
a95e8463d6881dce91c38d6414547efd0d5bb423647f7d2476918a445ec2c98b - Sigstore transparency entry: 1004754113
- Sigstore integration time:
-
Permalink:
Emma-Leonhart/GaianCalendar@c575927f6c3d7123e60ac1e1d85ee28af95a06e0 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/Emma-Leonhart
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@c575927f6c3d7123e60ac1e1d85ee28af95a06e0 -
Trigger Event:
release
-
Statement type: