No project description provided
Project description
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ads_facturx-0.4.6.tar.gz.
File metadata
- Download URL: ads_facturx-0.4.6.tar.gz
- Upload date:
- Size: 162.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.3.1 CPython/3.12.7 Windows/11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
587dfe38c3a242c3021f0448f80785bdbd5e88d5d04c8110779f0e0df2bc0196
|
|
| MD5 |
aeea566ed535b04304a4ff33833319d9
|
|
| BLAKE2b-256 |
1c36523065e40a7bbb81aae366159446cf8b3f2cf7017d288925166d7d10c53c
|
File details
Details for the file ads_facturx-0.4.6-py3-none-any.whl.
File metadata
- Download URL: ads_facturx-0.4.6-py3-none-any.whl
- Upload date:
- Size: 168.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.3.1 CPython/3.12.7 Windows/11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0ad91ab445d00575b8cebbe5f4d82fdbc30b9961a1c0580d32c0cfdd114d6ef3
|
|
| MD5 |
638612b033ba8ba8f3a11600de58d37c
|
|
| BLAKE2b-256 |
cd0e04b55b50ce820d1bd41cefb3e8f9136fe3f3c3f6c996d18d31bd60067c30
|