Skip to content

Commit

Permalink
v0.7.0: use holiday names from code du travail (#6)
Browse files Browse the repository at this point in the history
* Update holiday names

* Update README

* Change method names

* Add CHANGELOG

* Bump version

* Update release date

* Extra links
  • Loading branch information
AntoineAugusti authored May 15, 2020
1 parent 5209b00 commit 8ee3371
Show file tree
Hide file tree
Showing 5 changed files with 153 additions and 83 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Changements

## 0.7.0 - 2020-05-15

- ⚠️ Utilisation des noms des jours fériés en vigueur dans le code du travail
- ⚠️ Changement du nom des méthodes pour chaque jour férié pour correspondre au code du travail
92 changes: 78 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,23 +22,23 @@ from jours_feries_france import JoursFeries
res = JoursFeries.for_year(2018)
# res est un dictionnaire
# {
# "Jour de l'an": date(2018, 1, 1),
# "Lundi de Pâques": date(2018, 4, 2),
# "Fête du Travail": date(2018, 5, 1),
# "Victoire des alliés": date(2018, 5, 8),
# "Ascension": date(2018, 5, 10),
# "Lundi de Pentecôte": date(2018, 5, 21),
# "Fête Nationale": date(2018, 7, 14),
# "Assomption": date(2018, 8, 15),
# "Toussaint": date(2018, 11, 1),
# "Armistice": date(2018, 11, 11),
# "Noël": date(2018, 12, 25),
# '1er janvier': datetime.date(2018, 1, 1),
# 'Lundi de Pâques': datetime.date(2018, 4, 2),
# '1er mai': datetime.date(2018, 5, 1),
# '8 mai': datetime.date(2018, 5, 8),
# 'Ascension': datetime.date(2018, 5, 10),
# 'Lundi de Pentecôte': datetime.date(2018, 5, 21),
# '14 juillet': datetime.date(2018, 7, 14),
# 'Assomption': datetime.date(2018, 8, 15),
# 'Toussaint': datetime.date(2018, 11, 1),
# '11 novembre': datetime.date(2018, 11, 11),
# 'Jour de Noël': datetime.date(2018, 12, 25)
# }

# Vous pouvez aussi obtenir certains jours fériés en tant que datetime.date
print (JoursFeries.lundiDePaques(2018))
print (JoursFeries.lundi_paques(2018))
print (JoursFeries.ascension(2018))
print (JoursFeries.lundiDePentecote(2018))
print (JoursFeries.lundi_pentecote(2018))

# Obtenir les jours fériés pour une zone spécifique
res = JoursFeries.for_year(2018, zone="Alsace-Moselle")
Expand Down Expand Up @@ -66,11 +66,75 @@ Les zones suivantes sont disponibles :
- `Saint-Pierre-et-Miquelon`
- `Wallis-et-Futuna`

Ces zones sont disponibles dans une constante :
```python
from jours_feries_france import JoursFeries

print(JoursFeries.ZONES)
# [
# 'Métropole', 'Alsace-Moselle', 'Guadeloupe',
# 'Guyane', 'Martinique', 'Mayotte', 'Nouvelle-Calédonie',
# 'La Réunion', 'Polynésie Française', 'Saint-Barthélémy',
# 'Saint-Martin', 'Wallis-et-Futuna', 'Saint-Pierre-et-Miquelon'
# ]
```

### Noms des jours fériés
Les noms des jours fériés sont fixés d'[après le code du travail](#sources).

Pour les zones `Métropole` (par défaut), `Nouvelle-Calédonie`, `Polynésie Française`, `Saint-Pierre-et-Miquelon` et `Wallis-et-Futuna`, les jours fériés sont orthographiés de la façon suivante :
- `1er janvier`
- `Lundi de Pâques`
- `1er mai`
- `8 mai`
- `Ascension`
- `Lundi de Pentecôte`
- `14 juillet`
- `Assomption`
- `Toussaint`
- `11 novembre`
- `Jour de Noël`

Pour la zone `Alsace-Moselle`, il existe 2 jours fériés supplémentaires, orthographiés de la façon suivante :
- `2ème jour de Noël`
- `Vendredi saint`

Pour les zones `Guadeloupe`, `Guyane`, `La Réunion`, `Martinique`, `Mayotte`, `Saint-Barthélémy` et `Saint-Martin`, il existe un jour férié supplémentaire, orthographié de la façon suivante :
- `Abolition de l'esclavage`

### Noms des méthodes Python

Vous pouvez calculer chaque jour férié individuellement à l'aide d'une méthode spécifique.

```python
from jours_feries_france import JoursFeries

year = 2020
zone = 'Métropole'

print("1er janvier", JoursFeries.premier_janvier(year))
print("1er mai", JoursFeries.premier_mai(year))
print("8 mai", JoursFeries.huit_mai(year))
print("14 juillet", JoursFeries.quatorze_juillet(year))
print("Assomption", JoursFeries.assomption(year))
print("Toussaint", JoursFeries.toussaint(year))
print("11 novembre", JoursFeries.onze_novembre(year))
print("Jour de Noël", JoursFeries.jour_noel(year))
print("Lundi de Pâques", JoursFeries.lundi_paques(year))
print("Ascension", JoursFeries.ascension(year))
print("Lundi de Pentecôte", JoursFeries.lundi_pentecote(year))
print("Vendredi saint", JoursFeries.vendredi_saint(year, zone))
print("2ème jour de Noël", JoursFeries.deuxieme_jour_noel(year, zone))
print("Abolition de l'esclavage", JoursFeries.abolition_esclavage(year, zone))
```

Certaines méthodes acceptent une `zone` en paramètre car ce jour férié est spécifique à certaines zones. Si ce jour férié n'est pas férié pour la zone passée en argument, vous aurez la valeur `None` en retour au lieu d'une date.

## Données
Si vous souhaitez simplement un export, consultez le jeu de données ["Jours fériés en France"](https://www.data.gouv.fr/fr/datasets/jours-feries-en-france/) sur data.gouv.fr.

## Sources
La liste des jours fériés est définie dans le code du travail.
La liste des jours fériés est définie [dans le code du travail](#sources).

Certaines commémorations locales ou professionnelles sont également des jours fériés, parmi lesquelles :
- Saint-Éloi (reconnu jour férié par certaines conventions collectives dans la métallurgie) ;
Expand Down
44 changes: 22 additions & 22 deletions jours_feries_france/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,20 +56,20 @@ def for_year(year, zone=None):
JoursFeries.check_zone(zone)

bank_holidays = {
"Jour de l'an": JoursFeries.jourDeLAn(year),
"Fête du Travail": JoursFeries.feteDuTravail(year),
"Victoire des alliés": JoursFeries.victoireDesAllies(year),
"Fête Nationale": JoursFeries.feteNationale(year),
"1er janvier": JoursFeries.premier_janvier(year),
"1er mai": JoursFeries.premier_mai(year),
"8 mai": JoursFeries.huit_mai(year),
"14 juillet": JoursFeries.quatorze_juillet(year),
"Assomption": JoursFeries.assomption(year),
"Toussaint": JoursFeries.toussaint(year),
"Armistice": JoursFeries.armistice(year),
"Noël": JoursFeries.noel(year),
"Lundi de Pâques": JoursFeries.lundiDePaques(year),
"11 novembre": JoursFeries.onze_novembre(year),
"Jour de Noël": JoursFeries.jour_noel(year),
"Lundi de Pâques": JoursFeries.lundi_paques(year),
"Ascension": JoursFeries.ascension(year),
"Lundi de Pentecôte": JoursFeries.lundiDePentecote(year),
"Vendredi Saint": JoursFeries.vendrediSaint(year, zone),
"Saint Étienne": JoursFeries.saintEtienne(year, zone),
"Abolition de l'esclavage": JoursFeries.abolitionDeLesclavage(year, zone),
"Lundi de Pentecôte": JoursFeries.lundi_pentecote(year),
"Vendredi saint": JoursFeries.vendredi_saint(year, zone),
"2ème jour de Noël": JoursFeries.deuxieme_jour_noel(year, zone),
"Abolition de l'esclavage": JoursFeries.abolition_esclavage(year, zone),
}

bank_holidays = {k: v for k, v in bank_holidays.items() if v}
Expand All @@ -93,13 +93,13 @@ def paques(year):
return date(year, month, day)

@staticmethod
def lundiDePaques(year):
def lundi_paques(year):
if year >= 1886:
return JoursFeries.paques(year) + timedelta(days=1)
return None

@staticmethod
def vendrediSaint(year, zone):
def vendredi_saint(year, zone):
if zone == JoursFeries.check_zone("Alsace-Moselle"):
return JoursFeries.paques(year) - timedelta(days=2)
return None
Expand All @@ -111,31 +111,31 @@ def ascension(year):
return None

@staticmethod
def lundiDePentecote(year):
def lundi_pentecote(year):
if year >= 1886:
return JoursFeries.paques(year) + timedelta(days=50)
return None

@staticmethod
def jourDeLAn(year):
def premier_janvier(year):
if year > 1810:
return date(year, 1, 1)
return None

@staticmethod
def feteDuTravail(year):
def premier_mai(year):
if year > 1919:
return date(year, 5, 1)
return None

@staticmethod
def victoireDesAllies(year):
def huit_mai(year):
if (1953 <= year <= 1959) or year > 1981:
return date(year, 5, 8)
return None

@staticmethod
def feteNationale(year):
def quatorze_juillet(year):
if year >= 1880:
return date(year, 7, 14)
return None
Expand All @@ -153,25 +153,25 @@ def assomption(year):
return None

@staticmethod
def armistice(year):
def onze_novembre(year):
if year >= 1918:
return date(year, 11, 11)
return None

@staticmethod
def noel(year):
def jour_noel(year):
if year >= 1802:
return date(year, 12, 25)
return None

@staticmethod
def saintEtienne(year, zone):
def deuxieme_jour_noel(year, zone):
if zone == JoursFeries.check_zone("Alsace-Moselle"):
return date(year, 12, 26)
return None

@staticmethod
def abolitionDeLesclavage(year, zone):
def abolition_esclavage(year, zone):
if zone == JoursFeries.check_zone("Mayotte"):
return date(year, 4, 27)

Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
name="jours_feries_france",
license="MIT",
packages=["jours_feries_france"],
version="0.6.0",
version="0.7.0",
description="Jours fériés en France, en métropole et en outre-mer.",
author="Etalab",
author_email="[email protected]",
Expand Down
Loading

0 comments on commit 8ee3371

Please sign in to comment.