\section{\module{netrc} ---
         netrc file processing}

\declaremodule{standard}{netrc}
% Note the \protect needed for \file... ;-(
\modulesynopsis{Loading of \protect\file{.netrc} files.}
\moduleauthor{Eric S. Raymond}{esr@snark.thyrsus.com}
\sectionauthor{Eric S. Raymond}{esr@snark.thyrsus.com}


\versionadded{1.5.2}

The \class{netrc} class parses and encapsulates the netrc file format
used by the \UNIX{} \program{ftp} program and other FTP clients.

\begin{classdesc}{netrc}{\optional{file}}
A \class{netrc} instance or subclass instance encapsulates data from 
a netrc file.  The initialization argument, if present, specifies the
file to parse.  If no argument is given, the file \file{.netrc} in the
user's home directory will be read.  Parse errors will raise
\exception{NetrcParseError} with diagnostic information including the
file name, line number, and terminating token.
\end{classdesc}

\begin{excdesc}{NetrcParseError}
Exception raised by the \class{netrc} class when syntactical errors
are encountered in source text.  Instances of this exception provide
three interesting attributes:  \member{msg} is a textual explanation
of the error, \member{filename} is the name of the source file, and
\member{lineno} gives the line number on which the error was found.
\end{excdesc}


\subsection{netrc Objects \label{netrc-objects}}

A \class{netrc} instance has the following methods:

\begin{methoddesc}{authenticators}{host}
Return a 3-tuple \code{(\var{login}, \var{account}, \var{password})}
of authenticators for \var{host}.  If the netrc file did not
contain an entry for the given host, return the tuple associated with
the `default' entry.  If neither matching host nor default entry is
available, return \code{None}.
\end{methoddesc}

\begin{methoddesc}{__repr__}{}
Dump the class data as a string in the format of a netrc file.
(This discards comments and may reorder the entries.)
\end{methoddesc}

Instances of \class{netrc} have public instance variables:

\begin{memberdesc}{hosts}
Dictionary mapping host names to \code{(\var{login}, \var{account},
\var{password})} tuples.  The `default' entry, if any, is represented
as a pseudo-host by that name.
\end{memberdesc}

\begin{memberdesc}{macros}
Dictionary mapping macro names to string lists.
\end{memberdesc}

\begin{notice}
  Passwords are limited to a subset of the \ASCII{} character set.
  Versions of this module prior to 2.2.3 were extremely limited.
  Starting with 2.2.3, all \ASCII{} punctuation is allowed in
  passwords.  However, note that whitespace and non-printable
  characters are not allowed in passwords.  This is a limitation of
  the way the \file{.netrc} file is parsed and may be removed in the
  future.
\end{notice}
