blob: 57d9eeba14723cc9eadccd965f054cab2566be2b [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +00001.. highlightlang:: rest
2
3Additional Markup Constructs
4============================
5
6Sphinx adds a lot of new directives and interpreted text roles to standard reST
7markup. This section contains the reference material for these facilities.
8Documentation for "standard" reST constructs is not included here, though
9they are used in the Python documentation.
10
Benjamin Petersonf608c612008-11-16 18:33:53 +000011.. note::
Georg Brandl116aa622007-08-15 14:28:22 +000012
Benjamin Petersonf608c612008-11-16 18:33:53 +000013 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>`_.
Georg Brandl116aa622007-08-15 14:28:22 +000016
17
18Meta-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
34Module-specific markup
35----------------------
36
37The markup described in this section is used to provide information about a
38module being documented. Each module should be documented in its own file.
39Normally this markup appears after the title heading of that file; a typical
40file 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
51As you can see, the module-specific markup consists of two directives, the
52``module`` directive and the ``moduleauthor`` directive.
53
54.. describe:: module
55
Brett Cannondf501062009-01-20 02:09:18 +000056 This directive marks the beginning of the description of a module, package,
57 or submodule. The name should be fully qualified (i.e. including the
58 package name for submodules).
Georg Brandl116aa622007-08-15 14:28:22 +000059
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
Guido van Rossumda27fd22007-08-17 00:24:54 +000069 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
Georg Brandl116aa622007-08-15 14:28:22 +000072.. 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
Georg Brandl116aa622007-08-15 14:28:22 +000078.. 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
85Information units
86-----------------
87
88There are a number of directives used to describe specific features provided by
89modules. Each directive requires one or more signatures to provide basic
90information about what is being described, and the content should be the
91description. The basic version makes entries in the general index; if no index
92entry is desired, you can give the directive option flag ``:noindex:``. The
93following 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
101The signatures of object methods or data attributes should always include the
102type name (``.. method:: FileInput.input(...)``), even if it is obvious from the
103context which type they belong to; this is to enable consistent
104cross-references. If you describe methods belonging to an abstract protocol,
105such as "context managers", include a (pseudo-)type name too to make the
106index entries more informative.
107
108The directives are:
109
Georg Brandl60203b42010-10-06 10:11:56 +0000110.. describe:: c:function
Georg Brandl116aa622007-08-15 14:28:22 +0000111
112 Describes a C function. The signature should be given as in C, e.g.::
113
Georg Brandl60203b42010-10-06 10:11:56 +0000114 .. c:function:: PyObject* PyType_GenericAlloc(PyTypeObject *type, Py_ssize_t nitems)
Georg Brandl116aa622007-08-15 14:28:22 +0000115
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
Georg Brandl60203b42010-10-06 10:11:56 +0000122.. describe:: c:member
Georg Brandl116aa622007-08-15 14:28:22 +0000123
124 Describes a C struct member. Example signature::
125
Georg Brandl60203b42010-10-06 10:11:56 +0000126 .. c:member:: PyObject* PyTypeObject.tp_bases
Georg Brandl116aa622007-08-15 14:28:22 +0000127
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
Georg Brandl60203b42010-10-06 10:11:56 +0000132.. describe:: c:macro
Georg Brandl116aa622007-08-15 14:28:22 +0000133
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
Georg Brandl60203b42010-10-06 10:11:56 +0000137 of its use in the Python documentation include :c:macro:`PyObject_HEAD` and
138 :c:macro:`Py_BEGIN_ALLOW_THREADS`.
Georg Brandl116aa622007-08-15 14:28:22 +0000139
Georg Brandl60203b42010-10-06 10:11:56 +0000140.. describe:: c:type
Georg Brandl116aa622007-08-15 14:28:22 +0000141
142 Describes a C type. The signature should just be the type name.
143
Georg Brandl60203b42010-10-06 10:11:56 +0000144.. describe:: c:var
Georg Brandl116aa622007-08-15 14:28:22 +0000145
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
Éric Araujoa0b3c322011-04-16 23:47:53 +0200155 using this directive.
Georg Brandl116aa622007-08-15 14:28:22 +0000156
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
Éric Araujoa0b3c322011-04-16 23:47:53 +0200168 .. function:: repeat([repeat=3[, number=1000000]])
Georg Brandl116aa622007-08-15 14:28:22 +0000169
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
Georg Brandl8a1caa22010-07-29 16:01:11 +0000180.. describe:: decorator
181
182 Describes a decorator function. The signature should *not* represent the
183 signature of the actual function, but the usage as a decorator. For example,
184 given the functions
185
186 .. code-block:: python
187
188 def removename(func):
189 func.__name__ = ''
190 return func
191
192 def setnewname(name):
193 def decorator(func):
194 func.__name__ = name
195 return func
196 return decorator
197
198 the descriptions should look like this::
199
200 .. decorator:: removename
201
202 Remove name of the decorated function.
203
204 .. decorator:: setnewname(name)
205
206 Set name of the decorated function to *name*.
207
Georg Brandlbfc8fe42010-08-02 12:54:24 +0000208 There is no ``deco`` role to link to a decorator that is marked up with
209 this directive; rather, use the ``:func:`` role.
210
Georg Brandl116aa622007-08-15 14:28:22 +0000211.. describe:: class
212
213 Describes a class. The signature can include parentheses with parameters
214 which will be shown as the constructor arguments.
215
216.. describe:: attribute
217
218 Describes an object data attribute. The description should include
219 information about the type of the data to be expected and whether it may be
Éric Araujoa0b3c322011-04-16 23:47:53 +0200220 changed directly. This directive should be nested in a class directive,
221 like in this example::
222
223 .. class:: Spam
224
225 Description of the class.
226
227 .. data:: ham
228
229 Description of the attribute.
230
231 If is also possible to document an attribute outside of a class directive,
232 for example if the documentation for different attributes and methods is
233 split in multiple sections. The class name should then be included
234 explicitly::
235
236 .. data:: Spam.eggs
Georg Brandl116aa622007-08-15 14:28:22 +0000237
238.. describe:: method
239
240 Describes an object method. The parameters should not include the ``self``
241 parameter. The description should include similar information to that
Éric Araujo3bba57d2011-05-01 02:14:48 +0200242 described for ``function``. This directive should be nested in a class
243 directive, like in the example above.
Georg Brandl116aa622007-08-15 14:28:22 +0000244
Georg Brandl8a1caa22010-07-29 16:01:11 +0000245.. describe:: decoratormethod
246
247 Same as ``decorator``, but for decorators that are methods.
248
Georg Brandlbfc8fe42010-08-02 12:54:24 +0000249 Refer to a decorator method using the ``:meth:`` role.
250
Georg Brandl116aa622007-08-15 14:28:22 +0000251.. describe:: opcode
252
Georg Brandl9afde1c2007-11-01 20:32:30 +0000253 Describes a Python :term:`bytecode` instruction.
254
255.. describe:: cmdoption
256
Georg Brandlf5ae1ef2010-07-26 21:12:13 +0000257 Describes a Python command line option or switch. Option argument names
258 should be enclosed in angle brackets. Example::
Georg Brandl9afde1c2007-11-01 20:32:30 +0000259
260 .. cmdoption:: -m <module>
261
262 Run a module as a script.
263
264.. describe:: envvar
265
266 Describes an environment variable that Python uses or defines.
Georg Brandl116aa622007-08-15 14:28:22 +0000267
268
269There is also a generic version of these directives:
270
271.. describe:: describe
272
273 This directive produces the same formatting as the specific ones explained
274 above but does not create index entries or cross-referencing targets. It is
275 used, for example, to describe the directives in this document. Example::
276
277 .. describe:: opcode
278
279 Describes a Python bytecode instruction.
280
281
282Showing code examples
283---------------------
284
285Examples of Python source code or interactive sessions are represented using
286standard reST literal blocks. They are started by a ``::`` at the end of the
287preceding paragraph and delimited by indentation.
288
289Representing an interactive session requires including the prompts and output
290along with the Python code. No special markup is required for interactive
291sessions. After the last line of input or output presented, there should not be
292an "unused" primary prompt; this is an example of what *not* to do::
293
294 >>> 1 + 1
295 2
296 >>>
297
298Syntax highlighting is handled in a smart way:
299
300* There is a "highlighting language" for each source file. Per default,
301 this is ``'python'`` as the majority of files will have to highlight Python
302 snippets.
303
304* Within Python highlighting mode, interactive sessions are recognized
305 automatically and highlighted appropriately.
306
307* The highlighting language can be changed using the ``highlightlang``
308 directive, used as follows::
309
310 .. highlightlang:: c
311
312 This language is used until the next ``highlightlang`` directive is
313 encountered.
314
Benjamin Petersonf608c612008-11-16 18:33:53 +0000315* The values normally used for the highlighting language are:
Georg Brandl116aa622007-08-15 14:28:22 +0000316
317 * ``python`` (the default)
318 * ``c``
319 * ``rest``
320 * ``none`` (no highlighting)
321
322* If highlighting with the current language fails, the block is not highlighted
323 in any way.
324
325Longer displays of verbatim text may be included by storing the example text in
326an external file containing only plain text. The file may be included using the
327``literalinclude`` directive. [1]_ For example, to include the Python source file
328:file:`example.py`, use::
329
330 .. literalinclude:: example.py
331
332The file name is relative to the current file's path. Documentation-specific
333include files should be placed in the ``Doc/includes`` subdirectory.
334
335
336Inline markup
337-------------
338
339As said before, Sphinx uses interpreted text roles to insert semantic markup in
340documents.
341
Benjamin Petersonaa069002009-01-23 03:26:36 +0000342Names of local variables, such as function/method arguments, are an exception,
343they should be marked simply with ``*var*``.
Georg Brandl116aa622007-08-15 14:28:22 +0000344
345For all other roles, you have to write ``:rolename:`content```.
346
Benjamin Petersonc4bbc8d2009-01-30 03:39:35 +0000347There are some additional facilities that make cross-referencing roles more
348versatile:
Guido van Rossumf10aa982007-08-17 18:30:38 +0000349
Benjamin Petersonc4bbc8d2009-01-30 03:39:35 +0000350* You may supply an explicit title and reference target, like in reST direct
351 hyperlinks: ``:role:`title <target>``` will refer to *target*, but the link
352 text will be *title*.
353
354* If you prefix the content with ``!``, no reference/hyperlink will be created.
355
356* For the Python object roles, if you prefix the content with ``~``, the link
357 text will only be the last component of the target. For example,
358 ``:meth:`~Queue.Queue.get``` will refer to ``Queue.Queue.get`` but only
359 display ``get`` as the link text.
360
361 In HTML output, the link's ``title`` attribute (that is e.g. shown as a
362 tool-tip on mouse-hover) will always be the full target name.
Guido van Rossumf10aa982007-08-17 18:30:38 +0000363
Georg Brandl116aa622007-08-15 14:28:22 +0000364The following roles refer to objects in modules and are possibly hyperlinked if
365a matching identifier is found:
366
367.. describe:: mod
368
369 The name of a module; a dotted name may be used. This should also be used for
370 package names.
371
372.. describe:: func
373
374 The name of a Python function; dotted names may be used. The role text
Christian Heimesa342c012008-04-20 21:01:16 +0000375 should not include trailing parentheses to enhance readability. The
376 parentheses are stripped when searching for identifiers.
Georg Brandl116aa622007-08-15 14:28:22 +0000377
378.. describe:: data
379
Benjamin Petersonaa069002009-01-23 03:26:36 +0000380 The name of a module-level variable or constant.
Georg Brandl116aa622007-08-15 14:28:22 +0000381
382.. describe:: const
383
384 The name of a "defined" constant. This may be a C-language ``#define``
385 or a Python variable that is not intended to be changed.
386
387.. describe:: class
388
389 A class name; a dotted name may be used.
390
391.. describe:: meth
392
393 The name of a method of an object. The role text should include the type
Christian Heimesa342c012008-04-20 21:01:16 +0000394 name and the method name. A dotted name may be used.
Georg Brandl116aa622007-08-15 14:28:22 +0000395
396.. describe:: attr
397
398 The name of a data attribute of an object.
399
400.. describe:: exc
401
402 The name of an exception. A dotted name may be used.
403
404The name enclosed in this markup can include a module name and/or a class name.
405For example, ``:func:`filter``` could refer to a function named ``filter`` in
406the current module, or the built-in function of that name. In contrast,
407``:func:`foo.filter``` clearly refers to the ``filter`` function in the ``foo``
408module.
409
Guido van Rossumda27fd22007-08-17 00:24:54 +0000410Normally, names in these roles are searched first without any further
411qualification, then with the current module name prepended, then with the
412current module and class name (if any) prepended. If you prefix the name with a
413dot, this order is reversed. For example, in the documentation of the
414:mod:`codecs` module, ``:func:`open``` always refers to the built-in function,
415while ``:func:`.open``` refers to :func:`codecs.open`.
416
Georg Brandl116aa622007-08-15 14:28:22 +0000417A similar heuristic is used to determine whether the name is an attribute of
418the currently documented class.
419
420The following roles create cross-references to C-language constructs if they
421are defined in the API documentation:
422
Georg Brandl60203b42010-10-06 10:11:56 +0000423.. describe:: c:data
Georg Brandl116aa622007-08-15 14:28:22 +0000424
425 The name of a C-language variable.
426
Georg Brandl60203b42010-10-06 10:11:56 +0000427.. describe:: c:func
Georg Brandl116aa622007-08-15 14:28:22 +0000428
429 The name of a C-language function. Should include trailing parentheses.
430
Georg Brandl60203b42010-10-06 10:11:56 +0000431.. describe:: c:macro
Georg Brandl116aa622007-08-15 14:28:22 +0000432
433 The name of a "simple" C macro, as defined above.
434
Georg Brandl60203b42010-10-06 10:11:56 +0000435.. describe:: c:type
Georg Brandl116aa622007-08-15 14:28:22 +0000436
437 The name of a C-language type.
438
Georg Brandl60203b42010-10-06 10:11:56 +0000439.. describe:: c:member
440
441 The name of a C type member, as defined above.
442
Georg Brandl116aa622007-08-15 14:28:22 +0000443
444The following role does possibly create a cross-reference, but does not refer
445to objects:
446
447.. describe:: token
448
449 The name of a grammar token (used in the reference manual to create links
450 between production displays).
451
Guido van Rossumf10aa982007-08-17 18:30:38 +0000452
453The following role creates a cross-reference to the term in the glossary:
454
455.. describe:: term
456
457 Reference to a term in the glossary. The glossary is created using the
458 ``glossary`` directive containing a definition list with terms and
459 definitions. It does not have to be in the same file as the ``term``
460 markup, in fact, by default the Python docs have one global glossary
461 in the ``glossary.rst`` file.
462
463 If you use a term that's not explained in a glossary, you'll get a warning
464 during build.
465
Georg Brandl116aa622007-08-15 14:28:22 +0000466---------
467
468The following roles don't do anything special except formatting the text
469in a different style:
470
471.. describe:: command
472
473 The name of an OS-level command, such as ``rm``.
474
475.. describe:: dfn
476
477 Mark the defining instance of a term in the text. (No index entries are
478 generated.)
479
480.. describe:: envvar
481
482 An environment variable. Index entries are generated.
483
484.. describe:: file
485
486 The name of a file or directory. Within the contents, you can use curly
487 braces to indicate a "variable" part, for example::
488
489 ... is installed in :file:`/usr/lib/python2.{x}/site-packages` ...
490
491 In the built documentation, the ``x`` will be displayed differently to
492 indicate that it is to be replaced by the Python minor version.
493
494.. describe:: guilabel
495
496 Labels presented as part of an interactive user interface should be marked
497 using ``guilabel``. This includes labels from text-based interfaces such as
498 those created using :mod:`curses` or other text-based libraries. Any label
499 used in the interface should be marked with this role, including button
500 labels, window titles, field names, menu and menu selection names, and even
501 values in selection lists.
502
503.. describe:: kbd
504
505 Mark a sequence of keystrokes. What form the key sequence takes may depend
506 on platform- or application-specific conventions. When there are no relevant
507 conventions, the names of modifier keys should be spelled out, to improve
508 accessibility for new users and non-native speakers. For example, an
509 *xemacs* key sequence may be marked like ``:kbd:`C-x C-f```, but without
510 reference to a specific application or platform, the same sequence should be
511 marked as ``:kbd:`Control-x Control-f```.
512
513.. describe:: keyword
514
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000515 The name of a keyword in Python.
Georg Brandl116aa622007-08-15 14:28:22 +0000516
517.. describe:: mailheader
518
519 The name of an RFC 822-style mail header. This markup does not imply that
520 the header is being used in an email message, but can be used to refer to any
521 header of the same "style." This is also used for headers defined by the
522 various MIME specifications. The header name should be entered in the same
523 way it would normally be found in practice, with the camel-casing conventions
524 being preferred where there is more than one common usage. For example:
525 ``:mailheader:`Content-Type```.
526
527.. describe:: makevar
528
529 The name of a :command:`make` variable.
530
531.. describe:: manpage
532
533 A reference to a Unix manual page including the section,
534 e.g. ``:manpage:`ls(1)```.
535
536.. describe:: menuselection
537
538 Menu selections should be marked using the ``menuselection`` role. This is
539 used to mark a complete sequence of menu selections, including selecting
540 submenus and choosing a specific operation, or any subsequence of such a
541 sequence. The names of individual selections should be separated by
542 ``-->``.
543
544 For example, to mark the selection "Start > Programs", use this markup::
545
546 :menuselection:`Start --> Programs`
547
548 When including a selection that includes some trailing indicator, such as the
549 ellipsis some operating systems use to indicate that the command opens a
550 dialog, the indicator should be omitted from the selection name.
551
552.. describe:: mimetype
553
554 The name of a MIME type, or a component of a MIME type (the major or minor
555 portion, taken alone).
556
557.. describe:: newsgroup
558
559 The name of a Usenet newsgroup.
560
561.. describe:: option
562
Georg Brandla5ed4012010-07-19 06:57:52 +0000563 A command-line option of Python. The leading hyphen(s) must be included.
564 If a matching ``cmdoption`` directive exists, it is linked to. For options
565 of other programs or scripts, use simple ````code```` markup.
Georg Brandl116aa622007-08-15 14:28:22 +0000566
567.. describe:: program
568
569 The name of an executable program. This may differ from the file name for
570 the executable for some platforms. In particular, the ``.exe`` (or other)
571 extension should be omitted for Windows programs.
572
573.. describe:: regexp
574
575 A regular expression. Quotes should not be included.
576
577.. describe:: samp
578
579 A piece of literal text, such as code. Within the contents, you can use
580 curly braces to indicate a "variable" part, as in ``:file:``.
581
582 If you don't need the "variable part" indication, use the standard
Georg Brandl48310cd2009-01-03 21:18:54 +0000583 ````code```` instead.
Georg Brandl116aa622007-08-15 14:28:22 +0000584
Georg Brandl116aa622007-08-15 14:28:22 +0000585
586The following roles generate external links:
587
588.. describe:: pep
589
590 A reference to a Python Enhancement Proposal. This generates appropriate
591 index entries. The text "PEP *number*\ " is generated; in the HTML output,
592 this text is a hyperlink to an online copy of the specified PEP.
593
594.. describe:: rfc
595
596 A reference to an Internet Request for Comments. This generates appropriate
597 index entries. The text "RFC *number*\ " is generated; in the HTML output,
598 this text is a hyperlink to an online copy of the specified RFC.
599
600
601Note that there are no special roles for including hyperlinks as you can use
602the standard reST markup for that purpose.
603
604
605.. _doc-ref-role:
606
607Cross-linking markup
608--------------------
609
610To support cross-referencing to arbitrary sections in the documentation, the
611standard reST labels are "abused" a bit: Every label must precede a section
612title; and every label name must be unique throughout the entire documentation
613source.
614
615You can then reference to these sections using the ``:ref:`label-name``` role.
616
617Example::
618
619 .. _my-reference-label:
620
621 Section to cross-reference
622 --------------------------
623
624 This is the text of the section.
625
626 It refers to the section itself, see :ref:`my-reference-label`.
627
628The ``:ref:`` invocation is replaced with the section title.
629
Raymond Hettingercfee0e82010-12-21 20:52:12 +0000630Alternatively, you can reference any label (not just section titles)
Georg Brandl23e924f2011-01-15 17:05:20 +0000631if you provide the link text ``:ref:`link text <reference-label>```.
Georg Brandl116aa622007-08-15 14:28:22 +0000632
633Paragraph-level markup
634----------------------
635
636These directives create short paragraphs and can be used inside information
637units as well as normal text:
638
639.. describe:: note
640
641 An especially important bit of information about an API that a user should be
642 aware of when using whatever bit of API the note pertains to. The content of
643 the directive should be written in complete sentences and include all
644 appropriate punctuation.
645
646 Example::
647
648 .. note::
649
650 This function is not suitable for sending spam e-mails.
651
652.. describe:: warning
653
Georg Brandle720c0a2009-04-27 16:20:50 +0000654 An important bit of information about an API that a user should be aware of
655 when using whatever bit of API the warning pertains to. The content of the
656 directive should be written in complete sentences and include all appropriate
Benjamin Peterson4ac9ce42009-10-04 14:49:41 +0000657 punctuation. In the interest of not scaring users away from pages filled
658 with warnings, this directive should only be chosen over ``note`` for
659 information regarding the possibility of crashes, data loss, or security
660 implications.
Georg Brandl116aa622007-08-15 14:28:22 +0000661
662.. describe:: versionadded
663
664 This directive documents the version of Python which added the described
665 feature to the library or C API. When this applies to an entire module, it
666 should be placed at the top of the module section before any prose.
667
668 The first argument must be given and is the version in question; you can add
669 a second argument consisting of a *brief* explanation of the change.
670
671 Example::
672
Georg Brandl277a1502009-01-04 00:28:14 +0000673 .. versionadded:: 3.1
Georg Brandl36ab1ef2009-01-03 21:17:04 +0000674 The *spam* parameter.
Georg Brandl116aa622007-08-15 14:28:22 +0000675
676 Note that there must be no blank line between the directive head and the
677 explanation; this is to make these blocks visually continuous in the markup.
678
679.. describe:: versionchanged
680
681 Similar to ``versionadded``, but describes when and what changed in the named
682 feature in some way (new parameters, changed side effects, etc.).
683
684--------------
685
Georg Brandl495f7b52009-10-27 15:28:25 +0000686.. describe:: impl-detail
687
688 This directive is used to mark CPython-specific information. Use either with
689 a block content or a single sentence as an argument, i.e. either ::
690
691 .. impl-detail::
692
693 This describes some implementation detail.
694
695 More explanation.
696
697 or ::
698
699 .. impl-detail:: This shortly mentions an implementation detail.
700
701 "\ **CPython implementation detail:**\ " is automatically prepended to the
702 content.
703
Georg Brandl116aa622007-08-15 14:28:22 +0000704.. describe:: seealso
705
706 Many sections include a list of references to module documentation or
707 external documents. These lists are created using the ``seealso`` directive.
708
709 The ``seealso`` directive is typically placed in a section just before any
710 sub-sections. For the HTML output, it is shown boxed off from the main flow
711 of the text.
712
713 The content of the ``seealso`` directive should be a reST definition list.
714 Example::
715
716 .. seealso::
717
718 Module :mod:`zipfile`
719 Documentation of the :mod:`zipfile` standard module.
720
721 `GNU tar manual, Basic Tar Format <http://link>`_
722 Documentation for tar archive files, including GNU tar extensions.
723
724.. describe:: rubric
725
726 This directive creates a paragraph heading that is not used to create a
727 table of contents node. It is currently used for the "Footnotes" caption.
728
729.. describe:: centered
730
731 This directive creates a centered boldfaced paragraph. Use it as follows::
732
733 .. centered::
734
735 Paragraph contents.
736
737
738Table-of-contents markup
739------------------------
740
741Since reST does not have facilities to interconnect several documents, or split
742documents into multiple output files, Sphinx uses a custom directive to add
743relations between the single files the documentation is made of, as well as
744tables of contents. The ``toctree`` directive is the central element.
745
746.. describe:: toctree
747
748 This directive inserts a "TOC tree" at the current location, using the
749 individual TOCs (including "sub-TOC trees") of the files given in the
750 directive body. A numeric ``maxdepth`` option may be given to indicate the
751 depth of the tree; by default, all levels are included.
752
753 Consider this example (taken from the library reference index)::
754
755 .. toctree::
756 :maxdepth: 2
757
Benjamin Petersond7c3ed52010-06-27 22:32:30 +0000758 intro
759 strings
760 datatypes
761 numeric
Georg Brandl116aa622007-08-15 14:28:22 +0000762 (many more files listed here)
763
764 This accomplishes two things:
765
766 * Tables of contents from all those files are inserted, with a maximum depth
767 of two, that means one nested heading. ``toctree`` directives in those
768 files are also taken into account.
Benjamin Petersond7c3ed52010-06-27 22:32:30 +0000769 * Sphinx knows that the relative order of the files ``intro``,
770 ``strings`` and so forth, and it knows that they are children of the
Georg Brandl116aa622007-08-15 14:28:22 +0000771 shown file, the library index. From this information it generates "next
772 chapter", "previous chapter" and "parent chapter" links.
773
774 In the end, all files included in the build process must occur in one
775 ``toctree`` directive; Sphinx will emit a warning if it finds a file that is
776 not included, because that means that this file will not be reachable through
777 standard navigation.
778
779 The special file ``contents.rst`` at the root of the source directory is the
780 "root" of the TOC tree hierarchy; from it the "Contents" page is generated.
781
782
783Index-generating markup
784-----------------------
785
786Sphinx automatically creates index entries from all information units (like
787functions, classes or attributes) like discussed before.
788
789However, there is also an explicit directive available, to make the index more
790comprehensive and enable index entries in documents where information is not
791mainly contained in information units, such as the language reference.
792
793The directive is ``index`` and contains one or more index entries. Each entry
794consists of a type and a value, separated by a colon.
795
796For example::
797
798 .. index::
Thomas Wouters89d996e2007-09-08 17:39:28 +0000799 single: execution; context
Georg Brandl116aa622007-08-15 14:28:22 +0000800 module: __main__
801 module: sys
802 triple: module; search; path
803
804This directive contains five entries, which will be converted to entries in the
805generated index which link to the exact location of the index statement (or, in
806case of offline media, the corresponding page number).
807
808The possible entry types are:
809
810single
811 Creates a single index entry. Can be made a subentry by separating the
Thomas Wouters89d996e2007-09-08 17:39:28 +0000812 subentry text with a semicolon (this notation is also used below to describe
813 what entries are created).
Georg Brandl116aa622007-08-15 14:28:22 +0000814pair
815 ``pair: loop; statement`` is a shortcut that creates two index entries,
816 namely ``loop; statement`` and ``statement; loop``.
817triple
818 Likewise, ``triple: module; search; path`` is a shortcut that creates three
819 index entries, which are ``module; search path``, ``search; path, module`` and
820 ``path; module search``.
821module, keyword, operator, object, exception, statement, builtin
822 These all create two index entries. For example, ``module: hashlib`` creates
823 the entries ``module; hashlib`` and ``hashlib; module``.
824
Thomas Wouters89d996e2007-09-08 17:39:28 +0000825For index directives containing only "single" entries, there is a shorthand
826notation::
827
828 .. index:: BNF, grammar, syntax, notation
829
830This creates four index entries.
831
Georg Brandl116aa622007-08-15 14:28:22 +0000832
833Grammar production displays
834---------------------------
835
836Special markup is available for displaying the productions of a formal grammar.
837The markup is simple and does not attempt to model all aspects of BNF (or any
838derived forms), but provides enough to allow context-free grammars to be
839displayed in a way that causes uses of a symbol to be rendered as hyperlinks to
840the definition of the symbol. There is this directive:
841
842.. describe:: productionlist
843
844 This directive is used to enclose a group of productions. Each production is
845 given on a single line and consists of a name, separated by a colon from the
846 following definition. If the definition spans multiple lines, each
847 continuation line must begin with a colon placed at the same column as in the
848 first line.
849
850 Blank lines are not allowed within ``productionlist`` directive arguments.
851
852 The definition can contain token names which are marked as interpreted text
Georg Brandl36ab1ef2009-01-03 21:17:04 +0000853 (e.g. ``unaryneg ::= "-" `integer```) -- this generates cross-references
Georg Brandl116aa622007-08-15 14:28:22 +0000854 to the productions of these tokens.
855
856 Note that no further reST parsing is done in the production, so that you
857 don't have to escape ``*`` or ``|`` characters.
858
859
Georg Brandl48310cd2009-01-03 21:18:54 +0000860.. XXX describe optional first parameter
Georg Brandl116aa622007-08-15 14:28:22 +0000861
862The following is an example taken from the Python Reference Manual::
863
864 .. productionlist::
865 try_stmt: try1_stmt | try2_stmt
866 try1_stmt: "try" ":" `suite`
867 : ("except" [`expression` ["," `target`]] ":" `suite`)+
868 : ["else" ":" `suite`]
869 : ["finally" ":" `suite`]
870 try2_stmt: "try" ":" `suite`
871 : "finally" ":" `suite`
872
873
874Substitutions
875-------------
876
877The documentation system provides three substitutions that are defined by default.
Benjamin Petersonf608c612008-11-16 18:33:53 +0000878They are set in the build configuration file :file:`conf.py`.
Georg Brandl116aa622007-08-15 14:28:22 +0000879
880.. describe:: |release|
881
882 Replaced by the Python release the documentation refers to. This is the full
883 version string including alpha/beta/release candidate tags, e.g. ``2.5.2b3``.
884
885.. describe:: |version|
886
887 Replaced by the Python version the documentation refers to. This consists
888 only of the major and minor version parts, e.g. ``2.5``, even for version
889 2.5.1.
890
891.. describe:: |today|
892
893 Replaced by either today's date, or the date set in the build configuration
894 file. Normally has the format ``April 14, 2007``.
895
896
897.. rubric:: Footnotes
898
899.. [1] There is a standard ``.. include`` directive, but it raises errors if the
900 file is not found. This one only emits a warning.