Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use holiday names from code du travail #6

Merged
merged 7 commits into from
May 15, 2020
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
90 changes: 77 additions & 13 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,6 +66,70 @@ 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.
AntoineAugusti marked this conversation as resolved.
Show resolved Hide resolved

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.

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