jupyter / nbviewer

nbconvert as a web service: Render Jupyter Notebooks as static web pages
https://nbviewer.jupyter.org
Other
2.21k stars 548 forks source link

FAQ failing with 500 #909

Open minrk opened 4 years ago

minrk commented 4 years ago

Rendering the FAQ page is currently failing with 500:

  File "/Users/benjaminrk/dev/jpy/nbviewer/nbviewer/templates/faq.md", line 1, in top-level template code
    {% extends "layout.html" %}
  File "/Users/benjaminrk/dev/jpy/nbviewer/nbviewer/templates/layout.html", line 113, in top-level template code
    </div>
  File "/Users/benjaminrk/dev/jpy/nbviewer/nbviewer/templates/layout.html", line 114, in block "container"
    </nav>
  File "/Users/benjaminrk/dev/jpy/nbviewer/nbviewer/templates/faq.md", line 7, in block "body"
    {% filter markdown(extensions=['toc'], extension_configs= {'toc' : [('anchorlink', True)]}) %}
  File "/Users/benjaminrk/conda/lib/python3.7/site-packages/markdown/core.py", line 388, in markdown
    return md.convert(text)
  File "/Users/benjaminrk/conda/lib/python3.7/site-packages/markdown/core.py", line 269, in convert
    newRoot = treeprocessor.run(root)
  File "/Users/benjaminrk/conda/lib/python3.7/site-packages/markdown/extensions/toc.py", line 277, in run
    self.add_anchor(el, el.attrib["id"])
  File "/Users/benjaminrk/conda/lib/python3.7/site-packages/markdown/extensions/toc.py", line 200, in add_anchor
    c.append(anchor)
TypeError: append() argument must be xml.etree.ElementTree.Element, not Element

I've tracked it down to isinstance(c, xml.etree.ElementTree.Element) being False, even though c.__class__ is xml.etree.ElementTree.Element, which I assume means that the xml.etree.ElementTree module is getting reloaded at some point. I don't know what's responsible for this, maybe jinja, maybe tornado, maybe something we are doing. Quickest fix might be to switch to commonmark or another markdown implementation instead of figuring out why this markdown implementation is getting confused.

Gittenburg commented 4 years ago

FYI this is caused by a bug in defusedxml: tiran/defusedxml/issues/54 (which is imported in nbconvert.filters.strings).