From fbb61e9c1d6f4962b43787fbf636339ac9659cbb Mon Sep 17 00:00:00 2001 From: David Pursehouse Date: Thu, 5 Nov 2015 13:38:56 +0900 Subject: [PATCH] Add tox configuration to enable PEP-8 checks, and fix various failures - E126 continuation line over-indented for hanging indent - E127 continuation line over-indented for visual indent - E128 continuation line under-indented for visual indent - E131 continuation line unaligned for hanging indent - E265 block comment should start with '# ' - E272 multiple spaces before keyword - E302 expected 2 blank lines, found - E712 comparison to False should be 'if cond is False:' or 'if not cond:' - F401 '' imported but unused Change-Id: I2344cf2e8fd7910e72e9d8043423d25e43065ef2 --- .gitignore | 1 + lodgeit/__init__.py | 1 - lodgeit/controllers/__init__.py | 1 + lodgeit/controllers/pastes.py | 34 ++++++++++++++++----------------- lodgeit/database.py | 4 ++-- lodgeit/lib/antispam.py | 2 +- lodgeit/lib/captcha.py | 6 +++--- lodgeit/lib/filterable.py | 12 ++++++------ lodgeit/lib/highlighting.py | 13 +++++++------ lodgeit/lib/json.py | 2 +- lodgeit/lib/webapi.py | 4 +++- lodgeit/models.py | 12 ++++++------ lodgeit/utils.py | 1 - scripts/lodgeit.py | 2 +- test-requirements.txt | 2 ++ tests/alfajor.ini | 2 +- tests/utilities/__init__.py | 1 - tox.ini | 16 ++++++++++++++++ 18 files changed, 68 insertions(+), 48 deletions(-) create mode 100644 test-requirements.txt create mode 100644 tox.ini diff --git a/.gitignore b/.gitignore index dc90720..9490520 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ *.pyc .DS_Store bootstrap.py +.tox diff --git a/lodgeit/__init__.py b/lodgeit/__init__.py index 9c5cbe9..edcd1eb 100644 --- a/lodgeit/__init__.py +++ b/lodgeit/__init__.py @@ -8,4 +8,3 @@ :copyright: 2007 by Armin Ronacher. :license: BSD """ -from lodgeit.application import make_app diff --git a/lodgeit/controllers/__init__.py b/lodgeit/controllers/__init__.py index db87076..e9df2f4 100644 --- a/lodgeit/controllers/__init__.py +++ b/lodgeit/controllers/__init__.py @@ -9,6 +9,7 @@ :license: BSD """ + def get_controller(name): cname, hname = name.split('/') module = __import__('lodgeit.controllers.' + cname, None, None, ['']) diff --git a/lodgeit/controllers/pastes.py b/lodgeit/controllers/pastes.py index dd47b21..6c9367f 100644 --- a/lodgeit/controllers/pastes.py +++ b/lodgeit/controllers/pastes.py @@ -23,7 +23,7 @@ from lodgeit.lib.captcha import check_hashed_solution, Captcha class PasteController(object): """Provides all the handler callback for paste related stuff.""" - #XXX:dc: using language here clashes with internationalization terms + # XXX:dc: using language here clashes with internationalization terms def new_paste(self, language=None): """The 'create a new paste' view.""" language = local.request.args.get('language', language) @@ -74,14 +74,14 @@ class PasteController(object): language = parent.language private = parent.private return render_to_response('new_paste.html', - languages=list_languages(), - parent=parent, - code=code, - language=language, - error=error, - show_captcha=show_captcha, - private=private - ) + languages=list_languages(), + parent=parent, + code=code, + language=language, + error=error, + show_captcha=show_captcha, + private=private + ) def show_paste(self, identifier, raw=False): """Show an existing paste.""" @@ -113,9 +113,9 @@ class PasteController(object): if paste is None: raise NotFound() return render_to_response('paste_tree.html', - paste=paste, - current=identifier - ) + paste=paste, + current=identifier + ) def compare_paste(self, new_id=None, old_id=None): """Render a diff view for two pastes.""" @@ -133,10 +133,10 @@ class PasteController(object): raise NotFound() return render_to_response('compare_paste.html', - old=old, - new=new, - diff=old.compare_to(new, template=True) - ) + old=old, + new=new, + diff=old.compare_to(new, template=True) + ) def unidiff_paste(self, new_id=None, old_id=None): """Render an udiff for the two pastes.""" @@ -155,7 +155,7 @@ class PasteController(object): style_name = local.request.form.get('style') resp = redirect(local.request.headers.get('referer') or url_for('pastes/new_paste')) - #XXX:dc: use some sort of form element validation instead + # XXX:dc: use some sort of form element validation instead if style_name in STYLES: resp.set_cookie('style', style_name) return resp diff --git a/lodgeit/database.py b/lodgeit/database.py index 13b2fb6..a098693 100644 --- a/lodgeit/database.py +++ b/lodgeit/database.py @@ -25,7 +25,7 @@ def session_factory(): return orm.create_session(application.engine, **options) session = orm.scoped_session(session_factory, - scopefunc=_local_manager.get_ident) + scopefunc=_local_manager.get_ident) class ModelBase(object): @@ -38,7 +38,7 @@ class ModelBase(object): # configure the declarative base Model = declarative_base(name='Model', cls=ModelBase, - mapper=orm.mapper, metadata=metadata) + mapper=orm.mapper, metadata=metadata) ModelBase.query = session.query_property() diff --git a/lodgeit/lib/antispam.py b/lodgeit/lib/antispam.py index 26bf9da..3813fc4 100644 --- a/lodgeit/lib/antispam.py +++ b/lodgeit/lib/antispam.py @@ -40,7 +40,7 @@ def check_for_link_spam(code): if len(spans) > MAX_LINK_PERCENTAGE: return True return (sum(starmap(sub, spans)) * -100) / (len(code) or 1) \ - > MAX_LINK_PERCENTAGE + > MAX_LINK_PERCENTAGE def is_spam(code): diff --git a/lodgeit/lib/captcha.py b/lodgeit/lib/captcha.py index 7ec2111..9d33170 100644 --- a/lodgeit/lib/captcha.py +++ b/lodgeit/lib/captcha.py @@ -287,7 +287,7 @@ class GridBackground(Layer): for i in xrange(image.size[0] / self.size + 1): draw.line((0, i * self.size + self.offset[1], image.size[0], i * self.size+self.offset[1]), - fill=self.color) + fill=self.color) return image @@ -408,5 +408,5 @@ class SineWarp(WarpBase): def get_transform(self, image): return (lambda x, y, a=self.amplitude, p=self.period, - o=self.offset: (math.sin((y + o[0]) * p) * a + x, - math.sin((x + o[1]) * p) * a + y)) + o=self.offset: (math.sin((y + o[0]) * p) * a + x, + math.sin((x + o[1]) * p) * a + y)) diff --git a/lodgeit/lib/filterable.py b/lodgeit/lib/filterable.py index 9829625..2ecbf11 100644 --- a/lodgeit/lib/filterable.py +++ b/lodgeit/lib/filterable.py @@ -1,4 +1,4 @@ -#-*- coding: utf-8 -*- +# -*- coding: utf-8 -*- """ lodgeit.libs.filterable ~~~~~~~~~~~~~~~~~~~~~~~ @@ -30,12 +30,12 @@ ACTIONS = { } } ACTIONS_MAP = { - 'is': lambda f, v: f == v, - 'contains': lambda f, v: f.contains(v), + 'is': lambda f, v: f == v, + 'contains': lambda f, v: f.contains(v), 'startswith': lambda f, v: f.startswith(v), - 'greater': lambda f, v: f > v, - 'lower': lambda f, v: f < v, - 'bool': lambda f, v: f == (v == 'true'), + 'greater': lambda f, v: f > v, + 'lower': lambda f, v: f < v, + 'bool': lambda f, v: f == (v == 'true'), } diff --git a/lodgeit/lib/highlighting.py b/lodgeit/lib/highlighting.py index ecedc38..b27cc75 100644 --- a/lodgeit/lib/highlighting.py +++ b/lodgeit/lib/highlighting.py @@ -14,7 +14,7 @@ import csv from operator import itemgetter from pygments.util import ClassNotFound from pygments.lexers import get_lexer_by_name, get_lexer_for_filename, \ - get_lexer_for_mimetype, PhpLexer, TextLexer, get_all_lexers + get_lexer_for_mimetype, PhpLexer, TextLexer, get_all_lexers from pygments.styles import get_all_styles from pygments.formatters import HtmlFormatter @@ -23,7 +23,7 @@ from lodgeit.i18n import lazy_gettext as _ from lodgeit.utils import render_template from lodgeit.lib.diff import prepare_udiff from lodgeit.lib.compilerparser import parse_gcc_messages, \ - parse_javac_messages + parse_javac_messages from werkzeug import escape @@ -167,11 +167,12 @@ def highlight_multifile(code): start, filename, lang = last section_code = _escaped_marker.sub('', code[start:pos]) if section_code: + if filename: + filename_html = u'

