jupyter-book icon indicating copy to clipboard operation
jupyter-book copied to clipboard

Building book at the project root fails

Open mathdugre opened this issue 2 years ago • 2 comments

Describe the bug

context I was manually creating a jupyter-book for a repository, which sole purpose was to be a jupyter-book (i.e. no other code). When creating a jupyter-book at the root of a project, build fails.

expectation I expected the build to succeed for a jupyter-book at the root of a project.

bug The build command executes files from some of the virtual environment at the root of the project. Some of those file cause the build to fails.

Error output:

$ jb build .
Running Jupyter-Book v0.13.1
Source Folder: /home/math/test
Config Path: /home/math/test/_config.yml
Output Path: /home/math/test/_build/html
Running Sphinx v4.5.0
[etoc] Changing master_doc to 'intro'
checking bibtex cache... out of date
parsing bibtex file /home/math/test/references.bib... parsed 5 entries
myst v0.15.2: MdParserConfig(renderer='sphinx', commonmark_only=False, enable_extensions=['colon_fence', 'dollarmath', 'linkify', 'substitution', 'tasklist'], dmath_allow_labels=True, dmath_allow_space=True, dmath_allow_digits=True, dmath_double_inline=False, update_mathjax=True, mathjax_classes='tex2jax_process|mathjax_process|math|output_area', disable_syntax=[], url_schemes=['mailto', 'http', 'https'], heading_anchors=None, heading_slug_func=None, html_meta=[], footnote_transition=True, substitutions=[], sub_delimiters=['{', '}'], words_per_minute=200)
building [mo]: targets for 0 po files that are out of date
building [html]: targets for 298 source files that are out of date
updating environment: [new config] 298 added, 0 changed, 0 removed
Executing: .venv/lib/python3.11/site-packages/jupyter_book/book_template/markdown-notebooks in: /home/math/test/.venv/lib/python3.11/site-packages/jupyter_book/book_template
Executing: .venv/lib/python3.11/site-packages/jupyter_book/book_template/notebooks in: /home/math/test/.venv/lib/python3.11/site-packages/jupyter_book/book_template
Executing: .venv/lib/python3.11/site-packages/nbclassic/bundler/tests/resources/empty in: /home/math/test/.venv/lib/python3.11/site-packages/nbclassic/bundler/tests/resources
Executing: .venv/lib/python3.11/site-packages/nbclient/tests/files/Autokill in: /home/math/test/.venv/lib/python3.11/site-packages/nbclient/tests/files
/home/math/test/.venv/lib/python3.11/site-packages/jupyter_book/book_template/intro.md:: WARNING: tableofcontents directive in document with no descendants [etoc.tableofcontents]
ERROR: Execution Failed with traceback saved in /home/math/test/_build/html/reports/notebooks.log

Exception occurred:
  File "/home/math/test/.venv/lib/python3.11/site-packages/nbclient/client.py", line 953, in async_execute_cell
    raise DeadKernelError("Kernel died")
nbclient.exceptions.DeadKernelError: Kernel died
The full traceback has been saved in /tmp/sphinx-err-awcpmo8w.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 "/home/math/test/.venv/lib/python3.11/site-packages/nbclient/client.py", line 949, in async_execute_cell
    exec_reply = await self.task_poll_for_reply
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/math/test/.venv/lib/python3.11/site-packages/nbclient/client.py", line 730, in _async_poll_for_reply
    msg = await ensure_async(self.kc.shell_channel.get_msg(timeout=new_timeout))
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/math/test/.venv/lib/python3.11/site-packages/nbclient/util.py", line 96, in ensure_async
    result = await obj
             ^^^^^^^^^
  File "/home/math/test/.venv/lib/python3.11/site-packages/jupyter_client/channels.py", line 310, in get_msg
    ready = await self.socket.poll(timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
asyncio.exceptions.CancelledError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/math/test/.venv/lib/python3.11/site-packages/jupyter_book/sphinx.py", line 171, in build_sphinx
    app.build(force_all, filenames)
  File "/home/math/test/.venv/lib/python3.11/site-packages/sphinx/application.py", line 330, in build
    self.builder.build_update()
  File "/home/math/test/.venv/lib/python3.11/site-packages/sphinx/builders/__init__.py", line 286, in build_update
    self.build(to_build,
  File "/home/math/test/.venv/lib/python3.11/site-packages/sphinx/builders/__init__.py", line 300, in build
    updated_docnames = set(self.read())
                           ^^^^^^^^^^^
  File "/home/math/test/.venv/lib/python3.11/site-packages/sphinx/builders/__init__.py", line 407, in read
    self._read_serial(docnames)
  File "/home/math/test/.venv/lib/python3.11/site-packages/sphinx/builders/__init__.py", line 428, in _read_serial
    self.read_doc(docname)
  File "/home/math/test/.venv/lib/python3.11/site-packages/sphinx/builders/__init__.py", line 468, in read_doc
    doctree = read_doc(self.app, self.env, self.env.doc2path(docname))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/math/test/.venv/lib/python3.11/site-packages/sphinx/io.py", line 181, in read_doc
    pub.publish()
  File "/home/math/test/.venv/lib/python3.11/site-packages/docutils/core.py", line 217, in publish
    self.document = self.reader.read(self.source, self.parser,
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/math/test/.venv/lib/python3.11/site-packages/sphinx/io.py", line 101, in read
    self.parse()
  File "/home/math/test/.venv/lib/python3.11/site-packages/docutils/readers/__init__.py", line 78, in parse
    self.parser.parse(self.input, document)
  File "/home/math/test/.venv/lib/python3.11/site-packages/myst_nb/parser.py", line 67, in parse
    ntbk = generate_notebook_outputs(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/math/test/.venv/lib/python3.11/site-packages/myst_nb/execution.py", line 137, in generate_notebook_outputs
    result = single_nb_execution(
             ^^^^^^^^^^^^^^^^^^^^
  File "/home/math/test/.venv/lib/python3.11/site-packages/jupyter_cache/executors/utils.py", line 51, in single_nb_execution
    executenb(
  File "/home/math/test/.venv/lib/python3.11/site-packages/nbclient/client.py", line 1204, in execute
    return NotebookClient(nb=nb, resources=resources, km=km, **kwargs).execute()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/math/test/.venv/lib/python3.11/site-packages/nbclient/util.py", line 84, in wrapped
    return just_run(coro(*args, **kwargs))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/math/test/.venv/lib/python3.11/site-packages/nbclient/util.py", line 62, in just_run
    return loop.run_until_complete(coro)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/math/.pyenv/versions/3.11.0/lib/python3.11/asyncio/base_events.py", line 650, in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
  File "/home/math/.pyenv/versions/3.11.0/lib/python3.11/contextlib.py", line 222, in __aexit__
    await self.gen.athrow(typ, value, traceback)
  File "/home/math/test/.venv/lib/python3.11/site-packages/nbclient/client.py", line 611, in async_setup_kernel
    raise e
  File "/home/math/test/.venv/lib/python3.11/site-packages/nbclient/client.py", line 608, in async_setup_kernel
    yield
  File "/home/math/test/.venv/lib/python3.11/site-packages/nbclient/client.py", line 663, in async_execute
    await self.async_execute_cell(
  File "/home/math/test/.venv/lib/python3.11/site-packages/nbclient/client.py", line 953, in async_execute_cell
    raise DeadKernelError("Kernel died")
nbclient.exceptions.DeadKernelError: Kernel died

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/math/test/.venv/bin/jb", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/home/math/test/.venv/lib/python3.11/site-packages/click/core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/math/test/.venv/lib/python3.11/site-packages/click/core.py", line 1055, in main
    rv = self.invoke(ctx)
         ^^^^^^^^^^^^^^^^
  File "/home/math/test/.venv/lib/python3.11/site-packages/click/core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/math/test/.venv/lib/python3.11/site-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/math/test/.venv/lib/python3.11/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/math/test/.venv/lib/python3.11/site-packages/jupyter_book/cli/main.py", line 323, in build
    builder_specific_actions(
  File "/home/math/test/.venv/lib/python3.11/site-packages/jupyter_book/cli/main.py", line 531, in builder_specific_actions
    raise RuntimeError(_message_box(msg, color="red", doprint=False)) from result
RuntimeError:
===============================================================================

There was an error in building your book. Look above for the cause.

===============================================================================

problem Currently the users is forced to create a jupyter-book into a sub-folder of their project.

Reproduce the bug

Steps to reproduce:

$ python -m venv .venv
$ source .venv/bin/activate
$ pip install jupyter-book
$ jb create docs
$ mv docs/* . && rmdir docs
$ jb build .

List your environment

$ jb --version
Jupyter Book      : 0.13.1
External ToC      : 0.2.4
MyST-Parser       : 0.15.2
MyST-NB           : 0.13.2
Sphinx Book Theme : 0.3.3
Jupyter-Cache     : 0.4.3
NbClient          : 0.5.13

Python version:

$ python -V
Python 3.11.0

OS: WSL (Ubuntu)

$ cat /etc/os-release | grep VERSION=
VERSION="22.04.1 LTS (Jammy Jellyfish)"

No other tools used.

mathdugre avatar Jan 31 '23 19:01 mathdugre