\section{\module{copy_reg} ---
         Register \module{pickle} support functions}

\declaremodule[copyreg]{standard}{copy_reg}
\modulesynopsis{Register \module{pickle} support functions.}


The \module{copy_reg} module provides support for the
\refmodule{pickle}\refstmodindex{pickle} and
\refmodule{cPickle}\refbimodindex{cPickle} modules.  The
\refmodule{copy}\refstmodindex{copy} module is likely to use this in the
future as well.  It provides configuration information about object
constructors which are not classes.  Such constructors may be factory
functions or class instances.


\begin{funcdesc}{constructor}{object}
  Declares \var{object} to be a valid constructor.  If \var{object} is
  not callable (and hence not valid as a constructor), raises
  \exception{TypeError}.
\end{funcdesc}

\begin{funcdesc}{pickle}{type, function\optional{, constructor}}
  Declares that \var{function} should be used as a ``reduction''
  function for objects of type \var{type}; \var{type} should not a
  class object.  \var{function} should return either a string or a
  tuple.  The optional \var{constructor} parameter, if provided, is a
  callable object which can be used to reconstruct the object when
  called with the tuple of arguments returned by \var{function} at
  pickling time.  \exception{TypeError} will be raised if
  \var{object} is a class or \var{constructor} is not callable.
\end{funcdesc}
