diff options
Diffstat (limited to 'taldefs.py')
-rw-r--r-- | taldefs.py | 12 |
1 files changed, 10 insertions, 2 deletions
@@ -149,9 +149,17 @@ def isCurrentVersion(program): version = getProgramVersion(program) return version == TAL_VERSION +def isinstance_(ob, type): + # Proxy-friendly and faster isinstance_ check for new-style objects + try: + return type in ob.__class__.__mro__ + except AttributeError: + return False + + def getProgramMode(program): version = getProgramVersion(program) - if (version == TAL_VERSION and isinstance(program[1], tuple) and + if (version == TAL_VERSION and isinstance_(program[1], tuple) and len(program[1]) == 2): opcode, mode = program[1] if opcode == "mode": @@ -160,7 +168,7 @@ def getProgramMode(program): def getProgramVersion(program): if (len(program) >= 2 and - isinstance(program[0], tuple) and len(program[0]) == 2): + isinstance_(program[0], tuple) and len(program[0]) == 2): opcode, version = program[0] if opcode == "version": return version |