Use dict.items() rather than six.iteritems()

six.iteritems() is unnecessary in most cases since items() works
fine.

Change-Id: I6911512fc67a74b32652cb84660d26d53fe711ed
This commit is contained in:
Brant Knudson 2015-07-10 16:57:17 -05:00
parent 83fa28ad9f
commit 69e322a716
30 changed files with 67 additions and 92 deletions

View File

@ -14,7 +14,6 @@
from oslo_config import cfg
from oslo_log import log
import six
import sqlalchemy
from sqlalchemy.sql.expression import false
@ -415,4 +414,4 @@ class RoleAssignment(sql.ModelBase, sql.DictBase):
RoleAssignment doesn't have non-indexed 'extra' attributes, so the
parent implementation is not applicable.
"""
return dict(six.iteritems(self))
return dict(self.items())

View File

@ -52,7 +52,7 @@ def convert_method_list_to_integer(methods):
method_ints = []
for method in methods:
for k, v in six.iteritems(method_map):
for k, v in method_map.items():
if v == method:
method_ints.append(k)
return sum(method_ints)
@ -72,7 +72,7 @@ def convert_integer_to_method_list(method_int):
method_map = construct_method_map_from_config()
method_ints = []
for k, v in six.iteritems(method_map):
for k, v in method_map.items():
method_ints.append(k)
method_ints.sort(reverse=True)

View File

@ -16,7 +16,6 @@
import itertools
from oslo_config import cfg
import six
import sqlalchemy
from sqlalchemy.sql import true
@ -284,8 +283,7 @@ class Catalog(catalog.Driver):
"""
substitutions = dict(
itertools.chain(six.iteritems(CONF),
six.iteritems(CONF.eventlet_server)))
itertools.chain(CONF.items(), CONF.eventlet_server.items()))
substitutions.update({'user_id': user_id})
silent_keyerror_failures = []
if tenant_id:
@ -342,8 +340,7 @@ class Catalog(catalog.Driver):
"""
d = dict(
itertools.chain(six.iteritems(CONF),
six.iteritems(CONF.eventlet_server)))
itertools.chain(CONF.items(), CONF.eventlet_server.items()))
d.update({'user_id': user_id})
silent_keyerror_failures = []
if tenant_id:

View File

@ -17,7 +17,6 @@ import os.path
from oslo_config import cfg
from oslo_log import log
import six
from keystone.catalog.backends import kvs
from keystone.catalog import core
@ -121,8 +120,7 @@ class Catalog(kvs.Catalog):
"""
substitutions = dict(
itertools.chain(six.iteritems(CONF),
six.iteritems(CONF.eventlet_server)))
itertools.chain(CONF.items(), CONF.eventlet_server.items()))
substitutions.update({'user_id': user_id})
silent_keyerror_failures = []
if tenant_id:
@ -134,12 +132,12 @@ class Catalog(kvs.Catalog):
# TODO(davechen): If there is service with no endpoints, we should
# skip the service instead of keeping it in the catalog.
# see bug #1436704.
for region, region_ref in six.iteritems(self.templates):
for region, region_ref in self.templates.items():
catalog[region] = {}
for service, service_ref in six.iteritems(region_ref):
for service, service_ref in region_ref.items():
service_data = {}
try:
for k, v in six.iteritems(service_ref):
for k, v in service_ref.items():
formatted_value = core.format_url(
v, substitutions,
silent_keyerror_failures=silent_keyerror_failures)

View File

@ -15,8 +15,6 @@
import uuid
import six
from keystone.catalog import core
from keystone.catalog import schema
from keystone.common import controller
@ -133,7 +131,7 @@ class Endpoint(controller.V2Controller):
legacy_endpoint_ref.pop(url)
legacy_endpoint_id = uuid.uuid4().hex
for interface, url in six.iteritems(urls):
for interface, url in urls.items():
endpoint_ref = endpoint.copy()
endpoint_ref['id'] = uuid.uuid4().hex
endpoint_ref['legacy_endpoint_id'] = legacy_endpoint_id

View File

