[PATCH] pep8: Use blacklist instead of whitelist

Currently, the command "make check-local" runs the PEP8 verification rules only on files listed in a configuration files. New files must still be added manually and not all files are being checked. List the files which *shouldn't* be checked against the PEP8 rules instead of listing the files which should be checked. Also, fix the errors on those new files. The blacklisted files are: src/kimchi/{i18n,websocket,websockify}.py. Signed-off-by: Crístian Viana <vianac@linux.vnet.ibm.com> --- Makefile.am | 48 ++------------------------------------------- src/kimchi/__init__.py | 2 +- src/kimchi/basemodel.py | 4 +++- src/kimchi/netinfo.py | 2 +- src/kimchi/screenshot.py | 17 +++++++++------- src/kimchi/sslcert.py | 5 +++-- src/kimchi/vmdisks.py | 6 +++--- src/kimchi/vnc.py | 2 +- src/kimchi/xmlutils.py | 2 +- tests/test_authorization.py | 20 +++++++++++-------- tests/test_exception.py | 10 +++++----- tests/test_server.py | 5 +---- tests/test_vmtemplate.py | 2 +- 13 files changed, 44 insertions(+), 81 deletions(-) diff --git a/Makefile.am b/Makefile.am index 3293d9e..c04ba32 100644 --- a/Makefile.am +++ b/Makefile.am @@ -38,51 +38,7 @@ EXTRA_DIST = \ $(NULL) -# When fixing a file to conform with pep8, add it to the WL here. -# So it will be checked from now on. -PEP8_WHITELIST = \ - plugins/__init__.py \ - plugins/sample/__init__.py \ - plugins/sample/model.py \ - src/kimchid.in \ - src/kimchi/asynctask.py \ - src/kimchi/auth.py \ - src/kimchi/cachebust.py \ - src/kimchi/config.py.in \ - src/kimchi/control/*.py \ - src/kimchi/control/vm/*.py \ - src/kimchi/disks.py \ - src/kimchi/distroloader.py \ - src/kimchi/exception.py \ - src/kimchi/featuretests.py \ - src/kimchi/imageinfo.py \ - src/kimchi/iscsi.py \ - src/kimchi/isoinfo.py \ - src/kimchi/kvmusertests.py \ - src/kimchi/mockmodel.py \ - src/kimchi/model/*.py \ - src/kimchi/objectstore.py \ - src/kimchi/osinfo.py \ - src/kimchi/proxy.py \ - src/kimchi/repositories.py \ - src/kimchi/rollbackcontext.py \ - src/kimchi/root.py \ - src/kimchi/scan.py \ - src/kimchi/server.py \ - src/kimchi/swupdate.py \ - src/kimchi/template.py \ - src/kimchi/utils.py \ - src/kimchi/vmtemplate.py \ - tests/test_config.py.in \ - tests/test_mockmodel.py \ - tests/test_model.py \ - tests/test_osinfo.py \ - tests/test_plugin.py \ - tests/test_rest.py \ - tests/test_rollbackcontext.py \ - tests/test_storagepool.py \ - tests/utils.py \ - $(NULL) +PEP8_BLACKLIST = "src/kimchi/i18n.py,src/kimchi/websocket.py,src/kimchi/websockify.py" SKIP_PYFLAKES_ERR = "\./src/kimchi/websocket\.py" @@ -98,7 +54,7 @@ check-local: while read LINE; do echo "$$LINE"; false; done $(PEP8) --version - $(PEP8) --filename '*.py,*.py.in' $(PEP8_WHITELIST) + $(PEP8) --filename '*.py,*.py.in' --exclude="$(PEP8_BLACKLIST)" . # Link built mo files in the source tree to enable use of translations from diff --git a/src/kimchi/__init__.py b/src/kimchi/__init__.py index 1237e99..edf8e5d 100644 --- a/src/kimchi/__init__.py +++ b/src/kimchi/__init__.py @@ -15,4 +15,4 @@ # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/src/kimchi/basemodel.py b/src/kimchi/basemodel.py index 93aab0c..096c66b 100644 --- a/src/kimchi/basemodel.py +++ b/src/kimchi/basemodel.py @@ -46,7 +46,9 @@ class BaseModel(object): class Singleton(type): _instances = {} + def __call__(cls, *args, **kwargs): if cls not in cls._instances: - cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs) + inst = super(Singleton, cls).__call__(*args, **kwargs) + cls._instances[cls] = inst return cls._instances[cls] diff --git a/src/kimchi/netinfo.py b/src/kimchi/netinfo.py index 2eaf4ac..bb50479 100644 --- a/src/kimchi/netinfo.py +++ b/src/kimchi/netinfo.py @@ -185,7 +185,7 @@ def get_interface_type(iface): def get_interface_info(iface): - if not iface in ethtool.get_devices(): + if iface not in ethtool.get_devices(): raise ValueError('unknown interface: %s' % iface) ipaddr = '' diff --git a/src/kimchi/screenshot.py b/src/kimchi/screenshot.py index 8528a39..e599d40 100644 --- a/src/kimchi/screenshot.py +++ b/src/kimchi/screenshot.py @@ -15,7 +15,7 @@ # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # import glob @@ -39,6 +39,7 @@ from kimchi.utils import kimchi_log (fd, pipe) = tempfile.mkstemp() stream_test_result = None + class VMScreenshot(object): OUTDATED_SECS = 5 THUMBNAIL_SIZE = (256, 256) @@ -48,8 +49,9 @@ class VMScreenshot(object): def __init__(self, args): self.vm_uuid = args['uuid'] args.setdefault('thumbnail', - os.path.join(config.get_screenshot_path(), - '%s-%s.png' % (self.vm_uuid, str(uuid.uuid4())))) + os.path.join(config.get_screenshot_path(), + '%s-%s.png' % + (self.vm_uuid, str(uuid.uuid4())))) self.info = args @staticmethod @@ -66,8 +68,8 @@ class VMScreenshot(object): if now - last_update > self.OUTDATED_SECS: self._clean_extra(self.LIVE_WINDOW) self._generate_thumbnail() - return '/data/screenshots/%s' % os.path.basename(self.info['thumbnail']) - + return '/data/screenshots/%s' %\ + os.path.basename(self.info['thumbnail']) def _clean_extra(self, window=-1): """ @@ -77,7 +79,8 @@ class VMScreenshot(object): try: now = time.time() clear_list = glob.glob("%s/%s-*.png" % - (config.get_screenshot_path(), self.vm_uuid)) + (config.get_screenshot_path(), + self.vm_uuid)) for f in clear_list: if now - os.path.getmtime(f) > window: os.unlink(f) @@ -122,7 +125,7 @@ class VMScreenshot(object): else: counter = 0 ret = os.waitpid(pid, os.WNOHANG) - while ret == (0,0) and counter < 3: + while ret == (0, 0) and counter < 3: counter += 1 time.sleep(1) ret = os.waitpid(pid, os.WNOHANG) diff --git a/src/kimchi/sslcert.py b/src/kimchi/sslcert.py index bf4d261..e772dc8 100644 --- a/src/kimchi/sslcert.py +++ b/src/kimchi/sslcert.py @@ -19,7 +19,7 @@ # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import time @@ -34,6 +34,7 @@ class SSLCert(object): def _gen(self): def keygen_cb(*args): pass + def passphrase_cb(*args): return '' @@ -54,7 +55,6 @@ class SSLCert(object): subject.CN = 'kimchi' subject.O = 'kimchi-project.org' - t = long(time.time()) + time.timezone now = ASN1.ASN1_UTCTIME() now.set_time(t) @@ -80,6 +80,7 @@ class SSLCert(object): def key_pem(self): return self._key + def main(): c = SSLCert() print c.cert_text() diff --git a/src/kimchi/vmdisks.py b/src/kimchi/vmdisks.py index b61c883..f1c3f02 100644 --- a/src/kimchi/vmdisks.py +++ b/src/kimchi/vmdisks.py @@ -39,9 +39,9 @@ def get_vm_disk(dom, dev_name): # Retrieve disk xml and format return dict disk = get_device_xml(dom, dev_name) if disk is None: - raise NotFoundError( - "KCHVMSTOR0007E", - {'dev_name': dev_name, 'vm_name': dom.name()}) + raise NotFoundError("KCHVMSTOR0007E", + {'dev_name': dev_name, + 'vm_name': dom.name()}) path = "" dev_bus = disk.target.attrib['bus'] try: diff --git a/src/kimchi/vnc.py b/src/kimchi/vnc.py index cfa7c6d..09a4cad 100644 --- a/src/kimchi/vnc.py +++ b/src/kimchi/vnc.py @@ -16,7 +16,7 @@ # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import base64 import errno diff --git a/src/kimchi/xmlutils.py b/src/kimchi/xmlutils.py index 8612e66..d3db32a 100644 --- a/src/kimchi/xmlutils.py +++ b/src/kimchi/xmlutils.py @@ -26,7 +26,7 @@ from xml.etree import ElementTree def xpath_get_text(xml, expr): doc = libxml2.parseDoc(xml) res = doc.xpathEval(expr) - ret = [None if x.children == None else x.children.content for x in res] + ret = [None if x.children is None else x.children.content for x in res] doc.freeDoc() return ret diff --git a/tests/test_authorization.py b/tests/test_authorization.py index 2c342a5..71b416f 100644 --- a/tests/test_authorization.py +++ b/tests/test_authorization.py @@ -40,7 +40,7 @@ ssl_port = None def setUpModule(): global test_server, model, host, port, ssl_port - patch_auth(sudo = False) + patch_auth(sudo=False) model = kimchi.mockmodel.MockModel('/tmp/obj-store-test') host = '127.0.0.1' port = get_free_port('http') @@ -111,23 +111,27 @@ class AuthorizationTests(unittest.TestCase): resp = self.request('/templates/test', '{}', 'DELETE') self.assertEquals(403, resp.status) - # Non-root users can only get vms authorized to them model.templates_create({'name': u'test', 'cdrom': '/nonexistent.iso'}) model.vms_create({'name': u'test-me', 'template': '/templates/test'}) - model.vm_update(u'test-me', {'users': [ kimchi.mockmodel.fake_user.keys()[0] ], 'groups': []}) + model.vm_update(u'test-me', + {'users': [kimchi.mockmodel.fake_user.keys()[0]], + 'groups': []}) - model.vms_create({'name': u'test-usera', 'template': '/templates/test'}) - model.vm_update(u'test-usera', {'users': [ 'userA' ], 'groups': []}) + model.vms_create({'name': u'test-usera', + 'template': '/templates/test'}) + model.vm_update(u'test-usera', {'users': ['userA'], 'groups': []}) - model.vms_create({'name': u'test-groupa', 'template': '/templates/test'}) - model.vm_update(u'test-groupa', {'groups': [ 'groupA' ]}) + model.vms_create({'name': u'test-groupa', + 'template': '/templates/test'}) + model.vm_update(u'test-groupa', {'groups': ['groupA']}) resp = self.request('/vms', '{}', 'GET') self.assertEquals(200, resp.status) vms_data = json.loads(resp.read()) - self.assertEquals([ u'test-groupa', u'test-me' ], sorted([ v['name'] for v in vms_data ])) + self.assertEquals([u'test-groupa', u'test-me'], + sorted([v['name'] for v in vms_data])) resp = self.request('/vms', req, 'POST') self.assertEquals(403, resp.status) diff --git a/tests/test_exception.py b/tests/test_exception.py index 90c1ea1..a533015 100644 --- a/tests/test_exception.py +++ b/tests/test_exception.py @@ -15,7 +15,7 @@ # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import json import os @@ -77,8 +77,8 @@ class ExceptionTests(unittest.TestCase): req = json.dumps({}) resp = json.loads(request(host, ssl_port, '/vms', req, 'POST').read()) self.assertEquals('400 Bad Request', resp.get('code')) - msg = u"KCHVM0016E: Specify a template to create a virtual machine from" - self.assertEquals(msg, resp.get('reason')) + m = u"KCHVM0016E: Specify a template to create a virtual machine from" + self.assertEquals(m, resp.get('reason')) self.assertNotIn('call_stack', resp) def test_development_env(self): @@ -106,7 +106,7 @@ class ExceptionTests(unittest.TestCase): # test 400 missing required parameter req = json.dumps({}) resp = json.loads(request(host, ssl_port, '/vms', req, 'POST').read()) - msg = u"KCHVM0016E: Specify a template to create a virtual machine from" + m = u"KCHVM0016E: Specify a template to create a virtual machine from" self.assertEquals('400 Bad Request', resp.get('code')) - self.assertEquals(msg, resp.get('reason')) + self.assertEquals(m, resp.get('reason')) self.assertIn('call_stack', resp) diff --git a/tests/test_server.py b/tests/test_server.py index 9beba6c..bebc383 100644 --- a/tests/test_server.py +++ b/tests/test_server.py @@ -15,7 +15,7 @@ # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import os import unittest @@ -24,7 +24,6 @@ import unittest import utils import kimchi.mockmodel -#utils.silence_server() class ServerTests(unittest.TestCase): def test_server_start(self): @@ -44,5 +43,3 @@ class ServerTests(unittest.TestCase): finally: os.unlink('/tmp/obj-store-test') s.stop() - - diff --git a/tests/test_vmtemplate.py b/tests/test_vmtemplate.py index 4ae1d36..2a6fb8e 100644 --- a/tests/test_vmtemplate.py +++ b/tests/test_vmtemplate.py @@ -15,7 +15,7 @@ # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import os import unittest -- 1.9.3

