Skip to content

Commit d852bb0

Browse files
mdesmetclaude
andcommitted
refactor: replace Pydantic BaseModel with dataclasses
Replace Pydantic BaseModel with Python's native dataclasses across schema files to reduce dependencies and simplify codebase. This includes updating field ordering to comply with dataclass requirements (fields with defaults must come after fields without defaults). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
1 parent 94806ea commit d852bb0

File tree

4 files changed

+94
-59
lines changed

4 files changed

+94
-59
lines changed
Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
1+
from dataclasses import dataclass
12
from enum import Enum
23
from typing import Dict
34

4-
from pydantic import BaseModel
5-
65

76
class Severity(Enum):
87
INFO = "INFO"
98
WARNING = "WARNING"
109
ERROR = "ERROR"
1110

1211

13-
class InsightResult(BaseModel):
12+
@dataclass
13+
class InsightResult:
1414
name: str
1515
type: str
1616
message: str
@@ -19,6 +19,7 @@ class InsightResult(BaseModel):
1919
metadata: Dict
2020

2121

22-
class InsightResponse(BaseModel):
22+
@dataclass
23+
class InsightResponse:
2324
insight: InsightResult
2425
severity: Severity = Severity.ERROR

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

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,61 @@
1+
from dataclasses import dataclass
12
from datetime import datetime
23
from typing import ClassVar
34
from typing import Dict
45
from typing import List
56
from typing import Optional
67
from typing import Union
78

8-
from pydantic.main import BaseModel
9-
109
from vendor.dbt_artifacts_parser.parsers.catalog.catalog_v1 import CatalogV1 as BaseCatalogV1
1110
from vendor.dbt_artifacts_parser.parsers.catalog.catalog_v1 import Metadata as BaseMetadata
1211

1312

14-
class AltimateCatalogMetadata(BaseModel):
13+
@dataclass
14+
class AltimateCatalogMetadata:
1515
dbt_schema_version: Optional[str] = "https://schemas.getdbt.com/dbt/catalog/v1.json"
1616
dbt_version: Optional[str] = "0.19.0"
1717
generated_at: Optional[datetime] = "2021-02-10T04:42:33.680487Z"
1818
invocation_id: Optional[Optional[str]] = None
1919
env: ClassVar[Optional[Dict[str, str]]] = {}
2020

2121

22-
class AltimateCatalogTableMetadata(BaseModel):
22+
@dataclass
23+
class AltimateCatalogTableMetadata:
2324
type: str
24-
database: Optional[Optional[str]] = None
2525
schema_name: str
2626
name: str
27+
database: Optional[Optional[str]] = None
2728
comment: Optional[Optional[str]] = None
2829
owner: Optional[Optional[str]] = None
2930

3031

31-
class AltimateCatalogColumnMetadata(BaseModel):
32+
@dataclass
33+
class AltimateCatalogColumnMetadata:
3234
type: str
33-
comment: Optional[Optional[str]] = None
3435
index: int
3536
name: str
37+
comment: Optional[Optional[str]] = None
3638

3739

38-
class AltimateCatalogStatsItem(BaseModel):
40+
@dataclass
41+
class AltimateCatalogStatsItem:
3942
id: str
4043
label: str
44+
include: bool
4145
value: Optional[Optional[Union[bool, str, float]]] = None
4246
description: Optional[Optional[str]] = None
43-
include: bool
4447

4548

46-
class AltimateCatalogTable(BaseModel):
49+
@dataclass
50+
class AltimateCatalogTable:
4751
metadata: AltimateCatalogTableMetadata
4852
columns: Dict[str, AltimateCatalogColumnMetadata]
4953
stats: Dict[str, AltimateCatalogStatsItem]
5054
unique_id: Optional[Optional[str]] = None
5155

5256

53-
class AltimateCatalogCatalogV1(BaseModel):
57+
@dataclass
58+
class AltimateCatalogCatalogV1:
5459
metadata: AltimateCatalogMetadata
5560
nodes: Dict[str, AltimateCatalogTable]
5661
sources: Dict[str, AltimateCatalogTable]

0 commit comments

Comments
 (0)