Move the 2.6 reST doc tree in place.
diff --git a/Doc/documenting/fromlatex.rst b/Doc/documenting/fromlatex.rst
new file mode 100644
index 0000000..67abe8a
--- /dev/null
+++ b/Doc/documenting/fromlatex.rst
@@ -0,0 +1,192 @@
+.. highlightlang:: rest
+
+Differences to the LaTeX markup
+===============================
+
+Though the markup language is different, most of the concepts and markup types
+of the old LaTeX docs have been kept -- environments as reST directives, inline
+commands as reST roles and so forth.
+
+However, there are some differences in the way these work, partly due to the
+differences in the markup languages, partly due to improvements in Sphinx.  This
+section lists these differences, in order to give those familiar with the old
+format a quick overview of what they might run into.
+
+Inline markup
+-------------
+
+These changes have been made to inline markup:
+
+* **Cross-reference roles**
+
+  Most of the following semantic roles existed previously as inline commands,
+  but didn't do anything except formatting the content as code.  Now, they
+  cross-reference to known targets (some names have also been shortened):
+
+  | *mod* (previously *refmodule* or *module*)
+  | *func* (previously *function*)
+  | *data* (new)
+  | *const*
+  | *class*
+  | *meth* (previously *method*)
+  | *attr* (previously *member*)
+  | *exc* (previously *exception*)
+  | *cdata*
+  | *cfunc* (previously *cfunction*)
+  | *cmacro* (previously *csimplemacro*)
+  | *ctype*
+
+  Also different is the handling of *func* and *meth*: while previously
+  parentheses were added to the callable name (like ``\func{str()}``), they are
+  now appended by the build system -- appending them in the source will result
+  in double parentheses.  This also means that ``:func:`str(object)``` will not
+  work as expected -- use ````str(object)```` instead!
+
+* **Inline commands implemented as directives**
+
+  These were inline commands in LaTeX, but are now directives in reST:
+
+  | *deprecated*
+  | *versionadded*
+  | *versionchanged*
+
+  These are used like so::
+
+     .. deprecated:: 2.5
+        Reason of deprecation.
+
+  Also, no period is appended to the text for *versionadded* and
+  *versionchanged*.
+
+  | *note*
+  | *warning*
+
+  These are used like so::
+
+     .. note::
+
+        Content of note.
+
+* **Otherwise changed commands**
+
+  The *samp* command previously formatted code and added quotation marks around
+  it.  The *samp* role, however, features a new highlighting system just like
+  *file* does:
+
+     ``:samp:`open({filename}, {mode})``` results in :samp:`open({filename}, {mode})`
+
+* **Dropped commands**
+
+  These were commands in LaTeX, but are not available as roles:
+
+  | *bfcode*
+  | *character* (use :samp:`\`\`'c'\`\``)
+  | *citetitle* (use ```Title <URL>`_``)
+  | *code* (use ````code````)
+  | *email* (just write the address in body text)
+  | *filenq*
+  | *filevar* (use the ``{...}`` highlighting feature of *file*)
+  | *programopt*, *longprogramopt* (use *option*)
+  | *ulink* (use ```Title <URL>`_``)
+  | *url* (just write the URL in body text)
+  | *var* (use ``*var*``)
+  | *infinity*, *plusminus* (use the Unicode character)
+  | *shortversion*, *version* (use the ``|version|`` and ``|release|`` substitutions)
+  | *emph*, *strong* (use the reST markup)
+
+* **Backslash escaping**
+
+  In reST, a backslash must be escaped in normal text, and in the content of
+  roles.  However, in code literals and literal blocks, it must not be escaped.
+  Example: ``:file:`C:\\Temp\\my.tmp``` vs. ````open("C:\Temp\my.tmp")````.
+
+
+Information units
+-----------------
+
+Information units (*...desc* environments) have been made reST directives.
+These changes to information units should be noted:
+
+* **New names**
+
+  "desc" has been removed from every name.  Additionally, these directives have
+  new names:
+
+  | *cfunction* (previously *cfuncdesc*)
+  | *cmacro* (previously *csimplemacrodesc*)
+  | *exception* (previously *excdesc*)
+  | *function* (previously *funcdesc*)
+  | *attribute* (previously *memberdesc*)
+
+  The *classdesc\** and *excclassdesc* environments have been dropped, the
+  *class* and *exception* directives support classes documented with and without
+  constructor arguments.
+
+* **Multiple objects**
+
+  The equivalent of the *...line* commands is::
+
+     .. function:: do_foo(bar)
+                   do_bar(baz)
+
+        Description of the functions.
+
+  IOW, just give one signatures per line, at the same indentation level.
+
+* **Arguments**
+
+  There is no *optional* command.  Just give function signatures like they
+  should appear in the output::
+
+     .. function:: open(filename[, mode[, buffering]])
+
+        Description.
+
+  Note: markup in the signature is not supported.
+
+* **Indexing**
+
+  The *...descni* environments have been dropped.  To mark an information unit
+  as unsuitable for index entry generation, use the *noindex* option like so::
+
+     .. function:: foo_*
+        :noindex:
+
+        Description.
+
+* **New information unit**
+
+  There is a new generic information unit called "describe" which can be used
+  to document things that are not covered by the other units::
+
+     .. describe:: a == b
+
+        The equals operator.
+
+
+Structure
+---------
+
+The LaTeX docs were split in several toplevel manuals.  Now, all files
+are part of the same documentation tree, as indicated by the *toctree*
+directives in the sources.  Every *toctree* directive embeds other files
+as subdocuments of the current file (this structure is not necessarily
+mirrored in the filesystem layout).  The toplevel file is
+:file:`contents.rst`.
+
+However, most of the old directory structure has been kept, with the
+directories renamed as follows:
+
+* :file:`api` -> :file:`c-api`
+* :file:`dist` -> :file:`distutils`, with the single TeX file split up
+* :file:`doc` -> :file:`documenting`
+* :file:`ext` -> :file:`extending`
+* :file:`inst` -> :file:`installing`
+* :file:`lib` -> :file:`library`
+* :file:`mac` -> merged into :file:`library`, with `mac/using.tex`
+  moved to `howto/pythonmac.rst`
+* :file:`ref` -> :file:`reference`
+* :file:`tut` -> :file:`tutorial`, with the single TeX file split up
+
+
+.. XXX more (index-generating, production lists, ...)
diff --git a/Doc/documenting/index.rst b/Doc/documenting/index.rst
new file mode 100644
index 0000000..5adbd46
--- /dev/null
+++ b/Doc/documenting/index.rst
@@ -0,0 +1,34 @@
+.. _documenting-index:
+
+######################
+  Documenting Python
+######################
+
+
+The Python language has a substantial body of documentation, much of it
+contributed by various authors. The markup used for the Python documentation is
+`reStructuredText`_, developed by the `docutils`_ project, amended by custom
+directives and using a toolset named *Sphinx* to postprocess the HTML output.
+
+This document describes the style guide for our documentation, the custom
+reStructuredText markup introduced to support Python documentation and how it
+should be used, as well as the Sphinx build system.
+
+.. _reStructuredText: http://docutils.sf.net/rst.html
+.. _docutils: http://docutils.sf.net/
+
+If you're interested in contributing to Python's documentation, there's no need
+to write reStructuredText if you're not so inclined; plain text contributions
+are more than welcome as well.
+
+.. toctree::
+
+   intro.rst
+   style.rst
+   rest.rst
+   markup.rst
+   fromlatex.rst
+   sphinx.rst
+
+.. XXX add credits, thanks etc.
+
diff --git a/Doc/documenting/intro.rst b/Doc/documenting/intro.rst
new file mode 100644
index 0000000..e02ad7d
--- /dev/null
+++ b/Doc/documenting/intro.rst
@@ -0,0 +1,29 @@
+Introduction
+============
+
+Python's documentation has long been considered to be good for a free
+programming language.  There are a number of reasons for this, the most
+important being the early commitment of Python's creator, Guido van Rossum, to
+providing documentation on the language and its libraries, and the continuing
+involvement of the user community in providing assistance for creating and
+maintaining documentation.
+
+The involvement of the community takes many forms, from authoring to bug reports
+to just plain complaining when the documentation could be more complete or
+easier to use.
+
+This document is aimed at authors and potential authors of documentation for
+Python.  More specifically, it is for people contributing to the standard
+documentation and developing additional documents using the same tools as the
+standard documents.  This guide will be less useful for authors using the Python
+documentation tools for topics other than Python, and less useful still for
+authors not using the tools at all.
+
+If your interest is in contributing to the Python documentation, but you don't
+have the time or inclination to learn reStructuredText and the markup structures
+documented here, there's a welcoming place for you among the Python contributors
+as well.  Any time you feel that you can clarify existing documentation or
+provide documentation that's missing, the existing documentation team will
+gladly work with you to integrate your text, dealing with the markup for you.
+Please don't let the material in this document stand between the documentation
+and your desire to help out!
\ No newline at end of file
diff --git a/Doc/documenting/markup.rst b/Doc/documenting/markup.rst
new file mode 100644
index 0000000..831fad9
--- /dev/null
+++ b/Doc/documenting/markup.rst
@@ -0,0 +1,775 @@
+.. highlightlang:: rest
+
+Additional Markup Constructs
+============================
+
+Sphinx adds a lot of new directives and interpreted text roles to standard reST
+markup.  This section contains the reference material for these facilities.
+Documentation for "standard" reST constructs is not included here, though
+they are used in the Python documentation.
+
+File-wide metadata
+------------------
+
+reST has the concept of "field lists"; these are a sequence of fields marked up
+like this::
+
+   :Field name: Field content
+
+A field list at the very top of a file is parsed as the "docinfo", which in
+normal documents can be used to record the author, date of publication and
+other metadata.  In Sphinx, the docinfo is used as metadata, too, but not
+displayed in the output.
+
+At the moment, only one metadata field is recognized:
+
+``nocomments``
+   If set, the web application won't display a comment form for a page generated
+   from this source file.
+
+
+Meta-information markup
+-----------------------
+
+.. describe:: sectionauthor
+
+   Identifies the author of the current section.  The argument should include
+   the author's name such that it can be used for presentation (though it isn't)
+   and email address.  The domain name portion of the address should be lower
+   case.  Example::
+
+      .. sectionauthor:: Guido van Rossum <guido@python.org>
+
+   Currently, this markup isn't reflected in the output in any way, but it helps
+   keep track of contributions.
+
+
+Module-specific markup
+----------------------
+
+The markup described in this section is used to provide information about a
+module being documented.  Each module should be documented in its own file.
+Normally this markup appears after the title heading of that file; a typical
+file might start like this::
+
+   :mod:`parrot` -- Dead parrot access
+   ===================================
+
+   .. module:: parrot
+      :platform: Unix, Windows
+      :synopsis: Analyze and reanimate dead parrots.
+   .. moduleauthor:: Eric Cleese <eric@python.invalid>
+   .. moduleauthor:: John Idle <john@python.invalid>
+
+As you can see, the module-specific markup consists of two directives, the
+``module`` directive and the ``moduleauthor`` directive.
+
+.. describe:: module
+
+   This directive marks the beginning of the description of a module (or package
+   submodule, in which case the name should be fully qualified, including the
+   package name).
+
+   The ``platform`` option, if present, is a comma-separated list of the
+   platforms on which the module is available (if it is available on all
+   platforms, the option should be omitted).  The keys are short identifiers;
+   examples that are in use include "IRIX", "Mac", "Windows", and "Unix".  It is
+   important to use a key which has already been used when applicable.
+
+   The ``synopsis`` option should consist of one sentence describing the
+   module's purpose -- it is currently only used in the Global Module Index.
+
+.. describe:: moduleauthor
+
+   The ``moduleauthor`` directive, which can appear multiple times, names the
+   authors of the module code, just like ``sectionauthor`` names the author(s)
+   of a piece of documentation.  It too does not result in any output currently.
+
+
+.. note::
+
+   It is important to make the section title of a module-describing file
+   meaningful since that value will be inserted in the table-of-contents trees
+   in overview files.
+
+
+Information units
+-----------------
+
+There are a number of directives used to describe specific features provided by
+modules.  Each directive requires one or more signatures to provide basic
+information about what is being described, and the content should be the
+description.  The basic version makes entries in the general index; if no index
+entry is desired, you can give the directive option flag ``:noindex:``.  The
+following example shows all of the features of this directive type::
+
+    .. function:: spam(eggs)
+                  ham(eggs)
+       :noindex:
+
+       Spam or ham the foo.
+
+The signatures of object methods or data attributes should always include the
+type name (``.. method:: FileInput.input(...)``), even if it is obvious from the
+context which type they belong to; this is to enable consistent
+cross-references.  If you describe methods belonging to an abstract protocol,
+such as "context managers", include a (pseudo-)type name too to make the
+index entries more informative.
+
+The directives are:
+
+.. describe:: cfunction
+
+   Describes a C function. The signature should be given as in C, e.g.::
+
+      .. cfunction:: PyObject* PyType_GenericAlloc(PyTypeObject *type, Py_ssize_t nitems)
+
+   This is also used to describe function-like preprocessor macros.  The names
+   of the arguments should be given so they may be used in the description.
+
+   Note that you don't have to backslash-escape asterisks in the signature,
+   as it is not parsed by the reST inliner.
+
+.. describe:: cmember
+
+   Describes a C struct member. Example signature::
+
+      .. cmember:: PyObject* PyTypeObject.tp_bases
+
+   The text of the description should include the range of values allowed, how
+   the value should be interpreted, and whether the value can be changed.
+   References to structure members in text should use the ``member`` role.
+
+.. describe:: cmacro
+
+   Describes a "simple" C macro.  Simple macros are macros which are used
+   for code expansion, but which do not take arguments so cannot be described as
+   functions.  This is not to be used for simple constant definitions.  Examples
+   of its use in the Python documentation include :cmacro:`PyObject_HEAD` and
+   :cmacro:`Py_BEGIN_ALLOW_THREADS`.
+
+.. describe:: ctype
+
+   Describes a C type. The signature should just be the type name.
+
+.. describe:: cvar
+
+   Describes a global C variable.  The signature should include the type, such
+   as::
+
+      .. cvar:: PyObject* PyClass_Type
+
+.. describe:: data
+
+   Describes global data in a module, including both variables and values used
+   as "defined constants."  Class and object attributes are not documented
+   using this environment.
+
+.. describe:: exception
+
+   Describes an exception class.  The signature can, but need not include
+   parentheses with constructor arguments.
+
+.. describe:: function
+
+   Describes a module-level function.  The signature should include the
+   parameters, enclosing optional parameters in brackets.  Default values can be
+   given if it enhances clarity.  For example::
+
+      .. function:: Timer.repeat([repeat=3[, number=1000000]])
+
+   Object methods are not documented using this directive. Bound object methods
+   placed in the module namespace as part of the public interface of the module
+   are documented using this, as they are equivalent to normal functions for
+   most purposes.
+
+   The description should include information about the parameters required and
+   how they are used (especially whether mutable objects passed as parameters
+   are modified), side effects, and possible exceptions.  A small example may be
+   provided.
+
+.. describe:: class
+
+   Describes a class.  The signature can include parentheses with parameters
+   which will be shown as the constructor arguments.
+
+.. describe:: attribute
+
+   Describes an object data attribute.  The description should include
+   information about the type of the data to be expected and whether it may be
+   changed directly.
+
+.. describe:: method
+
+   Describes an object method.  The parameters should not include the ``self``
+   parameter.  The description should include similar information to that
+   described for ``function``.
+
+.. describe:: opcode
+
+   Describes a Python bytecode instruction.
+
+
+There is also a generic version of these directives:
+
+.. describe:: describe
+
+   This directive produces the same formatting as the specific ones explained
+   above but does not create index entries or cross-referencing targets.  It is
+   used, for example, to describe the directives in this document. Example::
+
+      .. describe:: opcode
+
+         Describes a Python bytecode instruction.
+
+
+Showing code examples
+---------------------
+
+Examples of Python source code or interactive sessions are represented using
+standard reST literal blocks.  They are started by a ``::`` at the end of the
+preceding paragraph and delimited by indentation.
+
+Representing an interactive session requires including the prompts and output
+along with the Python code.  No special markup is required for interactive
+sessions.  After the last line of input or output presented, there should not be
+an "unused" primary prompt; this is an example of what *not* to do::
+
+   >>> 1 + 1
+   2
+   >>>
+
+Syntax highlighting is handled in a smart way:
+
+* There is a "highlighting language" for each source file.  Per default,
+  this is ``'python'`` as the majority of files will have to highlight Python
+  snippets.
+
+* Within Python highlighting mode, interactive sessions are recognized
+  automatically and highlighted appropriately.
+
+* The highlighting language can be changed using the ``highlightlang``
+  directive, used as follows::
+
+     .. highlightlang:: c
+
+  This language is used until the next ``highlightlang`` directive is
+  encountered.
+
+* The valid values for the highlighting language are:
+
+  * ``python`` (the default)
+  * ``c``
+  * ``rest``
+  * ``none`` (no highlighting)
+
+* If highlighting with the current language fails, the block is not highlighted
+  in any way.
+
+Longer displays of verbatim text may be included by storing the example text in
+an external file containing only plain text.  The file may be included using the
+``literalinclude`` directive. [1]_ For example, to include the Python source file
+:file:`example.py`, use::
+
+   .. literalinclude:: example.py
+
+The file name is relative to the current file's path.  Documentation-specific
+include files should be placed in the ``Doc/includes`` subdirectory.
+
+
+Inline markup
+-------------
+
+As said before, Sphinx uses interpreted text roles to insert semantic markup in
+documents.
+
+Variable names are an exception, they should be marked simply with ``*var*``.
+
+For all other roles, you have to write ``:rolename:`content```.
+
+The following roles refer to objects in modules and are possibly hyperlinked if
+a matching identifier is found:
+
+.. describe:: mod
+
+   The name of a module; a dotted name may be used.  This should also be used for
+   package names.
+
+.. describe:: func
+
+   The name of a Python function; dotted names may be used.  The role text
+   should include trailing parentheses to enhance readability.  The parentheses
+   are stripped when searching for identifiers.
+
+.. describe:: data
+
+   The name of a module-level variable.
+
+.. describe:: const
+
+   The name of a "defined" constant.  This may be a C-language ``#define``
+   or a Python variable that is not intended to be changed.
+
+.. describe:: class
+
+   A class name; a dotted name may be used.
+
+.. describe:: meth
+
+   The name of a method of an object.  The role text should include the type
+   name, method name and the trailing parentheses.  A dotted name may be used.
+
+.. describe:: attr
+
+   The name of a data attribute of an object.
+
+.. describe:: exc
+
+   The name of an exception. A dotted name may be used.
+
+The name enclosed in this markup can include a module name and/or a class name.
+For example, ``:func:`filter``` could refer to a function named ``filter`` in
+the current module, or the built-in function of that name.  In contrast,
+``:func:`foo.filter``` clearly refers to the ``filter`` function in the ``foo``
+module.
+
+A similar heuristic is used to determine whether the name is an attribute of
+the currently documented class.
+
+The following roles create cross-references to C-language constructs if they
+are defined in the API documentation:
+
+.. describe:: cdata
+
+   The name of a C-language variable.
+
+.. describe:: cfunc
+
+   The name of a C-language function. Should include trailing parentheses.
+
+.. describe:: cmacro
+
+   The name of a "simple" C macro, as defined above.
+
+.. describe:: ctype
+
+   The name of a C-language type.
+
+
+The following role does possibly create a cross-reference, but does not refer
+to objects:
+
+.. describe:: token
+
+   The name of a grammar token (used in the reference manual to create links
+   between production displays).
+
+---------
+
+The following roles don't do anything special except formatting the text
+in a different style:
+
+.. describe:: command
+
+   The name of an OS-level command, such as ``rm``.
+
+.. describe:: dfn
+
+   Mark the defining instance of a term in the text.  (No index entries are
+   generated.)
+
+.. describe:: envvar
+
+   An environment variable.  Index entries are generated.
+
+.. describe:: file
+
+   The name of a file or directory.  Within the contents, you can use curly
+   braces to indicate a "variable" part, for example::
+
+      ... is installed in :file:`/usr/lib/python2.{x}/site-packages` ...
+
+   In the built documentation, the ``x`` will be displayed differently to
+   indicate that it is to be replaced by the Python minor version.
+
+.. describe:: guilabel
+
+   Labels presented as part of an interactive user interface should be marked
+   using ``guilabel``.  This includes labels from text-based interfaces such as
+   those created using :mod:`curses` or other text-based libraries.  Any label
+   used in the interface should be marked with this role, including button
+   labels, window titles, field names, menu and menu selection names, and even
+   values in selection lists.
+
+.. describe:: kbd
+
+   Mark a sequence of keystrokes.  What form the key sequence takes may depend
+   on platform- or application-specific conventions.  When there are no relevant
+   conventions, the names of modifier keys should be spelled out, to improve
+   accessibility for new users and non-native speakers.  For example, an
+   *xemacs* key sequence may be marked like ``:kbd:`C-x C-f```, but without
+   reference to a specific application or platform, the same sequence should be
+   marked as ``:kbd:`Control-x Control-f```.
+
+.. describe:: keyword
+
+   The name of a keyword in a programming language.
+
+.. describe:: mailheader
+
+   The name of an RFC 822-style mail header.  This markup does not imply that
+   the header is being used in an email message, but can be used to refer to any
+   header of the same "style."  This is also used for headers defined by the
+   various MIME specifications.  The header name should be entered in the same
+   way it would normally be found in practice, with the camel-casing conventions
+   being preferred where there is more than one common usage. For example:
+   ``:mailheader:`Content-Type```.
+
+.. describe:: makevar
+
+   The name of a :command:`make` variable.
+
+.. describe:: manpage
+
+   A reference to a Unix manual page including the section,
+   e.g. ``:manpage:`ls(1)```.
+
+.. describe:: menuselection
+
+   Menu selections should be marked using the ``menuselection`` role.  This is
+   used to mark a complete sequence of menu selections, including selecting
+   submenus and choosing a specific operation, or any subsequence of such a
+   sequence.  The names of individual selections should be separated by
+   ``-->``.
+
+   For example, to mark the selection "Start > Programs", use this markup::
+
+      :menuselection:`Start --> Programs`
+
+   When including a selection that includes some trailing indicator, such as the
+   ellipsis some operating systems use to indicate that the command opens a
+   dialog, the indicator should be omitted from the selection name.
+
+.. describe:: mimetype
+
+   The name of a MIME type, or a component of a MIME type (the major or minor
+   portion, taken alone).
+
+.. describe:: newsgroup
+
+   The name of a Usenet newsgroup.
+
+.. describe:: option
+
+   A command-line option to an executable program.  The leading hyphen(s) must
+   be included.
+
+.. describe:: program
+
+   The name of an executable program.  This may differ from the file name for
+   the executable for some platforms.  In particular, the ``.exe`` (or other)
+   extension should be omitted for Windows programs.
+
+.. describe:: regexp
+
+   A regular expression. Quotes should not be included.
+
+.. describe:: samp
+
+   A piece of literal text, such as code.  Within the contents, you can use
+   curly braces to indicate a "variable" part, as in ``:file:``.
+
+   If you don't need the "variable part" indication, use the standard
+   ````code```` instead.   
+
+.. describe:: var
+
+   A Python or C variable or parameter name.
+
+
+The following roles generate external links:
+
+.. describe:: pep
+
+   A reference to a Python Enhancement Proposal.  This generates appropriate
+   index entries. The text "PEP *number*\ " is generated; in the HTML output,
+   this text is a hyperlink to an online copy of the specified PEP.
+
+.. describe:: rfc
+
+   A reference to an Internet Request for Comments.  This generates appropriate
+   index entries. The text "RFC *number*\ " is generated; in the HTML output,
+   this text is a hyperlink to an online copy of the specified RFC.
+
+
+Note that there are no special roles for including hyperlinks as you can use
+the standard reST markup for that purpose.
+
+
+.. _doc-ref-role:
+
+Cross-linking markup
+--------------------
+
+To support cross-referencing to arbitrary sections in the documentation, the
+standard reST labels are "abused" a bit: Every label must precede a section
+title; and every label name must be unique throughout the entire documentation
+source.
+
+You can then reference to these sections using the ``:ref:`label-name``` role.
+
+Example::
+
+   .. _my-reference-label:
+
+   Section to cross-reference
+   --------------------------
+
+   This is the text of the section.
+
+   It refers to the section itself, see :ref:`my-reference-label`.
+
+The ``:ref:`` invocation is replaced with the section title.
+
+
+Paragraph-level markup
+----------------------
+
+These directives create short paragraphs and can be used inside information
+units as well as normal text:
+
+.. describe:: note
+
+   An especially important bit of information about an API that a user should be
+   aware of when using whatever bit of API the note pertains to.  The content of
+   the directive should be written in complete sentences and include all
+   appropriate punctuation.
+
+   Example::
+
+      .. note::
+
+         This function is not suitable for sending spam e-mails.
+
+.. describe:: warning
+
+   An important bit of information about an API that a user should be very aware
+   of when using whatever bit of API the warning pertains to.  The content of
+   the directive should be written in complete sentences and include all
+   appropriate punctuation. This differs from ``note`` in that it is recommended
+   over ``note`` for information regarding security.
+
+.. describe:: versionadded
+
+   This directive documents the version of Python which added the described
+   feature to the library or C API. When this applies to an entire module, it
+   should be placed at the top of the module section before any prose.
+
+   The first argument must be given and is the version in question; you can add
+   a second argument consisting of a *brief* explanation of the change.
+
+   Example::
+
+      .. versionadded:: 2.5
+         The `spam` parameter.
+
+   Note that there must be no blank line between the directive head and the
+   explanation; this is to make these blocks visually continuous in the markup.
+
+.. describe:: versionchanged
+
+   Similar to ``versionadded``, but describes when and what changed in the named
+   feature in some way (new parameters, changed side effects, etc.).
+
+--------------
+
+.. describe:: seealso
+
+   Many sections include a list of references to module documentation or
+   external documents.  These lists are created using the ``seealso`` directive.
+
+   The ``seealso`` directive is typically placed in a section just before any
+   sub-sections.  For the HTML output, it is shown boxed off from the main flow
+   of the text.
+
+   The content of the ``seealso`` directive should be a reST definition list.
+   Example::
+
+      .. seealso::
+
+         Module :mod:`zipfile`
+            Documentation of the :mod:`zipfile` standard module.
+
+         `GNU tar manual, Basic Tar Format <http://link>`_
+            Documentation for tar archive files, including GNU tar extensions.
+
+.. describe:: rubric
+
+   This directive creates a paragraph heading that is not used to create a
+   table of contents node.  It is currently used for the "Footnotes" caption.
+
+.. describe:: centered
+
+   This directive creates a centered boldfaced paragraph.  Use it as follows::
+
+      .. centered::
+
+         Paragraph contents.
+
+
+Table-of-contents markup
+------------------------
+
+Since reST does not have facilities to interconnect several documents, or split
+documents into multiple output files, Sphinx uses a custom directive to add
+relations between the single files the documentation is made of, as well as
+tables of contents.  The ``toctree`` directive is the central element.
+
+.. describe:: toctree
+
+   This directive inserts a "TOC tree" at the current location, using the
+   individual TOCs (including "sub-TOC trees") of the files given in the
+   directive body.  A numeric ``maxdepth`` option may be given to indicate the
+   depth of the tree; by default, all levels are included.
+
+   Consider this example (taken from the library reference index)::
+
+      .. toctree::
+         :maxdepth: 2
+
+         intro.rst
+         strings.rst
+         datatypes.rst
+         numeric.rst
+         (many more files listed here)
+
+   This accomplishes two things:
+
+   * Tables of contents from all those files are inserted, with a maximum depth
+     of two, that means one nested heading.  ``toctree`` directives in those
+     files are also taken into account.
+   * Sphinx knows that the relative order of the files ``intro.rst``,
+     ``strings.rst`` and so forth, and it knows that they are children of the
+     shown file, the library index.  From this information it generates "next
+     chapter", "previous chapter" and "parent chapter" links.
+
+   In the end, all files included in the build process must occur in one
+   ``toctree`` directive; Sphinx will emit a warning if it finds a file that is
+   not included, because that means that this file will not be reachable through
+   standard navigation.
+
+   The special file ``contents.rst`` at the root of the source directory is the
+   "root" of the TOC tree hierarchy; from it the "Contents" page is generated.
+
+
+Index-generating markup
+-----------------------
+
+Sphinx automatically creates index entries from all information units (like
+functions, classes or attributes) like discussed before.
+
+However, there is also an explicit directive available, to make the index more
+comprehensive and enable index entries in documents where information is not
+mainly contained in information units, such as the language reference.
+
+The directive is ``index`` and contains one or more index entries.  Each entry
+consists of a type and a value, separated by a colon.
+
+For example::
+
+   .. index::
+      single: execution!context
+      module: __main__
+      module: sys
+      triple: module; search; path
+
+This directive contains five entries, which will be converted to entries in the
+generated index which link to the exact location of the index statement (or, in
+case of offline media, the corresponding page number).
+
+The possible entry types are:
+
+single
+   Creates a single index entry.  Can be made a subentry by separating the
+   subentry text with a semicolon (this is also used below to describe what
+   entries are created).
+pair
+   ``pair: loop; statement`` is a shortcut that creates two index entries,
+   namely ``loop; statement`` and ``statement; loop``.
+triple
+   Likewise, ``triple: module; search; path`` is a shortcut that creates three
+   index entries, which are ``module; search path``, ``search; path, module`` and
+   ``path; module search``.
+module, keyword, operator, object, exception, statement, builtin
+   These all create two index entries.  For example, ``module: hashlib`` creates
+   the entries ``module; hashlib`` and ``hashlib; module``.
+
+
+Grammar production displays
+---------------------------
+
+Special markup is available for displaying the productions of a formal grammar.
+The markup is simple and does not attempt to model all aspects of BNF (or any
+derived forms), but provides enough to allow context-free grammars to be
+displayed in a way that causes uses of a symbol to be rendered as hyperlinks to
+the definition of the symbol.  There is this directive:
+
+.. describe:: productionlist
+
+   This directive is used to enclose a group of productions.  Each production is
+   given on a single line and consists of a name, separated by a colon from the
+   following definition.  If the definition spans multiple lines, each
+   continuation line must begin with a colon placed at the same column as in the
+   first line.
+
+   Blank lines are not allowed within ``productionlist`` directive arguments.
+
+   The definition can contain token names which are marked as interpreted text
+   (e.g. ``sum ::= `integer` "+" `integer```) -- this generates cross-references
+   to the productions of these tokens.
+
+   Note that no further reST parsing is done in the production, so that you
+   don't have to escape ``*`` or ``|`` characters.
+
+
+.. XXX describe optional first parameter 
+
+The following is an example taken from the Python Reference Manual::
+
+   .. productionlist::
+      try_stmt: try1_stmt | try2_stmt
+      try1_stmt: "try" ":" `suite`
+               : ("except" [`expression` ["," `target`]] ":" `suite`)+
+               : ["else" ":" `suite`]
+               : ["finally" ":" `suite`]
+      try2_stmt: "try" ":" `suite`
+               : "finally" ":" `suite`
+
+
+Substitutions
+-------------
+
+The documentation system provides three substitutions that are defined by default.
+They are set in the build configuration file, see :ref:`doc-build-config`.
+
+.. describe:: |release|
+
+   Replaced by the Python release the documentation refers to.  This is the full
+   version string including alpha/beta/release candidate tags, e.g. ``2.5.2b3``.
+
+.. describe:: |version|
+
+   Replaced by the Python version the documentation refers to. This consists
+   only of the major and minor version parts, e.g. ``2.5``, even for version
+   2.5.1.
+
+.. describe:: |today|
+
+   Replaced by either today's date, or the date set in the build configuration
+   file.  Normally has the format ``April 14, 2007``.
+
+
+.. rubric:: Footnotes
+
+.. [1] There is a standard ``.. include`` directive, but it raises errors if the
+       file is not found.  This one only emits a warning.
diff --git a/Doc/documenting/rest.rst b/Doc/documenting/rest.rst
new file mode 100644
index 0000000..8a4fc3d
--- /dev/null
+++ b/Doc/documenting/rest.rst
@@ -0,0 +1,251 @@
+.. highlightlang:: rest
+
+reStructuredText Primer
+=======================
+
+This section is a brief introduction to reStructuredText (reST) concepts and
+syntax, intended to provide authors with enough information to author documents
+productively.  Since reST was designed to be a simple, unobtrusive markup
+language, this will not take too long.
+
+.. seealso::
+
+    The authoritative `reStructuredText User
+    Documentation <http://docutils.sourceforge.net/rst.html>`_.
+
+
+Paragraphs
+----------
+
+The paragraph is the most basic block in a reST document.  Paragraphs are simply
+chunks of text separated by one or more blank lines.  As in Python, indentation
+is significant in reST, so all lines of the same paragraph must be left-aligned
+to the same level of indentation.
+
+
+Inline markup
+-------------
+
+The standard reST inline markup is quite simple: use
+
+* one asterisk: ``*text*`` for emphasis (italics),
+* two asterisks: ``**text**`` for strong emphasis (boldface), and
+* backquotes: ````text```` for code samples.
+
+If asterisks or backquotes appear in running text and could be confused with
+inline markup delimiters, they have to be escaped with a backslash.
+
+Be aware of some restrictions of this markup:
+
+* it may not be nested,
+* content may not start or end with whitespace: ``* text*`` is wrong,
+* it must be separated from surrounding text by non-word characters.  Use a
+  backslash escaped space to work around that: ``thisis\ *one*\ word``.
+
+These restrictions may be lifted in future versions of the docutils.
+
+reST also allows for custom "interpreted text roles"', which signify that the
+enclosed text should be interpreted in a specific way.  Sphinx uses this to
+provide semantic markup and cross-referencing of identifiers, as described in
+the appropriate section.  The general syntax is ``:rolename:`content```.
+
+
+Lists and Quotes
+----------------
+
+List markup is natural: just place an asterisk at the start of a paragraph and
+indent properly.  The same goes for numbered lists; they can also be
+autonumbered using a ``#`` sign::
+
+   * This is a bulleted list.
+   * It has two items, the second
+     item uses two lines.
+
+   1. This is a numbered list.
+   2. It has two items too.
+
+   #. This is a numbered list.
+   #. It has two items too.
+
+Note that Sphinx disables the use of enumerated lists introduced by alphabetic
+or roman numerals, such as ::
+
+   A. First item
+   B. Second item
+   
+
+Nested lists are possible, but be aware that they must be separated from the
+parent list items by blank lines::
+
+   * this is
+   * a list
+
+     * with a nested list
+     * and some subitems
+
+   * and here the parent list continues
+
+Definition lists are created as follows::
+
+   term (up to a line of text)
+      Definition of the term, which must be indented
+
+      and can even consist of multiple paragraphs
+
+   next term
+      Description.
+
+
+Paragraphs are quoted by just indenting them more than the surrounding
+paragraphs.
+
+
+Source Code
+-----------
+
+Literal code blocks are introduced by ending a paragraph with the special marker
+``::``.  The literal block must be indented, to be able to include blank lines::
+
+   This is a normal text paragraph. The next paragraph is a code sample::
+
+      It is not processed in any way, except
+      that the indentation is removed.
+
+      It can span multiple lines.
+
+   This is a normal text paragraph again.
+
+The handling of the ``::`` marker is smart:
+
+* If it occurs as a paragraph of its own, that paragraph is completely left
+  out of the document.
+* If it is preceded by whitespace, the marker is removed.
+* If it is preceded by non-whitespace, the marker is replaced by a single
+  colon.
+
+That way, the second sentence in the above example's first paragraph would be
+rendered as "The next paragraph is a code sample:".
+
+
+Hyperlinks
+----------
+
+External links
+^^^^^^^^^^^^^^
+
+Use ```Link text <http://target>`_`` for inline web links.  If the link text
+should be the web address, you don't need special markup at all, the parser
+finds links and mail addresses in ordinary text.
+
+Internal links
+^^^^^^^^^^^^^^
+
+Internal linking is done via a special reST role, see the section on specific
+markup, :ref:`doc-ref-role`.
+
+
+Sections
+--------
+
+Section headers are created by underlining (and optionally overlining) the
+section title with a punctuation character, at least as long as the text::
+
+   =================
+   This is a heading
+   =================
+
+Normally, there are no heading levels assigned to certain characters as the
+structure is determined from the succession of headings.  However, for the
+Python documentation, we use this convention:
+
+* ``#`` with overline, for parts
+* ``*`` with overline, for chapters
+* ``=``, for sections
+* ``-``, for subsections
+* ``^``, for subsubsections
+* ``"``, for paragraphs
+
+
+Explicit Markup
+---------------
+
+"Explicit markup" is used in reST for most constructs that need special
+handling, such as footnotes, specially-highlighted paragraphs, comments, and
+generic directives.
+
+An explicit markup block begins with a line starting with ``..`` followed by
+whitespace and is terminated by the next paragraph at the same level of
+indentation.  (There needs to be a blank line between explicit markup and normal
+paragraphs.  This may all sound a bit complicated, but it is intuitive enough
+when you write it.)
+
+
+Directives
+----------
+
+A directive is a generic block of explicit markup.  Besides roles, it is one of
+the extension mechanisms of reST, and Sphinx makes heavy use of it.
+
+Basically, a directive consists of a name, arguments, options and content. (Keep
+this terminology in mind, it is used in the next chapter describing custom
+directives.)  Looking at this example, ::
+
+   .. function:: foo(x)
+                 foo(y, z)
+      :bar: no
+
+      Return a line of text input from the user.
+
+``function`` is the directive name.  It is given two arguments here, the
+remainder of the first line and the second line, as well as one option ``bar``
+(as you can see, options are given in the lines immediately following the
+arguments and indicated by the colons).
+
+The directive content follows after a blank line and is indented relative to the
+directive start.
+
+
+Footnotes
+---------
+
+For footnotes, use ``[#]_`` to mark the footnote location, and add the footnote
+body at the bottom of the document after a "Footnotes" rubric heading, like so::
+
+   Lorem ipsum [#]_ dolor sit amet ... [#]_
+
+   .. rubric:: Footnotes
+
+   .. [#] Text of the first footnote.
+   .. [#] Text of the second footnote.
+
+You can also explicitly number the footnotes for better context.
+
+
+Comments
+--------
+
+Every explicit markup block which isn't a valid markup construct (like the
+footnotes above) is regarded as a comment.
+
+
+Source encoding
+---------------
+
+Since the easiest way to include special characters like em dashes or copyright
+signs in reST is to directly write them as Unicode characters, one has to
+specify an encoding:
+
+All Python documentation source files must be in UTF-8 encoding, and the HTML
+documents written from them will be in that encoding as well.
+
+
+Gotchas
+-------
+
+There are some problems one commonly runs into while authoring reST documents:
+
+* **Separation of inline markup:** As said above, inline markup spans must be
+  separated from the surrounding text by non-word characters, you have to use
+  an escaped space to get around that.
+
+.. XXX more?
diff --git a/Doc/documenting/sphinx.rst b/Doc/documenting/sphinx.rst
new file mode 100644
index 0000000..85e8b5e
--- /dev/null
+++ b/Doc/documenting/sphinx.rst
@@ -0,0 +1,60 @@
+.. highlightlang:: rest
+
+The Sphinx build system
+=======================
+
+.. XXX: intro...
+
+.. _doc-build-config:
+
+The build configuration file
+----------------------------
+
+The documentation root, that is the ``Doc`` subdirectory of the source
+distribution, contains a file named ``conf.py``.  This file is called the "build
+configuration file", and it contains several variables that are read and used
+during a build run.
+
+These variables are:
+
+version : string
+   A string that is used as a replacement for the ``|version|`` reST
+   substitution.  It should be the Python version the documentation refers to.
+   This consists only of the major and minor version parts, e.g. ``2.5``, even
+   for version 2.5.1.
+
+release : string
+   A string that is used as a replacement for the ``|release|`` reST
+   substitution.  It should be the full version string including
+   alpha/beta/release candidate tags, e.g. ``2.5.2b3``.
+
+Both ``release`` and ``version`` can be ``'auto'``, which means that they are
+determined at runtime from the ``Include/patchlevel.h`` file, if a complete
+Python source distribution can be found, or else from the interpreter running
+Sphinx.
+
+today_fmt : string
+   A ``strftime`` format that is used to format a replacement for the
+   ``|today|`` reST substitution.
+
+today : string
+   A string that can contain a date that should be written to the documentation
+   output literally.  If this is nonzero, it is used instead of
+   ``strftime(today_fmt)``.
+
+unused_files : list of strings
+   A list of reST filenames that are to be disregarded during building.  This
+   could be docs for temporarily disabled modules or documentation that's not
+   yet ready for public consumption.
+
+last_updated_format : string
+   If this is not an empty string, it will be given to ``time.strftime()`` and
+   written to each generated output file after "last updated on:".
+
+use_smartypants : bool
+   If true, use SmartyPants to convert quotes and dashes to the typographically
+   correct entities.
+
+add_function_parentheses : bool
+   If true, ``()`` will be appended to the content of ``:func:``, ``:meth:`` and
+   ``:cfunc:`` cross-references.
\ No newline at end of file
diff --git a/Doc/documenting/style.rst b/Doc/documenting/style.rst
new file mode 100644
index 0000000..5d0ccb7
--- /dev/null
+++ b/Doc/documenting/style.rst
@@ -0,0 +1,70 @@
+.. highlightlang:: rest
+
+Style Guide
+===========
+
+The Python documentation should follow the `Apple Publications Style Guide`_
+wherever possible. This particular style guide was selected mostly because it
+seems reasonable and is easy to get online.
+
+Topics which are not covered in the Apple's style guide will be discussed in
+this document.
+
+All reST files use an indentation of 3 spaces.  The maximum line length is 80
+characters for normal text, but tables, deeply indented code samples and long
+links may extend beyond that.
+
+Make generous use of blank lines where applicable; they help grouping things
+together.
+
+A sentence-ending period may be followed by one or two spaces; while reST
+ignores the second space, it is customarily put in by some users, for example
+to aid Emacs' auto-fill mode.
+
+Footnotes are generally discouraged, though they may be used when they are the
+best way to present specific information. When a footnote reference is added at
+the end of the sentence, it should follow the sentence-ending punctuation. The
+reST markup should appear something like this::
+
+    This sentence has a footnote reference. [#]_ This is the next sentence.
+
+Footnotes should be gathered at the end of a file, or if the file is very long,
+at the end of a section. The docutils will automatically create backlinks to
+the footnote reference.
+
+Footnotes may appear in the middle of sentences where appropriate.
+
+Many special names are used in the Python documentation, including the names of
+operating systems, programming languages, standards bodies, and the like. Most
+of these entities are not assigned any special markup, but the preferred
+spellings are given here to aid authors in maintaining the consistency of
+presentation in the Python documentation.
+
+Other terms and words deserve special mention as well; these conventions should
+be used to ensure consistency throughout the documentation:
+
+CPU
+    For "central processing unit." Many style guides say this should be spelled
+    out on the first use (and if you must use it, do so!). For the Python
+    documentation, this abbreviation should be avoided since there's no
+    reasonable way to predict which occurrence will be the first seen by the
+    reader. It is better to use the word "processor" instead.
+
+POSIX
+    The name assigned to a particular group of standards. This is always
+    uppercase.
+
+Python
+    The name of our favorite programming language is always capitalized.
+
+Unicode
+    The name of a character set and matching encoding. This is always written
+    capitalized.
+
+Unix
+    The name of the operating system developed at AT&T Bell Labs in the early
+    1970s.
+
+
+.. _Apple Publications Style Guide: http://developer.apple.com/documentation/UserExperience/Conceptual/APStyleGuide/AppleStyleGuide2003.pdf
+