"""Catalog example.""" import collections import dependency_injector as di # Creating some example classes: Object1 = collections.namedtuple('Object1', ['arg1', 'arg2']) Object2 = collections.namedtuple('Object2', ['object1']) class Catalog(di.AbstractCatalog): """Providers catalog.""" object1_factory = di.Factory(Object1, arg1=1, arg2=2) """:type: (di.Provider) -> Object1""" object2_factory = di.Factory(Object2, object1=object1_factory) """:type: (di.Provider) -> Object2""" # Creating some objects: object2_1 = Catalog.object2_factory() object2_2 = Catalog.object2_factory() # Making some asserts: assert object2_1 is not object2_2 assert isinstance(object2_1, Object2) assert object2_1.object1.arg1 == 1 assert object2_1.object1.arg2 == 2 assert isinstance(object2_2, Object2) assert object2_2.object1.arg1 == 1 assert object2_2.object1.arg2 == 2