)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"c68db9eb7d4676f335541201554b47c6d74be1a3","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"First of all, our pep8 exclude was excluding openstack, to trap"},{"line_number":10,"context_line":"for not doing pep8 checks on openstack/common, which comes from elsewhere."},{"line_number":11,"context_line":"But, pep8 senseless strips filenames down to basename when doing"},{"line_number":12,"context_line":"exclude checks on them, which makes no sense."},{"line_number":13,"context_line":"To fix this, grab the two functions from pep8, fix them, and monkeypatch them"},{"line_number":14,"context_line":"from within hacking.py."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAALH%2F%2F9LU%3D","line":11,"updated":"2012-07-30 14:33:33.000000000","message":"femtonit: I\u0027d drop \"senseless\" here; you already end the sentence with \"which makes no sense.\"","commit_id":"4cbe89450cfdf4892c3583ad06719d3265f3cc5f"}],"tools/hacking.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"2eb2d0e2b70f684fbd36c8cd02f3d1309ee13204","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    \"\"\""},{"line_number":58,"context_line":"    for pattern in pep8.options.exclude:"},{"line_number":59,"context_line":"        if fnmatch.fnmatch(filename, pattern):"},{"line_number":60,"context_line":"            # print filename, \u0027excluded because it matches\u0027, pattern"},{"line_number":61,"context_line":"            return True"},{"line_number":62,"context_line":"pep8.excluded \u003d excluded"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2F%2FOk%3D","line":60,"updated":"2012-07-26 14:23:30.000000000","message":"I\u0027d prefer if this commented-out line were actually removed…","commit_id":"712d3c3e10cfdcd4ff605f40f29c57c1a01b4764"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"93991c56cb722f9a9b225df9224bcce4cd70e02b","unresolved":false,"context_lines":[{"line_number":81,"context_line":"                dirs.remove(subdir)"},{"line_number":82,"context_line":"        files.sort()"},{"line_number":83,"context_line":"        for filename in files:"},{"line_number":84,"context_line":"            if filename_match(filename) and not excluded(filename):"},{"line_number":85,"context_line":"                pep8.options.counters[\u0027files\u0027] +\u003d 1"},{"line_number":86,"context_line":"                runner(os.path.join(root, filename))"},{"line_number":87,"context_line":"pep8.input_dir \u003d input_dir"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2F%2B6U%3D","line":84,"updated":"2012-07-26 19:09:57.000000000","message":"filename_match is undefined","commit_id":"712d3c3e10cfdcd4ff605f40f29c57c1a01b4764"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"93991c56cb722f9a9b225df9224bcce4cd70e02b","unresolved":false,"context_lines":[{"line_number":84,"context_line":"            if filename_match(filename) and not excluded(filename):"},{"line_number":85,"context_line":"                pep8.options.counters[\u0027files\u0027] +\u003d 1"},{"line_number":86,"context_line":"                runner(os.path.join(root, filename))"},{"line_number":87,"context_line":"pep8.input_dir \u003d input_dir"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"def is_import_exception(mod):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2F%2B6c%3D","line":87,"updated":"2012-07-26 19:09:57.000000000","message":"it would be nice to do all the monkey patching in the same place (see below)","commit_id":"712d3c3e10cfdcd4ff605f40f29c57c1a01b4764"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"93991c56cb722f9a9b225df9224bcce4cd70e02b","unresolved":false,"context_lines":[{"line_number":446,"context_line":"    once_git_check_commit_title()"},{"line_number":447,"context_line":"    #NOVA error codes start with an N"},{"line_number":448,"context_line":"    pep8.ERRORCODE_REGEX \u003d re.compile(r\u0027[EWN]\\d{3}\u0027)"},{"line_number":449,"context_line":"    add_nova()"},{"line_number":450,"context_line":"    pep8.current_file \u003d current_file"},{"line_number":451,"context_line":"    pep8.readlines \u003d readlines"},{"line_number":452,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2F%2B6g%3D","line":449,"updated":"2012-07-26 19:09:57.000000000","message":"Monkey patches","commit_id":"712d3c3e10cfdcd4ff605f40f29c57c1a01b4764"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"c68db9eb7d4676f335541201554b47c6d74be1a3","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    if excluded(dirname):"},{"line_number":81,"context_line":"        return"},{"line_number":82,"context_line":"    if runner is None:"},{"line_number":83,"context_line":"        runner \u003d input_file"},{"line_number":84,"context_line":"    for root, dirs, files in os.walk(dirname):"},{"line_number":85,"context_line":"        if pep8.options.verbose:"},{"line_number":86,"context_line":"            print(\u0027directory \u0027 + root)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2F9LI%3D","line":83,"updated":"2012-07-30 14:33:33.000000000","message":"input_file will be undefined.  I believe you need pep8.input_file.","commit_id":"4cbe89450cfdf4892c3583ad06719d3265f3cc5f"}],"tox.ini":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"2eb2d0e2b70f684fbd36c8cd02f3d1309ee13204","unresolved":false,"context_lines":[{"line_number":19,"context_line":"[testenv:pep8]"},{"line_number":20,"context_line":"deps\u003dpep8\u003d\u003d1.0.1"},{"line_number":21,"context_line":"commands \u003d"},{"line_number":22,"context_line":"  python tools/hacking.py --ignore\u003dN4 --repeat --show-source \\"},{"line_number":23,"context_line":"    --exclude\u003d.venv,.tox,dist,doc,*openstack.common,*lib/python,*egg ."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"[testenv:cover]"}],"source_content_type":"text/x-properties","patch_set":2,"id":"AAAALH%2F%2F%2FOY%3D","line":22,"updated":"2012-07-26 14:23:30.000000000","message":"Just curious, but is the backslash even needed?  I see you don\u0027t have one after \"commands \u003d\"…","commit_id":"712d3c3e10cfdcd4ff605f40f29c57c1a01b4764"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"2eb2d0e2b70f684fbd36c8cd02f3d1309ee13204","unresolved":false,"context_lines":[{"line_number":20,"context_line":"deps\u003dpep8\u003d\u003d1.0.1"},{"line_number":21,"context_line":"commands \u003d"},{"line_number":22,"context_line":"  python tools/hacking.py --ignore\u003dN4 --repeat --show-source \\"},{"line_number":23,"context_line":"    --exclude\u003d.venv,.tox,dist,doc,*openstack.common,*lib/python,*egg ."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"[testenv:cover]"},{"line_number":26,"context_line":"setenv \u003d NOSE_WITH_COVERAGE\u003d1"}],"source_content_type":"text/x-properties","patch_set":2,"id":"AAAALH%2F%2F%2FOU%3D","line":23,"updated":"2012-07-26 14:23:30.000000000","message":"Wait, wouldn\u0027t it be \"*openstack/common\"?","commit_id":"712d3c3e10cfdcd4ff605f40f29c57c1a01b4764"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"c68db9eb7d4676f335541201554b47c6d74be1a3","unresolved":false,"context_lines":[{"line_number":19,"context_line":"[testenv:pep8]"},{"line_number":20,"context_line":"deps\u003dpep8\u003d\u003d1.0.1"},{"line_number":21,"context_line":"commands \u003d"},{"line_number":22,"context_line":"  python tools/hacking.py --ignore\u003dN4 --repeat --show-source \\"},{"line_number":23,"context_line":"    --exclude\u003d.venv,.tox,dist,doc,*openstack/common*,*lib/python*,*egg ."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"[testenv:cover]"}],"source_content_type":"text/x-properties","patch_set":3,"id":"AAAALH%2F%2F9K4%3D","line":22,"updated":"2012-07-30 14:33:33.000000000","message":"I still want to know about the need for this backslash; I am assuming that this file is read with ConfigParser, which automatically pastes together subsequent indented lines.  Incidentally, I did some testing with ConfigParser, and I found that, without the backslash, this would render as the string:\n\n    \u0027\\npython tools/hacking.py --ignore\u003dN4 --repeat --show-source\\n--exclude\u003d.venv,.tox,dist,doc,*openstack/common*,*lib/python*,*egg .\u0027\n\nWhereas with the backslash, it renders as:\n\n    \u0027\\npython tools/hacking.py --ignore\u003dN4 --repeat --show-source \\\\\\n--exclude\u003d.venv,.tox,dist,doc,*openstack/common*,*lib/python*,*egg .\u0027\n\nOf course, I don\u0027t know what transformations tox performs on configuration values before using them…","commit_id":"4cbe89450cfdf4892c3583ad06719d3265f3cc5f"}]}
