blob: 2548cb0a6c576b7c13a127780b72410c06828377 [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +00001.. highlightlang:: rest
2
Alexander Belopolskyea3e91e2010-11-11 22:43:45 +00003Style guide
Georg Brandl116aa622007-08-15 14:28:22 +00004===========
5
6The Python documentation should follow the `Apple Publications Style Guide`_
7wherever possible. This particular style guide was selected mostly because it
8seems reasonable and is easy to get online.
9
Alexander Belopolskyea3e91e2010-11-11 22:43:45 +000010Topics which are either not covered in Apple's style guide or treated
11differently in Python documentation will be discussed in this
12document.
13
14Use of whitespace
15-----------------
Georg Brandl116aa622007-08-15 14:28:22 +000016
17All reST files use an indentation of 3 spaces. The maximum line length is 80
18characters for normal text, but tables, deeply indented code samples and long
19links may extend beyond that.
20
21Make generous use of blank lines where applicable; they help grouping things
22together.
23
24A sentence-ending period may be followed by one or two spaces; while reST
25ignores the second space, it is customarily put in by some users, for example
26to aid Emacs' auto-fill mode.
27
Alexander Belopolskyea3e91e2010-11-11 22:43:45 +000028Footnotes
29---------
30
Georg Brandl116aa622007-08-15 14:28:22 +000031Footnotes are generally discouraged, though they may be used when they are the
32best way to present specific information. When a footnote reference is added at
33the end of the sentence, it should follow the sentence-ending punctuation. The
34reST markup should appear something like this::
35
36 This sentence has a footnote reference. [#]_ This is the next sentence.
37
38Footnotes should be gathered at the end of a file, or if the file is very long,
39at the end of a section. The docutils will automatically create backlinks to
40the footnote reference.
41
42Footnotes may appear in the middle of sentences where appropriate.
43
Alexander Belopolskyea3e91e2010-11-11 22:43:45 +000044Capitalization
45--------------
46
47.. sidebar:: Sentence case
48
49 Sentence case is a set of capitalization rules used in English
50 sentences: the first word is always capitalized and other words are
51 only capitalized if there is a specific rule requiring it.
52
53Apple style guide recommends the use of title case in section titles.
54However, rules for which words should be capitalized in title case
55vary greaty between publications.
56
57In Python documentation, use of sentence case in section titles is
58preferable, but consistency within a unit is more important than
59following this rule. If you add a section to the chapter where most
60sections are in title case you can either convert all titles to
61sentence case or use the dominant style in the new section title.
62
63Sentences that start with a word for which specific rules require
64starting it with a lower case letter should be avoided in titles and
65elsewhere.
66
67.. note::
68
69 Sections that describe a library module often have titles in the
70 form of "modulename --- Short description of the module." In this
71 case, the description should be capitalized as a stand-alone
72 sentence.
73
Georg Brandl116aa622007-08-15 14:28:22 +000074Many special names are used in the Python documentation, including the names of
75operating systems, programming languages, standards bodies, and the like. Most
76of these entities are not assigned any special markup, but the preferred
77spellings are given here to aid authors in maintaining the consistency of
78presentation in the Python documentation.
79
80Other terms and words deserve special mention as well; these conventions should
81be used to ensure consistency throughout the documentation:
82
83CPU
Alexander Belopolskyea3e91e2010-11-11 22:43:45 +000084 For "central processing unit." Many style guides say this should be
85 spelled out on the first use (and if you must use it, do so!). For
86 the Python documentation, this abbreviation should be avoided since
87 there's no reasonable way to predict which occurrence will be the
88 first seen by the reader. It is better to use the word "processor"
89 instead.
Georg Brandl116aa622007-08-15 14:28:22 +000090
91POSIX
Alexander Belopolskyea3e91e2010-11-11 22:43:45 +000092 The name assigned to a particular group of standards. This is always
93 uppercase.
Georg Brandl116aa622007-08-15 14:28:22 +000094
95Python
Alexander Belopolskyea3e91e2010-11-11 22:43:45 +000096 The name of our favorite programming language is always capitalized.
97
98reST
99 For "reStructuredText," an easy to read, plaintext markup syntax
100 used to produce Python documentation. When spelled out, it is
101 always one word and both forms start with a lower case 'r'.
Georg Brandl116aa622007-08-15 14:28:22 +0000102
103Unicode
Alexander Belopolskyea3e91e2010-11-11 22:43:45 +0000104 The name of a character coding system. This is always written
105 capitalized.
Georg Brandl116aa622007-08-15 14:28:22 +0000106
107Unix
Alexander Belopolskyea3e91e2010-11-11 22:43:45 +0000108 The name of the operating system developed at AT&T Bell Labs in the early
109 1970s.
Georg Brandl116aa622007-08-15 14:28:22 +0000110
Raymond Hettingerbb1cf8d2011-05-10 00:35:03 -0700111Affirmative Tone
112----------------
113
114The documentation focuses on affirmatively stating what the language does and
115how to use it effectively.
116
117Except for certain security risks or segfault risks, the docs should avoid
118wording along the lines of "feature x is dangerous" or "experts only". These
119kinds of value judgments belong in external blogs and wikis, not in the core
120documentation.
121
122Bad example (creating worry in the mind of a reader):
123
124 Warning: failing to explicitly close a file could result in lost data or
125 excessive resource consumption. Never rely on reference counting to
126 automatically close a file.
127
128Good example (establishing confident knowledge in the effective use of the language):
129
130 A best practice for using files is use a try/finally pair to explicitly
131 close a file after it is used. Alternatively, using a with-statement can
132 achieve the same effect. This assures that files are flushed and file
133 descriptor resources are released in a timely manner.
134
135Economy of Expression
136---------------------
137
Éric Araujod4701f42011-05-25 18:13:29 +0200138More documentation is not necessarily better documentation. Err on the side
Raymond Hettingerbb1cf8d2011-05-10 00:35:03 -0700139of being succinct.
140
141It is an unfortunate fact that making documentation longer can be an impediment
142to understanding and can result in even more ways to misread or misinterpret the
143text. Long descriptions full of corner cases and caveats can create the
144impression that a function is more complex or harder to use than it actually is.
145
146The documentation for :func:`super` is an example of where a good deal of
147information was condensed into a few short paragraphs. Discussion of
148:func:`super` could have filled a chapter in a book, but it is often easier to
149grasp a terse description than a lengthy narrative.
150
151
152Code Examples
153-------------
154
155Short code examples can be a useful adjunct to understanding. Readers can often
156grasp a simple example more quickly than they can digest a formal description in
157prose.
158
159People learn faster with concrete, motivating examples that match the context of
160a typical use case. For instance, the :func:`str.rpartition` method is better
161demonstrated with an example splitting the domain from a URL than it would be
162with an example of removing the last word from a line of Monty Python dialog.
163
164The ellipsis for the :attr:`sys.ps2` secondary interpreter prompt should only be
165used sparingly, where it is necessary to clearly differentiate between input
166lines and output lines. Besides contributing visual clutter, it makes it
167difficult for readers to cut-and-paste examples so they can experiment with
168variations.
169
170Code Equivalents
171----------------
172
173Giving pure Python code equivalents (or approximate equivalents) can be a useful
174adjunct to a prose description. A documenter should carefully weigh whether the
175code equivalent adds value.
176
177A good example is the code equivalent for :func:`all`. The short 4-line code
178equivalent is easily digested; it re-emphasizes the early-out behavior; and it
179clarifies the handling of the corner-case where the iterable is empty. In
180addition, it serves as a model for people wanting to implement a commonly
181requested alternative where :func:`all` would return the specific object
182evaluating to False whenever the function terminates early.
183
184A more questionable example is the code for :func:`itertools.groupby`. Its code
185equivalent borders on being too complex to be a quick aid to understanding.
186Despite its complexity, the code equivalent was kept because it serves as a
187model to alternative implementations and because the operation of the "grouper"
188is more easily shown in code than in English prose.
189
190An example of when not to use a code equivalent is for the :func:`oct` function.
191The exact steps in converting a number to octal doesn't add value for a user
192trying to learn what the function does.
193
194Audience
195--------
196
197The tone of the tutorial (and all the docs) needs to be respectful of the
198reader's intelligence. Don't presume that the readers are stupid. Lay out the
199relevant information, show motivating use cases, provide glossary links, and do
Éric Araujod4701f42011-05-25 18:13:29 +0200200your best to connect-the-dots, but don't talk down to them or waste their time.
Raymond Hettingerbb1cf8d2011-05-10 00:35:03 -0700201
202The tutorial is meant for newcomers, many of whom will be using the tutorial to
203evaluate the language as a whole. The experience needs to be positive and not
204leave the reader with worries that something bad will happen if they make a
205misstep. The tutorial serves as guide for intelligent and curious readers,
206saving details for the how-to guides and other sources.
207
208Be careful accepting requests for documentation changes from the rare but vocal
209category of reader who is looking for vindication for one of their programming
210errors ("I made a mistake, therefore the docs must be wrong ..."). Typically,
211the documentation wasn't consulted until after the error was made. It is
212unfortunate, but typically no documentation edit would have saved the user from
213making false assumptions about the language ("I was surprised by ...").
214
Georg Brandl116aa622007-08-15 14:28:22 +0000215
Georg Brandl386bc6d2010-04-25 10:19:53 +0000216.. _Apple Publications Style Guide: http://developer.apple.com/mac/library/documentation/UserExperience/Conceptual/APStyleGuide/APSG_2009.pdf
Georg Brandl116aa622007-08-15 14:28:22 +0000217