diff options
author | Timothy Crosley <timothy.crosley@gmail.com> | 2014-02-08 18:30:01 -0500 |
---|---|---|
committer | Timothy Crosley <timothy.crosley@gmail.com> | 2014-02-08 18:30:01 -0500 |
commit | bcf5369c9b97d91874517be61af57e01714041ca (patch) | |
tree | ce36abc97d428c541251d7067e55bae9bef8ed16 | |
parent | 8695fabc80c4489bfedea702c084d328ed42a20a (diff) | |
download | pies-bcf5369c9b97d91874517be61af57e01714041ca.tar.gz |
Manually determine instance type if not provided by abc in installed python version
-rw-r--r-- | pies/_utils.py | 7 | ||||
-rw-r--r-- | pies/overrides.py | 9 |
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) |