Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 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
5 changes: 1 addition & 4 deletions src/dependency_injector/providers.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -157,10 +157,7 @@ cdef dict pydantic_settings_to_dict(settings, dict kwargs):
)

if isinstance(settings, type) and issubclass(settings, PydanticSettings):
raise Error(
"Got settings class, but expect instance: "
"instead \"{0}\" use \"{0}()\"".format(settings.__name__)
)
settings = settings()

if not isinstance(settings, PydanticSettings):
raise Error(
Expand Down
26 changes: 14 additions & 12 deletions tests/unit/providers/configuration/test_from_pydantic_py36.py
Original file line number Diff line number Diff line change
Expand Up @@ -168,21 +168,23 @@ def test_option_not_instance_of_settings(config):


def test_subclass_instead_of_instance(config):
with raises(errors.Error) as error:
config.from_pydantic(Settings1)
assert error.value.args[0] == (
"Got settings class, but expect instance: "
"instead \"Settings1\" use \"Settings1()\""
)
config.from_pydantic(Settings1)

assert config() == {"section1": {"value1": 1}, "section2": {"value2": 2}}
assert config.section1() == {"value1": 1}
assert config.section1.value1() == 1
assert config.section2() == {"value2": 2}
assert config.section2.value2() == 2


def test_option_subclass_instead_of_instance(config):
with raises(errors.Error) as error:
config.option.from_pydantic(Settings1)
assert error.value.args[0] == (
"Got settings class, but expect instance: "
"instead \"Settings1\" use \"Settings1()\""
)
config.option.from_pydantic(Settings1)

assert config.option() == {"section1": {"value1": 1}, "section2": {"value2": 2}}
assert config.option.section1() == {"value1": 1}
assert config.option.section1.value1() == 1
assert config.option.section2() == {"value2": 2}
assert config.option.section2.value2() == 2


@mark.usefixtures("no_pydantic_module_installed")
Expand Down