"""Declarative containers inheritance example."""

from dependency_injector import containers, providers


class ContainerA(containers.DeclarativeContainer):

    provider1 = providers.Factory(object)


class ContainerB(ContainerA):

    provider2 = providers.Singleton(object)


assert ContainerA.providers == {
    'provider1': ContainerA.provider1,
}
assert ContainerB.providers == {
    'provider1': ContainerA.provider1,
    'provider2': ContainerB.provider2,
}

assert ContainerA.cls_providers == {
    'provider1': ContainerA.provider1,
}
assert ContainerB.cls_providers == {
    'provider2': ContainerB.provider2,
}

assert ContainerA.inherited_providers == {}
assert ContainerB.inherited_providers == {
    'provider1': ContainerA.provider1,
}