)]}'
{"cliff/app.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"721f63acfb74ab3ecb82e15aab33c7774d5abd24","unresolved":false,"context_lines":[{"line_number":13,"context_line":"\"\"\"Application base class."},{"line_number":14,"context_line":"\"\"\""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import codecs"},{"line_number":17,"context_line":"import locale"},{"line_number":18,"context_line":"import logging"},{"line_number":19,"context_line":"import logging.handlers"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_d54f3989","line":16,"updated":"2020-09-28 11:56:56.000000000","message":"pep8: F401 \u0027codecs\u0027 imported but unused","commit_id":"df3b23f715c1aa1f3531d4cfef1c1ff1c05ce67d"}],"cliff/formatters/commaseparated.py":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"00fe9a61dd5b28469b25fc32f7b6cfde76528d9e","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            escapechar\u003d\u0027\\\\\u0027,"},{"line_number":54,"context_line":"        )"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        # In Py2 we replace the csv module with unicodecsv because the"},{"line_number":57,"context_line":"        # Py2 csv module cannot handle unicode. unicodecsv encodes"},{"line_number":58,"context_line":"        # unicode objects based on the value of it\u0027s encoding keyword"},{"line_number":59,"context_line":"        # with the result unicodecsv emits encoded bytes in a str"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_8f475b7b","side":"PARENT","line":56,"updated":"2020-09-29 13:12:35.000000000","message":"It looks like we could take out the unicodecsv support, too. I think we probably want to do that if we\u0027re going to drop the encoding keyword handling below.","commit_id":"ff4ee455773cb3a66999495ee20ba015dee722c4"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e7ec37c66f1949ad9bd6b687da7f933138f1eaac","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"import six"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"if sys.version_info[0] \u003d\u003d 3:"},{"line_number":25,"context_line":"    import csv"},{"line_number":26,"context_line":"else:"},{"line_number":27,"context_line":"    import unicodecsv as csv"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class CSVLister(ListFormatter):"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f621f24_dff58185","side":"PARENT","line":27,"range":{"start_line":24,"start_character":0,"end_line":27,"end_character":28},"updated":"2020-10-29 11:33:29.000000000","message":"This could be simplified also now","commit_id":"ff4ee455773cb3a66999495ee20ba015dee722c4"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"ba2029a121a48a7b9289ef1ef2176458e9d68ded","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            escapechar\u003d\u0027\\\\\u0027,"},{"line_number":54,"context_line":"        )"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        # In Py2 we replace the csv module with unicodecsv because the"},{"line_number":57,"context_line":"        # Py2 csv module cannot handle unicode. unicodecsv encodes"},{"line_number":58,"context_line":"        # unicode objects based on the value of it\u0027s encoding keyword"},{"line_number":59,"context_line":"        # with the result unicodecsv emits encoded bytes in a str"},{"line_number":60,"context_line":"        # object. The utils.getwriter assures no attempt is made to"},{"line_number":61,"context_line":"        # re-encode the encoded bytes in the str object."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        if six.PY2:"},{"line_number":64,"context_line":"            writer_kwargs[\u0027encoding\u0027] \u003d (getattr(stdout, \u0027encoding\u0027, None)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f65232a_8ced9bf1","side":"PARENT","line":61,"range":{"start_line":56,"start_character":8,"end_line":61,"end_character":56},"updated":"2020-10-23 03:40:15.000000000","message":"This comment can be dropped now as it is a description of the dropped code below.","commit_id":"ff4ee455773cb3a66999495ee20ba015dee722c4"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e7ec37c66f1949ad9bd6b687da7f933138f1eaac","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            escapechar\u003d\u0027\\\\\u0027,"},{"line_number":54,"context_line":"        )"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        # In Py2 we replace the csv module with unicodecsv because the"},{"line_number":57,"context_line":"        # Py2 csv module cannot handle unicode. unicodecsv encodes"},{"line_number":58,"context_line":"        # unicode objects based on the value of it\u0027s encoding keyword"},{"line_number":59,"context_line":"        # with the result unicodecsv emits encoded bytes in a str"},{"line_number":60,"context_line":"        # object. The utils.getwriter assures no attempt is made to"},{"line_number":61,"context_line":"        # re-encode the encoded bytes in the str object."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        if six.PY2:"},{"line_number":64,"context_line":"            writer_kwargs[\u0027encoding\u0027] \u003d (getattr(stdout, \u0027encoding\u0027, None)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f621f24_fff83d7d","side":"PARENT","line":61,"range":{"start_line":56,"start_character":8,"end_line":61,"end_character":56},"in_reply_to":"3f65232a_8ced9bf1","updated":"2020-10-29 11:33:29.000000000","message":"Done","commit_id":"ff4ee455773cb3a66999495ee20ba015dee722c4"}],"cliff/tests/test_app.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"721f63acfb74ab3ecb82e15aab33c7774d5abd24","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#  under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import argparse"},{"line_number":16,"context_line":"import codecs"},{"line_number":17,"context_line":"import locale"},{"line_number":18,"context_line":"try:"},{"line_number":19,"context_line":"    from StringIO import StringIO"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_15337114","line":16,"updated":"2020-09-28 11:56:56.000000000","message":"pep8: F401 \u0027codecs\u0027 imported but unused","commit_id":"df3b23f715c1aa1f3531d4cfef1c1ff1c05ce67d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"721f63acfb74ab3ecb82e15aab33c7774d5abd24","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import argparse"},{"line_number":16,"context_line":"import codecs"},{"line_number":17,"context_line":"import locale"},{"line_number":18,"context_line":"try:"},{"line_number":19,"context_line":"    from StringIO import StringIO"},{"line_number":20,"context_line":"except ImportError:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_75362d04","line":17,"updated":"2020-09-28 11:56:56.000000000","message":"pep8: F401 \u0027locale\u0027 imported but unused","commit_id":"df3b23f715c1aa1f3531d4cfef1c1ff1c05ce67d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"721f63acfb74ab3ecb82e15aab33c7774d5abd24","unresolved":false,"context_lines":[{"line_number":483,"context_line":"        self.assertIs(sys.stderr, app.stderr)"},{"line_number":484,"context_line":""},{"line_number":485,"context_line":"        app \u003d application.App(\u0027with stdout io stream\u0027, 1, cmd_mgr,"},{"line_number":486,"context_line":"                                stdout\u003dio)"},{"line_number":487,"context_line":"        self.assertIs(sys.stdin, app.stdin)"},{"line_number":488,"context_line":"        self.assertIs(io, app.stdout)"},{"line_number":489,"context_line":"        self.assertIs(sys.stderr, app.stderr)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_553969ee","line":486,"updated":"2020-09-28 11:56:56.000000000","message":"pep8: E127 continuation line over-indented for visual indent","commit_id":"df3b23f715c1aa1f3531d4cfef1c1ff1c05ce67d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"721f63acfb74ab3ecb82e15aab33c7774d5abd24","unresolved":false,"context_lines":[{"line_number":489,"context_line":"        self.assertIs(sys.stderr, app.stderr)"},{"line_number":490,"context_line":""},{"line_number":491,"context_line":"        app \u003d application.App(\u0027with stderr io stream\u0027, 1, cmd_mgr,"},{"line_number":492,"context_line":"                                stderr\u003dio)"},{"line_number":493,"context_line":"        self.assertIs(sys.stdin, app.stdin)"},{"line_number":494,"context_line":"        self.assertIs(sys.stdout, app.stdout)"},{"line_number":495,"context_line":"        self.assertIs(io, app.stderr)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_b523a5bd","line":492,"updated":"2020-09-28 11:56:56.000000000","message":"pep8: E127 continuation line over-indented for visual indent","commit_id":"df3b23f715c1aa1f3531d4cfef1c1ff1c05ce67d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"721f63acfb74ab3ecb82e15aab33c7774d5abd24","unresolved":false,"context_lines":[{"line_number":506,"context_line":"        io \u003d StringIO()"},{"line_number":507,"context_line":"        writer \u003d utils.getwriter(\u0027utf-8\u0027)(io)"},{"line_number":508,"context_line":"        self.assertRaises(TypeError,"},{"line_number":509,"context_line":"                            writer.write,"},{"line_number":510,"context_line":"                            text)"},{"line_number":511,"context_line":""},{"line_number":512,"context_line":"        io \u003d StringIO()"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_951e6171","line":509,"updated":"2020-09-28 11:56:56.000000000","message":"pep8: E127 continuation line over-indented for visual indent","commit_id":"df3b23f715c1aa1f3531d4cfef1c1ff1c05ce67d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"721f63acfb74ab3ecb82e15aab33c7774d5abd24","unresolved":false,"context_lines":[{"line_number":507,"context_line":"        writer \u003d utils.getwriter(\u0027utf-8\u0027)(io)"},{"line_number":508,"context_line":"        self.assertRaises(TypeError,"},{"line_number":509,"context_line":"                            writer.write,"},{"line_number":510,"context_line":"                            text)"},{"line_number":511,"context_line":""},{"line_number":512,"context_line":"        io \u003d StringIO()"},{"line_number":513,"context_line":"        writer \u003d utils.getwriter(\u0027utf-8\u0027)(io)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_f5299d9b","line":510,"updated":"2020-09-28 11:56:56.000000000","message":"pep8: E127 continuation line over-indented for visual indent","commit_id":"df3b23f715c1aa1f3531d4cfef1c1ff1c05ce67d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"721f63acfb74ab3ecb82e15aab33c7774d5abd24","unresolved":false,"context_lines":[{"line_number":512,"context_line":"        io \u003d StringIO()"},{"line_number":513,"context_line":"        writer \u003d utils.getwriter(\u0027utf-8\u0027)(io)"},{"line_number":514,"context_line":"        self.assertRaises(TypeError,"},{"line_number":515,"context_line":"                            writer.write,"},{"line_number":516,"context_line":"                            text_utf8)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_d52459c5","line":515,"updated":"2020-09-28 11:56:56.000000000","message":"pep8: E127 continuation line over-indented for visual indent","commit_id":"df3b23f715c1aa1f3531d4cfef1c1ff1c05ce67d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"721f63acfb74ab3ecb82e15aab33c7774d5abd24","unresolved":false,"context_lines":[{"line_number":513,"context_line":"        writer \u003d utils.getwriter(\u0027utf-8\u0027)(io)"},{"line_number":514,"context_line":"        self.assertRaises(TypeError,"},{"line_number":515,"context_line":"                            writer.write,"},{"line_number":516,"context_line":"                            text_utf8)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_35195587","line":516,"updated":"2020-09-28 11:56:56.000000000","message":"pep8: E127 continuation line over-indented for visual indent","commit_id":"df3b23f715c1aa1f3531d4cfef1c1ff1c05ce67d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"ba2029a121a48a7b9289ef1ef2176458e9d68ded","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import argparse"},{"line_number":16,"context_line":"import codecs"},{"line_number":17,"context_line":"from io import StringIO"},{"line_number":18,"context_line":"from unittest import mock"},{"line_number":19,"context_line":"from cliff import app as application"},{"line_number":20,"context_line":"from cliff import command as c_cmd"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f65232a_032163b5","line":17,"updated":"2020-10-23 03:40:15.000000000","message":"We usually a module-level import.\n\n  import io\n\nThis comment applies to all other imports of StringIO.","commit_id":"354fa6f3c76ed9f70d8dbe17a05d91022c79c83d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e7ec37c66f1949ad9bd6b687da7f933138f1eaac","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import argparse"},{"line_number":16,"context_line":"import codecs"},{"line_number":17,"context_line":"from io import StringIO"},{"line_number":18,"context_line":"from unittest import mock"},{"line_number":19,"context_line":"from cliff import app as application"},{"line_number":20,"context_line":"from cliff import command as c_cmd"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f621f24_7f138db9","line":17,"in_reply_to":"3f65232a_032163b5","updated":"2020-10-29 11:33:29.000000000","message":"Done","commit_id":"354fa6f3c76ed9f70d8dbe17a05d91022c79c83d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"ba2029a121a48a7b9289ef1ef2176458e9d68ded","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from cliff.tests import base"},{"line_number":23,"context_line":"from cliff.tests import utils as test_utils"},{"line_number":24,"context_line":"from cliff import utils"},{"line_number":25,"context_line":"import sys"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"def make_app(**kwargs):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f65232a_63593759","line":25,"updated":"2020-10-23 03:40:15.000000000","message":"This is a standard module. It should be placed between L.17 and L.18.","commit_id":"354fa6f3c76ed9f70d8dbe17a05d91022c79c83d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e7ec37c66f1949ad9bd6b687da7f933138f1eaac","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from cliff.tests import base"},{"line_number":23,"context_line":"from cliff.tests import utils as test_utils"},{"line_number":24,"context_line":"from cliff import utils"},{"line_number":25,"context_line":"import sys"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"def make_app(**kwargs):"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f621f24_5f1851d2","line":25,"in_reply_to":"3f65232a_63593759","updated":"2020-10-29 11:33:29.000000000","message":"Done","commit_id":"354fa6f3c76ed9f70d8dbe17a05d91022c79c83d"}],"cliff/tests/test_formatters_csv.py":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"75ee9950ad08109b415c903a346469770765d58a","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#  under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import argparse"},{"line_number":17,"context_line":"try:"},{"line_number":18,"context_line":"    from StringIO import StringIO"},{"line_number":19,"context_line":"except ImportError:"},{"line_number":20,"context_line":"    from io import StringIO"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_fc3aafe3","line":17,"updated":"2020-10-06 14:17:51.000000000","message":"Elsewhere in this PR and in https://review.opendev.org/#/c/756188/ the StringIO import is changed to always use the io module. Is there some reason that approach cannot be applied to all locations?","commit_id":"c17d20905e9647314b215cb6988739cb396317de"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"ba2029a121a48a7b9289ef1ef2176458e9d68ded","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#  under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import argparse"},{"line_number":17,"context_line":"from io import StringIO"},{"line_number":18,"context_line":"import unittest"},{"line_number":19,"context_line":"from unittest import mock"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3f65232a_432b5b93","line":17,"updated":"2020-10-23 03:40:15.000000000","message":"we usually use a module-level import.\n\n  import io","commit_id":"354fa6f3c76ed9f70d8dbe17a05d91022c79c83d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e7ec37c66f1949ad9bd6b687da7f933138f1eaac","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#  under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import argparse"},{"line_number":17,"context_line":"from io import StringIO"},{"line_number":18,"context_line":"import unittest"},{"line_number":19,"context_line":"from unittest import mock"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1f621f24_bf0d2592","line":17,"in_reply_to":"3f65232a_432b5b93","updated":"2020-10-29 11:33:29.000000000","message":"Done","commit_id":"354fa6f3c76ed9f70d8dbe17a05d91022c79c83d"}],"cliff/tests/test_formatters_json.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"ba2029a121a48a7b9289ef1ef2176458e9d68ded","unresolved":false,"context_lines":[{"line_number":20,"context_line":"try:"},{"line_number":21,"context_line":"    from StringIO import StringIO"},{"line_number":22,"context_line":"except ImportError:"},{"line_number":23,"context_line":"    from io import StringIO"},{"line_number":24,"context_line":"from unittest import mock"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3f65232a_2cb607fc","line":23,"updated":"2020-10-23 03:40:15.000000000","message":"Is this try/except required? Doesn\u0027t \"from io import StringIO\" work? we use it in other places.","commit_id":"354fa6f3c76ed9f70d8dbe17a05d91022c79c83d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e7ec37c66f1949ad9bd6b687da7f933138f1eaac","unresolved":false,"context_lines":[{"line_number":20,"context_line":"try:"},{"line_number":21,"context_line":"    from StringIO import StringIO"},{"line_number":22,"context_line":"except ImportError:"},{"line_number":23,"context_line":"    from io import StringIO"},{"line_number":24,"context_line":"from unittest import mock"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1f621f24_df23c104","line":23,"in_reply_to":"3f65232a_2cb607fc","updated":"2020-10-29 11:33:29.000000000","message":"Done","commit_id":"354fa6f3c76ed9f70d8dbe17a05d91022c79c83d"}],"cliff/tests/test_formatters_shell.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"721f63acfb74ab3ecb82e15aab33c7774d5abd24","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    def test_non_string_values(self):"},{"line_number":74,"context_line":"        sf \u003d shell.ShellFormatter()"},{"line_number":75,"context_line":"        c \u003d (\u0027a\u0027, \u0027b\u0027, \u0027c\u0027, \u0027d\u0027, \u0027e\u0027)"},{"line_number":76,"context_line":"        d \u003d (True, False, 100, \u0027\"esc\"\u0027, text_type(\u0027\"esc\"\u0027))"},{"line_number":77,"context_line":"        expected \u003d (\u0027a\u003d\"True\"\\nb\u003d\"False\"\\nc\u003d\"100\"\\n\u0027"},{"line_number":78,"context_line":"                    \u0027d\u003d\"\\\\\"esc\\\\\"\"\\ne\u003d\"\\\\\"esc\\\\\"\"\\n\u0027)"},{"line_number":79,"context_line":"        output \u003d StringIO()"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_151c1175","line":76,"updated":"2020-09-28 11:56:56.000000000","message":"pep8: F821 undefined name \u0027text_type\u0027","commit_id":"df3b23f715c1aa1f3531d4cfef1c1ff1c05ce67d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"ba2029a121a48a7b9289ef1ef2176458e9d68ded","unresolved":false,"context_lines":[{"line_number":16,"context_line":"import six"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from unittest import mock"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from cliff.formatters import shell"},{"line_number":21,"context_line":"from cliff.tests import base"},{"line_number":22,"context_line":"from cliff.tests import test_columns"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f65232a_eca08fa8","side":"PARENT","line":19,"updated":"2020-10-23 03:40:15.000000000","message":"This blank line is needed.","commit_id":"ff4ee455773cb3a66999495ee20ba015dee722c4"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e7ec37c66f1949ad9bd6b687da7f933138f1eaac","unresolved":false,"context_lines":[{"line_number":16,"context_line":"import six"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from unittest import mock"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from cliff.formatters import shell"},{"line_number":21,"context_line":"from cliff.tests import base"},{"line_number":22,"context_line":"from cliff.tests import test_columns"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f621f24_5f7df1e5","side":"PARENT","line":19,"in_reply_to":"3f65232a_eca08fa8","updated":"2020-10-29 11:33:29.000000000","message":"Done","commit_id":"ff4ee455773cb3a66999495ee20ba015dee722c4"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"ba2029a121a48a7b9289ef1ef2176458e9d68ded","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from cliff.formatters import shell"},{"line_number":18,"context_line":"from cliff.tests import base"},{"line_number":19,"context_line":"from cliff.tests import test_columns"},{"line_number":20,"context_line":"from unittest import mock"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class TestShellFormatter(base.TestBase):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f65232a_8cc63b67","line":20,"updated":"2020-10-23 03:40:15.000000000","message":"This is a standard module. Move it to the above.","commit_id":"354fa6f3c76ed9f70d8dbe17a05d91022c79c83d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e7ec37c66f1949ad9bd6b687da7f933138f1eaac","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from cliff.formatters import shell"},{"line_number":18,"context_line":"from cliff.tests import base"},{"line_number":19,"context_line":"from cliff.tests import test_columns"},{"line_number":20,"context_line":"from unittest import mock"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class TestShellFormatter(base.TestBase):"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f621f24_7f78adf7","line":20,"in_reply_to":"3f65232a_8cc63b67","updated":"2020-10-29 11:33:29.000000000","message":"Done","commit_id":"354fa6f3c76ed9f70d8dbe17a05d91022c79c83d"}],"cliff/utils.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"721f63acfb74ab3ecb82e15aab33c7774d5abd24","unresolved":false,"context_lines":[{"line_number":162,"context_line":"    except IOError:"},{"line_number":163,"context_line":"        return None"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"getwriter \u003d codecs.getwriter"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_35303507","line":165,"updated":"2020-09-28 11:56:56.000000000","message":"pep8: E305 expected 2 blank lines after class or function definition, found 1","commit_id":"df3b23f715c1aa1f3531d4cfef1c1ff1c05ce67d"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"00fe9a61dd5b28469b25fc32f7b6cfde76528d9e","unresolved":false,"context_lines":[{"line_number":163,"context_line":"        return None"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"getwriter \u003d codecs.getwriter"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_af3b3fe8","line":166,"updated":"2020-09-29 13:12:35.000000000","message":"Do we need this at all any more? Could we replace the use of utils.getwriter with codecs.getwriter?","commit_id":"596b177ecc44ce244621ac0cb2cd7ff492f6ff76"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"7f3c7a3026bc197b3362d2177c12f61a5909ef01","unresolved":false,"context_lines":[{"line_number":163,"context_line":"        return None"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"getwriter \u003d codecs.getwriter"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_8126b0ca","line":166,"updated":"2020-10-06 13:45:52.000000000","message":"It still seems like we could eliminate this entirely. What uses it?","commit_id":"c17d20905e9647314b215cb6988739cb396317de"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"6fbffed445271b3b67a4fffbc3072d3862ee6ada","unresolved":false,"context_lines":[{"line_number":162,"context_line":"        return None"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"getwriter \u003d codecs.getwriter"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_6dd88fef","line":165,"updated":"2020-10-08 07:29:54.000000000","message":"pep8: F821 undefined name \u0027codecs\u0027","commit_id":"7c2a5819fe3f7faa9a26a8552d454c055bf1f063"}]}
