Skip to content

Commit 3d7d85e

Browse files
committed
Replace model_fields
1 parent 76ee619 commit 3d7d85e

File tree

5 files changed

+17
-17
lines changed

5 files changed

+17
-17
lines changed

docs/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2255,7 +2255,7 @@ class JsonConfigSettingsSource(PydanticBaseSettingsSource):
22552255
def __call__(self) -> dict[str, Any]:
22562256
d: dict[str, Any] = {}
22572257

2258-
for field_name, field in self.settings_cls.model_fields.items():
2258+
for field_name, field in self.settings_cls.__pydantic_fields__.items():
22592259
field_value, field_key, value_is_complex = self.get_field_value(
22602260
field, field_name
22612261
)

pydantic_settings/sources/base.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@ def __init__(self, settings_cls: type[BaseSettings], nested_model_default_partia
227227
else self.config.get('nested_model_default_partial_update', False)
228228
)
229229
if self.nested_model_default_partial_update:
230-
for field_name, field_info in settings_cls.model_fields.items():
230+
for field_name, field_info in settings_cls.__pydantic_fields__.items():
231231
alias_names, *_ = _get_alias_names(field_name, field_info)
232232
preferred_alias = alias_names[0]
233233
if is_dataclass(type(field_info.default)):
@@ -408,13 +408,13 @@ class Settings(BaseSettings):
408408
break
409409

410410
# This is here to make mypy happy
411-
# Item "None" of "Optional[Type[Any]]" has no attribute "model_fields"
412-
if not annotation or not hasattr(annotation, 'model_fields'):
411+
# Item "None" of "Optional[Type[Any]]" has no attribute "__pydantic_fields__"
412+
if not annotation or not hasattr(annotation, '__pydantic_fields__'):
413413
values[name] = value
414414
continue
415415

416416
# Find field in sub model by looking in fields case insensitively
417-
for sub_model_field_name, f in annotation.model_fields.items():
417+
for sub_model_field_name, f in annotation.__pydantic_fields__.items():
418418
if not f.validation_alias and sub_model_field_name.lower() == name.lower():
419419
sub_model_field = f
420420
break
@@ -470,7 +470,7 @@ def _get_resolved_field_value(self, field: FieldInfo, field_name: str) -> tuple[
470470
def __call__(self) -> dict[str, Any]:
471471
data: dict[str, Any] = {}
472472

473-
for field_name, field in self.settings_cls.model_fields.items():
473+
for field_name, field in self.settings_cls.__pydantic_fields__.items():
474474
try:
475475
field_value, field_key, value_is_complex = self._get_resolved_field_value(field, field_name)
476476
except Exception as e:

pydantic_settings/sources/providers/dotenv.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ def __call__(self) -> dict[str, Any]:
112112
if not env_value or env_name in data:
113113
continue
114114
env_used = False
115-
for field_name, field in self.settings_cls.model_fields.items():
115+
for field_name, field in self.settings_cls.__pydantic_fields__.items():
116116
for _, field_env_name, _ in self._extract_field_info(field, field_name):
117117
if env_name == field_env_name or (
118118
(

pydantic_settings/sources/utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ def _annotation_is_complex(annotation: type[Any] | None, metadata: list[Any]) ->
4545
# evaluate the complexity.
4646
if annotation is not None and _lenient_issubclass(annotation, RootModel) and annotation is not RootModel:
4747
annotation = cast('type[RootModel[Any]]', annotation)
48-
root_annotation = annotation.model_fields['root'].annotation
48+
root_annotation = annotation.__pydantic_fields__['root'].annotation
4949
if root_annotation is not None:
5050
annotation = root_annotation
5151

tests/test_settings.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1469,18 +1469,18 @@ class Settings(BaseSettings):
14691469
foo: str = Field('default foo', validation_alias='foo_env')
14701470
bar: str = 'bar default'
14711471

1472-
assert Settings.model_fields['bar'].alias is None
1473-
assert Settings.model_fields['bar'].validation_alias is None
1474-
assert Settings.model_fields['foo'].alias is None
1475-
assert Settings.model_fields['foo'].validation_alias == 'foo_env'
1472+
assert Settings.__pydantic_fields__['bar'].alias is None
1473+
assert Settings.__pydantic_fields__['bar'].validation_alias is None
1474+
assert Settings.__pydantic_fields__['foo'].alias is None
1475+
assert Settings.__pydantic_fields__['foo'].validation_alias == 'foo_env'
14761476

14771477
class SubSettings(Settings):
14781478
spam: str = 'spam default'
14791479

1480-
assert SubSettings.model_fields['bar'].alias is None
1481-
assert SubSettings.model_fields['bar'].validation_alias is None
1482-
assert SubSettings.model_fields['foo'].alias is None
1483-
assert SubSettings.model_fields['foo'].validation_alias == 'foo_env'
1480+
assert SubSettings.__pydantic_fields__['bar'].alias is None
1481+
assert SubSettings.__pydantic_fields__['bar'].validation_alias is None
1482+
assert SubSettings.__pydantic_fields__['foo'].alias is None
1483+
assert SubSettings.__pydantic_fields__['foo'].validation_alias == 'foo_env'
14841484

14851485
assert SubSettings().model_dump() == {'foo': 'default foo', 'bar': 'bar default', 'spam': 'spam default'}
14861486
env.set('foo_env', 'fff')
@@ -1839,7 +1839,7 @@ def __call__(self) -> dict[str, str]:
18391839
vault_vars = vault_storage[f'{self.user}:{self.password}']
18401840
return {
18411841
field_name: vault_vars[field_name]
1842-
for field_name in self.settings_cls.model_fields.keys()
1842+
for field_name in self.settings_cls.__pydantic_fields__.keys()
18431843
if field_name in vault_vars
18441844
}
18451845

0 commit comments

Comments
 (0)