Skip to content

Commit

Permalink
Fix autodoc: autodoc_member_order_does not refer order of imports (re…
Browse files Browse the repository at this point in the history
  • Loading branch information
tk0miya committed Jul 13, 2019
1 parent 0bc530f commit 8c924f1
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 0 deletions.
2 changes: 2 additions & 0 deletions CHANGES
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@ Bugs fixed
* #6486: UnboundLocalError is raised if broken extension installed
* #6567: autodoc: :confval:`autodoc_inherit_docstrings` does not effect to
``__init__()`` and ``__new__()``
* #6574: autodoc: :confval:`autodoc_member_order` does not refer order of
imports when ``'bysource'`` order
* #6498: autosummary: crashed with wrong autosummary_generate setting
* #6507: autosummary: crashes without no autosummary_generate setting
* #6511: LaTeX: autonumbered list can not be customized in LaTeX
Expand Down
16 changes: 16 additions & 0 deletions sphinx/pycode/parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -270,6 +270,22 @@ def visit(self, node: ast.AST) -> None:
super().visit(node)
self.previous = node

def visit_Import(self, node: ast.Import) -> None:
"""Handles Import node and record it to definition orders."""
for name in node.names:
if name.asname:
self.add_entry(name.asname)
else:
self.add_entry(name.name)

def visit_ImportFrom(self, node: ast.Import) -> None:
"""Handles Import node and record it to definition orders."""
for name in node.names:
if name.asname:
self.add_entry(name.asname)
else:
self.add_entry(name.name)

def visit_Assign(self, node: ast.Assign) -> None:
"""Handles Assign node and pick up a variable comment."""
try:
Expand Down
16 changes: 16 additions & 0 deletions tests/test_pycode_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -344,6 +344,22 @@ def test_async_function_and_method():
'Foo.method': ('def', 6, 7)}


def test_imports():
source = ('import sys\n'
'from os import environment, path\n'
'\n'
'import sphinx as Sphinx\n'
'from sphinx.application import Sphinx as App\n')
parser = Parser(source)
parser.parse()
assert parser.definitions == {}
assert parser.deforders == {'sys': 0,
'environment': 1,
'path': 2,
'Sphinx': 3,
'App': 4}


def test_formfeed_char():
source = ('class Foo:\n'
'\f\n'
Expand Down

0 comments on commit 8c924f1

Please sign in to comment.