예제 #1
0
 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]))
예제 #2
0
 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
예제 #3
0
 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
예제 #4
0
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
예제 #5
0
 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]))