%s

' % escape(filename) + else: + filename_html = u'' result.append(u'
%s%s
' % ( - filename and u'

%s

' - % escape(filename) or u'', - highlight(section_code, lang) - )) + filename_html, highlight(section_code, lang))) for match in _section_marker_re.finditer(code): start = match.start() diff --git a/lodgeit/lib/json.py b/lodgeit/lib/json.py index 3db32ea..b01dab5 100644 --- a/lodgeit/lib/json.py +++ b/lodgeit/lib/json.py @@ -37,7 +37,7 @@ class JSONRequestHandler(object): kwargs = {} else: raise TypeError('arguments as object or list expected') - #XXX:dc: use flatland to validate these args before passing onward + # XXX:dc: use flatland to validate these args before passing onward response = { 'data': self.funcs[method_name](*args, **kwargs), 'error': None diff --git a/lodgeit/lib/webapi.py b/lodgeit/lib/webapi.py index 241a43f..2bb5fb4 100644 --- a/lodgeit/lib/webapi.py +++ b/lodgeit/lib/webapi.py @@ -14,7 +14,7 @@ from lodgeit.database import db from lodgeit.lib.xmlrpc import XMLRPCRequestHandler from lodgeit.lib.json import JSONRequestHandler from lodgeit.lib.highlighting import STYLES, LANGUAGES, get_style, \ - get_language_for + get_language_for xmlrpc = XMLRPCRequestHandler() @@ -32,6 +32,8 @@ def exported(name, hidden=False): _public_methods = None + + def get_public_methods(): """Returns the public methods.""" global _public_methods diff --git a/lodgeit/models.py b/lodgeit/models.py index 0002d11..1b8676b 100644 --- a/lodgeit/models.py +++ b/lodgeit/models.py @@ -34,8 +34,8 @@ class Paste(db.Model): private_id = db.Column(db.String(40), unique=True, nullable=True) children = db.relation('Paste', cascade='all', - primaryjoin=parent_id == paste_id, - backref=db.backref('parent', remote_side=[paste_id])) + primaryjoin=parent_id == paste_id, + backref=db.backref('parent', remote_side=[paste_id])) def __init__(self, code, language, parent_id=None, user_hash=None, private=False): @@ -43,7 +43,7 @@ class Paste(db.Model): language = 'text' self.code = u'\n'.join(code.splitlines()) self.language = language - #XXX:dc: set these a bit more sanely, allowing two types is bad + # XXX:dc: set these a bit more sanely, allowing two types is bad if parent_id: self.parent_id = parent_id self.pub_date = datetime.now() @@ -90,12 +90,12 @@ class Paste(db.Model): """Get the new replies for the ower of a request and flag them as handled. """ - #XXX:dc:clean this query up to just return the ids + # XXX:dc:clean this query up to just return the ids ids = [x.paste_id for x in Paste.query.filter_by( - user_hash=local.request.user_hash).all()] + user_hash=local.request.user_hash).all()] paste_list = Paste.query.filter(db.and_( Paste.parent_id.in_(ids), - Paste.handled == False, + Paste.handled is False, )).order_by(Paste.paste_id.desc()).all() for paste in paste_list: paste.handled = True diff --git a/lodgeit/utils.py b/lodgeit/utils.py index 3346140..3d03f28 100644 --- a/lodgeit/utils.py +++ b/lodgeit/utils.py @@ -85,7 +85,6 @@ class Request(RequestBase): lang = session.get('locale') if lang is None: lang = 'en' - #lang = (self.accept_languages.best or 'en').split('-')[0] self.locale = Locale.parse(lang) def set_language(self, lang): diff --git a/scripts/lodgeit.py b/scripts/lodgeit.py index 37c878f..b0f9cc0 100755 --- a/scripts/lodgeit.py +++ b/scripts/lodgeit.py @@ -69,7 +69,7 @@ def load_default_settings(): if key in settings: if key in ('clipboard', 'open_browser'): settings[key] = p[1].strip().lower() in \ - ('true', '1', 'on', 'yes') + ('true', '1', 'on', 'yes') else: settings[key] = p[1].strip() f.close() diff --git a/test-requirements.txt b/test-requirements.txt new file mode 100644 index 0000000..c59a0e9 --- /dev/null +++ b/test-requirements.txt @@ -0,0 +1,2 @@ +flake8 + diff --git a/tests/alfajor.ini b/tests/alfajor.ini index 315ba8e..a1ca9b3 100644 --- a/tests/alfajor.ini +++ b/tests/alfajor.ini @@ -5,5 +5,5 @@ default+apiclient=wsgi wsgi=wsgi [default+apiclient.wsgi] -server-entry-point = tests.utilities:foo +server-entry-point = tests.utilities.runner:foo base_url = http://www.localhost:5001 diff --git a/tests/utilities/__init__.py b/tests/utilities/__init__.py index fbf85b6..e69de29 100644 --- a/tests/utilities/__init__.py +++ b/tests/utilities/__init__.py @@ -1 +0,0 @@ -from .runner import foo diff --git a/tox.ini b/tox.ini new file mode 100644 index 0000000..0fcbdae --- /dev/null +++ b/tox.ini @@ -0,0 +1,16 @@ +[tox] +minversion = 1.6 +envlist = pep8 +skipsdist = True + +[testenv] +setenv = VIRTUAL_ENV={envdir} +deps = -r{toxinidir}/test-requirements.txt + +[testenv:pep8] +commands = flake8 + +[flake8] +show-source = true +max-line-length = 80 +exclude = ENV,.venv,.git,.tox,dist,doc,*openstack/common*,*lib/python*,*egg,build,tools