\section{\module{warnings} ---
         Warning control}

\declaremodule{standard}{warnings}
\modulesynopsis{Issue warning messages and control their disposition.}
\index{warnings}

\versionadded{2.1}

Warning messages are typically issued in situations where it is useful
to alert the user of some condition in a program, where that condition
(normally) doesn't warrant raising an exception and terminating the
program.  For example, one might want to issue a warning when a
program uses an obsolete module.

Python programmers issue warnings by calling the \function{warn()}
function defined in this module.  (C programmers use
\cfunction{PyErr_Warn()}; see the
\citetitle[../api/exceptionHandling.html]{Python/C API Reference
Manual} for details).

Warning messages are normally written to \code{sys.stderr}, but their
disposition can be changed flexibly, from ignoring all warnings to
turning them into exceptions.  The disposition of warnings can vary
based on the warning category (see below), the text of the warning
message, and the source location where it is issued.  Repetitions of a
particular warning for the same source location are typically
suppressed.

There are two stages in warning control: first, each time a warning is
issued, a determination is made whether a message should be issued or
not; next, if a message is to be issued, it is formatted and printed
using a user-settable hook.

The determination whether to issue a warning message is controlled by
the warning filter, which is a sequence of matching rules and actions.
Rules can be added to the filter by calling
\function{filterwarnings()} and reset to its default state by calling
\function{resetwarnings()}.

The printing of warning messages is done by calling
\function{showwarning()}, which may be overridden; the default
implementation of this function formats the message by calling
\function{formatwarning()}, which is also available for use by custom
implementations.


\subsection{Warning Categories \label{warning-categories}}

There are a number of built-in exceptions that represent warning
categories.  This categorization is useful to be able to filter out
groups of warnings.  The following warnings category classes are
currently defined:

\begin{tableii}{l|l}{exception}{Class}{Description}

\lineii{Warning}{This is the base class of all warning category
classes.  It is a subclass of \exception{Exception}.}

\lineii{UserWarning}{The default category for \function{warn()}.}

\lineii{DeprecationWarning}{Base category for warnings about
deprecated features.}

\lineii{SyntaxWarning}{Base category for warnings about dubious
syntactic features.}

\lineii{RuntimeWarning}{Base category for warnings about dubious
runtime features.}

\lineii{FutureWarning}{Base category for warnings about constructs
that will change semantically in the future.}

\end{tableii}

While these are technically built-in exceptions, they are documented
here, because conceptually they belong to the warnings mechanism.

User code can define additional warning categories by subclassing one
of the standard warning categories.  A warning category must always be
a subclass of the \exception{Warning} class.


\subsection{The Warnings Filter \label{warning-filter}}

The warnings filter controls whether warnings are ignored, displayed,
or turned into errors (raising an exception).

Conceptually, the warnings filter maintains an ordered list of filter
specifications; any specific warning is matched against each filter
specification in the list in turn until a match is found; the match
determines the disposition of the match.  Each entry is a tuple of the
form (\var{action}, \var{message}, \var{category}, \var{module},
\var{lineno}), where:

\begin{itemize}

\item \var{action} is one of the following strings:

    \begin{tableii}{l|l}{code}{Value}{Disposition}

    \lineii{"error"}{turn matching warnings into exceptions}

    \lineii{"ignore"}{never print matching warnings}

    \lineii{"always"}{always print matching warnings}

    \lineii{"default"}{print the first occurrence of matching
    warnings for each location where the warning is issued}

    \lineii{"module"}{print the first occurrence of matching
    warnings for each module where the warning is issued}

    \lineii{"once"}{print only the first occurrence of matching
    warnings, regardless of location}

    \end{tableii}

\item \var{message} is a string containing a regular expression that
the warning message must match (the match is compiled to always be 
case-insensitive) 

\item \var{category} is a class (a subclass of \exception{Warning}) of
      which the warning category must be a subclass in order to match

\item \var{module} is a string containing a regular expression that the module
      name must match (the match is compiled to be case-sensitive)

\item \var{lineno} is an integer that the line number where the
      warning occurred must match, or \code{0} to match all line
      numbers

\end{itemize}

Since the \exception{Warning} class is derived from the built-in
\exception{Exception} class, to turn a warning into an error we simply
raise \code{category(message)}.

The warnings filter is initialized by \programopt{-W} options passed
to the Python interpreter command line.  The interpreter saves the
arguments for all \programopt{-W} options without interpretation in
\code{sys.warnoptions}; the \module{warnings} module parses these when
it is first imported (invalid options are ignored, after printing a
message to \code{sys.stderr}).


\subsection{Available Functions \label{warning-functions}}

\begin{funcdesc}{warn}{message\optional{, category\optional{, stacklevel}}}
Issue a warning, or maybe ignore it or raise an exception.  The
\var{category} argument, if given, must be a warning category class
(see above); it defaults to \exception{UserWarning}.  Alternatively
\var{message} can be a \exception{Warning} instance, in which case
\var{category} will be ignored and \code{message.__class__} will be used.
In this case the message text will be \code{str(message)}. This function
raises an exception if the particular warning issued is changed
into an error by the warnings filter see above.  The \var{stacklevel}
argument can be used by wrapper functions written in Python, like
this:

\begin{verbatim}
def deprecation(message):
    warnings.warn(message, DeprecationWarning, stacklevel=2)
\end{verbatim}

This makes the warning refer to \function{deprecation()}'s caller,
rather than to the source of \function{deprecation()} itself (since
the latter would defeat the purpose of the warning message).
\end{funcdesc}

\begin{funcdesc}{warn_explicit}{message, category, filename,
 lineno\optional{, module\optional{, registry}}}
This is a low-level interface to the functionality of
\function{warn()}, passing in explicitly the message, category,
filename and line number, and optionally the module name and the
registry (which should be the \code{__warningregistry__} dictionary of
the module).  The module name defaults to the filename with \code{.py}
stripped; if no registry is passed, the warning is never suppressed.
\var{message} must be a string and \var{category} a subclass of
\exception{Warning} or \var{message} may be a \exception{Warning} instance,
in which case \var{category} will be ignored.
\end{funcdesc}

\begin{funcdesc}{showwarning}{message, category, filename,
			     lineno\optional{, file}}
Write a warning to a file.  The default implementation calls
\code{formatwarning(\var{message}, \var{category}, \var{filename},
\var{lineno})} and writes the resulting string to \var{file}, which
defaults to \code{sys.stderr}.  You may replace this function with an
alternative implementation by assigning to
\code{warnings.showwarning}.
\end{funcdesc}

\begin{funcdesc}{formatwarning}{message, category, filename, lineno}
Format a warning the standard way.  This returns a string  which may
contain embedded newlines and ends in a newline.
\end{funcdesc}

\begin{funcdesc}{filterwarnings}{action\optional{,
                 message\optional{, category\optional{,
                 module\optional{, lineno\optional{, append}}}}}}
Insert an entry into the list of warnings filters.  The entry is
inserted at the front by default; if \var{append} is true, it is
inserted at the end.
This checks the types of the arguments, compiles the message and
module regular expressions, and inserts them as a tuple in front
of the warnings filter.  Entries inserted later override entries
inserted earlier, if both match a particular warning.  Omitted
arguments default to a value that matches everything.
\end{funcdesc}

\begin{funcdesc}{resetwarnings}{}
Reset the warnings filter.  This discards the effect of all previous
calls to \function{filterwarnings()}, including that of the
\programopt{-W} command line options.
\end{funcdesc}
