• Amaury Forgeot d'Arc's avatar
    Correct the apparent refleak in test_io: · 4d0c1170
    Amaury Forgeot d'Arc authored
    When cls is an ABCMeta, every call to isinstance(x, cls)
    records type(x) in the cls._abc_cache of cls_abc_negative_cache.
    So we clear these caches at the end of the test.
    
    inspect.isabstract() is not the correct test for all ABCs, because there is no @abstractmethod in io.py (why?)
    isinstance(cls, ABCMeta) would be more exact, but it fails with an infinite recursion.
    So I used a hack to determine whether a class is an ABCMeta.
    
    The true correction would be to turn cls._abc_cache &co into a WeakSet, as py3k does.
    But classic classes are not weak referenceable...
    
    Of course, this change should not be merged into the py3k branch.
    4d0c1170
regrtest.py 36.4 KB