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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
828c0d5b73b467550cb36e357af61ca05d6c53315c290a7f4253b29a40918e9f
|
|
| MD5 |
94cdce53ff5fdfa3cc26fd85932d30d3
|
|
| BLAKE2b-256 |
edb757ccf71984e1045c9bc80d2a49b1fa4c9b3f34b706ebdc8cca09a9547408
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1c55c99949b2af5559c5cd0573635182977efef89fa6fd479b979adcd914304e
|
|
| MD5 |
70525e3e2379a50a529326e60f16a324
|
|
| BLAKE2b-256 |
5a29cb5484f45ac2a65e410abc6fba920853fc37d3a52cc843ed8d5efe6d9cc0
|