From 205d50a01dbbda2b7b06f57d4dfbe9abe8381e64 Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Mon, 3 Jan 2011 23:08:13 +0100 Subject: [PATCH] Regression of #77: If there is only one parameter given with ``:param:`` markup, the bullet list is now suppressed again. --- CHANGES | 3 +++ sphinx/domains/python.py | 6 ++++-- sphinx/util/docfields.py | 21 ++++++++++++++------- tests/root/objects.txt | 2 ++ 4 files changed, 23 insertions(+), 9 deletions(-) diff --git a/CHANGES b/CHANGES index a6cf38473..e2db85e32 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,9 @@ Release 1.0.6 (in development) ============================== +* Regression of #77: If there is only one parameter given with + ``:param:`` markup, the bullet list is now suppressed again. + * #556: Fix missing paragraph breaks in LaTeX output in certain situations. diff --git a/sphinx/domains/python.py b/sphinx/domains/python.py index cb34492f9..59ff551b5 100644 --- a/sphinx/domains/python.py +++ b/sphinx/domains/python.py @@ -94,10 +94,12 @@ class PyObject(ObjectDescription): TypedField('parameter', label=l_('Parameters'), names=('param', 'parameter', 'arg', 'argument', 'keyword', 'kwarg', 'kwparam'), - typerolename='obj', typenames=('paramtype', 'type')), + typerolename='obj', typenames=('paramtype', 'type'), + can_collapse=True), TypedField('variable', label=l_('Variables'), rolename='obj', names=('var', 'ivar', 'cvar'), - typerolename='obj', typenames=('vartype',)), + typerolename='obj', typenames=('vartype',), + can_collapse=True), GroupedField('exceptions', label=l_('Raises'), rolename='exc', names=('raises', 'raise', 'exception', 'except'), can_collapse=True), diff --git a/sphinx/util/docfields.py b/sphinx/util/docfields.py index 89f81e8cb..745557a79 100644 --- a/sphinx/util/docfields.py +++ b/sphinx/util/docfields.py @@ -129,15 +129,13 @@ class TypedField(GroupedField): is_typed = True def __init__(self, name, names=(), typenames=(), label=None, - rolename=None, typerolename=None): - GroupedField.__init__(self, name, names, label, rolename, False) + rolename=None, typerolename=None, can_collapse=False): + GroupedField.__init__(self, name, names, label, rolename, can_collapse) self.typenames = typenames self.typerolename = typerolename def make_field(self, types, domain, items): - fieldname = nodes.field_name('', self.label) - listnode = self.list_type() - for fieldarg, content in items: + def handle_item(fieldarg, content): par = nodes.paragraph() par += self.make_xref(self.rolename, domain, fieldarg, nodes.strong) if fieldarg in types: @@ -154,8 +152,17 @@ class TypedField(GroupedField): par += nodes.Text(')') par += nodes.Text(' -- ') par += content - listnode += nodes.list_item('', par) - fieldbody = nodes.field_body('', listnode) + return par + + fieldname = nodes.field_name('', self.label) + if len(items) == 1 and self.can_collapse: + fieldarg, content = items[0] + bodynode = handle_item(fieldarg, content) + else: + bodynode = self.list_type() + for fieldarg, content in items: + bodynode += nodes.list_item('', handle_item(fieldarg, content)) + fieldbody = nodes.field_body('', bodynode) return nodes.field('', fieldname, fieldbody) diff --git a/tests/root/objects.txt b/tests/root/objects.txt index e62f6d962..969629f70 100644 --- a/tests/root/objects.txt +++ b/tests/root/objects.txt @@ -47,6 +47,8 @@ Testing object descriptions .. class:: TimeInt + Has only one parameter (triggers special behavior...) + :param moo: |test| :type moo: |test|