]> granicus.if.org Git - python/commitdiff
Patch #932930: suggest the use of rawstrings for backslashes.
authorMartin v. Löwis <martin@v.loewis.de>
Mon, 31 May 2004 19:01:00 +0000 (19:01 +0000)
committerMartin v. Löwis <martin@v.loewis.de>
Mon, 31 May 2004 19:01:00 +0000 (19:01 +0000)
Doc/lib/libdoctest.tex
Lib/doctest.py

index e8983c99248c214b60cbc589e90662e8e2630943..6c72dbc7fda8ba4a4f153642bf62e81c988dc1e0 100644 (file)
@@ -361,17 +361,28 @@ The fine print:
 \item Output to stdout is captured, but not output to stderr (exception
   tracebacks are captured via a different means).
 
-\item If you continue a line via backslashing in an interactive session, or
-  for any other reason use a backslash, you need to double the backslash in
-  the docstring version.  This is simply because you're in a string, and so
-  the backslash must be escaped for it to survive intact.  Like:
+\item If you continue a line via backslashing in an interactive session,
+  or for any other reason use a backslash, you should use a raw
+  docstring, which will preserve your backslahses exactly as you type
+  them:
 
 \begin{verbatim}
->>> if "yes" == \\
-...     "y" +   \\
-...     "es":
-...     print 'yes'
-yes
+>>> def f(x): 
+...     r'''Backslashes in a raw docstring: m\n'''
+>>> print f.__doc__
+Backslashes in a raw docstring: m\n
+\end{verbatim}
+  
+  Otherwise, the backslash will be interpreted as part of the string.
+  E.g., the "\textbackslash" above would be interpreted as a newline
+  character.  Alternatively, you can double each backslash in the
+  doctest version (and not use a raw string):
+
+\begin{verbatim}
+>>> def f(x): 
+...     '''Backslashes in a raw docstring: m\\n'''
+>>> print f.__doc__
+Backslashes in a raw docstring: m\n
 \end{verbatim}
 
 \item The starting column doesn't matter:
index 50206846457260809b49e89da7a7ab5e151bd13e..acde9c13b4a5335ab46b3e6dc490d6eca67168a1 100644 (file)
@@ -4,7 +4,7 @@
 
 # Provided as-is; use at your own risk; no warranty; no promises; enjoy!
 
-"""Module doctest -- a framework for running examples in docstrings.
+r"""Module doctest -- a framework for running examples in docstrings.
 
 NORMAL USAGE
 
@@ -200,17 +200,26 @@ Bummers:
 + Output to stdout is captured, but not output to stderr (exception
   tracebacks are captured via a different means).
 
-+ If you continue a line via backslashing in an interactive session, or for
-  any other reason use a backslash, you need to double the backslash in the
-  docstring version.  This is simply because you're in a string, and so the
-  backslash must be escaped for it to survive intact.  Like:
-
->>> if "yes" == \\
-...     "y" +   \\
-...     "es":   # in the source code you'll see the doubled backslashes
-...     print 'yes'
-yes
-
++ If you continue a line via backslashing in an interactive session,
+  or for any other reason use a backslash, you should use a raw
+  docstring, which will preserve your backslahses exactly as you type
+  them:
+
+      >>> def f(x): 
+      ...     r'''Backslashes in a raw docstring: m\n'''
+      >>> print f.__doc__
+      Backslashes in a raw docstring: m\n
+
+  Otherwise, the backslash will be interpreted as part of the string.
+  E.g., the "\n" above would be interpreted as a newline character.
+  Alternatively, you can double each backslash in the doctest version
+  (and not use a raw string):
+
+      >>> def f(x): 
+      ...     '''Backslashes in a raw docstring: m\\n'''
+      >>> print f.__doc__
+      Backslashes in a raw docstring: m\n
+      
 The starting column doesn't matter:
 
 >>> assert "Easy!"