]> granicus.if.org Git - python/commit
Correct the apparent refleak in test_io:
authorAmaury Forgeot d'Arc <amauryfa@gmail.com>
Wed, 2 Apr 2008 00:25:14 +0000 (00:25 +0000)
committerAmaury Forgeot d'Arc <amauryfa@gmail.com>
Wed, 2 Apr 2008 00:25:14 +0000 (00:25 +0000)
commit4d0c1170ef1eb0d0acbbcc6da0fa5a7c6cba4a10
tree359cee99e8f511f9402ebdad94a124b846bd96f4
parentb1ba750226fc11937bb1efdfefa4df1844120063
Correct the apparent refleak in test_io:
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.
Lib/test/regrtest.py