def test_iter_subclasses(self): self.assertSetEqual( set( iter_subclasses('crawlmi.tests.test_utils.test_utils_misc', BaseClass)), set([Sub1, Sub2, Sub3])) self.assertSetEqual( set( iter_subclasses('crawlmi.tests.test_utils.test_utils_misc', BaseClass, include_base=True)), set([BaseClass, Sub1, Sub2, Sub3]))
def __init__(self, settings): self.spider_modules = settings.get_list("SPIDER_MODULES") self._spiders = {} for path in self.spider_modules: for spider_class in iter_subclasses(path, BaseSpider): if getattr(spider_class, "name", None): self._spiders[spider_class.name] = spider_class
def __init__(self, settings): self.spider_modules = settings.get_list('SPIDER_MODULES') self._spiders = {} for path in self.spider_modules: for spider_class in iter_subclasses(path, BaseSpider): if getattr(spider_class, 'name', None): self._spiders[spider_class.name] = spider_class
def get_commands_from_module(module_path, inside_project): '''From the root module path (e.g. `crawlmi.commands`), find and return the dictionary (command_name -> command_class) of all the commands compatible with `inside_project` argument. ''' commands = {} for cmd in iter_subclasses(module_path, BaseCommand): if inside_project or not cmd.requires_project: cmd_name = cmd.__module__.split('.')[-1] commands[cmd_name] = cmd return commands
def test_iter_subclasses(self): self.assertSetEqual(set(iter_subclasses('crawlmi.tests.test_utils.test_utils_misc', BaseClass)), set([Sub1, Sub2, Sub3])) self.assertSetEqual(set(iter_subclasses('crawlmi.tests.test_utils.test_utils_misc', BaseClass, include_base=True)), set([BaseClass, Sub1, Sub2, Sub3]))