eFacturePy — ads-facturx
Génération, validation et assemblage de factures électroniques Factur-X / EN 16931 en Python.
🧭 Sommaire
- À propos
- Fonctionnalités
- Architecture du dépôt
- Installation
- Démarrage rapide
- API publique
- Modèle de données
- Validation EN 16931
- Développement
- Tests
- Dépendances
- Auteur
📖 À propos
eFacturePy est le dépôt de travail du package Python ads-facturx, un outil qui permet de :
- produire un XML Cross Industry Invoice conforme au profil
urn:cen.eu:en16931:2017; - générer le PDF/A-3 associé à l’aide de ReportLab ;
- embarquer ce XML dans le PDF pour obtenir une Factur-X valide (via
factur-x) ; - valider la facture via XSD (EN16931) et Schematron (moteur SaxonC-HE).
✨ Fonctionnalités
- ✅ Génération d’un XML Factur-X / EN 16931 à partir d’un
dictmétier - ✅ Génération d’un PDF de facture (template par défaut + logo personnalisable)
- ✅ Fusion PDF + XML → fichier Factur-X conforme
- ✅ Validation XSD (profil
en16931) - ✅ Validation Schematron via XSLT précompilé (SaxonC)
- ✅ Modèles Pydantic v2 pour typer et valider les données métier
🏗️ Architecture du dépôt
eFacturePy/
├─ ads_facturx/ # Package distribué sur PyPI
│ ├─ Builders/ # Génération XML + PDF + Factur-X
│ ├─ Validators/ # XSD + Schematron (XSLT EN16931-CII)
│ ├─ models/ # Schémas Pydantic (DevisData, Invoice, …)
│ ├─ Samples/ # Jeu de données et XML de référence
│ └─ tests/ # Tests unitaires pytest
├─ eFacturePy/ # Sorties d’exemple (PDF/XML générés)
├─ archive/ # Ressources brutes : XSD, XSL, Schematron, Saxon
├─ dist/ # Wheels et sdist historiques
├─ pyproject.toml # Configuration Poetry
└─ poetry.lock
📦 Installation
Depuis PyPI :
pip install ads-facturx
Prérequis : Python ≥ 3.12. SaxonC-HE est installé automatiquement via la dépendance
saxonche.
🚀 Démarrage rapide
from ads_facturx import (
generate_xml, write_xml_from_string,
xml_check_xsd, xml_check_schematron,
generate_invoice, generate_facturx,
)
from ads_facturx.Samples.data import sample_raw_data as data
DESTINATION = "eFacturePy"
xml_string = generate_xml(data)
xml_path = write_xml_from_string(xml_string, DESTINATION, "my_first_xml")
xml_check_xsd(xml_string)
report = xml_check_schematron(xml_path=xml_path)
print(report)
generate_invoice(file_name="my_first_invoice.pdf",
destination_folder=DESTINATION,
data=data, title="Ma facture",
logopath="TA_logo_reduced.jpg")
generate_facturx(file_name="my_first_invoice.pdf",
destination_folder=DESTINATION,
xml=xml_string)
🔌 API publique
Exposée via from ads_facturx import ... :
| Fonction | Rôle |
|---|---|
generate_xml(data) |
Construit la chaîne XML CII EN 16931 à partir d’un dict. |
write_xml_from_string |
Sérialise l’XML sur disque (destination_folder, file_name). |
xml_check_xsd |
Valide l’XML avec le XSD facturx / niveau en16931. |
xml_check_schematron |
Applique les règles Schematron EN16931-CII via SaxonC. |
generate_invoice |
Génère le PDF de facture (ReportLab, logo + annexes optionnels). |
generate_facturx |
Embarque le XML dans le PDF pour produire la Factur-X finale. |
🧾 Modèle de données
Le package fournit des schémas Pydantic v2 dans ads_facturx/models (notamment DevisData, Invoice, InvoiceLine, Company, Partner, …). generate_invoice valide les données via DevisData.model_validate(data) et applique des règles EN 16931 critiques (ex. obligation du numéro de TVA vendeur pour la catégorie S).
Un exemple complet de payload est fourni dans ads_facturx/Samples/data.py.
✅ Validation EN 16931
- XSD :
xml_check_xsds’appuie surfactur-x(flavor="facturx",level="en16931"). - Schematron :
xml_check_schematronexécuteValidators/xslt/EN16931-CII-validation.xsltavec SaxonC et renvoie la liste desfailed-assert(id, location, message).
📚 Dépendances
factur-x, saxonche, pydantic, reportlab (voir pyproject.toml et poetry.lock).
👤 Auteur
Antoine Ducoulombier — Alchimie Data Solutions · antoine.ducoulombier@alchimiedatasolutions.com
Release files for ads-facturx 0.7.15
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ads_facturx-0.7.15.tar.gz | 1.1 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ads_facturx-0.7.15-py3-none-any.whl | Python 3 | none | any | Details |
Total release size:2.1 MB
Release files / ads_facturx-0.7.15.tar.gz
| Download URL | ads_facturx-0.7.15.tar.gz |
|---|---|
| Size | 1.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ba51b274139fbf836e3bb9895ee93e716c447540baa4673c8514e2ae45d7c5f6
|
|
BLAKE2b-256 checksum How to use checksums |
45ac063a7ef08bc1839fe260946927b19769820e3c1c9901839f068efe9291f3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.4.3 CPython/3.10.11 Windows/10
|
Release files / ads_facturx-0.7.15-py3-none-any.whl
| Download URL | ads_facturx-0.7.15-py3-none-any.whl |
|---|---|
| Size | 1.1 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
566256201d20289cab25b854ef2bb7a43da0d320ad6fe7342cabdd01f0655d66
|
|
BLAKE2b-256 checksum How to use checksums |
2ced61a398aa2e211a7535b7508e1c53acb88239d38a2627db82c0f0eb943bdc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.4.3 CPython/3.10.11 Windows/10
|