Python parameter/variable types should match classes, not all objects

Parameter and variable types in the Python domain have the
counter-intuitive behavior of matching instance methods (or likely any
other objects) rather than classes, e.g.:

```python
class Foo(object):
    def list(self):
        """List some things."""

def bar(x):
    """
    :param x: x
    :type x: list
    """
```

`bar()` will link to `Foo.list()` rather than the standard library
`list` type.
This commit is contained in:
Andy Freeland 2017-07-12 21:49:10 -07:00
parent 662d8deaf7
commit 7046d17631
2 changed files with 6 additions and 6 deletions

View File

@ -177,11 +177,11 @@ class PyObject(ObjectDescription):
PyTypedField('parameter', label=l_('Parameters'),
names=('param', 'parameter', 'arg', 'argument',
'keyword', 'kwarg', 'kwparam'),
typerolename='obj', typenames=('paramtype', 'type'),
typerolename='class', typenames=('paramtype', 'type'),
can_collapse=True),
PyTypedField('variable', label=l_('Variables'), rolename='obj',
names=('var', 'ivar', 'cvar'),
typerolename='obj', typenames=('vartype',),
typerolename='class', typenames=('vartype',),
can_collapse=True),
PyGroupedField('exceptions', label=l_('Raises'), rolename='exc',
names=('raises', 'raise', 'exception', 'except'),

View File

@ -109,10 +109,10 @@ def test_domain_py_xrefs(app, status, warning):
'ModTopLevel', 'class')
assert_refnode(refnodes[6], 'module_b.submodule', 'ModTopLevel',
'ModNoModule', 'class')
assert_refnode(refnodes[7], False, False, 'int', 'obj')
assert_refnode(refnodes[8], False, False, 'tuple', 'obj')
assert_refnode(refnodes[9], False, False, 'str', 'obj')
assert_refnode(refnodes[10], False, False, 'float', 'obj')
assert_refnode(refnodes[7], False, False, 'int', 'class')
assert_refnode(refnodes[8], False, False, 'tuple', 'class')
assert_refnode(refnodes[9], False, False, 'str', 'class')
assert_refnode(refnodes[10], False, False, 'float', 'class')
assert len(refnodes) == 11