Skip to content

Support pydantic v2 BaseSettings #755

Closed
@arianamiri

Description

@arianamiri

In pydantic 2.0+ the BaseSettings class has been moved into a optional package, pydantic-settings. The configuration provider's from_pydantic method expect to find it in the pydantic package:

https://github.com/ets-labs/python-dependency-injector/blob/master/src/dependency_injector/providers.pyx#L1806-L1816

This results in an error like:

    container.config.from_pydantic(settings)
src/dependency_injector/providers.pyx:2381: in dependency_injector.providers.Configuration.from_pydantic
    ???
.venv/lib/python3.11/site-packages/pydantic/__init__.py:218: in __getattr__
    return _getattr_migration(attr_name)
.venv/lib/python3.11/site-packages/pydantic/_migration.py:294: in wrapper
    raise PydanticImportError(
E   pydantic.errors.PydanticImportError: `BaseSettings` has been moved to the `pydantic-settings` package. See https://docs.pydantic.dev/2.4/migration/#basesettings-has-moved-to-pydantic-settings for more details.

Furthermore, the BaseModel.dict method used in the last line of this method is deprecated and has been replaced by BaseModel.model_dump. The method still exists but emits deprecation warnings when accessed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions