#7624: Fix isinstance(foo(), collections.Callable) for old-style classes.

This commit is contained in:
Florent Xicluna 2010-03-08 15:20:28 +00:00
parent 6f682be82b
commit 47627d5164
4 changed files with 64 additions and 12 deletions

View file

@ -4,6 +4,11 @@
"""Abstract Base Classes (ABCs) according to PEP 3119."""
# Instance of old-style class
class _C: pass
_InstanceType = type(_C())
def abstractmethod(funcobj):
"""A decorator indicating abstract methods.
@ -124,6 +129,9 @@ class ABCMeta(type):
if subclass in cls._abc_cache:
return True
subtype = type(instance)
# Old-style instances
if subtype is _InstanceType:
subtype = subclass
if subtype is subclass or subclass is None:
if (cls._abc_negative_cache_version ==
ABCMeta._abc_invalidation_counter and