Skip to content

Commit 5c6ae2d

Browse files
committed
Update code
1 parent 26f93ce commit 5c6ae2d

File tree

1 file changed

+18
-30
lines changed

1 file changed

+18
-30
lines changed

pydantic_settings/sources.py

Lines changed: 18 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -8,27 +8,29 @@
88
import typing
99
import warnings
1010
from abc import ABC, abstractmethod
11-
12-
if sys.version_info >= (3, 9):
13-
from argparse import BooleanOptionalAction
14-
from argparse import SUPPRESS, ArgumentParser, Namespace, RawDescriptionHelpFormatter, _SubParsersAction
11+
from argparse import (
12+
SUPPRESS,
13+
ArgumentParser,
14+
BooleanOptionalAction,
15+
Namespace,
16+
RawDescriptionHelpFormatter,
17+
_SubParsersAction,
18+
)
1519
from collections import defaultdict, deque
20+
from collections.abc import Iterator, Mapping, Sequence
1621
from dataclasses import asdict, is_dataclass
1722
from enum import Enum
1823
from pathlib import Path
1924
from textwrap import dedent
2025
from types import BuiltinFunctionType, FunctionType, SimpleNamespace
2126
from typing import (
2227
TYPE_CHECKING,
28+
Annotated,
2329
Any,
2430
Callable,
25-
Dict,
2631
Generic,
27-
Iterator,
28-
Mapping,
2932
NoReturn,
3033
Optional,
31-
Sequence,
3234
TypeVar,
3335
Union,
3436
cast,
@@ -44,7 +46,7 @@
4446
from pydantic.dataclasses import is_pydantic_dataclass
4547
from pydantic.fields import FieldInfo
4648
from pydantic_core import PydanticUndefined
47-
from typing_extensions import Annotated, _AnnotatedAlias, get_args, get_origin
49+
from typing_extensions import _AnnotatedAlias, get_args, get_origin
4850

4951
from pydantic_settings.utils import path_type_label
5052

@@ -412,7 +414,7 @@ def get_field_value(self, field: FieldInfo, field_name: str) -> tuple[Any, str,
412414

413415
def __call__(self) -> dict[str, Any]:
414416
return (
415-
TypeAdapter(Dict[str, Any]).dump_python(self.init_kwargs)
417+
TypeAdapter(dict[str, Any]).dump_python(self.init_kwargs)
416418
if self.nested_model_default_partial_update
417419
else self.init_kwargs
418420
)
@@ -1253,7 +1255,7 @@ def __init__(
12531255
cli_parse_args = sys.argv[1:]
12541256
elif not isinstance(cli_parse_args, (list, tuple)):
12551257
raise SettingsError(
1256-
f'cli_parse_args must be List[str] or Tuple[str, ...], recieved {type(cli_parse_args)}'
1258+
f'cli_parse_args must be a list or tuple of strings, received {type(cli_parse_args)}'
12571259
)
12581260
self._load_env_vars(parsed_args=self._parse_args(self.root_parser, cli_parse_args))
12591261

@@ -1512,12 +1514,6 @@ def _verify_cli_flag_annotations(self, model: type[BaseModel], field_name: str,
15121514

15131515
if field_info.annotation is not bool:
15141516
raise SettingsError(f'{cli_flag_name} argument {model.__name__}.{field_name} is not of type bool')
1515-
elif sys.version_info < (3, 9) and (
1516-
field_info.default is PydanticUndefined and field_info.default_factory is None
1517-
):
1518-
raise SettingsError(
1519-
f'{cli_flag_name} argument {model.__name__}.{field_name} must have default for python versions < 3.9'
1520-
)
15211517

15221518
def _sort_arg_fields(self, model: type[BaseModel]) -> list[tuple[str, FieldInfo]]:
15231519
positional_variadic_arg = []
@@ -1812,19 +1808,11 @@ def _check_kebab_name(self, name: str) -> str:
18121808

18131809
def _convert_bool_flag(self, kwargs: dict[str, Any], field_info: FieldInfo, model_default: Any) -> None:
18141810
if kwargs['metavar'] == 'bool':
1815-
default = None
1816-
if field_info.default is not PydanticUndefined:
1817-
default = field_info.default
1818-
if model_default is not PydanticUndefined:
1819-
default = model_default
1820-
if sys.version_info >= (3, 9) or isinstance(default, bool):
1821-
if (self.cli_implicit_flags or _CliImplicitFlag in field_info.metadata) and (
1822-
_CliExplicitFlag not in field_info.metadata
1823-
):
1824-
del kwargs['metavar']
1825-
kwargs['action'] = (
1826-
BooleanOptionalAction if sys.version_info >= (3, 9) else f'store_{str(not default).lower()}'
1827-
)
1811+
if (self.cli_implicit_flags or _CliImplicitFlag in field_info.metadata) and (
1812+
_CliExplicitFlag not in field_info.metadata
1813+
):
1814+
del kwargs['metavar']
1815+
kwargs['action'] = BooleanOptionalAction
18281816

18291817
def _convert_positional_arg(
18301818
self, kwargs: dict[str, Any], field_info: FieldInfo, preferred_alias: str, model_default: Any

0 commit comments

Comments
 (0)