@ -514,14 +514,14 @@ class Driver(object):
v2_catalog = self.get_catalog(user_id, tenant_id)
v3_catalog = []
for region_name, region in six.iteritems(v2_catalog):
for service_type, service in six.iteritems(region):
for region_name, region in v2_catalog.items():
for service_type, service in region.items():
service_v3 = {
'type': service_type,
'endpoints': []
}
for attr, value in six.iteritems(service):
for attr, value in service.items():
# Attributes that end in URL are interfaces. In the V2
# catalog, these are internalURL, publicURL, and adminURL.
# For example, <region_name>.publicURL=<URL> in the V2

View File

@ -399,7 +399,7 @@ class MongoApi(object):
Refer to MongoDB documentation around TTL index for further details.
"""
indexes = collection.index_information()
for indx_name, index_data in six.iteritems(indexes):
for indx_name, index_data in indexes.items():
if all(k in index_data for k in ('key', 'expireAfterSeconds')):
existing_value = index_data['expireAfterSeconds']
fld_present = 'doc_date' in index_data['key'][0]

View File

@ -27,8 +27,6 @@ See also:
import traceback
import six
from keystone.i18n import _
@ -203,7 +201,7 @@ def resolve_future_dependencies(__provider_name=None):
# Resolve future dependencies, raises UnresolvableDependencyException if
# there's no provider registered.
try:
for dependency, targets in six.iteritems(_future_dependencies.copy()):
for dependency, targets in _future_dependencies.copy().items():
if dependency not in _REGISTRY:
# a Class was registered that could fulfill the dependency, but
# it has not yet been initialized.

View File

@ -13,8 +13,6 @@
# under the License.
import six
from keystone import exception
from keystone.i18n import _
@ -82,7 +80,7 @@ class Status(object):
def translate_urls(json_home, new_prefix):
"""Given a JSON Home document, sticks new_prefix on each of the urls."""
for dummy_rel, resource in six.iteritems(json_home['resources']):
for dummy_rel, resource in json_home['resources'].items():
if 'href' in resource:
resource['href'] = new_prefix + resource['href']
elif 'href-template' in resource:

View File

@ -25,7 +25,6 @@ from dogpile.core import nameregistry
from oslo_config import cfg
from oslo_log import log
from oslo_utils import importutils
import six
from keystone import exception
from keystone.i18n import _
@ -232,7 +231,7 @@ class KeyValueStore(object):
if config_args['lock_timeout'] > 0:
config_args['lock_timeout'] += LOCK_WINDOW
for argument, value in six.iteritems(config_args):
for argument, value in config_args.items():
arg_key = '.'.join([prefix, 'arguments', argument])
conf_dict[arg_key] = value

View File

@ -161,7 +161,7 @@ def convert_ldap_result(ldap_result):
at_least_one_referral = True
continue
for kind, values in six.iteritems(attrs):
for kind, values in attrs.items():
try:
val2py = enabled2py if kind == 'enabled' else ldap2py
ldap_attrs[kind] = [val2py(x) for x in values]
@ -739,7 +739,7 @@ class PooledLDAPHandler(LDAPHandler):
# if connection has a lifetime, then it already has options specified
if conn.get_lifetime() > 30:
return
for option, invalue in six.iteritems(self.conn_options):
for option, invalue in self.conn_options.items():
conn.set_option(option, invalue)
def _get_pool_connection(self):
@ -1085,7 +1085,7 @@ def register_handler(prefix, handler):
def _get_connection(conn_url, use_pool=False, use_auth_pool=False):
for prefix, handler in six.iteritems(_HANDLERS):
for prefix, handler in _HANDLERS.items():
if conn_url.startswith(prefix):
return handler()
@ -1171,7 +1171,7 @@ class BaseLdap(object):
self.object_class = (getattr(conf.ldap, objclass)
or self.DEFAULT_OBJECTCLASS)
for k, v in six.iteritems(self.attribute_options_names):
for k, v in self.attribute_options_names.items():
v = '%s_%s_attribute' % (self.options_name, v)
self.attribute_mapping[k] = getattr(conf.ldap, v)
@ -1320,7 +1320,7 @@ class BaseLdap(object):
# in a case-insensitive way. We use the case specified in the
# mapping for the model to ensure we have a predictable way of
# retrieving values later.
lower_res = {k.lower(): v for k, v in six.iteritems(res[1])}
lower_res = {k.lower(): v for k, v in res[1].items()}
id_attrs = lower_res.get(self.id_attr.lower())
if not id_attrs:
@ -1406,7 +1406,7 @@ class BaseLdap(object):
self.affirm_unique(values)
object_classes = self.structural_classes + [self.object_class]
attrs = [('objectClass', object_classes)]
for k, v in six.iteritems(values):
for k, v in values.items():
if k in self.attribute_ignore:
continue
if k == 'id':
@ -1418,7 +1418,7 @@ class BaseLdap(object):
if attr_type is not None:
attrs.append((attr_type, [v]))
extra_attrs = [attr for attr, name
in six.iteritems(self.extra_attr_mapping)
in self.extra_attr_mapping.items()
if name == k]
for attr in extra_attrs:
attrs.append((attr, [v]))
@ -1481,7 +1481,7 @@ class BaseLdap(object):
query = (u'(&%s%s)' %
(query, ''.join([calc_filter(k, v) for k, v in
six.iteritems(query_params)])))
query_params.items()])))
with self.get_connection() as conn:
return conn.search_s(search_base, scope, query, attrlist)
@ -1511,7 +1511,7 @@ class BaseLdap(object):
old_obj = self.get(object_id)
modlist = []
for k, v in six.iteritems(values):
for k, v in values.items():
if k == 'id':
# id can't be modified.
continue
@ -1650,7 +1650,7 @@ class BaseLdap(object):
(query, ''.join(['(%s=%s)'
% (k, ldap.filter.escape_filter_chars(v))
for k, v in
six.iteritems(query_params)])))
query_params.items()])))
not_deleted_nodes = []
with self.get_connection() as conn:
try:

View File

@ -86,7 +86,7 @@ def validate_token_bind(context, token_ref):
LOG.info(_LI("Named bind mode %s not in bind information"), name)
raise exception.Unauthorized()
for bind_type, identifier in six.iteritems(bind):
for bind_type, identifier in bind.items():
if bind_type == 'kerberos':
if not (context['environment'].get('AUTH_TYPE', '').lower()
== 'negotiate'):
@ -197,8 +197,8 @@ class Application(BaseApplication):
# allow middleware up the stack to provide context, params and headers.
context = req.environ.get(CONTEXT_ENV, {})
context['query_string'] = dict(six.iteritems(req.params))
context['headers'] = dict(six.iteritems(req.headers))
context['query_string'] = dict(req.params.items())
context['headers'] = dict(req.headers.items())
context['path'] = req.environ['PATH_INFO']
scheme = (None if not CONF.secure_proxy_ssl_header
else req.environ.get(CONF.secure_proxy_ssl_header))
@ -285,7 +285,7 @@ class Application(BaseApplication):
return arg.replace(':', '_').replace('-', '_')
def _normalize_dict(self, d):
return {self._normalize_arg(k): v for (k, v) in six.iteritems(d)}
return {self._normalize_arg(k): v for (k, v) in d.items()}
def assert_admin(self, context):
"""Ensure the user is an admin.
@ -367,8 +367,7 @@ class Application(BaseApplication):
if url:
substitutions = dict(
itertools.chain(six.iteritems(CONF),
six.iteritems(CONF.eventlet_server)))
itertools.chain(CONF.items(), CONF.eventlet_server.items()))
url = url % substitutions
else:
@ -487,7 +486,7 @@ class Debug(Middleware):
resp = req.get_response(self.application)
if not hasattr(LOG, 'isEnabledFor') or LOG.isEnabledFor(LOG.debug):
LOG.debug('%s %s %s', ('*' * 20), 'RESPONSE HEADERS', ('*' * 20))
for (key, value) in six.iteritems(resp.headers):
for (key, value) in resp.headers.items():
LOG.debug('%s = %s', key, value)
LOG.debug('')
@ -773,7 +772,7 @@ def render_response(body=None, status=None, headers=None, method=None):
# both py2x and py3x.
stored_headers = resp.headers.copy()
resp.body = b''
for header, value in six.iteritems(stored_headers):
for header, value in stored_headers.items():
resp.headers[header] = value
return resp
@ -808,8 +807,7 @@ def render_exception(error, context=None, request=None, user_locale=None):
url = 'http://localhost:%d' % CONF.eventlet_server.public_port
else:
substitutions = dict(
itertools.chain(six.iteritems(CONF),
six.iteritems(CONF.eventlet_server)))
itertools.chain(CONF.items(), CONF.eventlet_server.items()))
url = url % substitutions
headers.append(('WWW-Authenticate', 'Keystone uri="%s"' % url))

