La librairie python pylegifrance est désormais disponible, en version alpha, à l’adresse suivante : https://github.com/rdassignies/pylegifrance/
Objectifs et fonctionnalités
Pylegifrance est conçue pour faciliter l’accès et la manipulation des données disponibles sur le portail Légifrance. Grâce à cette librairie, les utilisateurs peuvent aisément interroger les contenus du portail via des fonctions Python intuitives et prêtes à l’emploi.
La librairie utilise intensivement Pydantic pour assurer une validation précise et fiable des structures de données.
Exemples pour rechercher dans les codes :
from pylegifrance import recherche_CODE
# Obtenir l'article 7 du Code civil
recherche_CODE(code_name="Code civil", search="7")
# Obtenir l'article 7 du Code civil en ne sélectionnant que certains champs spécifiques
recherche_CODE(code_name="Code civil", search="7", formatter=True)
# Obtenir l'intégralité du Code civil
recherche_CODE(code_name="Code civil")
# Rechercher le mot "sûreté" dans les articles du Code civil
recherche_CODE(code_name="Code civil", search="sûreté", champ="ARTICLE")
# ....
Exemples pour rechercher dans le fond LOI, ORDONNANCE, DECRET, ARRETE :
from pylegifrance import recherche_LODA
# Obtenir l'article 9 de la loi informatique et libertés
recherche_LODA(text="78-17", search="9")
# Obtenir l'article 2 de l'ordonnance 58-1100
recherche_LODA(text='58-1100', search="2", nature=["ORDONNANCE"])
# Obtenir l'intégralité de la loi informatique et libertés
recherche_LODA(text="78-17")
# Rechercher le mot "autorité" dans tous les contenus de la loi informatique et libertés
recherche_LODA(text="78-17", search="autorité", champ="ALL")
# Rechercher le mot "publique" dans le champ "article" du décret n°2023-823
recherche_LODA(text='2023-823', search="publique", nature=["DECRET"], champ="ARTICLE")
# Rechercher le mot "autorité" dans tous les contenus de la loi informatique et libertés en ne sélectionnant que certains champs spécifiques (formatter=True)
recherche_LODA(text="78-17", search="autorité", champ="ALL", formatter=True)
# ...
L’intégralité des fonds disponibles (CETA, JURI…) sera bientôt intégrée de la même manière. De même, il est prévu d’intégrer très rapidement toutes les options de recherche dans les fonctions.
Cette pré-version, bien qu’opérationnelle, est encore embryonnaire et en phase de développement continu. N’hésitez à me faire vos retours et à participer à son élaboration.
Contexte
Bref rappel sur l’opendata des données juridiques
Le cadre juridique de l’ouverture des données et des codes sources en France a commencé avec la loi CADA de 1978, facilitant l’accès aux documents administratifs pour les citoyens et réduisant le secret administratif. Ce cadre a été renforcé par les lois Valter de 2015 et la loi pour une République numérique en 2016, instaurant un principe d’ouverture par défaut des données et des codes sources.
Parallèlement, le cadre juridique européen a évolué depuis le début des années 2000 et l’essor d’internet. La directive dite PSI (Public Sector Information), entrée en vigueur en 2003, révisée en 2013, et qui a fait l’objet d’une nouvelle mouture en 2019, transposée en droit interne en 2021, témoigne de l’importance croissante de la donnée dans l’accès à l’information publique.
Malgré l’affirmation des principes, l’opendata juridique a une histoire plus chaotique qui oscille entre mise à disposition progressive des données et difficulté à trouver un mode de diffusion unique. Pour une illustration de cette histoire mouvementée, vous pouvez consulter l’excellent site precisement.org. Malgré cela, le site Legifrance et les outils d’interface associés constituent un point d’accès très riche à un ensemble de ressources numériques.
Panorama des bases et des modalités d’accès aux données
Avant d’attaquer les modalités pratiques d’accès, il faut mentionner deux autres points d’accès aux données à date (mars 2023) :
- judilibre, édité par la Cour de cassation, qui regroupe les arrêts de cette même Cour mais également les arrêts d’appel avec, fin 2023, une diffusion de certaines décisions de premier degré.
- opendata justice administrative qui est la plateforme de diffusion des décisions du Conseil d’Etat, des cours administratives d’appel mais également des tribunaux administratifs.
Judilibre dispose d’une API disponible depuis le portail PISTE à la différence du Conseil d’Etat qui ne diffuse les décisions qu’en téléchargement.
Les données diffusées par ces deux institutions sont reprises, en partie, par le service Legifrance. Ce dernier propose une API, en version bêta, gratuite.
Cette API permet de rapatrier la quasi-totalité des informations présentes sur le site Legifrance. Une illustration de son utilisation est fournie par le site Pappers Politique.
Les objectifs d’utilisation
Voici les grands objectifs
- démystifier l’utilisation de ce type d’outil ;
- connaître les cas d’usage et notamment l’insertion dans des outils de recherche personnalisé ;
- insérer l’utilisation de cet outil dans le cadre d’autres projets (recherche sémantique, analyse de similarité, liens entre les documents internes et les sources juridiques, etc.) comme une brique de base.
Les modalités pratiques
A travers différents notebooks Jupyter, je vous montrerai :
- comment construire un accès programmatique à l’API de manière générique ;
- comment utiliser la documentation Swagger de l’API ;
- comment rapatrier les bonnes informations en fonction des objectifs de votre application ;
- comment insérer ces informations dans d’autres outils comme un moteur de recherche (Elasticsearch ou un vectorstore) ;
- comment automatiser le rapatriement des informations pour les mises à jour ;
- …