Source code for aeat.domain.calculations.registry._validate_label_artifacts
"""Advisory label-artifact diagnostics for registry casillas.Scans casilla labels across every :class:`ModeloDefinition` to surfaceunresolved format-string placeholders left by the extraction pipeline."""from__future__importannotationsimportrefromcollections.abcimportIterablefromdataclassesimportdataclassfrom._idsimportCasillaIdfrom._schemaimportModeloDefinition_UNRESOLVED_FORMAT_PLACEHOLDER=re.compile(r"\{[A-Za-z0-9_]+\}")__all__=("LabelArtifactFinding","collect_label_artifact_findings","validate_no_label_artifacts",)
[docs]@dataclass(frozen=True,slots=True)classLabelArtifactFinding:"""One suspicious extraction artifact in a casilla label."""modelo_id:strrevision_id:strcasilla_id:CasillaIdartifact:strplaceholder_token:strlabel:str
[docs]defcollect_label_artifact_findings(modelos:Iterable[ModeloDefinition])->tuple[LabelArtifactFinding,...]:"""Return :class:`LabelArtifactFinding` items for obvious unresolved label extraction artifacts. Args: modelos: Iterable of :class:`ModeloDefinition` instances whose casilla labels are inspected. """findings:list[LabelArtifactFinding]=[]formodeloinmodelos:forrevisioninmodelo.revisions.values():forcasillainrevision.casillas:formatchin_UNRESOLVED_FORMAT_PLACEHOLDER.finditer(casilla.label):findings.append(LabelArtifactFinding(modelo_id=modelo.id,revision_id=revision.id,casilla_id=casilla.id,artifact="unresolved_format_placeholder",placeholder_token=match.group(0),label=casilla.label,),)returntuple(findings)
[docs]defvalidate_no_label_artifacts(modelos:Iterable[ModeloDefinition])->tuple[str,...]:"""Return failures for unresolved casilla label formatting placeholders. Args: modelos: Iterable of :class:`ModeloDefinition` entries to scan. """returntuple(f"modelo {finding.modelo_id} revision {finding.revision_id} casilla {finding.casilla_id}: "f"label contains unresolved {finding.artifact}{finding.placeholder_token!r}: {finding.label!r}"forfindingincollect_label_artifact_findings(modelos))