Skip to content

Commit e1cd98d

Browse files
committed
Migrate to Pydantic V2
See lightdash#98.
1 parent 1a0a0ee commit e1cd98d

2 files changed

Lines changed: 37 additions & 31 deletions

File tree

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22

33
Recent and upcoming changes to dbt2looker
44

5+
## 0.11.10 (Not released to pypy)
6+
7+
### Fixed
8+
- now supports `pydantic` v2
9+
510
## 0.11.9 (Not released to pypy)
611

712
### Added

dbt2looker/models.py

Lines changed: 32 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,14 @@
44
from typing import Literal
55
except ImportError:
66
from typing_extensions import Literal
7-
from pydantic import BaseModel, Field, PydanticValueError, validator
7+
from pydantic import BaseModel, Field, validator
88

99

1010
# dbt2looker utility types
11-
class UnsupportedDbtAdapterError(PydanticValueError):
12-
code = 'unsupported_dbt_adapter'
13-
msg_template = '{wrong_value} is not a supported dbt adapter'
11+
class UnsupportedDbtAdapterError(ValueError):
12+
def __init__(self, wrong_value: str):
13+
msg = f'{wrong_value} is not a supported dbt adapter'
14+
super().__init__(msg)
1415

1516

1617
class SupportedDbtAdapters(str, Enum):
@@ -87,13 +88,13 @@ class Dbt2LookerMeasure(BaseModel):
8788
type: LookerMeasureType
8889
filters: Optional[List[Dict[str, str]]] = []
8990
description: Optional[str] = ''
90-
sql: Optional[str]
91-
value_format_name: Optional[LookerValueFormatName]
92-
group_label: Optional[str]
93-
view_label: Optional[str]
94-
label: Optional[str]
95-
hidden: Optional[LookerHiddenType]
96-
drill_fields: Optional[List[str]]
91+
sql: Optional[str] = None
92+
value_format_name: Optional[LookerValueFormatName] = None
93+
group_label: Optional[str] = None
94+
view_label: Optional[str] = None
95+
label: Optional[str] = None
96+
hidden: Optional[LookerHiddenType] = None
97+
drill_fields: Optional[List[str]] = None
9798

9899
@validator('filters')
99100
def filters_are_singular_dicts(cls, v: List[Dict[str, str]]):
@@ -106,21 +107,21 @@ def filters_are_singular_dicts(cls, v: List[Dict[str, str]]):
106107

107108
class Dbt2LookerDimension(BaseModel):
108109
enabled: Optional[bool] = True
109-
hidden: Optional[LookerHiddenType]
110-
name: Optional[str]
111-
sql: Optional[str]
110+
hidden: Optional[LookerHiddenType] = None
111+
name: Optional[str] = None
112+
sql: Optional[str] = None
112113
description: Optional[str] = ''
113-
value_format_name: Optional[LookerValueFormatName]
114-
group_label: Optional[str]
115-
view_label: Optional[str]
116-
label: Optional[str]
114+
value_format_name: Optional[LookerValueFormatName] = None
115+
group_label: Optional[str] = None
116+
view_label: Optional[str] = None
117+
label: Optional[str] = None
117118
# similar to data_type, will become type for looker dimensions defined
118119
# at the model level
119-
type: Optional[str]
120-
convert_tz: Optional[LookerConvertTimezoneType]
121-
timeframes: Optional[List[str]]
122-
suggestions: Optional[List[str]]
123-
required_access_grants: Optional[List[str]]
120+
type: Optional[str] = None
121+
convert_tz: Optional[LookerConvertTimezoneType] = None
122+
timeframes: Optional[List[str]] = None
123+
suggestions: Optional[List[str]] = None
124+
required_access_grants: Optional[List[str]] = None
124125

125126

126127
class Dbt2LookerMeta(BaseModel):
@@ -154,7 +155,7 @@ class DbtModelColumnMeta(Dbt2LookerMeta):
154155
class DbtModelColumn(BaseModel):
155156
name: str
156157
description: Optional[str] = ''
157-
data_type: Optional[str]
158+
data_type: Optional[str] = None
158159
meta: DbtModelColumnMeta
159160

160161

@@ -167,16 +168,16 @@ class Dbt2LookerExploreJoin(BaseModel):
167168
join: str
168169
type: Optional[LookerJoinType] = LookerJoinType.left_outer
169170
relationship: Optional[LookerJoinRelationship] = LookerJoinRelationship.many_to_one
170-
sql_on: Optional[str]
171-
foreign_key: Optional[str]
172-
view_label: Optional[str]
171+
sql_on: Optional[str] = None
172+
foreign_key: Optional[str] = None
173+
view_label: Optional[str] = None
173174

174175

175176
class Dbt2LookerModelMeta(BaseModel):
176177
joins: Optional[List[Dbt2LookerExploreJoin]] = []
177-
view_name: Optional[str]
178-
label: Optional[str]
179-
view_label: Optional[str]
178+
view_name: Optional[str] = None
179+
label: Optional[str] = None
180+
view_label: Optional[str] = None
180181
dimensions: Optional[List[Dbt2LookerDimension]] = []
181182

182183

@@ -194,7 +195,7 @@ class DbtModel(DbtNode):
194195
description: Optional[str] = ''
195196
columns: Dict[str, DbtModelColumn]
196197
tags: List[str]
197-
config: Optional[DbtModelConfig]
198+
config: Optional[DbtModelConfig] = None
198199

199200
@validator('columns')
200201
def case_insensitive_column_names(cls, v: Dict[str, DbtModelColumn]):

0 commit comments

Comments
 (0)