Skip to main content

A tiny DSL for calendar interval algebra - compose, filter, and query time ranges using set operations.

Project description

calgebra 🗓️

A tiny DSL for merging and searching over calendar-like intervals.

Installation

pip install calgebra

# Or with Google Calendar support
pip install calgebra[google-calendar]

Quick Start

from calgebra import day_of_week, time_of_day, hours, at_tz, HOUR

# Compose time windows
weekdays = day_of_week(["monday", "tuesday", "wednesday", "thursday", "friday"])
work_hours = time_of_day(start=9*HOUR, duration=8*HOUR, tz="US/Pacific")
business_hours = weekdays & work_hours

# Find free time
busy = monday_meetings | friday_focus
free = business_hours - busy
long_slots = free & (hours >= 2)

# Query results
at = at_tz("US/Pacific")
meeting_options = list(long_slots[at("2025-01-01"):at("2025-02-01")])

Intervals use exclusive end bounds ([start, end)), matching Python slicing. Interval(start=10, end=13) represents 3 seconds. Intervals are automatically clipped to query bounds.

Core Features:

  • Set operations: | (union), & (intersection), - (difference), ~ (complement)
  • Recurring patterns: recurring(), day_of_week(), time_of_day() (RFC 5545 via python-dateutil)
  • Aggregations: total_duration, max_duration, min_duration, count_intervals, coverage_ratio
  • Transformations: buffer() (add time around intervals), merge_within() (coalesce nearby intervals)
  • Google Calendar: calgebra.gcsa.calendars() for read/write operations

Tutorial | API Reference | Google Calendar Guide

License

MIT License - see LICENSE file for details.

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

calgebra-0.6.1.tar.gz (64.4 kB view details)

Uploaded Source

Built Distribution

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

calgebra-0.6.1-py3-none-any.whl (56.0 kB view details)

Uploaded Python 3

File details

Details for the file calgebra-0.6.1.tar.gz.

File metadata

  • Download URL: calgebra-0.6.1.tar.gz
  • Upload date:
  • Size: 64.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for calgebra-0.6.1.tar.gz
Algorithm Hash digest
SHA256 4fe9344938be04ec2d0bb37b3b76ae2ad6dc5c51989b931f4637746f719792ba
MD5 29993628c0ef058cc49d23569031e051
BLAKE2b-256 3b5ad3984f63fc6bbf4e9da2d3c2ce6da2ef7af343e2df63bcf3730627cdc6ba

See more details on using hashes here.

File details

Details for the file calgebra-0.6.1-py3-none-any.whl.

File metadata

  • Download URL: calgebra-0.6.1-py3-none-any.whl
  • Upload date:
  • Size: 56.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for calgebra-0.6.1-py3-none-any.whl
Algorithm Hash digest
SHA256 26866819640eecac20f9f8a872d47b1cc6462274d02e48708776b3919c40f36b
MD5 a280f3752a4c013ec9a76b087dac8efd
BLAKE2b-256 b7bfb2ffe6e7381408d5b775b81e3253b460937baf6e88f3acebe934e57da6f0

See more details on using hashes here.

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