)]}'
{"nova/tests/conf_fixture.py":[{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"68e0f1267fe046596ffd3fbffb8d3f7cbf1f1098","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from nova import ipv6"},{"line_number":23,"context_line":"from nova.openstack.common import cfg"},{"line_number":24,"context_line":"from nova import paths"},{"line_number":25,"context_line":"import nova.tests.utils"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"CONF \u003d cfg.CONF"},{"line_number":28,"context_line":"CONF.import_opt(\u0027use_ipv6\u0027, \u0027nova.netconf\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FZBY%3D","line":25,"updated":"2013-01-24 11:30:06.000000000","message":"the shorter form seems better here\n\nfrom nova.tests import utils","commit_id":"01a9629da9edc8a58c461ba447dbbda120498754"}],"nova/tests/test_metadata.py":[{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"68e0f1267fe046596ffd3fbffb8d3f7cbf1f1098","unresolved":false,"context_lines":[{"line_number":19,"context_line":"\"\"\"Tests for metadata service.\"\"\""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"import base64"},{"line_number":22,"context_line":"import copy"},{"line_number":23,"context_line":"import json"},{"line_number":24,"context_line":"import re"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FZBM%3D","line":22,"updated":"2013-01-24 11:30:06.000000000","message":"hmmm... I get why we do this, but man does this uglify things.","commit_id":"01a9629da9edc8a58c461ba447dbbda120498754"}],"run_tests.sh":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"8ba9e3d4c9e88bedb022ceecee7a24810b204115","unresolved":false,"context_lines":[{"line_number":125,"context_line":"  srcfiles+\u003d\" setup.py\""},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"  # Until all these issues get fixed, ignore."},{"line_number":128,"context_line":"  ignore\u003d\u0027--ignore\u003dE12,E711,E721,E712,N403,N404,N302\u0027"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"  # First run the hacking selftest, to make sure it\u0027s right"},{"line_number":131,"context_line":"  echo \"Running hacking.py self test\""}],"source_content_type":"text/x-sh","patch_set":6,"id":"AAAAM3%2F%2FYlQ%3D","line":128,"updated":"2013-01-24 17:00:49.000000000","message":"So, if I read this patch correctly, you\u0027ve corrected a lot of 302s.  Are there still some left?","commit_id":"4845fc2720a0ab3ff4f15fc8f3f00573b617ce5b"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"63612f6a1ec615bf2a1b2f718a818f7036211be7","unresolved":false,"context_lines":[{"line_number":125,"context_line":"  srcfiles+\u003d\" setup.py\""},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"  # Until all these issues get fixed, ignore."},{"line_number":128,"context_line":"  ignore\u003d\u0027--ignore\u003dE12,E711,E721,E712,N403,N404,N302\u0027"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"  # First run the hacking selftest, to make sure it\u0027s right"},{"line_number":131,"context_line":"  echo \"Running hacking.py self test\""}],"source_content_type":"text/x-sh","patch_set":6,"id":"AAAAM3%2F%2FX9Y%3D","line":128,"in_reply_to":"AAAAM3%2F%2FYYc%3D","updated":"2013-01-24 22:30:04.000000000","message":"OK, fair enough…","commit_id":"4845fc2720a0ab3ff4f15fc8f3f00573b617ce5b"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"e6eb4b823a92f9f8a681bc9141171cca1a5f6151","unresolved":false,"context_lines":[{"line_number":125,"context_line":"  srcfiles+\u003d\" setup.py\""},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"  # Until all these issues get fixed, ignore."},{"line_number":128,"context_line":"  ignore\u003d\u0027--ignore\u003dE12,E711,E721,E712,N403,N404,N302\u0027"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"  # First run the hacking selftest, to make sure it\u0027s right"},{"line_number":131,"context_line":"  echo \"Running hacking.py self test\""}],"source_content_type":"text/x-sh","patch_set":6,"id":"AAAAM3%2F%2FYYc%3D","line":128,"in_reply_to":"AAAAM3%2F%2FYlQ%3D","updated":"2013-01-24 18:36:32.000000000","message":"There are still more. jog0 wanted to do this in parts.","commit_id":"4845fc2720a0ab3ff4f15fc8f3f00573b617ce5b"}],"smoketests/base.py":[{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"68e0f1267fe046596ffd3fbffb8d3f7cbf1f1098","unresolved":false,"context_lines":[{"line_number":17,"context_line":"#    under the License."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import boto"},{"line_number":20,"context_line":"import boto.ec2.regioninfo"},{"line_number":21,"context_line":"import commands"},{"line_number":22,"context_line":"import httplib"},{"line_number":23,"context_line":"import os"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FZBE%3D","line":20,"updated":"2013-01-24 11:30:06.000000000","message":"how about\n\nfrom boto.ec2 import regioninfo\n\nThen below wouldn\u0027t be so long.","commit_id":"01a9629da9edc8a58c461ba447dbbda120498754"}],"tools/hacking.py":[{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"f7cf24e78383469e80ddd0421f70b0fb5e65db53","unresolved":false,"context_lines":[{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    import_normalize(logical_line)"},{"line_number":244,"context_line":"    split_line \u003d logical_line.split()"},{"line_number":245,"context_line":"    if (\", \" not in logical_line and"},{"line_number":246,"context_line":"            split_line[0] in (\u0027import\u0027, \u0027from\u0027) and"},{"line_number":247,"context_line":"            (len(split_line) in (2, 4, 6)) and"},{"line_number":248,"context_line":"            split_line[1] !\u003d \"__future__\"):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2Fbac%3D","line":245,"updated":"2013-01-22 22:09:30.000000000","message":"I end up getting lost in this logic, could it be broken out to a few more utility functions just to get a better sense of what each bit is trying to do.","commit_id":"7206d29563af1f7f2c9dcf5753637d9d28596997"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"68e0f1267fe046596ffd3fbffb8d3f7cbf1f1098","unresolved":false,"context_lines":[{"line_number":242,"context_line":"                \"%s\" % mod)"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"    import_normalize(logical_line)"},{"line_number":245,"context_line":"    split_line \u003d logical_line.split()"},{"line_number":246,"context_line":"    if (\", \" not in logical_line and"},{"line_number":247,"context_line":"            split_line[0] in (\u0027import\u0027, \u0027from\u0027) and"},{"line_number":248,"context_line":"            (len(split_line) in (2, 4, 6)) and"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FZBA%3D","line":245,"updated":"2013-01-24 11:30:06.000000000","message":"Can we at least put a TODO in here that you are going to come back and clean this up? :)","commit_id":"01a9629da9edc8a58c461ba447dbbda120498754"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"37128ae89a4ce3bd1c9b41df479171b7aaa55f68","unresolved":false,"context_lines":[{"line_number":242,"context_line":"                \"%s\" % mod)"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"    import_normalize(logical_line)"},{"line_number":245,"context_line":"    split_line \u003d logical_line.split()"},{"line_number":246,"context_line":"    if (\", \" not in logical_line and"},{"line_number":247,"context_line":"            split_line[0] in (\u0027import\u0027, \u0027from\u0027) and"},{"line_number":248,"context_line":"            (len(split_line) in (2, 4, 6)) and"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FYz4%3D","line":245,"in_reply_to":"AAAAM3%2F%2FZBA%3D","updated":"2013-01-24 14:50:19.000000000","message":"See line 187","commit_id":"01a9629da9edc8a58c461ba447dbbda120498754"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"8ba9e3d4c9e88bedb022ceecee7a24810b204115","unresolved":false,"context_lines":[{"line_number":119,"context_line":"    pos \u003d physical_line.find(\u0027TODO\u0027)"},{"line_number":120,"context_line":"    pos1 \u003d physical_line.find(\u0027TODO(\u0027)"},{"line_number":121,"context_line":"    pos2 \u003d physical_line.find(\u0027#\u0027)  # make sure it\u0027s a comment"},{"line_number":122,"context_line":"    if (pos !\u003d pos1 and pos2 \u003e\u003d 0 and pos2 \u003c pos and len(tokens) \u003d\u003d 0):"},{"line_number":123,"context_line":"        return pos, \"N101: Use TODO(NAME)\""},{"line_number":124,"context_line":""},{"line_number":125,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2FYlI%3D","line":122,"updated":"2013-01-24 17:00:49.000000000","message":"Parentheses are unneeded…","commit_id":"4845fc2720a0ab3ff4f15fc8f3f00573b617ce5b"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"8ba9e3d4c9e88bedb022ceecee7a24810b204115","unresolved":false,"context_lines":[{"line_number":176,"context_line":"    Okay: from os import path"},{"line_number":177,"context_line":"    Okay: import os.path"},{"line_number":178,"context_line":"    N302: from os.path import dirname as dirname2"},{"line_number":179,"context_line":"    N303  from os.path import *"},{"line_number":180,"context_line":"    N304  import flakes"},{"line_number":181,"context_line":"    \"\"\""},{"line_number":182,"context_line":"    # N302 import only modules"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2FYko%3D","line":179,"updated":"2013-01-24 17:00:49.000000000","message":"femtonit: You put a : in the 302 case; what about 303 and 304?","commit_id":"4845fc2720a0ab3ff4f15fc8f3f00573b617ce5b"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"63612f6a1ec615bf2a1b2f718a818f7036211be7","unresolved":false,"context_lines":[{"line_number":176,"context_line":"    Okay: from os import path"},{"line_number":177,"context_line":"    Okay: import os.path"},{"line_number":178,"context_line":"    N302: from os.path import dirname as dirname2"},{"line_number":179,"context_line":"    N303  from os.path import *"},{"line_number":180,"context_line":"    N304  import flakes"},{"line_number":181,"context_line":"    \"\"\""},{"line_number":182,"context_line":"    # N302 import only modules"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2FX9U%3D","line":179,"in_reply_to":"AAAAM3%2F%2FYYg%3D","updated":"2013-01-24 22:30:04.000000000","message":"Ah, didn\u0027t know about the doctests.  OK, then…","commit_id":"4845fc2720a0ab3ff4f15fc8f3f00573b617ce5b"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"e6eb4b823a92f9f8a681bc9141171cca1a5f6151","unresolved":false,"context_lines":[{"line_number":176,"context_line":"    Okay: from os import path"},{"line_number":177,"context_line":"    Okay: import os.path"},{"line_number":178,"context_line":"    N302: from os.path import dirname as dirname2"},{"line_number":179,"context_line":"    N303  from os.path import *"},{"line_number":180,"context_line":"    N304  import flakes"},{"line_number":181,"context_line":"    \"\"\""},{"line_number":182,"context_line":"    # N302 import only modules"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2FYYg%3D","line":179,"in_reply_to":"AAAAM3%2F%2FYko%3D","updated":"2013-01-24 18:36:32.000000000","message":"the : will trigger the running of the self tests with --doctests. 303 and 304 aren\u0027t really working at the moment, hence why they aren\u0027t currently enabled in doctests.","commit_id":"4845fc2720a0ab3ff4f15fc8f3f00573b617ce5b"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"8ba9e3d4c9e88bedb022ceecee7a24810b204115","unresolved":false,"context_lines":[{"line_number":177,"context_line":"    Okay: import os.path"},{"line_number":178,"context_line":"    N302: from os.path import dirname as dirname2"},{"line_number":179,"context_line":"    N303  from os.path import *"},{"line_number":180,"context_line":"    N304  import flakes"},{"line_number":181,"context_line":"    \"\"\""},{"line_number":182,"context_line":"    # N302 import only modules"},{"line_number":183,"context_line":"    # N303 Invalid Import"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2FYkg%3D","line":180,"updated":"2013-01-24 17:00:49.000000000","message":"femtonit: This isn\u0027t as clear to me as the comment on line 184…","commit_id":"4845fc2720a0ab3ff4f15fc8f3f00573b617ce5b"}],"tox.ini":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"8ba9e3d4c9e88bedb022ceecee7a24810b204115","unresolved":false,"context_lines":[{"line_number":18,"context_line":"deps\u003dpep8\u003d\u003d1.3.3"},{"line_number":19,"context_line":"commands \u003d"},{"line_number":20,"context_line":"  python tools/hacking.py --doctest"},{"line_number":21,"context_line":"  python tools/hacking.py --ignore\u003dE12,E711,E721,E712,N403,N404,N302  \\"},{"line_number":22,"context_line":"    --show-source \\"},{"line_number":23,"context_line":"    --exclude\u003d.venv,.git,.tox,dist,doc,*openstack/common*,*lib/python*,*egg ."},{"line_number":24,"context_line":"  python tools/hacking.py --ignore\u003dE12,E711,E721,E712,N403,N404,N302 \\"}],"source_content_type":"text/x-properties","patch_set":6,"id":"AAAAM3%2F%2FYkI%3D","line":21,"updated":"2013-01-24 17:00:49.000000000","message":"attonit: Two spaces before the backslash…","commit_id":"4845fc2720a0ab3ff4f15fc8f3f00573b617ce5b"}]}