View File

@ -13,7 +13,6 @@
# under the License.
from oslo_config import cfg
import six
from keystone.catalog.backends import sql
from keystone.catalog import core as catalog_core
@ -27,7 +26,7 @@ CONF = cfg.CONF
@dependency.requires('endpoint_filter_api')
class EndpointFilterCatalog(sql.Catalog):
def get_v3_catalog(self, user_id, project_id):
substitutions = dict(six.iteritems(CONF))
substitutions = dict(CONF.items())
substitutions.update({'tenant_id': project_id, 'user_id': user_id})
services = {}
@ -67,7 +66,7 @@ class EndpointFilterCatalog(sql.Catalog):
# format catalog
catalog = []
for service_id, service in six.iteritems(services):
for service_id, service in services.items():
formatted_service = {}
formatted_service['id'] = service['id']
formatted_service['type'] = service['type']

View File

@ -49,7 +49,7 @@ class _ControllerBase(controller.V3Controller):
for endpoint in endpoints:
is_candidate = True
for key, value in six.iteritems(filters):
for key, value in filters.items():
if endpoint[key] != value:
is_candidate = False
break

View File

@ -608,7 +608,7 @@ class RuleProcessor(object):
LOG.debug('direct_maps: %s', direct_maps)
LOG.debug('local: %s', local)
new = {}
for k, v in six.iteritems(local):
for k, v in local.items():
if isinstance(v, dict):
new_value = self._update_local_mapping(v, direct_maps)
else:

