Há calendários de feriados do Brasil, Estados Unidos, Luxemburgo e Reino Unido.
Na versão 2022.08.08 foi feita a inclusão do novo feriado dos EUA, Juneteenth. Consulte: https://pt.wikipedia.org/wiki/Juneteenth
A versão 2022.08.08 foi compilada no Python 3.9.13.
import datetime as dt
from workadays import workdays as wd
d1 = dt.date(2018, 1, 7)
d2 = dt.date(2020, 12, 31)
print(wd.days(d1, d2)) # 1089
d1 = dt.date(2018, 1, 7)
d2 = dt.date(2020, 12, 31)
print(wd.days360(d1, d2, method_eu=False)) # 1074
d1 = dt.date(2018, 1, 7)
d2 = dt.date(2020, 12, 31)
print(wd.days360(d1, d2, method_eu=True)) # 1073
d1 = dt.date(2018, 1, 7)
d2 = dt.date(2020, 12, 31)
print(wd.networkdays(d1, d2)) # 750
Diferença de dias úteis entre duas datas sem calendário de feriados (considera apenas os finais de semana como dia não útil)
d1 = dt.date(2018, 1, 7)
d2 = dt.date(2020, 12, 31)
print(wd.networkdays(d1, d2, country=None)) # 779
d1 = dt.date(2018, 1, 7)
print(wd.workdays(d1, 252)) # 09/01/2019
d1 = dt.date(2018, 1, 7)
print(wd.workdays(d1, 252, country=None)) # 25/12/2018
d1 = dt.date(2018, 1, 7)
print('É feriado? ', wd.is_holiday(d1, country='BR', years=range(2020, 2021)))
d1 = dt.date(2018, 1, 7)
print('É final de semana? ', wd.is_weekend(d1))
d1 = dt.date(2018, 1, 7)
print('É dia útil? ', wd.is_workday(d1, country='BR', years=range(2020, 2021)))
print('É ano bissexto? ', wd.is_leap_year(2008))
for date in wd.get_holidays(country='BR', state='SP', years=range(2020, 2022)):
print(date)
for date in wd.get_holidays(country='England', years=range(2019, 2023)):
print(date)