File size: 3,808 Bytes
2d27757
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c900ebc
 
2d27757
c900ebc
2d27757
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# Codecov configuration β€” Picarones
#
# Cible : release institutionnelle (BnF, LoC, BL).
# - Plancher couverture projet : 85 % (cohΓ©rent avec
#   ``--cov-fail-under=85`` dans la CI).
# - Patch coverage : 80 % (toute PR doit couvrir au moins 80 %
#   des lignes qu'elle ajoute/modifie).
# - Seuil de tolΓ©rance ``threshold`` : 0.5 pt β€” on n'accepte pas
#   une dΓ©gradation > 0.5 pt sans qu'elle soit explicite dans la
#   PR description.
#
# RΓ©fΓ©rence : https://docs.codecov.com/docs/codecov-yaml

codecov:
  require_ci_to_pass: false  # Le report doit remonter mΓͺme si pytest a failed.
  notify:
    after_n_builds: 1  # Premier upload suffit (pas d'attente d'autres OS).

coverage:
  precision: 2
  round: down
  range: "85...95"  # Heatmap : rouge en dessous de 85, vert au-dessus de 95.

  status:
    project:
      default:
        target: 85%
        threshold: 0.5%
        if_ci_failed: error  # CI cassΓ©e β†’ status Codecov en error.
        only_pulls: false
    patch:
      default:
        target: 80%
        threshold: 0.5%
        if_ci_failed: error
        only_pulls: false

# ────────────────────────────────────────────────────────────────────
# Annotations dans les PR.
# ────────────────────────────────────────────────────────────────────
comment:
  layout: "header, diff, flags, components, files"
  behavior: default  # Mise Γ  jour du commentaire existant Γ  chaque push.
  require_changes: true  # Pas de commentaire si la PR ne touche pas la couverture.

# ────────────────────────────────────────────────────────────────────
# Exclusions : modules sans contenu testable ou auto-gΓ©nΓ©rΓ©s.
# ────────────────────────────────────────────────────────────────────
ignore:
  - "tests/"
  - "scripts/"
  - "docs/"
  - "**/__init__.py"  # Re-exports pur ; couverts indirectement.
  - "picarones/_version.py"  # GΓ©rΓ© par setuptools_scm.

# ────────────────────────────────────────────────────────────────────
# Composants logiques (lisibilitΓ© du dashboard Codecov).
# ────────────────────────────────────────────────────────────────────
component_management:
  default_rules:
    statuses:
      - type: project
        target: auto
        threshold: 1%
  individual_components:
    - component_id: domain
      name: Domain (cercle 1)
      paths:
        - picarones/domain/**
    - component_id: formats
      name: Formats
      paths:
        - picarones/formats/**
    - component_id: evaluation
      name: Evaluation
      paths:
        - picarones/evaluation/**
    - component_id: pipeline
      name: Pipeline
      paths:
        - picarones/pipeline/**
    - component_id: adapters
      name: Adapters
      paths:
        - picarones/adapters/**
    - component_id: app
      name: App services
      paths:
        - picarones/app/**
    - component_id: reports
      name: Reports
      paths:
        - picarones/reports/**
    - component_id: interfaces
      name: Interfaces (CLI, web)
      paths:
        - picarones/interfaces/**