Spaces:
Running
fix(sprint-H.7): repair build/CI references to deleted paths
Browse filesSprint H.7 β fix critique des rΓ©fΓ©rences CI/build aux chemins
``picarones/{core,measurements,engines,modules,llm,pipelines,
report,web,cli,extras}/`` et ``interfaces/{cli,web}/_legacy/``
supprimΓ©s aux sprints A-H.
Sans ce fix, la release v2.0 ressemblerait Γ une v2.0 mais :
- les wheels distribuΓ©s ne contiendraient pas les templates Jinja2
ni les CSS/JS (HuggingFace Space dΓ©ployΓ© via wheel cassΓ©).
- le job ``perf_regression.yml`` ne se dΓ©clencherait plus (paths
surveillΓ©s inexistants).
- ``CODEOWNERS`` dΓ©signerait des reviewers sur des dossiers vides.
- le README documenterait un rΓ©pertoire d'adapters disparu.
pyproject.toml
--------------
- ``[tool.setuptools.package-data]`` : remplacement complet de la
liste des globs. Avant H.7 :
```
interfaces/web/_legacy/static/*.css β path supprimΓ©
interfaces/web/_legacy/static/*.js β path supprimΓ©
interfaces/web/_legacy/templates/*.j2 β path supprimΓ©
interfaces/web/_legacy/templates/*.html β path supprimΓ©
report/templates/*.j2 β report/ renommΓ© en reports/
report/templates/*.html β idem
report/templates/*.css β idem
report/templates/*.js β idem
report/i18n/*.json β idem
report/glossary/*.yaml β idem
```
Tous remplacΓ©s par les chemins canoniques (interfaces/web,
reports/html/templates, reports/i18n, reports/glossary,
reports/_helpers/vendor, reports/narrative/templates).
VΓ©rification : les 14 globs du fichier matchent 39 fichiers
rΓ©els (script de validation inline).
- Commentaire ``defusedxml`` :
``picarones.web.corpus_utils`` β ``picarones.interfaces.web.corpus_utils``.
- Commentaire stratΓ©gie mypy : retire la note historique sur le
passage ``picarones.core`` (paquet supprimΓ©).
.github/workflows/perf_regression.yml
-------------------------------------
- ``on.pull_request.paths`` : remplace les paths surveillΓ©s par
les chemins canoniques.
Avant : ``picarones/measurements/runner.py`` +
``picarones/measurements/normalization.py`` +
``picarones/engines/**``.
Après : ``picarones/app/services/benchmark_runner.py`` +
``picarones/app/services/benchmark_service.py`` +
``picarones/formats/text/normalization.py`` +
``picarones/adapters/ocr/**``.
.github/CODEOWNERS
------------------
- RestructurΓ© par couches au lieu de "Cercles" hΓ©ritΓ©s. Avant :
``/picarones/{core,measurements,engines,llm,pipelines,modules,
report,web,cli,extras}/`` (tous supprimés). Après :
``/picarones/{domain,formats,evaluation,pipeline,adapters,app,
reports,interfaces}/`` (les 8 couches actuelles).
- ``/docs/api-stable.md`` β ``/docs/reference/api-stable.md``
(dΓ©placΓ© en S60).
README.md
---------
- Note sur la rΓ©gΓ©nΓ©ration du tableau Engines : ``adding a new
adapter under picarones/adapters/legacy_engines/`` β
``picarones/adapters/ocr/`` (chemin canonique consommΓ© par
``scripts/gen_readme_tables.py``).
Tests
-----
- ``pytest tests/`` : 4126 passed, 9 skipped, 24 deselected.
- Validation des 14 globs ``package-data`` : 39 fichiers matchΓ©s,
0 glob vide.
Reste pour v2.0 (cf. H.8 + H.9)
-------------------------------
- H.8 : nettoyer les ~25 docstrings de production qui mentionnent
encore "shim legacy" (les shims sont supprimΓ©s depuis le Lot D).
- H.9 : archiver ``docs/migration/`` (plans terminΓ©s) et corriger
les ~15 docs qui réfèrent les chemins legacy supprimés.
https://claude.ai/code/session_01NxyVKqg2SowXLZdM4H1ZDE
- .github/CODEOWNERS +18 -16
- .github/workflows/perf_regression.yml +7 -6
- README.md +2 -2
- pyproject.toml +17 -20
|
@@ -7,8 +7,8 @@
|
|
| 7 |
# Politique :
|
| 8 |
# - Tout fichier de l'arbre a au moins un mainteneur dΓ©signΓ© (catch-all
|
| 9 |
# en première ligne).
|
| 10 |
-
# - Les
|
| 11 |
-
# renforcΓ©e car
|
| 12 |
# - Les guides dΓ©veloppeur et la doc institutionnelle ont une revue
|
| 13 |
# ciblΓ©e sur la cohΓ©rence Γ©ditoriale (cf. GOVERNANCE.md).
|
| 14 |
#
|
|
@@ -22,29 +22,31 @@
|
|
| 22 |
* @maribakulj
|
| 23 |
|
| 24 |
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
| 25 |
-
#
|
| 26 |
# Toute modification ici peut casser des consommateurs externes :
|
| 27 |
# revue prioritaire, tests anti-rΓ©gression renforcΓ©s.
|
| 28 |
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
| 29 |
-
/picarones/
|
| 30 |
-
/
|
|
|
|
| 31 |
|
| 32 |
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
| 33 |
-
#
|
| 34 |
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
| 35 |
-
/picarones/
|
| 36 |
-
/picarones/
|
| 37 |
-
/picarones/llm/ @maribakulj
|
| 38 |
-
/picarones/pipelines/ @maribakulj
|
| 39 |
-
/picarones/modules/ @maribakulj
|
| 40 |
|
| 41 |
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
| 42 |
-
#
|
| 43 |
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
| 44 |
-
/picarones/
|
| 45 |
-
/picarones/
|
| 46 |
-
|
| 47 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 48 |
|
| 49 |
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
| 50 |
# Documentation, gouvernance, sΓ©curitΓ©, accessibilitΓ©.
|
|
|
|
| 7 |
# Politique :
|
| 8 |
# - Tout fichier de l'arbre a au moins un mainteneur dΓ©signΓ© (catch-all
|
| 9 |
# en première ligne).
|
| 10 |
+
# - Les couches 1-2 (``domain/``, ``formats/``) ont une revue
|
| 11 |
+
# renforcΓ©e car elles dΓ©finissent les contrats de l'API publique.
|
| 12 |
# - Les guides dΓ©veloppeur et la doc institutionnelle ont une revue
|
| 13 |
# ciblΓ©e sur la cohΓ©rence Γ©ditoriale (cf. GOVERNANCE.md).
|
| 14 |
#
|
|
|
|
| 22 |
* @maribakulj
|
| 23 |
|
| 24 |
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
| 25 |
+
# Couches 1-2 β types purs + parsing (API publique stable).
|
| 26 |
# Toute modification ici peut casser des consommateurs externes :
|
| 27 |
# revue prioritaire, tests anti-rΓ©gression renforcΓ©s.
|
| 28 |
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
| 29 |
+
/picarones/domain/ @maribakulj
|
| 30 |
+
/picarones/formats/ @maribakulj
|
| 31 |
+
/docs/reference/api-stable.md @maribakulj
|
| 32 |
|
| 33 |
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
| 34 |
+
# Couches 3-4 β mΓ©triques et orchestration.
|
| 35 |
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
| 36 |
+
/picarones/evaluation/ @maribakulj
|
| 37 |
+
/picarones/pipeline/ @maribakulj
|
|
|
|
|
|
|
|
|
|
| 38 |
|
| 39 |
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
| 40 |
+
# Couches 5-6 β adapters externes + services applicatifs.
|
| 41 |
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
| 42 |
+
/picarones/adapters/ @maribakulj
|
| 43 |
+
/picarones/app/ @maribakulj
|
| 44 |
+
|
| 45 |
+
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
| 46 |
+
# Couches 7-8 β rapports + interfaces utilisateur (CLI, web).
|
| 47 |
+
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
| 48 |
+
/picarones/reports/ @maribakulj
|
| 49 |
+
/picarones/interfaces/ @maribakulj
|
| 50 |
|
| 51 |
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
| 52 |
# Documentation, gouvernance, sΓ©curitΓ©, accessibilitΓ©.
|
|
@@ -19,12 +19,13 @@ on:
|
|
| 19 |
workflow_dispatch: # DΓ©clenchement manuel
|
| 20 |
pull_request:
|
| 21 |
paths:
|
| 22 |
-
# Une PR qui touche le runner, la normalisation ou
|
| 23 |
-
# dΓ©clenche aussi le check (cas oΓΉ on veut
|
| 24 |
-
# ne dΓ©grade rien).
|
| 25 |
-
- 'picarones/
|
| 26 |
-
- 'picarones/
|
| 27 |
-
- 'picarones/
|
|
|
|
| 28 |
- '.github/workflows/perf_regression.yml'
|
| 29 |
|
| 30 |
permissions:
|
|
|
|
| 19 |
workflow_dispatch: # DΓ©clenchement manuel
|
| 20 |
pull_request:
|
| 21 |
paths:
|
| 22 |
+
# Une PR qui touche le runner de benchmark, la normalisation ou
|
| 23 |
+
# les adapters OCR dΓ©clenche aussi le check (cas oΓΉ on veut
|
| 24 |
+
# prouver qu'un refactor ne dΓ©grade rien).
|
| 25 |
+
- 'picarones/app/services/benchmark_runner.py'
|
| 26 |
+
- 'picarones/app/services/benchmark_service.py'
|
| 27 |
+
- 'picarones/formats/text/normalization.py'
|
| 28 |
+
- 'picarones/adapters/ocr/**'
|
| 29 |
- '.github/workflows/perf_regression.yml'
|
| 30 |
|
| 31 |
permissions:
|
|
@@ -214,8 +214,8 @@ engines): GPT-4o, Claude, Mistral Large, Ollama (local). See
|
|
| 214 |
|
| 215 |
The `Engine` table is regenerated automatically by
|
| 216 |
`scripts/gen_readme_tables.py` β adding a new adapter under
|
| 217 |
-
`picarones/adapters/
|
| 218 |
-
|
| 219 |
|
| 220 |
---
|
| 221 |
|
|
|
|
| 214 |
|
| 215 |
The `Engine` table is regenerated automatically by
|
| 216 |
`scripts/gen_readme_tables.py` β adding a new adapter under
|
| 217 |
+
`picarones/adapters/ocr/` makes the next CI run update this table
|
| 218 |
+
or fail.
|
| 219 |
|
| 220 |
---
|
| 221 |
|
|
@@ -40,8 +40,8 @@ dependencies = [
|
|
| 40 |
"numpy>=1.24.0",
|
| 41 |
"jinja2>=3.1.0",
|
| 42 |
# XML parsing sΓ©curisΓ© contre les attaques XXE / Billion Laughs.
|
| 43 |
-
# UtilisΓ© par ``picarones.web.corpus_utils`` pour le parsing
|
| 44 |
-
# quand un utilisateur uploade un corpus XML.
|
| 45 |
"defusedxml>=0.7.1",
|
| 46 |
]
|
| 47 |
|
|
@@ -144,17 +144,19 @@ include = ["picarones*"]
|
|
| 144 |
[tool.setuptools.package-data]
|
| 145 |
picarones = [
|
| 146 |
"prompts/*.txt",
|
| 147 |
-
"interfaces/web/_legacy/static/*.css",
|
| 148 |
-
"interfaces/web/_legacy/static/*.js",
|
| 149 |
-
"interfaces/web/_legacy/templates/*.j2",
|
| 150 |
-
"interfaces/web/_legacy/templates/*.html",
|
| 151 |
-
"report/templates/*.j2",
|
| 152 |
-
"report/templates/*.html",
|
| 153 |
-
"report/templates/*.css",
|
| 154 |
-
"report/templates/*.js",
|
| 155 |
-
"report/i18n/*.json",
|
| 156 |
"data/*.yaml",
|
| 157 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 158 |
]
|
| 159 |
|
| 160 |
[tool.pytest.ini_options]
|
|
@@ -224,14 +226,9 @@ exclude_lines = [
|
|
| 224 |
# Sprint A1 (M-4) β type-checking gradient.
|
| 225 |
#
|
| 226 |
# StratΓ©gie : ``picarones.domain`` est en mode ``strict`` car c'est la
|
| 227 |
-
# couche 1
|
| 228 |
-
#
|
| 229 |
-
#
|
| 230 |
-
# de strict) β au fur et Γ mesure des sprints suivants, on monte le
|
| 231 |
-
# niveau (Sprint A11 resserre `picarones.measurements`).
|
| 232 |
-
# Note : avant les Lots A-G de la migration legacy β rewrite, ce strict
|
| 233 |
-
# ciblait ``picarones.core`` ; ce paquet a été entièrement supprimé,
|
| 234 |
-
# son contenu est dΓ©sormais dans ``domain/``, ``evaluation/`` et ``formats/``.
|
| 235 |
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
| 236 |
[tool.mypy]
|
| 237 |
python_version = "3.11"
|
|
|
|
| 40 |
"numpy>=1.24.0",
|
| 41 |
"jinja2>=3.1.0",
|
| 42 |
# XML parsing sΓ©curisΓ© contre les attaques XXE / Billion Laughs.
|
| 43 |
+
# UtilisΓ© par ``picarones.interfaces.web.corpus_utils`` pour le parsing
|
| 44 |
+
# ALTO/PAGE quand un utilisateur uploade un corpus XML.
|
| 45 |
"defusedxml>=0.7.1",
|
| 46 |
]
|
| 47 |
|
|
|
|
| 144 |
[tool.setuptools.package-data]
|
| 145 |
picarones = [
|
| 146 |
"prompts/*.txt",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 147 |
"data/*.yaml",
|
| 148 |
+
"interfaces/web/static/*.css",
|
| 149 |
+
"interfaces/web/static/*.js",
|
| 150 |
+
"interfaces/web/templates/*.html",
|
| 151 |
+
"interfaces/web/templates/*.j2",
|
| 152 |
+
"reports/_helpers/vendor/*.js",
|
| 153 |
+
"reports/glossary/*.yaml",
|
| 154 |
+
"reports/html/templates/*.css",
|
| 155 |
+
"reports/html/templates/*.html",
|
| 156 |
+
"reports/html/templates/*.j2",
|
| 157 |
+
"reports/html/templates/*.js",
|
| 158 |
+
"reports/i18n/*.json",
|
| 159 |
+
"reports/narrative/templates/*.yaml",
|
| 160 |
]
|
| 161 |
|
| 162 |
[tool.pytest.ini_options]
|
|
|
|
| 226 |
# Sprint A1 (M-4) β type-checking gradient.
|
| 227 |
#
|
| 228 |
# StratΓ©gie : ``picarones.domain`` est en mode ``strict`` car c'est la
|
| 229 |
+
# couche 1 (types purs, Pydantic + stdlib only) β l'API publique stable
|
| 230 |
+
# et la base de l'architecture concentrique. Les autres couches passent
|
| 231 |
+
# en mode permissif (``ignore_missing_imports`` + pas de strict).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 232 |
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
| 233 |
[tool.mypy]
|
| 234 |
python_version = "3.11"
|