2
0
mirror of https://github.com/openvswitch/ovs synced 2025-10-23 14:57:06 +00:00

python: Convert dict iterators.

In Python 2, dict.items(), dict.keys(), and dict.values() returned a
list.  dict.iteritems(), dict.iterkeys(), and dict.itervalues() returned
an iterator.

As of Python 3, dict.iteritems(), dict.itervalues(), and dict.iterkeys()
are gone.  items(), keys(), and values() now return an iterator.

In the case where we want an iterator, we now use the six.iter*()
helpers.  If we want a list, we explicitly create a list from the
iterator.

Signed-off-by: Russell Bryant <russell@ovn.org>
Acked-by: Ben Pfaff <blp@ovn.org>
This commit is contained in:
Russell Bryant
2015-12-14 15:13:20 -05:00
parent f7683a7277
commit cb96c1b27e
12 changed files with 81 additions and 67 deletions

View File

@@ -15,6 +15,8 @@
import re
import uuid
import six
import ovs.poller
import ovs.socket_util
import ovs.json
@@ -293,7 +295,7 @@ class Datum(object):
This function is not commonly useful because the most ordinary way to
obtain a datum is ultimately via Datum.from_json() or Atom.from_json(),
which check constraints themselves."""
for keyAtom, valueAtom in self.values.iteritems():
for keyAtom, valueAtom in six.iteritems(self.values):
keyAtom.check_constraints(self.type.key)
if valueAtom is not None:
valueAtom.check_constraints(self.type.value)
@@ -354,7 +356,7 @@ class Datum(object):
return ["map", [[k.to_json(), v.to_json()]
for k, v in sorted(self.values.items())]]
elif len(self.values) == 1:
key = self.values.keys()[0]
key = next(six.iterkeys(self.values))
return key.to_json()
else:
return ["set", [k.to_json() for k in sorted(self.values.keys())]]
@@ -388,9 +390,9 @@ class Datum(object):
def as_list(self):
if self.type.is_map():
return [[k.value, v.value] for k, v in self.values.iteritems()]
return [[k.value, v.value] for k, v in six.iteritems(self.values)]
else:
return [k.value for k in self.values.iterkeys()]
return [k.value for k in six.iterkeys(self.values)]
def as_dict(self):
return dict(self.values)
@@ -398,10 +400,10 @@ class Datum(object):
def as_scalar(self):
if len(self.values) == 1:
if self.type.is_map():
k, v = self.values.iteritems()[0]
k, v = next(six.iteritems(self.values))
return [k.value, v.value]
else:
return self.values.keys()[0].value
return next(six.iterkeys(self.values)).value
else:
return None
@@ -448,7 +450,7 @@ class Datum(object):
return value
elif self.type.is_map():
value = {}
for k, v in self.values.iteritems():
for k, v in six.iteritems(self.values):
dk = uuid_to_row(k.value, self.type.key)
dv = uuid_to_row(v.value, self.type.value)
if dk is not None and dv is not None:
@@ -476,7 +478,7 @@ class Datum(object):
'type_'."""
d = {}
if type(value) == dict:
for k, v in value.iteritems():
for k, v in six.iteritems(value):
ka = Atom.from_python(type_.key, row_to_uuid(k))
va = Atom.from_python(type_.value, row_to_uuid(v))
d[ka] = va