Обзор GCAL на GitHub

Репозиторий gopa810/gaurabda-calendar на GitHub — это специализированная библиотека на языке Python, предназначенная для вычисления традиционного индийского астрономического календаря (Панчанги) с акцентом на вайшнавский календарь (Гаурабда).

Этот инструмент является open-source реализацией алгоритмов знаменитой программы GCAL (Gaurabda Calendar), которая признана официальным стандартом для расчета дат, праздников и дней постов (Экадаши) в ИСККОН (Международном обществе сознания Кришны) и других гаудия-вайшнавских организациях.

Ниже представлен детальный технический и функциональный обзор этой библиотеки.

🏛 Назначение и каноническая база

Главная ценность библиотеки — точный расчет Вайшнавского календаря. В отличие от стандартных гражданских или общеиндуистских календарей, здесь запрограммирована сложная система наложения лунных суток (титхи) с учетом предрассветного времени (Арунодаи), правил осквернения суток (ведха) и особых условий Махадвадаши (таких как Унмилани, Вьянджули и др.), описанных в трактате «Хари-бхакти-виласа».

Библиотека позволяет рассчитывать:

1) Дни постов на Экадаши и точное время выхода из них (Парана) для любой точки Земли.

2) Дни явления и ухода ачарьев и святых вайшнавской традиции.

3) Переходящие праздники (Гаура-Пурнима, Джанмаштами, Радхаштами и др.).

⚙ Технические особенности и управление правилами

Одной из важнейших фич проекта является переключатель математических правил расчета, который крайне важен для бэкенда религиозных приложений. В коде реализована функция gcal.SetFastingSchema(mode), которая поддерживает два официальных астрологических стандарта:

1) «Новый» стиль (0): Правила постов, основанные на строгой интерпретации «Хари-бхакти-виласы», принятые в ИСККОН после 2006 года (стандарт современной программы GCAL).

2) «Старый» стиль (1): Правила, использовавшиеся до 2006 года в более ранней программе VCAL.

📂 Архитектура проекта

Пакет полностью написан на Python (100% состава кода) и устанавливается через стандартный менеджер пакетов:

pip install gaurabda

1. Гео-координаты

Движок полностью геозависим. Для расчета рассветов и фаз Луны можно создать новую локацию или выполнить поиск по встроенной базе городов:

import gaurabda as gcal

2. Расчет календаря и экспорт данных

Сердцем расчетов является класс TCalendar. Библиотека имеет мощный встроенный генератор отчетов, поддерживающий выгрузку данных в JSON, HTML, XML, Plain Text и RTF.

⚖ Некоторые особенности

1) Лицензия MIT: Полная юридическая свобода интеграции в коммерческие и мобильные приложения.

2) Автономия: Не требует постоянных запросов к сторонним API, все эфемериды и формулы считаются локально на сервере.

3) Готовый экспорт: Форматирование в JSON «из коробки» идеально подходит для создания REST-API календарей.

4) Проект заморожен (Legacy): Последний стабильный релиз был выпущен в июне 2021 года. Проект имеет статус архивного/стабильного, но крупные обновления кода мейнтейнером gopa810 не ведутся.

5) Отсутствие глубокой оптимизации: Для масштабных высоконагруженных сервисов (миллионы запросов) чистый расчет на Python может быть медленным, поэтому сгенерированные сетки календарей рекомендуется кэшировать в базу данных (например, PostgreSQL или Redis), а не считать «на лету» при каждом запросе пользователя.

1