jupyter-widgets / pythreejs

A Jupyter - Three.js bridge
https://pythreejs.readthedocs.io
Other
934 stars 185 forks source link

Docs don't build with traitlets 5 #351

Closed bollwyvl closed 3 years ago

bollwyvl commented 3 years ago

Thanks again for this repo!

Over on #349, I'm running into some issues with building the docs when traitlets >=5 is installed:

reading sources... [  3%] api/animation/KeyframeTrack_autogen                                                                                                                                 
Exception occurred:
  File "/home/weg/projects/pythreejs_/envs/default/lib/python3.8/site-packages/traitlets/traitlets.py", line 2303, in _choices_str
    choices = repr(list(choices))
TypeError: 'EnumNamespace' object is not iterable
The full traceback has been saved in /tmp/sphinx-err-ta2gvsye.log, if you want to report the issue to the developers.

Here's a CI log. If i bump back down to traitlets <5, the problem goes away.

here's one of those logs
cat /tmp/sphinx-err-ta2gvsye.log
# Sphinx version: 3.5.1
# Python version: 3.8.8 (CPython)
# Docutils version: 0.16 release
# Jinja2 version: 2.11.3
# Last messages:
#   reading sources... [  0%] api/_base/Preview
#   reading sources... [  0%] api/_base/Renderable
#   reading sources... [  1%] api/_base/Three
#   reading sources... [  1%] api/_base/index
#   reading sources... [  1%] api/animation/AnimationAction_autogen
#   reading sources... [  2%] api/animation/AnimationClip_autogen
#   reading sources... [  2%] api/animation/AnimationMixer_autogen
#   reading sources... [  3%] api/animation/AnimationObjectGroup_autogen
#   reading sources... [  3%] api/animation/AnimationUtils_autogen
#   reading sources... [  3%] api/animation/KeyframeTrack_autogen
# Loaded extensions:
#   sphinx.ext.mathjax (3.5.1) from ~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/sphinx/ext/mathjax.py
#   sphinxcontrib.applehelp (1.0.2) from ~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/sphinxcontrib/applehelp/__init__.py
#   sphinxcontrib.devhelp (1.0.2) from ~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/sphinxcontrib/devhelp/__init__.py
#   sphinxcontrib.htmlhelp (1.0.3) from ~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/sphinxcontrib/htmlhelp/__init__.py
#   sphinxcontrib.serializinghtml (1.1.4) from ~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/sphinxcontrib/serializinghtml/__init__.py
#   sphinxcontrib.qthelp (1.0.3) from ~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/sphinxcontrib/qthelp/__init__.py
#   alabaster (0.7.12) from ~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/alabaster/__init__.py
#   sphinx.ext.autodoc.type_comment (3.5.1) from ~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/sphinx/ext/autodoc/type_comment.py
#   sphinx.ext.autodoc (3.5.1) from ~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/sphinx/ext/autodoc/__init__.py
#   sphinx.ext.viewcode (3.5.1) from ~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/sphinx/ext/viewcode.py
#   sphinx.ext.intersphinx (3.5.1) from ~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/sphinx/ext/intersphinx.py
#   sphinx.ext.napoleon (3.5.1) from ~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/sphinx/ext/napoleon/__init__.py
#   sphinx.ext.todo (3.5.1) from ~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/sphinx/ext/todo.py
#   autodoc_traits (unknown version) from ~/projects/pythreejs_/pythreejs/docs/sphinxext/autodoc_traits.py
#   nbsphinx (0.8.1) from ~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/nbsphinx.py
#   nbsphinx_link (1.3.0) from ~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/nbsphinx_link/__init__.py
Traceback (most recent call last):
  File "~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/sphinx/cmd/build.py", line 280, in build_main
    app.build(args.force_all, filenames)
  File "~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/sphinx/application.py", line 352, in build
    self.builder.build_update()
  File "~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/sphinx/builders/__init__.py", line 296, in build_update
    self.build(to_build,
  File "~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/sphinx/builders/__init__.py", line 310, in build
    updated_docnames = set(self.read())
  File "~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/sphinx/builders/__init__.py", line 417, in read
    self._read_serial(docnames)
  File "~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/sphinx/builders/__init__.py", line 438, in _read_serial
    self.read_doc(docname)
  File "~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/sphinx/builders/__init__.py", line 478, in read_doc
    doctree = read_doc(self.app, self.env, self.env.doc2path(docname))
  File "~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/sphinx/io.py", line 221, in read_doc
    pub.publish()
  File "~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/docutils/core.py", line 217, in publish
    self.document = self.reader.read(self.source, self.parser,
  File "~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/sphinx/io.py", line 126, in read
    self.parse()
  File "~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/docutils/readers/__init__.py", line 77, in parse
    self.parser.parse(self.input, document)
  File "~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/sphinx/parsers.py", line 104, in parse
    self.statemachine.run(inputlines, document, inliner=self.inliner)
  File "~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/docutils/parsers/rst/states.py", line 170, in run
    results = StateMachineWS.run(self, input_lines, input_offset,
  File "~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/docutils/statemachine.py", line 241, in run
    context, next_state, result = self.check_line(
  File "~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/docutils/statemachine.py", line 459, in check_line
    return method(match, context, next_state)
  File "~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/docutils/parsers/rst/states.py", line 2769, in underline
    self.section(title, source, style, lineno - 1, messages)
  File "~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/docutils/parsers/rst/states.py", line 327, in section
    self.new_subsection(title, lineno, messages)
  File "~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/docutils/parsers/rst/states.py", line 393, in new_subsection
    newabsoffset = self.nested_parse(
  File "~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/docutils/parsers/rst/states.py", line 281, in nested_parse
    state_machine.run(block, input_offset, memo=self.memo,
  File "~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/docutils/parsers/rst/states.py", line 196, in run
    results = StateMachineWS.run(self, input_lines, input_offset)
  File "~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/docutils/statemachine.py", line 241, in run
    context, next_state, result = self.check_line(
  File "~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/docutils/statemachine.py", line 459, in check_line
    return method(match, context, next_state)
  File "~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/docutils/parsers/rst/states.py", line 2344, in explicit_markup
    self.explicit_list(blank_finish)
  File "~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/docutils/parsers/rst/states.py", line 2369, in explicit_list
    newline_offset, blank_finish = self.nested_list_parse(
  File "~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/docutils/parsers/rst/states.py", line 318, in nested_list_parse
    state_machine.run(block, input_offset, memo=self.memo,
  File "~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/docutils/parsers/rst/states.py", line 196, in run
    results = StateMachineWS.run(self, input_lines, input_offset)
  File "~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/docutils/statemachine.py", line 241, in run
    context, next_state, result = self.check_line(
  File "~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/docutils/statemachine.py", line 459, in check_line
    return method(match, context, next_state)
  File "~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/docutils/parsers/rst/states.py", line 2647, in explicit_markup
    nodelist, blank_finish = self.explicit_construct(match)
  File "~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/docutils/parsers/rst/states.py", line 2354, in explicit_construct
    return method(self, expmatch)
  File "~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/docutils/parsers/rst/states.py", line 2096, in directive
    return self.run_directive(
  File "~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/docutils/parsers/rst/states.py", line 2146, in run_directive
    result = directive_instance.run()
  File "~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/sphinx/ext/autodoc/directive.py", line 167, in run
    documenter.generate(more_content=self.content)
  File "~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/sphinx/ext/autodoc/__init__.py", line 1726, in generate
    return super().generate(more_content=more_content,
  File "~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/sphinx/ext/autodoc/__init__.py", line 970, in generate
    self.document_members(all_members)
  File "~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/sphinx/ext/autodoc/__init__.py", line 1717, in document_members
    super().document_members(all_members)
  File "~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/sphinx/ext/autodoc/__init__.py", line 828, in document_members
    members_check_module, members = self.get_object_members(want_all)
  File "~/projects/pythreejs_/pythreejs/docs/sphinxext/autodoc_traits.py", line 61, in get_object_members
    trait.__doc__ = trait.help or extended_trait_info(getattr(self.object, name))
  File "~/projects/pythreejs_/pythreejs/docs/sphinxext/autodoc_traits.py", line 33, in extended_trait_info
    return trait.info()
  File "~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/traitlets/traitlets.py", line 2314, in info
    return self._info(as_rst=False)
  File "~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/traitlets/traitlets.py", line 2311, in _info
    return 'any of %s%s' % (self._choices_str(as_rst), none)
  File "~/projects/pythreejs_/envs/default/lib/python3.8/site-packages/traitlets/traitlets.py", line 2303, in _choices_str
    choices = repr(list(choices))
TypeError: 'EnumNamespace' object is not iterable
vidartf commented 3 years ago

Closed via #349 + #352 .

bollwyvl commented 3 years ago

Awesome!