View File

@ -18,7 +18,6 @@ import uuid
from oslo_serialization import jsonutils
from oslo_utils import timeutils
import six
from keystone.common import sql
from keystone.common import utils
@ -59,7 +58,7 @@ class RequestToken(sql.ModelBase, sql.DictBase):
return cls(**user_dict)
def to_dict(self):
return dict(six.iteritems(self))
return dict(self.items())
class AccessToken(sql.ModelBase, sql.DictBase):
@ -82,7 +81,7 @@ class AccessToken(sql.ModelBase, sql.DictBase):
return cls(**user_dict)
def to_dict(self):
return dict(six.iteritems(self))
return dict(self.items())
class OAuth1(object):

View File

@ -145,7 +145,7 @@ class Manager(manager.Manager):
]
}
for event, cb_info in six.iteritems(callbacks):
for event, cb_info in callbacks.items():
for resource_type, callback_fns in cb_info:
notifications.register_event_callback(event, resource_type,
callback_fns)

View File

@ -15,7 +15,6 @@
from oslo_config import cfg
from oslo_log import log
from oslo_utils import encodeutils
import six
from keystone.i18n import _, _LW
@ -63,7 +62,7 @@ class Error(Exception):
except UnicodeDecodeError:
try:
kwargs = {k: encodeutils.safe_decode(v)
for k, v in six.iteritems(kwargs)}
for k, v in kwargs.items()}
except UnicodeDecodeError:
# NOTE(jamielennox): This is the complete failure case
# at least by showing the template we have some idea

View File

@ -17,7 +17,6 @@ from oslo_log import log
from oslo_log import versionutils
from oslo_middleware import sizelimit
from oslo_serialization import jsonutils
import six
from keystone.common import authorization
from keystone.common import wsgi
@ -82,7 +81,7 @@ class PostParamsMiddleware(wsgi.Middleware):
def process_request(self, request):
params_parsed = request.params
params = {}
for k, v in six.iteritems(params_parsed):
for k, v in params_parsed.items():
if k in ('self', 'context'):
continue
if k.startswith('_'):
@ -132,7 +131,7 @@ class JsonBodyMiddleware(wsgi.Middleware):
return wsgi.render_exception(e, request=request)
params = {}
for k, v in six.iteritems(params_parsed):
for k, v in params_parsed.items():
if k in ('self', 'context'):
continue
if k.startswith('_'):

