\section{\module{__builtin__} ---
         Built-in objects}

\declaremodule[builtin]{builtin}{__builtin__}
\modulesynopsis{The module that provides the built-in namespace.}


This module provides direct access to all `built-in' identifiers of
Python; for example, \code{__builtin__.open} is the full name for the
built-in function \function{open()}.  See chapter~\ref{builtin},
``Built-in Objects.''

This module is not normally accessed explicitly by most applications,
but can be useful in modules that provide objects with the same name
as a built-in value, but in which the built-in of that name is also
needed.  For example, in a module that wants to implement an
\function{open()} function that wraps the built-in \function{open()},
this module can be used directly:

\begin{verbatim}
import __builtin__

def open(path):
    f = __builtin__.open(path, 'r')
    return UpperCaser(f)

class UpperCaser:
    '''Wrapper around a file that converts output to upper-case.'''

    def __init__(self, f):
        self._f = f

    def read(self, count=-1):
        return self._f.read(count).upper()

    # ...
\end{verbatim}

As an implementation detail, most modules have the name
\code{__builtins__} (note the \character{s}) made available as part of
their globals.  The value of \code{__builtins__} is normally either
this module or the value of this modules's \member{__dict__}
attribute.  Since this is an implementation detail, it may not be used
by alternate implementations of Python.
