Skip to content

Commit

Permalink
Fix sphinx-doc#4260: autodoc: keyword only argument separator is not …
Browse files Browse the repository at this point in the history
…disappeared
  • Loading branch information
tk0miya committed Feb 12, 2018
1 parent 2a65ffe commit 18fd4ef
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 1 deletion.
3 changes: 3 additions & 0 deletions CHANGES
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,9 @@ Features added
Bugs fixed
----------

* #4260: autodoc: keyword only argument separator is not disappeared if it is
appeared at top of the argument list

Testing
--------

Expand Down
3 changes: 2 additions & 1 deletion sphinx/util/inspect.py
Original file line number Diff line number Diff line change
Expand Up @@ -390,7 +390,8 @@ def format_args(self):
# insert '*' between POSITIONAL args and KEYWORD_ONLY args::
# func(a, b, *, c, d):
if param.kind == param.KEYWORD_ONLY and last_kind in (param.POSITIONAL_OR_KEYWORD,
param.POSITIONAL_ONLY):
param.POSITIONAL_ONLY,
None):
args.append('*')

if param.kind in (param.POSITIONAL_ONLY,
Expand Down
3 changes: 3 additions & 0 deletions tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@
collect_ignore = ['roots']

# Disable Python version-specific
if sys.version_info < (3,):
collect_ignore += ['py3']

if sys.version_info < (3, 5):
collect_ignore += ['py35']

Expand Down
26 changes: 26 additions & 0 deletions tests/py3/test_util_inspect_py3.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
"""
py3/test_util_inspect
~~~~~~~~~~~~~~~~~~~~~
Tests util.inspect functions.
:copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""

from sphinx.util import inspect


def test_Signature_keyword_only_arguments():
def func1(arg1, arg2, *, arg3=None, arg4=None):
pass

def func2(*, arg3, arg4):
pass

sig = inspect.Signature(func1).format_args()
assert sig == '(arg1, arg2, *, arg3=None, arg4=None)'

sig = inspect.Signature(func2).format_args()
assert sig == '(*, arg3, arg4)'

0 comments on commit 18fd4ef

Please sign in to comment.