Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

sphinx\domains\python.py, line 568: AttributeError: 'DirectiveAdapter' object has no attribute 'env' #4897

Closed
svivar opened this issue Apr 24, 2018 · 5 comments

Comments

@svivar
Copy link

svivar commented Apr 24, 2018

Subject: Sphinx make html AttributeError: 'DirectiveAdapter' object has no attribute 'env'

Problem

Exception occurred:
  File "c:\python36\lib\site-packages\sphinx\domains\python.py", line 568, in run
    (modname, self.env.doc2path(modules[modname])),
AttributeError: 'DirectiveAdapter' object has no attribute 'env'
The full traceback has been saved in C:\Users\svivar\AppData\Local\Temp\sphinx-err-0bp12gh4.log, if you want to report the issue to the developers.

The problem would seem to be the reference to self.env on line 568 in sphinx\domains\python.py as follows:
    564             if modname in modules:
    565                 self.state_machine.reporter.warning(
    566                     'duplicate module description of %s, '
    567                     'other instance in %s, use :noindex: for one of them' %
    568                     (modname, self.env.doc2path(modules[modname])),
    569                     line=self.lineno)

Procedure to reproduce the problem

Invoke make html on a project with a python module, say  main.py, whose first lines are as follows:
"""
.. module:: main
    :platform: Windows
    :synopsis: main() calls methods for development testing
"""
Note incorrect space between ".." and "module::"

Error logs / results

# Sphinx version: 1.7.3
# Python version: 3.6.5 (CPython)
# Docutils version: 0.14
# Jinja2 version: 2.10
# Last messages:
#   building [mo]: targets for 0 po files that are out of date
#
#   building [html]: targets for 4 source files that are out of date
#
#   updating environment:
#
#   4 added, 0 changed, 0 removed
#
#   reading sources... [ 25%] code
#
# Loaded extensions:
#   alabaster (0.7.10) from c:\python36\lib\site-packages\alabaster-0.7.10-py3.6.egg\alabaster\__init__.py
#   sphinx.ext.autodoc (1.7.3) from c:\python36\lib\site-packages\sphinx\ext\autodoc\__init__.py
#   sphinx.ext.viewcode (1.7.3) from c:\python36\lib\site-packages\sphinx\ext\viewcode.py
#   sphinx.ext.githubpages (1.7.3) from c:\python36\lib\site-packages\sphinx\ext\githubpages.py
Traceback (most recent call last):
  File "c:\python36\lib\site-packages\sphinx\cmdline.py", line 304, in main
    app.build(args.force_all, filenames)
  File "c:\python36\lib\site-packages\sphinx\application.py", line 331, in build
    self.builder.build_update()
  File "c:\python36\lib\site-packages\sphinx\builders\__init__.py", line 338, in build_update
    'out of date' % len(to_build))
  File "c:\python36\lib\site-packages\sphinx\builders\__init__.py", line 351, in build
    updated_docnames = set(self.env.update(self.config, self.srcdir, self.doctreedir))
  File "c:\python36\lib\site-packages\sphinx\environment\__init__.py", line 565, in update
    self._read_serial(docnames, self.app)
  File "c:\python36\lib\site-packages\sphinx\environment\__init__.py", line 584, in _read_serial
    self.read_doc(docname, app)
  File "c:\python36\lib\site-packages\sphinx\environment\__init__.py", line 659, in read_doc
    doctree = read_doc(self.app, self, self.doc2path(docname))
  File "c:\python36\lib\site-packages\sphinx\io.py", line 294, in read_doc
    pub.publish()
  File "c:\python36\lib\site-packages\docutils-0.14-py3.6.egg\docutils\core.py", line 217, in publish
    self.settings)
  File "c:\python36\lib\site-packages\docutils-0.14-py3.6.egg\docutils\readers\__init__.py", line 72, in read
    self.parse()
  File "c:\python36\lib\site-packages\docutils-0.14-py3.6.egg\docutils\readers\__init__.py", line 78, in parse
    self.parser.parse(self.input, document)
  File "c:\python36\lib\site-packages\sphinx\parsers.py", line 85, in parse
    self.statemachine.run(inputstring, document, inliner=self.inliner)
  File "c:\python36\lib\site-packages\docutils-0.14-py3.6.egg\docutils\parsers\rst\states.py", line 171, in run
    input_source=document['source'])
  File "c:\python36\lib\site-packages\docutils-0.14-py3.6.egg\docutils\statemachine.py", line 239, in run
    context, state, transitions)
  File "c:\python36\lib\site-packages\docutils-0.14-py3.6.egg\docutils\statemachine.py", line 460, in check_line
    return method(match, context, next_state)
  File "c:\python36\lib\site-packages\docutils-0.14-py3.6.egg\docutils\parsers\rst\states.py", line 2753, in underline
    self.section(title, source, style, lineno - 1, messages)
  File "c:\python36\lib\site-packages\docutils-0.14-py3.6.egg\docutils\parsers\rst\states.py", line 327, in section
    self.new_subsection(title, lineno, messages)
  File "c:\python36\lib\site-packages\docutils-0.14-py3.6.egg\docutils\parsers\rst\states.py", line 395, in new_subsecti