I think the POP8 fixes should be in a different patch than your black list proposal (I mean, two patches) that is a good idea. But the patch is good. -- Reviewed-by: Paulo Vital <pvital@linux.vnet.ibm.com> On Tue, 2014-09-30 at 15:03 -0300, Crístian Viana wrote:
Currently, the command "make check-local" runs the PEP8 verification rules only on files listed in a configuration files. New files must still be added manually and not all files are being checked.
List the files which *shouldn't* be checked against the PEP8 rules instead of listing the files which should be checked. Also, fix the errors on those new files.
The blacklisted files are: src/kimchi/{i18n,websocket,websockify}.py.
Signed-off-by: Crístian Viana <vianac@linux.vnet.ibm.com> --- Makefile.am | 48 ++------------------------------------------- src/kimchi/__init__.py | 2 +- src/kimchi/basemodel.py | 4 +++- src/kimchi/netinfo.py | 2 +- src/kimchi/screenshot.py | 17 +++++++++------- src/kimchi/sslcert.py | 5 +++-- src/kimchi/vmdisks.py | 6 +++--- src/kimchi/vnc.py | 2 +- src/kimchi/xmlutils.py | 2 +- tests/test_authorization.py | 20 +++++++++++-------- tests/test_exception.py | 10 +++++----- tests/test_server.py | 5 +---- tests/test_vmtemplate.py | 2 +- 13 files changed, 44 insertions(+), 81 deletions(-)
diff --git a/Makefile.am b/Makefile.am index 3293d9e..c04ba32 100644 --- a/Makefile.am +++ b/Makefile.am @@ -38,51 +38,7 @@ EXTRA_DIST = \ $(NULL)
-# When fixing a file to conform with pep8, add it to the WL here. -# So it will be checked from now on. -PEP8_WHITELIST = \ - plugins/__init__.py \ - plugins/sample/__init__.py \ - plugins/sample/model.py \ - src/kimchid.in \ - src/kimchi/asynctask.py \ - src/kimchi/auth.py \ - src/kimchi/cachebust.py \ - src/kimchi/config.py.in \ - src/kimchi/control/*.py \ - src/kimchi/control/vm/*.py \ - src/kimchi/disks.py \ - src/kimchi/distroloader.py \ - src/kimchi/exception.py \ - src/kimchi/featuretests.py \ - src/kimchi/imageinfo.py \ - src/kimchi/iscsi.py \ - src/kimchi/isoinfo.py \ - src/kimchi/kvmusertests.py \ - src/kimchi/mockmodel.py \ - src/kimchi/model/*.py \ - src/kimchi/objectstore.py \ - src/kimchi/osinfo.py \ - src/kimchi/proxy.py \ - src/kimchi/repositories.py \ - src/kimchi/rollbackcontext.py \ - src/kimchi/root.py \ - src/kimchi/scan.py \ - src/kimchi/server.py \ - src/kimchi/swupdate.py \ - src/kimchi/template.py \ - src/kimchi/utils.py \ - src/kimchi/vmtemplate.py \ - tests/test_config.py.in \ - tests/test_mockmodel.py \ - tests/test_model.py \ - tests/test_osinfo.py \ - tests/test_plugin.py \ - tests/test_rest.py \ - tests/test_rollbackcontext.py \ - tests/test_storagepool.py \ - tests/utils.py \ - $(NULL) +PEP8_BLACKLIST = "src/kimchi/i18n.py,src/kimchi/websocket.py,src/kimchi/websockify.py"
SKIP_PYFLAKES_ERR = "\./src/kimchi/websocket\.py"
@@ -98,7 +54,7 @@ check-local: while read LINE; do echo "$$LINE"; false; done
$(PEP8) --version - $(PEP8) --filename '*.py,*.py.in' $(PEP8_WHITELIST) + $(PEP8) --filename '*.py,*.py.in' --exclude="$(PEP8_BLACKLIST)" .
# Link built mo files in the source tree to enable use of translations from diff --git a/src/kimchi/__init__.py b/src/kimchi/__init__.py index 1237e99..edf8e5d 100644 --- a/src/kimchi/__init__.py +++ b/src/kimchi/__init__.py @@ -15,4 +15,4 @@ # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/src/kimchi/basemodel.py b/src/kimchi/basemodel.py index 93aab0c..096c66b 100644 --- a/src/kimchi/basemodel.py +++ b/src/kimchi/basemodel.py @@ -46,7 +46,9 @@ class BaseModel(object):
class Singleton(type): _instances = {} + def __call__(cls, *args, **kwargs): if cls not in cls._instances: - cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs) + inst = super(Singleton, cls).__call__(*args, **kwargs) + cls._instances[cls] = inst return cls._instances[cls] diff --git a/src/kimchi/netinfo.py b/src/kimchi/netinfo.py index 2eaf4ac..bb50479 100644 --- a/src/kimchi/netinfo.py +++ b/src/kimchi/netinfo.py @@ -185,7 +185,7 @@ def get_interface_type(iface):
def get_interface_info(iface): - if not iface in ethtool.get_devices(): + if iface not in ethtool.get_devices(): raise ValueError('unknown interface: %s' % iface)
ipaddr = '' diff --git a/src/kimchi/screenshot.py b/src/kimchi/screenshot.py index 8528a39..e599d40 100644 --- a/src/kimchi/screenshot.py +++ b/src/kimchi/screenshot.py @@ -15,7 +15,7 @@ # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA #
import glob @@ -39,6 +39,7 @@ from kimchi.utils import kimchi_log (fd, pipe) = tempfile.mkstemp() stream_test_result = None
+ class VMScreenshot(object): OUTDATED_SECS = 5 THUMBNAIL_SIZE = (256, 256) @@ -48,8 +49,9 @@ class VMScreenshot(object): def __init__(self, args): self.vm_uuid = args['uuid'] args.setdefault('thumbnail', - os.path.join(config.get_screenshot_path(), - '%s-%s.png' % (self.vm_uuid, str(uuid.uuid4())))) + os.path.join(config.get_screenshot_path(), + '%s-%s.png' % + (self.vm_uuid, str(uuid.uuid4())))) self.info = args
@staticmethod @@ -66,8 +68,8 @@ class VMScreenshot(object): if now - last_update > self.OUTDATED_SECS: self._clean_extra(self.LIVE_WINDOW) self._generate_thumbnail() - return '/data/screenshots/%s' % os.path.basename(self.info['thumbnail']) - + return '/data/screenshots/%s' %\ + os.path.basename(self.info['thumbnail'])
def _clean_extra(self, window=-1): """ @@ -77,7 +79,8 @@ class VMScreenshot(object): try: now = time.time() clear_list = glob.glob("%s/%s-*.png" % - (config.get_screenshot_path(), self.vm_uuid)) + (config.get_screenshot_path(), + self.vm_uuid)) for f in clear_list: if now - os.path.getmtime(f) > window: os.unlink(f) @@ -122,7 +125,7 @@ class VMScreenshot(object): else: counter = 0 ret = os.waitpid(pid, os.WNOHANG) - while ret == (0,0) and counter < 3: + while ret == (0, 0) and counter < 3: counter += 1 time.sleep(1) ret = os.waitpid(pid, os.WNOHANG) diff --git a/src/kimchi/sslcert.py b/src/kimchi/sslcert.py index bf4d261..e772dc8 100644 --- a/src/kimchi/sslcert.py +++ b/src/kimchi/sslcert.py @@ -19,7 +19,7 @@ # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
import time
@@ -34,6 +34,7 @@ class SSLCert(object): def _gen(self): def keygen_cb(*args): pass + def passphrase_cb(*args): return ''
@@ -54,7 +55,6 @@ class SSLCert(object): subject.CN = 'kimchi' subject.O = 'kimchi-project.org'
- t = long(time.time()) + time.timezone now = ASN1.ASN1_UTCTIME() now.set_time(t) @@ -80,6 +80,7 @@ class SSLCert(object): def key_pem(self): return self._key
+ def main(): c = SSLCert() print c.cert_text() diff --git a/src/kimchi/vmdisks.py b/src/kimchi/vmdisks.py index b61c883..f1c3f02 100644 --- a/src/kimchi/vmdisks.py +++ b/src/kimchi/vmdisks.py @@ -39,9 +39,9 @@ def get_vm_disk(dom, dev_name): # Retrieve disk xml and format return dict disk = get_device_xml(dom, dev_name) if disk is None: - raise NotFoundError( - "KCHVMSTOR0007E", - {'dev_name': dev_name, 'vm_name': dom.name()}) + raise NotFoundError("KCHVMSTOR0007E", + {'dev_name': dev_name, + 'vm_name': dom.name()}) path = "" dev_bus = disk.target.attrib['bus'] try: diff --git a/src/kimchi/vnc.py b/src/kimchi/vnc.py index cfa7c6d..09a4cad 100644 --- a/src/kimchi/vnc.py +++ b/src/kimchi/vnc.py @@ -16,7 +16,7 @@ # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
import base64 import errno diff --git a/src/kimchi/xmlutils.py b/src/kimchi/xmlutils.py index 8612e66..d3db32a 100644 --- a/src/kimchi/xmlutils.py +++ b/src/kimchi/xmlutils.py @@ -26,7 +26,7 @@ from xml.etree import ElementTree def xpath_get_text(xml, expr): doc = libxml2.parseDoc(xml) res = doc.xpathEval(expr) - ret = [None if x.children == None else x.children.content for x in res] + ret = [None if x.children is None else x.children.content for x in res]
doc.freeDoc() return ret diff --git a/tests/test_authorization.py b/tests/test_authorization.py index 2c342a5..71b416f 100644 --- a/tests/test_authorization.py +++ b/tests/test_authorization.py @@ -40,7 +40,7 @@ ssl_port = None def setUpModule(): global test_server, model, host, port, ssl_port
- patch_auth(sudo = False) + patch_auth(sudo=False) model = kimchi.mockmodel.MockModel('/tmp/obj-store-test') host = '127.0.0.1' port = get_free_port('http') @@ -111,23 +111,27 @@ class AuthorizationTests(unittest.TestCase): resp = self.request('/templates/test', '{}', 'DELETE') self.assertEquals(403, resp.status)
- # Non-root users can only get vms authorized to them model.templates_create({'name': u'test', 'cdrom': '/nonexistent.iso'})
model.vms_create({'name': u'test-me', 'template': '/templates/test'}) - model.vm_update(u'test-me', {'users': [ kimchi.mockmodel.fake_user.keys()[0] ], 'groups': []}) + model.vm_update(u'test-me', + {'users': [kimchi.mockmodel.fake_user.keys()[0]], + 'groups': []})
- model.vms_create({'name': u'test-usera', 'template': '/templates/test'}) - model.vm_update(u'test-usera', {'users': [ 'userA' ], 'groups': []}) + model.vms_create({'name': u'test-usera', + 'template': '/templates/test'}) + model.vm_update(u'test-usera', {'users': ['userA'], 'groups': []})
- model.vms_create({'name': u'test-groupa', 'template': '/templates/test'}) - model.vm_update(u'test-groupa', {'groups': [ 'groupA' ]}) + model.vms_create({'name': u'test-groupa', + 'template': '/templates/test'}) + model.vm_update(u'test-groupa', {'groups': ['groupA']})
resp = self.request('/vms', '{}', 'GET') self.assertEquals(200, resp.status) vms_data = json.loads(resp.read()) - self.assertEquals([ u'test-groupa', u'test-me' ], sorted([ v['name'] for v in vms_data ])) + self.assertEquals([u'test-groupa', u'test-me'], + sorted([v['name'] for v in vms_data])) resp = self.request('/vms', req, 'POST') self.assertEquals(403, resp.status)
diff --git a/tests/test_exception.py b/tests/test_exception.py index 90c1ea1..a533015 100644 --- a/tests/test_exception.py +++ b/tests/test_exception.py @@ -15,7 +15,7 @@ # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
import json import os @@ -77,8 +77,8 @@ class ExceptionTests(unittest.TestCase): req = json.dumps({}) resp = json.loads(request(host, ssl_port, '/vms', req, 'POST').read()) self.assertEquals('400 Bad Request', resp.get('code')) - msg = u"KCHVM0016E: Specify a template to create a virtual machine from" - self.assertEquals(msg, resp.get('reason')) + m = u"KCHVM0016E: Specify a template to create a virtual machine from" + self.assertEquals(m, resp.get('reason')) self.assertNotIn('call_stack', resp)
def test_development_env(self): @@ -106,7 +106,7 @@ class ExceptionTests(unittest.TestCase): # test 400 missing required parameter req = json.dumps({}) resp = json.loads(request(host, ssl_port, '/vms', req, 'POST').read()) - msg = u"KCHVM0016E: Specify a template to create a virtual machine from" + m = u"KCHVM0016E: Specify a template to create a virtual machine from" self.assertEquals('400 Bad Request', resp.get('code')) - self.assertEquals(msg, resp.get('reason')) + self.assertEquals(m, resp.get('reason')) self.assertIn('call_stack', resp) diff --git a/tests/test_server.py b/tests/test_server.py index 9beba6c..bebc383 100644 --- a/tests/test_server.py +++ b/tests/test_server.py @@ -15,7 +15,7 @@ # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
import os import unittest @@ -24,7 +24,6 @@ import unittest import utils import kimchi.mockmodel
-#utils.silence_server()
class ServerTests(unittest.TestCase): def test_server_start(self): @@ -44,5 +43,3 @@ class ServerTests(unittest.TestCase): finally: os.unlink('/tmp/obj-store-test') s.stop() - - diff --git a/tests/test_vmtemplate.py b/tests/test_vmtemplate.py index 4ae1d36..2a6fb8e 100644 --- a/tests/test_vmtemplate.py +++ b/tests/test_vmtemplate.py @@ -15,7 +15,7 @@ # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
import os import unittest

"make check-local" failed for me with this patch: /bin/pep8 --version 1.5.6 /bin/pep8 --filename '*.py,*.py.in' --exclude=""src/kimchi/i18n.py,src/kimchi/websocket.py,src/kimchi/websockify.py"" . ./tests/test_config.py:51:80: E501 line too long (90 > 79 characters) ./tests/test_config.py:52:80: E501 line too long (102 > 79 characters) ./tests/test_config.py:73:80: E501 line too long (105 > 79 characters) ./src/kimchi/config.py:96:80: E501 line too long (80 > 79 characters) ./src/kimchi/config.py:140:80: E501 line too long (99 > 79 characters) make: *** [check-local] Error 1 On 09/30/2014 03:03 PM, Crístian Viana wrote:
Currently, the command "make check-local" runs the PEP8 verification rules only on files listed in a configuration files. New files must still be added manually and not all files are being checked.
List the files which *shouldn't* be checked against the PEP8 rules instead of listing the files which should be checked. Also, fix the errors on those new files.
The blacklisted files are: src/kimchi/{i18n,websocket,websockify}.py.
Signed-off-by: Crístian Viana <vianac@linux.vnet.ibm.com> --- Makefile.am | 48 ++------------------------------------------- src/kimchi/__init__.py | 2 +- src/kimchi/basemodel.py | 4 +++- src/kimchi/netinfo.py | 2 +- src/kimchi/screenshot.py | 17 +++++++++------- src/kimchi/sslcert.py | 5 +++-- src/kimchi/vmdisks.py | 6 +++--- src/kimchi/vnc.py | 2 +- src/kimchi/xmlutils.py | 2 +- tests/test_authorization.py | 20 +++++++++++-------- tests/test_exception.py | 10 +++++----- tests/test_server.py | 5 +---- tests/test_vmtemplate.py | 2 +- 13 files changed, 44 insertions(+), 81 deletions(-)
diff --git a/Makefile.am b/Makefile.am index 3293d9e..c04ba32 100644 --- a/Makefile.am +++ b/Makefile.am @@ -38,51 +38,7 @@ EXTRA_DIST = \ $(NULL)
-# When fixing a file to conform with pep8, add it to the WL here. -# So it will be checked from now on. -PEP8_WHITELIST = \ - plugins/__init__.py \ - plugins/sample/__init__.py \ - plugins/sample/model.py \ - src/kimchid.in \ - src/kimchi/asynctask.py \ - src/kimchi/auth.py \ - src/kimchi/cachebust.py \ - src/kimchi/config.py.in \ - src/kimchi/control/*.py \ - src/kimchi/control/vm/*.py \ - src/kimchi/disks.py \ - src/kimchi/distroloader.py \ - src/kimchi/exception.py \ - src/kimchi/featuretests.py \ - src/kimchi/imageinfo.py \ - src/kimchi/iscsi.py \ - src/kimchi/isoinfo.py \ - src/kimchi/kvmusertests.py \ - src/kimchi/mockmodel.py \ - src/kimchi/model/*.py \ - src/kimchi/objectstore.py \ - src/kimchi/osinfo.py \ - src/kimchi/proxy.py \ - src/kimchi/repositories.py \ - src/kimchi/rollbackcontext.py \ - src/kimchi/root.py \ - src/kimchi/scan.py \ - src/kimchi/server.py \ - src/kimchi/swupdate.py \ - src/kimchi/template.py \ - src/kimchi/utils.py \ - src/kimchi/vmtemplate.py \ - tests/test_config.py.in \ - tests/test_mockmodel.py \ - tests/test_model.py \ - tests/test_osinfo.py \ - tests/test_plugin.py \ - tests/test_rest.py \ - tests/test_rollbackcontext.py \ - tests/test_storagepool.py \ - tests/utils.py \ - $(NULL) +PEP8_BLACKLIST = "src/kimchi/i18n.py,src/kimchi/websocket.py,src/kimchi/websockify.py"
SKIP_PYFLAKES_ERR = "\./src/kimchi/websocket\.py"
@@ -98,7 +54,7 @@ check-local: while read LINE; do echo "$$LINE"; false; done
$(PEP8) --version - $(PEP8) --filename '*.py,*.py.in' $(PEP8_WHITELIST) + $(PEP8) --filename '*.py,*.py.in' --exclude="$(PEP8_BLACKLIST)" .
# Link built mo files in the source tree to enable use of translations from diff --git a/src/kimchi/__init__.py b/src/kimchi/__init__.py index 1237e99..edf8e5d 100644 --- a/src/kimchi/__init__.py +++ b/src/kimchi/__init__.py @@ -15,4 +15,4 @@ # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/src/kimchi/basemodel.py b/src/kimchi/basemodel.py index 93aab0c..096c66b 100644 --- a/src/kimchi/basemodel.py +++ b/src/kimchi/basemodel.py @@ -46,7 +46,9 @@ class BaseModel(object):
class Singleton(type): _instances = {} + def __call__(cls, *args, **kwargs): if cls not in cls._instances: - cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs) + inst = super(Singleton, cls).__call__(*args, **kwargs) + cls._instances[cls] = inst return cls._instances[cls] diff --git a/src/kimchi/netinfo.py b/src/kimchi/netinfo.py index 2eaf4ac..bb50479 100644 --- a/src/kimchi/netinfo.py +++ b/src/kimchi/netinfo.py @@ -185,7 +185,7 @@ def get_interface_type(iface):
def get_interface_info(iface): - if not iface in ethtool.get_devices(): + if iface not in ethtool.get_devices(): raise ValueError('unknown interface: %s' % iface)
ipaddr = '' diff --git a/src/kimchi/screenshot.py b/src/kimchi/screenshot.py index 8528a39..e599d40 100644 --- a/src/kimchi/screenshot.py +++ b/src/kimchi/screenshot.py @@ -15,7 +15,7 @@ # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA #
import glob @@ -39,6 +39,7 @@ from kimchi.utils import kimchi_log (fd, pipe) = tempfile.mkstemp() stream_test_result = None
+ class VMScreenshot(object): OUTDATED_SECS = 5 THUMBNAIL_SIZE = (256, 256) @@ -48,8 +49,9 @@ class VMScreenshot(object): def __init__(self, args): self.vm_uuid = args['uuid'] args.setdefault('thumbnail', - os.path.join(config.get_screenshot_path(), - '%s-%s.png' % (self.vm_uuid, str(uuid.uuid4())))) + os.path.join(config.get_screenshot_path(), + '%s-%s.png' % + (self.vm_uuid, str(uuid.uuid4())))) self.info = args
@staticmethod @@ -66,8 +68,8 @@ class VMScreenshot(object): if now - last_update > self.OUTDATED_SECS: self._clean_extra(self.LIVE_WINDOW) self._generate_thumbnail() - return '/data/screenshots/%s' % os.path.basename(self.info['thumbnail']) - + return '/data/screenshots/%s' %\ + os.path.basename(self.info['thumbnail'])
def _clean_extra(self, window=-1): """ @@ -77,7 +79,8 @@ class VMScreenshot(object): try: now = time.time() clear_list = glob.glob("%s/%s-*.png" % - (config.get_screenshot_path(), self.vm_uuid)) + (config.get_screenshot_path(), + self.vm_uuid)) for f in clear_list: if now - os.path.getmtime(f) > window: os.unlink(f) @@ -122,7 +125,7 @@ class VMScreenshot(object): else: counter = 0 ret = os.waitpid(pid, os.WNOHANG) - while ret == (0,0) and counter < 3: + while ret == (0, 0) and counter < 3: counter += 1 time.sleep(1) ret = os.waitpid(pid, os.WNOHANG) diff --git a/src/kimchi/sslcert.py b/src/kimchi/sslcert.py index bf4d261..e772dc8 100644 --- a/src/kimchi/sslcert.py +++ b/src/kimchi/sslcert.py @@ -19,7 +19,7 @@ # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
import time
@@ -34,6 +34,7 @@ class SSLCert(object): def _gen(self): def keygen_cb(*args): pass + def passphrase_cb(*args): return ''
@@ -54,7 +55,6 @@ class SSLCert(object): subject.CN = 'kimchi' subject.O = 'kimchi-project.org'
- t = long(time.time()) + time.timezone now = ASN1.ASN1_UTCTIME() now.set_time(t) @@ -80,6 +80,7 @@ class SSLCert(object): def key_pem(self): return self._key
+ def main(): c = SSLCert() print c.cert_text() diff --git a/src/kimchi/vmdisks.py b/src/kimchi/vmdisks.py index b61c883..f1c3f02 100644 --- a/src/kimchi/vmdisks.py +++ b/src/kimchi/vmdisks.py @@ -39,9 +39,9 @@ def get_vm_disk(dom, dev_name): # Retrieve disk xml and format return dict disk = get_device_xml(dom, dev_name) if disk is None: - raise NotFoundError( - "KCHVMSTOR0007E", - {'dev_name': dev_name, 'vm_name': dom.name()}) + raise NotFoundError("KCHVMSTOR0007E", + {'dev_name': dev_name, + 'vm_name': dom.name()}) path = "" dev_bus = disk.target.attrib['bus'] try: diff --git a/src/kimchi/vnc.py b/src/kimchi/vnc.py index cfa7c6d..09a4cad 100644 --- a/src/kimchi/vnc.py +++ b/src/kimchi/vnc.py @@ -16,7 +16,7 @@ # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
import base64 import errno diff --git a/src/kimchi/xmlutils.py b/src/kimchi/xmlutils.py index 8612e66..d3db32a 100644 --- a/src/kimchi/xmlutils.py +++ b/src/kimchi/xmlutils.py @@ -26,7 +26,7 @@ from xml.etree import ElementTree def xpath_get_text(xml, expr): doc = libxml2.parseDoc(xml) res = doc.xpathEval(expr) - ret = [None if x.children == None else x.children.content for x in res] + ret = [None if x.children is None else x.children.content for x in res]
doc.freeDoc() return ret diff --git a/tests/test_authorization.py b/tests/test_authorization.py index 2c342a5..71b416f 100644 --- a/tests/test_authorization.py +++ b/tests/test_authorization.py @@ -40,7 +40,7 @@ ssl_port = None def setUpModule(): global test_server, model, host, port, ssl_port
- patch_auth(sudo = False) + patch_auth(sudo=False) model = kimchi.mockmodel.MockModel('/tmp/obj-store-test') host = '127.0.0.1' port = get_free_port('http') @@ -111,23 +111,27 @@ class AuthorizationTests(unittest.TestCase): resp = self.request('/templates/test', '{}', 'DELETE') self.assertEquals(403, resp.status)
- # Non-root users can only get vms authorized to them model.templates_create({'name': u'test', 'cdrom': '/nonexistent.iso'})
model.vms_create({'name': u'test-me', 'template': '/templates/test'}) - model.vm_update(u'test-me', {'users': [ kimchi.mockmodel.fake_user.keys()[0] ], 'groups': []}) + model.vm_update(u'test-me', + {'users': [kimchi.mockmodel.fake_user.keys()[0]], + 'groups': []})
- model.vms_create({'name': u'test-usera', 'template': '/templates/test'}) - model.vm_update(u'test-usera', {'users': [ 'userA' ], 'groups': []}) + model.vms_create({'name': u'test-usera', + 'template': '/templates/test'}) + model.vm_update(u'test-usera', {'users': ['userA'], 'groups': []})
- model.vms_create({'name': u'test-groupa', 'template': '/templates/test'}) - model.vm_update(u'test-groupa', {'groups': [ 'groupA' ]}) + model.vms_create({'name': u'test-groupa', + 'template': '/templates/test'}) + model.vm_update(u'test-groupa', {'groups': ['groupA']})
resp = self.request('/vms', '{}', 'GET') self.assertEquals(200, resp.status) vms_data = json.loads(resp.read()) - self.assertEquals([ u'test-groupa', u'test-me' ], sorted([ v['name'] for v in vms_data ])) + self.assertEquals([u'test-groupa', u'test-me'], + sorted([v['name'] for v in vms_data])) resp = self.request('/vms', req, 'POST') self.assertEquals(403, resp.status)
diff --git a/tests/test_exception.py b/tests/test_exception.py index 90c1ea1..a533015 100644 --- a/tests/test_exception.py +++ b/tests/test_exception.py @@ -15,7 +15,7 @@ # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
import json import os @@ -77,8 +77,8 @@ class ExceptionTests(unittest.TestCase): req = json.dumps({}) resp = json.loads(request(host, ssl_port, '/vms', req, 'POST').read()) self.assertEquals('400 Bad Request', resp.get('code')) - msg = u"KCHVM0016E: Specify a template to create a virtual machine from" - self.assertEquals(msg, resp.get('reason')) + m = u"KCHVM0016E: Specify a template to create a virtual machine from" + self.assertEquals(m, resp.get('reason')) self.assertNotIn('call_stack', resp)
def test_development_env(self): @@ -106,7 +106,7 @@ class ExceptionTests(unittest.TestCase): # test 400 missing required parameter req = json.dumps({}) resp = json.loads(request(host, ssl_port, '/vms', req, 'POST').read()) - msg = u"KCHVM0016E: Specify a template to create a virtual machine from" + m = u"KCHVM0016E: Specify a template to create a virtual machine from" self.assertEquals('400 Bad Request', resp.get('code')) - self.assertEquals(msg, resp.get('reason')) + self.assertEquals(m, resp.get('reason')) self.assertIn('call_stack', resp) diff --git a/tests/test_server.py b/tests/test_server.py index 9beba6c..bebc383 100644 --- a/tests/test_server.py +++ b/tests/test_server.py @@ -15,7 +15,7 @@ # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
import os import unittest @@ -24,7 +24,6 @@ import unittest import utils import kimchi.mockmodel
-#utils.silence_server()
class ServerTests(unittest.TestCase): def test_server_start(self): @@ -44,5 +43,3 @@ class ServerTests(unittest.TestCase): finally: os.unlink('/tmp/obj-store-test') s.stop() - - diff --git a/tests/test_vmtemplate.py b/tests/test_vmtemplate.py index 4ae1d36..2a6fb8e 100644 --- a/tests/test_vmtemplate.py +++ b/tests/test_vmtemplate.py @@ -15,7 +15,7 @@ # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
import os import unittest

