[Python-Dev] gcmodule issue w/adding __del__ to generator objects
Phillip J. Eby
pje at telecommunity.com
Sat Jun 18 23:50:36 CEST 2005
Working on the PEP 342/343 generator enhancements, I've got working
send/throw/close() methods, but am not sure how to deal with getting
__del__ to invoke close(). Naturally, I can add a "__del__" entry to its
methods list easily enough, but the 'has_finalizer()' function in
gcmodule.c only checks for a __del__ attribute on instance objects, and for
tp_del on heap types.
It looks to me like the correct fix would be to check for tp_del always,
not just on heap types. However, when I tried this, I started getting
warnings from the tests, saying that 22 uncollectable objects were being
created (all generators, in test_generators).
It seems that the tests create cycles via globals(), since they define a
bunch of generator functions and then call them, saving the generator
iterators (or objects that reference them) in global variables
after investigating this a bit, it seems to me that either has_finalizer()
needs to
More information about the Python-Dev
mailing list