A Time Window library
Project description
Time Window
Time Window is a small Python library that implements a representation for a
period of time, in the form of a half-open interval [since, until).
Installation
Install using pip from PyPI.
pip install time-window
Usage
Instantiate a new TimeWindow object using two datetime.datetime objects for
the boundaries.
>>> from datetime import datetime
>>> from time_window import TimeWindow
>>> since = datetime(2019, 1, 23)
>>> until = datetime(2019, 1, 29)
>>> tw = TimeWindow(since, until)
>>> tw
TimeWindow(datetime.datetime(2019, 1, 23, 0, 0), datetime.datetime(2019, 1, 29, 0, 0))
Alternatively, instantiate a new TimeWindow object using a datetime.datetime object and one
datetime.timedelta for the definition of the boundaries.
>>> from datetime import timedelta
>>> delta = timedelta(days=1)
>>> tw = TimeWindow.from_timedelta(since, delta)
>>> tw
TimeWindow(datetime.datetime(2019, 1, 23, 0, 0), datetime.datetime(2019, 1, 24, 0, 0))
Get the size of the window.
>>> tw.delta
datetime.timedelta(1)
Get the time that is in the middle of the window.
>>> tw.middle
datetime.datetime(2019, 1, 23, 12, 0)
You can also check if two TimeWindow objects overlap.
>>> tw = TimeWindow(datetime(2019, 1, 23), datetime(2019, 1, 29))
>>> tw2 = TimeWindow(datetime(2019, 1, 27), datetime(2019, 1, 30))
>>> tw.overlaps(tw2)
True
Complementary to the above action, you can check if two time windows are contiguous (i.e., adjacent, sharing one boundary).
>>> tw = TimeWindow(datetime(2019, 1, 23), datetime(2019, 1, 29))
>>> tw2 = TimeWindow(datetime(2019, 1, 20), datetime(2019, 1, 23))
>>> tw.contiguous(tw2)
[TimeWindow(datetime.datetime(2019, 1, 20, 0, 0), datetime.datetime(2019, 1, 23, 0, 0)),
TimeWindow(datetime.datetime(2019, 1, 23, 0, 0), datetime.datetime(2019, 1, 29, 0, 0))]
>>> tw3 = TimeWindow(datetime(2019, 1, 20), datetime(2019, 1, 21))
>>> tw.contiguous(tw3)
False
Any TimeWindow object offers some of the standard set operations.
>>> tw = TimeWindow(datetime(2019, 1, 23), datetime(2019, 1, 29))
>>> tw2 = TimeWindow(datetime(2019, 1, 27), datetime(2019, 1, 30))
>>> tw.intersection(tw2)
TimeWindow(datetime.datetime(2019, 1, 27, 0, 0), datetime.datetime(2019, 1, 29, 0, 0))
>>> tw.union(tw2)
TimeWindow(datetime.datetime(2019, 1, 23, 0, 0), datetime.datetime(2019, 1, 30, 0, 0))
>>> tw.complement(tw2)
TimeWindow(datetime.datetime(2019, 1, 23, 0, 0), datetime.datetime(2019, 1, 27, 0, 0))
Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Please make sure to update tests as appropriate.
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 time-window-0.1.0.tar.gz.
File metadata
- Download URL: time-window-0.1.0.tar.gz
- Upload date:
- Size: 11.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.6.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c8e1c679746daa4bdbf354ee6c138b385c85634ca03846ce954e73bd073cdaa4
|
|
| MD5 |
54ece4872ad285e800056a2cd3ee888e
|
|
| BLAKE2b-256 |
923aa35c4a0cecd674c63896a1ea7ecd57e516cc8784b8d70efea141277858a9
|
File details
Details for the file time_window-0.1.0-py3-none-any.whl.
File metadata
- Download URL: time_window-0.1.0-py3-none-any.whl
- Upload date:
- Size: 11.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.6.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7df99f7aa548ec7068a87be1754087639821d0a283d5d80250a9be9354bb6f72
|
|
| MD5 |
e9409dede0a416194a01e8192451eafe
|
|
| BLAKE2b-256 |
155df5510e72eb5556a7ab11cead681cc8820bd0feb145b3c0db126f9eddb1f0
|