Spaces:
Sleeping
feat(api): exposer l'API publique du Cercle 1 au niveau racine
Browse filesAvant ce commit, ``import picarones`` n'exposait que ``__version__``.
Un utilisateur tiers devait connaître les chemins internes pour
importer les abstractions principales (``from picarones.core.corpus
import Corpus``). C'est une UX cassée pour une plateforme à vocation
institutionnelle.
Ce commit ré-exporte au niveau ``picarones.*`` les ~30 symboles
stables du Cercle 1 :
>>> from picarones import Corpus, Document, BaseModule, ArtifactType
>>> from picarones import BenchmarkResult, EngineReport, DocumentResult
>>> from picarones import MetricsResult, aggregate_metrics
>>> from picarones import Fact, FactType, FactImportance, DetectorRegistry
>>> from picarones import PipelineRunner, PipelineSpec, PipelineStep
>>> from picarones import MetricSpec, register_metric, compute_at_junction
Le contrat de stabilité documenté dans ``docs/api-stable.md``
s'applique à ces noms : pas de breaking change entre versions
mineures (semver ``1.x.0``).
Pour les implémentations (calcul, runner, adapters), l'utilisateur
continue d'utiliser les sous-packages explicites :
>>> from picarones.measurements.runner import run_benchmark
>>> from picarones.measurements.metrics import compute_metrics
>>> from picarones.engines.tesseract import TesseractEngine
``picarones/core/__init__.py`` est aussi étoffé avec une docstring
qui liste les 8 modules cercle 1 et rappelle la règle de dépendance.
https://claude.ai/code/session_01Hsd7kL8yeCbXn1mA7GQK9L
- picarones/__init__.py +104 -3
- picarones/core/__init__.py +26 -1
|
@@ -1,13 +1,114 @@
|
|
| 1 |
-
"""
|
| 2 |
-
Picarones — Plateforme de comparaison de moteurs OCR pour documents patrimoniaux.
|
| 3 |
|
| 4 |
Licence Apache 2.0.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5 |
"""
|
| 6 |
|
|
|
|
|
|
|
|
|
|
| 7 |
try:
|
| 8 |
from importlib.metadata import version as _get_version
|
| 9 |
__version__ = _get_version("picarones")
|
| 10 |
-
except Exception:
|
| 11 |
__version__ = "1.0.0"
|
| 12 |
|
| 13 |
__author__ = "Picarones contributors"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Picarones — Plateforme de benchmark OCR/HTR pour documents patrimoniaux.
|
|
|
|
| 2 |
|
| 3 |
Licence Apache 2.0.
|
| 4 |
+
|
| 5 |
+
API publique du Cercle 1 (abstractions stables) ré-exportée ici pour
|
| 6 |
+
permettre :
|
| 7 |
+
|
| 8 |
+
>>> from picarones import Corpus, Document, BaseModule, ArtifactType
|
| 9 |
+
>>> from picarones import BenchmarkResult, EngineReport, DocumentResult
|
| 10 |
+
|
| 11 |
+
Pour les implémentations (calcul de métriques, runner, adapters OCR…),
|
| 12 |
+
utiliser les sous-packages explicites :
|
| 13 |
+
|
| 14 |
+
>>> from picarones.measurements.runner import run_benchmark
|
| 15 |
+
>>> from picarones.measurements.metrics import compute_metrics
|
| 16 |
+
>>> from picarones.engines.tesseract import TesseractEngine
|
| 17 |
+
|
| 18 |
+
Voir ``docs/architecture.md`` pour la cartographie complète des
|
| 19 |
+
3 cercles, et ``docs/api-stable.md`` pour le contrat de stabilité.
|
| 20 |
"""
|
| 21 |
|
| 22 |
+
from __future__ import annotations
|
| 23 |
+
|
| 24 |
+
# Version (lecture dynamique depuis le package metadata après ``pip install -e .``)
|
| 25 |
try:
|
| 26 |
from importlib.metadata import version as _get_version
|
| 27 |
__version__ = _get_version("picarones")
|
| 28 |
+
except Exception: # noqa: BLE001
|
| 29 |
__version__ = "1.0.0"
|
| 30 |
|
| 31 |
__author__ = "Picarones contributors"
|
| 32 |
+
|
| 33 |
+
|
| 34 |
+
# ──────────────────────────────────────────────────────────────────────────
|
| 35 |
+
# API publique — Cercle 1 uniquement
|
| 36 |
+
# ──────────────────────────────────────────────────────────────────────────
|
| 37 |
+
|
| 38 |
+
from picarones.core.corpus import (
|
| 39 |
+
Corpus,
|
| 40 |
+
Document,
|
| 41 |
+
GTLevel,
|
| 42 |
+
TextGT,
|
| 43 |
+
AltoGT,
|
| 44 |
+
PageGT,
|
| 45 |
+
EntitiesGT,
|
| 46 |
+
ReadingOrderGT,
|
| 47 |
+
load_corpus_from_directory,
|
| 48 |
+
)
|
| 49 |
+
from picarones.core.modules import ArtifactType, BaseModule
|
| 50 |
+
from picarones.core.results import (
|
| 51 |
+
BenchmarkResult,
|
| 52 |
+
DocumentResult,
|
| 53 |
+
EngineReport,
|
| 54 |
+
)
|
| 55 |
+
from picarones.core.metrics import MetricsResult, aggregate_metrics
|
| 56 |
+
from picarones.core.facts import (
|
| 57 |
+
DetectorRegistry,
|
| 58 |
+
Fact,
|
| 59 |
+
FactImportance,
|
| 60 |
+
FactType,
|
| 61 |
+
)
|
| 62 |
+
from picarones.core.pipeline import (
|
| 63 |
+
PipelineResult,
|
| 64 |
+
PipelineRunner,
|
| 65 |
+
PipelineSpec,
|
| 66 |
+
PipelineStep,
|
| 67 |
+
StepResult,
|
| 68 |
+
)
|
| 69 |
+
from picarones.core.metric_registry import (
|
| 70 |
+
MetricSpec,
|
| 71 |
+
compute_at_junction,
|
| 72 |
+
register_metric,
|
| 73 |
+
select_metrics,
|
| 74 |
+
)
|
| 75 |
+
|
| 76 |
+
__all__ = [
|
| 77 |
+
"__version__",
|
| 78 |
+
"__author__",
|
| 79 |
+
# Corpus
|
| 80 |
+
"Corpus",
|
| 81 |
+
"Document",
|
| 82 |
+
"GTLevel",
|
| 83 |
+
"TextGT",
|
| 84 |
+
"AltoGT",
|
| 85 |
+
"PageGT",
|
| 86 |
+
"EntitiesGT",
|
| 87 |
+
"ReadingOrderGT",
|
| 88 |
+
"load_corpus_from_directory",
|
| 89 |
+
# Modules génériques (BaseModule)
|
| 90 |
+
"ArtifactType",
|
| 91 |
+
"BaseModule",
|
| 92 |
+
# Résultats
|
| 93 |
+
"BenchmarkResult",
|
| 94 |
+
"DocumentResult",
|
| 95 |
+
"EngineReport",
|
| 96 |
+
"MetricsResult",
|
| 97 |
+
"aggregate_metrics",
|
| 98 |
+
# Moteur narratif (modèle de données)
|
| 99 |
+
"DetectorRegistry",
|
| 100 |
+
"Fact",
|
| 101 |
+
"FactImportance",
|
| 102 |
+
"FactType",
|
| 103 |
+
# Pipelines composées (axe B)
|
| 104 |
+
"PipelineResult",
|
| 105 |
+
"PipelineRunner",
|
| 106 |
+
"PipelineSpec",
|
| 107 |
+
"PipelineStep",
|
| 108 |
+
"StepResult",
|
| 109 |
+
# Registre de métriques typées
|
| 110 |
+
"MetricSpec",
|
| 111 |
+
"compute_at_junction",
|
| 112 |
+
"register_metric",
|
| 113 |
+
"select_metrics",
|
| 114 |
+
]
|
|
@@ -1 +1,26 @@
|
|
| 1 |
-
"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Picarones — Cercle 1 : abstractions de domaine.
|
| 2 |
+
|
| 3 |
+
Ce package contient **uniquement des contrats** : dataclasses du
|
| 4 |
+
domaine, types d'artefacts, interfaces abstraites, registres, modèle
|
| 5 |
+
narratif. Pas de logique métier, pas de calcul, pas d'I/O.
|
| 6 |
+
|
| 7 |
+
Règle de dépendance : un module du cercle 1 peut importer un autre
|
| 8 |
+
module du cercle 1. Il ne peut **rien** importer des cercles 2 ou 3
|
| 9 |
+
(``measurements``, ``engines``, ``llm``, ``pipelines``, ``modules``,
|
| 10 |
+
``extras``, ``report``, ``cli``, ``web``).
|
| 11 |
+
|
| 12 |
+
Modules
|
| 13 |
+
-------
|
| 14 |
+
- :mod:`corpus` Document, Corpus, GTLevel + payloads typés
|
| 15 |
+
- :mod:`modules` BaseModule, ArtifactType
|
| 16 |
+
- :mod:`results` DocumentResult, EngineReport, BenchmarkResult
|
| 17 |
+
- :mod:`metrics` MetricsResult (dataclass), aggregate_metrics
|
| 18 |
+
- :mod:`metric_registry` MetricSpec, register_metric, compute_at_junction
|
| 19 |
+
- :mod:`metric_hooks` register_document_metric, register_corpus_aggregator
|
| 20 |
+
- :mod:`pipeline` PipelineRunner, PipelineSpec, PipelineStep
|
| 21 |
+
- :mod:`facts` Fact, FactType, FactImportance, DetectorRegistry
|
| 22 |
+
|
| 23 |
+
Voir :doc:`docs/architecture.md` pour le manifeste complet et
|
| 24 |
+
:doc:`docs/api-stable.md` pour le contrat de stabilité de chaque
|
| 25 |
+
nom exporté.
|
| 26 |
+
"""
|