from python_tuple cimport *
from python_list cimport *
from python_object cimport *
-from python_cobject cimport *
from python_sequence cimport *
from python_mapping cimport *
from python_iterator cimport *
from python_instance cimport *
from python_function cimport *
from python_method cimport *
+from python_weakref cimport *
+from python_getargs cimport *
+
+# Python <= 2.x
+from python_cobject cimport *
+
+# Python >= 2.4
from python_set cimport *
+
+# Python >= 2.6
+from python_buffer cimport *
+from python_bytes cimport *
+
+# Python >= 3.0
+from python_pycapsule cimport *
--- /dev/null
+from python_ref 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)
+ # 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.