From fef85fb788238c28272e9794d369ee7599b1ac2c Mon Sep 17 00:00:00 2001 From: Sourabh Chourasia Date: Tue, 7 Apr 2026 01:27:41 +0530 Subject: [PATCH] fix: add `identifier` field to all `Nodes` models in manifest_v12 The backend's `extraction_helpers.py` accesses `node.identifier` on Nodes objects, but only Sources models had this field. When `node.alias` is falsy, the fallback to `node.identifier` raises `AttributeError` on Pydantic v2 models, crashing dbt cloud batch ingestion. Adds `identifier: Optional[str] = None` to all 8 Nodes variants (Nodes through Nodes7) in manifest_v12.py. Affected batches (all docusign tenant): - 1401714, 1401603, 1401599, 1396367, 1396366, 1391223 Co-Authored-By: Claude Opus 4.6 --- .../dbt_artifacts_parser/parsers/manifest/manifest_v12.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/vendor/dbt_artifacts_parser/parsers/manifest/manifest_v12.py b/src/vendor/dbt_artifacts_parser/parsers/manifest/manifest_v12.py index cd99319..e6ded95 100644 --- a/src/vendor/dbt_artifacts_parser/parsers/manifest/manifest_v12.py +++ b/src/vendor/dbt_artifacts_parser/parsers/manifest/manifest_v12.py @@ -288,6 +288,7 @@ class Nodes(BaseParserModel): unique_id: str fqn: list[str] alias: str + identifier: Optional[str] = None checksum: Checksum = Field(..., title="FileHash") config: Optional[Config] = Field(None, title="SeedConfig") tags: Optional[list[str]] = None @@ -431,6 +432,7 @@ class Nodes1(BaseParserModel): unique_id: str fqn: list[str] alias: str + identifier: Optional[str] = None checksum: Checksum = Field(..., title="FileHash") config: Optional[Config3] = Field(None, title="NodeConfig") tags: Optional[list[str]] = None @@ -538,6 +540,7 @@ class Nodes2(BaseParserModel): unique_id: str fqn: list[str] alias: str + identifier: Optional[str] = None checksum: Checksum = Field(..., title="FileHash") config: Optional[Config5] = Field(None, title="TestConfig") tags: Optional[list[str]] = None @@ -674,6 +677,7 @@ class Nodes3(BaseParserModel): unique_id: str fqn: list[str] alias: str + identifier: Optional[str] = None checksum: Checksum = Field(..., title="FileHash") config: Optional[Config7] = Field(None, title="NodeConfig") tags: Optional[list[str]] = None @@ -951,6 +955,7 @@ class Nodes4(BaseParserModel): unique_id: str fqn: list[str] alias: str + identifier: Optional[str] = None checksum: Checksum = Field(..., title="FileHash") config: Optional[Config9] = Field(None, title="ModelConfig") tags: Optional[list[str]] = None @@ -1088,6 +1093,7 @@ class Nodes5(BaseParserModel): unique_id: str fqn: list[str] alias: str + identifier: Optional[str] = None checksum: Checksum = Field(..., title="FileHash") config: Optional[Config12] = Field(None, title="NodeConfig") tags: Optional[list[str]] = None @@ -1204,6 +1210,7 @@ class Nodes6(BaseParserModel): unique_id: str fqn: list[str] alias: str + identifier: Optional[str] = None checksum: Checksum = Field(..., title="FileHash") config: Optional[Config14] = Field(None, title="TestConfig") tags: Optional[list[str]] = None @@ -1421,6 +1428,7 @@ class Nodes7(BaseParserModel): unique_id: str fqn: list[str] alias: str + identifier: Optional[str] = None checksum: Checksum = Field(..., title="FileHash") config: Config16 = Field(..., title="SnapshotConfig") tags: Optional[list[str]] = None