Skip to main content

Worldwide holidays and working days helper and toolkit.

Project description

https://img.shields.io/pypi/v/calendra.svg https://img.shields.io/pypi/pyversions/calendra.svg https://img.shields.io/travis/jaraco/calendra/master.svg https://readthedocs.org/projects/calendra/badge/?version=latest

Overview

Calendra is a Python module that offers classes able to handle calendars, list legal / religious holidays and gives working-day-related computation functions.

History

Calendra is a fork of Workalendar designed to be more extensible and introspectable, adding interfaces where Workalendar is philosophically opposed for the sake of simplicity.

What can Calendra do that Workalendar cannot?

  • Provides descriptions for holidays for the “day indicated” for each Holiday (such as ‘3rd Monday in August’).

  • Keeps distinct the indicated and observed dates for Holidays, such that it’s possible to determine on what day a given holiday is observed.

  • Allows the number of Holidays in a calendar year to be counted.

  • Consolidates observance logic in the core code rather than requiring each calendar implementation to implement its own.

Status

The project is stable and in production use. Calendra follows the principles of semver for released verisons.

If you spot any bug or wish to add a calendar, please refer to the Contributing doc.

Usage sample

>>> from datetime import date
>>> from calendra.europe import France
>>> cal = France()
>>> cal.holidays(2012)
[(datetime.date(2012, 1, 1), 'New year'),
 (datetime.date(2012, 4, 9), 'Easter Monday'),
 (datetime.date(2012, 5, 1), 'Labour Day'),
 (datetime.date(2012, 5, 8), 'Victory in Europe Day'),
 (datetime.date(2012, 5, 17), 'Ascension Day'),
 (datetime.date(2012, 5, 28), 'Whit Monday'),
 (datetime.date(2012, 7, 14), 'Bastille Day'),
 (datetime.date(2012, 8, 15), 'Assumption of Mary to Heaven'),
 (datetime.date(2012, 11, 1), "All Saints' Day"),
 (datetime.date(2012, 11, 11), 'Armistice Day'),
 (datetime.date(2012, 12, 25), 'Christmas')]
>>> cal.is_working_day(date(2012, 12, 25))  # it's Christmas
False
>>> cal.is_working_day(date(2012, 12, 30))  # it's Sunday
False
>>> cal.is_working_day(date(2012, 12, 26))
True
>>> cal.add_working_days(date(2012, 12, 23), 5)  # 5 working days after Xmas
datetime.date(2012, 12, 31)

For a more complete documentation and advanced usage, go to the official workalendar documentation.

External dependencies

You may want to install python-dev and/or python3-dev on your machine to either run the installation or run tests via tox.

Workalendar has been tested on Python 2.7, 3.5, 3.6, 3.7.

Tests

Travis status:

https://api.travis-ci.org/jaraco/calendra.png

To run test, just install tox with pip install tox and run:

tox

from the command line.

Available Calendars

Europe

  • Austria

  • Belgium

  • Bulgaria

  • Cayman Islands

  • Croatia

  • Cyprus

  • Czech Republic

  • Denmark

  • Estonia

  • European Central Bank

  • Finland

  • France

  • France (Alsace / Moselle)

  • Germany

  • Greece

  • Hungary

  • Iceland

  • Ireland

  • Italy

  • Latvia

  • Lithuania

  • Luxembourg

  • Malta

  • Netherlands

  • Norway

  • Poland

  • Portugal

  • Romania

  • Russia

  • Slovakia

  • Slovenia

  • Spain (incl. Catalonia)

  • Sweden

  • Switzerland

    • Vaud

  • Turkey

  • United Kingdom (incl. Northern Ireland, Scotland and all its territories)

America

  • Barbados

  • Brazil (all states, cities and for bank transactions, except the city of Viana)

  • Canada (including provincial and territory holidays)

  • Chile

  • Colombia

  • Mexico

  • Panama

  • Paraguay

  • United States of America

    • State holidays for all the 50 States

    • American Samoa

    • Chicago, Illinois

    • Guam

    • Suffolk County, Massachusetts

    • California Education, Berkeley, San Francisco, West Hollywood

    • Florida Legal and Florida Circuit Courts, Miami-Dade

Asia

  • China

  • Hong Kong

  • Israel

  • Japan

  • JapanBank

  • Malaysia

  • Qatar

  • Singapore

  • South Korea

  • Taiwan

Oceania

  • Australia (incl. its different states)

  • Marshall Islands

  • New Zealand

Africa

  • Algeria

  • Angola

  • Benin

  • Ivory Coast

  • Madagascar

  • São Tomé

  • South Africa

And more to come (I hope!)

Caveats

Please take note that some calendars are not 100% accurate. The most common example is the Islamic calendar, where some computed holidays are not exactly on the same official day decided by religious authorities, and this may vary country by country. Whenever it’s possible, try to adjust your results with the official data provided by the adequate authorities.

Contributing

Please read our CONTRIBUTING.rst document to discover how you can contribute to calendra. Pull-requests are very welcome.

License

This library is published under the terms of the MIT License. Please check the LICENSE file for more details.

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

calendra-4.0.0.tar.gz (120.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

calendra-4.0.0-py2.py3-none-any.whl (158.9 kB view details)

Uploaded Python 2Python 3

File details

Details for the file calendra-4.0.0.tar.gz.

File metadata

  • Download URL: calendra-4.0.0.tar.gz
  • Upload date:
  • Size: 120.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/39.0.1 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.1

File hashes

Hashes for calendra-4.0.0.tar.gz
Algorithm Hash digest
SHA256 ab153151e67b699bbdf406f523725e4e51faf381475edae14fb0453ffcb2b542
MD5 7a311c52ccd08f1d89e5035c4600a461
BLAKE2b-256 125e89de3e1c6cc50922febb3e95b3170a22e227de147e272b70a2bc9a684c1a

See more details on using hashes here.

File details

Details for the file calendra-4.0.0-py2.py3-none-any.whl.

File metadata

  • Download URL: calendra-4.0.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 158.9 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/39.0.1 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.1

File hashes

Hashes for calendra-4.0.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 4ee2d8ab1216783efef9e7b64fa561c8b3e88b3b87c8ce557c4d1d221576bbfd
MD5 ff816a02e96532e6d9166afdd697aeb3
BLAKE2b-256 acba9f0d40c648102fd127de984f8955e77ca8244de6ece510700a364a7b8ad3

See more details on using hashes here.

Supported by

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