def test_module_non_dataclass_filter(): inspector = ModuleFactoriesInspector([NonDataclassFactoryFilter()]) assert { "dataclass", "NormalClass", "ExtendedNormalClass", } == _names(inspector.filtered_factories(module_model))
def test_module_internals_factories_filter(): inspector = ModuleFactoriesInspector([InternalsFactoryFilter()]) assert { "_ProtectedClass", "MyClass", "_protected_fun", "my_fun", } == _names(inspector.filtered_factories(module_empty_annotations))
def test_modules_all_functions(): inspector = ModuleFactoriesInspector([]) assert { "abstractmethod", "gather", "_protected_fun", "my_fun", } == _names(inspector.all_functions(module_empty_annotations))
def test_module_factories_all_classes(): inspector = ModuleFactoriesInspector([]) assert { "ABC", "combinations", "_ProtectedClass", "MyClass", } == _names(inspector.all_types(module_empty_annotations))
def test_module_non_model_filter(): inspector = ModuleFactoriesInspector( [NonTypeFactoryFilter(types=module_model.NormalClass)] ) assert { "dataclass", "DataClass", } == _names(inspector.filtered_factories(module_model))
def test_module_public_filter(): inspector = ModuleFactoriesInspector([PublicFactoryFilter()]) assert { "ABC", "abstractmethod", "combinations", "gather", "MyClass", "my_fun", } == _names(inspector.filtered_factories(module_empty_annotations))
def test_module_non_abstract_duck_filter(): inspector = ModuleFactoriesInspector([NonAbstractFactoryFilter(duck_typing=True)]) assert { "ABC", "abstractmethod", "NormalClass", "ImplementedAbstracts", "normal_fn", "normal_async_fn", } == _names(inspector.filtered_factories(module_abstract))
def test_module_internals_or_all_filter(): inspector = ModuleFactoriesInspector([InternalsOrAllFactoryFilter()]) assert { "OtherClass", "my_fun2", } == _names(inspector.filtered_factories(module_all_present)) assert { "_ProtectedClass", "MyClass", "_protected_fun", "my_fun", } == _names(inspector.filtered_factories(module_empty_annotations))
def __iter__(self) -> Iterator[ModuleElement]: for python_module in self.python_modules: for filters in self.filter_sets: inspector = ModuleFactoriesInspector(filters=filters) for name, factory in inspector.filtered_factories( python_module): yield ModuleElement.create( injector=FactoryInjector(factory), singleton=self.singleton, label=_factory_name(factory), export=self.export, bootstrap=self.bootstrap, agg_checks=self.agg_checks, )
def test_module_factories_all_factory_filter(): inspector = ModuleFactoriesInspector([AllFactoryFilter()]) assert { "OtherClass", "my_fun2", } == _names(inspector.filtered_factories(module_all_present))