Logo Lanfrica

Bikilaketema/ethiotime

Record type:

software
Creator:
Bik
Host:
Ethiopian calendar and time conversion library for Python. # ethiotime A production-ready, pure-Python library for Ethiopian calendar and time conversions. Designed for accuracy, reliability, and ease of use in any Python project (including FastAPI). ## Features - **Robust Calendar Conversion**: Bi-directional conversion between Ethiopian (Amete Mihret) and Gregorian calendars. - **Leap Year Support**: Handles the Ethiopian 4-year cycle, including the 6-day Pagume month. - **Ethiopian Time Conversion**: Converts standard 24-hour time to the 12-hour Ethiopian system (where the day starts at 6 AM). - **Production-Grade Validation**: Strict type checking and value range validation for all inputs. - **Zero Dependencies**: Pure Python implementation with no external requirements. ## Installation ### From PyPI ```bash pip install ethiotime ``` ### Local Development To use the library locally or contribute to it: ```bash git clone github.com cd ethiotime pip install -e . ``` ## Usage ### Calendar Conversion ```python from datetime import date from ethiotime import CalendarService # Ethiopian to Gregorian # Example: Meskerem 1, 2017 EC g_date = CalendarService.ec_to_gc(2017, 1, 1) print(g_date) # 2024-09-11 # Gregorian to Ethiopian # Supports datetime.date objects or ISO strings (YYYY-MM-DD) e_date_1 = CalendarService.gc_to_ec(date(2024, 9, 11)) e_date_2 = CalendarService.gc_to_ec("2024-09-11") print(e_date_1) # (2017, 1, 1) print(e_date_2) # (2017, 1, 1) ``` ### Time Conversion ```python from ethiotime import TimeService # Standard Hour (0-23) to Ethiopian Hour (1-12) # 6 AM (06:00) standard time is 12:00 in Ethiopia eth_hour = TimeService.standard_to_ethiopian(6) print(eth_hour) # 12 # Ethiopian Hour (1-12) to Standard 12-hour clock # 12:00 Ethiopian is 6:00 standard std_hour = TimeService.ethiopian_to_standard(12) print(std_hour) # 6 ``` ## Validation & Edge Cases The library strictly validates all inputs: - Month must be 1-13. - Pagume (Month 13) is validated as 5 days f …