File size: 4,123 Bytes
360239b
49cc409
 
360239b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49cc409
 
360239b
 
628d92a
 
 
 
 
 
 
e224609
628d92a
 
 
 
 
 
 
e224609
1af6b22
360239b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
fda1a60
 
 
 
 
 
 
 
360239b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
"""Picarones — Plateforme de benchmark OCR/HTR pour documents patrimoniaux.

Licence Apache 2.0.

API publique du Cercle 1 (abstractions stables) ré-exportée ici pour
permettre :

>>> from picarones import Corpus, Document, BaseModule, ArtifactType
>>> from picarones import BenchmarkResult, EngineReport, DocumentResult

Pour les implémentations (calcul de métriques, runner, adapters OCR…),
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

Voir ``docs/architecture.md`` pour la cartographie complète des
3 cercles, et ``docs/api-stable.md`` pour le contrat de stabilité.
"""

from __future__ import annotations

# Version (Sprint A9 / M-5) — résolue dans cet ordre :
#   1. ``picarones._version`` injecté au build par setuptools_scm
#      (présent dans le wheel installé) ;
#   2. fallback ``importlib.metadata.version("picarones")`` pour les
#      installations editable où ``_version.py`` peut être stale ;
#   3. fallback final ``"1.0.0"`` si aucune source n'est disponible
#      (ex : tarball sans .git ni metadata).
try:
    from picarones._version import __version__  # type: ignore[import-not-found]
except ImportError:
    try:
        from importlib.metadata import version as _get_version
        __version__ = _get_version("picarones")
    except Exception:  # noqa: BLE001
        __version__ = "1.0.0"

__author__ = "Picarones contributors"


# ──────────────────────────────────────────────────────────────────────────
# API publique — Cercle 1 uniquement
# ──────────────────────────────────────────────────────────────────────────

from picarones.core.corpus import (
    Corpus,
    Document,
    GTLevel,
    TextGT,
    AltoGT,
    PageGT,
    EntitiesGT,
    ReadingOrderGT,
    load_corpus_from_directory,
)
from picarones.core.modules import ArtifactType, BaseModule
from picarones.core.results import (
    BenchmarkResult,
    DocumentResult,
    EngineReport,
)
from picarones.core.metrics import MetricsResult, aggregate_metrics
from picarones.core.facts import (
    DetectorRegistry,
    Fact,
    FactImportance,
    FactType,
)
from picarones.core.pipeline import (
    PipelineResult,
    PipelineRunner,
    PipelineSpec,
    PipelineStep,
    StepResult,
)
from picarones.core.metric_registry import (
    MetricSpec,
    compute_at_junction,
    register_metric,
    select_metrics,
)

# Sprint A3 — trigger d'enregistrement du registre typé (Sprint 34).
# L'import de ``picarones.measurements`` provoque l'exécution des
# décorateurs ``@register_metric`` sur ``cer``, ``wer``, ``mer``,
# ``wil`` + ~15 métriques philologiques + reading order + NER + ALTO.
# Ce trigger remplace l'ancien import croisé Cercle 1 → Cercle 2 dans
# ``core/pipeline.py`` (violation B-1/B-2 du même esprit).
import picarones.measurements as _trigger_metric_registration  # noqa: F401, E402

__all__ = [
    "__version__",
    "__author__",
    # Corpus
    "Corpus",
    "Document",
    "GTLevel",
    "TextGT",
    "AltoGT",
    "PageGT",
    "EntitiesGT",
    "ReadingOrderGT",
    "load_corpus_from_directory",
    # Modules génériques (BaseModule)
    "ArtifactType",
    "BaseModule",
    # Résultats
    "BenchmarkResult",
    "DocumentResult",
    "EngineReport",
    "MetricsResult",
    "aggregate_metrics",
    # Moteur narratif (modèle de données)
    "DetectorRegistry",
    "Fact",
    "FactImportance",
    "FactType",
    # Pipelines composées (axe B)
    "PipelineResult",
    "PipelineRunner",
    "PipelineSpec",
    "PipelineStep",
    "StepResult",
    # Registre de métriques typées
    "MetricSpec",
    "compute_at_junction",
    "register_metric",
    "select_metrics",
]