On Sex, 2014-10-03 at 15:25 -0300, Aline Manera wrote:
"make check-local" failed for me with this patch:
/bin/pep8 --version 1.5.6 /bin/pep8 --filename '*.py,*.py.in' --exclude=""src/kimchi/i18n.py,src/kimchi/websocket.py,src/kimchi/websockify.py"" . ./tests/test_config.py:51:80: E501 line too long (90 > 79 characters) ./tests/test_config.py:52:80: E501 line too long (102 > 79 characters) ./tests/test_config.py:73:80: E501 line too long (105 > 79 characters) ./src/kimchi/config.py:96:80: E501 line too long (80 > 79 characters) ./src/kimchi/config.py:140:80: E501 line too long (99 > 79 characters) make: *** [check-local] Error 1
I did see those errors before but as those files are listed in .gitignore, I thought that wouldn't matter. Especially because they basically contain configuration values, not proper source code (i.e. those values could be in an external config file, like XML, because they're plain values, instead of replacing a Python source file). Looking at it more closely, I see that they are generated by their corresponding .in files and we should actually fix them. But those files - including the bad lines reported above - are generated by injecting text into them automatically and we cannot make sure those paths are PEP8-formatted after appending text inside an existing file. Well, maybe we could, but that would be a big, worthless effort. The files .py.in are already being checked by PEP8 so the original source code prior to the text replacement is valid. The best solution I see now is to add those two files (i.e. src/kimchi/config.py and tests/test_config.py) to the blacklist as well, while still checking their original .in files. What do you think? -- Best regards, Crístian.

