Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 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 | |
Benjamin Peterson | f608c61 | 2008-11-16 18:33:53 +0000 | [diff] [blame] | 11 | .. note:: |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 12 | |
Benjamin Peterson | f608c61 | 2008-11-16 18:33:53 +0000 | [diff] [blame] | 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>`_. |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 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 | |
Brett Cannon | df50106 | 2009-01-20 02:09:18 +0000 | [diff] [blame] | 56 | 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 Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 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 | |
Guido van Rossum | da27fd2 | 2007-08-17 00:24:54 +0000 | [diff] [blame] | 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 | |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 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 | |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 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 | |
Georg Brandl | 8a1caa2 | 2010-07-29 16:01:11 +0000 | [diff] [blame] | 180 | .. 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 Brandl | bfc8fe4 | 2010-08-02 12:54:24 +0000 | [diff] [blame] | 208 | 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 Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 211 | .. 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 |
| 220 | changed directly. |
| 221 | |
| 222 | .. describe:: method |
| 223 | |
| 224 | Describes an object method. The parameters should not include the ``self`` |
| 225 | parameter. The description should include similar information to that |
| 226 | described for ``function``. |
| 227 | |
Georg Brandl | 8a1caa2 | 2010-07-29 16:01:11 +0000 | [diff] [blame] | 228 | .. describe:: decoratormethod |
| 229 | |
| 230 | Same as ``decorator``, but for decorators that are methods. |
| 231 | |
Georg Brandl | bfc8fe4 | 2010-08-02 12:54:24 +0000 | [diff] [blame] | 232 | Refer to a decorator method using the ``:meth:`` role. |
| 233 | |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 234 | .. describe:: opcode |
| 235 | |
Georg Brandl | 9afde1c | 2007-11-01 20:32:30 +0000 | [diff] [blame] | 236 | Describes a Python :term:`bytecode` instruction. |
| 237 | |
| 238 | .. describe:: cmdoption |
| 239 | |
Georg Brandl | f5ae1ef | 2010-07-26 21:12:13 +0000 | [diff] [blame] | 240 | Describes a Python command line option or switch. Option argument names |
| 241 | should be enclosed in angle brackets. Example:: |
Georg Brandl | 9afde1c | 2007-11-01 20:32:30 +0000 | [diff] [blame] | 242 | |
| 243 | .. cmdoption:: -m <module> |
| 244 | |
| 245 | Run a module as a script. |
| 246 | |
| 247 | .. describe:: envvar |
| 248 | |
| 249 | Describes an environment variable that Python uses or defines. |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 250 | |
| 251 | |
| 252 | There is also a generic version of these directives: |
| 253 | |
| 254 | .. describe:: describe |
| 255 | |
| 256 | This directive produces the same formatting as the specific ones explained |
| 257 | above but does not create index entries or cross-referencing targets. It is |
| 258 | used, for example, to describe the directives in this document. Example:: |
| 259 | |
| 260 | .. describe:: opcode |
| 261 | |
| 262 | Describes a Python bytecode instruction. |
| 263 | |
| 264 | |
| 265 | Showing code examples |
| 266 | --------------------- |
| 267 | |
| 268 | Examples of Python source code or interactive sessions are represented using |
| 269 | standard reST literal blocks. They are started by a ``::`` at the end of the |
| 270 | preceding paragraph and delimited by indentation. |
| 271 | |
| 272 | Representing an interactive session requires including the prompts and output |
| 273 | along with the Python code. No special markup is required for interactive |
| 274 | sessions. After the last line of input or output presented, there should not be |
| 275 | an "unused" primary prompt; this is an example of what *not* to do:: |
| 276 | |
| 277 | >>> 1 + 1 |
| 278 | 2 |
| 279 | >>> |
| 280 | |
| 281 | Syntax highlighting is handled in a smart way: |
| 282 | |
| 283 | * There is a "highlighting language" for each source file. Per default, |
| 284 | this is ``'python'`` as the majority of files will have to highlight Python |
| 285 | snippets. |
| 286 | |
| 287 | * Within Python highlighting mode, interactive sessions are recognized |
| 288 | automatically and highlighted appropriately. |
| 289 | |
| 290 | * The highlighting language can be changed using the ``highlightlang`` |
| 291 | directive, used as follows:: |
| 292 | |
| 293 | .. highlightlang:: c |
| 294 | |
| 295 | This language is used until the next ``highlightlang`` directive is |
| 296 | encountered. |
| 297 | |
Benjamin Peterson | f608c61 | 2008-11-16 18:33:53 +0000 | [diff] [blame] | 298 | * The values normally used for the highlighting language are: |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 299 | |
| 300 | * ``python`` (the default) |
| 301 | * ``c`` |
| 302 | * ``rest`` |
| 303 | * ``none`` (no highlighting) |
| 304 | |
| 305 | * If highlighting with the current language fails, the block is not highlighted |
| 306 | in any way. |
| 307 | |
| 308 | Longer displays of verbatim text may be included by storing the example text in |
| 309 | an external file containing only plain text. The file may be included using the |
| 310 | ``literalinclude`` directive. [1]_ For example, to include the Python source file |
| 311 | :file:`example.py`, use:: |
| 312 | |
| 313 | .. literalinclude:: example.py |
| 314 | |
| 315 | The file name is relative to the current file's path. Documentation-specific |
| 316 | include files should be placed in the ``Doc/includes`` subdirectory. |
| 317 | |
| 318 | |
| 319 | Inline markup |
| 320 | ------------- |
| 321 | |
| 322 | As said before, Sphinx uses interpreted text roles to insert semantic markup in |
| 323 | documents. |
| 324 | |
Benjamin Peterson | aa06900 | 2009-01-23 03:26:36 +0000 | [diff] [blame] | 325 | Names of local variables, such as function/method arguments, are an exception, |
| 326 | they should be marked simply with ``*var*``. |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 327 | |
| 328 | For all other roles, you have to write ``:rolename:`content```. |
| 329 | |
Benjamin Peterson | c4bbc8d | 2009-01-30 03:39:35 +0000 | [diff] [blame] | 330 | There are some additional facilities that make cross-referencing roles more |
| 331 | versatile: |
Guido van Rossum | f10aa98 | 2007-08-17 18:30:38 +0000 | [diff] [blame] | 332 | |
Benjamin Peterson | c4bbc8d | 2009-01-30 03:39:35 +0000 | [diff] [blame] | 333 | * You may supply an explicit title and reference target, like in reST direct |
| 334 | hyperlinks: ``:role:`title <target>``` will refer to *target*, but the link |
| 335 | text will be *title*. |
| 336 | |
| 337 | * If you prefix the content with ``!``, no reference/hyperlink will be created. |
| 338 | |
| 339 | * For the Python object roles, if you prefix the content with ``~``, the link |
| 340 | text will only be the last component of the target. For example, |
| 341 | ``:meth:`~Queue.Queue.get``` will refer to ``Queue.Queue.get`` but only |
| 342 | display ``get`` as the link text. |
| 343 | |
| 344 | In HTML output, the link's ``title`` attribute (that is e.g. shown as a |
| 345 | tool-tip on mouse-hover) will always be the full target name. |
Guido van Rossum | f10aa98 | 2007-08-17 18:30:38 +0000 | [diff] [blame] | 346 | |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 347 | The following roles refer to objects in modules and are possibly hyperlinked if |
| 348 | a matching identifier is found: |
| 349 | |
| 350 | .. describe:: mod |
| 351 | |
| 352 | The name of a module; a dotted name may be used. This should also be used for |
| 353 | package names. |
| 354 | |
| 355 | .. describe:: func |
| 356 | |
| 357 | The name of a Python function; dotted names may be used. The role text |
Christian Heimes | a342c01 | 2008-04-20 21:01:16 +0000 | [diff] [blame] | 358 | should not include trailing parentheses to enhance readability. The |
| 359 | parentheses are stripped when searching for identifiers. |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 360 | |
| 361 | .. describe:: data |
| 362 | |
Benjamin Peterson | aa06900 | 2009-01-23 03:26:36 +0000 | [diff] [blame] | 363 | The name of a module-level variable or constant. |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 364 | |
| 365 | .. describe:: const |
| 366 | |
| 367 | The name of a "defined" constant. This may be a C-language ``#define`` |
| 368 | or a Python variable that is not intended to be changed. |
| 369 | |
| 370 | .. describe:: class |
| 371 | |
| 372 | A class name; a dotted name may be used. |
| 373 | |
| 374 | .. describe:: meth |
| 375 | |
| 376 | The name of a method of an object. The role text should include the type |
Christian Heimes | a342c01 | 2008-04-20 21:01:16 +0000 | [diff] [blame] | 377 | name and the method name. A dotted name may be used. |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 378 | |
| 379 | .. describe:: attr |
| 380 | |
| 381 | The name of a data attribute of an object. |
| 382 | |
| 383 | .. describe:: exc |
| 384 | |
| 385 | The name of an exception. A dotted name may be used. |
| 386 | |
| 387 | The name enclosed in this markup can include a module name and/or a class name. |
| 388 | For example, ``:func:`filter``` could refer to a function named ``filter`` in |
| 389 | the current module, or the built-in function of that name. In contrast, |
| 390 | ``:func:`foo.filter``` clearly refers to the ``filter`` function in the ``foo`` |
| 391 | module. |
| 392 | |
Guido van Rossum | da27fd2 | 2007-08-17 00:24:54 +0000 | [diff] [blame] | 393 | Normally, names in these roles are searched first without any further |
| 394 | qualification, then with the current module name prepended, then with the |
| 395 | current module and class name (if any) prepended. If you prefix the name with a |
| 396 | dot, this order is reversed. For example, in the documentation of the |
| 397 | :mod:`codecs` module, ``:func:`open``` always refers to the built-in function, |
| 398 | while ``:func:`.open``` refers to :func:`codecs.open`. |
| 399 | |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 400 | A similar heuristic is used to determine whether the name is an attribute of |
| 401 | the currently documented class. |
| 402 | |
| 403 | The following roles create cross-references to C-language constructs if they |
| 404 | are defined in the API documentation: |
| 405 | |
| 406 | .. describe:: cdata |
| 407 | |
| 408 | The name of a C-language variable. |
| 409 | |
| 410 | .. describe:: cfunc |
| 411 | |
| 412 | The name of a C-language function. Should include trailing parentheses. |
| 413 | |
| 414 | .. describe:: cmacro |
| 415 | |
| 416 | The name of a "simple" C macro, as defined above. |
| 417 | |
| 418 | .. describe:: ctype |
| 419 | |
| 420 | The name of a C-language type. |
| 421 | |
| 422 | |
| 423 | The following role does possibly create a cross-reference, but does not refer |
| 424 | to objects: |
| 425 | |
| 426 | .. describe:: token |
| 427 | |
| 428 | The name of a grammar token (used in the reference manual to create links |
| 429 | between production displays). |
| 430 | |
Guido van Rossum | f10aa98 | 2007-08-17 18:30:38 +0000 | [diff] [blame] | 431 | |
| 432 | The following role creates a cross-reference to the term in the glossary: |
| 433 | |
| 434 | .. describe:: term |
| 435 | |
| 436 | Reference to a term in the glossary. The glossary is created using the |
| 437 | ``glossary`` directive containing a definition list with terms and |
| 438 | definitions. It does not have to be in the same file as the ``term`` |
| 439 | markup, in fact, by default the Python docs have one global glossary |
| 440 | in the ``glossary.rst`` file. |
| 441 | |
| 442 | If you use a term that's not explained in a glossary, you'll get a warning |
| 443 | during build. |
| 444 | |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 445 | --------- |
| 446 | |
| 447 | The following roles don't do anything special except formatting the text |
| 448 | in a different style: |
| 449 | |
| 450 | .. describe:: command |
| 451 | |
| 452 | The name of an OS-level command, such as ``rm``. |
| 453 | |
| 454 | .. describe:: dfn |
| 455 | |
| 456 | Mark the defining instance of a term in the text. (No index entries are |
| 457 | generated.) |
| 458 | |
| 459 | .. describe:: envvar |
| 460 | |
| 461 | An environment variable. Index entries are generated. |
| 462 | |
| 463 | .. describe:: file |
| 464 | |
| 465 | The name of a file or directory. Within the contents, you can use curly |
| 466 | braces to indicate a "variable" part, for example:: |
| 467 | |
| 468 | ... is installed in :file:`/usr/lib/python2.{x}/site-packages` ... |
| 469 | |
| 470 | In the built documentation, the ``x`` will be displayed differently to |
| 471 | indicate that it is to be replaced by the Python minor version. |
| 472 | |
| 473 | .. describe:: guilabel |
| 474 | |
| 475 | Labels presented as part of an interactive user interface should be marked |
| 476 | using ``guilabel``. This includes labels from text-based interfaces such as |
| 477 | those created using :mod:`curses` or other text-based libraries. Any label |
| 478 | used in the interface should be marked with this role, including button |
| 479 | labels, window titles, field names, menu and menu selection names, and even |
| 480 | values in selection lists. |
| 481 | |
| 482 | .. describe:: kbd |
| 483 | |
| 484 | Mark a sequence of keystrokes. What form the key sequence takes may depend |
| 485 | on platform- or application-specific conventions. When there are no relevant |
| 486 | conventions, the names of modifier keys should be spelled out, to improve |
| 487 | accessibility for new users and non-native speakers. For example, an |
| 488 | *xemacs* key sequence may be marked like ``:kbd:`C-x C-f```, but without |
| 489 | reference to a specific application or platform, the same sequence should be |
| 490 | marked as ``:kbd:`Control-x Control-f```. |
| 491 | |
| 492 | .. describe:: keyword |
| 493 | |
Christian Heimes | 5b5e81c | 2007-12-31 16:14:33 +0000 | [diff] [blame] | 494 | The name of a keyword in Python. |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 495 | |
| 496 | .. describe:: mailheader |
| 497 | |
| 498 | The name of an RFC 822-style mail header. This markup does not imply that |
| 499 | the header is being used in an email message, but can be used to refer to any |
| 500 | header of the same "style." This is also used for headers defined by the |
| 501 | various MIME specifications. The header name should be entered in the same |
| 502 | way it would normally be found in practice, with the camel-casing conventions |
| 503 | being preferred where there is more than one common usage. For example: |
| 504 | ``:mailheader:`Content-Type```. |
| 505 | |
| 506 | .. describe:: makevar |
| 507 | |
| 508 | The name of a :command:`make` variable. |
| 509 | |
| 510 | .. describe:: manpage |
| 511 | |
| 512 | A reference to a Unix manual page including the section, |
| 513 | e.g. ``:manpage:`ls(1)```. |
| 514 | |
| 515 | .. describe:: menuselection |
| 516 | |
| 517 | Menu selections should be marked using the ``menuselection`` role. This is |
| 518 | used to mark a complete sequence of menu selections, including selecting |
| 519 | submenus and choosing a specific operation, or any subsequence of such a |
| 520 | sequence. The names of individual selections should be separated by |
| 521 | ``-->``. |
| 522 | |
| 523 | For example, to mark the selection "Start > Programs", use this markup:: |
| 524 | |
| 525 | :menuselection:`Start --> Programs` |
| 526 | |
| 527 | When including a selection that includes some trailing indicator, such as the |
| 528 | ellipsis some operating systems use to indicate that the command opens a |
| 529 | dialog, the indicator should be omitted from the selection name. |
| 530 | |
| 531 | .. describe:: mimetype |
| 532 | |
| 533 | The name of a MIME type, or a component of a MIME type (the major or minor |
| 534 | portion, taken alone). |
| 535 | |
| 536 | .. describe:: newsgroup |
| 537 | |
| 538 | The name of a Usenet newsgroup. |
| 539 | |
| 540 | .. describe:: option |
| 541 | |
Georg Brandl | a5ed401 | 2010-07-19 06:57:52 +0000 | [diff] [blame] | 542 | A command-line option of Python. The leading hyphen(s) must be included. |
| 543 | If a matching ``cmdoption`` directive exists, it is linked to. For options |
| 544 | of other programs or scripts, use simple ````code```` markup. |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 545 | |
| 546 | .. describe:: program |
| 547 | |
| 548 | The name of an executable program. This may differ from the file name for |
| 549 | the executable for some platforms. In particular, the ``.exe`` (or other) |
| 550 | extension should be omitted for Windows programs. |
| 551 | |
| 552 | .. describe:: regexp |
| 553 | |
| 554 | A regular expression. Quotes should not be included. |
| 555 | |
| 556 | .. describe:: samp |
| 557 | |
| 558 | A piece of literal text, such as code. Within the contents, you can use |
| 559 | curly braces to indicate a "variable" part, as in ``:file:``. |
| 560 | |
| 561 | If you don't need the "variable part" indication, use the standard |
Georg Brandl | 48310cd | 2009-01-03 21:18:54 +0000 | [diff] [blame] | 562 | ````code```` instead. |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 563 | |
| 564 | .. describe:: var |
| 565 | |
| 566 | A Python or C variable or parameter name. |
| 567 | |
| 568 | |
| 569 | The following roles generate external links: |
| 570 | |
| 571 | .. describe:: pep |
| 572 | |
| 573 | A reference to a Python Enhancement Proposal. This generates appropriate |
| 574 | index entries. The text "PEP *number*\ " is generated; in the HTML output, |
| 575 | this text is a hyperlink to an online copy of the specified PEP. |
| 576 | |
| 577 | .. describe:: rfc |
| 578 | |
| 579 | A reference to an Internet Request for Comments. This generates appropriate |
| 580 | index entries. The text "RFC *number*\ " is generated; in the HTML output, |
| 581 | this text is a hyperlink to an online copy of the specified RFC. |
| 582 | |
| 583 | |
| 584 | Note that there are no special roles for including hyperlinks as you can use |
| 585 | the standard reST markup for that purpose. |
| 586 | |
| 587 | |
| 588 | .. _doc-ref-role: |
| 589 | |
| 590 | Cross-linking markup |
| 591 | -------------------- |
| 592 | |
| 593 | To support cross-referencing to arbitrary sections in the documentation, the |
| 594 | standard reST labels are "abused" a bit: Every label must precede a section |
| 595 | title; and every label name must be unique throughout the entire documentation |
| 596 | source. |
| 597 | |
| 598 | You can then reference to these sections using the ``:ref:`label-name``` role. |
| 599 | |
| 600 | Example:: |
| 601 | |
| 602 | .. _my-reference-label: |
| 603 | |
| 604 | Section to cross-reference |
| 605 | -------------------------- |
| 606 | |
| 607 | This is the text of the section. |
| 608 | |
| 609 | It refers to the section itself, see :ref:`my-reference-label`. |
| 610 | |
| 611 | The ``:ref:`` invocation is replaced with the section title. |
| 612 | |
| 613 | |
| 614 | Paragraph-level markup |
| 615 | ---------------------- |
| 616 | |
| 617 | These directives create short paragraphs and can be used inside information |
| 618 | units as well as normal text: |
| 619 | |
| 620 | .. describe:: note |
| 621 | |
| 622 | An especially important bit of information about an API that a user should be |
| 623 | aware of when using whatever bit of API the note pertains to. The content of |
| 624 | the directive should be written in complete sentences and include all |
| 625 | appropriate punctuation. |
| 626 | |
| 627 | Example:: |
| 628 | |
| 629 | .. note:: |
| 630 | |
| 631 | This function is not suitable for sending spam e-mails. |
| 632 | |
| 633 | .. describe:: warning |
| 634 | |
Georg Brandl | e720c0a | 2009-04-27 16:20:50 +0000 | [diff] [blame] | 635 | An important bit of information about an API that a user should be aware of |
| 636 | when using whatever bit of API the warning pertains to. The content of the |
| 637 | directive should be written in complete sentences and include all appropriate |
Benjamin Peterson | 4ac9ce4 | 2009-10-04 14:49:41 +0000 | [diff] [blame] | 638 | punctuation. In the interest of not scaring users away from pages filled |
| 639 | with warnings, this directive should only be chosen over ``note`` for |
| 640 | information regarding the possibility of crashes, data loss, or security |
| 641 | implications. |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 642 | |
| 643 | .. describe:: versionadded |
| 644 | |
| 645 | This directive documents the version of Python which added the described |
| 646 | feature to the library or C API. When this applies to an entire module, it |
| 647 | should be placed at the top of the module section before any prose. |
| 648 | |
| 649 | The first argument must be given and is the version in question; you can add |
| 650 | a second argument consisting of a *brief* explanation of the change. |
| 651 | |
| 652 | Example:: |
| 653 | |
Georg Brandl | 277a150 | 2009-01-04 00:28:14 +0000 | [diff] [blame] | 654 | .. versionadded:: 3.1 |
Georg Brandl | 36ab1ef | 2009-01-03 21:17:04 +0000 | [diff] [blame] | 655 | The *spam* parameter. |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 656 | |
| 657 | Note that there must be no blank line between the directive head and the |
| 658 | explanation; this is to make these blocks visually continuous in the markup. |
| 659 | |
| 660 | .. describe:: versionchanged |
| 661 | |
| 662 | Similar to ``versionadded``, but describes when and what changed in the named |
| 663 | feature in some way (new parameters, changed side effects, etc.). |
| 664 | |
| 665 | -------------- |
| 666 | |
Georg Brandl | 495f7b5 | 2009-10-27 15:28:25 +0000 | [diff] [blame] | 667 | .. describe:: impl-detail |
| 668 | |
| 669 | This directive is used to mark CPython-specific information. Use either with |
| 670 | a block content or a single sentence as an argument, i.e. either :: |
| 671 | |
| 672 | .. impl-detail:: |
| 673 | |
| 674 | This describes some implementation detail. |
| 675 | |
| 676 | More explanation. |
| 677 | |
| 678 | or :: |
| 679 | |
| 680 | .. impl-detail:: This shortly mentions an implementation detail. |
| 681 | |
| 682 | "\ **CPython implementation detail:**\ " is automatically prepended to the |
| 683 | content. |
| 684 | |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 685 | .. describe:: seealso |
| 686 | |
| 687 | Many sections include a list of references to module documentation or |
| 688 | external documents. These lists are created using the ``seealso`` directive. |
| 689 | |
| 690 | The ``seealso`` directive is typically placed in a section just before any |
| 691 | sub-sections. For the HTML output, it is shown boxed off from the main flow |
| 692 | of the text. |
| 693 | |
| 694 | The content of the ``seealso`` directive should be a reST definition list. |
| 695 | Example:: |
| 696 | |
| 697 | .. seealso:: |
| 698 | |
| 699 | Module :mod:`zipfile` |
| 700 | Documentation of the :mod:`zipfile` standard module. |
| 701 | |
| 702 | `GNU tar manual, Basic Tar Format <http://link>`_ |
| 703 | Documentation for tar archive files, including GNU tar extensions. |
| 704 | |
| 705 | .. describe:: rubric |
| 706 | |
| 707 | This directive creates a paragraph heading that is not used to create a |
| 708 | table of contents node. It is currently used for the "Footnotes" caption. |
| 709 | |
| 710 | .. describe:: centered |
| 711 | |
| 712 | This directive creates a centered boldfaced paragraph. Use it as follows:: |
| 713 | |
| 714 | .. centered:: |
| 715 | |
| 716 | Paragraph contents. |
| 717 | |
| 718 | |
| 719 | Table-of-contents markup |
| 720 | ------------------------ |
| 721 | |
| 722 | Since reST does not have facilities to interconnect several documents, or split |
| 723 | documents into multiple output files, Sphinx uses a custom directive to add |
| 724 | relations between the single files the documentation is made of, as well as |
| 725 | tables of contents. The ``toctree`` directive is the central element. |
| 726 | |
| 727 | .. describe:: toctree |
| 728 | |
| 729 | This directive inserts a "TOC tree" at the current location, using the |
| 730 | individual TOCs (including "sub-TOC trees") of the files given in the |
| 731 | directive body. A numeric ``maxdepth`` option may be given to indicate the |
| 732 | depth of the tree; by default, all levels are included. |
| 733 | |
| 734 | Consider this example (taken from the library reference index):: |
| 735 | |
| 736 | .. toctree:: |
| 737 | :maxdepth: 2 |
| 738 | |
Benjamin Peterson | d7c3ed5 | 2010-06-27 22:32:30 +0000 | [diff] [blame] | 739 | intro |
| 740 | strings |
| 741 | datatypes |
| 742 | numeric |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 743 | (many more files listed here) |
| 744 | |
| 745 | This accomplishes two things: |
| 746 | |
| 747 | * Tables of contents from all those files are inserted, with a maximum depth |
| 748 | of two, that means one nested heading. ``toctree`` directives in those |
| 749 | files are also taken into account. |
Benjamin Peterson | d7c3ed5 | 2010-06-27 22:32:30 +0000 | [diff] [blame] | 750 | * Sphinx knows that the relative order of the files ``intro``, |
| 751 | ``strings`` and so forth, and it knows that they are children of the |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 752 | shown file, the library index. From this information it generates "next |
| 753 | chapter", "previous chapter" and "parent chapter" links. |
| 754 | |
| 755 | In the end, all files included in the build process must occur in one |
| 756 | ``toctree`` directive; Sphinx will emit a warning if it finds a file that is |
| 757 | not included, because that means that this file will not be reachable through |
| 758 | standard navigation. |
| 759 | |
| 760 | The special file ``contents.rst`` at the root of the source directory is the |
| 761 | "root" of the TOC tree hierarchy; from it the "Contents" page is generated. |
| 762 | |
| 763 | |
| 764 | Index-generating markup |
| 765 | ----------------------- |
| 766 | |
| 767 | Sphinx automatically creates index entries from all information units (like |
| 768 | functions, classes or attributes) like discussed before. |
| 769 | |
| 770 | However, there is also an explicit directive available, to make the index more |
| 771 | comprehensive and enable index entries in documents where information is not |
| 772 | mainly contained in information units, such as the language reference. |
| 773 | |
| 774 | The directive is ``index`` and contains one or more index entries. Each entry |
| 775 | consists of a type and a value, separated by a colon. |
| 776 | |
| 777 | For example:: |
| 778 | |
| 779 | .. index:: |
Thomas Wouters | 89d996e | 2007-09-08 17:39:28 +0000 | [diff] [blame] | 780 | single: execution; context |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 781 | module: __main__ |
| 782 | module: sys |
| 783 | triple: module; search; path |
| 784 | |
| 785 | This directive contains five entries, which will be converted to entries in the |
| 786 | generated index which link to the exact location of the index statement (or, in |
| 787 | case of offline media, the corresponding page number). |
| 788 | |
| 789 | The possible entry types are: |
| 790 | |
| 791 | single |
| 792 | Creates a single index entry. Can be made a subentry by separating the |
Thomas Wouters | 89d996e | 2007-09-08 17:39:28 +0000 | [diff] [blame] | 793 | subentry text with a semicolon (this notation is also used below to describe |
| 794 | what entries are created). |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 795 | pair |
| 796 | ``pair: loop; statement`` is a shortcut that creates two index entries, |
| 797 | namely ``loop; statement`` and ``statement; loop``. |
| 798 | triple |
| 799 | Likewise, ``triple: module; search; path`` is a shortcut that creates three |
| 800 | index entries, which are ``module; search path``, ``search; path, module`` and |
| 801 | ``path; module search``. |
| 802 | module, keyword, operator, object, exception, statement, builtin |
| 803 | These all create two index entries. For example, ``module: hashlib`` creates |
| 804 | the entries ``module; hashlib`` and ``hashlib; module``. |
| 805 | |
Thomas Wouters | 89d996e | 2007-09-08 17:39:28 +0000 | [diff] [blame] | 806 | For index directives containing only "single" entries, there is a shorthand |
| 807 | notation:: |
| 808 | |
| 809 | .. index:: BNF, grammar, syntax, notation |
| 810 | |
| 811 | This creates four index entries. |
| 812 | |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 813 | |
| 814 | Grammar production displays |
| 815 | --------------------------- |
| 816 | |
| 817 | Special markup is available for displaying the productions of a formal grammar. |
| 818 | The markup is simple and does not attempt to model all aspects of BNF (or any |
| 819 | derived forms), but provides enough to allow context-free grammars to be |
| 820 | displayed in a way that causes uses of a symbol to be rendered as hyperlinks to |
| 821 | the definition of the symbol. There is this directive: |
| 822 | |
| 823 | .. describe:: productionlist |
| 824 | |
| 825 | This directive is used to enclose a group of productions. Each production is |
| 826 | given on a single line and consists of a name, separated by a colon from the |
| 827 | following definition. If the definition spans multiple lines, each |
| 828 | continuation line must begin with a colon placed at the same column as in the |
| 829 | first line. |
| 830 | |
| 831 | Blank lines are not allowed within ``productionlist`` directive arguments. |
| 832 | |
| 833 | The definition can contain token names which are marked as interpreted text |
Georg Brandl | 36ab1ef | 2009-01-03 21:17:04 +0000 | [diff] [blame] | 834 | (e.g. ``unaryneg ::= "-" `integer```) -- this generates cross-references |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 835 | to the productions of these tokens. |
| 836 | |
| 837 | Note that no further reST parsing is done in the production, so that you |
| 838 | don't have to escape ``*`` or ``|`` characters. |
| 839 | |
| 840 | |
Georg Brandl | 48310cd | 2009-01-03 21:18:54 +0000 | [diff] [blame] | 841 | .. XXX describe optional first parameter |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 842 | |
| 843 | The following is an example taken from the Python Reference Manual:: |
| 844 | |
| 845 | .. productionlist:: |
| 846 | try_stmt: try1_stmt | try2_stmt |
| 847 | try1_stmt: "try" ":" `suite` |
| 848 | : ("except" [`expression` ["," `target`]] ":" `suite`)+ |
| 849 | : ["else" ":" `suite`] |
| 850 | : ["finally" ":" `suite`] |
| 851 | try2_stmt: "try" ":" `suite` |
| 852 | : "finally" ":" `suite` |
| 853 | |
| 854 | |
| 855 | Substitutions |
| 856 | ------------- |
| 857 | |
| 858 | The documentation system provides three substitutions that are defined by default. |
Benjamin Peterson | f608c61 | 2008-11-16 18:33:53 +0000 | [diff] [blame] | 859 | They are set in the build configuration file :file:`conf.py`. |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 860 | |
| 861 | .. describe:: |release| |
| 862 | |
| 863 | Replaced by the Python release the documentation refers to. This is the full |
| 864 | version string including alpha/beta/release candidate tags, e.g. ``2.5.2b3``. |
| 865 | |
| 866 | .. describe:: |version| |
| 867 | |
| 868 | Replaced by the Python version the documentation refers to. This consists |
| 869 | only of the major and minor version parts, e.g. ``2.5``, even for version |
| 870 | 2.5.1. |
| 871 | |
| 872 | .. describe:: |today| |
| 873 | |
| 874 | Replaced by either today's date, or the date set in the build configuration |
| 875 | file. Normally has the format ``April 14, 2007``. |
| 876 | |
| 877 | |
| 878 | .. rubric:: Footnotes |
| 879 | |
| 880 | .. [1] There is a standard ``.. include`` directive, but it raises errors if the |
| 881 | file is not found. This one only emits a warning. |