diff --git a/pelican/__init__.py b/pelican/__init__.py index 7f406c4f..78a16e27 100644 --- a/pelican/__init__.py +++ b/pelican/__init__.py @@ -157,12 +157,12 @@ class Pelican(object): context['localsiteurl'] = self.settings['SITEURL'] # share generators = [ cls( - context, - self.settings, - self.path, - self.theme, - self.output_path, - self.markup, + context=context, + settings=self.settings, + path=self.path, + theme=self.theme, + output_path=self.output_path, + markup=self.markup, ) for cls in self.get_generator_classes() ] diff --git a/pelican/generators.py b/pelican/generators.py index a01281dc..3ebcb648 100644 --- a/pelican/generators.py +++ b/pelican/generators.py @@ -31,10 +31,14 @@ logger = logging.getLogger(__name__) class Generator(object): """Baseclass generator""" - def __init__(self, *args, **kwargs): - for idx, item in enumerate(('context', 'settings', 'path', 'theme', - 'output_path', 'markup')): - setattr(self, item, args[idx]) + def __init__(self, context, settings, path, theme, output_path, markup, + **kwargs): + self.context = context + self.settings = settings + self.path = path + self.theme = theme + self.output_path = output_path + self.markup = markup for arg, value in kwargs.items(): setattr(self, arg, value) diff --git a/pelican/tests/test_generators.py b/pelican/tests/test_generators.py index f5ed6b85..54f4a232 100644 --- a/pelican/tests/test_generators.py +++ b/pelican/tests/test_generators.py @@ -33,8 +33,10 @@ class TestArticlesGenerator(unittest.TestCase): settings = get_settings(filenames={}) settings['DEFAULT_CATEGORY'] = 'Default' settings['DEFAULT_DATE'] = (1970, 1, 1) - self.generator = ArticlesGenerator(settings.copy(), settings, - CONTENT_DIR, settings['THEME'], None, settings['MARKUP']) + self.generator = ArticlesGenerator( + context=settings.copy(), settings=settings, + path=CONTENT_DIR, theme=settings['THEME'], + output_path=None, markup=settings['MARKUP']) self.generator.generate_context() return self.generator @@ -52,16 +54,19 @@ class TestArticlesGenerator(unittest.TestCase): def test_generate_feeds(self): settings = get_settings() - generator = ArticlesGenerator(settings, settings, None, - settings['THEME'], None, settings['MARKUP']) + generator = ArticlesGenerator( + context=settings, settings=settings, + path=None, theme=settings['THEME'], + output_path=None, markup=settings['MARKUP']) writer = MagicMock() generator.generate_feeds(writer) writer.write_feed.assert_called_with([], settings, 'feeds/all.atom.xml') generator = ArticlesGenerator( - settings, get_settings(FEED_ALL_ATOM=None), None, - settings['THEME'], None, None) + context=settings, settings=get_settings(FEED_ALL_ATOM=None), + path=None, theme=settings['THEME'], + output_path=None, markup=None) writer = MagicMock() generator.generate_feeds(writer) self.assertFalse(writer.write_feed.called) @@ -122,8 +127,9 @@ class TestArticlesGenerator(unittest.TestCase): settings['USE_FOLDER_AS_CATEGORY'] = False settings['filenames'] = {} generator = ArticlesGenerator( - settings.copy(), settings, CONTENT_DIR, DEFAULT_CONFIG['THEME'], - None, DEFAULT_CONFIG['MARKUP']) + context=settings.copy(), settings=settings, + path=CONTENT_DIR, theme=DEFAULT_CONFIG['THEME'], + output_path=None, markup=DEFAULT_CONFIG['MARKUP']) generator.generate_context() # test for name # categories are grouped by slug; if two categories have the same slug @@ -143,9 +149,10 @@ class TestArticlesGenerator(unittest.TestCase): def test_direct_templates_save_as_default(self): settings = get_settings(filenames={}) - generator = ArticlesGenerator(settings, settings, None, - settings['THEME'], None, - settings['MARKUP']) + generator = ArticlesGenerator( + context=settings, settings=settings, + path=None, theme=settings['THEME'], + output_path=None, markup=settings['MARKUP']) write = MagicMock() generator.generate_direct_templates(write) write.assert_called_with("archives.html", @@ -157,9 +164,10 @@ class TestArticlesGenerator(unittest.TestCase): settings = get_settings() settings['DIRECT_TEMPLATES'] = ['archives'] settings['ARCHIVES_SAVE_AS'] = 'archives/index.html' - generator = ArticlesGenerator(settings, settings, None, - settings['THEME'], None, - settings['MARKUP']) + generator = ArticlesGenerator( + context=settings, settings=settings, + path=None, theme=settings['THEME'], + output_path=None, markup=settings['MARKUP']) write = MagicMock() generator.generate_direct_templates(write) write.assert_called_with("archives/index.html", @@ -171,9 +179,10 @@ class TestArticlesGenerator(unittest.TestCase): settings = get_settings() settings['DIRECT_TEMPLATES'] = ['archives'] settings['ARCHIVES_SAVE_AS'] = 'archives/index.html' - generator = ArticlesGenerator(settings, settings, None, - settings['THEME'], None, - settings['MARKUP']) + generator = ArticlesGenerator( + context=settings, settings=settings, + path=None, theme=settings['THEME'], + output_path=None, markup=settings['MARKUP']) write = MagicMock() generator.generate_direct_templates(write) write.assert_called_count == 0 @@ -215,8 +224,9 @@ class TestPageGenerator(unittest.TestCase): settings['DEFAULT_DATE'] = (1970, 1, 1) generator = PagesGenerator( - settings.copy(), settings, CUR_DIR, settings['THEME'], None, - settings['MARKUP']) + context=settings.copy(), settings=settings, + path=CUR_DIR, theme=settings['THEME'], + output_path=None, markup=settings['MARKUP']) generator.generate_context() pages = self.distill_pages(generator.pages) hidden_pages = self.distill_pages(generator.hidden_pages) @@ -258,8 +268,10 @@ class TestTemplatePagesGenerator(unittest.TestCase): 'template/source.html': 'generated/file.html' } - generator = TemplatePagesGenerator({'foo': 'bar'}, settings, - self.temp_content, '', self.temp_output, None) + generator = TemplatePagesGenerator( + context={'foo': 'bar'}, settings=settings, + path=self.temp_content, theme='', + output_path=self.temp_output, markup=None) # create a dummy template file template_dir = os.path.join(self.temp_content, 'template')