)]}'
{"glanceclient/common/http.py":[{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"974b2a2fc436baef5bcdd425a1084a7003955a5d","unresolved":false,"context_lines":[{"line_number":127,"context_line":"            dump.extend([body, \u0027\u0027])"},{"line_number":128,"context_line":"        LOG.debug(utils.ensure_str(\u0027\\n\u0027.join(dump)))"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    def _encode_headers(self, headers):"},{"line_number":131,"context_line":"        \"\"\""},{"line_number":132,"context_line":"        Encodes headers."},{"line_number":133,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FFVI%3D","line":130,"updated":"2013-02-07 17:51:31.000000000","message":"Could this be a staticmethod? (as for log_http_response above)","commit_id":"31177e8d31447b3d1dfbcd8465e2019d0b012a5a"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"a3c251862fe99eb1f21353c6aba94ca25a8192b1","unresolved":false,"context_lines":[{"line_number":127,"context_line":"            dump.extend([body, \u0027\u0027])"},{"line_number":128,"context_line":"        LOG.debug(utils.ensure_str(\u0027\\n\u0027.join(dump)))"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    def _encode_headers(self, headers):"},{"line_number":131,"context_line":"        \"\"\""},{"line_number":132,"context_line":"        Encodes headers."},{"line_number":133,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FExE%3D","line":130,"in_reply_to":"AAAAM3%2F%2FFVI%3D","updated":"2013-02-07 22:34:07.000000000","message":"done. Perhaps, it should be moved into utils?","commit_id":"31177e8d31447b3d1dfbcd8465e2019d0b012a5a"}],"glanceclient/common/utils.py":[{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"974b2a2fc436baef5bcdd425a1084a7003955a5d","unresolved":false,"context_lines":[{"line_number":193,"context_line":"    return \u0027%s%s\u0027 % (stripped, suffix[index])"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"def ensure_unicode(text, incoming\u003dNone, errors\u003d\u0027strict\u0027):"},{"line_number":197,"context_line":"    \"\"\""},{"line_number":198,"context_line":"    Decodes incoming objects using `incoming` if they\u0027re"},{"line_number":199,"context_line":"    not already unicode."}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FFVQ%3D","line":196,"updated":"2013-02-07 17:51:31.000000000","message":"I\u0027m not loving the naming of these methods, in particular the ensure_ prefix for both decoding and encoding logic.","commit_id":"31177e8d31447b3d1dfbcd8465e2019d0b012a5a"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"a3c251862fe99eb1f21353c6aba94ca25a8192b1","unresolved":false,"context_lines":[{"line_number":193,"context_line":"    return \u0027%s%s\u0027 % (stripped, suffix[index])"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"def ensure_unicode(text, incoming\u003dNone, errors\u003d\u0027strict\u0027):"},{"line_number":197,"context_line":"    \"\"\""},{"line_number":198,"context_line":"    Decodes incoming objects using `incoming` if they\u0027re"},{"line_number":199,"context_line":"    not already unicode."}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FEyw%3D","line":196,"in_reply_to":"AAAAM3%2F%2FFVQ%3D","updated":"2013-02-07 22:34:07.000000000","message":"the meaning of ensure here is: The function ensures the returned value is a unicode / string, at least, it\u0027ll fail trying. I\u0027m ok with changing it.\n\nideas? I\u0027ll see if I can come up with something","commit_id":"31177e8d31447b3d1dfbcd8465e2019d0b012a5a"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"974b2a2fc436baef5bcdd425a1084a7003955a5d","unresolved":false,"context_lines":[{"line_number":212,"context_line":""},{"line_number":213,"context_line":"    # Calling `str` in case text is a non str"},{"line_number":214,"context_line":"    # object."},{"line_number":215,"context_line":"    text \u003d str(text)"},{"line_number":216,"context_line":"    try:"},{"line_number":217,"context_line":"        return text.decode(incoming, errors)"},{"line_number":218,"context_line":"    except UnicodeDecodeError:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FFVM%3D","line":215,"updated":"2013-02-07 17:51:31.000000000","message":"Should there be consistency here with the check isinstance(text, basestring) in the method below?","commit_id":"31177e8d31447b3d1dfbcd8465e2019d0b012a5a"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"a3c251862fe99eb1f21353c6aba94ca25a8192b1","unresolved":false,"context_lines":[{"line_number":212,"context_line":""},{"line_number":213,"context_line":"    # Calling `str` in case text is a non str"},{"line_number":214,"context_line":"    # object."},{"line_number":215,"context_line":"    text \u003d str(text)"},{"line_number":216,"context_line":"    try:"},{"line_number":217,"context_line":"        return text.decode(incoming, errors)"},{"line_number":218,"context_line":"    except UnicodeDecodeError:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FEzE%3D","line":215,"in_reply_to":"AAAAM3%2F%2FFVM%3D","updated":"2013-02-07 22:34:07.000000000","message":"Here we force incoming objs to be str so that they can be decoded which is not really necessary in the function below since we\u0027ll try to (re)encode (de|en)coded objects (if they\u0027re not str we convert them)","commit_id":"31177e8d31447b3d1dfbcd8465e2019d0b012a5a"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"974b2a2fc436baef5bcdd425a1084a7003955a5d","unresolved":false,"context_lines":[{"line_number":232,"context_line":""},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"def ensure_str(text, incoming\u003dNone,"},{"line_number":235,"context_line":"               encoding\u003d\"utf-8\", errors\u003d\u0027strict\u0027):"},{"line_number":236,"context_line":"    \"\"\""},{"line_number":237,"context_line":"    Encodes incoming objects using `encoding`. If"},{"line_number":238,"context_line":"    incoming is not specified, text is expected to"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FFV0%3D","line":235,"updated":"2013-02-07 17:51:31.000000000","message":"Consistent quoting style?\n\n  encoding\u003d\"utf-8\", errors\u003d\"strict\"):\n\nor:\n\n  encoding\u003d\u0027utf-8\u0027, errors\u003d\u0027strict\u0027):","commit_id":"31177e8d31447b3d1dfbcd8465e2019d0b012a5a"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"a3c251862fe99eb1f21353c6aba94ca25a8192b1","unresolved":false,"context_lines":[{"line_number":232,"context_line":""},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"def ensure_str(text, incoming\u003dNone,"},{"line_number":235,"context_line":"               encoding\u003d\"utf-8\", errors\u003d\u0027strict\u0027):"},{"line_number":236,"context_line":"    \"\"\""},{"line_number":237,"context_line":"    Encodes incoming objects using `encoding`. If"},{"line_number":238,"context_line":"    incoming is not specified, text is expected to"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FEy8%3D","line":235,"in_reply_to":"AAAAM3%2F%2FFV0%3D","updated":"2013-02-07 22:34:07.000000000","message":"done","commit_id":"31177e8d31447b3d1dfbcd8465e2019d0b012a5a"},{"author":{"_account_id":616,"name":"Mark Washenberger","email":"mark.washenberger@markwash.net","username":"markwash"},"change_message_id":"7a931d087e9b18bf78627a0b1e4028330f06c1af","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import hashlib"},{"line_number":18,"context_line":"import os"},{"line_number":19,"context_line":"import sys"},{"line_number":20,"context_line":"import locale"},{"line_number":21,"context_line":"import uuid"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"import prettytable"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2B8gQ%3D","line":20,"updated":"2013-02-13 18:04:10.000000000","message":"I don\u0027t see where \u0027locale\u0027 is used in this module. Am I missing something?","commit_id":"e9df535bb1ea3344a3a54a6906ba2a0f023d16a9"}],"glanceclient/v1/shell.py":[{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"974b2a2fc436baef5bcdd425a1084a7003955a5d","unresolved":false,"context_lines":[{"line_number":299,"context_line":"        try:"},{"line_number":300,"context_line":"            if args.verbose:"},{"line_number":301,"context_line":"                print \u0027Requesting image delete for %s ...\u0027 % \\"},{"line_number":302,"context_line":"                      utils.ensure_str(args_image),"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"            gc.images.delete(image)"},{"line_number":305,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FFUY%3D","line":302,"updated":"2013-02-07 17:51:31.000000000","message":"I know the comma is preexisting, but I\u0027m wondering why args_image needs to be treated as a tuple here?","commit_id":"31177e8d31447b3d1dfbcd8465e2019d0b012a5a"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"a3c251862fe99eb1f21353c6aba94ca25a8192b1","unresolved":false,"context_lines":[{"line_number":299,"context_line":"        try:"},{"line_number":300,"context_line":"            if args.verbose:"},{"line_number":301,"context_line":"                print \u0027Requesting image delete for %s ...\u0027 % \\"},{"line_number":302,"context_line":"                      utils.ensure_str(args_image),"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"            gc.images.delete(image)"},{"line_number":305,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FFMw%3D","line":302,"in_reply_to":"AAAAM3%2F%2FFUY%3D","updated":"2013-02-07 22:34:07.000000000","message":"That avoids new lines when printing on stdout so that [Done] get\u0027s printed just next to the \"Requesting...\" message.","commit_id":"31177e8d31447b3d1dfbcd8465e2019d0b012a5a"}],"tests/test_http.py":[{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"974b2a2fc436baef5bcdd425a1084a7003955a5d","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        headers \u003d {\"test\": u\u0027ni\\xf1o\u0027}"},{"line_number":81,"context_line":"        resp, body \u003d self.client.raw_request(\u0027GET\u0027, \u0027/v1/images/detail\u0027,"},{"line_number":82,"context_line":"                                                    headers\u003dheaders)"},{"line_number":83,"context_line":"        self.assertTrue(body, fake)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"class TestResponseBodyIterator(testtools.TestCase):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FFUQ%3D","line":83,"updated":"2013-02-07 17:51:31.000000000","message":"Did you mean assertEquals here as opposed to assertTrue?","commit_id":"31177e8d31447b3d1dfbcd8465e2019d0b012a5a"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"a3c251862fe99eb1f21353c6aba94ca25a8192b1","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        headers \u003d {\"test\": u\u0027ni\\xf1o\u0027}"},{"line_number":81,"context_line":"        resp, body \u003d self.client.raw_request(\u0027GET\u0027, \u0027/v1/images/detail\u0027,"},{"line_number":82,"context_line":"                                                    headers\u003dheaders)"},{"line_number":83,"context_line":"        self.assertTrue(body, fake)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"class TestResponseBodyIterator(testtools.TestCase):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FFM0%3D","line":83,"in_reply_to":"AAAAM3%2F%2FFUQ%3D","updated":"2013-02-07 22:34:07.000000000","message":"mmmh, yep, missed that! Thanks!","commit_id":"31177e8d31447b3d1dfbcd8465e2019d0b012a5a"}],"tests/test_utils.py":[{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"974b2a2fc436baef5bcdd425a1084a7003955a5d","unresolved":false,"context_lines":[{"line_number":60,"context_line":"                                                 incoming\u003d\u0027base64\u0027))"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        self.assertEqual(u\"strange\", ensure_unicode(\u0027\\x80strange\u0027,"},{"line_number":63,"context_line":"                                                    errors\u003d\u0027ignore\u0027))"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        self.assertEqual(u\u0027\\xc0\u0027, ensure_unicode(\u0027\\xc0\u0027,"},{"line_number":66,"context_line":"                                                 incoming\u003d\u0027iso-8859-1\u0027))"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FFUE%3D","line":63,"updated":"2013-02-07 17:51:31.000000000","message":"Is this test asserting the difference between the strict and ignore error handling policy?","commit_id":"31177e8d31447b3d1dfbcd8465e2019d0b012a5a"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"a3c251862fe99eb1f21353c6aba94ca25a8192b1","unresolved":false,"context_lines":[{"line_number":60,"context_line":"                                                 incoming\u003d\u0027base64\u0027))"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        self.assertEqual(u\"strange\", ensure_unicode(\u0027\\x80strange\u0027,"},{"line_number":63,"context_line":"                                                    errors\u003d\u0027ignore\u0027))"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        self.assertEqual(u\u0027\\xc0\u0027, ensure_unicode(\u0027\\xc0\u0027,"},{"line_number":66,"context_line":"                                                 incoming\u003d\u0027iso-8859-1\u0027))"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FFNM%3D","line":63,"in_reply_to":"AAAAM3%2F%2FFUE%3D","updated":"2013-02-07 22:34:07.000000000","message":"exactly, it will fail decoding the first character and return just the characters that were decoded.","commit_id":"31177e8d31447b3d1dfbcd8465e2019d0b012a5a"}],"tests/utils.py":[{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"974b2a2fc436baef5bcdd425a1084a7003955a5d","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                 version\u003d1.0, status\u003d200, reason\u003d\"Ok\"):"},{"line_number":45,"context_line":"        \"\"\""},{"line_number":46,"context_line":"        :param headers: dict representing HTTP response headers"},{"line_number":47,"context_line":"        :param body: file-like object"},{"line_number":48,"context_line":"        \"\"\""},{"line_number":49,"context_line":"        self.body \u003d body"},{"line_number":50,"context_line":"        self.status \u003d status"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FFT4%3D","line":47,"updated":"2013-02-07 17:51:31.000000000","message":"Need docstring entries for the new params also?","commit_id":"31177e8d31447b3d1dfbcd8465e2019d0b012a5a"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"a3c251862fe99eb1f21353c6aba94ca25a8192b1","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                 version\u003d1.0, status\u003d200, reason\u003d\"Ok\"):"},{"line_number":45,"context_line":"        \"\"\""},{"line_number":46,"context_line":"        :param headers: dict representing HTTP response headers"},{"line_number":47,"context_line":"        :param body: file-like object"},{"line_number":48,"context_line":"        \"\"\""},{"line_number":49,"context_line":"        self.body \u003d body"},{"line_number":50,"context_line":"        self.status \u003d status"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FFN4%3D","line":47,"in_reply_to":"AAAAM3%2F%2FFT4%3D","updated":"2013-02-07 22:34:07.000000000","message":"done","commit_id":"31177e8d31447b3d1dfbcd8465e2019d0b012a5a"}]}
