From 340387bfc692f134579d844b164febc7028be501 Mon Sep 17 00:00:00 2001 From: Yusuke Shinyama Date: Fri, 28 Mar 2014 17:50:59 +0900 Subject: [PATCH] Cleanup: isinstance --- pdfminer/layout.py | 6 ++---- pdfminer/pdfdevice.py | 6 +++--- pdfminer/pdffont.py | 6 +++--- pdfminer/pdftypes.py | 6 +++--- pdfminer/psparser.py | 6 +----- pdfminer/utils.py | 4 ++++ tools/dumppdf.py | 3 ++- 7 files changed, 18 insertions(+), 19 deletions(-) diff --git a/pdfminer/layout.py b/pdfminer/layout.py index 4dfd61b..d31c985 100644 --- a/pdfminer/layout.py +++ b/pdfminer/layout.py @@ -622,10 +622,8 @@ class LTLayoutContainer(LTContainer): if c == 0 and isany(obj1, obj2): dists.append((1, d, obj1, obj2)) continue - if (isinstance(obj1, LTTextBoxVertical) or - isinstance(obj1, LTTextGroupTBRL) or - isinstance(obj2, LTTextBoxVertical) or - isinstance(obj2, LTTextGroupTBRL)): + if (isinstance(obj1, (LTTextBoxVertical, LTTextGroupTBRL)) or + isinstance(obj2, (LTTextBoxVertical, LTTextGroupTBRL))): group = LTTextGroupTBRL([obj1, obj2]) else: group = LTTextGroupLRTB([obj1, obj2]) diff --git a/pdfminer/pdfdevice.py b/pdfminer/pdfdevice.py index 5eaf9cc..a11cd9e 100644 --- a/pdfminer/pdfdevice.py +++ b/pdfminer/pdfdevice.py @@ -1,6 +1,6 @@ #!/usr/bin/env python from utils import mult_matrix, translate_matrix -from utils import enc, bbox2str +from utils import enc, bbox2str, isnumber from pdffont import PDFUnicodeNotDefined @@ -85,7 +85,7 @@ class PDFTextDevice(PDFDevice): font, fontsize, scaling, charspace, wordspace, rise, dxscale): needcharspace = False for obj in seq: - if isinstance(obj, int) or isinstance(obj, float): + if isnumber(obj): x -= obj*dxscale needcharspace = True else: @@ -103,7 +103,7 @@ class PDFTextDevice(PDFDevice): font, fontsize, scaling, charspace, wordspace, rise, dxscale): needcharspace = False for obj in seq: - if isinstance(obj, int) or isinstance(obj, float): + if isnumber(obj): y -= obj*dxscale needcharspace = True else: diff --git a/pdfminer/pdffont.py b/pdfminer/pdffont.py index 2a45f58..95739aa 100644 --- a/pdfminer/pdffont.py +++ b/pdfminer/pdffont.py @@ -15,7 +15,7 @@ from pdftypes import PDFException, resolve1 from pdftypes import int_value, num_value from pdftypes import list_value, dict_value, stream_value from fontmetrics import FONT_METRICS -from utils import apply_matrix_norm, nunpack, choplist +from utils import apply_matrix_norm, nunpack, choplist, isnumber def get_widths(seq): @@ -28,7 +28,7 @@ def get_widths(seq): for (i, w) in enumerate(v): widths[char1+i] = w r = [] - elif isinstance(v, int): + elif isnumber(v): r.append(v) if len(r) == 3: (char1, char2, w) = r @@ -51,7 +51,7 @@ def get_widths2(seq): for (i, (w, vx, vy)) in enumerate(choplist(3, v)): widths[char1+i] = (w, (vx, vy)) r = [] - elif isinstance(v, int): + elif isnumber(v): r.append(v) if len(r) == 5: (char1, char2, w, vx, vy) = r diff --git a/pdfminer/pdftypes.py b/pdfminer/pdftypes.py index 0131382..95f5693 100644 --- a/pdfminer/pdftypes.py +++ b/pdfminer/pdftypes.py @@ -6,7 +6,7 @@ from runlength import rldecode from ccitt import ccittfaxdecode from psparser import PSException, PSObject from psparser import LIT, STRICT -from utils import apply_png_predictor +from utils import apply_png_predictor, isnumber LITERAL_CRYPT = LIT('Crypt') @@ -126,7 +126,7 @@ def float_value(x): def num_value(x): x = resolve1(x) - if not (isinstance(x, int) or isinstance(x, float)): + if not isnumber(x): if STRICT: raise PDFTypeError('Int or Float required: %r' % x) return 0 @@ -144,7 +144,7 @@ def str_value(x): def list_value(x): x = resolve1(x) - if not (isinstance(x, list) or isinstance(x, tuple)): + if not isinstance(x, (list, tuple)): if STRICT: raise PDFTypeError('List required: %r' % x) return [] diff --git a/pdfminer/psparser.py b/pdfminer/psparser.py index f71fc22..2858553 100644 --- a/pdfminer/psparser.py +++ b/pdfminer/psparser.py @@ -556,11 +556,7 @@ class PSStackParser(PSBaseParser): while not self.results: (pos, token) = self.nexttoken() #print (pos,token), (self.curtype, self.curstack) - if (isinstance(token, int) or - isinstance(token, float) or - isinstance(token, bool) or - isinstance(token, str) or - isinstance(token, PSLiteral)): + if isinstance(token, (int, long, float, bool, str, PSLiteral)): # normal token self.push((pos, token)) elif token == KEYWORD_ARRAY_BEGIN: diff --git a/pdfminer/utils.py b/pdfminer/utils.py index ca1b30f..3e85cba 100644 --- a/pdfminer/utils.py +++ b/pdfminer/utils.py @@ -79,6 +79,10 @@ def apply_matrix_norm((a, b, c, d, e, f), (p, q)): ## Utility functions ## +# isnumber +def isnumber(x): + return isinstance(x, (int, long, float)) + # uniq def uniq(objs): """Eliminates duplicated elements.""" diff --git a/tools/dumppdf.py b/tools/dumppdf.py index 7826240..bb665df 100755 --- a/tools/dumppdf.py +++ b/tools/dumppdf.py @@ -13,6 +13,7 @@ from pdfminer.pdfdocument import PDFDocument, PDFNoOutlines from pdfminer.pdftypes import PDFObjectNotFound, PDFValueError from pdfminer.pdftypes import PDFStream, PDFObjRef, resolve1, stream_value from pdfminer.pdfpage import PDFPage +from pdfminer.utils import isnumber ESC_PAT = re.compile(r'[\000-\037&<>()"\042\047\134\177-\377]') @@ -75,7 +76,7 @@ def dumpxml(out, obj, codec=None): out.write('%s' % obj.name) return - if isinstance(obj, int) or isinstance(obj, float): + if isnumber(obj): out.write('%s' % obj) return