1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/kinegratii-borax

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Borax — python 农历 & 节日工具库 — 中文数字 / 设计模式 / 树形结构

Обзор

GitHub: https://github.com/kinegratii/borax Gitee: https://gitee.com/kinegratii/borax

Borax представляет собой набор инструментов на Python 3, включающий в себя следующие темы:

Тема (Topics) Содержание
Borax.LunarDate Библиотека дат китайского сельскохозяйственного календаря за 1900–2100 годы
Borax.Festivals Инструменты для популярных праздников (по григорианскому и сельскохозяйственному календарю, по неделям, по сезонам)
Borax.Choices Декларативный класс опций. Подходит для Django.models.choices
Borax.Datasets Библиотека для работы с данными, включая объединение (Join), выбор столбцов (fetch) и т. д.
Borax.DataStuctures Деревья, JSON-данные
Borax.Numbers Библиотека чисел. Включает китайские цифры, проценты и т. п.
Borax.Patterns Шаблоны проектирования. Включают одиночный элемент, прокси-объект, отложенный объект

Установка

Требования к версии Python для Borax:

Версия borax Версия Python Состояние поддержки
4.1.x 3.9+ Поддерживается в разработке
4.0.0 3.7+ Поддержка до 31 декабря 2024 года
3.x 3.5+ Не поддерживается

Можно установить через pip:

$ pip install borax

Версия

Версии Borax соответствуют семантическому управлению версиями (Semantic Versioning). Формат версии: <основная версия>.<дополнительная версия>.<версия исправления>. Рекомендуется использовать следующий способ определения зависимостей от версий Borax:

borax~=4.1

Использование

Borax.LunarDate: китайский сельскохозяйственный календарь

Поддерживает даты сельскохозяйственного календаря с 1900 по 2100 год.

Данные и алгоритмы этого модуля основаны на проекте jjonline/calendar.js, некоторые данные и алгоритмы были изменены.

Создание дат и расчёт дат

from datetime import timedelta
from borax.calendars import LunarDate

# Получить сегодняшнюю дату по сельскохозяйственному календарю (сельскохозяйственный календарь 2018 года, 7 месяц, 1 день)
print(LunarDate.today()) # LunarDate(2018, 7, 1, 0)

# Преобразовать дату по григорианскому календарю в дату по сельскохозяйственному календарю
ld = LunarDate.from_solar_date(2018, 8, 11)
print(ld) # LunarDate(2018, 7, 1, 0)

# Расчёт даты, возврат даты через 10 дней
print(ld.after(10)) # LunarDate(2018, 7, 11, 0)

# Можно напрямую складывать и вычитать с datetime.timedelta
print(ld + timedelta(days=10)) # LunarDate(2018, 7, 11, 0)

Форматирование строк

today = LunarDate.today()
print(today.strftime('%Y年%L%M月%D')) # '2018年六月廿六'
print(today.strftime('今天的干支表示法为:%G')) # '今天的干支表示法为:戊戌年庚申月辛未日'

Borax.Festival: национальные и международные праздники

Создать объект праздника Весеннего фестиваля (каждый год 1 января по сельскохозяйственному календарю)

from borax.calendars.festivals2 import LunarFestival

festival = LunarFestival(month=1, day=1)
print(festival.description) # 'Каждый год 1 января по сельскохозяйственному календарю'

# Следующая дата Весеннего фестиваля и количество дней до неё
print(festival.countdown()) # (273, <WrappedDate:2022-02-01(二〇二二年正月初一)>)

# Следующие 5 дат Весеннего фестиваля ['2022-02-01(二〈二二年正月初一)', '2023-01-22(二〈三年正月初一)', '2024-02-10(二〈四年正月初一)', '2025-01-29(二〈五年正月初一)', '2026-02-17(二〈六年正月初一)']
print([str(wd) for wd in festival.list_days(start_date=date.today(), count=5)])

Поддерживаемые типы праздников

