:mod:`!tabnanny` --- Detection of ambiguous indentation
=======================================================

.. module:: tabnanny
   :synopsis: Tool for detecting white space related problems in Python
              source files in a directory tree.

**Source code:** :source:`Lib/tabnanny.py`

--------------

For the time being this module is intended to be called as a script. However it
is possible to import it into an IDE and use the function :func:`check`
described below.

.. note::

   The API provided by this module is likely to change in future releases; such
   changes may not be backward compatible.


.. function:: check(file_or_dir)

   If *file_or_dir* is a directory and not a symbolic link, then recursively
   descend the directory tree named by *file_or_dir*, checking all :file:`.py`
   files along the way.  If *file_or_dir* is an ordinary Python source file, it
   is checked for whitespace related problems.  The diagnostic messages are
   written to standard output using the :func:`print` function.


.. data:: verbose

   Flag indicating whether to print verbose messages. This is incremented by the
   ``-v`` option if called as a script.


.. data:: filename_only

   Flag indicating whether to print only the filenames of files containing
   whitespace related problems.  This is set to true by the ``-q`` option if called
   as a script.


.. exception:: NannyNag

   Raised by :func:`process_tokens` if detecting an ambiguous indent. Captured and
   handled in :func:`check`.


.. function:: process_tokens(tokens)

   This function is used by :func:`check` to process tokens generated by the
   :mod:`tokenize` module.

.. XXX document errprint, format_witnesses, Whitespace, check_equal, indents,
   reset_globals


.. seealso::

   Module :mod:`tokenize`
      Lexical scanner for Python source code.
