\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 stderr if the input was produced 
  by an incorrect uuencoder and Python could recover from that error.
  Setting \var{quiet} to True 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}
