Skip to main content

A simple library to deal with weekly opening hours and other recurrent weekly events

Project description

WeeklyCalendar

A simple library to deal with weekly opening hours and other recurrent weekly events

Usage

Methods will either return a Boolean or datetime based intervals.

from weekly_calendar import WeeklyCalendar
from datetime import datetime, timedelta

now = datetime.now()
typical_week = WeeklyCalendar(resolution_in_minutes=60)
# typical_week is mapped into a bitmap with a bit representing one hour
assert typical_week.is_idle(now)
typical_week.add_busy_interval(now, now + timedelta(hours=3))
# the date doens't really matter, only the day of the week does
assert typical_week.is_busy(now)
busy_intervals = typical_week.get_busy_intervals(now, now + timedelta(hours=5))
# The result is a list of intervals (start_time, end_time)
idle_intervals = typical_week.get_idle_intervals(now, now + timedelta(hours=5))
# The result is a list of intervals (start_time, end_time)

You can also do union and intersection of different WeeklyCalendar objects:

from weekly_calendar import WeeklyCalendar

tw_60 = WeeklyCalendar(resolution_in_minutes=60)
tw_30 = WeeklyCalendar(resolution_in_minutes=30)
# resulting objects will have the lowest resolution
tw_union = tw_30 + tw_60
tw_intersection = tw_30 * tw_60

You can change resolution of an existing WeeklyCalendar object:

from weekly_calendar import WeeklyCalendar

tw_60 = WeeklyCalendar(resolution_in_minutes=60)
tw_60_to_30 = tw_60.copy(resolution_in_minutes=30)

Your WeeklyCalendar object is serializable:

from weekly_calendar import WeeklyCalendar

tw = WeeklyCalendar()
str_repr = tw.dumps()
tw_loaded = WeeklyCalendar.loads(str_repr)
# checks equal resolution, bitmap, and extra parameters
assert tw == tw_loaded

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

weekly-calendar-0.1.2.tar.gz (3.8 kB view hashes)

Uploaded Source

Built Distribution

weekly_calendar-0.1.2-py2-none-any.whl (5.0 kB view hashes)

Uploaded Python 2

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page