\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}
