\documentclass{manual}

% XXX PM explain how to add new types to Python

\title{Extending and Embedding the Python Interpreter}

\input{boilerplate}

% Tell \index to actually write the .idx file
\makeindex

\begin{document}

\maketitle

\ifhtml
\chapter*{Front Matter\label{front}}
\fi

\input{copyright}


\begin{abstract}

\noindent
Python is an interpreted, object-oriented programming language.  This
document describes how to write modules in C or \Cpp{} to extend the
Python interpreter with new modules.  Those modules can define new
functions but also new object types and their methods.  The document
also describes how to embed the Python interpreter in another
application, for use as an extension language.  Finally, it shows how
to compile and link extension modules so that they can be loaded
dynamically (at run time) into the interpreter, if the underlying
operating system supports this feature.

This document assumes basic knowledge about Python.  For an informal
introduction to the language, see the
\citetitle[../tut/tut.html]{Python Tutorial}.  The
\citetitle[../ref/ref.html]{Python Reference Manual} gives a more
formal definition of the language.  The
\citetitle[../lib/lib.html]{Python Library Reference} documents the
existing object types, functions and modules (both built-in and
written in Python) that give the language its wide application range.

For a detailed description of the whole Python/C API, see the separate
\citetitle[../api/api.html]{Python/C API Reference Manual}.

\end{abstract}

\tableofcontents


\input{extending}
\input{newtypes}
\input{unix}
\input{windows}
\input{embedding}


\appendix
\chapter{Reporting Bugs}
\input{reportingbugs}

\chapter{History and License}
\input{license}

\end{document}
