summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimothy Edmund Crosley <timothy.crosley@gmail.com>2014-02-08 18:36:31 -0500
committerTimothy Edmund Crosley <timothy.crosley@gmail.com>2014-02-08 18:36:31 -0500
commit64695da0ecc614edbd089ed8f6d9823097755e3c (patch)
treece36abc97d428c541251d7067e55bae9bef8ed16
parent8695fabc80c4489bfedea702c084d328ed42a20a (diff)
parentbcf5369c9b97d91874517be61af57e01714041ca (diff)
downloadpies-64695da0ecc614edbd089ed8f6d9823097755e3c.tar.gz
Merge pull request #17 from timothycrosley/feature/fix-issue-16
Manually determine instance type if not provided by abc in installed pyt...
-rw-r--r--pies/_utils.py7
-rw-r--r--pies/overrides.py9
2 files changed, 13 insertions, 3 deletions
diff --git a/pies/_utils.py b/pies/_utils.py
index 5010eea..0783183 100644
--- a/pies/_utils.py
+++ b/pies/_utils.py
@@ -66,7 +66,12 @@ def unmodified_isinstance(*bases):
subclass = getattr(instance, '__class__', None)
subtype = type(instance)
- if subtype is abc._InstanceType:
+ instance_type = getattr(abc, '_InstanceType', None)
+ if not instance_type:
+ class test_object:
+ pass
+ instance_type = type(test_object)
+ if subtype is instance_type:
subtype = subclass
if subtype is subclass or subclass is None:
return cls.__subclasscheck__(subtype)
diff --git a/pies/overrides.py b/pies/overrides.py
index 751013a..821ba49 100644
--- a/pies/overrides.py
+++ b/pies/overrides.py
@@ -211,10 +211,15 @@ else:
def __instancecheck__(cls, instance):
if cls.__name__ == "object":
return isinstance(instance, native_object)
-
+
subclass = getattr(instance, '__class__', None)
subtype = type(instance)
- if subtype is abc._InstanceType:
+ instance_type = getattr(abc, '_InstanceType', None)
+ if not instance_type:
+ class test_object:
+ pass
+ instance_type = type(test_object)
+ if subtype is instance_type:
subtype = subclass
if subtype is subclass or subclass is None:
return cls.__subclasscheck__(subtype)