Time for humans in Python
Project description
HumanTime
HumanTime
is time for humans in Python.
Sidestep tedious and error-prone code in favor of a simple, English-based DSL for specifying absolute and relative times:
HumanTime.parseTime(Input) | Input
---------------------------+------------------------------------------
2019-05-05 19:32:28.493048 | now
2019-05-05 00:00:00.000000 | today
2019-05-05 12:00:00.000000 | noon
2019-05-04 00:00:00.000000 | yesterday
2019-05-06 00:00:00.000000 | tomorrow
2019-05-06 12:00:00.000000 | tomorrow at noon
2019-05-06 15:30:00.000000 | tomorrow at 3:30PM
2019-05-08 00:00:00.000000 | Wednesday
2019-05-05 22:32:28.493048 | 3 hours from now
2019-05-05 22:31:28.493048 | 1 minute before 3 hours from now
2019-05-05 13:00:00.000000 | an hour after noon
2019-05-05 20:00:00.000000 | eight hours after noon
2019-04-30 00:00:00.000000 | 3 months after 2019-1-31
2021-02-28 00:00:00.000000 | 1 year after 2020-02-29
2019-01-01 00:00:02.000000 | second second after 2019-01-01
2019-06-16 00:00:00.000000 | 1 month after Thurs after 2019-5-9
2019-07-05 00:00:00.000000 | business day after 2019-7-3
2019-07-08 00:00:00.000000 | couple bus days after 2019-7-3
Installation
To install, simply use pip
:
> python3 -m pip install HumanTime
Usage
Behold the simplicity and elegance of HumanTime
--
Times
>>> import HumanTime
>>> HumanTime.parseTime('now')
datetime.datetime(2019, 5, 5, 20, 38, 10, 119936)
>>> HumanTime.parseTime('3 hours from now')
datetime.datetime(2019, 5, 5, 23, 38, 13, 120777)
>>> HumanTime.parseTime('2019-1-3')
datetime.datetime(2019, 1, 3, 0, 0)
>>> HumanTime.parseTime('three days before 2019-1-3')
datetime.datetime(2018, 12, 31, 0, 0)
>>> HumanTime.parseTime('a month after 20200131')
datetime.datetime(2020, 2, 29, 0, 0)
>>> HumanTime.parseTime('Tuesday')
datetime.datetime(2019, 5, 7, 0, 0)
>>> HumanTime.parseTime('wed')
datetime.datetime(2019, 5, 8, 0, 0)
>>> HumanTime.parseTime('Thurs after 2019-5-9')
datetime.datetime(2019, 5, 16, 0, 0)
>>> HumanTime.parseTime('2 business days before 2019-7-8')
datetime.datetime(2019, 7, 3, 0, 0)
Durations
Fixed-length durations, representable by a datetime.timedelta
, may also be parsed:
>>> HumanTime.parseDuration('3 seconds')
datetime.timedelta(seconds=3)
>>> HumanTime.parseDuration('3 minutes')
datetime.timedelta(seconds=180)
>>> HumanTime.parseDuration('3 days')
datetime.timedelta(days=3)
>>> HumanTime.parseDuration('three weeks')
datetime.timedelta(days=21)
Numbers
Simple numbers (those necessary for parsing times) can also be parsed separately:
>>> HumanTime.parseCardinal('four')
4
>>> HumanTime.parseOrdinal('fourth')
4
>>> HumanTime.parseNumber('20th')
20
>>> HumanTime.parseNumber('45')
45
Development
Unit Tests
Unit tests can be run with the following command:
> python3 -m unittest discover
..............................................
----------------------------------------------------------------------
Ran 46 tests in 0.012s
OK
CI
Continuous integration is handled in Gitlab CI via .gitlab-ci.yml
.
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
HumanTime-0.1.0.tar.gz
(11.0 kB
view hashes)
Built Distribution
HumanTime-0.1.0-py3-none-any.whl
(14.4 kB
view hashes)
Close
Hashes for HumanTime-0.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fffd1311ec2e912d1f3b8fb80a31db4c4275fb92aa1fd413bf0c0f36b2c446cf |
|
MD5 | 3110838093cd6eb7054a2e5fbbda93a6 |
|
BLAKE2b-256 | 9c8f4a4ef479e35e2f34f0a1b4510bccbfda957e9aa0b6ebe222275b4abf2371 |