Skip to content

Commit e08616b

Browse files
refactor(pydantic): migrate all remaining 'class Config' to Pydantic v2 model_config
- Migrate ConfigModel, PermissiveConfigModel, and ConnectionModel to use ConfigDict - Convert 16 more class Config instances across 13 files to model_config = ConfigDict(...) - Remove all Pydantic v1 'class Config:' syntax from the codebase - Fixes all Pydantic v2 deprecation warnings related to class-based config Files updated: - common.py: Base ConfigModel, PermissiveConfigModel, ConnectionModel - sql_queries.py: QueryEvent model - datahub_classifier.py: PredictionFactorsAndWeights, InfoTypeConfig - schema_assertion.py: FieldListSchemaContract - datahub_secret_store.py: DataHubSecretStoreConfig - add_dataset_properties.py: AddDatasetPropertiesConfig - superset.py: SupersetConfig - snowflake_usage_v2.py: PermissiveModel - report_server_domain.py: OwnershipData - hex/api.py: HexApiSharing, HexApiProjectApiResource, HexApiProjectsListResponse - dbt_core.py: DBTRunResult - path_spec.py: PathSpec - graph/config.py: DatahubClientConfig - serialized_value.py: SerializedResourceValue
1 parent 3a360ce commit e08616b

File tree

14 files changed

+35
-47
lines changed

14 files changed

+35
-47
lines changed

metadata-ingestion/src/datahub/api/entities/common/serialized_value.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from typing import Dict, Optional, Type, TypeVar, Union
44

55
from avrogen.dict_wrapper import DictWrapper
6-
from pydantic import BaseModel
6+
from pydantic import BaseModel, ConfigDict
77

88
import datahub.metadata.schema_classes as models
99
from datahub.metadata.schema_classes import __SCHEMA_TYPES as SCHEMA_TYPES
@@ -17,8 +17,7 @@
1717

1818

1919
class SerializedResourceValue(BaseModel):
20-
class Config:
21-
arbitrary_types_allowed = True
20+
model_config = ConfigDict(arbitrary_types_allowed=True)
2221

2322
content_type: str
2423
blob: bytes

metadata-ingestion/src/datahub/api/entities/datacontract/schema_assertion.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import json
44
from typing import List, Union
55

6-
from pydantic import Field, RootModel
6+
from pydantic import ConfigDict, Field, RootModel
77
from typing_extensions import Literal
88

99
from datahub.api.entities.datacontract.assertion import BaseAssertion
@@ -36,8 +36,7 @@ def model_post_init(self, __context: object) -> None:
3636

3737

3838
class FieldListSchemaContract(BaseAssertion):
39-
class Config:
40-
arbitrary_types_allowed = True
39+
model_config = ConfigDict(arbitrary_types_allowed=True)
4140

4241
type: Literal["field-list"]
4342

metadata-ingestion/src/datahub/configuration/common.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -155,15 +155,13 @@ class PermissiveConfigModel(ConfigModel):
155155
# but still allow the user to pass in arbitrary fields that we don't care about.
156156
# It is usually used for argument bags that are passed through to third-party libraries.
157157

158-
class Config:
159-
extra = "allow"
158+
model_config = ConfigDict(extra="allow")
160159

161160

162161
class ConnectionModel(BaseModel):
163162
"""Represents the config associated with a connection"""
164163

165-
class Config:
166-
extra = "allow"
164+
model_config = ConfigDict(extra="allow")
167165

168166

169167
class TransformerSemantics(ConfigEnum):

metadata-ingestion/src/datahub/ingestion/glossary/datahub_classifier.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from datahub_classify.helper_classes import ColumnInfo
44
from datahub_classify.infotype_predictor import predict_infotypes
55
from datahub_classify.reference_input import input1 as default_config
6-
from pydantic import field_validator
6+
from pydantic import ConfigDict, field_validator
77
from pydantic.fields import Field
88

99
from datahub.configuration.common import ConfigModel
@@ -49,8 +49,7 @@ class ValuesFactorConfig(ConfigModel):
4949

5050

5151
class PredictionFactorsAndWeights(ConfigModel):
52-
class Config:
53-
populate_by_name = True
52+
model_config = ConfigDict(populate_by_name=True)
5453

5554
Name: float = Field(alias="name")
5655
Description: float = Field(alias="description")
@@ -59,8 +58,7 @@ class Config:
5958

6059

6160
class InfoTypeConfig(ConfigModel):
62-
class Config:
63-
populate_by_name = True
61+
model_config = ConfigDict(populate_by_name=True)
6462

