)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"aa9246ea34ba639b3a86ef43a71ec5153fc70d50","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There are some differences in the behaviour of json and msgpack"},{"line_number":10,"context_line":"serializers. Msgpack throws TypeError when it doesn\u0027t know"},{"line_number":11,"context_line":"how to handle an object. Json throws ValueEror instead. Regarding"},{"line_number":12,"context_line":"the fact that not all libraries provide handlers for custom data"},{"line_number":13,"context_line":"types and also that serialization should be configurable"},{"line_number":14,"context_line":"(in particular, serializers should have similar behaviour) this"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"bab6814e_28572659","line":11,"range":{"start_line":11,"start_character":37,"end_line":11,"end_character":46},"updated":"2016-05-20 12:38:35.000000000","message":"ValueError","commit_id":"5b41c793fb13cfa3293ee984598ec276528b01a3"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"a143f8802be99ac064a89536e92554fc5829735f","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There are some differences in the behaviour of json and msgpack"},{"line_number":10,"context_line":"serializers. Msgpack throws TypeError when it doesn\u0027t know"},{"line_number":11,"context_line":"how to handle an object. Json throws ValueEror instead. Regarding"},{"line_number":12,"context_line":"the fact that not all libraries provide handlers for custom data"},{"line_number":13,"context_line":"types and also that serialization should be configurable"},{"line_number":14,"context_line":"(in particular, serializers should have similar behaviour; right"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"bab6814e_118b3169","line":11,"range":{"start_line":11,"start_character":37,"end_line":11,"end_character":46},"updated":"2016-05-23 08:22:19.000000000","message":"ValueError","commit_id":"eabbe90a9d277d24b37099695554b029ea52779e"},{"author":{"_account_id":20864,"name":"Gevorg Davoian","email":"gdavoian@gmail.com","username":"gdavoian"},"change_message_id":"75b14e3f9c8049a0424bd9d983a0232cac77f67a","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There are some differences in the behaviour of json and msgpack"},{"line_number":10,"context_line":"serializers. Msgpack throws TypeError when it doesn\u0027t know"},{"line_number":11,"context_line":"how to handle an object. Json throws ValueEror instead. Regarding"},{"line_number":12,"context_line":"the fact that not all libraries provide handlers for custom data"},{"line_number":13,"context_line":"types and also that serialization should be configurable"},{"line_number":14,"context_line":"(in particular, serializers should have similar behaviour; right"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"bab6814e_2966c129","line":11,"range":{"start_line":11,"start_character":37,"end_line":11,"end_character":46},"in_reply_to":"bab6814e_118b3169","updated":"2016-05-23 12:36:43.000000000","message":"Done","commit_id":"eabbe90a9d277d24b37099695554b029ea52779e"}],"oslo_serialization/jsonutils.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"a143f8802be99ac064a89536e92554fc5829735f","unresolved":false,"context_lines":[{"line_number":155,"context_line":"        # __iter__ defined but it isn\u0027t callable as list()."},{"line_number":156,"context_line":"        return six.text_type(value)"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    raise ValueError(\"Cannot convert %s to primitive\" % six.text_type(value))"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"JSONEncoder \u003d json.JSONEncoder"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_91cc41bc","line":158,"updated":"2016-05-23 08:22:19.000000000","message":"I think it\u0027s a good idea, it\u0027s just not clear to me how this is going to break consuming projects.\n\nI don\u0027t think it will, since if to_primitive() does nothing it\u0027s likely json.dumps() will not manage to serialize(), but I\u0027d prefer to be sure it\u0027s the case. :)","commit_id":"eabbe90a9d277d24b37099695554b029ea52779e"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"454130280a31a1633ac8c83f4de1638e5e3390a6","unresolved":false,"context_lines":[{"line_number":155,"context_line":"        # __iter__ defined but it isn\u0027t callable as list()."},{"line_number":156,"context_line":"        return six.text_type(value)"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    raise ValueError(\"Cannot convert %s to primitive\" % six.text_type(value))"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"JSONEncoder \u003d json.JSONEncoder"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_db653845","line":158,"in_reply_to":"bab6814e_492225a4","updated":"2016-05-23 12:45:53.000000000","message":"I agree.","commit_id":"eabbe90a9d277d24b37099695554b029ea52779e"},{"author":{"_account_id":20864,"name":"Gevorg Davoian","email":"gdavoian@gmail.com","username":"gdavoian"},"change_message_id":"75b14e3f9c8049a0424bd9d983a0232cac77f67a","unresolved":false,"context_lines":[{"line_number":155,"context_line":"        # __iter__ defined but it isn\u0027t callable as list()."},{"line_number":156,"context_line":"        return six.text_type(value)"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    raise ValueError(\"Cannot convert %s to primitive\" % six.text_type(value))"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"JSONEncoder \u003d json.JSONEncoder"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_492225a4","line":158,"in_reply_to":"bab6814e_91cc41bc","updated":"2016-05-23 12:36:43.000000000","message":"The problem in the old version of to_primitive function was in the situation when the function didn\u0027t know how to convert an object to primitive. In that case the function simply returned the same object which caused the following exception later in json.dumps: ValueError: Circular reference detected. This exception is not obvious, it took me some time to figure out in the problem. So I think it would be better to explicitly raise TypeError here (like it is recommended in the documentation of json and msgpack modules), but since the library is already widely used we can\u0027t change the type of the exception here.","commit_id":"eabbe90a9d277d24b37099695554b029ea52779e"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"f7728da51f22f6ae8b42b61a9c1f4d7b5439ca4d","unresolved":false,"context_lines":[{"line_number":155,"context_line":"        # __iter__ defined but it isn\u0027t callable as list()."},{"line_number":156,"context_line":"        return six.text_type(value)"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    raise ValueError(\"Cannot convert %s to primitive\" % six.text_type(value))"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"JSONEncoder \u003d json.JSONEncoder"}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_ac7bae28","line":158,"updated":"2016-05-24 09:00:05.000000000","message":"At this point this should go in a separate patch.","commit_id":"71f1e354a2f3d772341c55b9f5fc99eae0ef2de5"},{"author":{"_account_id":20864,"name":"Gevorg Davoian","email":"gdavoian@gmail.com","username":"gdavoian"},"change_message_id":"87791d5b46ce865d6a11edfb693a43744807316a","unresolved":false,"context_lines":[{"line_number":155,"context_line":"        # __iter__ defined but it isn\u0027t callable as list()."},{"line_number":156,"context_line":"        return six.text_type(value)"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    raise ValueError(\"Cannot convert %s to primitive\" % six.text_type(value))"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"JSONEncoder \u003d json.JSONEncoder"}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_d880688e","line":158,"in_reply_to":"bab6814e_ac7bae28","updated":"2016-05-24 10:08:29.000000000","message":"Done","commit_id":"71f1e354a2f3d772341c55b9f5fc99eae0ef2de5"},{"author":{"_account_id":20864,"name":"Gevorg Davoian","email":"gdavoian@gmail.com","username":"gdavoian"},"change_message_id":"6756a7fe54f95df4c54ec495008ad50ba910bf87","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        return \u0027mock\u0027"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    if level \u003e max_depth:"},{"line_number":129,"context_line":"        return \u0027?\u0027"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    # The try block may not be necessary after the class check above,"},{"line_number":132,"context_line":"    # but just in case ..."}],"source_content_type":"text/x-python","patch_set":7,"id":"bab6814e_e699ea7a","side":"PARENT","line":129,"range":{"start_line":129,"start_character":0,"end_line":129,"end_character":18},"updated":"2016-05-25 20:22:12.000000000","message":"So do you suggest to raise an exception here? Right?","commit_id":"0dcd9271631b2931eb37ce59b184f42c8cd9078e"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"fac9a780158091c441b77ec5a4ccda593a6de872","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        return \u0027mock\u0027"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    if level \u003e max_depth:"},{"line_number":129,"context_line":"        return \u0027?\u0027"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    # The try block may not be necessary after the class check above,"},{"line_number":132,"context_line":"    # but just in case ..."}],"source_content_type":"text/x-python","patch_set":7,"id":"bab6814e_54378e4c","side":"PARENT","line":129,"range":{"start_line":129,"start_character":0,"end_line":129,"end_character":18},"in_reply_to":"bab6814e_e699ea7a","updated":"2016-05-26 16:00:37.000000000","message":"Not yet; perhaps in another review...\n\nThat may break lots of things and we need to be careful about that.","commit_id":"0dcd9271631b2931eb37ce59b184f42c8cd9078e"}],"oslo_serialization/msgpackutils.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"aa9246ea34ba639b3a86ef43a71ec5153fc70d50","unresolved":false,"context_lines":[{"line_number":388,"context_line":"def _serializer(registry, obj):"},{"line_number":389,"context_line":"    handler \u003d registry.match(obj)"},{"line_number":390,"context_line":"    if handler is None:"},{"line_number":391,"context_line":"        return six.text_type(obj)"},{"line_number":392,"context_line":"    return msgpack.ExtType(handler.identity, handler.serialize(obj))"},{"line_number":393,"context_line":""},{"line_number":394,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_a8c95628","line":391,"updated":"2016-05-20 12:38:35.000000000","message":"That does not seem like a good idea.","commit_id":"5b41c793fb13cfa3293ee984598ec276528b01a3"},{"author":{"_account_id":8601,"name":"Dmitriy Ukhlov","email":"dukhlov@mirantis.com","username":"dukhlov"},"change_message_id":"f4b7ecdabde01d4849aaf377a355d9cf1f53482b","unresolved":false,"context_lines":[{"line_number":34,"context_line":"import uuid"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"import msgpack"},{"line_number":37,"context_line":"from oslo_serialization.jsonutils import to_primitive"},{"line_number":38,"context_line":"from oslo_utils import importutils"},{"line_number":39,"context_line":"from pytz import timezone"},{"line_number":40,"context_line":"import six"}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_ec8afd19","line":37,"updated":"2016-05-23 15:10:14.000000000","message":"I don\u0027t like usage json serializer\u0027s code for mggpak serializer. BTW json\u0027s to_promitive does much mode that msg_pack needs. I suggest copy to primitive function to this module, remove all unnecessary for msgpack and use it there","commit_id":"d7e6facd6fb5c836b935698eab6d6201617544b5"},{"author":{"_account_id":20864,"name":"Gevorg Davoian","email":"gdavoian@gmail.com","username":"gdavoian"},"change_message_id":"2af99ff03f0091e5b9c978b784994391e4b6026c","unresolved":false,"context_lines":[{"line_number":34,"context_line":"import uuid"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"import msgpack"},{"line_number":37,"context_line":"from oslo_serialization.jsonutils import to_primitive"},{"line_number":38,"context_line":"from oslo_utils import importutils"},{"line_number":39,"context_line":"from pytz import timezone"},{"line_number":40,"context_line":"import six"}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_adf3cc71","line":37,"in_reply_to":"bab6814e_ec8afd19","updated":"2016-05-23 16:58:01.000000000","message":"Done","commit_id":"d7e6facd6fb5c836b935698eab6d6201617544b5"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"7d204f269128b1c979068c48e0d0aa020b7a5237","unresolved":false,"context_lines":[{"line_number":396,"context_line":"                 + (type(None), bool, float))"},{"line_number":397,"context_line":""},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"def to_primitive(value, convert_instances\u003dFalse, level\u003d0, max_depth\u003d3):"},{"line_number":400,"context_line":"    \"\"\"Convert a complex object into primitives."},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"    Handy for MessagePack serialization when no handlers are registered for"}],"source_content_type":"text/x-python","patch_set":5,"id":"bab6814e_12f8f67b","line":399,"updated":"2016-05-24 15:44:05.000000000","message":"Can u rename this \u0027_to_primitive\u0027 since it doesn\u0027t feel like it should be a public API.","commit_id":"04f6e20d13a5ebc5614fc629d3c56b34a552bf0d"},{"author":{"_account_id":20864,"name":"Gevorg Davoian","email":"gdavoian@gmail.com","username":"gdavoian"},"change_message_id":"a81741a38ce8e03b6bf5366a72ac47907d1415f2","unresolved":false,"context_lines":[{"line_number":396,"context_line":"                 + (type(None), bool, float))"},{"line_number":397,"context_line":""},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"def to_primitive(value, convert_instances\u003dFalse, level\u003d0, max_depth\u003d3):"},{"line_number":400,"context_line":"    \"\"\"Convert a complex object into primitives."},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"    Handy for MessagePack serialization when no handlers are registered for"}],"source_content_type":"text/x-python","patch_set":5,"id":"bab6814e_736dc103","line":399,"in_reply_to":"bab6814e_12f8f67b","updated":"2016-05-25 17:05:40.000000000","message":"Done","commit_id":"04f6e20d13a5ebc5614fc629d3c56b34a552bf0d"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"7d204f269128b1c979068c48e0d0aa020b7a5237","unresolved":false,"context_lines":[{"line_number":418,"context_line":"    if getattr(value, \u0027__module__\u0027, None) \u003d\u003d \u0027mox\u0027:"},{"line_number":419,"context_line":"        return \u0027mock\u0027"},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"    if level \u003e max_depth:"},{"line_number":422,"context_line":"        return \u0027?\u0027"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"    # The try block may not be necessary after the class check above,"}],"source_content_type":"text/x-python","patch_set":5,"id":"bab6814e_d2814efd","line":421,"updated":"2016-05-24 15:44:05.000000000","message":"Lol, this one always made me sad....\n\nI guess its making similar behavior as the jsonutils one, but man it feels slightly ummm, stupid to do this (for lack of better word).","commit_id":"04f6e20d13a5ebc5614fc629d3c56b34a552bf0d"},{"author":{"_account_id":20864,"name":"Gevorg Davoian","email":"gdavoian@gmail.com","username":"gdavoian"},"change_message_id":"a81741a38ce8e03b6bf5366a72ac47907d1415f2","unresolved":false,"context_lines":[{"line_number":418,"context_line":"    if getattr(value, \u0027__module__\u0027, None) \u003d\u003d \u0027mox\u0027:"},{"line_number":419,"context_line":"        return \u0027mock\u0027"},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"    if level \u003e max_depth:"},{"line_number":422,"context_line":"        return \u0027?\u0027"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"    # The try block may not be necessary after the class check above,"}],"source_content_type":"text/x-python","patch_set":5,"id":"bab6814e_332b39ed","line":421,"in_reply_to":"bab6814e_d2814efd","updated":"2016-05-25 17:05:40.000000000","message":"Yes, I think something like None would be better here since \u0027?\u0027 really makes no sense.","commit_id":"04f6e20d13a5ebc5614fc629d3c56b34a552bf0d"},{"author":{"_account_id":20864,"name":"Gevorg Davoian","email":"gdavoian@gmail.com","username":"gdavoian"},"change_message_id":"3a9cc64e02e6f1c28cc2887d98377849981fff66","unresolved":false,"context_lines":[{"line_number":453,"context_line":"def _serializer(registry, obj):"},{"line_number":454,"context_line":"    handler \u003d registry.match(obj)"},{"line_number":455,"context_line":"    if handler is None:"},{"line_number":456,"context_line":"        return _to_primitive(obj)"},{"line_number":457,"context_line":"    return msgpack.ExtType(handler.identity, handler.serialize(obj))"},{"line_number":458,"context_line":""},{"line_number":459,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"bab6814e_8721fffe","line":456,"range":{"start_line":456,"start_character":8,"end_line":456,"end_character":14},"updated":"2016-05-25 18:51:03.000000000","message":"Anyway I think it makes sense to replace TypeError by ValueError here since now changing from json to msgpack leads to some errors. I don\u0027t think that all custom types from all libraries are serializable, but when we use json we at least don\u0027t have so many errors (I mean unhandled TypeErrors) in logs. I think the reason of this is that json was/is more widely used, so libraries using it only have handlers for ValueErrors.\nI already explained why we have ValueError in json instead of TypeError: https://review.openstack.org/#/c/319224/2/oslo_serialization/jsonutils.py@158","commit_id":"75097449e0e222769818e89e17b8642e77330939"}],"oslo_serialization/tests/test_jsonutils.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"a143f8802be99ac064a89536e92554fc5829735f","unresolved":false,"context_lines":[{"line_number":250,"context_line":"        self.assertEqual(jsonutils.to_primitive(x, convert_instances\u003dTrue),"},{"line_number":251,"context_line":"                         dict(b\u003d1))"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"        self.assertRaises(ValueError, lambda: jsonutils.to_primitive(x))"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"    def test_typeerror(self):"},{"line_number":256,"context_line":"        x \u003d bytearray  # Class, not instance"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_9170c1a5","line":253,"updated":"2016-05-23 08:22:19.000000000","message":"self.assertRaises(ValueError, jsonutils.to_primitive, x)","commit_id":"eabbe90a9d277d24b37099695554b029ea52779e"},{"author":{"_account_id":20864,"name":"Gevorg Davoian","email":"gdavoian@gmail.com","username":"gdavoian"},"change_message_id":"75b14e3f9c8049a0424bd9d983a0232cac77f67a","unresolved":false,"context_lines":[{"line_number":250,"context_line":"        self.assertEqual(jsonutils.to_primitive(x, convert_instances\u003dTrue),"},{"line_number":251,"context_line":"                         dict(b\u003d1))"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"        self.assertRaises(ValueError, lambda: jsonutils.to_primitive(x))"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"    def test_typeerror(self):"},{"line_number":256,"context_line":"        x \u003d bytearray  # Class, not instance"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_0995bd31","line":253,"in_reply_to":"bab6814e_9170c1a5","updated":"2016-05-23 12:36:43.000000000","message":"Done","commit_id":"eabbe90a9d277d24b37099695554b029ea52779e"}],"oslo_serialization/tests/test_msgpackutils.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"a143f8802be99ac064a89536e92554fc5829735f","unresolved":false,"context_lines":[{"line_number":213,"context_line":"    def test_object(self):"},{"line_number":214,"context_line":"        self.assertRaises(ValueError,"},{"line_number":215,"context_line":"                          lambda o: msgpackutils.loads(msgpackutils.dumps(o)),"},{"line_number":216,"context_line":"                          object())"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_d1ad29ea","line":216,"updated":"2016-05-23 08:22:19.000000000","message":"self.assertRaises(ValueError, msgpackutils.loads, msgpackutils.dumps(object()))","commit_id":"eabbe90a9d277d24b37099695554b029ea52779e"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"454130280a31a1633ac8c83f4de1638e5e3390a6","unresolved":false,"context_lines":[{"line_number":213,"context_line":"    def test_object(self):"},{"line_number":214,"context_line":"        self.assertRaises(ValueError,"},{"line_number":215,"context_line":"                          lambda o: msgpackutils.loads(msgpackutils.dumps(o)),"},{"line_number":216,"context_line":"                          object())"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_3b8284c8","line":216,"in_reply_to":"bab6814e_499b4566","updated":"2016-05-23 12:45:53.000000000","message":"Yeah then you don\u0027t need loads :)","commit_id":"eabbe90a9d277d24b37099695554b029ea52779e"},{"author":{"_account_id":20864,"name":"Gevorg Davoian","email":"gdavoian@gmail.com","username":"gdavoian"},"change_message_id":"75b14e3f9c8049a0424bd9d983a0232cac77f67a","unresolved":false,"context_lines":[{"line_number":213,"context_line":"    def test_object(self):"},{"line_number":214,"context_line":"        self.assertRaises(ValueError,"},{"line_number":215,"context_line":"                          lambda o: msgpackutils.loads(msgpackutils.dumps(o)),"},{"line_number":216,"context_line":"                          object())"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_499b4566","line":216,"in_reply_to":"bab6814e_d1ad29ea","updated":"2016-05-23 12:36:43.000000000","message":"Your variant won\u0027t work because an exception is raised in dumps, not in loads.","commit_id":"eabbe90a9d277d24b37099695554b029ea52779e"}]}
