No project description provided
Project description
emiTime
The emiTime library is designed to simplify the work with objects describing calendar time points and intervals between them.
All algorithms presented in the library are based on two entities Moment and Inerval.
Each of them can be fired from anything that looks like a calendar time point or a time interval.
Installation
pip install emitime
Or from GitHub
git clone https://github.com/rilshok/emitime.git
cd emitime
pip install -e .
Usage
A Moment object can be created by a str, datetime module objects such as date and datetime, or another Moment.
In turn, Interval can also be derived from a str, datetime.time or another Interval.
import datetime as dt
from emitime import Moment
d1 = Moment("1970-01-01")
d2 = Moment(dt.datetime(1970, 1, 1))
d3 = Moment(dt.date(1970, 1, 1))
d4 = Moment(d3)
print(f"{d1=}, {d2=}, {d3=}, {d4=}")
print(f"{d1 == d2 == d3 == d4 = }")
d1=1970-01-01, d2=1970-01-01, d3=1970-01-01, d4=1970-01-01
d1 == d2 == d3 == d4 = True
import datetime as dt
from emitime import Interval
t1 = Interval("2d")
t2 = Interval("12:00")
t3 = Interval(dt.timedelta(hours=5))
t4 = Interval(t3)
print(f"{t1=}, {t2=}, {t3=}, {t4=}")
print(f"{t1 > t2 > t3 >= t4 = }")
t1=+2^00:00, t2=+12:00, t3=+05:00, t4=+05:00
t1 > t2 > t3 >= t4 = True
Moment and Interval can participate in natural mathematical operations and be compared with each other.
Also, whenever possible, depending on the context, emiTime promotes the type of one of the operands of the operation to Moment or Interval
import datetime as dt
from emitime import Interval, Moment
m1 = Moment("1970-01-01") + "2d"
m2 = dt.timedelta(hours=5) + Moment("01.01.1970")
m3 = "1970-01-01" + Interval("12:00")
i1 = Moment("2020-01-01") - "2019-01-01"
i2 = "12:00" - Interval("1d")
i3 = dt.date(2021, 1, 1) - Moment("2020-01-01")
print(f"{m1=}, {m2=}, {m3=}")
print(f"{i1=}, {i2=}, {i3=}")
print(f"{m1 > m2=}")
print(f"{m2 < m3 <= m1 =}")
print(f"{m3+i2 == m1 - i3+i1 - i3+i1 = }")
m1=1970-01-03, m2=1970-01-01d05:00, m3=1970-01-01d12:00
i1=+365^00:00, i2=-12:00, i3=+366^00:00
m1 > m2=True
m2 < m3 <= m1 =True
m3+i2 == m1 - i3+i1 - i3+i1 = True
Moment is based on the standard datetime.datetime and Interval is based on datetime.timedelta. Which can be accessed as follows.
from emitime import Interval, Moment
m = Moment("1970-01-01")
i = Interval("02:10")
mdt = m.datetime
itd = i.timedelta
print(f"{mdt = }")
print(f"{itd = }")
mdt = datetime.datetime(1970, 1, 1, 0, 0)
itd = datetime.timedelta(seconds=7800)
Emit and enjoy.
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 emitime-0.2.13.tar.gz.
File metadata
- Download URL: emitime-0.2.13.tar.gz
- Upload date:
- Size: 9.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.8.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
df8542c0bc5a352644ab7b8f9183360a2cfccf13b27f5bb75ebe11ed5977ed7b
|
|
| MD5 |
17b37d02a929b6c2bb635054c0fb576d
|
|
| BLAKE2b-256 |
6d8b7f0b6fd314eac066d324cd272e9b19dbb0b9db9555640b5d135dba6abbbd
|
File details
Details for the file emitime-0.2.13-py3-none-any.whl.
File metadata
- Download URL: emitime-0.2.13-py3-none-any.whl
- Upload date:
- Size: 10.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.8.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a881e8c0c61a44095a20403f57ed2349a103c80ccb5073e3ce46041c66fb9e1f
|
|
| MD5 |
762f8cab8831dd747fd2388146b7170a
|
|
| BLAKE2b-256 |
74a84a048bc9a767bee18e7ec94b917c0d84a7bceddffe7811e0d93b51de213b
|