Skip to main content

Formatting utility for international postal addresses

Project description

Prefix date parser

This is a helper class to parse dates with varied degrees of precision. For example, a data source might state a date as 2001, 2001-4 or 2001-04-02, with the implication that only the year, month or day is known. This library will process such partial dates into a structured format and allow their validation and re-formatting (e.g. turning 2001-4 into 2001-04 above).

The library does not support the complexities of the ISO 8601 and RFC 3339 standards including date ranges and calendar-week/day-of-year notations.

Installation

Install prefixdate using PyPI:

$ pip install prefixdate

Usage

The library provides a variety of helper functions to parse and format partial dates:

from prefixdate import parse, normalize_date, Precision

# Parse returns a `DatePrefix` object:
date = parse('2001-3')
assert date.text == '2001-03'
date = parse(2001)
assert date.text == '2001'
assert date.precision == Precision.YEAR

date = parse(None)
assert date.text is None
assert date.precision == Precision.EMPTY
# This will also be the outcome for invalid dates!

# Normalize to a standard string:
assert normalize_date('2001-1') == '2001-01'
assert normalize_date('2001-00-00') == '2001'
assert normalize_date('Boo!') is None

# This also works for datetimes:
from datetime import datetime
now = datetime.utcnow().isoformat()
minute = normalize_date(now, precision=Precision.MINUTE)

# You can also feed in None, date and datetime:
normalize_date(datetime.utcnow())
normalize_date(datetime.date())
normalize_date(None)

You can also use the parse_parts helper, which is similar to the constructor for a datetime:

from prefixdate import parse_parts, Precision

date = parse_parts(2001, '3', None)
assert date.precision == Precision.MONTH
assert date.text == '2001-03'

Caveats

  • Does not process milliseconds yet.
  • Does not process invalid dates, like Feb 31st.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

prefixdate-0.2.1.tar.gz (5.1 kB view details)

Uploaded Source

Built Distribution

prefixdate-0.2.1-py2.py3-none-any.whl (5.7 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file prefixdate-0.2.1.tar.gz.

File metadata

  • Download URL: prefixdate-0.2.1.tar.gz
  • Upload date:
  • Size: 5.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.9.6

File hashes

Hashes for prefixdate-0.2.1.tar.gz
Algorithm Hash digest
SHA256 6d23089dd0916a5933cbb99a1ffd24b12aed71a6a1b3f922b6ede4c5c93e1da0
MD5 031d51867ea31448ae1dc1de1bcccc4b
BLAKE2b-256 4e2207058ebffb0d6e7e06a5998e7b03d9bfe3af1b89618d8f62e5a95c3ae50c

See more details on using hashes here.

File details

Details for the file prefixdate-0.2.1-py2.py3-none-any.whl.

File metadata

  • Download URL: prefixdate-0.2.1-py2.py3-none-any.whl
  • Upload date:
  • Size: 5.7 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.9.6

File hashes

Hashes for prefixdate-0.2.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 c16db30bc57fbdd89fc5f75ac29323acceaeba61f2e6a2937bd78601f537447e
MD5 3b7f0f2b9a916bc06ea929411f233e8f
BLAKE2b-256 8aefa80bbdede966ab8b629625b37fa2ed03b36e55a09216fce1aea669482f93

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page