\section{\module{uu} ---
        Encode and decode uuencode files}

\declaremodule{standard}{uu}
\modulesynopsis{Encode and decode files in uuencode format.}
\moduleauthor{Lance Ellinghouse}{}


This module encodes and decodes files in uuencode format, allowing
arbitrary binary data to be transferred over ASCII-only connections.
Wherever a file argument is expected, the methods accept a file-like
object.  For backwards compatibility, a string containing a pathname
is also accepted, and the corresponding file will be opened for
reading and writing; the pathname \code{'-'} is understood to mean the
standard input or output.  However, this interface is deprecated; it's
better for the caller to open the file itself, and be sure that, when
required, the mode is \code{'rb'} or \code{'wb'} on Windows.

This code was contributed by Lance Ellinghouse, and modified by Jack
Jansen.
\index{Jansen, Jack}
\index{Ellinghouse, Lance}

The \module{uu} module defines the following functions:

\begin{funcdesc}{encode}{in_file, out_file\optional{, name\optional{, mode}}}
 Uuencode file \var{in_file} into file \var{out_file}.  The uuencoded
 file will have the header specifying \var{name} and \var{mode} as
 the defaults for the results of decoding the file. The default
 defaults are taken from \var{in_file}, or \code{'-'} and \code{0666}
 respectively.
\end{funcdesc}

\begin{funcdesc}{decode}{in_file\optional{, out_file\optional{, mode\optional{, quiet}}}}
 This call decodes uuencoded file \var{in_file} placing the result on
 file \var{out_file}. If \var{out_file} is a pathname, \var{mode} is
 used to set the permission bits if the file must be
 created. Defaults for \var{out_file} and \var{mode} are taken from
 the uuencode header.  However, if the file specified in the header
 already exists, a \exception{uu.Error} is raised.

 \function{decode()} may print a warning to standard error if the
 input was produced by an incorrect uuencoder and Python could
 recover from that error.  Setting \var{quiet} to a true value
 silences this warning.
\end{funcdesc}

\begin{excclassdesc}{Error}{}
 Subclass of \exception{Exception}, this can be raised by
 \function{uu.decode()} under various situations, such as described
 above, but also including a badly formatted header, or truncated
 input file.
\end{excclassdesc}

\begin{seealso}
 \seemodule{binascii}{Support module containing \ASCII-to-binary
                      and binary-to-\ASCII{} conversions.}
\end{seealso}