At 05:50 PM 6/18/2005 -0400, Phillip J. Eby wrote: >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
Whoops. I hit send by accident. Anyway, the issue seems to mostly be that the tests create generator-iterators in global variables. With a bit of effort, I've been able to stomp most of the cycles. >_______________________________________________ >Python-Dev mailing list >Python-Dev@python.org >http://mail.python.org/mailman/listinfo/python-dev >Unsubscribe: >http://mail.python.org/mailman/options/python-dev/pje%40telecommunity.com _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com