From 7849f2679d533e9b87a7f5466400e2cc007284a1 Mon Sep 17 00:00:00 2001 From: Li-zhigang Date: Wed, 23 Nov 2016 10:42:02 +0800 Subject: [PATCH] Replace six.iteritems() with .items() 1.As mentioned in [1], we should avoid using six.iteritems to achieve iterators. We can use dict.items instead, as it will return iterators in PY3 as well. And dict.items/keys will more readable. 2.In py2, the performance about list should be negligible, see the link [2]. [1] https://wiki.openstack.org/wiki/Python3 [2] http://lists.openstack.org/pipermail/openstack-dev/2015-June/066391.html Change-Id: I9824ddb528784857cac512254db01706e625f1d6 --- tacker/api/extensions.py | 11 +++++------ tacker/policy.py | 2 +- tacker/tests/unit/test_api_v2.py | 8 +++----- tacker/wsgi.py | 2 +- 4 files changed, 10 insertions(+), 13 deletions(-) diff --git a/tacker/api/extensions.py b/tacker/api/extensions.py index eb879c55b..db23c38ac 100644 --- a/tacker/api/extensions.py +++ b/tacker/api/extensions.py @@ -166,7 +166,7 @@ class ExtensionDescriptor(object): if not extension_attrs_map: return - for resource, attrs in six.iteritems(extension_attrs_map): + for resource, attrs in extension_attrs_map.items(): extended_attrs = extended_attributes.get(resource) if extended_attrs: attrs.update(extended_attrs) @@ -196,7 +196,7 @@ class ActionExtensionController(wsgi.Controller): def action(self, request, id): input_dict = self._deserialize(request.body, request.get_content_type()) - for action_name, handler in six.iteritems(self.action_handlers): + for action_name, handler in (self.action_handlers).items(): if action_name in input_dict: return handler(input_dict, request, id) # no action handler found (bump to downstream application) @@ -238,7 +238,7 @@ class ExtensionController(wsgi.Controller): def index(self, request): extensions = [] - for _alias, ext in six.iteritems(self.extension_manager.extensions): + for _alias, ext in (self.extension_manager.extensions).items(): extensions.append(self._translate(ext)) return dict(extensions=extensions) @@ -279,7 +279,7 @@ class ExtensionMiddleware(wsgi.Middleware): LOG.debug(_('Extended resource: %s'), resource.collection) - for action, method in six.iteritems(resource.collection_actions): + for action, method in (resource.collection_actions).items(): conditions = dict(method=[method]) path = "/%s/%s" % (resource.collection, action) with mapper.submapper(controller=resource.controller, @@ -479,8 +479,7 @@ class ExtensionManager(object): continue try: extended_attrs = ext.get_extended_resources(version) - for resource, resource_attrs in six.iteritems( - extended_attrs): + for resource, resource_attrs in extended_attrs.items(): if attr_map.get(resource): attr_map[resource].update(resource_attrs) else: diff --git a/tacker/policy.py b/tacker/policy.py index c60808ecf..fe43882f5 100644 --- a/tacker/policy.py +++ b/tacker/policy.py @@ -102,7 +102,7 @@ def _should_validate_sub_attributes(attribute, sub_attr): validate = attribute.get('validate') return (validate and isinstance(sub_attr, collections.Iterable) and any([k.startswith('type:dict') and - v for (k, v) in six.iteritems(validate)])) + v for (k, v) in validate.items()])) def _build_subattr_match_rule(attr_name, attr, action, target): diff --git a/tacker/tests/unit/test_api_v2.py b/tacker/tests/unit/test_api_v2.py index 9dff52dc3..1c485f97b 100644 --- a/tacker/tests/unit/test_api_v2.py +++ b/tacker/tests/unit/test_api_v2.py @@ -541,7 +541,7 @@ class JSONV2TestCase(APIv2TestBase, testlib_api.WebTestCase): output_dict = res['networks'][0] input_dict['shared'] = False self.assertEqual(len(input_dict), len(output_dict)) - for k, v in six.iteritems(input_dict): + for k, v in input_dict.items(): self.assertEqual(v, output_dict[k]) else: # expect no results @@ -1125,8 +1125,7 @@ class SubresourceTest(base.BaseTestCase): # Save the global RESOURCE_ATTRIBUTE_MAP self.saved_attr_map = {} - for resource, attrs in six.iteritems( - attributes.RESOURCE_ATTRIBUTE_MAP): + for resource, attrs in (attributes.RESOURCE_ATTRIBUTE_MAP).items(): self.saved_attr_map[resource] = attrs.copy() self.config_parse() @@ -1294,8 +1293,7 @@ class ExtensionTestCase(base.BaseTestCase): # Save the global RESOURCE_ATTRIBUTE_MAP self.saved_attr_map = {} - for resource, attrs in six.iteritems( - attributes.RESOURCE_ATTRIBUTE_MAP): + for resource, attrs in (attributes.RESOURCE_ATTRIBUTE_MAP).items(): self.saved_attr_map[resource] = attrs.copy() # Create the default configurations diff --git a/tacker/wsgi.py b/tacker/wsgi.py index c443d4f2a..cb7d1d026 100644 --- a/tacker/wsgi.py +++ b/tacker/wsgi.py @@ -654,7 +654,7 @@ class Debug(Middleware): resp = req.get_response(self.application) print(("*" * 40) + " RESPONSE HEADERS") - for (key, value) in six.iteritems(resp.headers): + for (key, value) in (resp.headers).items(): print(key, "=", value) print()