Skip to main content

Python library for generating business dates for fast date operations and rich functionality.

Project description

Python library businessdate

GitHubWorkflow Read the Docs GitHub GitHub release PyPI Version PyPI - Python Version PyPI Downloads PyPI Downloads

A fast, efficient Python library for generating business dates for simple and fast date operations.

>>> from businessdate import BusinessDate

>>> BusinessDate(2017,12,31) + '2 weeks'
BusinessDate(20180114)

>>> BusinessDate(20171231) + '2w'  # same but shorter
BusinessDate(20180114)

>>> BusinessDate(20180114).to_date()
datetime.date(2018, 1, 14)

Typical banking business features are provided like holiday adjustments to move dates away from weekend days or holidays. As well as functionality to get year fractions depending on day count conventions as the lengths of interest payment periods.

Beside dates business periods can be created for time intervals like 10Y, 3 Months or 2b. Those periods can easily be added to or subtracted from business dates.

Moreover range style schedule generator are provided to systematic build a list of dates. Such are used to set up a payment schedule of loan and financial derivatives.

Example Usage

>>> from datetime import date
>>> from businessdate import BusinessDate, BusinessPeriod


>>> BusinessDate(year=2014, month=1, day=11)
BusinessDate(20140111)

>>> BusinessDate(date(2014,1,11))
BusinessDate(20140111)

>>> BusinessDate(20140111)
BusinessDate(20140111)

>>> BusinessDate('20140111')
BusinessDate(20140111)

>>> BusinessDate('2015-12-31')
BusinessDate(20151231)

>>> BusinessDate('31.12.2015')
BusinessDate(20151231)

>>> BusinessDate('12/31/2015')
BusinessDate(20151231)

>>> BusinessDate(42369)
BusinessDate(20151231)

>>> BusinessDate(20140101) + BusinessPeriod('1Y3M')
BusinessDate(20150401)

>>> BusinessDate(20140101) + '1Y3M'
BusinessDate(20150401)

>>> BusinessDate(20170101) - '1Y1D'
BusinessDate(20151231)

>>> BusinessDate() == BusinessDate(date.today())
True

>>> BusinessDate('1Y3M20140101')
BusinessDate(20150401)

For more examples see the documentation.

Install

The latest stable version can always be installed or updated via pip:

$ pip install businessdate

Development Version

The latest development version can be installed directly from GitHub:

$ pip install --upgrade git+https://github.com/sonntagsgesicht/businessdate.git

or downloaded from https://github.com/sonntagsgesicht/businessdate.

ToDo

  1. decide which base class or inheritance for BusisnessDate is better:

    1. BaseDateFloat (float inheritance)

    2. BaseDateDatetimeDate (datetime.date inheritance)

2. store businessdays adjustment convention and holidays as private property of BusinessDate. The information should not get lost under BusinessPeriod operation. Decide which date determines convention and holidays of a BusinessRange.

Contributions

Issues and Pull Requests are always welcome.

License

Code and documentation are available according to the Apache Software License (see LICENSE).

Download files

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

Source Distribution

businessdate-0.7.zip (48.2 kB view details)

Uploaded Source

File details

Details for the file businessdate-0.7.zip.

File metadata

  • Download URL: businessdate-0.7.zip
  • Upload date:
  • Size: 48.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.11

File hashes

Hashes for businessdate-0.7.zip
Algorithm Hash digest
SHA256 27a6238a1d181c4d982d04cb4d7ba479159553f65300eb3b8526a4d322af8ebd
MD5 b9de1354bea44d575bb0c71684027d41
BLAKE2b-256 3bdbe56419b32c2b52af905c98410d98314a13f3329c7e68c2dbeb3a5181565a

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