A DateRange type and related utility functions
Project description
date-ranges
A DateRange
type and related utility functions.
Quickstart
Install from pip:
pip install date-ranges
Import and create an instance:
from datetime import date
from date_ranges import DateRange
my_date_range = DateRange(start=date(2023, 5, 10), end=date(2023, 11, 3))
Usage
from datetime import date
from date_ranges import DateRange, MAX_DATE
# end date defaults to MAX_DATE
dr = DateRange(date(2023, 11, 1))
date(2023, 11, 22) in dr
# True
# An empty date (0 days in range):
empty = DateRange.empty()
bool(empty)
# False
# Iteration
for d in DateRange(date(2023, 1, 1), date(2023, 1, 3)):
print(d)
# 2023-01-01
# 2023-01-02
# 2023-01-03
# Create from strings
dr = DateRange.from_string('20230101-20230103')
repr(dr)
# 'DateRange(start=datetime.date(2023, 1, 1), end=datetime.date(2023, 1, 3))'
# Create range for a single date
dr = DateRange.from_string('20231031')
repr(dr)
# 'DateRange(start=datetime.date(2023, 10, 31), end=datetime.date(2023, 10, 31))'
# Create range for given year-month
dr = DateRange.from_string('202305')
repr(dr)
# 'DateRange(start=datetime.date(2023, 5, 1), end=datetime.date(2023, 5, 31))'
# Create range for multiple full months
dr = DateRange.from_string('202305-202311')
repr(dr)
# 'DateRange(start=datetime.date(2023, 5, 1), end=datetime.date(2023, 11, 30))'
# Formatted print
dr = DateRange(date(2023, 1, 1), date(2023, 1, 3))
dr
# 20230101-20230103
print(f'{dr:H}') # H for human
# 2023-01-01 to 2023-01-03
# Full months rendered appropriately
dr = DateRange.from_string('202305')
f'{dr:H}' # H for "human readable"
# 'May 2023'
f'{dr:C}' # C for compact
# '202305'
dr
# '202305'
Development
For those developing or maintaining the date-ranges
package itself,
be sure to install it with the [dev]
option to pull in packages
used when developing.
pip install --editable .[dev]
When developing, this package uses pre-commit
. After the initial
clone of the repository, you will need to set up pre-commit with:
# in the top level of the checked-out repository:
pre-commit install
Changelog
0.0.1 released 2023-11-03
- Initial Version
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
date-ranges-0.0.2.tar.gz
(6.1 kB
view details)
Built Distribution
File details
Details for the file date-ranges-0.0.2.tar.gz
.
File metadata
- Download URL: date-ranges-0.0.2.tar.gz
- Upload date:
- Size: 6.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | de046f3c62b7f3c7cc44577c0651d653cdeab66a18a19dd9cd121ba4ad59fb8b |
|
MD5 | b658075be51dbf7689fbeda20187c6a2 |
|
BLAKE2b-256 | 7dcf204f9def3432eec39cf6bda771f9fbc3e238bb4830e2f9fd27df3c6094f9 |
File details
Details for the file date_ranges-0.0.2-py3-none-any.whl
.
File metadata
- Download URL: date_ranges-0.0.2-py3-none-any.whl
- Upload date:
- Size: 5.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5327c70effc4730e1d40d691cb28858554daf4cf8ae7740d174d044e6a1f2d38 |
|
MD5 | 648eb5159293e99e7d58b355ca586a12 |
|
BLAKE2b-256 | 7d037de3bcd2b0e62d029f635ade800868071e7bbfb418299640d76e7ac53460 |