Use Python3-compatible dict method names

Python 2 has keys()/values()/items(), which return lists,
iterkeys()/itervalues()/iteritems(), which return iterators,
and viewkeys()/viewvalues()/viewitems() which return views.

Python 3 has only keys()/values()/items(), which return views.
To get iterators, one can use iter() or a for loop/comprehension;
for lists there's the list() constructor.

When iterating through the entire dict, without modifying the dict,
 the difference between Python 2's items() and iteritems() is
negligible, especially on small dicts (the main overhead is
extra memory, not CPU time). In the interest of simpler code,
this patch changes many instances of iteritems() to items(),
iterkeys() to keys() etc.

In other cases, helpers like six.itervalues are used.

Reviewed-By: Christian Heimes <cheimes@redhat.com>
Reviewed-By: Jan Cholasta <jcholast@redhat.com>
This commit is contained in:
Petr Viktorin authored and Jan Cholasta committed 2015-09-01 11:42:01 +02:00
1 parent dd16cc98b0
commit 3bf91eab25
56 files changed
+182 -172

No files matched your search

+1 -1
View File
@@ -105,7 +105,7 @@ class IPAOptionParser(OptionParser):
all_opts_dict = dict([ (o.dest, o) for o in self._get_all_options() if hasattr(o, 'sensitive') ])
safe_opts_dict = {}
for option, value in opts.__dict__.iteritems():
for option, value in opts.__dict__.items():
if all_opts_dict[option].sensitive != True:
safe_opts_dict[option] = value
+8 -10
View File
@@ -41,7 +41,7 @@ attrs_id2name = {
_ipap11helper.CKA_WRAP_WITH_TRUSTED: 'ipk11wrapwithtrusted',
}
attrs_name2id = dict(zip(attrs_id2name.values(), attrs_id2name.keys()))
attrs_name2id = {v: k for k, v in attrs_id2name.items()}
# attribute:
# http://www.freeipa.org/page/V4/PKCS11_in_LDAP/Schema#ipk11KeyType
@@ -53,7 +53,7 @@ keytype_name2id = {
"aes": _ipap11helper.KEY_TYPE_AES,
}
keytype_id2name = dict(zip(keytype_name2id.values(), keytype_name2id.keys()))
keytype_id2name = {v: k for k, v in keytype_name2id.items()}
wrappingmech_name2id = {
"rsaPkcs": _ipap11helper.MECH_RSA_PKCS,
@@ -62,8 +62,7 @@ wrappingmech_name2id = {
"aesKeyWrapPad": _ipap11helper.MECH_AES_KEY_WRAP_PAD
}
wrappingmech_id2name = dict(zip(wrappingmech_name2id.values(),
wrappingmech_name2id.keys()))
wrappingmech_id2name = {v: k for k, v in wrappingmech_name2id.items()}
bool_attr_names = set([
@@ -105,8 +104,7 @@ modifiable_attrs_id2name = {
_ipap11helper.CKA_WRAP: 'ipk11wrap',
}
modifiable_attrs_name2id = dict(zip(modifiable_attrs_id2name.values(),
modifiable_attrs_id2name.keys()))
modifiable_attrs_name2id = {v: k for k, v in modifiable_attrs_id2name.items()}
def sync_pkcs11_metadata(log, source, target):
"""sync ipk11 metadata from source object to target object"""
@@ -148,7 +146,7 @@ def ldap2p11helper_api_params(ldap_key):
"ipk11wrapwithtrusted": "cka_wrap_with_trusted"
}
for ldap_name, p11h_name in direct_param_map.iteritems():
for ldap_name, p11h_name in direct_param_map.items():
if ldap_name in ldap_key:
unwrap_params[p11h_name] = ldap_key[ldap_name]
@@ -159,7 +157,7 @@ def ldap2p11helper_api_params(ldap_key):
"ipawrappingmech": ("wrapping_mech", wrappingmech_name2id),
}
for ldap_name, rules in indirect_param_map.iteritems():
for ldap_name, rules in indirect_param_map.items():
p11h_name, mapping = rules
if ldap_name in ldap_key:
unwrap_params[p11h_name] = mapping[ldap_key[ldap_name]]
@@ -170,7 +168,7 @@ def ldap2p11helper_api_params(ldap_key):
class AbstractHSM(object):
def _filter_replica_keys(self, all_keys):
replica_keys = {}
for key_id, key in all_keys.iteritems():
for key_id, key in all_keys.items():
if not key['ipk11label'].startswith('dnssec-replica:'):
continue
replica_keys[key_id] = key
@@ -178,7 +176,7 @@ class AbstractHSM(object):
def _filter_zone_keys(self, all_keys):
zone_keys = {}
for key_id, key in all_keys.iteritems():
for key_id, key in all_keys.items():
if key['ipk11label'] == u'dnssec-master' \
or key['ipk11label'].startswith('dnssec-replica:'):
continue
+3 -3
View File
@@ -128,7 +128,7 @@ class Key(collections.MutableMapping):
def __iter__(self):
"""generates list of ipa names of all PKCS#11 attributes present in the object"""
for ipa_name in self.entry.keys():
for ipa_name in list(self.entry.keys()):
lowercase = ipa_name.lower()
if lowercase in attrs_name2id:
yield lowercase
@@ -247,7 +247,7 @@ class LdapKeyDB(AbstractHSM):
for cache in [self.cache_masterkeys, self.cache_replica_pubkeys_wrap,
self.cache_zone_keypairs]:
if cache:
for key in cache.itervalues():
for key in cache.values():
self._update_key(key)
def flush(self):
@@ -326,7 +326,7 @@ class LdapKeyDB(AbstractHSM):
keys = self._get_key_dict(MasterKey,
'(&(objectClass=ipk11SecretKey)(|(ipk11UnWrap=TRUE)(!(ipk11UnWrap=*)))(ipk11Label=dnssec-master))')
for key in keys.itervalues():
for key in keys.values():
prefix = 'dnssec-master'
assert key['ipk11label'] == prefix, \
'secret key dn="%s" ipk11id=0x%s ipk11label="%s" with ipk11UnWrap = TRUE does not have '\
+8 -12
View File
@@ -69,7 +69,7 @@ class Key(collections.MutableMapping):
def __iter__(self):
"""generates list of ipa names of all attributes present in the object"""
for pkcs11_id, ipa_name in attrs_id2name.iteritems():
for pkcs11_id, ipa_name in attrs_id2name.items():
try:
self.p11.get_attribute(self.handle, pkcs11_id)
except _ipap11helper.NotFound:
@@ -84,11 +84,7 @@ class Key(collections.MutableMapping):
return cnt
def __str__(self):
d = {}
for ipa_name, value in self.iteritems():
d[ipa_name] = value
return str(d)
return str(dict(self))
def __repr__(self):
return self.__str__()
@@ -139,7 +135,7 @@ class LocalHSM(AbstractHSM):
"""Get all usable DNSSEC master keys"""
keys = self.find_keys(objclass=_ipap11helper.KEY_CLASS_SECRET_KEY, label=u'dnssec-master', cka_unwrap=True)
for key in keys.itervalues():
for key in keys.values():
prefix = 'dnssec-master'
assert key['ipk11label'] == prefix, \
'secret key ipk11id=0x%s ipk11label="%s" with ipk11UnWrap = TRUE does not have '\
@@ -198,34 +194,34 @@ if __name__ == '__main__':
print 'replica public keys: CKA_WRAP = TRUE'
print '===================================='
for pubkey_id, pubkey in localhsm.replica_pubkeys_wrap.iteritems():
for pubkey_id, pubkey in localhsm.replica_pubkeys_wrap.items():
print hexlify(pubkey_id)
pprint(pubkey)
print ''
print 'replica public keys: all'
print '========================'
for pubkey_id, pubkey in localhsm.replica_pubkeys.iteritems():
for pubkey_id, pubkey in localhsm.replica_pubkeys.items():
print hexlify(pubkey_id)
pprint(pubkey)
print ''
print 'master keys'
print '==========='
for mkey_id, mkey in localhsm.master_keys.iteritems():
for mkey_id, mkey in localhsm.master_keys.items():
print hexlify(mkey_id)
pprint(mkey)
print ''
print 'zone public keys'
print '================'
for key_id, key in localhsm.zone_pubkeys.iteritems():
for key_id, key in localhsm.zone_pubkeys.items():
print hexlify(key_id)
pprint(key)
print ''
print 'zone private keys'
print '================='
for key_id, key in localhsm.zone_privkeys.iteritems():
for key_id, key in localhsm.zone_privkeys.items():
print hexlify(key_id)
pprint(key)
+1 -1
View File
@@ -320,7 +320,7 @@ def _httplib_request(
headers = headers or {}
if (
method == 'POST'
and 'content-type' not in (str(k).lower() for k in headers.viewkeys())
and 'content-type' not in (str(k).lower() for k in headers)
):
headers['content-type'] = 'application/x-www-form-urlencoded'
+1 -1
View File
@@ -44,7 +44,7 @@ class Graph():
# delete _adjacencies
del self._adj[vertex]
for key, _adj in self._adj.iteritems():
for key, _adj in self._adj.items():
_adj[:] = [v for v in _adj if v != vertex]
# delete edges
+1 -1
View File
@@ -145,7 +145,7 @@ class ConfigureTool(admintool.AdminTool):
help="unattended (un)installation never prompts the user",
)
for group, opt_group in groups.iteritems():
for group, opt_group in groups.items():
parser.add_option_group(opt_group)
super(ConfigureTool, cls).add_options(parser,
+1 -1
View File
@@ -229,7 +229,7 @@ class Configurable(object):
setattr(self, name, value)
if kwargs:
extra = sorted(kwargs.keys())
extra = sorted(kwargs)
raise TypeError(
"{0}() got {1} unexpected keyword arguments: {2}".format(
type(self).__name__,
+3 -1
View File
@@ -8,6 +8,8 @@ Utilities.
import sys
import six
def raise_exc_info(exc_info):
"""
@@ -155,7 +157,7 @@ class InnerClassMeta(type):
except KeyError:
cls, name, value = None, None, None
for cls in obj_type.__mro__:
for name, value in cls.__dict__.iteritems():
for name, value in six.iteritems(cls.__dict__):
if value is self:
break
if value is self:
+8 -8
View File
@@ -279,7 +279,7 @@ class LDAPEntry(collections.MutableMapping):
def __repr__(self):
data = dict(self._raw)
data.update((k, v) for k, v in self._nice.iteritems() if v is not None)
data.update((k, v) for k, v in self._nice.items() if v is not None)
return '%s(%r, %r)' % (type(self).__name__, self._dn, data)
def copy(self):
@@ -495,7 +495,7 @@ class LDAPEntry(collections.MutableMapping):
def generate_modlist(self):
modlist = []
names = set(self.iterkeys())
names = set(self)
names.update(self._orig)
for name in names:
new = self.raw.get(name, [])
@@ -548,7 +548,7 @@ class LDAPEntryView(collections.MutableMapping):
self._entry.clear()
def __iter__(self):
return self._entry.iterkeys()
return iter(self._entry)
def __len__(self):
return len(self._entry)
@@ -842,7 +842,7 @@ class LDAPClient(object):
elif isinstance(val, tuple):
return tuple(self.encode(m) for m in val)
elif isinstance(val, dict):
dct = dict((self.encode(k), self.encode(v)) for k, v in val.iteritems())
dct = dict((self.encode(k), self.encode(v)) for k, v in val.items())
return dct
elif isinstance(val, datetime.datetime):
return val.strftime(LDAP_GENERALIZED_TIME_FORMAT)
@@ -875,7 +875,7 @@ class LDAPClient(object):
elif isinstance(val, tuple):
return tuple(self.decode(m, attr) for m in val)
elif isinstance(val, dict):
dct = dict((unicode_from_utf8(k), self.decode(v, k)) for k, v in val.iteritems())
dct = dict((unicode_from_utf8(k), self.decode(v, k)) for k, v in val.items())
return dct
elif val is None:
return None
@@ -1234,7 +1234,7 @@ class LDAPClient(object):
make_filter_rules = rules
flts = []
if attrs_list is None:
for (k, v) in entry_attrs.iteritems():
for (k, v) in entry_attrs.items():
flts.append(
self.make_filter_from_attr(
k, v, make_filter_rules, exact,
@@ -1436,11 +1436,11 @@ class LDAPClient(object):
This should be called as add_entry(entry).
"""
# remove all [] values (python-ldap hates 'em)
attrs = dict((k, v) for k, v in entry.raw.iteritems() if v)
attrs = dict((k, v) for k, v in entry.raw.items() if v)
with self.error_handler():
attrs = self.encode(attrs)
self.conn.add_s(str(entry.dn), attrs.items())
self.conn.add_s(str(entry.dn), list(attrs.items()))
entry.reset_modlist()
+19 -10
View File
@@ -545,13 +545,13 @@ class CIDict(dict):
for key in keys():
self.__setitem__(key, new[key], seen)
seen = set()
for key, value in kwargs.iteritems():
for key, value in kwargs.items():
self.__setitem__(key, value, seen)
def __contains__(self, key):
return super(CIDict, self).__contains__(key.lower())
if sys.version_info < (3, 0):
if six.PY2:
def has_key(self, key):
return super(CIDict, self).has_key(key.lower())
@@ -562,29 +562,38 @@ class CIDict(dict):
return failobj
def __iter__(self):
return self._keys.itervalues()
return six.itervalues(self._keys)
def keys(self):
return list(self.iterkeys())
if six.PY2:
return list(self.iterkeys())
else:
return self.iterkeys()
def items(self):
return list(self.iteritems())
if six.PY2:
return list(self.iteritems())
else:
return self.iteritems()
def values(self):
return list(self.itervalues())
if six.PY2:
return list(self.itervalues())
else:
return self.itervalues()
def copy(self):
"""Returns a shallow copy of this CIDict"""
return CIDict(self.items())
return CIDict(list(self.items()))
def iteritems(self):
return ((k, self[k]) for k in self._keys.itervalues())
return ((k, self[k]) for k in six.itervalues(self._keys))
def iterkeys(self):
return self._keys.itervalues()
return six.itervalues(self._keys)
def itervalues(self):
return (v for k, v in self.iteritems())
return (v for k, v in six.iteritems(self))
def setdefault(self, key, value=None):
try: