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 details)

Uploaded Source

Built Distribution

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

Uploaded Python 2

File details

Details for the file weekly-calendar-0.1.2.tar.gz.

File metadata

  • Download URL: weekly-calendar-0.1.2.tar.gz
  • Upload date:
  • Size: 3.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/2.7.15

File hashes

Hashes for weekly-calendar-0.1.2.tar.gz
Algorithm Hash digest
SHA256 828c0d5b73b467550cb36e357af61ca05d6c53315c290a7f4253b29a40918e9f
MD5 94cdce53ff5fdfa3cc26fd85932d30d3
BLAKE2b-256 edb757ccf71984e1045c9bc80d2a49b1fa4c9b3f34b706ebdc8cca09a9547408

See more details on using hashes here.

File details

Details for the file weekly_calendar-0.1.2-py2-none-any.whl.

File metadata

  • Download URL: weekly_calendar-0.1.2-py2-none-any.whl
  • Upload date:
  • Size: 5.0 kB
  • Tags: Python 2
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/2.7.15

File hashes

Hashes for weekly_calendar-0.1.2-py2-none-any.whl
Algorithm Hash digest
SHA256 1c55c99949b2af5559c5cd0573635182977efef89fa6fd479b979adcd914304e
MD5 70525e3e2379a50a529326e60f16a324
BLAKE2b-256 5a29cb5484f45ac2a65e410abc6fba920853fc37d3a52cc843ed8d5efe6d9cc0

See more details on using hashes here.

Supported by

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