from .object cimport PyObject cdef extern from "Python.h": bint PyWeakref_Check(object ob) # Return true if ob is either a reference or proxy object. bint PyWeakref_CheckRef(object ob) # Return true if ob is a reference object. bint PyWeakref_CheckProxy(ob) # Return true if *ob* is a proxy object. object PyWeakref_NewRef(object ob, object callback) # Return a weak reference object for the object ob. This will # always return a new reference, but is not guaranteed to create a # new object; an existing reference object may be returned. The # second parameter, callback, can be a callable object that # receives notification when ob is garbage collected; it should # accept a single parameter, which will be the weak reference # object itself. callback may also be None or NULL. If ob is not # a weakly-referencable object, or if callback is not callable, # None, or NULL, this will return NULL and raise TypeError. object PyWeakref_NewProxy(object ob, object callback) # Return a weak reference proxy object for the object ob. This # will always return a new reference, but is not guaranteed to # create a new object; an existing proxy object may be returned. # The second parameter, callback, can be a callable object that # receives notification when ob is garbage collected; it should # accept a single parameter, which will be the weak reference # object itself. callback may also be None or NULL. If ob is not # a weakly-referencable object, or if callback is not callable, # None, or NULL, this will return NULL and raise TypeError. PyObject* PyWeakref_GetObject(object ref) except NULL # Return the referenced object from a weak reference, ref. If the # referent is no longer live, returns None. PyObject* PyWeakref_GET_OBJECT(object ref) # Similar to PyWeakref_GetObject, but implemented as a macro that # does no error checking.