From 540df9f676f93275787366bfbefaed571074ec8c Mon Sep 17 00:00:00 2001 From: Igor Moura Date: Tue, 16 Jul 2019 21:18:42 -0300 Subject: [PATCH] Replaced .iteritems() and with six.iteritems() for Python 3 compat This is a squashed commit, the previous messages can be seen bellow This is the 1st commit message: Replaced .iteritems() usage for .items() Fixed some python 2 leftovers, as discussed in #267. Also formatted code according to Black.\nThis possibly breaks some python 2 compatibility This is the commit message #2: Reverted formatting and more spread six usage --- pdfminer/cmapdb.py | 6 +++--- pdfminer/pdfdevice.py | 2 +- pdfminer/pdffont.py | 2 +- pdfminer/pdftypes.py | 2 +- tools/conv_afm.py | 4 +++- tools/pdf2html.cgi | 3 ++- 6 files changed, 11 insertions(+), 8 deletions(-) diff --git a/pdfminer/cmapdb.py b/pdfminer/cmapdb.py index c3403d1..8185c93 100644 --- a/pdfminer/cmapdb.py +++ b/pdfminer/cmapdb.py @@ -83,7 +83,7 @@ class CMap(CMapBase): assert isinstance(cmap, CMap), str(type(cmap)) def copy(dst, src): - for (k, v) in src.iteritems(): + for (k, v) in six.iteritems(src): if isinstance(v, dict): d = {} dst[k] = d @@ -110,7 +110,7 @@ class CMap(CMapBase): if code2cid is None: code2cid = self.code2cid code = () - for (k, v) in sorted(code2cid.iteritems()): + for (k, v) in sorted(six.iteritems(code2cid)): c = code+(k,) if isinstance(v, int): out.write('code %r = cid %d\n' % (c, v)) @@ -148,7 +148,7 @@ class UnicodeMap(CMapBase): return self.cid2unichr[cid] def dump(self, out=sys.stdout): - for (k, v) in sorted(self.cid2unichr.iteritems()): + for (k, v) in sorted(six.iteritems(self.cid2unichr)): out.write('cid %d = unicode %r\n' % (k, v)) return diff --git a/pdfminer/pdfdevice.py b/pdfminer/pdfdevice.py index 0d4c175..54925f1 100644 --- a/pdfminer/pdfdevice.py +++ b/pdfminer/pdfdevice.py @@ -178,7 +178,7 @@ class TagExtractor(PDFDevice): s = '' if isinstance(props, dict): s = ''.join(' %s="%s"' % (utils.enc(k), utils.enc(str(v))) for (k, v) - in sorted(props.iteritems())) + in sorted(six.iteritems(props))) out_s = '<%s%s>' % (utils.enc(tag.name), s) self.outfp.write(utils.make_compat_bytes(out_s)) self._stack.append(tag) diff --git a/pdfminer/pdffont.py b/pdfminer/pdffont.py index feb8557..0ebd952 100644 --- a/pdfminer/pdffont.py +++ b/pdfminer/pdffont.py @@ -453,7 +453,7 @@ class TrueTypeFont(object): assert False, str(('Unhandled', fmttype)) # create unicode map unicode_map = FileUnicodeMap() - for (char, gid) in char2gid.iteritems(): + for (char, gid) in six.iteritems(char2gid): unicode_map.add_cid2unichr(gid, char) return unicode_map diff --git a/pdfminer/pdftypes.py b/pdfminer/pdftypes.py index 40cca46..c6e8d86 100644 --- a/pdfminer/pdftypes.py +++ b/pdfminer/pdftypes.py @@ -96,7 +96,7 @@ def resolve_all(x, default=None): if isinstance(x, list): x = [resolve_all(v, default=default) for v in x] elif isinstance(x, dict): - for (k, v) in x.iteritems(): + for (k, v) in six.iteritems(x): x[k] = resolve_all(v, default=default) return x diff --git a/tools/conv_afm.py b/tools/conv_afm.py index 2402a8e..2345982 100755 --- a/tools/conv_afm.py +++ b/tools/conv_afm.py @@ -3,6 +3,8 @@ import sys import fileinput +import six #Python 2+3 compatibility + def main(argv): fonts = {} for line in fileinput.input(): @@ -33,7 +35,7 @@ def main(argv): props[k] = tuple(map(float, f[1:5])) print ('# -*- python -*-') print ('FONT_METRICS = {') - for (fontname,(props,chars)) in fonts.iteritems(): + for (fontname,(props,chars)) in six.iteritems(fonts): print (' %r: %r,' % (fontname, (props,chars))) print ('}') return 0 diff --git a/tools/pdf2html.cgi b/tools/pdf2html.cgi index 8522a04..e2ea964 100755 --- a/tools/pdf2html.cgi +++ b/tools/pdf2html.cgi @@ -26,6 +26,7 @@ from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter from pdfminer.converter import HTMLConverter, TextConverter from pdfminer.layout import LAParams +import six #Python 2+3 compatibility # quote HTML metacharacters def q(x): @@ -35,7 +36,7 @@ def q(x): Q = re.compile(r'[^a-zA-Z0-9_.-=]') def url(base, **kw): r = [] - for (k,v) in kw.iteritems(): + for (k,v) in six.iteritems(kw): v = Q.sub(lambda m: '%%%02X' % ord(m.group(0)), encoder(q(v), 'replace')[0]) r.append('%s=%s' % (k, v)) return base+'&'.join(r)