6563
Prediction_Factors_and_Weights: PredictionFactorsAndWeights = Field(
6664
description="Factors and their weights to consider when predicting info types",

metadata-ingestion/src/datahub/ingestion/graph/config.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
from enum import Enum, auto
22
from typing import Dict, List, Optional
33

4+
from pydantic import ConfigDict
5+
46
from datahub.configuration.common import ConfigModel
57
from datahub.configuration.env_vars import get_datahub_component
68

@@ -31,5 +33,4 @@ class DatahubClientConfig(ConfigModel):
3133
datahub_component: Optional[str] = None
3234
server_config_refresh_interval: Optional[int] = None
3335

34-
class Config:
35-
extra = "ignore"
36+
model_config = ConfigDict(extra="ignore")

metadata-ingestion/src/datahub/ingestion/source/data_lake_common/path_spec.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
import parse
99
from cached_property import cached_property
10-
from pydantic import field_validator, model_validator
10+
from pydantic import ConfigDict, field_validator, model_validator
1111
from pydantic.fields import Field
1212
from wcmatch import pathlib
1313

@@ -83,8 +83,7 @@ class FolderTraversalMethod(Enum):
8383

8484

8585
class PathSpec(ConfigModel):
86-
class Config:
87-
arbitrary_types_allowed = True
86+
model_config = ConfigDict(arbitrary_types_allowed=True)
8887

8988
include: str = Field(
9089
description="Path to table. Name variable `{table}` is used to mark the folder with dataset. In absence of `{table}`, file level dataset will be created. Check below examples for more details.",

metadata-ingestion/src/datahub/ingestion/source/dbt/dbt_core.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import dateutil.parser
1010
import requests
1111
from packaging import version
12-
from pydantic import BaseModel, Field, model_validator
12+
from pydantic import BaseModel, ConfigDict, Field, model_validator
1313

1414
from datahub.configuration.git import GitReference
1515
from datahub.configuration.validate_field_rename import pydantic_renamed_field
@@ -341,8 +341,7 @@ class DBTRunTiming(BaseModel):
341341

342342

343343
class DBTRunResult(BaseModel):
344-
class Config:
345-
extra = "allow"
344+
model_config = ConfigDict(extra="allow")
346345

347346
status: str
348347
timing: List[DBTRunTiming] = []

metadata-ingestion/src/datahub/ingestion/source/hex/api.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from typing import Any, Dict, Generator, List, Optional, Union
55

66
import requests
7-
from pydantic import BaseModel, Field, ValidationError, field_validator
7+
from pydantic import BaseModel, ConfigDict, Field, ValidationError, field_validator
88
from requests.adapters import HTTPAdapter
99
from typing_extensions import assert_never
1010
from urllib3.util.retry import Retry
@@ -133,8 +133,7 @@ class HexApiSharing(BaseModel):
133133
collections: Optional[List[HexApiCollectionAccess]] = []
134134
groups: Optional[List[Any]] = []
135135

136-
class Config:
137-
extra = "ignore" # Allow extra fields in the JSON
136+
model_config = ConfigDict(extra="ignore") # Allow extra fields in the JSON
138137

139138

140139
class HexApiItemType(StrEnum):
@@ -165,8 +164,7 @@ class HexApiProjectApiResource(BaseModel):
165164
schedules: Optional[List[HexApiSchedule]] = []
166165
sharing: Optional[HexApiSharing] = None
167166

168-
class Config:
169-
extra = "ignore" # Allow extra fields in the JSON
167+
model_config = ConfigDict(extra="ignore") # Allow extra fields in the JSON
170168

171169
@field_validator(
172170
"created_at",
@@ -200,8 +198,7 @@ class HexApiProjectsListResponse(BaseModel):
200198
values: List[HexApiProjectApiResource]
201199
pagination: Optional[HexApiPageCursors] = None
202200

203-
class Config:
204-
extra = "ignore" # Allow extra fields in the JSON
201+
model_config = ConfigDict(extra="ignore") # Allow extra fields in the JSON
205202

206203

207204
@dataclass

metadata-ingestion/src/datahub/ingestion/source/powerbi_report_server/report_server_domain.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from datetime import datetime
22
from typing import Any, Dict, List, Optional
33

4-
from pydantic import BaseModel, Field, model_validator
4+
from pydantic import BaseModel, ConfigDict, Field, model_validator
55

66
from datahub.ingestion.source.powerbi_report_server.constants import (
77
RelationshipDirection,
@@ -357,8 +357,7 @@ class OwnershipData(BaseModel):
357357
existing_owners: Optional[List[OwnerClass]] = []
358358
owner_to_add: Optional[CorpUser] = None
359359

360-
class Config:
361-
arbitrary_types_allowed = True
360+
model_config = ConfigDict(arbitrary_types_allowed=True)
362361

363362

364363
CatalogItem.update_forward_refs()

metadata-ingestion/src/datahub/ingestion/source/snowflake/snowflake_usage_v2.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from typing import Any, Dict, Iterable, List, Optional, Tuple
66

77
import pydantic
8+
from pydantic import ConfigDict
89

910
from datahub.configuration.time_window_config import BaseTimeWindowConfig
1011
from datahub.emitter.mce_builder import make_user_urn
@@ -70,8 +71,7 @@
7071

7172

7273
class PermissiveModel(pydantic.BaseModel):
73-
class Config:
74-
extra = "allow"
74+
model_config = ConfigDict(extra="allow")
7575

7676

7777
class SnowflakeColumnReference(PermissiveModel):

0 commit comments

Comments
 (0)