Skip to content

Commit cd5cf85

Browse files
committed
refactor: replace CatalogV1 import with custom implementation and update catalog loading logic
1 parent 01e6a25 commit cd5cf85

File tree

5 files changed

+24
-10
lines changed

5 files changed

+24
-10
lines changed

src/datapilot/core/platforms/dbt/factory.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
from dbt_artifacts_parser.parsers.catalog.catalog_v1 import CatalogV1
1+
# Remove the import of CatalogV1 from dbt_artifacts_parser since we use our custom version
22
from dbt_artifacts_parser.parsers.manifest.manifest_v10 import ManifestV10
33
from dbt_artifacts_parser.parsers.manifest.manifest_v11 import ManifestV11
44
from dbt_artifacts_parser.parsers.manifest.manifest_v12 import ManifestV12
55

66
from datapilot.core.platforms.dbt.schemas.manifest import Catalog
7+
from datapilot.core.platforms.dbt.schemas.manifest import CatalogV1
78
from datapilot.core.platforms.dbt.schemas.manifest import Manifest
89
from datapilot.core.platforms.dbt.wrappers.catalog.v1.wrapper import CatalogV1Wrapper
910
from datapilot.core.platforms.dbt.wrappers.manifest.v10.wrapper import ManifestV10Wrapper

src/datapilot/core/platforms/dbt/schemas/manifest.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
from typing import Optional
66
from typing import Union
77

8-
from dbt_artifacts_parser.parsers.catalog.catalog_v1 import CatalogV1
8+
from dbt_artifacts_parser.parsers.catalog.catalog_v1 import CatalogV1 as BaseCatalogV1
9+
from dbt_artifacts_parser.parsers.catalog.catalog_v1 import Metadata as BaseMetadata
910
from dbt_artifacts_parser.parsers.manifest.manifest_v1 import ManifestV1
1011
from dbt_artifacts_parser.parsers.manifest.manifest_v2 import ManifestV2
1112
from dbt_artifacts_parser.parsers.manifest.manifest_v3 import ManifestV3
@@ -43,6 +44,19 @@ class DBTVersion(BaseModel):
4344
ManifestV1,
4445
]
4546

47+
48+
class Metadata(BaseMetadata):
49+
class Config:
50+
extra = "allow" # Allow extra fields in metadata
51+
52+
53+
class CatalogV1(BaseCatalogV1):
54+
metadata: Metadata # Use our custom metadata class
55+
56+
class Config:
57+
extra = "allow" # Allow extra fields
58+
59+
4660
Catalog = CatalogV1
4761

4862

src/datapilot/core/platforms/dbt/utils.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
from typing import Tuple
77
from typing import Union
88

9-
from dbt_artifacts_parser.parser import parse_catalog
109
from dbt_artifacts_parser.parser import parse_manifest
1110

1211
from datapilot.core.platforms.dbt.constants import BASE
@@ -23,6 +22,7 @@
2322
from datapilot.core.platforms.dbt.schemas.manifest import AltimateManifestSourceNode
2423
from datapilot.core.platforms.dbt.schemas.manifest import AltimateManifestTestNode
2524
from datapilot.core.platforms.dbt.schemas.manifest import Catalog
25+
from datapilot.core.platforms.dbt.schemas.manifest import CatalogV1
2626
from datapilot.core.platforms.dbt.schemas.manifest import Manifest
2727
from datapilot.exceptions.exceptions import AltimateFileNotFoundError
2828
from datapilot.exceptions.exceptions import AltimateInvalidJSONError
@@ -83,14 +83,14 @@ def load_catalog(catalog_path: str) -> Catalog:
8383
try:
8484
catalog_dict = load_json(catalog_path)
8585
except FileNotFoundError as e:
86-
raise AltimateFileNotFoundError(f"Manifest file not found: {catalog_path}. Error: {e}") from e
86+
raise AltimateFileNotFoundError(f"Catalog file not found: {catalog_path}. Error: {e}") from e
8787
except ValueError as e:
8888
raise AltimateInvalidJSONError(f"Invalid JSON file: {catalog_path}. Error: {e}") from e
8989

9090
try:
91-
catalog: Catalog = parse_catalog(catalog_dict)
91+
catalog: Catalog = CatalogV1(**catalog_dict)
9292
except ValueError as e:
93-
raise AltimateInvalidManifestError(f"Invalid manifest file: {catalog_path}. Error: {e}") from e
93+
raise AltimateInvalidManifestError(f"Invalid catalog file: {catalog_path}. Error: {e}") from e
9494

9595
return catalog
9696

src/datapilot/core/platforms/dbt/wrappers/catalog/v1/wrapper.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
from dbt_artifacts_parser.parsers.catalog.catalog_v1 import CatalogV1
2-
1+
from datapilot.core.platforms.dbt.schemas.manifest import CatalogV1
32
from datapilot.core.platforms.dbt.wrappers.catalog.wrapper import BaseCatalogWrapper
43

54

src/datapilot/utils/utils.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@
99
from typing import List
1010
from typing import Union
1111

12-
from dbt_artifacts_parser.parser import parse_catalog
1312
from dbt_artifacts_parser.parser import parse_manifest
1413

1514
from datapilot.config.config import load_config
15+
from datapilot.core.platforms.dbt.schemas.manifest import CatalogV1
1616
from datapilot.schemas.nodes import ModelNode
1717
from datapilot.schemas.nodes import SourceNode
1818

@@ -306,7 +306,7 @@ def generate_partial_manifest_catalog(changed_files, base_path: str = "./"):
306306
catalog = fill_catalog(table_columns_map, manifest, catalog, sources, "sources")
307307

308308
selected_models = [node.unique_id for node in nodes + sources]
309-
return selected_models, parse_manifest(manifest), parse_catalog(catalog)
309+
return selected_models, parse_manifest(manifest), CatalogV1(**catalog)
310310
except Exception as e:
311311
raise Exception("Unable to generate partial manifest and catalog") from e
312312

0 commit comments

Comments
 (0)