Commit 1e71b042 authored by Michael W. Hudson's avatar Michael W. Hudson

Update advice about __module__ and __name__ and tp_name wrt. new types.

Add \refs to GC section that were XXXed out.
parent bbe17f50
...@@ -424,17 +424,20 @@ Foo_Type.ob_type = &PyType_Type; ...@@ -424,17 +424,20 @@ Foo_Type.ob_type = &PyType_Type;
in module \module{M} in subpackage \module{Q} in package \module{P} in module \module{M} in subpackage \module{Q} in package \module{P}
should have the \member{tp_name} initializer \code{"P.Q.M.T"}. should have the \member{tp_name} initializer \code{"P.Q.M.T"}.
For dynamically allocated type objects, this may be just the type For dynamically allocated type objects, this should just be the type
name, if the module name is explicitly stored in the type dict as name, and the module name explicitly stored in the type dict as the
the value for key \code{'__module__'}. value for key \code{'__module__'}.
If the tp_name field contains a dot, everything before the last dot For statically allocated type objects, the tp_name field should
is made accessible as the \member{__module__} attribute, and contain a dot. Everything before the last dot is made accessible as
everything after the last dot is made accessible as the the \member{__module__} attribute, and everything after the last dot
\member{__name__} attribute. If no dot is present, the entire is made accessible as the \member{__name__} attribute.
\member{tp_name} field is made accessible as the \member{__name__}
attribute, and the \member{__module__} attribute is undefined If no dot is present, the entire \member{tp_name} field is made
(unless explicitly set in the dictionary, as explained above). accessible as the \member{__name__} attribute, and the
\member{__module__} attribute is undefined (unless explicitly set in
the dictionary, as explained above). This means your type will be
impossible to pickle.
This field is not inherited by subtypes. This field is not inherited by subtypes.
\end{cmemberdesc} \end{cmemberdesc}
...@@ -882,8 +885,8 @@ The following three fields only exist if the ...@@ -882,8 +885,8 @@ The following three fields only exist if the
\begin{cmemberdesc}{PyTypeObject}{traverseproc}{tp_traverse} \begin{cmemberdesc}{PyTypeObject}{traverseproc}{tp_traverse}
An optional pointer to a traversal function for the garbage An optional pointer to a traversal function for the garbage
collector. This is only used if the \constant{Py_TPFLAGS_HAVE_GC} collector. This is only used if the \constant{Py_TPFLAGS_HAVE_GC}
flag bit is set. More information in section XXX about garbage flag bit is set. More information in section
collection. \ref{supporting-cycle-detection} about garbage collection.
This field is inherited by subtypes together with \member{tp_clear} This field is inherited by subtypes together with \member{tp_clear}
and the \constant{Py_TPFLAGS_HAVE_GC} flag bit: the flag bit, and the \constant{Py_TPFLAGS_HAVE_GC} flag bit: the flag bit,
...@@ -895,7 +898,8 @@ The following three fields only exist if the ...@@ -895,7 +898,8 @@ The following three fields only exist if the
\begin{cmemberdesc}{PyTypeObject}{inquiry}{tp_clear} \begin{cmemberdesc}{PyTypeObject}{inquiry}{tp_clear}
An optional pointer to a clear function for the garbage collector. An optional pointer to a clear function for the garbage collector.
This is only used if the \constant{Py_TPFLAGS_HAVE_GC} flag bit is This is only used if the \constant{Py_TPFLAGS_HAVE_GC} flag bit is
set. More information in section XXX about garbage collection. set. More information in section
\ref{supporting-cycle-detection} about garbage collection.
This field is inherited by subtypes together with \member{tp_clear} This field is inherited by subtypes together with \member{tp_clear}
and the \constant{Py_TPFLAGS_HAVE_GC} flag bit: the flag bit, and the \constant{Py_TPFLAGS_HAVE_GC} flag bit: the flag bit,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment