#!/usr/bin/env python
# -*- coding: utf-8 -*-

""" Pour déclarer les jours fériés.
    Ça pourra servir à débrider ces jours-là. """

import dateutil.easter
import datetime

def holidays(year):
    """Génère la liste des jours fériés pour l'année ``year``.
       Au format :py:module:`datetime.date`."""
    l = []
    l.append(datetime.date(year=year, month=1, day=1)) # 1er janvier : Jour de l'an
    l.append(datetime.date(year=year, month=5, day=1)) # 1er mai : Fête du travail
    l.append(datetime.date(year=year, month=5, day=8)) # 8 mai : Fête de la victoire
    l.append(datetime.date(year=year, month=7, day=14)) # 14 juillet : Fête Nationale
    l.append(datetime.date(year=year, month=8, day=15)) # 15 août : Assomption
    l.append(datetime.date(year=year, month=11, day=1)) # 1er novembre : Toussaint
    l.append(datetime.date(year=year, month=11, day=11)) # 11 novembre : Armistice
    l.append(datetime.date(year=year, month=12, day=25)) # 25 décembre : Noël
    # Pâques et conséquences
    easter = dateutil.easter.easter(year)
    day = datetime.timedelta(days=1)
    l.append(easter + day) # Lundi de Pâques
    l.append(easter + 39 * day) # Jeudi de l'Ascension
    l.append(easter + 50 * day) # Lundi de Pentecôte
    l.sort()
    return l

def is_ferie(day=None):
    """Dit si ``day`` (au format :py:module:`datetime.date` est férié. (Par défaut aujourd'hui)."""
    if day is None:
        day = datetime.date.today()
    return day in holidays(day.year)

if __name__ == "__main__":
    thisyear = datetime.date.today().year
    for date in holidays(thisyear):
        print date.isoformat()