View File

@ -216,7 +216,7 @@ class TestClient(object):
req = webob.Request.blank(path)
req.method = method
for k, v in six.iteritems(headers):
for k, v in headers.items():
req.headers[k] = v
if body:
req.body = body
@ -401,7 +401,7 @@ class TestCase(BaseTestCase):
drivers, _unused = common.setup_backends(
load_extra_backends_fn=self.load_extra_backends)
for manager_name, manager in six.iteritems(drivers):
for manager_name, manager in drivers.items():
setattr(self, manager_name, manager)
self.addCleanup(self.cleanup_instance(*list(drivers.keys())))

View File

@ -358,7 +358,7 @@ class FakeLdap(core.LDAPHandler):
return self.delete_ext_s(dn, serverctrls=[])
def _getChildren(self, dn):
return [k for k, v in six.iteritems(self.db)
return [k for k, v in self.db.items()
if re.match('%s.*,%s' % (
re.escape(self.__prefix),
re.escape(self.dn(dn))), k)]
@ -479,7 +479,7 @@ class FakeLdap(core.LDAPHandler):
raise ldap.NO_SUCH_OBJECT
results = [(base, item_dict)]
extraresults = [(k[len(self.__prefix):], v)
for k, v in six.iteritems(self.db)
for k, v in self.db.items()
if re.match('%s.*,%s' %
(re.escape(self.__prefix),
re.escape(self.dn(base))), k)]
@ -490,7 +490,7 @@ class FakeLdap(core.LDAPHandler):
base_dn = ldap.dn.str2dn(core.utf8_encode(base))
base_len = len(base_dn)
for k, v in six.iteritems(self.db):
for k, v in self.db.items():
if not k.startswith(self.__prefix):
continue
k_dn_str = k[len(self.__prefix):]
@ -523,7 +523,7 @@ class FakeLdap(core.LDAPHandler):
('objectclass' not in attrs_checked)):
raise AssertionError('No objectClass in search filter')
# filter the attributes by attrlist
attrs = {k: v for k, v in six.iteritems(attrs)
attrs = {k: v for k, v in attrs.items()
if not attrlist or k in attrlist}
objects.append((dn, attrs))

View File

@ -13,7 +13,6 @@
# under the License.
from oslo_serialization import jsonutils
import six
import webtest
from keystone.auth import controllers as auth_controllers
@ -75,7 +74,7 @@ class RestfulTestCase(tests.TestCase):
def request(self, app, path, body=None, headers=None, token=None,
expected_status=None, **kwargs):
if headers:
headers = {str(k): str(v) for k, v in six.iteritems(headers)}
headers = {str(k): str(v) for k, v in headers.items()}
else:
headers = {}

View File

@ -140,13 +140,13 @@ class MockCollection(object):
if self._apply_filter(document, spec))
def _apply_filter(self, document, query):
for key, search in six.iteritems(query):
for key, search in query.items():
doc_val = document.get(key)
if isinstance(search, dict):
op_dict = {'$in': lambda dv, sv: dv in sv}
is_match = all(
op_str in op_dict and op_dict[op_str](doc_val, search_val)
for op_str, search_val in six.iteritems(search)
for op_str, search_val in search.items()
)
else:
is_match = doc_val == search
@ -199,7 +199,7 @@ class MockCollection(object):
existing_doc = self._documents[self._insert(document)]
def _internalize_dict(self, d):
return {k: copy.deepcopy(v) for k, v in six.iteritems(d)}
return {k: copy.deepcopy(v) for k, v in d.items()}
def remove(self, spec_or_id=None, search_filter=None):
"""Remove objects matching spec_or_id from the collection."""

View File

@ -14,8 +14,6 @@
import uuid
import six
from keystone import catalog
from keystone.tests import unit as tests
from keystone.tests.unit.ksfixtures import database
@ -93,7 +91,7 @@ class V2CatalogTestCase(rest.RestfulTestCase):
req_body, response = self._endpoint_create()
self.assertIn('endpoint', response.result)
self.assertIn('id', response.result['endpoint'])
for field, value in six.iteritems(req_body['endpoint']):
for field, value in req_body['endpoint'].items():
self.assertEqual(response.result['endpoint'][field], value)
def test_endpoint_create_with_null_adminurl(self):