Праздник Представление Нормализованное описание
Новый год SolarFestival(месяц=1, день=1) Каждый год 1 января
Осенний фестиваль LunarFestival(месяц=8, день=15) Каждый год 15 августа
День матери (каждое второе воскресенье мая) WeekFestival(месяц=5, index=2, week=calendar.SUNDAY) Каждое второе воскресенье мая
Канун Нового года LunarFestival(день=-1) Последний день каждого года
Международный день программиста SolarFestival(freq=FreqConst.YEARLY, день=256) 256-й день каждого года
Цинмин TemFestival(name="清明") Цинмин
Каждый 5-й день месяца SolarFestival(freq=FreqConst.MONTHLY, день=5) Пятый день каждого месяца
Всемирный день борьбы с малярией WeekFestival(месяц=1, index=-1, неделя=calendar.SUNDAY) Первое воскресенье января
Последний выходной каждого месяца WeekFestival(месяц=0, индекс=-1, Последний выходной каждого месяца Борэкс. Фестиваль Лайбрари: встроенная библиотека праздников

Основные примеры использования:

from datetime import date
from borax.calendars.festivals2 import FestivalLibrary, WrappedDate

library = FestivalLibrary.load_builtin()

# 2020 год, китайский национальный день и праздник середины осени приходятся на один и тот же день
names = library.get_festival_names(date(2020, 10, 1))
print(names) # ['китайский национальный день', 'праздник середины осени']

# 2021 год, праздник Цисицзе
festival = library.get_festival('Цисицзе')
print(festival.description) # 'по лунному календарю каждый год седьмой день седьмого месяца'
print(WrappedDate(festival.at(year=2021))) # '2021-08-14(две тысячи двадцать первый год седьмой месяц седьмой день)'

Вычисление праздника и количества дней между ним и текущей датой (4 мая 2021 года):


from borax.calendars.festivals2 import FestivalLibrary

library = FestivalLibrary.load_builtin()
for ndays, wd, festival in library.list_days_in_countdown(countdown=365):
    print(f'{ndays:>3d} {wd} {festival.name}')

Результат:

  0 2022-05-04(четвёртый месяц четвёртый день) китайский национальный день
  4 2022-05-08(четвёртый месяц восьмой день) день матери
  8 2022-05-12(четвёртый месяц двенадцатый день) день медсестры
...
332 2023-04-01(високосный второй месяц одиннадцатый день) праздник дурака
336 2023-04-05(високосный второй месяц пятнадцатый день) чистый свет
362 2023-05-01(третий месяц двенадцатый день) международный день труда

Борэкс. Нумбэрс: обработка китайских цифр

Различные формы китайских цифр:

from borax.numbers import ChineseNumbers

# строчные буквы, меры
print(ChineseNumbers.measure_number(204)) # 'двести четыре'
# строчные буквы, номера
print(ChineseNumbers.order_number(204)) # 'двести ноль четыре'
# заглавные буквы, меры
print(ChineseNumbers.measure_number(204, upper=True)) # 'две сотни ноль четыре'
# заглавные буквы, номера
print(ChineseNumbers.order_number(204, upper=True)) # 'две сотни нольчетыре'

Финансовые суммы:

import decimal

from borax.numbers import FinanceNumbers

decimal.getcontext().prec = 2

print(FinanceNumbers.to_capital_str(100000000)) # 'сто миллионов юаней'
print(FinanceNumbers.to_capital_str(4578442.23)) # 'четыре миллиона пятьсот семьдесят восемь тысяч четыреста сорок два юаня двадцать три'
print(FinanceNumbers.to_capital_str(107000.53)) # 'один миллион семьдесят тысяч пятьдесят три'
print(FinanceNumbers.to_capital_str(decimal.Decimal(4.50))) # 'четыре юаня пятьдесят'

Дополнительные функции модуля см. в документации.

Документация (Document)

Документация создана с помощью Material for MkDocs, также используется docsify для резервной документации.

С 2024 года, только Read the Docs будет использоваться в качестве источника документации.

Источник Веб-сайт
read-the-docs https://borax.readthedocs.io/zh_CN/latest/
github (больше не используется) https://kinegratii.github.io/borax
gitee (больше не используется) https://kinegratii.gitee.io/borax

Особенности разработки и стандарты (Development Features)

Сборка проекта (Project Build)

Начиная с версии 4.1.0, borax использует pyproject.toml в качестве файла конфигурации для сборки проекта и использует следующую команду для создания пакета выпуска wheel.

python -m build -w

Лицензия с открытым исходным кодом (License)

The MIT License (MIT)

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/kinegratii-borax.git
git@api.gitlife.ru:oschina-mirror/kinegratii-borax.git
oschina-mirror
kinegratii-borax
kinegratii-borax
master