)]}'
{"glanceclient/common/http.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"0cf2ca8e3c1aa079a882fa2f0945ca7b956dde43","unresolved":false,"context_lines":[{"line_number":22,"context_line":"import requests"},{"line_number":23,"context_line":"try:"},{"line_number":24,"context_line":"    from requests.packages import urllib3"},{"line_number":25,"context_line":"    ProtocolError \u003d urllib3.exceptions.ProtocolError"},{"line_number":26,"context_line":"except ImportError:"},{"line_number":27,"context_line":"    ProtocolError \u003d requests.exceptions.ConnectionError"},{"line_number":28,"context_line":"import six"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a016987_4ff48586","line":25,"updated":"2015-05-25 16:23:22.000000000","message":"I would prefer `ProtocolError \u003d requests.packages.urllib3.exceptions.ProtocolError` directly like in the except section or even better:\n\ntry:\n    from requests.packages.urllib3 import exceptions\nexcept ImportError:\n    from requests import exceptions\n\nProtocolError \u003d exceptions.ConnectionError","commit_id":"777bc6adb86eb2e5a22ec8dd81eb6c88a8ad90b0"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"7e68cf16d34701966894e6fdb66501fdb52a4895","unresolved":false,"context_lines":[{"line_number":22,"context_line":"import requests"},{"line_number":23,"context_line":"try:"},{"line_number":24,"context_line":"    from requests.packages import urllib3"},{"line_number":25,"context_line":"    ProtocolError \u003d urllib3.exceptions.ProtocolError"},{"line_number":26,"context_line":"except ImportError:"},{"line_number":27,"context_line":"    ProtocolError \u003d requests.exceptions.ConnectionError"},{"line_number":28,"context_line":"import six"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a016987_7ac9415a","line":25,"in_reply_to":"7a016987_4ff48586","updated":"2015-05-25 16:49:05.000000000","message":"Forget about my second suggestion, like you said on IRC they are different exceptions.","commit_id":"777bc6adb86eb2e5a22ec8dd81eb6c88a8ad90b0"}],"glanceclient/common/https.py":[{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"ffca76f025b55332ad599f6083b02bf78ef2e858","unresolved":false,"context_lines":[{"line_number":31,"context_line":"from oslo_utils import encodeutils"},{"line_number":32,"context_line":"import six"},{"line_number":33,"context_line":"# NOTE(jokke): simplified transition to py3, behaves like py2 xrange"},{"line_number":34,"context_line":"from six.moves import range"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"from glanceclient.common import utils"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_450a488b","side":"PARENT","line":34,"updated":"2015-05-22 18:55:57.000000000","message":"Why are we removing this? This is meant to specifically unify the range behaviour on Python 2 and 3 and was something we decided we should do like this. If we don\u0027t, we\u0027ll have inconsistent behaviour on Python 2 and Python 3 since Python 2 will return a list while Python 3 returns a range object.","commit_id":"e180dbf12cc597c95be363fc309e4f526538373b"},{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"ffca76f025b55332ad599f6083b02bf78ef2e858","unresolved":false,"context_lines":[{"line_number":47,"context_line":"except ImportError:"},{"line_number":48,"context_line":"    try:"},{"line_number":49,"context_line":"        import httplib"},{"line_number":50,"context_line":"        HTTPSConnection \u003d httplib.HTTPSConnection"},{"line_number":51,"context_line":"    except ImportError:"},{"line_number":52,"context_line":"        from http.client import HTTPSConnection"},{"line_number":53,"context_line":"    from OpenSSL import SSL"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_25fd0c6e","line":50,"updated":"2015-05-22 18:55:57.000000000","message":"This could be further improved to do\n\n    from six.moves import httplib\n    HTTPSConnection \u003d httplib.HTTPSConnection","commit_id":"941983d236ab8d107ee7b2c0629cd613f8bac52d"},{"author":{"_account_id":9096,"name":"Cindy Pallares","email":"u1@cindy.sh","username":"cpallares"},"change_message_id":"f75844719971c0a0def639141c19d3ea28d6fa1c","unresolved":false,"context_lines":[{"line_number":47,"context_line":"except ImportError:"},{"line_number":48,"context_line":"    try:"},{"line_number":49,"context_line":"        import httplib"},{"line_number":50,"context_line":"        HTTPSConnection \u003d httplib.HTTPSConnection"},{"line_number":51,"context_line":"    except ImportError:"},{"line_number":52,"context_line":"        from http.client import HTTPSConnection"},{"line_number":53,"context_line":"    from OpenSSL import SSL"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_5ce341d9","line":50,"in_reply_to":"7a016987_25fd0c6e","updated":"2015-05-22 22:15:03.000000000","message":"These are some good suggestions, thanks Ian.","commit_id":"941983d236ab8d107ee7b2c0629cd613f8bac52d"},{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"ffca76f025b55332ad599f6083b02bf78ef2e858","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        return True"},{"line_number":117,"context_line":"        # Also try Subject Alternative Names for a match"},{"line_number":118,"context_line":"    san_list \u003d None"},{"line_number":119,"context_line":"    for i in six.moves.range(x509.get_extension_count()):"},{"line_number":120,"context_line":"        ext \u003d x509.get_extension(i)"},{"line_number":121,"context_line":"        if ext.get_short_name() \u003d\u003d b\u0027subjectAltName\u0027:"},{"line_number":122,"context_line":"            san_list \u003d str(ext)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_0500d064","line":119,"updated":"2015-05-22 18:55:57.000000000","message":"We specifically wanted to avoid this as some people argued that it added too much clutter to the loops. I don\u0027t personally agree, but we might want to do this in a separate patch.","commit_id":"941983d236ab8d107ee7b2c0629cd613f8bac52d"}],"glanceclient/tests/unit/test_ssl.py":[{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"ffca76f025b55332ad599f6083b02bf78ef2e858","unresolved":false,"context_lines":[{"line_number":29,"context_line":"from glanceclient.common import http"},{"line_number":30,"context_line":"from glanceclient.common import https"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"import glanceclient"},{"line_number":33,"context_line":"from glanceclient import exc"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"if six.PY3 is True:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_65078482","line":32,"updated":"2015-05-22 18:55:57.000000000","message":"Since this is the ssl unit test file, we could instead do\n\n     from glanceclient import v1\n     from glanceclient import v2\n\nAnd then below we\u0027d do\n\n     client \u003d v1.Client(url, insecure\u003dFalse, ssl_compression\u003dTrue)\n\nAnd\n\n     client \u003d v2.Client(url, insecure\u003dFalse, ssl_compression\u003dFalse)\n\nEtc.","commit_id":"941983d236ab8d107ee7b2c0629cd613f8bac52d"}],"glanceclient/tests/unit/test_utils.py":[{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"a70502332dafa764cfe84ae53b3941250e681572","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import six"},{"line_number":19,"context_line":"# NOTE(jokke): simplified transition to py3, behaves like py2 xrange"},{"line_number":20,"context_line":"from six.moves import range"},{"line_number":21,"context_line":"import testtools"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from glanceclient.common import utils"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_f06c46d1","side":"PARENT","line":20,"updated":"2015-05-24 02:59:34.000000000","message":"One last change to revert","commit_id":"e180dbf12cc597c95be363fc309e4f526538373b"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"b1e89be9af69e5f6c533ac62555a437026ce2d51","unresolved":false,"context_lines":[{"line_number":16,"context_line":"import sys"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import six"},{"line_number":19,"context_line":"# NOTE(jokke): simplified transition to py3, behaves like py2 xrange"},{"line_number":20,"context_line":"from six.moves import range"},{"line_number":21,"context_line":"import testtools"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7a016987_bb78b190","side":"PARENT","line":19,"updated":"2015-05-26 23:37:52.000000000","message":"why removing it here? The comment is here to flag the reason we actually use range which is overloaded instead of xrange.","commit_id":"e180dbf12cc597c95be363fc309e4f526538373b"}]}
