← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1356687] [NEW] hacking check for jsonutils produces pep8 traceback

 

Public bug reported:

the new jsonutils hacking check produces a pep8 traceback because it
returns a set (column offset and error text) instead of an iterable (as
logical line checks, like this check, should).

commit 243879f5c51fc45f03491bcb78765945ddf76be8
Change-Id: I86ed6cd3316dd4da5e1b10b36a3ddba3739316d3

===== 8< ===== TEST CASE ===== 8< =====
$ echo 'foo = json.dumps(bar)' >nova/foobar.py
$ flake8 -vv nova/foobar.py
local configuration: in /home/dev/Desktop/nova-test
  ignore = E121,E122,E123,E124,E125,E126,E127,E128,E129,E131,E251,H405,H803,H904
  exclude = .venv,.git,.tox,dist,doc,*openstack/common*,*lib/python*,*egg,build,tools
checking nova/foobar.py
foo = json.dumps(bar)
Traceback (most recent call last):
  File "/home/dev/Desktop/nova-test/.venv/bin/flake8", line 9, in <module>
    load_entry_point('flake8==2.1.0', 'console_scripts', 'flake8')()
  File "/home/dev/Desktop/nova-test/.venv/local/lib/python2.7/site-packages/flake8/main.py", line 32, in main
    report = flake8_style.check_files()
  File "/home/dev/Desktop/nova-test/.venv/local/lib/python2.7/site-packages/pep8.py", line 1672, in check_files
    runner(path)
  File "/home/dev/Desktop/nova-test/.venv/local/lib/python2.7/site-packages/flake8/engine.py", line 73, in input_file
    return fchecker.check_all(expected=expected, line_offset=line_offset)
  File "/home/dev/Desktop/nova-test/.venv/local/lib/python2.7/site-packages/pep8.py", line 1436, in check_all
    self.check_logical()
  File "/home/dev/Desktop/nova-test/.venv/local/lib/python2.7/site-packages/pep8.py", line 1338, in check_logical
    for offset, text in self.run_check(check, argument_names) or ():
TypeError: 'int' object is not iterable
===== 8< ===== TEST CASE ===== 8< =====


diff --git a/nova/hacking/checks.py b/nova/hacking/checks.py
index a1dd614..7fe7412 100644
--- a/nova/hacking/checks.py
+++ b/nova/hacking/checks.py
@@ -300,7 +300,7 @@ def use_jsonutils(logical_line, filename):
         for f in json_funcs:
             pos = logical_line.find('json.%s' % f)
             if pos != -1:
-                return (pos, msg % {'fun': f})
+                yield (pos, msg % {'fun': f})
 
 
 def factory(register):
===== 8< ===== PATCH ===== 8< =====

it's late, so tomorrow, if there hasn't been any activity on this, then
i'll submit a patch for review.

** Affects: nova
     Importance: Undecided
         Status: New

** Patch added: "patch to make use_jsonutils() return an iterable by way of a yield statement as the pep8 api requires"
   https://bugs.launchpad.net/bugs/1356687/+attachment/4177110/+files/jsonutils_hacking_check.patch

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1356687

Title:
  hacking check for jsonutils produces pep8 traceback

Status in OpenStack Compute (Nova):
  New

Bug description:
  the new jsonutils hacking check produces a pep8 traceback because it
  returns a set (column offset and error text) instead of an iterable
  (as logical line checks, like this check, should).

  commit 243879f5c51fc45f03491bcb78765945ddf76be8
  Change-Id: I86ed6cd3316dd4da5e1b10b36a3ddba3739316d3

  ===== 8< ===== TEST CASE ===== 8< =====
  $ echo 'foo = json.dumps(bar)' >nova/foobar.py
  $ flake8 -vv nova/foobar.py
  local configuration: in /home/dev/Desktop/nova-test
    ignore = E121,E122,E123,E124,E125,E126,E127,E128,E129,E131,E251,H405,H803,H904
    exclude = .venv,.git,.tox,dist,doc,*openstack/common*,*lib/python*,*egg,build,tools
  checking nova/foobar.py
  foo = json.dumps(bar)
  Traceback (most recent call last):
    File "/home/dev/Desktop/nova-test/.venv/bin/flake8", line 9, in <module>
      load_entry_point('flake8==2.1.0', 'console_scripts', 'flake8')()
    File "/home/dev/Desktop/nova-test/.venv/local/lib/python2.7/site-packages/flake8/main.py", line 32, in main
      report = flake8_style.check_files()
    File "/home/dev/Desktop/nova-test/.venv/local/lib/python2.7/site-packages/pep8.py", line 1672, in check_files
      runner(path)
    File "/home/dev/Desktop/nova-test/.venv/local/lib/python2.7/site-packages/flake8/engine.py", line 73, in input_file
      return fchecker.check_all(expected=expected, line_offset=line_offset)
    File "/home/dev/Desktop/nova-test/.venv/local/lib/python2.7/site-packages/pep8.py", line 1436, in check_all
      self.check_logical()
    File "/home/dev/Desktop/nova-test/.venv/local/lib/python2.7/site-packages/pep8.py", line 1338, in check_logical
      for offset, text in self.run_check(check, argument_names) or ():
  TypeError: 'int' object is not iterable
  ===== 8< ===== TEST CASE ===== 8< =====

  
  diff --git a/nova/hacking/checks.py b/nova/hacking/checks.py
  index a1dd614..7fe7412 100644
  --- a/nova/hacking/checks.py
  +++ b/nova/hacking/checks.py
  @@ -300,7 +300,7 @@ def use_jsonutils(logical_line, filename):
           for f in json_funcs:
               pos = logical_line.find('json.%s' % f)
               if pos != -1:
  -                return (pos, msg % {'fun': f})
  +                yield (pos, msg % {'fun': f})
   
   
   def factory(register):
  ===== 8< ===== PATCH ===== 8< =====

  it's late, so tomorrow, if there hasn't been any activity on this,
  then i'll submit a patch for review.

To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1356687/+subscriptions


Follow ups

References