[python-debian/master 18/36] Use six to paper over dict iteration differences between Python 2 and 3.
Colin Watson
cjwatson at canonical.com
Mon Oct 8 07:41:24 UTC 2012
In some cases it makes more sense to just use .items() instead and not
worry about the extra copy, but I suspect that would have performance
problems in the case of debtags.
---
debian/control | 4 ++--
examples/deb822/render-dctrl | 2 +-
examples/debfile/dpkg-info | 2 +-
lib/debian/debtags.py | 22 ++++++++++++----------
setup.py.in | 1 +
tests/test_deb822.py | 8 +++++---
6 files changed, 22 insertions(+), 17 deletions(-)
diff --git a/debian/control b/debian/control
index 9132d4a..072e3cc 100644
--- a/debian/control
+++ b/debian/control
@@ -8,7 +8,7 @@ Uploaders: Adeodato Simó <dato at net.com.org.es>,
Reinhard Tartler <siretart at tauware.de>,
Stefano Zacchiroli <zack at debian.org>,
John Wright <jsw at debian.org>
-Build-Depends: debhelper (>= 5.0.37.2), python (>= 2.6.6-3~), python-setuptools, python-chardet
+Build-Depends: debhelper (>= 5.0.37.2), python (>= 2.6.6-3~), python-setuptools, python-chardet, python-six
Standards-Version: 3.8.4
Vcs-Browser: http://git.debian.org/?p=pkg-python-debian/python-debian.git
Vcs-Git: git://git.debian.org/git/pkg-python-debian/python-debian.git
@@ -16,7 +16,7 @@ X-Python-Version: >= 2.5
Package: python-debian
Architecture: all
-Depends: ${python:Depends}, ${misc:Depends}, python-chardet
+Depends: ${python:Depends}, ${misc:Depends}, python-chardet, python-six
Recommends: python-apt
Suggests: gpgv
Provides: python-deb822
diff --git a/examples/deb822/render-dctrl b/examples/deb822/render-dctrl
index 6ed4e55..face980 100755
--- a/examples/deb822/render-dctrl
+++ b/examples/deb822/render-dctrl
@@ -157,7 +157,7 @@ def render_file(f):
for pkg in deb822.Packages.iter_paragraphs(f):
print('<div class="package">')
print('<dl class="fields">')
- for (field, val) in pkg.iteritems():
+ for (field, val) in pkg.items():
render_field(field, val)
print('</dl>')
print('</div>\n')
diff --git a/examples/debfile/dpkg-info b/examples/debfile/dpkg-info
index d98999a..1b6632e 100755
--- a/examples/debfile/dpkg-info
+++ b/examples/debfile/dpkg-info
@@ -44,7 +44,7 @@ if __name__ == '__main__':
pass
print(' %d bytes, %d lines, %s, %s' % (len(content), len(lines),
fname, ftype))
- for n, v in deb.debcontrol().iteritems(): # print DEBIAN/control fields
+ for n, v in deb.debcontrol().items(): # print DEBIAN/control fields
if n.lower() == 'description': # increase indentation of long dsc
lines = v.split('\n')
short_dsc = lines[0]
diff --git a/lib/debian/debtags.py b/lib/debian/debtags.py
index cb78988..9dca3e9 100644
--- a/lib/debian/debtags.py
+++ b/lib/debian/debtags.py
@@ -23,6 +23,8 @@ try:
except ImportError:
import pickle
+import six
+
from debian.deprecation import function_deprecated_by
def parse_tags(input):
@@ -265,7 +267,7 @@ class DB:
"""
res = DB()
db = {}
- for pkg in filter(package_filter, self.db.iterkeys()):
+ for pkg in filter(package_filter, six.iterkeys(self.db)):
db[pkg] = self.db[pkg]
res.db = db
res.rdb = reverse(db)
@@ -281,7 +283,7 @@ class DB:
"""
res = DB()
db = {}
- for pkg in filter(filter, self.db.iterkeys()):
+ for pkg in filter(filter, six.iterkeys(self.db)):
db[pkg] = self.db[pkg].copy()
res.db = db
res.rdb = reverse(db)
@@ -297,7 +299,7 @@ class DB:
"""
res = DB()
db = {}
- for pkg, tags in filter(package_tag_filter, self.db.iteritems()):
+ for pkg, tags in filter(package_tag_filter, six.iteritems(self.db)):
db[pkg] = self.db[pkg]
res.db = db
res.rdb = reverse(db)
@@ -313,7 +315,7 @@ class DB:
"""
res = DB()
db = {}
- for pkg, tags in filter(package_tag_filter, self.db.iteritems()):
+ for pkg, tags in filter(package_tag_filter, six.iteritems(self.db)):
db[pkg] = self.db[pkg].copy()
res.db = db
res.rdb = reverse(db)
@@ -329,7 +331,7 @@ class DB:
"""
res = DB()
rdb = {}
- for tag in filter(tag_filter, self.rdb.iterkeys()):
+ for tag in filter(tag_filter, six.iterkeys(self.rdb)):
rdb[tag] = self.rdb[tag]
res.rdb = rdb
res.db = reverse(rdb)
@@ -345,7 +347,7 @@ class DB:
"""
res = DB()
rdb = {}
- for tag in filter(tag_filter, self.rdb.iterkeys()):
+ for tag in filter(tag_filter, six.iterkeys(self.rdb)):
rdb[tag] = self.rdb[tag].copy()
res.rdb = rdb
res.db = reverse(rdb)
@@ -422,25 +424,25 @@ class DB:
def iter_packages(self):
"""Iterate over the packages"""
- return self.db.iterkeys()
+ return six.iterkeys(self.db)
iterPackages = function_deprecated_by(iter_packages)
def iter_tags(self):
"""Iterate over the tags"""
- return self.rdb.iterkeys()
+ return six.iterkeys(self.rdb)
iterTags = function_deprecated_by(iter_tags)
def iter_packages_tags(self):
"""Iterate over 2-tuples of (pkg, tags)"""
- return self.db.iteritems()
+ return six.iteritems(self.db)
iterPackagesTags = function_deprecated_by(iter_packages_tags)
def iter_tags_packages(self):
"""Iterate over 2-tuples of (tag, pkgs)"""
- return self.rdb.iteritems()
+ return six.iteritems(self.rdb)
iterTagsPackages = function_deprecated_by(iter_tags_packages)
diff --git a/setup.py.in b/setup.py.in
index 0bf6475..67423a3 100644
--- a/setup.py.in
+++ b/setup.py.in
@@ -27,4 +27,5 @@ setup(name='python-debian',
py_modules=['deb822'],
maintainer='Debian python-debian Maintainers',
maintainer_email='pkg-python-debian-maint at lists.alioth.debian.org',
+ install_requires=['six'],
)
diff --git a/tests/test_deb822.py b/tests/test_deb822.py
index 60ca13f..ed030e7 100755
--- a/tests/test_deb822.py
+++ b/tests/test_deb822.py
@@ -30,6 +30,8 @@ try:
except ImportError:
from io import StringIO
+import six
+
sys.path.insert(0, '../lib/')
from debian import deb822
@@ -310,9 +312,9 @@ class TestDeb822Dict(unittest.TestCase):
keys = ['TestKey', 'another_key', 'Third_key']
- self.assertEqual(keys, d.keys())
- self.assertEqual(keys, list(d.iterkeys()))
- self.assertEqual(zip(keys, d.values()), d.items())
+ self.assertEqual(keys, list(d.keys()))
+ self.assertEqual(keys, list(six.iterkeys(d)))
+ self.assertEqual(list(zip(keys, d.values())), list(d.items()))
keys2 = []
for key in d:
--
1.7.2.5
More information about the pkg-python-debian-commits
mailing list