Skip to content

chore: cleanup #563

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Mar 11, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,4 @@ This package was kindly donated to the [Pydantic organisation](https://github.co

For the old "Hipster-orgazmic tool to manage application settings" package, see [version 0.2.5](https://pypi.org/project/pydantic-settings/0.2.5/).


See [documentation](https://docs.pydantic.dev/latest/concepts/pydantic_settings/) for more details.
2 changes: 1 addition & 1 deletion pydantic_settings/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ class BaseSettings(BaseModel):
into `None` type(None). Defaults to `None` type(None), which means no parsing should occur.
_env_parse_enums: Parse enum field names to values. Defaults to `None.`, which means no parsing should occur.
_cli_prog_name: The CLI program name to display in help text. Defaults to `None` if _cli_parse_args is `None`.
Otherwse, defaults to sys.argv[0].
Otherwise, defaults to sys.argv[0].
_cli_parse_args: The list of CLI arguments to parse. Defaults to None.
If set to `True`, defaults to sys.argv[1:].
_cli_settings_source: Override the default CLI settings source with a user defined instance. Defaults to None.
Expand Down
4 changes: 2 additions & 2 deletions pydantic_settings/sources/providers/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -548,11 +548,11 @@ def _sort_arg_fields(self, model: type[BaseModel]) -> list[tuple[str, FieldInfo]
if positional_variadic_arg:
if len(positional_variadic_arg) > 1:
field_names = ', '.join([name for name, info in positional_variadic_arg])
raise SettingsError(f'{model.__name__} has multiple variadic positonal arguments: {field_names}')
raise SettingsError(f'{model.__name__} has multiple variadic positional arguments: {field_names}')
elif subcommand_args:
field_names = ', '.join([name for name, info in positional_variadic_arg + subcommand_args])
raise SettingsError(
f'{model.__name__} has variadic positonal arguments and subcommand arguments: {field_names}'
f'{model.__name__} has variadic positional arguments and subcommand arguments: {field_names}'
)

return positional_args + positional_variadic_arg + subcommand_args + optional_args
Expand Down
6 changes: 4 additions & 2 deletions tests/test_settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -913,7 +913,7 @@ class Settings(BaseSettings, env_nested_delimiter='__'):
assert s.n.bar == 'bar value'


def test_nested_vanila_dataclass(env):
def test_nested_vanilla_dataclass(env):
@dataclasses.dataclass
class MyDataclass:
value: str
Expand Down Expand Up @@ -1732,7 +1732,9 @@ class Settings(BaseSettings):

model_config = SettingsConfigDict(secrets_dir=tmp_path)

with pytest.warns(UserWarning, match=f'attempted to load secret file "{tmp_path}/foo" but found a directory inste'):
with pytest.warns(
UserWarning, match=f'attempted to load secret file "{tmp_path}/foo" but found a directory instead'
):
Settings()


Expand Down
12 changes: 6 additions & 6 deletions tests/test_source_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -1450,25 +1450,25 @@ class PositionalArgNotOutermost(BaseSettings, cli_parse_args=True):

with pytest.raises(
SettingsError,
match='MultipleVariadicPositionialArgs has multiple variadic positonal arguments: strings, numbers',
match='MultipleVariadicPositionalArgs has multiple variadic positional arguments: strings, numbers',
):

class MultipleVariadicPositionialArgs(BaseSettings, cli_parse_args=True):
class MultipleVariadicPositionalArgs(BaseSettings, cli_parse_args=True):
strings: CliPositionalArg[list[str]]
numbers: CliPositionalArg[list[int]]

MultipleVariadicPositionialArgs()
MultipleVariadicPositionalArgs()

with pytest.raises(
SettingsError,
match='VariadicPositionialArgAndSubCommand has variadic positonal arguments and subcommand arguments: strings, sub_cmd',
match='VariadicPositionalArgAndSubCommand has variadic positional arguments and subcommand arguments: strings, sub_cmd',
):

class VariadicPositionialArgAndSubCommand(BaseSettings, cli_parse_args=True):
class VariadicPositionalArgAndSubCommand(BaseSettings, cli_parse_args=True):
strings: CliPositionalArg[list[str]]
sub_cmd: CliSubCommand[SubCmd]

VariadicPositionialArgAndSubCommand()
VariadicPositionalArgAndSubCommand()

with pytest.raises(
SettingsError, match=re.escape("cli_parse_args must be a list or tuple of strings, received <class 'str'>")
Expand Down