Picarones / picarones /__init__.py
Claude
feat(sprint-A9): release pipeline PyPI + ghcr.io + GitHub Release
628d92a unverified
Raw
History Blame
4.12 kB
"""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",
]