PYTHONOMANIA
273 subscribers
195 photos
3 videos
1 file
616 links
Откройте для себя мир Python в PYTHONOMANIA!

Идеально подходит как для начинающих, так и для опытных разработчиков. Присоединяйтесь к нам, чтобы достичь совершенства в Python!

Сайт: https://pythonomania.github.io/
Download Telegram
📱Calgebra.

Calgebra — это алгебра множеств для календарей в Python: позволяет комбинировать временные интервалы (|, &, -, ~) и эффективно запрашивать свободные/занятые слоты во временных диапазонах .

❓Зачем это нужно:

🔘Поиск общих свободных окон команды для митингов.

🔘Анализ занятости (кто перегружен, какие слоты пустуют).

🔘Построение «правил времени» для ботов и автоматизации (рабочие часы, исключения, recurring‑паттерны).

🔹Как это выглядит в коде:

from calgebra import day_of_week, time_of_day, at_tz, pprint, hours, HOUR
from itertools import islice

tz = "US/Pacific"
at = at_tz(tz)

# Календари команды (Google / .ics / свои источники)
alice, bob, charlie = ...

# Будни и рабочие часы
weekend = day_of_week(["saturday", "sunday"], tz=tz)
weekdays = ~weekend
workhours = time_of_day(start=9*HOUR, duration=8*HOUR, tz=tz)
business_hours = weekdays & workhours

# Кто когда занят
team_busy = alice | bob | charlie

# Свободные слоты в рабочее время, минимум на 2 часа
free_slots = (business_hours - team_busy) & (hours >= 2)

pprint(islice(free_slots[at("2025-01-01"):at("2025-02-01")], 5), tz=tz)
# 2025-01-06 14:00:00 -> 17:00:00
# 2025-01-08 09:00:00 -> 12:00:00
# ...


🔻Ключевые особенности:

🔘Операции множеств для времени: объединение (|), пересечение (&), разность (-), дополнение (~) над календарными интервалами.

🔘Конструкции «поверх дат»: day_of_week(), time_of_day(), recurring() в стиле RFC 5545 (как в iCalendar).

🔘Фильтрация интервалов: hours >= 2, summary == "standup", кастомные свойства событий.

🔘Отложенное выполнение запросов: вы описываете правила и комбинации, а фактический расчёт происходит при слайсинге по диапазону дат (timeline[start:end]).

🔘Интеграция с реальными календарями:

✔️Google Calendar: чтение и запись через calgebra.gcsa.

✔️iCalendar (.ics): загрузка/сохранение стандартных RFC 5545 файлов.

🔧Установка:

pip install calgebra
# с поддержкой Google Calendar
pip install calgebra[google-calendar]
# с поддержкой iCalendar (.ics)
pip install calgebra[ical]


#Calgebra #Python #Calendar #Scheduling #GoogleCalendar #ICS #SetAlgebra #Automation #OpenSource

📱Ссылка на репозиторий:
https://github.com/ashenfad/calgebra
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍3🔥3