Claude commited on
Commit
360239b
·
unverified ·
1 Parent(s): 6a9d280

feat(api): exposer l'API publique du Cercle 1 au niveau racine

Browse files

Avant 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

Files changed (2) hide show
  1. picarones/__init__.py +104 -3
  2. picarones/core/__init__.py +26 -1
picarones/__init__.py CHANGED
@@ -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
+ ]
picarones/core/__init__.py CHANGED
@@ -1 +1,26 @@
1
- """Core modules : corpus, métriques, résultats, orchestration."""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ """