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

Crash trying to extend pydata-sphinx-theme with sphinx-multiversion #8100

Closed
riedgar-ms opened this issue Aug 11, 2020 · 4 comments
Closed

Comments

@riedgar-ms
Copy link

Describe the bug
Trying to extend pydata-sphinx-template with sphinx-multiversion resulted in crash.

Error message:

Exception occurred:
  File "c:\users\riedgar\appdata\local\continuum\miniconda3\envs\py-36\lib\site-packages\jinja2\sandbox.py", line 360, in is_safe_callable
    getattr(obj, "unsafe_callable", False) or getattr(obj, "alters_data", False)
jinja2.exceptions.UndefinedError: 'pathto' is undefined
The full traceback has been saved in C:\Users\riedgar\AppData\Local\Temp\sphinx-err-tnwtajjw.log, if you want to report the issue to the developers.
Please also report this if it was a user error, so that a better error message can be provided next time.
A bug report can be filed in the tracker at <https://github.com/sphinx-doc/sphinx/issues>. Thanks!
Traceback (most recent call last):
  File "C:\Users\riedgar\AppData\Local\Continuum\miniconda3\envs\py-36\Scripts\sphinx-multiversion-script.py", line 33, in <module>
    sys.exit(load_entry_point('sphinx-multiversion', 'console_scripts', 'sphinx-multiversion')())
  File "c:\users\riedgar\source\repos\sphinx-multiversion\sphinx_multiversion\main.py", line 302, in main
    subprocess.check_call(cmd, cwd=current_cwd)
  File "c:\users\riedgar\appdata\local\continuum\miniconda3\envs\py-36\lib\subprocess.py", line 311, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '('c:\\users\\riedgar\\appdata\\local\\continuum\\miniconda3\\envs\\py-36\\python.exe', '-m', 'sphinx', '-D', 'smv_metadata_path=C:\\Users\\riedgar\\AppData\\Local\\Temp\\tmp4vfkrz7o\\versions.json', '-D', 'smv_current_version=master', '-c', 'C:\\Users\\riedgar\\source\\repos\\fairlearn\\docs', 'C:\\Users\\riedgar\\AppData\\Local\\Temp\\tmp4vfkrz7o\\c6c01dc52462a49b95e2aab9f8de4f586de56234\\docs', 'C:\\Users\\riedgar\\source\\repos\\fairlearn\\build\\html\\master')' returned non-zero exit status 2.

The logfile mentioned has the following contents:

# Sphinx version: 3.1.2
# Python version: 3.6.10 (CPython)
# Docutils version: 0.16 release
# Jinja2 version: 2.11.2
# Last messages:
#   copying downloadable files... [ 87%] auto_examples/quickstart/plot_adult_dataset.py
#   
#   copying downloadable files... [100%] auto_examples/quickstart/plot_adult_dataset.ipynb
#   
#   
#   
#   copying static files... ...
#   
#   failed
#   
# Loaded extensions:
#   sphinx.ext.mathjax (3.1.2) from c:\users\riedgar\appdata\local\continuum\miniconda3\envs\py-36\lib\site-packages\sphinx\ext\mathjax.py
#   sphinxcontrib.applehelp (1.0.2) from c:\users\riedgar\appdata\local\continuum\miniconda3\envs\py-36\lib\site-packages\sphinxcontrib\applehelp\__init__.py
#   sphinxcontrib.devhelp (1.0.2) from c:\users\riedgar\appdata\local\continuum\miniconda3\envs\py-36\lib\site-packages\sphinxcontrib\devhelp\__init__.py
#   sphinxcontrib.htmlhelp (1.0.3) from c:\users\riedgar\appdata\local\continuum\miniconda3\envs\py-36\lib\site-packages\sphinxcontrib\htmlhelp\__init__.py
#   sphinxcontrib.serializinghtml (1.1.4) from c:\users\riedgar\appdata\local\continuum\miniconda3\envs\py-36\lib\site-packages\sphinxcontrib\serializinghtml\__init__.py
#   sphinxcontrib.qthelp (1.0.3) from c:\users\riedgar\appdata\local\continuum\miniconda3\envs\py-36\lib\site-packages\sphinxcontrib\qthelp\__init__.py
#   alabaster (0.7.12) from c:\users\riedgar\appdata\local\continuum\miniconda3\envs\py-36\lib\site-packages\alabaster\__init__.py
#   sphinx.ext.autodoc.type_comment (3.1.2) from c:\users\riedgar\appdata\local\continuum\miniconda3\envs\py-36\lib\site-packages\sphinx\ext\autodoc\type_comment.py
#   sphinx.ext.autodoc (3.1.2) from c:\users\riedgar\appdata\local\continuum\miniconda3\envs\py-36\lib\site-packages\sphinx\ext\autodoc\__init__.py
#   sphinx.ext.doctest (3.1.2) from c:\users\riedgar\appdata\local\continuum\miniconda3\envs\py-36\lib\site-packages\sphinx\ext\doctest.py
#   sphinx.ext.extlinks (3.1.2) from c:\users\riedgar\appdata\local\continuum\miniconda3\envs\py-36\lib\site-packages\sphinx\ext\extlinks.py
#   sphinx.ext.intersphinx (3.1.2) from c:\users\riedgar\appdata\local\continuum\miniconda3\envs\py-36\lib\site-packages\sphinx\ext\intersphinx.py
#   sphinx.ext.linkcode (3.1.2) from c:\users\riedgar\appdata\local\continuum\miniconda3\envs\py-36\lib\site-packages\sphinx\ext\linkcode.py
#   sphinx.ext.napoleon (3.1.2) from c:\users\riedgar\appdata\local\continuum\miniconda3\envs\py-36\lib\site-packages\sphinx\ext\napoleon\__init__.py
#   sphinx_gallery.gen_gallery (0.7.0) from c:\users\riedgar\appdata\local\continuum\miniconda3\envs\py-36\lib\site-packages\sphinx_gallery\gen_gallery.py
#   sphinx_multiversion (0.2) from c:\users\riedgar\source\repos\sphinx-multiversion\sphinx_multiversion\__init__.py
#   pydata_sphinx_theme (unknown version) from c:\users\riedgar\appdata\local\continuum\miniconda3\envs\py-36\lib\site-packages\pydata_sphinx_theme\__init__.py
Traceback (most recent call last):
  File "c:\users\riedgar\appdata\local\continuum\miniconda3\envs\py-36\lib\site-packages\sphinx\cmd\build.py", line 280, in build_main
    app.build(args.force_all, filenames)
  File "c:\users\riedgar\appdata\local\continuum\miniconda3\envs\py-36\lib\site-packages\sphinx\application.py", line 348, in build
    self.builder.build_update()
  File "c:\users\riedgar\appdata\local\continuum\miniconda3\envs\py-36\lib\site-packages\sphinx\builders\__init__.py", line 299, in build_update
    len(to_build))
  File "c:\users\riedgar\appdata\local\continuum\miniconda3\envs\py-36\lib\site-packages\sphinx\builders\__init__.py", line 364, in build
    self.finish()
  File "c:\users\riedgar\appdata\local\continuum\miniconda3\envs\py-36\lib\site-packages\sphinx\builders\html\__init__.py", line 617, in finish
    self.finish_tasks.add_task(self.copy_static_files)
  File "c:\users\riedgar\appdata\local\continuum\miniconda3\envs\py-36\lib\site-packages\sphinx\util\parallel.py", line 49, in add_task
    res = task_func()
  File "c:\users\riedgar\appdata\local\continuum\miniconda3\envs\py-36\lib\site-packages\sphinx\builders\html\__init__.py", line 790, in copy_static_files
    self.copy_html_static_files(context)
  File "c:\users\riedgar\appdata\local\continuum\miniconda3\envs\py-36\lib\site-packages\sphinx\builders\html\__init__.py", line 764, in copy_html_static_files
    excluded, context=context, renderer=self.templates)
  File "c:\users\riedgar\appdata\local\continuum\miniconda3\envs\py-36\lib\site-packages\sphinx\util\fileutil.py", line 95, in copy_asset
    context, renderer)
  File "c:\users\riedgar\appdata\local\continuum\miniconda3\envs\py-36\lib\site-packages\sphinx\util\fileutil.py", line 53, in copy_asset_file
    fdst.write(renderer.render_string(fsrc.read(), context))
  File "c:\users\riedgar\appdata\local\continuum\miniconda3\envs\py-36\lib\site-packages\sphinx\jinja2glue.py", line 195, in render_string
    return self.environment.from_string(source).render(context)
  File "c:\users\riedgar\appdata\local\continuum\miniconda3\envs\py-36\lib\site-packages\jinja2\environment.py", line 1090, in render
    self.environment.handle_exception()
  File "c:\users\riedgar\appdata\local\continuum\miniconda3\envs\py-36\lib\site-packages\jinja2\environment.py", line 832, in handle_exception
    reraise(*rewrite_traceback_stack(source=source))
  File "c:\users\riedgar\appdata\local\continuum\miniconda3\envs\py-36\lib\site-packages\jinja2\_compat.py", line 28, in reraise
    raise value.with_traceback(tb)
  File "<template>", line 1, in top-level template code
  File "c:\users\riedgar\appdata\local\continuum\miniconda3\envs\py-36\lib\site-packages\pydata_sphinx_theme\docs-sidebar.html", line 4, in top-level template code
    {%- include "search-field.html" %}
  File "c:\users\riedgar\appdata\local\continuum\miniconda3\envs\py-36\lib\site-packages\pydata_sphinx_theme\search-field.html", line 1, in top-level template code
    <form class="bd-search d-flex align-items-center" action="{{ pathto('search') }}" method="get">
  File "c:\users\riedgar\appdata\local\continuum\miniconda3\envs\py-36\lib\site-packages\jinja2\sandbox.py", line 460, in call
    if not __self.is_safe_callable(__obj):
  File "c:\users\riedgar\appdata\local\continuum\miniconda3\envs\py-36\lib\site-packages\jinja2\sandbox.py", line 360, in is_safe_callable
    getattr(obj, "unsafe_callable", False) or getattr(obj, "alters_data", False)
