diff options
-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) |