[PATCH v2 0/2] pep8: Fix errors

This is the difference between this and the previous patchset (v1): - Add the files *config.py to the PEP8 blacklist. - Split the previous patch into two separate patches: one which fixes all the files and another one which enables PEP8 for every file except the ones blacklisted. Crístian Viana (2): pep8: Fix errors in all files pep8: Use blacklist instead of whitelist 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(-) -- 1.9.3

Some files are still not compliant with the PEP8 rules as they're not listed in the PEP8_WHITELIST variable. Fix those files in order to make the entire project compliant with the PEP8 rules. Signed-off-by: Crístian Viana <vianac@linux.vnet.ibm.com> --- 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 +- 12 files changed, 42 insertions(+), 35 deletions(-) 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

Currently, the command "make check-local" runs the PEP8 verification rules only on files listed in a configuration file. 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. Reasons to blacklist each file: - src/kimchi/config.py and tests/test_config.py: those files are generated automatically by replacing strings inside them. We cannot guarantee that every line will still be shorter than 80 characters after replacing a text coming from an external resource. - src/kimchi/websocket.py and src/kimchi/websockify.py: those files are from a 3rd party library and weren't developed by the Kimchi team, so we don't need to check their style. - src/kimchi/i18n.py: this file only contains translatable strings. It would not be nice to wrap every line to 80 characters as they're not Python code but natural language text. Signed-off-by: Crístian Viana <vianac@linux.vnet.ibm.com> --- Makefile.am | 48 ++---------------------------------------------- 1 file changed, 2 insertions(+), 46 deletions(-) diff --git a/Makefile.am b/Makefile.am index 3293d9e..98be115 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/config.py,src/kimchi/i18n.py,src/kimchi/websocket.py,src/kimchi/websockify.py,tests/test_config.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 -- 1.9.3
participants (2)
-
Aline Manera
-
Crístian Viana