Spaces:
Sleeping
refactor(core): faire de core/ un cercle 1 strict, déplacer cercle 2 vers measurements/
Browse filesAvant ce commit, ``picarones/core/`` mélangeait abstractions pures
(``modules.py``, ``corpus.py``, ``results.py``) avec des modules
d'implémentation (``runner.py``, ``metrics.py``, ~50 shims pointant
vers ``measurements/``). La frontière entre cercles n'existait que
sur le papier.
Ce commit :
1. **Déplace les modules cercle 2 hors de ``core/``** vers ``measurements/`` :
- ``runner.py`` (run_benchmark — orchestration)
- ``metrics.py`` (CER/WER via jiwer)
- ``builtin_metrics.py`` (registers métriques)
- ``alto_metrics.py`` (extension ALTO)
- ``pipeline_benchmark.py``, ``pipeline_comparison.py``,
``pipeline_spec_loader.py``
2. **Supprime les ~52 shims** ``picarones/core/{module}.py`` qui
pointaient vers ``picarones/measurements/{module}.py`` (et le
sous-package narrative au complet ``core/narrative/{12 fichiers}``).
Plus de shim — un module a un seul emplacement.
3. **Renomme ``core/pipeline_runner.py`` → ``core/pipeline.py``** :
le nom historique n'avait plus de sens (le cercle 1 ne contient
plus que l'abstraction, pas le runner d'orchestration).
4. **Extrait ``core/facts.py`` du sous-package narrative** : ``Fact``,
``FactType``, ``FactImportance``, ``DetectorRegistry`` sont des
abstractions pures (cercle 1), pas des implémentations. Le code
précédent les rangeait avec les détecteurs (cercle 2).
5. **Déplace ``core/colors.py`` → ``report/colors.py``** et
``core/jobs.py`` → ``web/jobs.py`` : ces utilitaires sont
spécifiques à la présentation HTML et au backend FastAPI
respectivement.
6. **Migre tous les imports** dans le code source et les tests :
- ``picarones.core.X`` → ``picarones.measurements.X`` (~52 modules)
- ``picarones.core.narrative.X`` → ``picarones.measurements.narrative.X``
- ``picarones.core.narrative.facts`` → ``picarones.core.facts``
- ``picarones.core.colors`` → ``picarones.report.colors``
- ``picarones.core.jobs`` → ``picarones.web.jobs``
7. **Met à jour ``tests/test_public_api.py``** : ``EXPECTED_CERCLE1``
ne contient plus que les 7 modules d'abstraction réels.
Le sous-package ``picarones/core/narrative/`` est entièrement supprimé
(le contenu vit en ``measurements/narrative/``). Le test
``tests/test_phaseE_migration.py`` est supprimé (il validait la
migration intermédiaire — son rôle est désormais documenté dans
``docs/architecture.md``).
Cercle 1 final : 7 modules ``modules.py``, ``corpus.py``, ``results.py``,
``metric_registry.py``, ``metric_hooks.py``, ``pipeline.py``, ``facts.py``.
https://claude.ai/code/session_01Hsd7kL8yeCbXn1mA7GQK9L
- docs/user/writing-a-pipeline-module.md +4 -4
- picarones/cli/__init__.py +3 -3
- picarones/cli/_history.py +1 -1
- picarones/cli/_imports.py +1 -1
- picarones/cli/_pipeline.py +4 -4
- picarones/cli/_robustness.py +2 -2
- picarones/cli/_workflows.py +2 -2
- picarones/core/abbreviations.py +0 -26
- picarones/core/baseline_comparison.py +0 -26
- picarones/core/builtin_hooks.py +0 -26
- picarones/core/calibration.py +0 -26
- picarones/core/char_scores.py +0 -26
- picarones/core/confusion.py +0 -26
- picarones/core/cost_projection.py +0 -26
- picarones/core/difficulty.py +0 -26
- picarones/core/early_modern_typography.py +0 -26
- picarones/core/equivalence_profile.py +0 -26
- picarones/core/error_absorption.py +0 -26
- picarones/{measurements/narrative → core}/facts.py +0 -0
- picarones/core/hallucination.py +0 -26
- picarones/core/history.py +0 -26
- picarones/core/image_predictive.py +0 -26
- picarones/core/image_quality.py +0 -26
- picarones/core/incremental_comparison.py +0 -26
- picarones/core/inter_engine.py +0 -26
- picarones/core/layout.py +0 -26
- picarones/core/levers.py +0 -26
- picarones/core/lexical_modernization.py +0 -26
- picarones/core/line_metrics.py +0 -26
- picarones/core/longitudinal.py +0 -26
- picarones/core/marginal_cost.py +0 -26
- picarones/core/metric_hooks.py +2 -2
- picarones/core/modern_archives.py +0 -26
- picarones/core/module_policy.py +0 -26
- picarones/core/mufi.py +0 -26
- picarones/core/narrative/__init__.py +0 -24
- picarones/core/narrative/arbiter.py +0 -26
- picarones/core/narrative/detectors/__init__.py +0 -13
- picarones/core/narrative/detectors/_helpers.py +0 -26
- picarones/core/narrative/detectors/ensemble.py +0 -26
- picarones/core/narrative/detectors/history.py +0 -26
- picarones/core/narrative/detectors/pareto.py +0 -26
- picarones/core/narrative/detectors/quality.py +0 -26
- picarones/core/narrative/detectors/ranking.py +0 -26
- picarones/core/narrative/detectors/stratum.py +0 -26
- picarones/core/narrative/facts.py +0 -26
- picarones/core/narrative/registry.py +0 -26
- picarones/core/narrative/renderer.py +0 -26
- picarones/core/narrative/templates/en.yaml +0 -96
- picarones/core/narrative/templates/fr.yaml +0 -101
|
@@ -18,7 +18,7 @@
|
|
| 18 |
|
| 19 |
```python
|
| 20 |
from picarones.core.modules import BaseModule, ArtifactType
|
| 21 |
-
from picarones.core.
|
| 22 |
PipelineRunner, PipelineSpec, PipelineStep,
|
| 23 |
)
|
| 24 |
|
|
@@ -150,7 +150,7 @@ class NERExtractor(BaseModule):
|
|
| 150 |
### 3.a Mono-document (Sprint 63)
|
| 151 |
|
| 152 |
```python
|
| 153 |
-
from picarones.core.
|
| 154 |
PipelineRunner, PipelineSpec, PipelineStep,
|
| 155 |
)
|
| 156 |
|
|
@@ -178,7 +178,7 @@ que `Document.ground_truths` porte une `TextGT` (ou `AltoGT`,
|
|
| 178 |
### 3.b Corpus complet (Sprint 64)
|
| 179 |
|
| 180 |
```python
|
| 181 |
-
from picarones.
|
| 182 |
|
| 183 |
bench = run_pipeline_benchmark(spec, my_corpus)
|
| 184 |
print(bench.n_pipelines_succeeded, "/", bench.n_docs)
|
|
@@ -203,7 +203,7 @@ bench = run_pipeline_benchmark(spec, corpus, initial_inputs_factory=my_factory)
|
|
| 203 |
### 3.c Comparer N pipelines (Sprint 65)
|
| 204 |
|
| 205 |
```python
|
| 206 |
-
from picarones.
|
| 207 |
|
| 208 |
comparison = compare_pipelines(
|
| 209 |
[spec_baseline, spec_with_correcteur_a, spec_with_correcteur_b],
|
|
|
|
| 18 |
|
| 19 |
```python
|
| 20 |
from picarones.core.modules import BaseModule, ArtifactType
|
| 21 |
+
from picarones.core.pipeline import (
|
| 22 |
PipelineRunner, PipelineSpec, PipelineStep,
|
| 23 |
)
|
| 24 |
|
|
|
|
| 150 |
### 3.a Mono-document (Sprint 63)
|
| 151 |
|
| 152 |
```python
|
| 153 |
+
from picarones.core.pipeline import (
|
| 154 |
PipelineRunner, PipelineSpec, PipelineStep,
|
| 155 |
)
|
| 156 |
|
|
|
|
| 178 |
### 3.b Corpus complet (Sprint 64)
|
| 179 |
|
| 180 |
```python
|
| 181 |
+
from picarones.measurements.pipeline_benchmark import run_pipeline_benchmark
|
| 182 |
|
| 183 |
bench = run_pipeline_benchmark(spec, my_corpus)
|
| 184 |
print(bench.n_pipelines_succeeded, "/", bench.n_docs)
|
|
|
|
| 203 |
### 3.c Comparer N pipelines (Sprint 65)
|
| 204 |
|
| 205 |
```python
|
| 206 |
+
from picarones.measurements.pipeline_comparison import compare_pipelines
|
| 207 |
|
| 208 |
comparison = compare_pipelines(
|
| 209 |
[spec_baseline, spec_with_correcteur_a, spec_with_correcteur_b],
|
|
@@ -103,7 +103,7 @@ def cli() -> None:
|
|
| 103 |
@click.option("--json-output", is_flag=True, default=False, help="Sortie en JSON")
|
| 104 |
def metrics_cmd(reference: str, hypothesis: str, json_output: bool) -> None:
|
| 105 |
"""Calcule CER et WER entre deux fichiers texte."""
|
| 106 |
-
from picarones.
|
| 107 |
|
| 108 |
ref_text = Path(reference).read_text(encoding="utf-8").strip()
|
| 109 |
hyp_text = Path(hypothesis).read_text(encoding="utf-8").strip()
|
|
@@ -309,7 +309,7 @@ def demo_cmd(
|
|
| 309 |
# Suivi longitudinal
|
| 310 |
if with_history:
|
| 311 |
click.echo("\n── Démonstration suivi longitudinal ──────────────")
|
| 312 |
-
from picarones.
|
| 313 |
history = BenchmarkHistory(":memory:")
|
| 314 |
generate_demo_history(history, n_runs=8)
|
| 315 |
entries = history.query(engine="tesseract")
|
|
@@ -333,7 +333,7 @@ def demo_cmd(
|
|
| 333 |
# Analyse de robustesse
|
| 334 |
if with_robustness:
|
| 335 |
click.echo("\n── Démonstration analyse de robustesse ───────────")
|
| 336 |
-
from picarones.
|
| 337 |
report = generate_demo_robustness_report(
|
| 338 |
engine_names=["tesseract", "pero_ocr"]
|
| 339 |
)
|
|
|
|
| 103 |
@click.option("--json-output", is_flag=True, default=False, help="Sortie en JSON")
|
| 104 |
def metrics_cmd(reference: str, hypothesis: str, json_output: bool) -> None:
|
| 105 |
"""Calcule CER et WER entre deux fichiers texte."""
|
| 106 |
+
from picarones.measurements.metrics import compute_metrics
|
| 107 |
|
| 108 |
ref_text = Path(reference).read_text(encoding="utf-8").strip()
|
| 109 |
hyp_text = Path(hypothesis).read_text(encoding="utf-8").strip()
|
|
|
|
| 309 |
# Suivi longitudinal
|
| 310 |
if with_history:
|
| 311 |
click.echo("\n── Démonstration suivi longitudinal ──────────────")
|
| 312 |
+
from picarones.measurements.history import BenchmarkHistory, generate_demo_history
|
| 313 |
history = BenchmarkHistory(":memory:")
|
| 314 |
generate_demo_history(history, n_runs=8)
|
| 315 |
entries = history.query(engine="tesseract")
|
|
|
|
| 333 |
# Analyse de robustesse
|
| 334 |
if with_robustness:
|
| 335 |
click.echo("\n── Démonstration analyse de robustesse ───────────")
|
| 336 |
+
from picarones.measurements.robustness import generate_demo_robustness_report
|
| 337 |
report = generate_demo_robustness_report(
|
| 338 |
engine_names=["tesseract", "pero_ocr"]
|
| 339 |
)
|
|
@@ -103,7 +103,7 @@ def history_cmd(
|
|
| 103 |
"""
|
| 104 |
_setup_logging(verbose)
|
| 105 |
|
| 106 |
-
from picarones.
|
| 107 |
|
| 108 |
history = BenchmarkHistory(db)
|
| 109 |
|
|
|
|
| 103 |
"""
|
| 104 |
_setup_logging(verbose)
|
| 105 |
|
| 106 |
+
from picarones.measurements.history import BenchmarkHistory, generate_demo_history
|
| 107 |
|
| 108 |
history = BenchmarkHistory(db)
|
| 109 |
|
|
@@ -76,7 +76,7 @@ def import_iiif_cmd(
|
|
| 76 |
"""
|
| 77 |
_setup_logging(verbose)
|
| 78 |
|
| 79 |
-
from picarones.importers.iiif import IIIFImporter
|
| 80 |
|
| 81 |
click.echo(f"Manifeste IIIF : {manifest_url}")
|
| 82 |
|
|
|
|
| 76 |
"""
|
| 77 |
_setup_logging(verbose)
|
| 78 |
|
| 79 |
+
from picarones.extras.importers.iiif import IIIFImporter
|
| 80 |
|
| 81 |
click.echo(f"Manifeste IIIF : {manifest_url}")
|
| 82 |
|
|
@@ -66,8 +66,8 @@ def pipeline_run_cmd(
|
|
| 66 |
import json as _json
|
| 67 |
|
| 68 |
from picarones.core.corpus import load_corpus_from_directory
|
| 69 |
-
from picarones.
|
| 70 |
-
from picarones.
|
| 71 |
|
| 72 |
spec = load_pipeline_spec_from_yaml(spec_path)
|
| 73 |
corpus = load_corpus_from_directory(str(corpus_dir))
|
|
@@ -163,8 +163,8 @@ def pipeline_compare_cmd(
|
|
| 163 |
"""Compare N pipelines décrites dans SPECS_PATH sur le même corpus."""
|
| 164 |
from picarones.core.corpus import load_corpus_from_directory
|
| 165 |
from picarones.core.modules import ArtifactType
|
| 166 |
-
from picarones.
|
| 167 |
-
from picarones.
|
| 168 |
load_comparison_specs_from_yaml,
|
| 169 |
)
|
| 170 |
|
|
|
|
| 66 |
import json as _json
|
| 67 |
|
| 68 |
from picarones.core.corpus import load_corpus_from_directory
|
| 69 |
+
from picarones.measurements.pipeline_benchmark import run_pipeline_benchmark
|
| 70 |
+
from picarones.measurements.pipeline_spec_loader import load_pipeline_spec_from_yaml
|
| 71 |
|
| 72 |
spec = load_pipeline_spec_from_yaml(spec_path)
|
| 73 |
corpus = load_corpus_from_directory(str(corpus_dir))
|
|
|
|
| 163 |
"""Compare N pipelines décrites dans SPECS_PATH sur le même corpus."""
|
| 164 |
from picarones.core.corpus import load_corpus_from_directory
|
| 165 |
from picarones.core.modules import ArtifactType
|
| 166 |
+
from picarones.measurements.pipeline_comparison import compare_pipelines
|
| 167 |
+
from picarones.measurements.pipeline_spec_loader import (
|
| 168 |
load_comparison_specs_from_yaml,
|
| 169 |
)
|
| 170 |
|
|
@@ -99,7 +99,7 @@ def robustness_cmd(
|
|
| 99 |
|
| 100 |
deg_types = [d.strip() for d in degradations.split(",") if d.strip()]
|
| 101 |
|
| 102 |
-
from picarones.
|
| 103 |
RobustnessAnalyzer, ALL_DEGRADATION_TYPES, generate_demo_robustness_report
|
| 104 |
)
|
| 105 |
|
|
@@ -139,7 +139,7 @@ def robustness_cmd(
|
|
| 139 |
click.echo(f"Erreur moteur : {exc}", err=True)
|
| 140 |
sys.exit(1)
|
| 141 |
|
| 142 |
-
from picarones.
|
| 143 |
analyzer = RobustnessAnalyzer(
|
| 144 |
engines=[ocr_engine],
|
| 145 |
degradation_types=deg_types,
|
|
|
|
| 99 |
|
| 100 |
deg_types = [d.strip() for d in degradations.split(",") if d.strip()]
|
| 101 |
|
| 102 |
+
from picarones.measurements.robustness import (
|
| 103 |
RobustnessAnalyzer, ALL_DEGRADATION_TYPES, generate_demo_robustness_report
|
| 104 |
)
|
| 105 |
|
|
|
|
| 139 |
click.echo(f"Erreur moteur : {exc}", err=True)
|
| 140 |
sys.exit(1)
|
| 141 |
|
| 142 |
+
from picarones.measurements.robustness import RobustnessAnalyzer
|
| 143 |
analyzer = RobustnessAnalyzer(
|
| 144 |
engines=[ocr_engine],
|
| 145 |
degradation_types=deg_types,
|
|
@@ -90,7 +90,7 @@ def run_cmd(
|
|
| 90 |
_setup_logging(verbose)
|
| 91 |
|
| 92 |
from picarones.core.corpus import load_corpus_from_directory
|
| 93 |
-
from picarones.
|
| 94 |
|
| 95 |
# Chargement du corpus
|
| 96 |
try:
|
|
@@ -183,7 +183,7 @@ def _run_workflow(
|
|
| 183 |
_setup_logging(verbose)
|
| 184 |
|
| 185 |
from picarones.core.corpus import load_corpus_from_directory
|
| 186 |
-
from picarones.
|
| 187 |
|
| 188 |
try:
|
| 189 |
corp = load_corpus_from_directory(corpus)
|
|
|
|
| 90 |
_setup_logging(verbose)
|
| 91 |
|
| 92 |
from picarones.core.corpus import load_corpus_from_directory
|
| 93 |
+
from picarones.measurements.runner import run_benchmark
|
| 94 |
|
| 95 |
# Chargement du corpus
|
| 96 |
try:
|
|
|
|
| 183 |
_setup_logging(verbose)
|
| 184 |
|
| 185 |
from picarones.core.corpus import load_corpus_from_directory
|
| 186 |
+
from picarones.measurements.runner import run_benchmark
|
| 187 |
|
| 188 |
try:
|
| 189 |
corp = load_corpus_from_directory(corpus)
|
|
@@ -1,26 +0,0 @@
|
|
| 1 |
-
"""Alias rétrocompat — module déplacé dans :mod:`picarones.extras.historical.abbreviations`.
|
| 2 |
-
|
| 3 |
-
Le contenu vit désormais dans son cercle d'origine. Cet alias permet
|
| 4 |
-
aux imports historiques (y compris les noms privés ``_*``) de
|
| 5 |
-
continuer à fonctionner sans modification.
|
| 6 |
-
|
| 7 |
-
Voir :doc:`docs/architecture-cercles.md` pour la cartographie.
|
| 8 |
-
"""
|
| 9 |
-
|
| 10 |
-
from picarones.extras.historical.abbreviations import * # noqa: F401, F403
|
| 11 |
-
|
| 12 |
-
# Réexport explicite de TOUS les noms (privés inclus) pour la
|
| 13 |
-
# rétrocompatibilité des tests Sprints qui importent ``_helper``,
|
| 14 |
-
# ``_compute_X``, ``_SCIPY_AVAILABLE``, etc. Sans cette boucle, ``import *``
|
| 15 |
-
# ne propage que les noms publics et casse les imports historiques.
|
| 16 |
-
import picarones.extras.historical.abbreviations as _shim_module
|
| 17 |
-
for _shim_name in dir(_shim_module):
|
| 18 |
-
if _shim_name == "__builtins__":
|
| 19 |
-
continue
|
| 20 |
-
if _shim_name not in globals():
|
| 21 |
-
globals()[_shim_name] = getattr(_shim_module, _shim_name)
|
| 22 |
-
del _shim_module, _shim_name
|
| 23 |
-
|
| 24 |
-
__all__ = [
|
| 25 |
-
_n for _n in dir() if not _n.startswith("__")
|
| 26 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1,26 +0,0 @@
|
|
| 1 |
-
"""Alias rétrocompat — module déplacé dans :mod:`picarones.measurements.baseline_comparison`.
|
| 2 |
-
|
| 3 |
-
Le contenu vit désormais dans son cercle d'origine. Cet alias permet
|
| 4 |
-
aux imports historiques (y compris les noms privés ``_*``) de
|
| 5 |
-
continuer à fonctionner sans modification.
|
| 6 |
-
|
| 7 |
-
Voir :doc:`docs/architecture-cercles.md` pour la cartographie.
|
| 8 |
-
"""
|
| 9 |
-
|
| 10 |
-
from picarones.measurements.baseline_comparison import * # noqa: F401, F403
|
| 11 |
-
|
| 12 |
-
# Réexport explicite de TOUS les noms (privés inclus) pour la
|
| 13 |
-
# rétrocompatibilité des tests Sprints qui importent ``_helper``,
|
| 14 |
-
# ``_compute_X``, ``_SCIPY_AVAILABLE``, etc. Sans cette boucle, ``import *``
|
| 15 |
-
# ne propage que les noms publics et casse les imports historiques.
|
| 16 |
-
import picarones.measurements.baseline_comparison as _shim_module
|
| 17 |
-
for _shim_name in dir(_shim_module):
|
| 18 |
-
if _shim_name == "__builtins__":
|
| 19 |
-
continue
|
| 20 |
-
if _shim_name not in globals():
|
| 21 |
-
globals()[_shim_name] = getattr(_shim_module, _shim_name)
|
| 22 |
-
del _shim_module, _shim_name
|
| 23 |
-
|
| 24 |
-
__all__ = [
|
| 25 |
-
_n for _n in dir() if not _n.startswith("__")
|
| 26 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1,26 +0,0 @@
|
|
| 1 |
-
"""Alias rétrocompat — module déplacé dans :mod:`picarones.measurements.builtin_hooks`.
|
| 2 |
-
|
| 3 |
-
Le contenu vit désormais dans son cercle d'origine. Cet alias permet
|
| 4 |
-
aux imports historiques (y compris les noms privés ``_*``) de
|
| 5 |
-
continuer à fonctionner sans modification.
|
| 6 |
-
|
| 7 |
-
Voir :doc:`docs/architecture-cercles.md` pour la cartographie.
|
| 8 |
-
"""
|
| 9 |
-
|
| 10 |
-
from picarones.measurements.builtin_hooks import * # noqa: F401, F403
|
| 11 |
-
|
| 12 |
-
# Réexport explicite de TOUS les noms (privés inclus) pour la
|
| 13 |
-
# rétrocompatibilité des tests Sprints qui importent ``_helper``,
|
| 14 |
-
# ``_compute_X``, ``_SCIPY_AVAILABLE``, etc. Sans cette boucle, ``import *``
|
| 15 |
-
# ne propage que les noms publics et casse les imports historiques.
|
| 16 |
-
import picarones.measurements.builtin_hooks as _shim_module
|
| 17 |
-
for _shim_name in dir(_shim_module):
|
| 18 |
-
if _shim_name == "__builtins__":
|
| 19 |
-
continue
|
| 20 |
-
if _shim_name not in globals():
|
| 21 |
-
globals()[_shim_name] = getattr(_shim_module, _shim_name)
|
| 22 |
-
del _shim_module, _shim_name
|
| 23 |
-
|
| 24 |
-
__all__ = [
|
| 25 |
-
_n for _n in dir() if not _n.startswith("__")
|
| 26 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1,26 +0,0 @@
|
|
| 1 |
-
"""Alias rétrocompat — module déplacé dans :mod:`picarones.measurements.calibration`.
|
| 2 |
-
|
| 3 |
-
Le contenu vit désormais dans son cercle d'origine. Cet alias permet
|
| 4 |
-
aux imports historiques (y compris les noms privés ``_*``) de
|
| 5 |
-
continuer à fonctionner sans modification.
|
| 6 |
-
|
| 7 |
-
Voir :doc:`docs/architecture-cercles.md` pour la cartographie.
|
| 8 |
-
"""
|
| 9 |
-
|
| 10 |
-
from picarones.measurements.calibration import * # noqa: F401, F403
|
| 11 |
-
|
| 12 |
-
# Réexport explicite de TOUS les noms (privés inclus) pour la
|
| 13 |
-
# rétrocompatibilité des tests Sprints qui importent ``_helper``,
|
| 14 |
-
# ``_compute_X``, ``_SCIPY_AVAILABLE``, etc. Sans cette boucle, ``import *``
|
| 15 |
-
# ne propage que les noms publics et casse les imports historiques.
|
| 16 |
-
import picarones.measurements.calibration as _shim_module
|
| 17 |
-
for _shim_name in dir(_shim_module):
|
| 18 |
-
if _shim_name == "__builtins__":
|
| 19 |
-
continue
|
| 20 |
-
if _shim_name not in globals():
|
| 21 |
-
globals()[_shim_name] = getattr(_shim_module, _shim_name)
|
| 22 |
-
del _shim_module, _shim_name
|
| 23 |
-
|
| 24 |
-
__all__ = [
|
| 25 |
-
_n for _n in dir() if not _n.startswith("__")
|
| 26 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1,26 +0,0 @@
|
|
| 1 |
-
"""Alias rétrocompat — module déplacé dans :mod:`picarones.measurements.char_scores`.
|
| 2 |
-
|
| 3 |
-
Le contenu vit désormais dans son cercle d'origine. Cet alias permet
|
| 4 |
-
aux imports historiques (y compris les noms privés ``_*``) de
|
| 5 |
-
continuer à fonctionner sans modification.
|
| 6 |
-
|
| 7 |
-
Voir :doc:`docs/architecture-cercles.md` pour la cartographie.
|
| 8 |
-
"""
|
| 9 |
-
|
| 10 |
-
from picarones.measurements.char_scores import * # noqa: F401, F403
|
| 11 |
-
|
| 12 |
-
# Réexport explicite de TOUS les noms (privés inclus) pour la
|
| 13 |
-
# rétrocompatibilité des tests Sprints qui importent ``_helper``,
|
| 14 |
-
# ``_compute_X``, ``_SCIPY_AVAILABLE``, etc. Sans cette boucle, ``import *``
|
| 15 |
-
# ne propage que les noms publics et casse les imports historiques.
|
| 16 |
-
import picarones.measurements.char_scores as _shim_module
|
| 17 |
-
for _shim_name in dir(_shim_module):
|
| 18 |
-
if _shim_name == "__builtins__":
|
| 19 |
-
continue
|
| 20 |
-
if _shim_name not in globals():
|
| 21 |
-
globals()[_shim_name] = getattr(_shim_module, _shim_name)
|
| 22 |
-
del _shim_module, _shim_name
|
| 23 |
-
|
| 24 |
-
__all__ = [
|
| 25 |
-
_n for _n in dir() if not _n.startswith("__")
|
| 26 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1,26 +0,0 @@
|
|
| 1 |
-
"""Alias rétrocompat — module déplacé dans :mod:`picarones.measurements.confusion`.
|
| 2 |
-
|
| 3 |
-
Le contenu vit désormais dans son cercle d'origine. Cet alias permet
|
| 4 |
-
aux imports historiques (y compris les noms privés ``_*``) de
|
| 5 |
-
continuer à fonctionner sans modification.
|
| 6 |
-
|
| 7 |
-
Voir :doc:`docs/architecture-cercles.md` pour la cartographie.
|
| 8 |
-
"""
|
| 9 |
-
|
| 10 |
-
from picarones.measurements.confusion import * # noqa: F401, F403
|
| 11 |
-
|
| 12 |
-
# Réexport explicite de TOUS les noms (privés inclus) pour la
|
| 13 |
-
# rétrocompatibilité des tests Sprints qui importent ``_helper``,
|
| 14 |
-
# ``_compute_X``, ``_SCIPY_AVAILABLE``, etc. Sans cette boucle, ``import *``
|
| 15 |
-
# ne propage que les noms publics et casse les imports historiques.
|
| 16 |
-
import picarones.measurements.confusion as _shim_module
|
| 17 |
-
for _shim_name in dir(_shim_module):
|
| 18 |
-
if _shim_name == "__builtins__":
|
| 19 |
-
continue
|
| 20 |
-
if _shim_name not in globals():
|
| 21 |
-
globals()[_shim_name] = getattr(_shim_module, _shim_name)
|
| 22 |
-
del _shim_module, _shim_name
|
| 23 |
-
|
| 24 |
-
__all__ = [
|
| 25 |
-
_n for _n in dir() if not _n.startswith("__")
|
| 26 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1,26 +0,0 @@
|
|
| 1 |
-
"""Alias rétrocompat — module déplacé dans :mod:`picarones.measurements.cost_projection`.
|
| 2 |
-
|
| 3 |
-
Le contenu vit désormais dans son cercle d'origine. Cet alias permet
|
| 4 |
-
aux imports historiques (y compris les noms privés ``_*``) de
|
| 5 |
-
continuer à fonctionner sans modification.
|
| 6 |
-
|
| 7 |
-
Voir :doc:`docs/architecture-cercles.md` pour la cartographie.
|
| 8 |
-
"""
|
| 9 |
-
|
| 10 |
-
from picarones.measurements.cost_projection import * # noqa: F401, F403
|
| 11 |
-
|
| 12 |
-
# Réexport explicite de TOUS les noms (privés inclus) pour la
|
| 13 |
-
# rétrocompatibilité des tests Sprints qui importent ``_helper``,
|
| 14 |
-
# ``_compute_X``, ``_SCIPY_AVAILABLE``, etc. Sans cette boucle, ``import *``
|
| 15 |
-
# ne propage que les noms publics et casse les imports historiques.
|
| 16 |
-
import picarones.measurements.cost_projection as _shim_module
|
| 17 |
-
for _shim_name in dir(_shim_module):
|
| 18 |
-
if _shim_name == "__builtins__":
|
| 19 |
-
continue
|
| 20 |
-
if _shim_name not in globals():
|
| 21 |
-
globals()[_shim_name] = getattr(_shim_module, _shim_name)
|
| 22 |
-
del _shim_module, _shim_name
|
| 23 |
-
|
| 24 |
-
__all__ = [
|
| 25 |
-
_n for _n in dir() if not _n.startswith("__")
|
| 26 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1,26 +0,0 @@
|
|
| 1 |
-
"""Alias rétrocompat — module déplacé dans :mod:`picarones.measurements.difficulty`.
|
| 2 |
-
|
| 3 |
-
Le contenu vit désormais dans son cercle d'origine. Cet alias permet
|
| 4 |
-
aux imports historiques (y compris les noms privés ``_*``) de
|
| 5 |
-
continuer à fonctionner sans modification.
|
| 6 |
-
|
| 7 |
-
Voir :doc:`docs/architecture-cercles.md` pour la cartographie.
|
| 8 |
-
"""
|
| 9 |
-
|
| 10 |
-
from picarones.measurements.difficulty import * # noqa: F401, F403
|
| 11 |
-
|
| 12 |
-
# Réexport explicite de TOUS les noms (privés inclus) pour la
|
| 13 |
-
# rétrocompatibilité des tests Sprints qui importent ``_helper``,
|
| 14 |
-
# ``_compute_X``, ``_SCIPY_AVAILABLE``, etc. Sans cette boucle, ``import *``
|
| 15 |
-
# ne propage que les noms publics et casse les imports historiques.
|
| 16 |
-
import picarones.measurements.difficulty as _shim_module
|
| 17 |
-
for _shim_name in dir(_shim_module):
|
| 18 |
-
if _shim_name == "__builtins__":
|
| 19 |
-
continue
|
| 20 |
-
if _shim_name not in globals():
|
| 21 |
-
globals()[_shim_name] = getattr(_shim_module, _shim_name)
|
| 22 |
-
del _shim_module, _shim_name
|
| 23 |
-
|
| 24 |
-
__all__ = [
|
| 25 |
-
_n for _n in dir() if not _n.startswith("__")
|
| 26 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1,26 +0,0 @@
|
|
| 1 |
-
"""Alias rétrocompat — module déplacé dans :mod:`picarones.extras.historical.early_modern_typography`.
|
| 2 |
-
|
| 3 |
-
Le contenu vit désormais dans son cercle d'origine. Cet alias permet
|
| 4 |
-
aux imports historiques (y compris les noms privés ``_*``) de
|
| 5 |
-
continuer à fonctionner sans modification.
|
| 6 |
-
|
| 7 |
-
Voir :doc:`docs/architecture-cercles.md` pour la cartographie.
|
| 8 |
-
"""
|
| 9 |
-
|
| 10 |
-
from picarones.extras.historical.early_modern_typography import * # noqa: F401, F403
|
| 11 |
-
|
| 12 |
-
# Réexport explicite de TOUS les noms (privés inclus) pour la
|
| 13 |
-
# rétrocompatibilité des tests Sprints qui importent ``_helper``,
|
| 14 |
-
# ``_compute_X``, ``_SCIPY_AVAILABLE``, etc. Sans cette boucle, ``import *``
|
| 15 |
-
# ne propage que les noms publics et casse les imports historiques.
|
| 16 |
-
import picarones.extras.historical.early_modern_typography as _shim_module
|
| 17 |
-
for _shim_name in dir(_shim_module):
|
| 18 |
-
if _shim_name == "__builtins__":
|
| 19 |
-
continue
|
| 20 |
-
if _shim_name not in globals():
|
| 21 |
-
globals()[_shim_name] = getattr(_shim_module, _shim_name)
|
| 22 |
-
del _shim_module, _shim_name
|
| 23 |
-
|
| 24 |
-
__all__ = [
|
| 25 |
-
_n for _n in dir() if not _n.startswith("__")
|
| 26 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1,26 +0,0 @@
|
|
| 1 |
-
"""Alias rétrocompat — module déplacé dans :mod:`picarones.measurements.equivalence_profile`.
|
| 2 |
-
|
| 3 |
-
Le contenu vit désormais dans son cercle d'origine. Cet alias permet
|
| 4 |
-
aux imports historiques (y compris les noms privés ``_*``) de
|
| 5 |
-
continuer à fonctionner sans modification.
|
| 6 |
-
|
| 7 |
-
Voir :doc:`docs/architecture-cercles.md` pour la cartographie.
|
| 8 |
-
"""
|
| 9 |
-
|
| 10 |
-
from picarones.measurements.equivalence_profile import * # noqa: F401, F403
|
| 11 |
-
|
| 12 |
-
# Réexport explicite de TOUS les noms (privés inclus) pour la
|
| 13 |
-
# rétrocompatibilité des tests Sprints qui importent ``_helper``,
|
| 14 |
-
# ``_compute_X``, ``_SCIPY_AVAILABLE``, etc. Sans cette boucle, ``import *``
|
| 15 |
-
# ne propage que les noms publics et casse les imports historiques.
|
| 16 |
-
import picarones.measurements.equivalence_profile as _shim_module
|
| 17 |
-
for _shim_name in dir(_shim_module):
|
| 18 |
-
if _shim_name == "__builtins__":
|
| 19 |
-
continue
|
| 20 |
-
if _shim_name not in globals():
|
| 21 |
-
globals()[_shim_name] = getattr(_shim_module, _shim_name)
|
| 22 |
-
del _shim_module, _shim_name
|
| 23 |
-
|
| 24 |
-
__all__ = [
|
| 25 |
-
_n for _n in dir() if not _n.startswith("__")
|
| 26 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1,26 +0,0 @@
|
|
| 1 |
-
"""Alias rétrocompat — module déplacé dans :mod:`picarones.measurements.error_absorption`.
|
| 2 |
-
|
| 3 |
-
Le contenu vit désormais dans son cercle d'origine. Cet alias permet
|
| 4 |
-
aux imports historiques (y compris les noms privés ``_*``) de
|
| 5 |
-
continuer à fonctionner sans modification.
|
| 6 |
-
|
| 7 |
-
Voir :doc:`docs/architecture-cercles.md` pour la cartographie.
|
| 8 |
-
"""
|
| 9 |
-
|
| 10 |
-
from picarones.measurements.error_absorption import * # noqa: F401, F403
|
| 11 |
-
|
| 12 |
-
# Réexport explicite de TOUS les noms (privés inclus) pour la
|
| 13 |
-
# rétrocompatibilité des tests Sprints qui importent ``_helper``,
|
| 14 |
-
# ``_compute_X``, ``_SCIPY_AVAILABLE``, etc. Sans cette boucle, ``import *``
|
| 15 |
-
# ne propage que les noms publics et casse les imports historiques.
|
| 16 |
-
import picarones.measurements.error_absorption as _shim_module
|
| 17 |
-
for _shim_name in dir(_shim_module):
|
| 18 |
-
if _shim_name == "__builtins__":
|
| 19 |
-
continue
|
| 20 |
-
if _shim_name not in globals():
|
| 21 |
-
globals()[_shim_name] = getattr(_shim_module, _shim_name)
|
| 22 |
-
del _shim_module, _shim_name
|
| 23 |
-
|
| 24 |
-
__all__ = [
|
| 25 |
-
_n for _n in dir() if not _n.startswith("__")
|
| 26 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
File without changes
|
|
@@ -1,26 +0,0 @@
|
|
| 1 |
-
"""Alias rétrocompat — module déplacé dans :mod:`picarones.measurements.hallucination`.
|
| 2 |
-
|
| 3 |
-
Le contenu vit désormais dans son cercle d'origine. Cet alias permet
|
| 4 |
-
aux imports historiques (y compris les noms privés ``_*``) de
|
| 5 |
-
continuer à fonctionner sans modification.
|
| 6 |
-
|
| 7 |
-
Voir :doc:`docs/architecture-cercles.md` pour la cartographie.
|
| 8 |
-
"""
|
| 9 |
-
|
| 10 |
-
from picarones.measurements.hallucination import * # noqa: F401, F403
|
| 11 |
-
|
| 12 |
-
# Réexport explicite de TOUS les noms (privés inclus) pour la
|
| 13 |
-
# rétrocompatibilité des tests Sprints qui importent ``_helper``,
|
| 14 |
-
# ``_compute_X``, ``_SCIPY_AVAILABLE``, etc. Sans cette boucle, ``import *``
|
| 15 |
-
# ne propage que les noms publics et casse les imports historiques.
|
| 16 |
-
import picarones.measurements.hallucination as _shim_module
|
| 17 |
-
for _shim_name in dir(_shim_module):
|
| 18 |
-
if _shim_name == "__builtins__":
|
| 19 |
-
continue
|
| 20 |
-
if _shim_name not in globals():
|
| 21 |
-
globals()[_shim_name] = getattr(_shim_module, _shim_name)
|
| 22 |
-
del _shim_module, _shim_name
|
| 23 |
-
|
| 24 |
-
__all__ = [
|
| 25 |
-
_n for _n in dir() if not _n.startswith("__")
|
| 26 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1,26 +0,0 @@
|
|
| 1 |
-
"""Alias rétrocompat — module déplacé dans :mod:`picarones.measurements.history`.
|
| 2 |
-
|
| 3 |
-
Le contenu vit désormais dans son cercle d'origine. Cet alias permet
|
| 4 |
-
aux imports historiques (y compris les noms privés ``_*``) de
|
| 5 |
-
continuer à fonctionner sans modification.
|
| 6 |
-
|
| 7 |
-
Voir :doc:`docs/architecture-cercles.md` pour la cartographie.
|
| 8 |
-
"""
|
| 9 |
-
|
| 10 |
-
from picarones.measurements.history import * # noqa: F401, F403
|
| 11 |
-
|
| 12 |
-
# Réexport explicite de TOUS les noms (privés inclus) pour la
|
| 13 |
-
# rétrocompatibilité des tests Sprints qui importent ``_helper``,
|
| 14 |
-
# ``_compute_X``, ``_SCIPY_AVAILABLE``, etc. Sans cette boucle, ``import *``
|
| 15 |
-
# ne propage que les noms publics et casse les imports historiques.
|
| 16 |
-
import picarones.measurements.history as _shim_module
|
| 17 |
-
for _shim_name in dir(_shim_module):
|
| 18 |
-
if _shim_name == "__builtins__":
|
| 19 |
-
continue
|
| 20 |
-
if _shim_name not in globals():
|
| 21 |
-
globals()[_shim_name] = getattr(_shim_module, _shim_name)
|
| 22 |
-
del _shim_module, _shim_name
|
| 23 |
-
|
| 24 |
-
__all__ = [
|
| 25 |
-
_n for _n in dir() if not _n.startswith("__")
|
| 26 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1,26 +0,0 @@
|
|
| 1 |
-
"""Alias rétrocompat — module déplacé dans :mod:`picarones.extras.academic.image_predictive`.
|
| 2 |
-
|
| 3 |
-
Le contenu vit désormais dans son cercle d'origine. Cet alias permet
|
| 4 |
-
aux imports historiques (y compris les noms privés ``_*``) de
|
| 5 |
-
continuer à fonctionner sans modification.
|
| 6 |
-
|
| 7 |
-
Voir :doc:`docs/architecture-cercles.md` pour la cartographie.
|
| 8 |
-
"""
|
| 9 |
-
|
| 10 |
-
from picarones.extras.academic.image_predictive import * # noqa: F401, F403
|
| 11 |
-
|
| 12 |
-
# Réexport explicite de TOUS les noms (privés inclus) pour la
|
| 13 |
-
# rétrocompatibilité des tests Sprints qui importent ``_helper``,
|
| 14 |
-
# ``_compute_X``, ``_SCIPY_AVAILABLE``, etc. Sans cette boucle, ``import *``
|
| 15 |
-
# ne propage que les noms publics et casse les imports historiques.
|
| 16 |
-
import picarones.extras.academic.image_predictive as _shim_module
|
| 17 |
-
for _shim_name in dir(_shim_module):
|
| 18 |
-
if _shim_name == "__builtins__":
|
| 19 |
-
continue
|
| 20 |
-
if _shim_name not in globals():
|
| 21 |
-
globals()[_shim_name] = getattr(_shim_module, _shim_name)
|
| 22 |
-
del _shim_module, _shim_name
|
| 23 |
-
|
| 24 |
-
__all__ = [
|
| 25 |
-
_n for _n in dir() if not _n.startswith("__")
|
| 26 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1,26 +0,0 @@
|
|
| 1 |
-
"""Alias rétrocompat — module déplacé dans :mod:`picarones.measurements.image_quality`.
|
| 2 |
-
|
| 3 |
-
Le contenu vit désormais dans son cercle d'origine. Cet alias permet
|
| 4 |
-
aux imports historiques (y compris les noms privés ``_*``) de
|
| 5 |
-
continuer à fonctionner sans modification.
|
| 6 |
-
|
| 7 |
-
Voir :doc:`docs/architecture-cercles.md` pour la cartographie.
|
| 8 |
-
"""
|
| 9 |
-
|
| 10 |
-
from picarones.measurements.image_quality import * # noqa: F401, F403
|
| 11 |
-
|
| 12 |
-
# Réexport explicite de TOUS les noms (privés inclus) pour la
|
| 13 |
-
# rétrocompatibilité des tests Sprints qui importent ``_helper``,
|
| 14 |
-
# ``_compute_X``, ``_SCIPY_AVAILABLE``, etc. Sans cette boucle, ``import *``
|
| 15 |
-
# ne propage que les noms publics et casse les imports historiques.
|
| 16 |
-
import picarones.measurements.image_quality as _shim_module
|
| 17 |
-
for _shim_name in dir(_shim_module):
|
| 18 |
-
if _shim_name == "__builtins__":
|
| 19 |
-
continue
|
| 20 |
-
if _shim_name not in globals():
|
| 21 |
-
globals()[_shim_name] = getattr(_shim_module, _shim_name)
|
| 22 |
-
del _shim_module, _shim_name
|
| 23 |
-
|
| 24 |
-
__all__ = [
|
| 25 |
-
_n for _n in dir() if not _n.startswith("__")
|
| 26 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1,26 +0,0 @@
|
|
| 1 |
-
"""Alias rétrocompat — module déplacé dans :mod:`picarones.measurements.incremental_comparison`.
|
| 2 |
-
|
| 3 |
-
Le contenu vit désormais dans son cercle d'origine. Cet alias permet
|
| 4 |
-
aux imports historiques (y compris les noms privés ``_*``) de
|
| 5 |
-
continuer à fonctionner sans modification.
|
| 6 |
-
|
| 7 |
-
Voir :doc:`docs/architecture-cercles.md` pour la cartographie.
|
| 8 |
-
"""
|
| 9 |
-
|
| 10 |
-
from picarones.measurements.incremental_comparison import * # noqa: F401, F403
|
| 11 |
-
|
| 12 |
-
# Réexport explicite de TOUS les noms (privés inclus) pour la
|
| 13 |
-
# rétrocompatibilité des tests Sprints qui importent ``_helper``,
|
| 14 |
-
# ``_compute_X``, ``_SCIPY_AVAILABLE``, etc. Sans cette boucle, ``import *``
|
| 15 |
-
# ne propage que les noms publics et casse les imports historiques.
|
| 16 |
-
import picarones.measurements.incremental_comparison as _shim_module
|
| 17 |
-
for _shim_name in dir(_shim_module):
|
| 18 |
-
if _shim_name == "__builtins__":
|
| 19 |
-
continue
|
| 20 |
-
if _shim_name not in globals():
|
| 21 |
-
globals()[_shim_name] = getattr(_shim_module, _shim_name)
|
| 22 |
-
del _shim_module, _shim_name
|
| 23 |
-
|
| 24 |
-
__all__ = [
|
| 25 |
-
_n for _n in dir() if not _n.startswith("__")
|
| 26 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1,26 +0,0 @@
|
|
| 1 |
-
"""Alias rétrocompat — module déplacé dans :mod:`picarones.measurements.inter_engine`.
|
| 2 |
-
|
| 3 |
-
Le contenu vit désormais dans son cercle d'origine. Cet alias permet
|
| 4 |
-
aux imports historiques (y compris les noms privés ``_*``) de
|
| 5 |
-
continuer à fonctionner sans modification.
|
| 6 |
-
|
| 7 |
-
Voir :doc:`docs/architecture-cercles.md` pour la cartographie.
|
| 8 |
-
"""
|
| 9 |
-
|
| 10 |
-
from picarones.measurements.inter_engine import * # noqa: F401, F403
|
| 11 |
-
|
| 12 |
-
# Réexport explicite de TOUS les noms (privés inclus) pour la
|
| 13 |
-
# rétrocompatibilité des tests Sprints qui importent ``_helper``,
|
| 14 |
-
# ``_compute_X``, ``_SCIPY_AVAILABLE``, etc. Sans cette boucle, ``import *``
|
| 15 |
-
# ne propage que les noms publics et casse les imports historiques.
|
| 16 |
-
import picarones.measurements.inter_engine as _shim_module
|
| 17 |
-
for _shim_name in dir(_shim_module):
|
| 18 |
-
if _shim_name == "__builtins__":
|
| 19 |
-
continue
|
| 20 |
-
if _shim_name not in globals():
|
| 21 |
-
globals()[_shim_name] = getattr(_shim_module, _shim_name)
|
| 22 |
-
del _shim_module, _shim_name
|
| 23 |
-
|
| 24 |
-
__all__ = [
|
| 25 |
-
_n for _n in dir() if not _n.startswith("__")
|
| 26 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1,26 +0,0 @@
|
|
| 1 |
-
"""Alias rétrocompat — module déplacé dans :mod:`picarones.measurements.layout`.
|
| 2 |
-
|
| 3 |
-
Le contenu vit désormais dans son cercle d'origine. Cet alias permet
|
| 4 |
-
aux imports historiques (y compris les noms privés ``_*``) de
|
| 5 |
-
continuer à fonctionner sans modification.
|
| 6 |
-
|
| 7 |
-
Voir :doc:`docs/architecture-cercles.md` pour la cartographie.
|
| 8 |
-
"""
|
| 9 |
-
|
| 10 |
-
from picarones.measurements.layout import * # noqa: F401, F403
|
| 11 |
-
|
| 12 |
-
# Réexport explicite de TOUS les noms (privés inclus) pour la
|
| 13 |
-
# rétrocompatibilité des tests Sprints qui importent ``_helper``,
|
| 14 |
-
# ``_compute_X``, ``_SCIPY_AVAILABLE``, etc. Sans cette boucle, ``import *``
|
| 15 |
-
# ne propage que les noms publics et casse les imports historiques.
|
| 16 |
-
import picarones.measurements.layout as _shim_module
|
| 17 |
-
for _shim_name in dir(_shim_module):
|
| 18 |
-
if _shim_name == "__builtins__":
|
| 19 |
-
continue
|
| 20 |
-
if _shim_name not in globals():
|
| 21 |
-
globals()[_shim_name] = getattr(_shim_module, _shim_name)
|
| 22 |
-
del _shim_module, _shim_name
|
| 23 |
-
|
| 24 |
-
__all__ = [
|
| 25 |
-
_n for _n in dir() if not _n.startswith("__")
|
| 26 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1,26 +0,0 @@
|
|
| 1 |
-
"""Alias rétrocompat — module déplacé dans :mod:`picarones.measurements.levers`.
|
| 2 |
-
|
| 3 |
-
Le contenu vit désormais dans son cercle d'origine. Cet alias permet
|
| 4 |
-
aux imports historiques (y compris les noms privés ``_*``) de
|
| 5 |
-
continuer à fonctionner sans modification.
|
| 6 |
-
|
| 7 |
-
Voir :doc:`docs/architecture-cercles.md` pour la cartographie.
|
| 8 |
-
"""
|
| 9 |
-
|
| 10 |
-
from picarones.measurements.levers import * # noqa: F401, F403
|
| 11 |
-
|
| 12 |
-
# Réexport explicite de TOUS les noms (privés inclus) pour la
|
| 13 |
-
# rétrocompatibilité des tests Sprints qui importent ``_helper``,
|
| 14 |
-
# ``_compute_X``, ``_SCIPY_AVAILABLE``, etc. Sans cette boucle, ``import *``
|
| 15 |
-
# ne propage que les noms publics et casse les imports historiques.
|
| 16 |
-
import picarones.measurements.levers as _shim_module
|
| 17 |
-
for _shim_name in dir(_shim_module):
|
| 18 |
-
if _shim_name == "__builtins__":
|
| 19 |
-
continue
|
| 20 |
-
if _shim_name not in globals():
|
| 21 |
-
globals()[_shim_name] = getattr(_shim_module, _shim_name)
|
| 22 |
-
del _shim_module, _shim_name
|
| 23 |
-
|
| 24 |
-
__all__ = [
|
| 25 |
-
_n for _n in dir() if not _n.startswith("__")
|
| 26 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1,26 +0,0 @@
|
|
| 1 |
-
"""Alias rétrocompat — module déplacé dans :mod:`picarones.extras.historical.lexical_modernization`.
|
| 2 |
-
|
| 3 |
-
Le contenu vit désormais dans son cercle d'origine. Cet alias permet
|
| 4 |
-
aux imports historiques (y compris les noms privés ``_*``) de
|
| 5 |
-
continuer à fonctionner sans modification.
|
| 6 |
-
|
| 7 |
-
Voir :doc:`docs/architecture-cercles.md` pour la cartographie.
|
| 8 |
-
"""
|
| 9 |
-
|
| 10 |
-
from picarones.extras.historical.lexical_modernization import * # noqa: F401, F403
|
| 11 |
-
|
| 12 |
-
# Réexport explicite de TOUS les noms (privés inclus) pour la
|
| 13 |
-
# rétrocompatibilité des tests Sprints qui importent ``_helper``,
|
| 14 |
-
# ``_compute_X``, ``_SCIPY_AVAILABLE``, etc. Sans cette boucle, ``import *``
|
| 15 |
-
# ne propage que les noms publics et casse les imports historiques.
|
| 16 |
-
import picarones.extras.historical.lexical_modernization as _shim_module
|
| 17 |
-
for _shim_name in dir(_shim_module):
|
| 18 |
-
if _shim_name == "__builtins__":
|
| 19 |
-
continue
|
| 20 |
-
if _shim_name not in globals():
|
| 21 |
-
globals()[_shim_name] = getattr(_shim_module, _shim_name)
|
| 22 |
-
del _shim_module, _shim_name
|
| 23 |
-
|
| 24 |
-
__all__ = [
|
| 25 |
-
_n for _n in dir() if not _n.startswith("__")
|
| 26 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1,26 +0,0 @@
|
|
| 1 |
-
"""Alias rétrocompat — module déplacé dans :mod:`picarones.measurements.line_metrics`.
|
| 2 |
-
|
| 3 |
-
Le contenu vit désormais dans son cercle d'origine. Cet alias permet
|
| 4 |
-
aux imports historiques (y compris les noms privés ``_*``) de
|
| 5 |
-
continuer à fonctionner sans modification.
|
| 6 |
-
|
| 7 |
-
Voir :doc:`docs/architecture-cercles.md` pour la cartographie.
|
| 8 |
-
"""
|
| 9 |
-
|
| 10 |
-
from picarones.measurements.line_metrics import * # noqa: F401, F403
|
| 11 |
-
|
| 12 |
-
# Réexport explicite de TOUS les noms (privés inclus) pour la
|
| 13 |
-
# rétrocompatibilité des tests Sprints qui importent ``_helper``,
|
| 14 |
-
# ``_compute_X``, ``_SCIPY_AVAILABLE``, etc. Sans cette boucle, ``import *``
|
| 15 |
-
# ne propage que les noms publics et casse les imports historiques.
|
| 16 |
-
import picarones.measurements.line_metrics as _shim_module
|
| 17 |
-
for _shim_name in dir(_shim_module):
|
| 18 |
-
if _shim_name == "__builtins__":
|
| 19 |
-
continue
|
| 20 |
-
if _shim_name not in globals():
|
| 21 |
-
globals()[_shim_name] = getattr(_shim_module, _shim_name)
|
| 22 |
-
del _shim_module, _shim_name
|
| 23 |
-
|
| 24 |
-
__all__ = [
|
| 25 |
-
_n for _n in dir() if not _n.startswith("__")
|
| 26 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1,26 +0,0 @@
|
|
| 1 |
-
"""Alias rétrocompat — module déplacé dans :mod:`picarones.measurements.longitudinal`.
|
| 2 |
-
|
| 3 |
-
Le contenu vit désormais dans son cercle d'origine. Cet alias permet
|
| 4 |
-
aux imports historiques (y compris les noms privés ``_*``) de
|
| 5 |
-
continuer à fonctionner sans modification.
|
| 6 |
-
|
| 7 |
-
Voir :doc:`docs/architecture-cercles.md` pour la cartographie.
|
| 8 |
-
"""
|
| 9 |
-
|
| 10 |
-
from picarones.measurements.longitudinal import * # noqa: F401, F403
|
| 11 |
-
|
| 12 |
-
# Réexport explicite de TOUS les noms (privés inclus) pour la
|
| 13 |
-
# rétrocompatibilité des tests Sprints qui importent ``_helper``,
|
| 14 |
-
# ``_compute_X``, ``_SCIPY_AVAILABLE``, etc. Sans cette boucle, ``import *``
|
| 15 |
-
# ne propage que les noms publics et casse les imports historiques.
|
| 16 |
-
import picarones.measurements.longitudinal as _shim_module
|
| 17 |
-
for _shim_name in dir(_shim_module):
|
| 18 |
-
if _shim_name == "__builtins__":
|
| 19 |
-
continue
|
| 20 |
-
if _shim_name not in globals():
|
| 21 |
-
globals()[_shim_name] = getattr(_shim_module, _shim_name)
|
| 22 |
-
del _shim_module, _shim_name
|
| 23 |
-
|
| 24 |
-
__all__ = [
|
| 25 |
-
_n for _n in dir() if not _n.startswith("__")
|
| 26 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1,26 +0,0 @@
|
|
| 1 |
-
"""Alias rétrocompat — module déplacé dans :mod:`picarones.measurements.marginal_cost`.
|
| 2 |
-
|
| 3 |
-
Le contenu vit désormais dans son cercle d'origine. Cet alias permet
|
| 4 |
-
aux imports historiques (y compris les noms privés ``_*``) de
|
| 5 |
-
continuer à fonctionner sans modification.
|
| 6 |
-
|
| 7 |
-
Voir :doc:`docs/architecture-cercles.md` pour la cartographie.
|
| 8 |
-
"""
|
| 9 |
-
|
| 10 |
-
from picarones.measurements.marginal_cost import * # noqa: F401, F403
|
| 11 |
-
|
| 12 |
-
# Réexport explicite de TOUS les noms (privés inclus) pour la
|
| 13 |
-
# rétrocompatibilité des tests Sprints qui importent ``_helper``,
|
| 14 |
-
# ``_compute_X``, ``_SCIPY_AVAILABLE``, etc. Sans cette boucle, ``import *``
|
| 15 |
-
# ne propage que les noms publics et casse les imports historiques.
|
| 16 |
-
import picarones.measurements.marginal_cost as _shim_module
|
| 17 |
-
for _shim_name in dir(_shim_module):
|
| 18 |
-
if _shim_name == "__builtins__":
|
| 19 |
-
continue
|
| 20 |
-
if _shim_name not in globals():
|
| 21 |
-
globals()[_shim_name] = getattr(_shim_module, _shim_name)
|
| 22 |
-
del _shim_module, _shim_name
|
| 23 |
-
|
| 24 |
-
__all__ = [
|
| 25 |
-
_n for _n in dir() if not _n.startswith("__")
|
| 26 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -4,9 +4,9 @@ Chantier 2 du plan d'évolution post-Sprint 97.
|
|
| 4 |
|
| 5 |
Pourquoi ce module
|
| 6 |
------------------
|
| 7 |
-
Avant ce chantier, ``picarones.
|
| 8 |
contenait **11 imports tardifs codés en dur** vers
|
| 9 |
-
``picarones.
|
| 10 |
``image_quality``, ``line_metrics``, ``hallucination``,
|
| 11 |
``philological_runner``, ``searchability_runner``,
|
| 12 |
``numerical_sequences_runner``, ``readability_runner`` — chacun enrobé
|
|
|
|
| 4 |
|
| 5 |
Pourquoi ce module
|
| 6 |
------------------
|
| 7 |
+
Avant ce chantier, ``picarones.measurements.runner._compute_document_result``
|
| 8 |
contenait **11 imports tardifs codés en dur** vers
|
| 9 |
+
``picarones.measurements.confusion``, ``char_scores``, ``taxonomy``, ``structure``,
|
| 10 |
``image_quality``, ``line_metrics``, ``hallucination``,
|
| 11 |
``philological_runner``, ``searchability_runner``,
|
| 12 |
``numerical_sequences_runner``, ``readability_runner`` — chacun enrobé
|
|
@@ -1,26 +0,0 @@
|
|
| 1 |
-
"""Alias rétrocompat — module déplacé dans :mod:`picarones.extras.historical.modern_archives`.
|
| 2 |
-
|
| 3 |
-
Le contenu vit désormais dans son cercle d'origine. Cet alias permet
|
| 4 |
-
aux imports historiques (y compris les noms privés ``_*``) de
|
| 5 |
-
continuer à fonctionner sans modification.
|
| 6 |
-
|
| 7 |
-
Voir :doc:`docs/architecture-cercles.md` pour la cartographie.
|
| 8 |
-
"""
|
| 9 |
-
|
| 10 |
-
from picarones.extras.historical.modern_archives import * # noqa: F401, F403
|
| 11 |
-
|
| 12 |
-
# Réexport explicite de TOUS les noms (privés inclus) pour la
|
| 13 |
-
# rétrocompatibilité des tests Sprints qui importent ``_helper``,
|
| 14 |
-
# ``_compute_X``, ``_SCIPY_AVAILABLE``, etc. Sans cette boucle, ``import *``
|
| 15 |
-
# ne propage que les noms publics et casse les imports historiques.
|
| 16 |
-
import picarones.extras.historical.modern_archives as _shim_module
|
| 17 |
-
for _shim_name in dir(_shim_module):
|
| 18 |
-
if _shim_name == "__builtins__":
|
| 19 |
-
continue
|
| 20 |
-
if _shim_name not in globals():
|
| 21 |
-
globals()[_shim_name] = getattr(_shim_module, _shim_name)
|
| 22 |
-
del _shim_module, _shim_name
|
| 23 |
-
|
| 24 |
-
__all__ = [
|
| 25 |
-
_n for _n in dir() if not _n.startswith("__")
|
| 26 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1,26 +0,0 @@
|
|
| 1 |
-
"""Alias rétrocompat — module déplacé dans :mod:`picarones.extras.governance.module_policy`.
|
| 2 |
-
|
| 3 |
-
Le contenu vit désormais dans son cercle d'origine. Cet alias permet
|
| 4 |
-
aux imports historiques (y compris les noms privés ``_*``) de
|
| 5 |
-
continuer à fonctionner sans modification.
|
| 6 |
-
|
| 7 |
-
Voir :doc:`docs/architecture-cercles.md` pour la cartographie.
|
| 8 |
-
"""
|
| 9 |
-
|
| 10 |
-
from picarones.extras.governance.module_policy import * # noqa: F401, F403
|
| 11 |
-
|
| 12 |
-
# Réexport explicite de TOUS les noms (privés inclus) pour la
|
| 13 |
-
# rétrocompatibilité des tests Sprints qui importent ``_helper``,
|
| 14 |
-
# ``_compute_X``, ``_SCIPY_AVAILABLE``, etc. Sans cette boucle, ``import *``
|
| 15 |
-
# ne propage que les noms publics et casse les imports historiques.
|
| 16 |
-
import picarones.extras.governance.module_policy as _shim_module
|
| 17 |
-
for _shim_name in dir(_shim_module):
|
| 18 |
-
if _shim_name == "__builtins__":
|
| 19 |
-
continue
|
| 20 |
-
if _shim_name not in globals():
|
| 21 |
-
globals()[_shim_name] = getattr(_shim_module, _shim_name)
|
| 22 |
-
del _shim_module, _shim_name
|
| 23 |
-
|
| 24 |
-
__all__ = [
|
| 25 |
-
_n for _n in dir() if not _n.startswith("__")
|
| 26 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1,26 +0,0 @@
|
|
| 1 |
-
"""Alias rétrocompat — module déplacé dans :mod:`picarones.extras.historical.mufi`.
|
| 2 |
-
|
| 3 |
-
Le contenu vit désormais dans son cercle d'origine. Cet alias permet
|
| 4 |
-
aux imports historiques (y compris les noms privés ``_*``) de
|
| 5 |
-
continuer à fonctionner sans modification.
|
| 6 |
-
|
| 7 |
-
Voir :doc:`docs/architecture-cercles.md` pour la cartographie.
|
| 8 |
-
"""
|
| 9 |
-
|
| 10 |
-
from picarones.extras.historical.mufi import * # noqa: F401, F403
|
| 11 |
-
|
| 12 |
-
# Réexport explicite de TOUS les noms (privés inclus) pour la
|
| 13 |
-
# rétrocompatibilité des tests Sprints qui importent ``_helper``,
|
| 14 |
-
# ``_compute_X``, ``_SCIPY_AVAILABLE``, etc. Sans cette boucle, ``import *``
|
| 15 |
-
# ne propage que les noms publics et casse les imports historiques.
|
| 16 |
-
import picarones.extras.historical.mufi as _shim_module
|
| 17 |
-
for _shim_name in dir(_shim_module):
|
| 18 |
-
if _shim_name == "__builtins__":
|
| 19 |
-
continue
|
| 20 |
-
if _shim_name not in globals():
|
| 21 |
-
globals()[_shim_name] = getattr(_shim_module, _shim_name)
|
| 22 |
-
del _shim_module, _shim_name
|
| 23 |
-
|
| 24 |
-
__all__ = [
|
| 25 |
-
_n for _n in dir() if not _n.startswith("__")
|
| 26 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1,24 +0,0 @@
|
|
| 1 |
-
"""Alias rétrocompat — package déplacé dans :mod:`picarones.measurements.narrative`.
|
| 2 |
-
|
| 3 |
-
Phase E du chantier de refonte en 3 cercles. Le moteur narratif
|
| 4 |
-
(Cercle 2) vit désormais dans ``picarones.measurements.narrative``.
|
| 5 |
-
Cet alias maintient la rétrocompat des imports historiques :
|
| 6 |
-
``from picarones.core.narrative import build_synthesis``,
|
| 7 |
-
``from picarones.core.narrative.facts import Fact``, etc.
|
| 8 |
-
"""
|
| 9 |
-
|
| 10 |
-
from picarones.measurements.narrative import * # noqa: F401, F403
|
| 11 |
-
|
| 12 |
-
import picarones.measurements.narrative as _module
|
| 13 |
-
# Réexport explicite des noms privés (préfixe ``_``) que ``import *``
|
| 14 |
-
# ne propage pas — rétrocompat des tests Sprints qui importent
|
| 15 |
-
# directement ``_DEFAULT_REGISTRY`` (test_sprint19_narrative_engine).
|
| 16 |
-
for _shim_name in dir(_module):
|
| 17 |
-
if _shim_name == "__builtins__":
|
| 18 |
-
continue
|
| 19 |
-
if _shim_name not in globals():
|
| 20 |
-
globals()[_shim_name] = getattr(_module, _shim_name)
|
| 21 |
-
del _shim_name
|
| 22 |
-
__all__ = getattr(_module, "__all__", [
|
| 23 |
-
nm for nm in dir(_module) if not nm.startswith("_")
|
| 24 |
-
])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1,26 +0,0 @@
|
|
| 1 |
-
"""Alias rétrocompat — module déplacé dans :mod:`picarones.measurements.narrative.arbiter`.
|
| 2 |
-
|
| 3 |
-
Le contenu vit désormais dans son cercle d'origine. Cet alias permet
|
| 4 |
-
aux imports historiques (y compris les noms privés ``_*``) de
|
| 5 |
-
continuer à fonctionner sans modification.
|
| 6 |
-
|
| 7 |
-
Voir :doc:`docs/architecture-cercles.md` pour la cartographie.
|
| 8 |
-
"""
|
| 9 |
-
|
| 10 |
-
from picarones.measurements.narrative.arbiter import * # noqa: F401, F403
|
| 11 |
-
|
| 12 |
-
# Réexport explicite de TOUS les noms (privés inclus) pour la
|
| 13 |
-
# rétrocompatibilité des tests Sprints qui importent ``_helper``,
|
| 14 |
-
# ``_compute_X``, ``_SCIPY_AVAILABLE``, etc. Sans cette boucle, ``import *``
|
| 15 |
-
# ne propage que les noms publics et casse les imports historiques.
|
| 16 |
-
import picarones.measurements.narrative.arbiter as _shim_module
|
| 17 |
-
for _shim_name in dir(_shim_module):
|
| 18 |
-
if _shim_name == "__builtins__":
|
| 19 |
-
continue
|
| 20 |
-
if _shim_name not in globals():
|
| 21 |
-
globals()[_shim_name] = getattr(_shim_module, _shim_name)
|
| 22 |
-
del _shim_module, _shim_name
|
| 23 |
-
|
| 24 |
-
__all__ = [
|
| 25 |
-
_n for _n in dir() if not _n.startswith("__")
|
| 26 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1,13 +0,0 @@
|
|
| 1 |
-
"""Alias rétrocompat — package déplacé dans :mod:`picarones.measurements.narrative.detectors`.
|
| 2 |
-
|
| 3 |
-
Phase E du chantier de refonte. Les 18 détecteurs en 6 familles
|
| 4 |
-
(ranking, pareto, stratum, quality, history, ensemble) vivent
|
| 5 |
-
désormais dans ``picarones.measurements.narrative.detectors/``.
|
| 6 |
-
"""
|
| 7 |
-
|
| 8 |
-
from picarones.measurements.narrative.detectors import * # noqa: F401, F403
|
| 9 |
-
|
| 10 |
-
import picarones.measurements.narrative.detectors as _module
|
| 11 |
-
__all__ = getattr(_module, "__all__", [
|
| 12 |
-
nm for nm in dir(_module) if not nm.startswith("_")
|
| 13 |
-
])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1,26 +0,0 @@
|
|
| 1 |
-
"""Alias rétrocompat — module déplacé dans :mod:`picarones.measurements.narrative.detectors._helpers`.
|
| 2 |
-
|
| 3 |
-
Le contenu vit désormais dans son cercle d'origine. Cet alias permet
|
| 4 |
-
aux imports historiques (y compris les noms privés ``_*``) de
|
| 5 |
-
continuer à fonctionner sans modification.
|
| 6 |
-
|
| 7 |
-
Voir :doc:`docs/architecture-cercles.md` pour la cartographie.
|
| 8 |
-
"""
|
| 9 |
-
|
| 10 |
-
from picarones.measurements.narrative.detectors._helpers import * # noqa: F401, F403
|
| 11 |
-
|
| 12 |
-
# Réexport explicite de TOUS les noms (privés inclus) pour la
|
| 13 |
-
# rétrocompatibilité des tests Sprints qui importent ``_helper``,
|
| 14 |
-
# ``_compute_X``, ``_SCIPY_AVAILABLE``, etc. Sans cette boucle, ``import *``
|
| 15 |
-
# ne propage que les noms publics et casse les imports historiques.
|
| 16 |
-
import picarones.measurements.narrative.detectors._helpers as _shim_module
|
| 17 |
-
for _shim_name in dir(_shim_module):
|
| 18 |
-
if _shim_name == "__builtins__":
|
| 19 |
-
continue
|
| 20 |
-
if _shim_name not in globals():
|
| 21 |
-
globals()[_shim_name] = getattr(_shim_module, _shim_name)
|
| 22 |
-
del _shim_module, _shim_name
|
| 23 |
-
|
| 24 |
-
__all__ = [
|
| 25 |
-
_n for _n in dir() if not _n.startswith("__")
|
| 26 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1,26 +0,0 @@
|
|
| 1 |
-
"""Alias rétrocompat — module déplacé dans :mod:`picarones.measurements.narrative.detectors.ensemble`.
|
| 2 |
-
|
| 3 |
-
Le contenu vit désormais dans son cercle d'origine. Cet alias permet
|
| 4 |
-
aux imports historiques (y compris les noms privés ``_*``) de
|
| 5 |
-
continuer à fonctionner sans modification.
|
| 6 |
-
|
| 7 |
-
Voir :doc:`docs/architecture-cercles.md` pour la cartographie.
|
| 8 |
-
"""
|
| 9 |
-
|
| 10 |
-
from picarones.measurements.narrative.detectors.ensemble import * # noqa: F401, F403
|
| 11 |
-
|
| 12 |
-
# Réexport explicite de TOUS les noms (privés inclus) pour la
|
| 13 |
-
# rétrocompatibilité des tests Sprints qui importent ``_helper``,
|
| 14 |
-
# ``_compute_X``, ``_SCIPY_AVAILABLE``, etc. Sans cette boucle, ``import *``
|
| 15 |
-
# ne propage que les noms publics et casse les imports historiques.
|
| 16 |
-
import picarones.measurements.narrative.detectors.ensemble as _shim_module
|
| 17 |
-
for _shim_name in dir(_shim_module):
|
| 18 |
-
if _shim_name == "__builtins__":
|
| 19 |
-
continue
|
| 20 |
-
if _shim_name not in globals():
|
| 21 |
-
globals()[_shim_name] = getattr(_shim_module, _shim_name)
|
| 22 |
-
del _shim_module, _shim_name
|
| 23 |
-
|
| 24 |
-
__all__ = [
|
| 25 |
-
_n for _n in dir() if not _n.startswith("__")
|
| 26 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1,26 +0,0 @@
|
|
| 1 |
-
"""Alias rétrocompat — module déplacé dans :mod:`picarones.measurements.narrative.detectors.history`.
|
| 2 |
-
|
| 3 |
-
Le contenu vit désormais dans son cercle d'origine. Cet alias permet
|
| 4 |
-
aux imports historiques (y compris les noms privés ``_*``) de
|
| 5 |
-
continuer à fonctionner sans modification.
|
| 6 |
-
|
| 7 |
-
Voir :doc:`docs/architecture-cercles.md` pour la cartographie.
|
| 8 |
-
"""
|
| 9 |
-
|
| 10 |
-
from picarones.measurements.narrative.detectors.history import * # noqa: F401, F403
|
| 11 |
-
|
| 12 |
-
# Réexport explicite de TOUS les noms (privés inclus) pour la
|
| 13 |
-
# rétrocompatibilité des tests Sprints qui importent ``_helper``,
|
| 14 |
-
# ``_compute_X``, ``_SCIPY_AVAILABLE``, etc. Sans cette boucle, ``import *``
|
| 15 |
-
# ne propage que les noms publics et casse les imports historiques.
|
| 16 |
-
import picarones.measurements.narrative.detectors.history as _shim_module
|
| 17 |
-
for _shim_name in dir(_shim_module):
|
| 18 |
-
if _shim_name == "__builtins__":
|
| 19 |
-
continue
|
| 20 |
-
if _shim_name not in globals():
|
| 21 |
-
globals()[_shim_name] = getattr(_shim_module, _shim_name)
|
| 22 |
-
del _shim_module, _shim_name
|
| 23 |
-
|
| 24 |
-
__all__ = [
|
| 25 |
-
_n for _n in dir() if not _n.startswith("__")
|
| 26 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1,26 +0,0 @@
|
|
| 1 |
-
"""Alias rétrocompat — module déplacé dans :mod:`picarones.measurements.narrative.detectors.pareto`.
|
| 2 |
-
|
| 3 |
-
Le contenu vit désormais dans son cercle d'origine. Cet alias permet
|
| 4 |
-
aux imports historiques (y compris les noms privés ``_*``) de
|
| 5 |
-
continuer à fonctionner sans modification.
|
| 6 |
-
|
| 7 |
-
Voir :doc:`docs/architecture-cercles.md` pour la cartographie.
|
| 8 |
-
"""
|
| 9 |
-
|
| 10 |
-
from picarones.measurements.narrative.detectors.pareto import * # noqa: F401, F403
|
| 11 |
-
|
| 12 |
-
# Réexport explicite de TOUS les noms (privés inclus) pour la
|
| 13 |
-
# rétrocompatibilité des tests Sprints qui importent ``_helper``,
|
| 14 |
-
# ``_compute_X``, ``_SCIPY_AVAILABLE``, etc. Sans cette boucle, ``import *``
|
| 15 |
-
# ne propage que les noms publics et casse les imports historiques.
|
| 16 |
-
import picarones.measurements.narrative.detectors.pareto as _shim_module
|
| 17 |
-
for _shim_name in dir(_shim_module):
|
| 18 |
-
if _shim_name == "__builtins__":
|
| 19 |
-
continue
|
| 20 |
-
if _shim_name not in globals():
|
| 21 |
-
globals()[_shim_name] = getattr(_shim_module, _shim_name)
|
| 22 |
-
del _shim_module, _shim_name
|
| 23 |
-
|
| 24 |
-
__all__ = [
|
| 25 |
-
_n for _n in dir() if not _n.startswith("__")
|
| 26 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1,26 +0,0 @@
|
|
| 1 |
-
"""Alias rétrocompat — module déplacé dans :mod:`picarones.measurements.narrative.detectors.quality`.
|
| 2 |
-
|
| 3 |
-
Le contenu vit désormais dans son cercle d'origine. Cet alias permet
|
| 4 |
-
aux imports historiques (y compris les noms privés ``_*``) de
|
| 5 |
-
continuer à fonctionner sans modification.
|
| 6 |
-
|
| 7 |
-
Voir :doc:`docs/architecture-cercles.md` pour la cartographie.
|
| 8 |
-
"""
|
| 9 |
-
|
| 10 |
-
from picarones.measurements.narrative.detectors.quality import * # noqa: F401, F403
|
| 11 |
-
|
| 12 |
-
# Réexport explicite de TOUS les noms (privés inclus) pour la
|
| 13 |
-
# rétrocompatibilité des tests Sprints qui importent ``_helper``,
|
| 14 |
-
# ``_compute_X``, ``_SCIPY_AVAILABLE``, etc. Sans cette boucle, ``import *``
|
| 15 |
-
# ne propage que les noms publics et casse les imports historiques.
|
| 16 |
-
import picarones.measurements.narrative.detectors.quality as _shim_module
|
| 17 |
-
for _shim_name in dir(_shim_module):
|
| 18 |
-
if _shim_name == "__builtins__":
|
| 19 |
-
continue
|
| 20 |
-
if _shim_name not in globals():
|
| 21 |
-
globals()[_shim_name] = getattr(_shim_module, _shim_name)
|
| 22 |
-
del _shim_module, _shim_name
|
| 23 |
-
|
| 24 |
-
__all__ = [
|
| 25 |
-
_n for _n in dir() if not _n.startswith("__")
|
| 26 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1,26 +0,0 @@
|
|
| 1 |
-
"""Alias rétrocompat — module déplacé dans :mod:`picarones.measurements.narrative.detectors.ranking`.
|
| 2 |
-
|
| 3 |
-
Le contenu vit désormais dans son cercle d'origine. Cet alias permet
|
| 4 |
-
aux imports historiques (y compris les noms privés ``_*``) de
|
| 5 |
-
continuer à fonctionner sans modification.
|
| 6 |
-
|
| 7 |
-
Voir :doc:`docs/architecture-cercles.md` pour la cartographie.
|
| 8 |
-
"""
|
| 9 |
-
|
| 10 |
-
from picarones.measurements.narrative.detectors.ranking import * # noqa: F401, F403
|
| 11 |
-
|
| 12 |
-
# Réexport explicite de TOUS les noms (privés inclus) pour la
|
| 13 |
-
# rétrocompatibilité des tests Sprints qui importent ``_helper``,
|
| 14 |
-
# ``_compute_X``, ``_SCIPY_AVAILABLE``, etc. Sans cette boucle, ``import *``
|
| 15 |
-
# ne propage que les noms publics et casse les imports historiques.
|
| 16 |
-
import picarones.measurements.narrative.detectors.ranking as _shim_module
|
| 17 |
-
for _shim_name in dir(_shim_module):
|
| 18 |
-
if _shim_name == "__builtins__":
|
| 19 |
-
continue
|
| 20 |
-
if _shim_name not in globals():
|
| 21 |
-
globals()[_shim_name] = getattr(_shim_module, _shim_name)
|
| 22 |
-
del _shim_module, _shim_name
|
| 23 |
-
|
| 24 |
-
__all__ = [
|
| 25 |
-
_n for _n in dir() if not _n.startswith("__")
|
| 26 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1,26 +0,0 @@
|
|
| 1 |
-
"""Alias rétrocompat — module déplacé dans :mod:`picarones.measurements.narrative.detectors.stratum`.
|
| 2 |
-
|
| 3 |
-
Le contenu vit désormais dans son cercle d'origine. Cet alias permet
|
| 4 |
-
aux imports historiques (y compris les noms privés ``_*``) de
|
| 5 |
-
continuer à fonctionner sans modification.
|
| 6 |
-
|
| 7 |
-
Voir :doc:`docs/architecture-cercles.md` pour la cartographie.
|
| 8 |
-
"""
|
| 9 |
-
|
| 10 |
-
from picarones.measurements.narrative.detectors.stratum import * # noqa: F401, F403
|
| 11 |
-
|
| 12 |
-
# Réexport explicite de TOUS les noms (privés inclus) pour la
|
| 13 |
-
# rétrocompatibilité des tests Sprints qui importent ``_helper``,
|
| 14 |
-
# ``_compute_X``, ``_SCIPY_AVAILABLE``, etc. Sans cette boucle, ``import *``
|
| 15 |
-
# ne propage que les noms publics et casse les imports historiques.
|
| 16 |
-
import picarones.measurements.narrative.detectors.stratum as _shim_module
|
| 17 |
-
for _shim_name in dir(_shim_module):
|
| 18 |
-
if _shim_name == "__builtins__":
|
| 19 |
-
continue
|
| 20 |
-
if _shim_name not in globals():
|
| 21 |
-
globals()[_shim_name] = getattr(_shim_module, _shim_name)
|
| 22 |
-
del _shim_module, _shim_name
|
| 23 |
-
|
| 24 |
-
__all__ = [
|
| 25 |
-
_n for _n in dir() if not _n.startswith("__")
|
| 26 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1,26 +0,0 @@
|
|
| 1 |
-
"""Alias rétrocompat — module déplacé dans :mod:`picarones.measurements.narrative.facts`.
|
| 2 |
-
|
| 3 |
-
Le contenu vit désormais dans son cercle d'origine. Cet alias permet
|
| 4 |
-
aux imports historiques (y compris les noms privés ``_*``) de
|
| 5 |
-
continuer à fonctionner sans modification.
|
| 6 |
-
|
| 7 |
-
Voir :doc:`docs/architecture-cercles.md` pour la cartographie.
|
| 8 |
-
"""
|
| 9 |
-
|
| 10 |
-
from picarones.measurements.narrative.facts import * # noqa: F401, F403
|
| 11 |
-
|
| 12 |
-
# Réexport explicite de TOUS les noms (privés inclus) pour la
|
| 13 |
-
# rétrocompatibilité des tests Sprints qui importent ``_helper``,
|
| 14 |
-
# ``_compute_X``, ``_SCIPY_AVAILABLE``, etc. Sans cette boucle, ``import *``
|
| 15 |
-
# ne propage que les noms publics et casse les imports historiques.
|
| 16 |
-
import picarones.measurements.narrative.facts as _shim_module
|
| 17 |
-
for _shim_name in dir(_shim_module):
|
| 18 |
-
if _shim_name == "__builtins__":
|
| 19 |
-
continue
|
| 20 |
-
if _shim_name not in globals():
|
| 21 |
-
globals()[_shim_name] = getattr(_shim_module, _shim_name)
|
| 22 |
-
del _shim_module, _shim_name
|
| 23 |
-
|
| 24 |
-
__all__ = [
|
| 25 |
-
_n for _n in dir() if not _n.startswith("__")
|
| 26 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1,26 +0,0 @@
|
|
| 1 |
-
"""Alias rétrocompat — module déplacé dans :mod:`picarones.measurements.narrative.registry`.
|
| 2 |
-
|
| 3 |
-
Le contenu vit désormais dans son cercle d'origine. Cet alias permet
|
| 4 |
-
aux imports historiques (y compris les noms privés ``_*``) de
|
| 5 |
-
continuer à fonctionner sans modification.
|
| 6 |
-
|
| 7 |
-
Voir :doc:`docs/architecture-cercles.md` pour la cartographie.
|
| 8 |
-
"""
|
| 9 |
-
|
| 10 |
-
from picarones.measurements.narrative.registry import * # noqa: F401, F403
|
| 11 |
-
|
| 12 |
-
# Réexport explicite de TOUS les noms (privés inclus) pour la
|
| 13 |
-
# rétrocompatibilité des tests Sprints qui importent ``_helper``,
|
| 14 |
-
# ``_compute_X``, ``_SCIPY_AVAILABLE``, etc. Sans cette boucle, ``import *``
|
| 15 |
-
# ne propage que les noms publics et casse les imports historiques.
|
| 16 |
-
import picarones.measurements.narrative.registry as _shim_module
|
| 17 |
-
for _shim_name in dir(_shim_module):
|
| 18 |
-
if _shim_name == "__builtins__":
|
| 19 |
-
continue
|
| 20 |
-
if _shim_name not in globals():
|
| 21 |
-
globals()[_shim_name] = getattr(_shim_module, _shim_name)
|
| 22 |
-
del _shim_module, _shim_name
|
| 23 |
-
|
| 24 |
-
__all__ = [
|
| 25 |
-
_n for _n in dir() if not _n.startswith("__")
|
| 26 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1,26 +0,0 @@
|
|
| 1 |
-
"""Alias rétrocompat — module déplacé dans :mod:`picarones.measurements.narrative.renderer`.
|
| 2 |
-
|
| 3 |
-
Le contenu vit désormais dans son cercle d'origine. Cet alias permet
|
| 4 |
-
aux imports historiques (y compris les noms privés ``_*``) de
|
| 5 |
-
continuer à fonctionner sans modification.
|
| 6 |
-
|
| 7 |
-
Voir :doc:`docs/architecture-cercles.md` pour la cartographie.
|
| 8 |
-
"""
|
| 9 |
-
|
| 10 |
-
from picarones.measurements.narrative.renderer import * # noqa: F401, F403
|
| 11 |
-
|
| 12 |
-
# Réexport explicite de TOUS les noms (privés inclus) pour la
|
| 13 |
-
# rétrocompatibilité des tests Sprints qui importent ``_helper``,
|
| 14 |
-
# ``_compute_X``, ``_SCIPY_AVAILABLE``, etc. Sans cette boucle, ``import *``
|
| 15 |
-
# ne propage que les noms publics et casse les imports historiques.
|
| 16 |
-
import picarones.measurements.narrative.renderer as _shim_module
|
| 17 |
-
for _shim_name in dir(_shim_module):
|
| 18 |
-
if _shim_name == "__builtins__":
|
| 19 |
-
continue
|
| 20 |
-
if _shim_name not in globals():
|
| 21 |
-
globals()[_shim_name] = getattr(_shim_module, _shim_name)
|
| 22 |
-
del _shim_module, _shim_name
|
| 23 |
-
|
| 24 |
-
__all__ = [
|
| 25 |
-
_n for _n in dir() if not _n.startswith("__")
|
| 26 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1,96 +0,0 @@
|
|
| 1 |
-
# Narrative rendering templates — English.
|
| 2 |
-
# Anti-hallucination rule: never introduce a number or entity name that is not
|
| 3 |
-
# already in the Fact ``payload``. Tests verify traceability of every number
|
| 4 |
-
# appearing in the rendered synthesis.
|
| 5 |
-
|
| 6 |
-
global_leader_cer: >-
|
| 7 |
-
On this corpus of {n_docs} documents, {engine} achieves the lowest mean CER
|
| 8 |
-
({cer_pct} %).
|
| 9 |
-
|
| 10 |
-
statistical_tie: >-
|
| 11 |
-
Engines {engines_list} are not statistically distinguishable
|
| 12 |
-
(Friedman-Nemenyi, α = {alpha}, n = {n_blocks} documents, CD = {critical_distance}).
|
| 13 |
-
|
| 14 |
-
significant_gap: >-
|
| 15 |
-
The gap between {leader} and {runner_up} is statistically significant
|
| 16 |
-
(Wilcoxon, p = {p_value:.4f}, Δ CER = {delta_cer_pct} points over {n_pairs} pairs).
|
| 17 |
-
|
| 18 |
-
stratum_winner: >-
|
| 19 |
-
On stratum "{stratum}" ({n_docs_stratum} documents), {engine} achieves
|
| 20 |
-
the lowest CER ({cer_pct} % vs. {second_cer_pct} % for {second_engine}).
|
| 21 |
-
|
| 22 |
-
stratum_collapse: >-
|
| 23 |
-
{engine} is globally competitive ({global_cer_pct} %) but collapses on
|
| 24 |
-
stratum "{stratum}" ({local_cer_pct} % over {n_docs_stratum} documents,
|
| 25 |
-
i.e. {delta_cer_pct} points above its own average).
|
| 26 |
-
|
| 27 |
-
error_profile_outlier: >-
|
| 28 |
-
{engine} has an atypical error profile: {proportion_pct} % of errors fall
|
| 29 |
-
into class "{error_class}", vs. a median of {median_proportion_pct} % across
|
| 30 |
-
other engines (×{ratio_to_median} the median).
|
| 31 |
-
|
| 32 |
-
llm_hallucination_flag: >-
|
| 33 |
-
Hallucination signal on {engine} ({reasons_list}) —
|
| 34 |
-
{hallucinating_rate_pct} % of documents above alert thresholds.
|
| 35 |
-
|
| 36 |
-
robustness_fragile: >-
|
| 37 |
-
{engine} is fragile under "{degradation}" degradation: its CER rises from
|
| 38 |
-
{cer_baseline_pct} % to {cer_degraded_pct} % at maximum level (×{ratio}).
|
| 39 |
-
|
| 40 |
-
speed_winner: >-
|
| 41 |
-
{engine} is the fastest ({mean_duration} s/doc, ×{speedup} faster than the
|
| 42 |
-
median) for comparable quality (CER {cer_pct} %).
|
| 43 |
-
|
| 44 |
-
confidence_warning: >-
|
| 45 |
-
High statistical uncertainty: the {confidence_level} % confidence interval of
|
| 46 |
-
{engine} spans {ci_width_pct} CER points, compared with a gap of
|
| 47 |
-
{gap_to_runner_up_pct} points to the runner-up.
|
| 48 |
-
|
| 49 |
-
pareto_alternative: >-
|
| 50 |
-
At much lower cost, {engine} offers an interesting trade-off ({cer_pct} %
|
| 51 |
-
CER for {cost} €/{cost_unit_pages} pages, vs {leader_cer_pct} % / {leader_cost} € for
|
| 52 |
-
{leader}, i.e. ×{cost_saving_ratio} cheaper).
|
| 53 |
-
|
| 54 |
-
cost_outlier: >-
|
| 55 |
-
Disproportionate cost for {engine} ({cost} €/{cost_unit_pages} pages, ×{ratio_to_median}
|
| 56 |
-
the median) without a compensating quality advantage (CER {cer_pct} %).
|
| 57 |
-
|
| 58 |
-
ensemble_opportunity: >-
|
| 59 |
-
Engines {pair_a} and {pair_b} have divergent error profiles
|
| 60 |
-
({divergence_metric}={divergence}). On this corpus of {doc_count} documents,
|
| 61 |
-
{best_engine} preserves {best_recall_pct} % of tokens; a majority vote
|
| 62 |
-
among the engines would preserve {oracle_recall_pct} % — i.e.
|
| 63 |
-
{absolute_gap_pct} points recoverable ({relative_gap_pct} % of the best
|
| 64 |
-
engine's errors).
|
| 65 |
-
|
| 66 |
-
median_mean_gap_warning: >-
|
| 67 |
-
Asymmetric distribution for {engine}: median CER {median_cer_pct} %
|
| 68 |
-
vs mean {mean_cer_pct} % across {n_docs} documents (relative gap
|
| 69 |
-
{relative_gap_pct} %). The mean is pulled by a few catastrophic
|
| 70 |
-
documents — the median (now used for default ranking) is more
|
| 71 |
-
representative.
|
| 72 |
-
|
| 73 |
-
stratification_recommended: >-
|
| 74 |
-
Heterogeneous corpus ({n_strata} strata): {leader} performs very
|
| 75 |
-
differently depending on document type — median CER
|
| 76 |
-
{min_stratum_cer_pct} % on "{min_stratum}" vs
|
| 77 |
-
{max_stratum_cer_pct} % on "{max_stratum}", a gap of {gap_pct}
|
| 78 |
-
points. The global ranking hides this disparity; consult the
|
| 79 |
-
stratified view.
|
| 80 |
-
|
| 81 |
-
engine_off_baseline: >-
|
| 82 |
-
{engine} achieved {cer_current_pct} % CER here, vs {cer_historical_mean_pct} %
|
| 83 |
-
on average over the last {n_runs} runs of your institution on this
|
| 84 |
-
same corpus (relative delta {relative_delta_pct} %). This corpus is
|
| 85 |
-
harder for it than usual.
|
| 86 |
-
|
| 87 |
-
engine_unstable: >-
|
| 88 |
-
Over {n_runs} successive runs, {engine} produces variable outputs
|
| 89 |
-
(CER CV {cer_cv_pct} %, identical-run pair rate {identical_run_rate_pct} %).
|
| 90 |
-
Reproducibility is limited — interpret the average CER with caution.
|
| 91 |
-
|
| 92 |
-
regression_in_history: >-
|
| 93 |
-
Over the {n_runs} historical runs for {engine}, the average CER
|
| 94 |
-
moved from {first_cer_pct} % to {last_cer_pct} %
|
| 95 |
-
(cumulative change {absolute_delta_pct} points). Investigate what
|
| 96 |
-
changed in the pipeline or the models.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1,101 +0,0 @@
|
|
| 1 |
-
# Templates de rendu narratif — français.
|
| 2 |
-
#
|
| 3 |
-
# Chaque clé correspond à une valeur de ``FactType``. La valeur est un template
|
| 4 |
-
# Python ``.format()`` qui consomme les champs du ``Fact.payload``.
|
| 5 |
-
#
|
| 6 |
-
# Règle anti-hallucination : n'introduire aucune valeur numérique ou nom
|
| 7 |
-
# d'entité qui ne soit pas dans le ``payload``. Les tests parsent la synthèse
|
| 8 |
-
# rendue et vérifient la traçabilité.
|
| 9 |
-
|
| 10 |
-
global_leader_cer: >-
|
| 11 |
-
Sur ce corpus de {n_docs} documents, {engine} obtient le CER moyen le plus
|
| 12 |
-
bas ({cer_pct} %).
|
| 13 |
-
|
| 14 |
-
statistical_tie: >-
|
| 15 |
-
Les moteurs {engines_list} ne sont pas statistiquement distinguables
|
| 16 |
-
(Friedman-Nemenyi, α = {alpha}, n = {n_blocks} documents, CD = {critical_distance}).
|
| 17 |
-
|
| 18 |
-
significant_gap: >-
|
| 19 |
-
L'écart entre {leader} et {runner_up} est statistiquement significatif
|
| 20 |
-
(Wilcoxon, p = {p_value:.4f}, Δ CER = {delta_cer_pct} points sur {n_pairs} paires).
|
| 21 |
-
|
| 22 |
-
stratum_winner: >-
|
| 23 |
-
Sur la strate « {stratum} » ({n_docs_stratum} documents), {engine}
|
| 24 |
-
obtient le CER le plus bas ({cer_pct} % contre {second_cer_pct} %
|
| 25 |
-
pour {second_engine}).
|
| 26 |
-
|
| 27 |
-
stratum_collapse: >-
|
| 28 |
-
{engine} est globalement compétitif ({global_cer_pct} %) mais s'effondre sur
|
| 29 |
-
la strate « {stratum} » ({local_cer_pct} % sur {n_docs_stratum} documents,
|
| 30 |
-
soit {delta_cer_pct} points au-dessus de sa moyenne).
|
| 31 |
-
|
| 32 |
-
error_profile_outlier: >-
|
| 33 |
-
Le profil d'erreurs de {engine} est atypique : {proportion_pct} % de la
|
| 34 |
-
classe « {error_class} », contre une médiane de {median_proportion_pct} %
|
| 35 |
-
sur les autres moteurs (ratio ×{ratio_to_median}).
|
| 36 |
-
|
| 37 |
-
llm_hallucination_flag: >-
|
| 38 |
-
Signal d'hallucination sur {engine} ({reasons_list}) —
|
| 39 |
-
{hallucinating_rate_pct} % de documents au-dessus des seuils d'alerte.
|
| 40 |
-
|
| 41 |
-
robustness_fragile: >-
|
| 42 |
-
{engine} est fragile à la dégradation « {degradation} » : son CER passe de
|
| 43 |
-
{cer_baseline_pct} % à {cer_degraded_pct} % au niveau maximal (ratio ×{ratio}).
|
| 44 |
-
|
| 45 |
-
speed_winner: >-
|
| 46 |
-
{engine} est le plus rapide ({mean_duration} s / doc, ×{speedup} plus vite
|
| 47 |
-
que la médiane) pour un CER comparable ({cer_pct} %).
|
| 48 |
-
|
| 49 |
-
confidence_warning: >-
|
| 50 |
-
Incertitude statistique élevée : l'intervalle de confiance à {confidence_level} %
|
| 51 |
-
de {engine} s'étend sur {ci_width_pct} points de CER, à comparer à l'écart de
|
| 52 |
-
{gap_to_runner_up_pct} points avec le second.
|
| 53 |
-
|
| 54 |
-
pareto_alternative: >-
|
| 55 |
-
À coût sensiblement inférieur, {engine} offre un compromis intéressant
|
| 56 |
-
({cer_pct} % de CER pour {cost} €/{cost_unit_pages} pages, contre {leader_cer_pct} % /
|
| 57 |
-
{leader_cost} € pour {leader}, soit ×{cost_saving_ratio} moins cher).
|
| 58 |
-
|
| 59 |
-
cost_outlier: >-
|
| 60 |
-
Coût disproportionné pour {engine} ({cost} €/{cost_unit_pages} pages, ×{ratio_to_median}
|
| 61 |
-
la médiane) sans avantage de qualité compensatoire (CER {cer_pct} %).
|
| 62 |
-
|
| 63 |
-
ensemble_opportunity: >-
|
| 64 |
-
Les moteurs {pair_a} et {pair_b} ont des profils d'erreurs divergents
|
| 65 |
-
({divergence_metric}={divergence}). Sur ce corpus de {doc_count} documents,
|
| 66 |
-
{best_engine} préserve {best_recall_pct} % des tokens ; un voting majoritaire
|
| 67 |
-
entre les moteurs en préserverait {oracle_recall_pct} %, soit
|
| 68 |
-
{absolute_gap_pct} points récupérables ({relative_gap_pct} % des erreurs
|
| 69 |
-
du meilleur moteur).
|
| 70 |
-
|
| 71 |
-
median_mean_gap_warning: >-
|
| 72 |
-
Distribution asymétrique pour {engine} : médiane CER {median_cer_pct} %
|
| 73 |
-
vs moyenne {mean_cer_pct} % sur {n_docs} documents (écart relatif
|
| 74 |
-
{relative_gap_pct} %). La moyenne est tirée par quelques documents
|
| 75 |
-
catastrophiques — la médiane (utilisée pour le tri par défaut) est
|
| 76 |
-
plus représentative.
|
| 77 |
-
|
| 78 |
-
stratification_recommended: >-
|
| 79 |
-
Corpus hétérogène ({n_strata} strates) : {leader} performe très
|
| 80 |
-
différemment selon le type de document — médiane CER
|
| 81 |
-
{min_stratum_cer_pct} % sur « {min_stratum} » contre
|
| 82 |
-
{max_stratum_cer_pct} % sur « {max_stratum} », soit {gap_pct} points
|
| 83 |
-
d'écart. Le classement global masque cette disparité ; consulter la
|
| 84 |
-
vue stratifiée.
|
| 85 |
-
|
| 86 |
-
engine_off_baseline: >-
|
| 87 |
-
{engine} a obtenu {cer_current_pct} % CER ici, vs {cer_historical_mean_pct} %
|
| 88 |
-
en moyenne sur les {n_runs} runs précédents de votre institution sur
|
| 89 |
-
ce même corpus (écart relatif {relative_delta_pct} %). Ce corpus lui
|
| 90 |
-
est plus difficile que d'habitude.
|
| 91 |
-
|
| 92 |
-
engine_unstable: >-
|
| 93 |
-
Sur {n_runs} runs successifs, {engine} produit des sorties variables
|
| 94 |
-
(CV CER {cer_cv_pct} %, paires de runs identiques {identical_run_rate_pct} %).
|
| 95 |
-
La reproductibilité est limitée — interpréter le CER moyen avec prudence.
|
| 96 |
-
|
| 97 |
-
regression_in_history: >-
|
| 98 |
-
Sur les {n_runs} runs historiques pour {engine}, le CER moyen
|
| 99 |
-
est passé de {first_cer_pct} % à {last_cer_pct} %
|
| 100 |
-
(variation cumulée {absolute_delta_pct} points). Vérifier ce qui
|
| 101 |
-
a changé dans le pipeline ou les modèles.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|