def test_get_metaclass_objects(self, import_module, listdir): class DumbBaseClass(object): pass def listdir_side_effect(d): if d.endswith('asd'): return ['bola.py', 'foo.rst', 'guda.pyc', 'qwert.pyo', '__init__.py'] return [] listdir.side_effect = listdir_side_effect self.assertEqual(get_metaclass_objects('asd', DumbBaseClass), []) self.assertEqual(import_module.call_args_list, [mock.call('asd.bola'), mock.call('asd.guda'), mock.call('asd.qwert')])
def get_provider(url): providers = get_metaclass_objects(__name__, BaseProvider, lambda x: x.priority) for provider in providers: if provider.url_supported(url): return provider
def get_data_type(data): data_types = get_metaclass_objects(__name__, BaseDataType, lambda x: x.priority) for data_type in data_types: if data_type.type_supported(data): return data_type
def get_parser(content_type): parsers = get_metaclass_objects(__name__, BaseParser, lambda x: x.priority) for parser in parsers: if parser.content_supported(content_type): return parser