On 10/03/2014 04:26 PM, Crístian Viana wrote:
"make check-local" failed for me with this patch:
/bin/pep8 --version 1.5.6 /bin/pep8 --filename '*.py,*.py.in' --exclude=""src/kimchi/i18n.py,src/kimchi/websocket.py,src/kimchi/websockify.py"" . ./tests/test_config.py:51:80: E501 line too long (90 > 79 characters) ./tests/test_config.py:52:80: E501 line too long (102 > 79 characters) ./tests/test_config.py:73:80: E501 line too long (105 > 79 characters) ./src/kimchi/config.py:96:80: E501 line too long (80 > 79 characters) ./src/kimchi/config.py:140:80: E501 line too long (99 > 79 characters) make: *** [check-local] Error 1 I did see those errors before but as those files are listed in .gitignore, I thought that wouldn't matter. Especially because they basically contain configuration values, not proper source code (i.e.
On Sex, 2014-10-03 at 15:25 -0300, Aline Manera wrote: those values could be in an external config file, like XML, because they're plain values, instead of replacing a Python source file). Looking at it more closely, I see that they are generated by their corresponding .in files and we should actually fix them. But those files - including the bad lines reported above - are generated by injecting text into them automatically and we cannot make sure those paths are PEP8-formatted after appending text inside an existing file. Well, maybe we could, but that would be a big, worthless effort.
The files .py.in are already being checked by PEP8 so the original source code prior to the text replacement is valid. The best solution I see now is to add those two files (i.e. src/kimchi/config.py and tests/test_config.py) to the blacklist as well, while still checking their original .in files. What do you think?
ACK.
participants (3)
-
Aline Manera
-
Crístian Viana
-
Paulo Ricardo Paz Vital