jinja2.exceptions.UndefinedError: 'pathto' is undefined

To Reproduce
Steps to reproduce the behaviour:

git clone https://github.com/riedgar-ms/fairlearn.git
cd fairlearn
git checkout riedgar-ms/versioned-docs-alternate-01
python scripts/install_requirements.py --pinned False
sphinx-multiversion.exe docs build/html

Expected behavior
Command to complete without error, hopefully with version.html_t inserted into the sidebar of the emitted documentation. Alternatively, a comprehensible error message. This might actually be a bug in either the theme or sphinx-multiversion, but I'm really not sure based on the above.

Your project
https://github.com/riedgar-ms/fairlearn/tree/riedgar-ms/versioned-docs-alternate-01

Screenshots

Environment info

  • OS: Win10
  • Python version: 3.6
  • Sphinx version: 3.1.2
  • Sphinx extensions: 'sphinx.ext.autodoc', 'sphinx.ext.doctest',
    'sphinx.ext.extlinks', 'sphinx.ext.intersphinx', 'sphinx.ext.linkcode', 'sphinx.ext.mathjax', 'sphinx.ext.napoleon', 'sphinx_gallery.gen_gallery', 'sphinx_multiversion'
  • Extra tools: N/A

Additional context
Add any other context about the problem here.

  • [e.g. URL or Ticket]
@tk0miya
Copy link
Member

tk0miya commented Aug 11, 2020

Is _static directory a right place for version.html_t? It seems sphinx tries to copy it to static directory. But it fails to expand template variables. If your goal is putting it on sidebar, I guess _templates directory is better for your purpose. I don't know what sphinx_multiversion doing. But it seems this was happened on copying version.html_t.

@riedgar-ms
Copy link
Author

Moving the file to the _templates directory has stopped the crash, thanks. That wasn't a very intuitive error message, though.

@tk0miya
Copy link
Member

tk0miya commented Aug 13, 2020

Absolutely. I added a better error handling on #8112.

@riedgar-ms
Copy link
Author

Thanks. Having the offending file in the error would at least have got me started on debugging the issue (actually, the issue was/is mainly about my ignorance of sphinx internals)

tk0miya added a commit that referenced this issue Sep 13, 2020
…ic_files

Close #8100: html: Show a better error message for html_static_files
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Jul 19, 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

2 participants