summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Fulton <jim@zope.com>2004-08-31 22:16:42 +0000
committerJim Fulton <jim@zope.com>2004-08-31 22:16:42 +0000
commitd2ed77fafe9c3762d19dfd9ae43938d2aebc7bbf (patch)
tree1110070cee8e0746b0d8d66b4dbe45d911d2f2a4
parentaddd388ea5705ad45760d9acf955dba9c893c94f (diff)
downloadzope-tal-d2ed77fafe9c3762d19dfd9ae43938d2aebc7bbf.tar.gz
Fixed collector issue 266
http://collector.zope.org/Zope3-dev/266
-rw-r--r--taldefs.py12
1 files changed, 10 insertions, 2 deletions
diff --git a/taldefs.py b/taldefs.py
index c3fbcfb..54bca67 100644
--- a/taldefs.py
+++ b/taldefs.py
@@ -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