[Python-checkins] r64382 - in doctools/trunk: CHANGES sphinx/directives/desc.py sphinx/ext/autodoc.py sphinx/latexwriter.py
georg.brandl
python-checkins at python.org
Wed Jun 18 20:34:18 CEST 2008
Author: georg.brandl
Date: Wed Jun 18 20:34:18 2008
New Revision: 64382
Log:
Support -> return type annotations.
Modified:
doctools/trunk/CHANGES
doctools/trunk/sphinx/directives/desc.py
doctools/trunk/sphinx/ext/autodoc.py
doctools/trunk/sphinx/latexwriter.py
Modified: doctools/trunk/CHANGES
==============================================================================
--- doctools/trunk/CHANGES (original)
+++ doctools/trunk/CHANGES Wed Jun 18 20:34:18 2008
@@ -57,6 +57,9 @@
* The new TextBuilder creates plain-text output.
+* Python 3-style signatures, giving a return annotation via ``->``,
+ are now supported.
+
* Extensions:
- The `autodoc` extension accepts signatures for functions, methods
Modified: doctools/trunk/sphinx/directives/desc.py
==============================================================================
--- doctools/trunk/sphinx/directives/desc.py (original)
+++ doctools/trunk/sphinx/directives/desc.py Wed Jun 18 20:34:18 2008
@@ -75,10 +75,12 @@
# ------ functions to parse a Python or C signature and create desc_* nodes.
-py_sig_re = re.compile(r'''^([\w.]*\.)? # class names
- (\w+) \s* # thing name
- (?: \((.*)\) )? $ # optionally arguments
- ''', re.VERBOSE)
+py_sig_re = re.compile(
+ r'''^ ([\w.]*\.)? # class name(s)
+ (\w+) \s* # thing name
+ (?: \((.*)\) # optional arguments
+ (\s* -> \s* .*)? )? $ # optional return annotation
+ ''', re.VERBOSE)
py_paramlist_re = re.compile(r'([\[\],])') # split at '[', ']' and ','
@@ -94,7 +96,7 @@
m = py_sig_re.match(sig)
if m is None:
raise ValueError
- classname, name, arglist = m.groups()
+ classname, name, arglist, retann = m.groups()
if env.currclass:
add_module = False
@@ -148,6 +150,9 @@
stack[-1] += addnodes.desc_parameter(token, token)
if len(stack) != 1:
raise ValueError
+ if retann:
+ retann = u' \N{RIGHTWARDS ARROW} ' + retann.strip()[2:]
+ signode += addnodes.desc_type(retann, retann)
return fullname, classname
Modified: doctools/trunk/sphinx/ext/autodoc.py
==============================================================================
--- doctools/trunk/sphinx/ext/autodoc.py (original)
+++ doctools/trunk/sphinx/ext/autodoc.py Wed Jun 18 20:34:18 2008
@@ -198,7 +198,7 @@
# first, parse the definition -- auto directives for classes and functions
# can contain a signature which is then used instead of an autogenerated one
try:
- path, base, signature = py_sig_re.match(name).groups()
+ path, base, signature, retann = py_sig_re.match(name).groups()
except:
warning = document.reporter.warning(
'invalid signature for auto%s (%r)' % (what, name), line=lineno)
@@ -290,6 +290,8 @@
if signature is not None:
# signature given explicitly -- the parentheses were stripped by the regex
args = '(%s)' % signature
+ if retann:
+ args += retann
else:
try:
args = format_signature(what, todoc)
Modified: doctools/trunk/sphinx/latexwriter.py
==============================================================================
--- doctools/trunk/sphinx/latexwriter.py (original)
+++ doctools/trunk/sphinx/latexwriter.py Wed Jun 18 20:34:18 2008
@@ -979,6 +979,7 @@
(u">", ur"\textgreater{}"),
(u"^", ur"\textasciicircum{}"),
(u"\x00", ur"\textbackslash{}"),
+ (u"\N{RIGHTWARDS ARROW}", ur"$\rightarrow$"),
]
def encode(self, text):
More information about the Python-checkins
mailing list