on
    node=section_node, match_titles=True)
  File "c:\python36\lib\site-packages\docutils-0.14-py3.6.egg\docutils\parsers\rst\states.py", line 282, in nested_parse
    node=node, match_titles=match_titles)
  File "c:\python36\lib\site-packages\docutils-0.14-py3.6.egg\docutils\parsers\rst\states.py", line 196, in run
    results = StateMachineWS.run(self, input_lines, input_offset)
  File "c:\python36\lib\site-packages\docutils-0.14-py3.6.egg\docutils\statemachine.py", line 239, in run
    context, state, transitions)
  File "c:\python36\lib\site-packages\docutils-0.14-py3.6.egg\docutils\statemachine.py", line 460, in check_line
    return method(match, context, next_state)
  File "c:\python36\lib\site-packages\docutils-0.14-py3.6.egg\docutils\parsers\rst\states.py", line 2753, in underline
    self.section(title, source, style, lineno - 1, messages)
  File "c:\python36\lib\site-packages\docutils-0.14-py3.6.egg\docutils\parsers\rst\states.py", line 327, in section
    self.new_subsection(title, lineno, messages)
  File "c:\python36\lib\site-packages\docutils-0.14-py3.6.egg\docutils\parsers\rst\states.py", line 395, in new_subsecti
on
    node=section_node, match_titles=True)
  File "c:\python36\lib\site-packages\docutils-0.14-py3.6.egg\docutils\parsers\rst\states.py", line 282, in nested_parse
    node=node, match_titles=match_titles)
  File "c:\python36\lib\site-packages\docutils-0.14-py3.6.egg\docutils\parsers\rst\states.py", line 196, in run
    results = StateMachineWS.run(self, input_lines, input_offset)
  File "c:\python36\lib\site-packages\docutils-0.14-py3.6.egg\docutils\statemachine.py", line 239, in run
    context, state, transitions)
  File "c:\python36\lib\site-packages\docutils-0.14-py3.6.egg\docutils\statemachine.py", line 460, in check_line
    return method(match, context, next_state)
  File "c:\python36\lib\site-packages\docutils-0.14-py3.6.egg\docutils\parsers\rst\states.py", line 2326, in explicit_ma
rkup
    nodelist, blank_finish = self.explicit_construct(match)
  File "c:\python36\lib\site-packages\docutils-0.14-py3.6.egg\docutils\parsers\rst\states.py", line 2338, in explicit_co
nstruct
    return method(self, expmatch)
  File "c:\python36\lib\site-packages\docutils-0.14-py3.6.egg\docutils\parsers\rst\states.py", line 2081, in directive
    directive_class, match, type_name, option_presets)
  File "c:\python36\lib\site-packages\docutils-0.14-py3.6.egg\docutils\parsers\rst\states.py", line 2130, in run_directi
ve
    result = directive_instance.run()
  File "c:\python36\lib\site-packages\sphinx\ext\autodoc\directive.py", line 144, in run
    result = parse_generated_content(self.state, params.result, documenter)
  File "c:\python36\lib\site-packages\sphinx\ext\autodoc\directive.py", line 85, in parse_generated_content
    nested_parse_with_titles(state, content, node)
  File "c:\python36\lib\site-packages\sphinx\util\nodes.py", line 210, in nested_parse_with_titles
    return state.nested_parse(content, 0, node, match_titles=1)
  File "c:\python36\lib\site-packages\docutils-0.14-py3.6.egg\docutils\parsers\rst\states.py", line 282, in nested_parse
    node=node, match_titles=match_titles)
  File "c:\python36\lib\site-packages\docutils-0.14-py3.6.egg\docutils\parsers\rst\states.py", line 196, in run
    results = StateMachineWS.run(self, input_lines, input_offset)
  File "c:\python36\lib\site-packages\docutils-0.14-py3.6.egg\docutils\statemachine.py", line 239, in run
    context, state, transitions)
  File "c:\python36\lib\site-packages\docutils-0.14-py3.6.egg\docutils\statemachine.py", line 460, in check_line
    return method(match, context, next_state)
  File "c:\python36\lib\site-packages\docutils-0.14-py3.6.egg\docutils\parsers\rst\states.py", line 2328, in explicit_ma
