d7d23cd0b4d126d6b0e97621bc540de908215d4a
[profile/ivi/python.git] / Doc / documenting / markup.rst
1 .. highlightlang:: rest
2
3 Additional Markup Constructs
4 ============================
5
6 Sphinx adds a lot of new directives and interpreted text roles to standard reST
7 markup.  This section contains the reference material for these facilities.
8 Documentation for "standard" reST constructs is not included here, though
9 they are used in the Python documentation.
10
11 .. note::
12
13    This is just an overview of Sphinx' extended markup capabilities; full
14    coverage can be found in `its own documentation
15    <http://sphinx.pocoo.org/contents.html>`_.
16
17
18 Meta-information markup
19 -----------------------
20
21 .. describe:: sectionauthor
22
23    Identifies the author of the current section.  The argument should include
24    the author's name such that it can be used for presentation (though it isn't)
25    and email address.  The domain name portion of the address should be lower
26    case.  Example::
27
28       .. sectionauthor:: Guido van Rossum <guido@python.org>
29
30    Currently, this markup isn't reflected in the output in any way, but it helps
31    keep track of contributions.
32
33
34 Module-specific markup
35 ----------------------
36
37 The markup described in this section is used to provide information about a
38 module being documented.  Each module should be documented in its own file.
39 Normally this markup appears after the title heading of that file; a typical
40 file might start like this::
41
42    :mod:`parrot` -- Dead parrot access
43    ===================================
44
45    .. module:: parrot
46       :platform: Unix, Windows
47       :synopsis: Analyze and reanimate dead parrots.
48    .. moduleauthor:: Eric Cleese <eric@python.invalid>
49    .. moduleauthor:: John Idle <john@python.invalid>
50
51 As you can see, the module-specific markup consists of two directives, the
52 ``module`` directive and the ``moduleauthor`` directive.
53
54 .. describe:: module
55
56    This directive marks the beginning of the description of a module (or package
57    submodule, in which case the name should be fully qualified, including the
58    package name).
59
60    The ``platform`` option, if present, is a comma-separated list of the
61    platforms on which the module is available (if it is available on all
62    platforms, the option should be omitted).  The keys are short identifiers;
63    examples that are in use include "IRIX", "Mac", "Windows", and "Unix".  It is
64    important to use a key which has already been used when applicable.
65
66    The ``synopsis`` option should consist of one sentence describing the
67    module's purpose -- it is currently only used in the Global Module Index.
68
69    The ``deprecated`` option can be given (with no value) to mark a module as
70    deprecated; it will be designated as such in various locations then.
71
72 .. describe:: moduleauthor
73
74    The ``moduleauthor`` directive, which can appear multiple times, names the
75    authors of the module code, just like ``sectionauthor`` names the author(s)
76    of a piece of documentation.  It too does not result in any output currently.
77
78 .. note::
79
80    It is important to make the section title of a module-describing file
81    meaningful since that value will be inserted in the table-of-contents trees
82    in overview files.
83
84
85 Information units
86 -----------------
87
88 There are a number of directives used to describe specific features provided by
89 modules.  Each directive requires one or more signatures to provide basic
90 information about what is being described, and the content should be the
91 description.  The basic version makes entries in the general index; if no index
92 entry is desired, you can give the directive option flag ``:noindex:``.  The
93 following example shows all of the features of this directive type::
94
95     .. function:: spam(eggs)
96                   ham(eggs)
97        :noindex:
98
99        Spam or ham the foo.
100
101 The signatures of object methods or data attributes should always include the
102 type name (``.. method:: FileInput.input(...)``), even if it is obvious from the
103 context which type they belong to; this is to enable consistent
104 cross-references.  If you describe methods belonging to an abstract protocol,
105 such as "context managers", include a (pseudo-)type name too to make the
106 index entries more informative.
107
108 The directives are:
109
110 .. describe:: cfunction
111
112    Describes a C function. The signature should be given as in C, e.g.::
113
114       .. cfunction:: PyObject* PyType_GenericAlloc(PyTypeObject *type, Py_ssize_t nitems)
115
116    This is also used to describe function-like preprocessor macros.  The names
117    of the arguments should be given so they may be used in the description.
118
119    Note that you don't have to backslash-escape asterisks in the signature,
120    as it is not parsed by the reST inliner.
121
122 .. describe:: cmember
123
124    Describes a C struct member. Example signature::
125
126       .. cmember:: PyObject* PyTypeObject.tp_bases
127
128    The text of the description should include the range of values allowed, how
129    the value should be interpreted, and whether the value can be changed.
130    References to structure members in text should use the ``member`` role.
131
132 .. describe:: cmacro
133
134    Describes a "simple" C macro.  Simple macros are macros which are used
135    for code expansion, but which do not take arguments so cannot be described as
136    functions.  This is not to be used for simple constant definitions.  Examples
137    of its use in the Python documentation include :cmacro:`PyObject_HEAD` and
138    :cmacro:`Py_BEGIN_ALLOW_THREADS`.
139
140 .. describe:: ctype
141
142    Describes a C type. The signature should just be the type name.
143
144 .. describe:: cvar
145
146    Describes a global C variable.  The signature should include the type, such
147    as::
148
149       .. cvar:: PyObject* PyClass_Type
150
151 .. describe:: data
152
153    Describes global data in a module, including both variables and values used
154    as "defined constants."  Class and object attributes are not documented
155    using this environment.
156
157 .. describe:: exception
158
159    Describes an exception class.  The signature can, but need not include
160    parentheses with constructor arguments.
161
162 .. describe:: function
163
164    Describes a module-level function.  The signature should include the
165    parameters, enclosing optional parameters in brackets.  Default values can be
166    given if it enhances clarity.  For example::
167
168       .. function:: Timer.repeat([repeat=3[, number=1000000]])
169
170    Object methods are not documented using this directive. Bound object methods
171    placed in the module namespace as part of the public interface of the module
172    are documented using this, as they are equivalent to normal functions for
173    most purposes.
174
175    The description should include information about the parameters required and
176    how they are used (especially whether mutable objects passed as parameters
177    are modified), side effects, and possible exceptions.  A small example may be
178    provided.
179
180 .. describe:: class
181
182    Describes a class.  The signature can include parentheses with parameters
183    which will be shown as the constructor arguments.
184
185 .. describe:: attribute
186
187    Describes an object data attribute.  The description should include
188    information about the type of the data to be expected and whether it may be
189    changed directly.
190
191 .. describe:: method
192
193    Describes an object method.  The parameters should not include the ``self``
194    parameter.  The description should include similar information to that
195    described for ``function``.
196
197 .. describe:: opcode
198
199    Describes a Python :term:`bytecode` instruction.
200
201 .. describe:: cmdoption
202
203    Describes a Python command line option or switch.  Option argument names
204    should be enclosed in angle brackets.  Example::
205
206       .. cmdoption:: -m <module>
207
208          Run a module as a script.
209
210 .. describe:: envvar
211
212    Describes an environment variable that Python uses or defines.
213
214
215 There is also a generic version of these directives:
216
217 .. describe:: describe
218
219    This directive produces the same formatting as the specific ones explained
220    above but does not create index entries or cross-referencing targets.  It is
221    used, for example, to describe the directives in this document. Example::
222
223       .. describe:: opcode
224
225          Describes a Python bytecode instruction.
226
227
228 Showing code examples
229 ---------------------
230
231 Examples of Python source code or interactive sessions are represented using
232 standard reST literal blocks.  They are started by a ``::`` at the end of the
233 preceding paragraph and delimited by indentation.
234
235 Representing an interactive session requires including the prompts and output
236 along with the Python code.  No special markup is required for interactive
237 sessions.  After the last line of input or output presented, there should not be
238 an "unused" primary prompt; this is an example of what *not* to do::
239
240    >>> 1 + 1
241    2
242    >>>
243
244 Syntax highlighting is handled in a smart way:
245
246 * There is a "highlighting language" for each source file.  Per default,
247   this is ``'python'`` as the majority of files will have to highlight Python
248   snippets.
249
250 * Within Python highlighting mode, interactive sessions are recognized
251   automatically and highlighted appropriately.
252
253 * The highlighting language can be changed using the ``highlightlang``
254   directive, used as follows::
255
256      .. highlightlang:: c
257
258   This language is used until the next ``highlightlang`` directive is
259   encountered.
260
261 * The values normally used for the highlighting language are:
262
263   * ``python`` (the default)
264   * ``c``
265   * ``rest``
266   * ``none`` (no highlighting)
267
268 * If highlighting with the current language fails, the block is not highlighted
269   in any way.
270
271 Longer displays of verbatim text may be included by storing the example text in
272 an external file containing only plain text.  The file may be included using the
273 ``literalinclude`` directive. [1]_ For example, to include the Python source file
274 :file:`example.py`, use::
275
276    .. literalinclude:: example.py
277
278 The file name is relative to the current file's path.  Documentation-specific
279 include files should be placed in the ``Doc/includes`` subdirectory.
280
281
282 Inline markup
283 -------------
284
285 As said before, Sphinx uses interpreted text roles to insert semantic markup in
286 documents.
287
288 Names of local variables, such as function/method arguments, are an exception,
289 they should be marked simply with ``*var*``.
290
291 For all other roles, you have to write ``:rolename:`content```.
292
293 There are some additional facilities that make cross-referencing roles more
294 versatile:
295
296 * You may supply an explicit title and reference target, like in reST direct
297   hyperlinks: ``:role:`title <target>``` will refer to *target*, but the link
298   text will be *title*.
299
300 * If you prefix the content with ``!``, no reference/hyperlink will be created.
301
302 * For the Python object roles, if you prefix the content with ``~``, the link
303   text will only be the last component of the target.  For example,
304   ``:meth:`~Queue.Queue.get``` will refer to ``Queue.Queue.get`` but only
305   display ``get`` as the link text.
306
307   In HTML output, the link's ``title`` attribute (that is e.g. shown as a
308   tool-tip on mouse-hover) will always be the full target name.
309
310 The following roles refer to objects in modules and are possibly hyperlinked if
311 a matching identifier is found:
312
313 .. describe:: mod
314
315    The name of a module; a dotted name may be used.  This should also be used for
316    package names.
317
318 .. describe:: func
319
320    The name of a Python function; dotted names may be used.  The role text
321    should not include trailing parentheses to enhance readability.  The
322    parentheses are stripped when searching for identifiers.
323
324 .. describe:: data
325
326    The name of a module-level variable or constant.
327
328 .. describe:: const
329
330    The name of a "defined" constant.  This may be a C-language ``#define``
331    or a Python variable that is not intended to be changed.
332
333 .. describe:: class
334
335    A class name; a dotted name may be used.
336
337 .. describe:: meth
338
339    The name of a method of an object.  The role text should include the type
340    name and the method name.  A dotted name may be used.
341
342 .. describe:: attr
343
344    The name of a data attribute of an object.
345
346 .. describe:: exc
347
348    The name of an exception. A dotted name may be used.
349
350 The name enclosed in this markup can include a module name and/or a class name.
351 For example, ``:func:`filter``` could refer to a function named ``filter`` in
352 the current module, or the built-in function of that name.  In contrast,
353 ``:func:`foo.filter``` clearly refers to the ``filter`` function in the ``foo``
354 module.
355
356 Normally, names in these roles are searched first without any further
357 qualification, then with the current module name prepended, then with the
358 current module and class name (if any) prepended.  If you prefix the name with a
359 dot, this order is reversed.  For example, in the documentation of the
360 :mod:`codecs` module, ``:func:`open``` always refers to the built-in function,
361 while ``:func:`.open``` refers to :func:`codecs.open`.
362
363 A similar heuristic is used to determine whether the name is an attribute of
364 the currently documented class.
365
366 The following roles create cross-references to C-language constructs if they
367 are defined in the API documentation:
368
369 .. describe:: cdata
370
371    The name of a C-language variable.
372
373 .. describe:: cfunc
374
375    The name of a C-language function. Should include trailing parentheses.
376
377 .. describe:: cmacro
378
379    The name of a "simple" C macro, as defined above.
380
381 .. describe:: ctype
382
383    The name of a C-language type.
384
385
386 The following role does possibly create a cross-reference, but does not refer
387 to objects:
388
389 .. describe:: token
390
391    The name of a grammar token (used in the reference manual to create links
392    between production displays).
393
394
395 The following role creates a cross-reference to the term in the glossary:
396
397 .. describe:: term
398
399    Reference to a term in the glossary.  The glossary is created using the
400    ``glossary`` directive containing a definition list with terms and
401    definitions.  It does not have to be in the same file as the ``term``
402    markup, in fact, by default the Python docs have one global glossary
403    in the ``glossary.rst`` file.
404
405    If you use a term that's not explained in a glossary, you'll get a warning
406    during build.
407
408 ---------
409
410 The following roles don't do anything special except formatting the text
411 in a different style:
412
413 .. describe:: command
414
415    The name of an OS-level command, such as ``rm``.
416
417 .. describe:: dfn
418
419    Mark the defining instance of a term in the text.  (No index entries are
420    generated.)
421
422 .. describe:: envvar
423
424    An environment variable.  Index entries are generated.
425
426 .. describe:: file
427
428    The name of a file or directory.  Within the contents, you can use curly
429    braces to indicate a "variable" part, for example::
430
431       ... is installed in :file:`/usr/lib/python2.{x}/site-packages` ...
432
433    In the built documentation, the ``x`` will be displayed differently to
434    indicate that it is to be replaced by the Python minor version.
435
436 .. describe:: guilabel
437
438    Labels presented as part of an interactive user interface should be marked
439    using ``guilabel``.  This includes labels from text-based interfaces such as
440    those created using :mod:`curses` or other text-based libraries.  Any label
441    used in the interface should be marked with this role, including button
442    labels, window titles, field names, menu and menu selection names, and even
443    values in selection lists.
444
445 .. describe:: kbd
446
447    Mark a sequence of keystrokes.  What form the key sequence takes may depend
448    on platform- or application-specific conventions.  When there are no relevant
449    conventions, the names of modifier keys should be spelled out, to improve
450    accessibility for new users and non-native speakers.  For example, an
451    *xemacs* key sequence may be marked like ``:kbd:`C-x C-f```, but without
452    reference to a specific application or platform, the same sequence should be
453    marked as ``:kbd:`Control-x Control-f```.
454
455 .. describe:: keyword
456
457    The name of a keyword in Python.
458
459 .. describe:: mailheader
460
461    The name of an RFC 822-style mail header.  This markup does not imply that
462    the header is being used in an email message, but can be used to refer to any
463    header of the same "style."  This is also used for headers defined by the
464    various MIME specifications.  The header name should be entered in the same
465    way it would normally be found in practice, with the camel-casing conventions
466    being preferred where there is more than one common usage. For example:
467    ``:mailheader:`Content-Type```.
468
469 .. describe:: makevar
470
471    The name of a :command:`make` variable.
472
473 .. describe:: manpage
474
475    A reference to a Unix manual page including the section,
476    e.g. ``:manpage:`ls(1)```.
477
478 .. describe:: menuselection
479
480    Menu selections should be marked using the ``menuselection`` role.  This is
481    used to mark a complete sequence of menu selections, including selecting
482    submenus and choosing a specific operation, or any subsequence of such a
483    sequence.  The names of individual selections should be separated by
484    ``-->``.
485
486    For example, to mark the selection "Start > Programs", use this markup::
487
488       :menuselection:`Start --> Programs`
489
490    When including a selection that includes some trailing indicator, such as the
491    ellipsis some operating systems use to indicate that the command opens a
492    dialog, the indicator should be omitted from the selection name.
493
494 .. describe:: mimetype
495
496    The name of a MIME type, or a component of a MIME type (the major or minor
497    portion, taken alone).
498
499 .. describe:: newsgroup
500
501    The name of a Usenet newsgroup.
502
503 .. describe:: option
504
505    A command-line option of Python.  The leading hyphen(s) must be included.
506    If a matching ``cmdoption`` directive exists, it is linked to.  For options
507    of other programs or scripts, use simple ````code```` markup.
508
509 .. describe:: program
510
511    The name of an executable program.  This may differ from the file name for
512    the executable for some platforms.  In particular, the ``.exe`` (or other)
513    extension should be omitted for Windows programs.
514
515 .. describe:: regexp
516
517    A regular expression. Quotes should not be included.
518
519 .. describe:: samp
520
521    A piece of literal text, such as code.  Within the contents, you can use
522    curly braces to indicate a "variable" part, as in ``:file:``.
523
524    If you don't need the "variable part" indication, use the standard
525    ````code```` instead.
526
527
528 The following roles generate external links:
529
530 .. describe:: pep
531
532    A reference to a Python Enhancement Proposal.  This generates appropriate
533    index entries. The text "PEP *number*\ " is generated; in the HTML output,
534    this text is a hyperlink to an online copy of the specified PEP.
535
536 .. describe:: rfc
537
538    A reference to an Internet Request for Comments.  This generates appropriate
539    index entries. The text "RFC *number*\ " is generated; in the HTML output,
540    this text is a hyperlink to an online copy of the specified RFC.
541
542
543 Note that there are no special roles for including hyperlinks as you can use
544 the standard reST markup for that purpose.
545
546
547 .. _doc-ref-role:
548
549 Cross-linking markup
550 --------------------
551
552 To support cross-referencing to arbitrary sections in the documentation, the
553 standard reST labels are "abused" a bit: Every label must precede a section
554 title; and every label name must be unique throughout the entire documentation
555 source.
556
557 You can then reference to these sections using the ``:ref:`label-name``` role.
558
559 Example::
560
561    .. _my-reference-label:
562
563    Section to cross-reference
564    --------------------------
565
566    This is the text of the section.
567
568    It refers to the section itself, see :ref:`my-reference-label`.
569
570 The ``:ref:`` invocation is replaced with the section title.
571
572
573 Paragraph-level markup
574 ----------------------
575
576 These directives create short paragraphs and can be used inside information
577 units as well as normal text:
578
579 .. describe:: note
580
581    An especially important bit of information about an API that a user should be
582    aware of when using whatever bit of API the note pertains to.  The content of
583    the directive should be written in complete sentences and include all
584    appropriate punctuation.
585
586    Example::
587
588       .. note::
589
590          This function is not suitable for sending spam e-mails.
591
592 .. describe:: warning
593
594    An important bit of information about an API that a user should be aware of
595    when using whatever bit of API the warning pertains to.  The content of the
596    directive should be written in complete sentences and include all appropriate
597    punctuation.  In the interest of not scaring users away from pages filled
598    with warnings, this directive should only be chosen over ``note`` for
599    information regarding the possibility of crashes, data loss, or security
600    implications.
601
602 .. describe:: versionadded
603
604    This directive documents the version of Python which added the described
605    feature to the library or C API. When this applies to an entire module, it
606    should be placed at the top of the module section before any prose.
607
608    The first argument must be given and is the version in question; you can add
609    a second argument consisting of a *brief* explanation of the change.
610
611    Example::
612
613       .. versionadded:: 2.5
614          The *spam* parameter.
615
616    Note that there must be no blank line between the directive head and the
617    explanation; this is to make these blocks visually continuous in the markup.
618
619 .. describe:: versionchanged
620
621    Similar to ``versionadded``, but describes when and what changed in the named
622    feature in some way (new parameters, changed side effects, etc.).
623
624 --------------
625
626 .. describe:: impl-detail
627
628    This directive is used to mark CPython-specific information.  Use either with
629    a block content or a single sentence as an argument, i.e. either ::
630
631       .. impl-detail::
632
633          This describes some implementation detail.
634
635          More explanation.
636
637    or ::
638
639       .. impl-detail:: This shortly mentions an implementation detail.
640
641    "\ **CPython implementation detail:**\ " is automatically prepended to the
642    content.
643
644 .. describe:: seealso
645
646    Many sections include a list of references to module documentation or
647    external documents.  These lists are created using the ``seealso`` directive.
648
649    The ``seealso`` directive is typically placed in a section just before any
650    sub-sections.  For the HTML output, it is shown boxed off from the main flow
651    of the text.
652
653    The content of the ``seealso`` directive should be a reST definition list.
654    Example::
655
656       .. seealso::
657
658          Module :mod:`zipfile`
659             Documentation of the :mod:`zipfile` standard module.
660
661          `GNU tar manual, Basic Tar Format <http://link>`_
662             Documentation for tar archive files, including GNU tar extensions.
663
664 .. describe:: rubric
665
666    This directive creates a paragraph heading that is not used to create a
667    table of contents node.  It is currently used for the "Footnotes" caption.
668
669 .. describe:: centered
670
671    This directive creates a centered boldfaced paragraph.  Use it as follows::
672
673       .. centered::
674
675          Paragraph contents.
676
677
678 Table-of-contents markup
679 ------------------------
680
681 Since reST does not have facilities to interconnect several documents, or split
682 documents into multiple output files, Sphinx uses a custom directive to add
683 relations between the single files the documentation is made of, as well as
684 tables of contents.  The ``toctree`` directive is the central element.
685
686 .. describe:: toctree
687
688    This directive inserts a "TOC tree" at the current location, using the
689    individual TOCs (including "sub-TOC trees") of the files given in the
690    directive body.  A numeric ``maxdepth`` option may be given to indicate the
691    depth of the tree; by default, all levels are included.
692
693    Consider this example (taken from the library reference index)::
694
695       .. toctree::
696          :maxdepth: 2
697
698          intro
699          strings
700          datatypes
701          numeric
702          (many more files listed here)
703
704    This accomplishes two things:
705
706    * Tables of contents from all those files are inserted, with a maximum depth
707      of two, that means one nested heading.  ``toctree`` directives in those
708      files are also taken into account.
709    * Sphinx knows that the relative order of the files ``intro``,
710      ``strings`` and so forth, and it knows that they are children of the
711      shown file, the library index.  From this information it generates "next
712      chapter", "previous chapter" and "parent chapter" links.
713
714    In the end, all files included in the build process must occur in one
715    ``toctree`` directive; Sphinx will emit a warning if it finds a file that is
716    not included, because that means that this file will not be reachable through
717    standard navigation.
718
719    The special file ``contents.rst`` at the root of the source directory is the
720    "root" of the TOC tree hierarchy; from it the "Contents" page is generated.
721
722
723 Index-generating markup
724 -----------------------
725
726 Sphinx automatically creates index entries from all information units (like
727 functions, classes or attributes) like discussed before.
728
729 However, there is also an explicit directive available, to make the index more
730 comprehensive and enable index entries in documents where information is not
731 mainly contained in information units, such as the language reference.
732
733 The directive is ``index`` and contains one or more index entries.  Each entry
734 consists of a type and a value, separated by a colon.
735
736 For example::
737
738    .. index::
739       single: execution; context
740       module: __main__
741       module: sys
742       triple: module; search; path
743
744 This directive contains five entries, which will be converted to entries in the
745 generated index which link to the exact location of the index statement (or, in
746 case of offline media, the corresponding page number).
747
748 The possible entry types are:
749
750 single
751    Creates a single index entry.  Can be made a subentry by separating the
752    subentry text with a semicolon (this notation is also used below to describe
753    what entries are created).
754 pair
755    ``pair: loop; statement`` is a shortcut that creates two index entries,
756    namely ``loop; statement`` and ``statement; loop``.
757 triple
758    Likewise, ``triple: module; search; path`` is a shortcut that creates three
759    index entries, which are ``module; search path``, ``search; path, module`` and
760    ``path; module search``.
761 module, keyword, operator, object, exception, statement, builtin
762    These all create two index entries.  For example, ``module: hashlib`` creates
763    the entries ``module; hashlib`` and ``hashlib; module``.
764
765 For index directives containing only "single" entries, there is a shorthand
766 notation::
767
768    .. index:: BNF, grammar, syntax, notation
769
770 This creates four index entries.
771
772
773 Grammar production displays
774 ---------------------------
775
776 Special markup is available for displaying the productions of a formal grammar.
777 The markup is simple and does not attempt to model all aspects of BNF (or any
778 derived forms), but provides enough to allow context-free grammars to be
779 displayed in a way that causes uses of a symbol to be rendered as hyperlinks to
780 the definition of the symbol.  There is this directive:
781
782 .. describe:: productionlist
783
784    This directive is used to enclose a group of productions.  Each production is
785    given on a single line and consists of a name, separated by a colon from the
786    following definition.  If the definition spans multiple lines, each
787    continuation line must begin with a colon placed at the same column as in the
788    first line.
789
790    Blank lines are not allowed within ``productionlist`` directive arguments.
791
792    The definition can contain token names which are marked as interpreted text
793    (e.g. ``unaryneg ::= "-" `integer```) -- this generates cross-references
794    to the productions of these tokens.
795
796    Note that no further reST parsing is done in the production, so that you
797    don't have to escape ``*`` or ``|`` characters.
798
799
800 .. XXX describe optional first parameter
801
802 The following is an example taken from the Python Reference Manual::
803
804    .. productionlist::
805       try_stmt: try1_stmt | try2_stmt
806       try1_stmt: "try" ":" `suite`
807                : ("except" [`expression` ["," `target`]] ":" `suite`)+
808                : ["else" ":" `suite`]
809                : ["finally" ":" `suite`]
810       try2_stmt: "try" ":" `suite`
811                : "finally" ":" `suite`
812
813
814 Substitutions
815 -------------
816
817 The documentation system provides three substitutions that are defined by default.
818 They are set in the build configuration file :file:`conf.py`.
819
820 .. describe:: |release|
821
822    Replaced by the Python release the documentation refers to.  This is the full
823    version string including alpha/beta/release candidate tags, e.g. ``2.5.2b3``.
824
825 .. describe:: |version|
826
827    Replaced by the Python version the documentation refers to. This consists
828    only of the major and minor version parts, e.g. ``2.5``, even for version
829    2.5.1.
830
831 .. describe:: |today|
832
833    Replaced by either today's date, or the date set in the build configuration
834    file.  Normally has the format ``April 14, 2007``.
835
836
837 .. rubric:: Footnotes
838
839 .. [1] There is a standard ``.. include`` directive, but it raises errors if the
840        file is not found.  This one only emits a warning.