(reviving this thread after I thought about it some more...)
As I mentioned in the original post, I want something like __dealloc__
but with access to a particular cdef attribute (representing a Python
object). Since Python attributes of cdef classes may have been cleared
by tp_clear, they cannot be accessed in __dealloc__.
I suggested hooking tp_clear to do the cleanup but maybe there is a
simpler solution: do that cleanup in __dealloc__ anyway but make sure
that this specific attribute is not cleared in tp_clear.
So really I want something like @cython.no_gc_clear (just found out
about that now) but for a specific attribute only.
There could be new syntax like
cdef class X:
cdef no_gc_clear object attr
This is a better solution than a blanket @cython.no_gc_clear: in my
code, I'm sure that there are no reference cycles involving only that
attribute, but there may be reference cycles involving other attributes.
This should be fairly easy to implement. Any comments before I submit a PR?
Jeroen.
_______________________________________________
cython-devel mailing list
cython-devel@python.org
https://mail.python.org/mailman/listinfo/cython-devel