)]}'
{"neutronclient/common/utils.py":[{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"0ae9be4ef24b0428b27d47cb1322cae4579fa7b6","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    elif isinstance(value, datetime.datetime):"},{"line_number":59,"context_line":"        return str(value)"},{"line_number":60,"context_line":"    elif hasattr(value, \u0027iteritems\u0027):"},{"line_number":61,"context_line":"        return to_primitive(dict(value.iteritems()))"},{"line_number":62,"context_line":"    elif hasattr(value, \u0027__iter__\u0027):"},{"line_number":63,"context_line":"        return to_primitive(list(value))"},{"line_number":64,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2FelA%3D","line":61,"updated":"2014-01-13 14:16:17.000000000","message":"The recursion here is making my head spin, but doesn\u0027t this need to be sixed? Or it might make sense to raise an exception saying that neutronclient has been sixed and native iteritems is no longer supported.","commit_id":"8f14f3bc433609374671c6a8890489d5dca28056"},{"author":{"_account_id":7450,"name":"Yassine Lamgarchal","email":"yassine.lamgarchal@redhat.com","username":"yassine.lamgarchal"},"change_message_id":"0a6ac5f2269624dca316f5a59ec4289841950cd5","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    elif isinstance(value, datetime.datetime):"},{"line_number":59,"context_line":"        return str(value)"},{"line_number":60,"context_line":"    elif hasattr(value, \u0027iteritems\u0027):"},{"line_number":61,"context_line":"        return to_primitive(dict(value.iteritems()))"},{"line_number":62,"context_line":"    elif hasattr(value, \u0027__iter__\u0027):"},{"line_number":63,"context_line":"        return to_primitive(list(value))"},{"line_number":64,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2Fd%2Fg%3D","line":61,"in_reply_to":"AAAAUH%2F%2FelA%3D","updated":"2014-01-13 15:34:03.000000000","message":"I don\u0027t think so.\n\nBecause at this line the \"value\" object is no longer a dictionary but just an object which has an \u0027iteritems\u0027 method so we can safely call it and it\u0027s valid for Python 2 and Python 3.\n\nIn addition, six.iteritems() is used with dictionnaries as said in the documentation http://pythonhosted.org/six/index.html?highlight\u003diteritems#six.iteritems","commit_id":"8f14f3bc433609374671c6a8890489d5dca28056"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"8cf7c82948fd39d92df687aa08d7e2ac9021951f","unresolved":false,"context_lines":[{"line_number":24,"context_line":"import json"},{"line_number":25,"context_line":"import logging"},{"line_number":26,"context_line":"import os"},{"line_number":27,"context_line":"import six"},{"line_number":28,"context_line":"import sys"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"from neutronclient.common import _"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2FaPU%3D","line":27,"updated":"2014-01-14 01:52:59.000000000","message":"six is a third-party module.","commit_id":"ca557f333cadc703c74664a383340cb1f7369110"},{"author":{"_account_id":7450,"name":"Yassine Lamgarchal","email":"yassine.lamgarchal@redhat.com","username":"yassine.lamgarchal"},"change_message_id":"f77f270172c4f82b5aa135ee8f1201ea2331313a","unresolved":false,"context_lines":[{"line_number":24,"context_line":"import json"},{"line_number":25,"context_line":"import logging"},{"line_number":26,"context_line":"import os"},{"line_number":27,"context_line":"import six"},{"line_number":28,"context_line":"import sys"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"from neutronclient.common import _"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2FYyI%3D","line":27,"in_reply_to":"AAAAUH%2F%2FaPU%3D","updated":"2014-01-14 10:37:49.000000000","message":"Done","commit_id":"ca557f333cadc703c74664a383340cb1f7369110"},{"author":{"_account_id":9107,"name":"Victor Stinner","email":"vstinner@redhat.com","username":"haypo"},"change_message_id":"23624015e0f24dc86a3ab224b933949051637f07","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        return o"},{"line_number":59,"context_line":"    elif isinstance(value, datetime.datetime):"},{"line_number":60,"context_line":"        return str(value)"},{"line_number":61,"context_line":"    elif hasattr(value, \u0027iteritems\u0027):"},{"line_number":62,"context_line":"        return to_primitive(dict(value.iteritems()))"},{"line_number":63,"context_line":"    elif hasattr(value, \u0027__iter__\u0027):"},{"line_number":64,"context_line":"        return to_primitive(list(value))"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2FYJ4%3D","line":61,"updated":"2014-01-14 13:19:02.000000000","message":"It\u0027s still unclear for me: does it make sense to handle .iteritems() in Python 3? In my opinion, you should add:\n\nelif hasattr(value\u0027, \u0027items\u0027):\n    return to_primitive(dict(value.items()))\n\nBy the way, the code can be inlined:\n\nelif hasattr(value\u0027, \u0027items\u0027):\n    return dict((k, to_primitive(v) for k ,v in value.items())\n# same for iteritems()\n\nYou might only use iteritems() for Python 2 and items() for Python 3, but it should not hurt to support both on both Python versions if iteritems() is tested before items().","commit_id":"82597f8f630ee268946a40616858c3f3778ca9ac"},{"author":{"_account_id":7450,"name":"Yassine Lamgarchal","email":"yassine.lamgarchal@redhat.com","username":"yassine.lamgarchal"},"change_message_id":"9e3a352f674359653156bb550477664df3fa50d0","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        return o"},{"line_number":59,"context_line":"    elif isinstance(value, datetime.datetime):"},{"line_number":60,"context_line":"        return str(value)"},{"line_number":61,"context_line":"    elif hasattr(value, \u0027iteritems\u0027):"},{"line_number":62,"context_line":"        return to_primitive(dict(value.iteritems()))"},{"line_number":63,"context_line":"    elif hasattr(value, \u0027__iter__\u0027):"},{"line_number":64,"context_line":"        return to_primitive(list(value))"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2FYD4%3D","line":61,"in_reply_to":"AAAAUH%2F%2FYJ4%3D","updated":"2014-01-14 13:45:04.000000000","message":"Done","commit_id":"82597f8f630ee268946a40616858c3f3778ca9ac"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"10c9d7ddb98c8137375155ae08f1e9c81c480bcc","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    elif hasattr(value, \u0027iteritems\u0027):"},{"line_number":62,"context_line":"        return to_primitive(dict(value.iteritems()))"},{"line_number":63,"context_line":"    elif hasattr(value, \u0027items\u0027):"},{"line_number":64,"context_line":"        return to_primitive(dict(value.items()))"},{"line_number":65,"context_line":"    elif hasattr(value, \u0027__iter__\u0027):"},{"line_number":66,"context_line":"        return to_primitive(list(value))"},{"line_number":67,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2FX9c%3D","line":64,"updated":"2014-01-14 14:05:32.000000000","message":"Good, but please add a unit test case for this.","commit_id":"fb76df3d702397a743405c5d75732073e0c79528"},{"author":{"_account_id":7450,"name":"Yassine Lamgarchal","email":"yassine.lamgarchal@redhat.com","username":"yassine.lamgarchal"},"change_message_id":"3471597a549e7235d8d593dc7531b9b7f666d186","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    elif hasattr(value, \u0027iteritems\u0027):"},{"line_number":62,"context_line":"        return to_primitive(dict(value.iteritems()))"},{"line_number":63,"context_line":"    elif hasattr(value, \u0027items\u0027):"},{"line_number":64,"context_line":"        return to_primitive(dict(value.items()))"},{"line_number":65,"context_line":"    elif hasattr(value, \u0027__iter__\u0027):"},{"line_number":66,"context_line":"        return to_primitive(list(value))"},{"line_number":67,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2FX6I%3D","line":64,"in_reply_to":"AAAAUH%2F%2FX9c%3D","updated":"2014-01-14 14:14:15.000000000","message":"Thanks!\nDone","commit_id":"fb76df3d702397a743405c5d75732073e0c79528"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"b59207041dfe9805e75a6a95b6c7adad7a20c32d","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    elif hasattr(value, \u0027iteritems\u0027):"},{"line_number":62,"context_line":"        return to_primitive(dict(value.iteritems()))"},{"line_number":63,"context_line":"    elif hasattr(value, \u0027items\u0027):"},{"line_number":64,"context_line":"        return to_primitive(dict(value.items()))"},{"line_number":65,"context_line":"    elif hasattr(value, \u0027__iter__\u0027):"},{"line_number":66,"context_line":"        return to_primitive(list(value))"},{"line_number":67,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2FX4Y%3D","line":64,"in_reply_to":"AAAAUH%2F%2FX9c%3D","updated":"2014-01-14 14:18:09.000000000","message":"This is a third party library and a language construct.\nThat doesn\u0027t need unit test.","commit_id":"fb76df3d702397a743405c5d75732073e0c79528"}],"neutronclient/neutron/v2_0/__init__.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"8cf7c82948fd39d92df687aa08d7e2ac9021951f","unresolved":false,"context_lines":[{"line_number":18,"context_line":"import argparse"},{"line_number":19,"context_line":"import logging"},{"line_number":20,"context_line":"import re"},{"line_number":21,"context_line":"import six"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from cliff.formatters import table"},{"line_number":24,"context_line":"from cliff import lister"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2FaPM%3D","line":21,"updated":"2014-01-14 01:52:59.000000000","message":"six is a third-party module.","commit_id":"ca557f333cadc703c74664a383340cb1f7369110"},{"author":{"_account_id":7450,"name":"Yassine Lamgarchal","email":"yassine.lamgarchal@redhat.com","username":"yassine.lamgarchal"},"change_message_id":"f77f270172c4f82b5aa135ee8f1201ea2331313a","unresolved":false,"context_lines":[{"line_number":18,"context_line":"import argparse"},{"line_number":19,"context_line":"import logging"},{"line_number":20,"context_line":"import re"},{"line_number":21,"context_line":"import six"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from cliff.formatters import table"},{"line_number":24,"context_line":"from cliff import lister"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2FYyA%3D","line":21,"in_reply_to":"AAAAUH%2F%2FaPM%3D","updated":"2014-01-14 10:37:49.000000000","message":"Done","commit_id":"ca557f333cadc703c74664a383340cb1f7369110"}],"neutronclient/neutron/v2_0/lb/pool.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"8cf7c82948fd39d92df687aa08d7e2ac9021951f","unresolved":false,"context_lines":[{"line_number":18,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import logging"},{"line_number":21,"context_line":"import six"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from neutronclient.neutron import v2_0 as neutronV20"},{"line_number":24,"context_line":"from neutronclient.openstack.common.gettextutils import _"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2FaOw%3D","line":21,"updated":"2014-01-14 01:52:59.000000000","message":"six is a third-party module.","commit_id":"ca557f333cadc703c74664a383340cb1f7369110"},{"author":{"_account_id":7450,"name":"Yassine Lamgarchal","email":"yassine.lamgarchal@redhat.com","username":"yassine.lamgarchal"},"change_message_id":"f77f270172c4f82b5aa135ee8f1201ea2331313a","unresolved":false,"context_lines":[{"line_number":18,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import logging"},{"line_number":21,"context_line":"import six"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from neutronclient.neutron import v2_0 as neutronV20"},{"line_number":24,"context_line":"from neutronclient.openstack.common.gettextutils import _"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2FYxo%3D","line":21,"in_reply_to":"AAAAUH%2F%2FaOw%3D","updated":"2014-01-14 10:37:49.000000000","message":"Done","commit_id":"ca557f333cadc703c74664a383340cb1f7369110"}],"neutronclient/neutron/v2_0/quota.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"8cf7c82948fd39d92df687aa08d7e2ac9021951f","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import argparse"},{"line_number":19,"context_line":"import logging"},{"line_number":20,"context_line":"import six"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from cliff import lister"},{"line_number":23,"context_line":"from cliff import show"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2FaOc%3D","line":20,"updated":"2014-01-14 01:52:59.000000000","message":"six is a third-party module.","commit_id":"ca557f333cadc703c74664a383340cb1f7369110"},{"author":{"_account_id":7450,"name":"Yassine Lamgarchal","email":"yassine.lamgarchal@redhat.com","username":"yassine.lamgarchal"},"change_message_id":"f77f270172c4f82b5aa135ee8f1201ea2331313a","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import argparse"},{"line_number":19,"context_line":"import logging"},{"line_number":20,"context_line":"import six"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from cliff import lister"},{"line_number":23,"context_line":"from cliff import show"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2FYxg%3D","line":20,"in_reply_to":"AAAAUH%2F%2FaOc%3D","updated":"2014-01-14 10:37:49.000000000","message":"Done","commit_id":"ca557f333cadc703c74664a383340cb1f7369110"}]}
