)]}'
{"nova/api/ec2/__init__.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4396514c63c11c2b9196154d92970502b0e83ba4","unresolved":false,"context_lines":[{"line_number":577,"context_line":"    if unexpected:"},{"line_number":578,"context_line":"        # Log filtered environment for unexpected errors."},{"line_number":579,"context_line":"        env \u003d req.environ.copy()"},{"line_number":580,"context_line":"        for k in list(env.keys()):"},{"line_number":581,"context_line":"            if not isinstance(env[k], six.string_types):"},{"line_number":582,"context_line":"                env.pop(k)"},{"line_number":583,"context_line":"        log_fun(_LE(\u0027Environment: %s\u0027), jsonutils.dumps(env))"}],"source_content_type":"text/x-python","patch_set":14,"id":"da85f559_ba4da33f","line":580,"updated":"2015-11-11 17:17:11.000000000","message":"You could just drop `keys` here (`for k in env`), but it\u0027s all the same","commit_id":"8c22af00de94b785b2b83da928a804e1139f3835"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"9a920543061e955ff2aa31922f1866f1d3ce450d","unresolved":false,"context_lines":[{"line_number":577,"context_line":"    if unexpected:"},{"line_number":578,"context_line":"        # Log filtered environment for unexpected errors."},{"line_number":579,"context_line":"        env \u003d req.environ.copy()"},{"line_number":580,"context_line":"        for k in list(env.keys()):"},{"line_number":581,"context_line":"            if not isinstance(env[k], six.string_types):"},{"line_number":582,"context_line":"                env.pop(k)"},{"line_number":583,"context_line":"        log_fun(_LE(\u0027Environment: %s\u0027), jsonutils.dumps(env))"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba8a016a_752d3afd","line":580,"in_reply_to":"da85f559_ba4da33f","updated":"2015-11-18 12:25:12.000000000","message":"I think the idea here is that python 3.4 doesn\u0027t like it when you modify the list / dictionary you\u0027re iterating over. Having a list( ) will result a new list, env can be modified with no problem.","commit_id":"8c22af00de94b785b2b83da928a804e1139f3835"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"2790ae82315416897ae25c43988d7403ac613cee","unresolved":false,"context_lines":[{"line_number":577,"context_line":"    if unexpected:"},{"line_number":578,"context_line":"        # Log filtered environment for unexpected errors."},{"line_number":579,"context_line":"        env \u003d req.environ.copy()"},{"line_number":580,"context_line":"        for k in list(env.keys()):"},{"line_number":581,"context_line":"            if not isinstance(env[k], six.string_types):"},{"line_number":582,"context_line":"                env.pop(k)"},{"line_number":583,"context_line":"        log_fun(_LE(\u0027Environment: %s\u0027), jsonutils.dumps(env))"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba8a016a_bd700f0c","line":580,"updated":"2015-11-19 20:25:42.000000000","message":"Shouldn\u0027t be needed.  env.keys() may not be a list, but it *is* an iterable.  Am I missing something?","commit_id":"6fa2622abf8128b5b7a934dcfc12a78a68cdd607"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"466911405b6abdfecf89f5ac8450622ebcae34e1","unresolved":false,"context_lines":[{"line_number":577,"context_line":"    if unexpected:"},{"line_number":578,"context_line":"        # Log filtered environment for unexpected errors."},{"line_number":579,"context_line":"        env \u003d req.environ.copy()"},{"line_number":580,"context_line":"        for k in list(env.keys()):"},{"line_number":581,"context_line":"            if not isinstance(env[k], six.string_types):"},{"line_number":582,"context_line":"                env.pop(k)"},{"line_number":583,"context_line":"        log_fun(_LE(\u0027Environment: %s\u0027), jsonutils.dumps(env))"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba8a016a_d43fe584","line":580,"in_reply_to":"ba8a016a_bd700f0c","updated":"2015-11-19 23:20:53.000000000","message":"Yeah, Python 3 doesn\u0027t like it when you change the dict / list you\u0027re iterating over. Had a similar comment on a previous PS.","commit_id":"6fa2622abf8128b5b7a934dcfc12a78a68cdd607"}],"nova/compute/api.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"2790ae82315416897ae25c43988d7403ac613cee","unresolved":false,"context_lines":[{"line_number":2454,"context_line":""},{"line_number":2455,"context_line":"            orig_sys_metadata \u003d dict(instance.system_metadata)"},{"line_number":2456,"context_line":"            # Remove the old keys"},{"line_number":2457,"context_line":"            for key in list(instance.system_metadata.keys()):"},{"line_number":2458,"context_line":"                if key.startswith(utils.SM_IMAGE_PROP_PREFIX):"},{"line_number":2459,"context_line":"                    del instance.system_metadata[key]"},{"line_number":2460,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"ba8a016a_ddd953f4","line":2457,"updated":"2015-11-19 20:25:42.000000000","message":"Again, there shouldn\u0027t be a need to wrap this with list()…","commit_id":"6fa2622abf8128b5b7a934dcfc12a78a68cdd607"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"466911405b6abdfecf89f5ac8450622ebcae34e1","unresolved":false,"context_lines":[{"line_number":2454,"context_line":""},{"line_number":2455,"context_line":"            orig_sys_metadata \u003d dict(instance.system_metadata)"},{"line_number":2456,"context_line":"            # Remove the old keys"},{"line_number":2457,"context_line":"            for key in list(instance.system_metadata.keys()):"},{"line_number":2458,"context_line":"                if key.startswith(utils.SM_IMAGE_PROP_PREFIX):"},{"line_number":2459,"context_line":"                    del instance.system_metadata[key]"},{"line_number":2460,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"ba8a016a_f459c9fd","line":2457,"in_reply_to":"ba8a016a_ddd953f4","updated":"2015-11-19 23:20:53.000000000","message":"Same.","commit_id":"6fa2622abf8128b5b7a934dcfc12a78a68cdd607"}],"nova/db/sqlalchemy/api.py":[{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"cd7a950340aba8c959a5c11dad1da895ba2d36de","unresolved":false,"context_lines":[{"line_number":2205,"context_line":"            column_attr \u003d getattr(model, key)"},{"line_number":2206,"context_line":"            if isinstance(value, list):"},{"line_number":2207,"context_line":"                for item in value:"},{"line_number":2208,"context_line":"                    for k, v in six.iteritems(item):"},{"line_number":2209,"context_line":"                        query \u003d query.filter(column_attr.any(key\u003dk))"},{"line_number":2210,"context_line":"                        query \u003d query.filter(column_attr.any(value\u003dv))"},{"line_number":2211,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"9a8ffd7b_bb537b15","line":2208,"updated":"2015-12-02 19:17:51.000000000","message":"we\u0027ve set before, please just make this a .items(), the iteritems savings aren\u0027t useful.","commit_id":"165a7bbaf1ee3fe3334512820d11f2b8d4bca455"}],"nova/tests/unit/db/test_db_api.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"2790ae82315416897ae25c43988d7403ac613cee","unresolved":false,"context_lines":[{"line_number":7219,"context_line":"        service_data[\u0027host\u0027] \u003d \u0027host2\u0027"},{"line_number":7220,"context_line":"        service \u003d db.service_create(self.ctxt, service_data)"},{"line_number":7221,"context_line":""},{"line_number":7222,"context_line":"        existing_node \u003d dict(six.iteritems(self.item))"},{"line_number":7223,"context_line":"        expected \u003d [existing_node]"},{"line_number":7224,"context_line":""},{"line_number":7225,"context_line":"        for name in [\u0027bm_node1\u0027, \u0027bm_node2\u0027]:"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba8a016a_1da11b46","line":7222,"updated":"2015-11-19 20:25:42.000000000","message":"Hmmm, I wonder why the original code didn\u0027t just do \"self.item.copy()\"?","commit_id":"6fa2622abf8128b5b7a934dcfc12a78a68cdd607"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"466911405b6abdfecf89f5ac8450622ebcae34e1","unresolved":false,"context_lines":[{"line_number":7219,"context_line":"        service_data[\u0027host\u0027] \u003d \u0027host2\u0027"},{"line_number":7220,"context_line":"        service \u003d db.service_create(self.ctxt, service_data)"},{"line_number":7221,"context_line":""},{"line_number":7222,"context_line":"        existing_node \u003d dict(six.iteritems(self.item))"},{"line_number":7223,"context_line":"        expected \u003d [existing_node]"},{"line_number":7224,"context_line":""},{"line_number":7225,"context_line":"        for name in [\u0027bm_node1\u0027, \u0027bm_node2\u0027]:"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba8a016a_340bd1d7","line":7222,"in_reply_to":"ba8a016a_1da11b46","updated":"2015-11-19 23:20:53.000000000","message":"Yeah, Me too.. it does do the same thing anyways... If there\u0027s going to be another patchset, I could change it. Don\u0027t see why otherwise.","commit_id":"6fa2622abf8128b5b7a934dcfc12a78a68cdd607"}],"nova/tests/unit/test_flavors.py":[{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"715950bd8f028ce059f6866608f066919b336287","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def _existing_flavor(self):"},{"line_number":90,"context_line":"        \"\"\"return first flavor name.\"\"\""},{"line_number":91,"context_line":"        return list(flavors.get_all_flavors().keys())[0]"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def test_get_all_instance_types(self):"},{"line_number":94,"context_line":"        # Ensures that all flavors can be retrieved."}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_2d1acf7d","line":91,"updated":"2015-10-08 22:11:29.000000000","message":"Its at moments like this I wish we had first() available :)","commit_id":"7e0d6c7b0860165dfdca7128e24cb28d7b7bbfac"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"0816dacc80ce3c2edf280693d9b845570037e936","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def _existing_flavor(self):"},{"line_number":90,"context_line":"        \"\"\"return first flavor name.\"\"\""},{"line_number":91,"context_line":"        return list(flavors.get_all_flavors().keys())[0]"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def test_get_all_instance_types(self):"},{"line_number":94,"context_line":"        # Ensures that all flavors can be retrieved."}],"source_content_type":"text/x-python","patch_set":1,"id":"5a2ca52d_5748a75b","line":91,"in_reply_to":"7a2fa921_2d1acf7d","updated":"2015-10-13 12:51:53.000000000","message":"indeed. :D","commit_id":"7e0d6c7b0860165dfdca7128e24cb28d7b7bbfac"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"2790ae82315416897ae25c43988d7403ac613cee","unresolved":false,"context_lines":[{"line_number":205,"context_line":"        _instance_type_p \u003d obj_base.obj_to_primitive(_instance_type)"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"        props \u003d flavors.system_metadata_flavor_props.keys()"},{"line_number":208,"context_line":"        for key in list(instance_type_p.keys()):"},{"line_number":209,"context_line":"            if key not in props:"},{"line_number":210,"context_line":"                del instance_type_p[key]"},{"line_number":211,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"ba8a016a_dd8713b3","line":208,"updated":"2015-11-19 20:25:42.000000000","message":"Another instance where wrapping with list() shouldn\u0027t be necessary.","commit_id":"6fa2622abf8128b5b7a934dcfc12a78a68cdd607"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"466911405b6abdfecf89f5ac8450622ebcae34e1","unresolved":false,"context_lines":[{"line_number":205,"context_line":"        _instance_type_p \u003d obj_base.obj_to_primitive(_instance_type)"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"        props \u003d flavors.system_metadata_flavor_props.keys()"},{"line_number":208,"context_line":"        for key in list(instance_type_p.keys()):"},{"line_number":209,"context_line":"            if key not in props:"},{"line_number":210,"context_line":"                del instance_type_p[key]"},{"line_number":211,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"ba8a016a_540215b5","line":208,"in_reply_to":"ba8a016a_dd8713b3","updated":"2015-11-19 23:20:53.000000000","message":"del below. so, can\u0027t.","commit_id":"6fa2622abf8128b5b7a934dcfc12a78a68cdd607"}],"nova/tests/unit/virt/vmwareapi/fake.py":[{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"715950bd8f028ce059f6866608f066919b336287","unresolved":false,"context_lines":[{"line_number":588,"context_line":"    def __init__(self, value\u003d\u0027host-100\u0027):"},{"line_number":589,"context_line":"        super(DatastoreHostMount, self).__init__()"},{"line_number":590,"context_line":"        host_ref \u003d (_db_content[\"HostSystem\"]"},{"line_number":591,"context_line":"                    [list(_db_content[\"HostSystem\"].keys()[0])].obj)"},{"line_number":592,"context_line":"        host_system \u003d DataObject()"},{"line_number":593,"context_line":"        host_system.ManagedObjectReference \u003d [host_ref]"},{"line_number":594,"context_line":"        host_system.value \u003d value"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_6d044717","line":591,"updated":"2015-10-08 22:11:29.000000000","message":"Your bracket is in the wrong place: \n\n keys())[0]] is what you need.","commit_id":"7e0d6c7b0860165dfdca7128e24cb28d7b7bbfac"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"0816dacc80ce3c2edf280693d9b845570037e936","unresolved":false,"context_lines":[{"line_number":588,"context_line":"    def __init__(self, value\u003d\u0027host-100\u0027):"},{"line_number":589,"context_line":"        super(DatastoreHostMount, self).__init__()"},{"line_number":590,"context_line":"        host_ref \u003d (_db_content[\"HostSystem\"]"},{"line_number":591,"context_line":"                    [list(_db_content[\"HostSystem\"].keys()[0])].obj)"},{"line_number":592,"context_line":"        host_system \u003d DataObject()"},{"line_number":593,"context_line":"        host_system.ManagedObjectReference \u003d [host_ref]"},{"line_number":594,"context_line":"        host_system.value \u003d value"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a2ca52d_77412339","line":591,"in_reply_to":"7a2fa921_6d044717","updated":"2015-10-13 12:51:53.000000000","message":"true.","commit_id":"7e0d6c7b0860165dfdca7128e24cb28d7b7bbfac"},{"author":{"_account_id":16839,"name":"Cale Rath","email":"ctrath@us.ibm.com","username":"ctrath"},"change_message_id":"28c008b779d6ae6596a12b81324af5a5983035ce","unresolved":false,"context_lines":[{"line_number":774,"context_line":"        if _db_content.get(\"Network\", None) is None:"},{"line_number":775,"context_line":"            create_network()"},{"line_number":776,"context_line":"        net_ref \u003d _db_content[\"Network\"]["},{"line_number":777,"context_line":"            list(_db_content[\"Network\"].keys()[0])].obj"},{"line_number":778,"context_line":"        network_do \u003d DataObject()"},{"line_number":779,"context_line":"        network_do.ManagedObjectReference \u003d [net_ref]"},{"line_number":780,"context_line":"        self.set(\"network\", network_do)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_7eb7173a","line":777,"updated":"2015-10-08 19:50:53.000000000","message":"should this be list(_db_content[\"Network\"].keys())[0]?  tox is failing with \"TypeError: \u0027ManagedObjectReference\u0027 object is not iterable\"","commit_id":"7e0d6c7b0860165dfdca7128e24cb28d7b7bbfac"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"0816dacc80ce3c2edf280693d9b845570037e936","unresolved":false,"context_lines":[{"line_number":774,"context_line":"        if _db_content.get(\"Network\", None) is None:"},{"line_number":775,"context_line":"            create_network()"},{"line_number":776,"context_line":"        net_ref \u003d _db_content[\"Network\"]["},{"line_number":777,"context_line":"            list(_db_content[\"Network\"].keys()[0])].obj"},{"line_number":778,"context_line":"        network_do \u003d DataObject()"},{"line_number":779,"context_line":"        network_do.ManagedObjectReference \u003d [net_ref]"},{"line_number":780,"context_line":"        self.set(\"network\", network_do)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a2ca52d_d70d9738","line":777,"in_reply_to":"7a2fa921_7eb7173a","updated":"2015-10-13 12:51:53.000000000","message":"true, my mistake.","commit_id":"7e0d6c7b0860165dfdca7128e24cb28d7b7bbfac"}],"nova/virt/xenapi/fake.py":[{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"f4bb59a2f07e62b929e5fcd11a40fb6db1d2b0fe","unresolved":false,"context_lines":[{"line_number":375,"context_line":""},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"def get_all_records(table):"},{"line_number":378,"context_line":"    return list(_db_content[table])"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"def _query_matches(record, query):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a29b11f_81596037","line":378,"updated":"2015-10-22 08:34:50.000000000","message":"I think it\u0027s not correct. _db_content[table] is a dict. \n\nlist(_db_content[table]) is a only list of keys of this dict. Here you lose all values from this dict","commit_id":"6e920fdca76c8b47e013b26df6c2b1e10b6fc084"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"545d37acce8f4a62ba1acb5e2cd6ae3c9dc7dff5","unresolved":false,"context_lines":[{"line_number":375,"context_line":""},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"def get_all_records(table):"},{"line_number":378,"context_line":"    return list(_db_content[table])"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"def _query_matches(record, query):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a29b11f_29a712ab","line":378,"in_reply_to":"3a29b11f_81596037","updated":"2015-10-22 09:53:43.000000000","message":"yeah, true. my bad. thanks for the help.","commit_id":"6e920fdca76c8b47e013b26df6c2b1e10b6fc084"}]}
