)]}'
{"quantumclient/client.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"b0dd088e05421c046879b96a051dfd24d8db4b82","unresolved":false,"context_lines":[{"line_number":172,"context_line":"            raise exceptions.Unauthorized()"},{"line_number":173,"context_line":"        self.endpoint_url \u003d self.service_catalog.url_for("},{"line_number":174,"context_line":"            attr\u003d\u0027region\u0027, filter_value\u003dself.region_name,"},{"line_number":175,"context_line":"            endpoint_type\u003d\u0027adminURL\u0027).encode(\u0027utf-8\u0027)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def authenticate(self):"},{"line_number":178,"context_line":"        if self.auth_strategy !\u003d \u0027keystone\u0027:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOH%2F%2Fw4Y%3D","line":175,"updated":"2013-03-28 14:35:54.000000000","message":"why do we need these changes?","commit_id":"8f28963ef8ed3f70e89bac2b3d70622268a7b946"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"from quantumclient.common import exceptions"},{"line_number":33,"context_line":"from quantumclient.common import utils"},{"line_number":34,"context_line":"from quantumclient.openstack.common import strutils"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"_logger \u003d logging.getLogger(__name__)"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOX%2F%2F6XU%3D","line":34,"updated":"2013-04-07 12:23:11.000000000","message":"is this import used here?","commit_id":"95a041658feb13480b5882d2cf30114f361aedf5"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"from quantumclient.common import exceptions"},{"line_number":33,"context_line":"from quantumclient.common import utils"},{"line_number":34,"context_line":"from quantumclient.openstack.common import strutils"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"_logger \u003d logging.getLogger(__name__)"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOX%2F%2F6XE%3D","line":34,"in_reply_to":"AAAAOX%2F%2F6XU%3D","updated":"2013-04-07 13:39:52.000000000","message":"Done","commit_id":"95a041658feb13480b5882d2cf30114f361aedf5"}],"quantumclient/common/serializer.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"b0dd088e05421c046879b96a051dfd24d8db4b82","unresolved":false,"context_lines":[{"line_number":179,"context_line":"            LOG.debug(_(\"Data %(data)s type is %(type)s\"),"},{"line_number":180,"context_line":"                      {\u0027data\u0027: data,"},{"line_number":181,"context_line":"                       \u0027type\u0027: type(data)})"},{"line_number":182,"context_line":"            if isinstance(data, str):"},{"line_number":183,"context_line":"                result.text \u003d unicode(data, \u0027utf-8\u0027)"},{"line_number":184,"context_line":"            else:"},{"line_number":185,"context_line":"                result.text \u003d unicode(data)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOH%2F%2Fw5c%3D","line":182,"updated":"2013-03-28 14:35:54.000000000","message":"we can merge these branches with previous branches.","commit_id":"8f28963ef8ed3f70e89bac2b3d70622268a7b946"},{"author":{"_account_id":7073,"name":"mouad benchchaoui","email":"m.benchchaoui@x-ion.de","username":"mouad"},"change_message_id":"c07708cebb51b9dc92799ce0ee1f0ef0c9bc437e","unresolved":false,"context_lines":[{"line_number":57,"context_line":"class JSONDictSerializer(DictSerializer):"},{"line_number":58,"context_line":"    \"\"\"Default JSON request body serialization\"\"\""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def default(self, data):"},{"line_number":61,"context_line":"        def sanitizer(obj):"},{"line_number":62,"context_line":"            return unicode(obj)"},{"line_number":63,"context_line":"        return jsonutils.dumps(data, default\u003dsanitizer)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOX%2F%2F%2Fm8%3D","line":60,"updated":"2013-04-03 09:17:14.000000000","message":"Why do you need a new function, just use: jsonutils.dumps(data, default\u003dunicode)","commit_id":"3414d4416b1e0749b9eefe3ddc28bb2bc3d967ec"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"unresolved":false,"context_lines":[{"line_number":57,"context_line":"class JSONDictSerializer(DictSerializer):"},{"line_number":58,"context_line":"    \"\"\"Default JSON request body serialization\"\"\""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def default(self, data):"},{"line_number":61,"context_line":"        def sanitizer(obj):"},{"line_number":62,"context_line":"            return unicode(obj)"},{"line_number":63,"context_line":"        return jsonutils.dumps(data, default\u003dsanitizer)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOX%2F%2F%2Flc%3D","line":60,"in_reply_to":"AAAAOX%2F%2F%2Fm8%3D","updated":"2013-04-03 09:37:58.000000000","message":"This is copy from quantum server\u0027s code. I prefer we modify server side code first. :)","commit_id":"3414d4416b1e0749b9eefe3ddc28bb2bc3d967ec"},{"author":{"_account_id":7073,"name":"mouad benchchaoui","email":"m.benchchaoui@x-ion.de","username":"mouad"},"change_message_id":"c07708cebb51b9dc92799ce0ee1f0ef0c9bc437e","unresolved":false,"context_lines":[{"line_number":79,"context_line":"            xmlns \u003d constants.XML_NS_V20"},{"line_number":80,"context_line":"        self.xmlns \u003d xmlns"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def default(self, data):"},{"line_number":83,"context_line":"        # We expect data to contain a single key which is the XML root or"},{"line_number":84,"context_line":"        # non root"},{"line_number":85,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOX%2F%2F%2Fmo%3D","line":82,"updated":"2013-04-03 09:17:14.000000000","message":"Is this comment correct ? because if so the code below that test each time len(data) may be simplified.","commit_id":"3414d4416b1e0749b9eefe3ddc28bb2bc3d967ec"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"unresolved":false,"context_lines":[{"line_number":79,"context_line":"            xmlns \u003d constants.XML_NS_V20"},{"line_number":80,"context_line":"        self.xmlns \u003d xmlns"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def default(self, data):"},{"line_number":83,"context_line":"        # We expect data to contain a single key which is the XML root or"},{"line_number":84,"context_line":"        # non root"},{"line_number":85,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOX%2F%2F%2FlQ%3D","line":82,"in_reply_to":"AAAAOX%2F%2F%2Fmo%3D","updated":"2013-04-03 09:37:58.000000000","message":"Done","commit_id":"3414d4416b1e0749b9eefe3ddc28bb2bc3d967ec"},{"author":{"_account_id":7073,"name":"mouad benchchaoui","email":"m.benchchaoui@x-ion.de","username":"mouad"},"change_message_id":"c07708cebb51b9dc92799ce0ee1f0ef0c9bc437e","unresolved":false,"context_lines":[{"line_number":88,"context_line":"            if data is None:"},{"line_number":89,"context_line":"                root_key \u003d constants.VIRTUAL_ROOT_KEY"},{"line_number":90,"context_line":"                root_value \u003d None"},{"line_number":91,"context_line":"            else:"},{"line_number":92,"context_line":"                link_keys \u003d [k for k in data.iterkeys() or []"},{"line_number":93,"context_line":"                             if k.endswith(\u0027_links\u0027)]"},{"line_number":94,"context_line":"                if link_keys:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOX%2F%2F%2Fm4%3D","line":91,"updated":"2013-04-03 09:17:14.000000000","message":"If you want to loop over a dictionary keys you can simply do: [k for k in data if k.endswith(\u0027_links\u0027)]","commit_id":"3414d4416b1e0749b9eefe3ddc28bb2bc3d967ec"},{"author":{"_account_id":7073,"name":"mouad benchchaoui","email":"m.benchchaoui@x-ion.de","username":"mouad"},"change_message_id":"c07708cebb51b9dc92799ce0ee1f0ef0c9bc437e","unresolved":false,"context_lines":[{"line_number":93,"context_line":"                             if k.endswith(\u0027_links\u0027)]"},{"line_number":94,"context_line":"                if link_keys:"},{"line_number":95,"context_line":"                    links \u003d data.pop(link_keys[0], None)"},{"line_number":96,"context_line":"                    has_atom \u003d True"},{"line_number":97,"context_line":"                root_key \u003d (len(data) \u003d\u003d 1 and"},{"line_number":98,"context_line":"                            data.keys()[0] or constants.VIRTUAL_ROOT_KEY)"},{"line_number":99,"context_line":"                root_value \u003d data.get(root_key, data)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOX%2F%2F%2Fmg%3D","line":96,"updated":"2013-04-03 09:17:14.000000000","message":"I prefere Python if else ternary operator don\u0027t you ? :)","commit_id":"3414d4416b1e0749b9eefe3ddc28bb2bc3d967ec"}],"quantumclient/common/utils.py":[{"author":{"_account_id":7073,"name":"mouad benchchaoui","email":"m.benchchaoui@x-ion.de","username":"mouad"},"change_message_id":"c07708cebb51b9dc92799ce0ee1f0ef0c9bc437e","unresolved":false,"context_lines":[{"line_number":183,"context_line":"    return data"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"def safe_encode_list(data):"},{"line_number":187,"context_line":"    return map(functools.partial(_safe_encode_without_obj), data)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOX%2F%2F%2Fmc%3D","line":186,"updated":"2013-04-03 09:17:14.000000000","message":"Why you need to call functools.partial why not : map(_safe_encode_without_obj, data)","commit_id":"3414d4416b1e0749b9eefe3ddc28bb2bc3d967ec"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"unresolved":false,"context_lines":[{"line_number":183,"context_line":"    return data"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"def safe_encode_list(data):"},{"line_number":187,"context_line":"    return map(functools.partial(_safe_encode_without_obj), data)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOX%2F%2F%2FlM%3D","line":186,"in_reply_to":"AAAAOX%2F%2F%2Fmc%3D","updated":"2013-04-03 09:37:58.000000000","message":"oops, I forget remove \u0027functools.partial\u0027 after I modify the code. thanks for point this out.","commit_id":"3414d4416b1e0749b9eefe3ddc28bb2bc3d967ec"},{"author":{"_account_id":7073,"name":"mouad benchchaoui","email":"m.benchchaoui@x-ion.de","username":"mouad"},"change_message_id":"c07708cebb51b9dc92799ce0ee1f0ef0c9bc437e","unresolved":false,"context_lines":[{"line_number":187,"context_line":"    return map(functools.partial(_safe_encode_without_obj), data)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"def safe_encode_dict(data, skip_obj\u003dTrue):"},{"line_number":191,"context_line":"    def _encode_item(x):"},{"line_number":192,"context_line":"        if isinstance(x[1], list):"},{"line_number":193,"context_line":"            return (x[0], safe_encode_list(x[1]))"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOX%2F%2F%2FmY%3D","line":190,"updated":"2013-04-03 09:17:14.000000000","message":"I think this function will be better declared like this: def _encode_item((k, v)): ... this way you will not have to do each time x[0], x[1].","commit_id":"3414d4416b1e0749b9eefe3ddc28bb2bc3d967ec"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"unresolved":false,"context_lines":[{"line_number":187,"context_line":"    return map(functools.partial(_safe_encode_without_obj), data)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"def safe_encode_dict(data, skip_obj\u003dTrue):"},{"line_number":191,"context_line":"    def _encode_item(x):"},{"line_number":192,"context_line":"        if isinstance(x[1], list):"},{"line_number":193,"context_line":"            return (x[0], safe_encode_list(x[1]))"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOX%2F%2F%2Fks%3D","line":190,"in_reply_to":"AAAAOX%2F%2F%2FmY%3D","updated":"2013-04-03 09:37:58.000000000","message":"yeah, you suggestion looks better, thanks","commit_id":"3414d4416b1e0749b9eefe3ddc28bb2bc3d967ec"}],"quantumclient/openstack/common/strutils.py":[{"author":{"_account_id":7073,"name":"mouad benchchaoui","email":"m.benchchaoui@x-ion.de","username":"mouad"},"change_message_id":"c07708cebb51b9dc92799ce0ee1f0ef0c9bc437e","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    is interpreted as a boolean True."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    Useful for JSON-decoded stuff and config file parsing"},{"line_number":39,"context_line":"    \"\"\""},{"line_number":40,"context_line":"    return bool_from_string(subject) and 1 or 0"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOX%2F%2F%2FmI%3D","line":39,"updated":"2013-04-03 09:17:14.000000000","message":"IMHO it may be better to write it as follow: int(bool_from_string(subject))","commit_id":"3414d4416b1e0749b9eefe3ddc28bb2bc3d967ec"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"unresolved":false,"context_lines":[{"line_number":36,"context_line":"    is interpreted as a boolean True."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    Useful for JSON-decoded stuff and config file parsing"},{"line_number":39,"context_line":"    \"\"\""},{"line_number":40,"context_line":"    return bool_from_string(subject) and 1 or 0"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOX%2F%2F%2Fko%3D","line":39,"in_reply_to":"AAAAOX%2F%2F%2FmI%3D","updated":"2013-04-03 09:37:58.000000000","message":"This is copy from oslo project, we should modify oslo\u0027s code first.","commit_id":"3414d4416b1e0749b9eefe3ddc28bb2bc3d967ec"}],"quantumclient/shell.py":[{"author":{"_account_id":7073,"name":"mouad benchchaoui","email":"m.benchchaoui@x-ion.de","username":"mouad"},"change_message_id":"c07708cebb51b9dc92799ce0ee1f0ef0c9bc437e","unresolved":false,"context_lines":[{"line_number":476,"context_line":"            self.interactive_mode \u003d not remainder"},{"line_number":477,"context_line":"            self.initialize_app(remainder)"},{"line_number":478,"context_line":"        except Exception as err:"},{"line_number":479,"context_line":"            if self.options.debug:"},{"line_number":480,"context_line":"                self.log.exception(unicode(err))"},{"line_number":481,"context_line":"                raise"},{"line_number":482,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOX%2F%2F%2FmQ%3D","line":479,"updated":"2013-04-03 09:17:14.000000000","message":"Are you sure you want to use unicode without encoding because it will use the default encoding (ASCII) in this case to decode the strings !?","commit_id":"3414d4416b1e0749b9eefe3ddc28bb2bc3d967ec"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"unresolved":false,"context_lines":[{"line_number":476,"context_line":"            self.interactive_mode \u003d not remainder"},{"line_number":477,"context_line":"            self.initialize_app(remainder)"},{"line_number":478,"context_line":"        except Exception as err:"},{"line_number":479,"context_line":"            if self.options.debug:"},{"line_number":480,"context_line":"                self.log.exception(unicode(err))"},{"line_number":481,"context_line":"                raise"},{"line_number":482,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOX%2F%2F%2FRk%3D","line":479,"in_reply_to":"AAAAOX%2F%2F%2FgQ%3D","updated":"2013-04-03 14:20:36.000000000","message":"\u0027print e\u0027 means \u0027print str(e)\u0027, str(e) will failed with default encoding","commit_id":"3414d4416b1e0749b9eefe3ddc28bb2bc3d967ec"},{"author":{"_account_id":7073,"name":"mouad benchchaoui","email":"m.benchchaoui@x-ion.de","username":"mouad"},"change_message_id":"c07708cebb51b9dc92799ce0ee1f0ef0c9bc437e","unresolved":false,"context_lines":[{"line_number":476,"context_line":"            self.interactive_mode \u003d not remainder"},{"line_number":477,"context_line":"            self.initialize_app(remainder)"},{"line_number":478,"context_line":"        except Exception as err:"},{"line_number":479,"context_line":"            if self.options.debug:"},{"line_number":480,"context_line":"                self.log.exception(unicode(err))"},{"line_number":481,"context_line":"                raise"},{"line_number":482,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOX%2F%2F%2FgQ%3D","line":479,"in_reply_to":"AAAAOX%2F%2F%2Fh0%3D","updated":"2013-04-03 10:36:01.000000000","message":"Ok i understand a bit and if it\u0027s tested so don\u0027t mind me :) but one last question, how about the last print unicode(e)","commit_id":"3414d4416b1e0749b9eefe3ddc28bb2bc3d967ec"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"unresolved":false,"context_lines":[{"line_number":476,"context_line":"            self.interactive_mode \u003d not remainder"},{"line_number":477,"context_line":"            self.initialize_app(remainder)"},{"line_number":478,"context_line":"        except Exception as err:"},{"line_number":479,"context_line":"            if self.options.debug:"},{"line_number":480,"context_line":"                self.log.exception(unicode(err))"},{"line_number":481,"context_line":"                raise"},{"line_number":482,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOX%2F%2F%2Fh0%3D","line":479,"in_reply_to":"AAAAOX%2F%2F%2Fis%3D","updated":"2013-04-03 10:19:53.000000000","message":"{print \"ü\"} needn\u0027t decoding. because \"ü\" is \u0027utf-8\u0027\n\n{print u\"ü\"} will use stdout\u0027s encoding to encode u\"ü\". \n(unicode(\"ü\") will raise UnicodeDecodeError, because it will use default encoding ascii)\n\nBut \u0027err\u0027 was Exception object, our exception was _() wrap the message, it will return unicode object. then unicode(err) will return unicode object\n\nDoes make sense? :)\n\nAnd it tested, works for me.","commit_id":"3414d4416b1e0749b9eefe3ddc28bb2bc3d967ec"},{"author":{"_account_id":7073,"name":"mouad benchchaoui","email":"m.benchchaoui@x-ion.de","username":"mouad"},"change_message_id":"c07708cebb51b9dc92799ce0ee1f0ef0c9bc437e","unresolved":false,"context_lines":[{"line_number":476,"context_line":"            self.interactive_mode \u003d not remainder"},{"line_number":477,"context_line":"            self.initialize_app(remainder)"},{"line_number":478,"context_line":"        except Exception as err:"},{"line_number":479,"context_line":"            if self.options.debug:"},{"line_number":480,"context_line":"                self.log.exception(unicode(err))"},{"line_number":481,"context_line":"                raise"},{"line_number":482,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOX%2F%2F%2Fis%3D","line":479,"in_reply_to":"AAAAOX%2F%2F%2FkI%3D","updated":"2013-04-03 09:50:47.000000000","message":"I don\u0027t think so, my understanding is that if you do: {print \"ü\"} then stdout encoding will be used to decode string when it\u0027s printed, but if you do {print unicode(\"ü\")} then you\u0027re telling Python to decode your string and w/o encoding Python will use default one which is ASCII in Python2.*, but better will be to test this.","commit_id":"3414d4416b1e0749b9eefe3ddc28bb2bc3d967ec"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"unresolved":false,"context_lines":[{"line_number":476,"context_line":"            self.interactive_mode \u003d not remainder"},{"line_number":477,"context_line":"            self.initialize_app(remainder)"},{"line_number":478,"context_line":"        except Exception as err:"},{"line_number":479,"context_line":"            if self.options.debug:"},{"line_number":480,"context_line":"                self.log.exception(unicode(err))"},{"line_number":481,"context_line":"                raise"},{"line_number":482,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOX%2F%2F%2FkI%3D","line":479,"in_reply_to":"AAAAOX%2F%2F%2FmQ%3D","updated":"2013-04-03 09:37:58.000000000","message":"I think it will encode as stdout\u0027s encoding(sys.stdout.encoding).","commit_id":"3414d4416b1e0749b9eefe3ddc28bb2bc3d967ec"}],"quantumclient/tests/unit/test_cli20.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":15,"context_line":"#"},{"line_number":16,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import functools"},{"line_number":19,"context_line":"import urllib"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"import fixtures"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOX%2F%2F6XQ%3D","line":18,"updated":"2013-04-07 12:23:11.000000000","message":"is this used?","commit_id":"95a041658feb13480b5882d2cf30114f361aedf5"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"unresolved":false,"context_lines":[{"line_number":15,"context_line":"#"},{"line_number":16,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import functools"},{"line_number":19,"context_line":"import urllib"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"import fixtures"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOX%2F%2F6XA%3D","line":18,"in_reply_to":"AAAAOX%2F%2F6XQ%3D","updated":"2013-04-07 13:39:52.000000000","message":"Done","commit_id":"95a041658feb13480b5882d2cf30114f361aedf5"}]}