rkup
    self.explicit_list(blank_finish)
  File "c:\python36\lib\site-packages\docutils-0.14-py3.6.egg\docutils\parsers\rst\states.py", line 2358, in explicit_li
st
    match_titles=self.state_machine.match_titles)
  File "c:\python36\lib\site-packages\docutils-0.14-py3.6.egg\docutils\parsers\rst\states.py", line 319, in nested_list_
parse
    node=node, match_titles=match_titles)
  File "c:\python36\lib\site-packages\docutils-0.14-py3.6.egg\docutils\parsers\rst\states.py", line 196, in run
    results = StateMachineWS.run(self, input_lines, input_offset)
  File "c:\python36\lib\site-packages\docutils-0.14-py3.6.egg\docutils\statemachine.py", line 239, in run
    context, state, transitions)
  File "c:\python36\lib\site-packages\docutils-0.14-py3.6.egg\docutils\statemachine.py", line 460, in check_line
    return method(match, context, next_state)
  File "c:\python36\lib\site-packages\docutils-0.14-py3.6.egg\docutils\parsers\rst\states.py", line 2631, in explicit_ma
rkup
    nodelist, blank_finish = self.explicit_construct(match)
  File "c:\python36\lib\site-packages\docutils-0.14-py3.6.egg\docutils\parsers\rst\states.py", line 2338, in explicit_co
nstruct
    return method(self, expmatch)
  File "c:\python36\lib\site-packages\docutils-0.14-py3.6.egg\docutils\parsers\rst\states.py", line 2081, in directive
    directive_class, match, type_name, option_presets)
  File "c:\python36\lib\site-packages\docutils-0.14-py3.6.egg\docutils\parsers\rst\states.py", line 2130, in run_directi
ve
    result = directive_instance.run()
  File "c:\python36\lib\site-packages\sphinx\domains\__init__.py", line 237, in run
    return BaseDirective.run(self)
  File "c:\python36\lib\site-packages\sphinx\domains\python.py", line 568, in run
    (modname, self.env.doc2path(modules[modname])),
AttributeError: 'DirectiveAdapter' object has no attribute 'env'

Expected results

Reproducible project / your project

Environment info

  • OS: Windows 10
  • Python version: 3.6.5
  • Sphinx version: 1.7.3
  • <Extra tools e.g.: Browser, tex or something else>
@knorth55
Copy link
Contributor

This issues is same as #4885 and is solved in #4887.
Now, we are waiting for new bugfix release 1.7.4.

@ch-brianzimmer
Copy link

@knorth55 Do you know what the ETA looks like for 1.7.4?

@knorth55
Copy link
Contributor

@ch-brianzimmer I'm not a maintainer, so I have no idea.

@hejin
Copy link

hejin commented Apr 25, 2018

since it's inside of a warning statement, a workaround is just comment out or simplify the statement w/o any parameters. I just hit this problem and get it through by this way.

mrpau-richard added a commit to mrpau/kolibri that referenced this issue Apr 25, 2018
…ttempt-log-as-anonymous-user-crashes

* develop: (184 commits)
  Pin dependencies for all test dependencies to prevent random test breakage.
  Do not show invalid credentials alert if pw is blank and simple sign-on is enabled
  Only use check_same_thread for sqlite
  Pin sphinx to 1.7.2 until sphinx-doc/sphinx#4897 is resolved.
  Re-enable filtering content-to-import by renderability, but faster!
  Localize page title for user permissions management page
  Localize string in exam-report page
  Only fetch the channelList once on landing on the manage content page. Maintain loading behaviour.
  If channel database being imported is same or older version, skip import
  bug fix from merge
  set version to final
  fix up languages
  update i18n docs
  typo
  * alphabetize supported languages * update chewa names
  Add Chewa support.
  Add showDownloadButtonInLearn to default config
  update perseus
  update changelog
  temporarily disable Chichewa
  ...
@tk0miya tk0miya added this to the 1.7.4 milestone Apr 25, 2018
@tk0miya
Copy link
Member

tk0miya commented Apr 25, 2018

Sorry for inconvenience. I just released 1.7.4.
It contains fix for this problem.
Thank you for reporting.

@tk0miya tk0miya closed this as completed Apr 25, 2018
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Aug 16, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

5 participants