Fix #1462: autosummary warns for namedtuple with attribute with trailing underscore

This commit is contained in:
Takeshi KOMIYA 2016-08-30 00:37:30 +09:00
parent 37bb9c2c33
commit 8d96c90fc6
5 changed files with 41 additions and 1 deletions

View File

@ -13,6 +13,7 @@ Bugs fixed
* #2899: Fix ``hasdoc()`` function in Jinja2 template. It can detect ``genindex``, ``search`` collectly. * #2899: Fix ``hasdoc()`` function in Jinja2 template. It can detect ``genindex``, ``search`` collectly.
* #2901: Fix epub result: skip creating links from image tags to original image files. * #2901: Fix epub result: skip creating links from image tags to original image files.
* #2917: inline code is hyphenated on HTML * #2917: inline code is hyphenated on HTML
* #1462: autosummary warns for namedtuple with attribute with trailing underscore
Release 1.4.6 (released Aug 20, 2016) Release 1.4.6 (released Aug 20, 2016)
===================================== =====================================

View File

@ -67,6 +67,7 @@ from docutils import nodes
import sphinx import sphinx
from sphinx import addnodes from sphinx import addnodes
from sphinx.util import rst
from sphinx.util.compat import Directive from sphinx.util.compat import Directive
from sphinx.pycode import ModuleAnalyzer, PycodeError from sphinx.pycode import ModuleAnalyzer, PycodeError
from sphinx.ext.autodoc import Options from sphinx.ext.autodoc import Options
@ -367,7 +368,7 @@ class Autosummary(Directive):
for name, sig, summary, real_name in items: for name, sig, summary, real_name in items:
qualifier = 'obj' qualifier = 'obj'
if 'nosignatures' not in self.options: if 'nosignatures' not in self.options:
col1 = ':%s:`%s <%s>`\ %s' % (qualifier, name, real_name, sig) col1 = ':%s:`%s <%s>`\ %s' % (qualifier, name, real_name, rst.escape(sig))
else: else:
col1 = ':%s:`%s <%s>`' % (qualifier, name, real_name) col1 = ':%s:`%s <%s>`' % (qualifier, name, real_name)
col2 = summary col2 = summary

18
sphinx/util/rst.py Normal file
View File

@ -0,0 +1,18 @@
# -*- coding: utf-8 -*-
"""
sphinx.util.rst
~~~~~~~~~~~~~~~
reST helper functions.
:copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
import re
symbols_re = re.compile('([!-/:-@\[-`{-~])')
def escape(text):
return symbols_re.sub(r'\\\1', text)

View File

@ -69,3 +69,7 @@ class C:
''' '''
This is a nested inner class docstring This is a nested inner class docstring
''' '''
def func(arg_):
"""Test function take an argument ended with underscore."""

16
tests/test_util_rst.py Normal file
View File

@ -0,0 +1,16 @@
# -*- coding: utf-8 -*-
"""
test_util_rst
~~~~~~~~~~~~~~~
Tests sphinx.util.rst functions.
:copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
from sphinx.util.rst import escape
def test_escape():
assert escape(':ref:`id`') == '\:ref\:\`id\`'
assert escape('footnote [#]_') == 'footnote \[\#\]\_'