Skip to main content

Utilities and value objects for working with the Gorman calendar.

Project description

dateutil-gorman

dateutil-gorman is a typed Python package for converting between Gregorian dates and the Gorman calendar.

Features

  • src/ layout with a small, explicit public API.
  • Immutable value objects for regular Gorman dates and intermission days.
  • Bidirectional Gregorian conversion helpers.
  • String parsing for common Gorman date formats.
  • No runtime dependencies outside the Python standard library.

Installation

pip install dateutil-gorman

For local development with uv:

uv sync --extra dev

Quick Start

from datetime import date, datetime

from dateutil_gorman import (
    GormanDate,
    gregorian_to_gorman,
    gorman_to_gregorian,
    parse_gorman,
)

gorman_value = gregorian_to_gorman(date(2024, 1, 1))
assert str(gorman_value) == "1 March 2024"

gregorian_value = gorman_to_gregorian(2024, 6, 15)
assert gregorian_value.isoformat() == "2024-06-03"

parsed = parse_gorman("June 15, 2024 14:30")
assert parsed == datetime(2024, 4, 8, 14, 30)

same_day = GormanDate.fromisoformat("2024-06-10")
assert same_day.to_gregorian().isoformat() == "2024-06-10"

Usage

Convert Gregorian values

from datetime import date

from dateutil_gorman import gregorian_to_gorman

assert str(gregorian_to_gorman(date(2024, 12, 30))) == "Intermission 1 2024"
assert str(gregorian_to_gorman(date(2024, 12, 31))) == "Intermission 2 2024"

Work with immutable value objects

from dateutil_gorman import GormanDate

gorman_date = GormanDate(year=2024, month=6, day=15)
updated = gorman_date.replace(day=1)

assert str(gorman_date) == "15 Sextilis 2024"
assert str(updated) == "1 Sextilis 2024"

Parse Gorman strings

from dateutil_gorman import parse_gorman

assert parse_gorman("15 June 2024").isoformat() == "2024-04-08T00:00:00"
assert parse_gorman("Intermission 1 2024 08:15").isoformat() == "2024-12-30T08:15:00"

Public API

Classes

  • GormanDate: Immutable regular-month date with conversion, week-calendar, ordinal, and replacement helpers.
  • Intermission: Immutable year-end intermission day with Gregorian conversion and replacement helpers.

Functions

  • gregorian_to_gorman(d): Convert a Gregorian date or datetime.
  • gorman_to_gregorian(year, month, day): Convert a regular Gorman date.
  • intermission_to_gregorian(year, day): Convert an intermission day.
  • parse_gorman(date_string): Parse supported Gorman date strings into a Gregorian datetime.

Constants

  • GORMAN_MONTHS: Ordered tuple of month names used by the Gorman calendar.

Development

uv sync --extra dev
uv run pytest
uv run ruff check .
uv run mypy src

Contributing

  1. Fork the repository and create a feature branch.
  2. Keep the public API typed and documented with Google-style docstrings.
  3. Add or update tests for behavior changes.
  4. Run uv run pytest, uv run ruff check ., and uv run mypy src before opening a pull request.

License

Released under the MIT License.

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

dateutil_gorman-0.1.3.tar.gz (13.9 kB view details)

Uploaded Source

Built Distribution

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

dateutil_gorman-0.1.3-py3-none-any.whl (8.9 kB view details)

Uploaded Python 3

File details

Details for the file dateutil_gorman-0.1.3.tar.gz.

File metadata

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

File hashes

Hashes for dateutil_gorman-0.1.3.tar.gz
Algorithm Hash digest
SHA256 dbf9048000d84cfef8be4579b3dcf206d2b12a313b4d682389ae95d7d8617945
MD5 02db9b36b6a38204d865ed8f5971a724
BLAKE2b-256 4e853bfc729b5576bc26678a36efa9919edc4fb608709d278afd7029b93b48f5

See more details on using hashes here.

Provenance

The following attestation bundles were made for dateutil_gorman-0.1.3.tar.gz:

Publisher: publish.yaml on BGarber42/dateutil_gorman

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

File details

Details for the file dateutil_gorman-0.1.3-py3-none-any.whl.

File metadata

File hashes

Hashes for dateutil_gorman-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 8525b5344cd0a17349a71e2ff31ef29c66e0e4c4a448b5fdeb1526feec548b59
MD5 c0da6b5d3756f22462b4d2d4c1ae0d62
BLAKE2b-256 0cad0571d4125d4c5c1b6bdf0422fcc3e205277cd6ac2408b1ae2c28b3bf72be

See more details on using hashes here.

Provenance

The following attestation bundles were made for dateutil_gorman-0.1.3-py3-none-any.whl:

Publisher: publish.yaml on BGarber42/dateutil_gorman

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