From 3395e71570c797d19067bf53faf8bd0c2a60d3f3 Mon Sep 17 00:00:00 2001 From: John Franey Date: Wed, 6 Feb 2019 10:22:57 -0400 Subject: [PATCH 1/2] Fix linting issues Fixes linting issues that caused the `flake8` CI stage to fail. --- pelican/__init__.py | 4 ++-- pelican/settings.py | 10 +++++----- pelican/tests/test_importer.py | 30 +++++++++++++++--------------- pelican/tools/pelican_themes.py | 4 ++-- pelican/utils.py | 15 +++++++++------ 5 files changed, 33 insertions(+), 30 deletions(-) diff --git a/pelican/__init__.py b/pelican/__init__.py index 27fc7fba..97d5fffa 100644 --- a/pelican/__init__.py +++ b/pelican/__init__.py @@ -444,8 +444,8 @@ def get_instance(args): config_file = args.settings if config_file is None and os.path.isfile(DEFAULT_CONFIG_NAME): - config_file = DEFAULT_CONFIG_NAME - args.settings = DEFAULT_CONFIG_NAME + config_file = DEFAULT_CONFIG_NAME + args.settings = DEFAULT_CONFIG_NAME settings = read_settings(config_file, override=get_config(args)) diff --git a/pelican/settings.py b/pelican/settings.py index b963007a..a957b26c 100644 --- a/pelican/settings.py +++ b/pelican/settings.py @@ -524,11 +524,11 @@ def configure_settings(settings): # check content caching layer and warn of incompatibilities if settings.get('CACHE_CONTENT', False) and \ - settings.get('CONTENT_CACHING_LAYER', '') == 'generator' and \ - settings.get('WITH_FUTURE_DATES', False): - logger.warning( - "WITH_FUTURE_DATES conflicts with CONTENT_CACHING_LAYER " - "set to 'generator', use 'reader' layer instead") + settings.get('CONTENT_CACHING_LAYER', '') == 'generator' and \ + settings.get('WITH_FUTURE_DATES', False): + logger.warning( + "WITH_FUTURE_DATES conflicts with CONTENT_CACHING_LAYER " + "set to 'generator', use 'reader' layer instead") # Warn if feeds are generated with both SITEURL & FEED_DOMAIN undefined feed_keys = [ diff --git a/pelican/tests/test_importer.py b/pelican/tests/test_importer.py index 75310a80..6eb62852 100644 --- a/pelican/tests/test_importer.py +++ b/pelican/tests/test_importer.py @@ -102,8 +102,8 @@ class TestWordpressXmlImporter(unittest.TestCase): def test_ignore_empty_posts(self): self.assertTrue(self.posts) for (title, content, fname, date, author, - categ, tags, status, kind, format) in self.posts: - self.assertTrue(title.strip()) + categ, tags, status, kind, format) in self.posts: + self.assertTrue(title.strip()) def test_recognise_page_kind(self): """ Check that we recognise pages in wordpress, as opposed to posts """ @@ -111,9 +111,9 @@ class TestWordpressXmlImporter(unittest.TestCase): # Collect (title, filename, kind) of non-empty posts recognised as page pages_data = [] for (title, content, fname, date, author, - categ, tags, status, kind, format) in self.posts: - if kind == 'page': - pages_data.append((title, fname)) + categ, tags, status, kind, format) in self.posts: + if kind == 'page': + pages_data.append((title, fname)) self.assertEqual(2, len(pages_data)) self.assertEqual(('Page', 'contact'), pages_data[0]) self.assertEqual(('Empty Page', 'empty'), pages_data[1]) @@ -151,22 +151,22 @@ class TestWordpressXmlImporter(unittest.TestCase): self.assertTrue(self.posts) pages_data = [] for (title, content, fname, date, author, categ, - tags, status, kind, format) in self.posts: - if kind == 'page' or kind == 'article': - pass - else: - pages_data.append((title, fname)) + tags, status, kind, format) in self.posts: + if kind == 'page' or kind == 'article': + pass + else: + pages_data.append((title, fname)) self.assertEqual(0, len(pages_data)) def test_recognise_custom_post_type(self): self.assertTrue(self.custposts) cust_data = [] for (title, content, fname, date, author, categ, - tags, status, kind, format) in self.custposts: - if kind == 'article' or kind == 'page': - pass - else: - cust_data.append((title, kind)) + tags, status, kind, format) in self.custposts: + if kind == 'article' or kind == 'page': + pass + else: + cust_data.append((title, kind)) self.assertEqual(3, len(cust_data)) self.assertEqual( ('A custom post in category 4', 'custom1'), diff --git a/pelican/tools/pelican_themes.py b/pelican/tools/pelican_themes.py index b99a7ba3..9f9b2328 100755 --- a/pelican/tools/pelican_themes.py +++ b/pelican/tools/pelican_themes.py @@ -81,9 +81,9 @@ def main(): to_sym = args.to_symlink or args.clean if args.action: - if args.action is 'list': + if args.action == 'list': list_themes(args.verbose) - elif args.action is 'path': + elif args.action == 'path': print(_THEMES_PATH) elif to_install or args.to_remove or to_sym: if args.to_remove: diff --git a/pelican/utils.py b/pelican/utils.py index 50d428a5..4a31658b 100644 --- a/pelican/utils.py +++ b/pelican/utils.py @@ -787,12 +787,15 @@ def folder_watcher(path, extensions, ignores=[]): dirs[:] = [x for x in dirs if not x.startswith(os.curdir)] for f in files: - if f.endswith(tuple(extensions)) and \ - not any(fnmatch.fnmatch(f, ignore) for ignore in ignores): - try: - yield os.stat(os.path.join(root, f)).st_mtime - except OSError as e: - logger.warning('Caught Exception: %s', e) + valid_extension = f.endswith(tuple(extensions)) + file_ignored = any( + fnmatch.fnmatch(f, ignore) for ignore in ignores + ) + if valid_extension and not file_ignored: + try: + yield os.stat(os.path.join(root, f)).st_mtime + except OSError as e: + logger.warning('Caught Exception: %s', e) LAST_MTIME = 0 while True: From 63a72fc6198e04c61aae36ea0456f54360d1076c Mon Sep 17 00:00:00 2001 From: John Franey Date: Wed, 6 Feb 2019 10:23:27 -0400 Subject: [PATCH 2/2] Remove Python 3.4 references This PR removes the Python 3.4 tox task and updates references in the code to Python 3.5+. tox complains about Python 3.4, which is EOL after next month: > py34 installed: DEPRECATION: Python 3.4 support has been deprecated. pip 19.1 will be the last one supporting it. Please upgrade your Python as Python 3.4 won't be maintained after March 2019 (cf PEP 429). --- .travis.yml | 1 - docs/install.rst | 2 +- pelican/readers.py | 2 +- pelican/tools/pelican_import.py | 2 +- setup.py | 1 - tox.ini | 3 +-- 6 files changed, 4 insertions(+), 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index 23f267c1..31b3ac8b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,7 +5,6 @@ env: - TOX_ENV=docs - TOX_ENV=flake8 - TOX_ENV=py27 - - TOX_ENV=py34 - TOX_ENV=py35 matrix: include: diff --git a/docs/install.rst b/docs/install.rst index 17f275af..571de95e 100644 --- a/docs/install.rst +++ b/docs/install.rst @@ -1,7 +1,7 @@ Installing Pelican ################## -Pelican currently runs best on Python 2.7.x and 3.4+; earlier versions of +Pelican currently runs best on Python 2.7.x and 3.5+; earlier versions of Python are not supported. You can install Pelican via several different methods. The simplest is via diff --git a/pelican/readers.py b/pelican/readers.py index bacb45f8..94c4481e 100644 --- a/pelican/readers.py +++ b/pelican/readers.py @@ -367,7 +367,7 @@ class HTMLReader(BaseReader): class _HTMLParser(HTMLParser): def __init__(self, settings, filename): try: - # Python 3.4+ + # Python 3.5+ HTMLParser.__init__(self, convert_charrefs=False) except TypeError: HTMLParser.__init__(self) diff --git a/pelican/tools/pelican_import.py b/pelican/tools/pelican_import.py index e5686811..40a811a0 100755 --- a/pelican/tools/pelican_import.py +++ b/pelican/tools/pelican_import.py @@ -22,7 +22,7 @@ from pelican.settings import read_settings from pelican.utils import SafeDatetime, slugify try: - from html import unescape # py3.4+ + from html import unescape # py3.5+ except ImportError: from six.moves.html_parser import HTMLParser unescape = HTMLParser().unescape diff --git a/setup.py b/setup.py index 74d2d043..d1dc4c4d 100755 --- a/setup.py +++ b/setup.py @@ -62,7 +62,6 @@ setup( 'Programming Language :: Python :: 2', 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.4', 'Programming Language :: Python :: 3.5', 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.7', diff --git a/tox.ini b/tox.ini index 4d941aac..fc95ff91 100644 --- a/tox.ini +++ b/tox.ini @@ -1,10 +1,9 @@ [tox] -envlist = py{27,34,35,36,37},docs,flake8 +envlist = py{27,35,36,37},docs,flake8 [testenv] basepython = py27: python2.7 - py34: python3.4 py35: python3.5 py36: python3.6 py37: python3.7