View File

@ -38,7 +38,6 @@ from oslo_config import cfg
from oslo_db import exception as db_exception
from oslo_db.sqlalchemy import migration
from oslo_db.sqlalchemy import session as db_session
import six
from sqlalchemy.engine import reflection
import sqlalchemy.exc
from sqlalchemy import schema
@ -780,7 +779,7 @@ class VersionTests(SqlMigrateBase):
def test_extension_initial(self):
"""When get the initial version of an extension, it's 0."""
for name, extension in six.iteritems(EXTENSIONS):
for name, extension in EXTENSIONS.items():
abs_path = migration_helpers.find_migrate_repo(extension)
migration.db_version_control(sql.get_engine(), abs_path)
version = migration_helpers.get_db_version(extension=name)
@ -789,7 +788,7 @@ class VersionTests(SqlMigrateBase):
def test_extension_migrated(self):
"""When get the version after migrating an extension, it's not 0."""
for name, extension in six.iteritems(EXTENSIONS):
for name, extension in EXTENSIONS.items():
abs_path = migration_helpers.find_migrate_repo(extension)
migration.db_version_control(sql.get_engine(), abs_path)
migration.db_sync(sql.get_engine(), abs_path)

View File

@ -1368,7 +1368,7 @@ class AssignmentTestMixin(object):
query_params = '?effective' if effective else ''
for k, v in six.iteritems(filters):
for k, v in filters.items():
query_params += '?' if not query_params else '&'
if k == 'inherited_to_projects':

View File

@ -22,7 +22,6 @@ from keystoneclient.common import cms
import mock
from oslo_config import cfg
from oslo_utils import timeutils
import six
from six.moves import range
from testtools import matchers
from testtools import testcase
@ -1493,7 +1492,7 @@ class TestTokenRevokeApi(TestTokenRevokeById):
def assertValidRevokedTokenResponse(self, events_response, **kwargs):
events = events_response['events']
self.assertEqual(1, len(events))
for k, v in six.iteritems(kwargs):
for k, v in kwargs.items():
self.assertEqual(v, events[0].get(k))
self.assertIsNotNone(events[0]['issued_before'])
self.assertIsNotNone(events_response['links'])
@ -1563,7 +1562,7 @@ class TestTokenRevokeApi(TestTokenRevokeById):
def assertEventDataInList(self, events, **kwargs):
found = False
for e in events:
for key, value in six.iteritems(kwargs):
for key, value in kwargs.items():
try:
if e[key] != value:
break
@ -1581,8 +1580,7 @@ class TestTokenRevokeApi(TestTokenRevokeById):
'find event with key-value pairs. Expected: '
'"%(expected)s" Events: "%(events)s"' %
{'expected': ','.join(
["'%s=%s'" % (k, v) for k, v in six.iteritems(
kwargs)]),
["'%s=%s'" % (k, v) for k, v in kwargs.items()]),
'events': events})
def test_list_delete_token_shows_in_event_list(self):

View File

@ -512,8 +512,8 @@ class Auth(controller.V2Controller):
return {}
endpoints = []
for region_name, region_ref in six.iteritems(catalog_ref):
for service_type, service_ref in six.iteritems(region_ref):
for region_name, region_ref in catalog_ref.items():
for service_type, service_ref in region_ref.items():
endpoints.append({
'id': service_ref.get('id'),
'name': service_ref.get('name'),

View File

@ -147,7 +147,7 @@ class Manager(manager.Manager):
]
}
for event, cb_info in six.iteritems(callbacks):
for event, cb_info in callbacks.items():
for resource_type, callback_fns in cb_info:
notifications.register_event_callback(event, resource_type,
callback_fns)

View File

@ -181,8 +181,8 @@ class V2TokenDataHelper(object):
return []
services = {}
for region, region_ref in six.iteritems(catalog_ref):
for service, service_ref in six.iteritems(region_ref):
for region, region_ref in catalog_ref.items():
for service, service_ref in region_ref.items():
new_service_ref = services.get(service, {})
new_service_ref['name'] = service_ref.pop('name')
new_service_ref['type'] = service