500 Error when launching nbclassic ('terminals_available')

macOS 13.5, Python 3.11.4 (homebrew)

With the recent move to notebook 7, I have been having issues with both notebook (documented here and here) and nbclassic.

For the latter, I am seeing a traceback, followed by a 500 error in the browser:

[E 2023-07-26 08:40:30.645 ServerApp] Uncaught exception GET /nbclassic/tree?token=e2a5e04ac6410a588e1132bac555b4f1fce1c781e1c9b4e0 (::1)
    HTTPServerRequest(protocol='http', host='localhost:8888', method='GET', uri='/nbclassic/tree?token=e2a5e04ac6410a588e1132bac555b4f1fce1c781e1c9b4e0', version='HTTP/1.1', remote_ip='::1')
    Traceback (most recent call last):
      File "/opt/homebrew/lib/python3.11/site-packages/tornado/web.py", line 1786, in _execute
        result = await result
                 ^^^^^^^^^^^^
      File "/opt/homebrew/lib/python3.11/site-packages/tornado/gen.py", line 786, in run
        yielded = self.gen.send(value)
                  ^^^^^^^^^^^^^^^^^^^^
      File "/opt/homebrew/lib/python3.11/site-packages/nbclassic/tree/handlers.py", line 69, in get
        terminals_available=self.settings['terminals_available'],
                            ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
    KeyError: 'terminals_available'

If I change “/opt/homebrew/lib/python3.11/site-packages/nbclassic/tree/handlers.py”, line 69 from

                terminals_available=self.settings['terminals_available'],

to

                terminals_available=self.settings.get('terminals_available', False),

(as is done in notebook/app.py) it works (no errors, no 500), but I assume this shouldn’t be necessary?

I assume it is a local config issue somehow, but in fact anything even if I get rid of all of the current directories listed with jupyter --paths it does not seem to help.

Any ideas?

Setting the environment variables
JUPYTER_PATH=/opt/homebrew/share/jupyter JUPYTER_CONFIG_PATH=/opt/homebrew/etc/jupyter
seems to be at least a partial fix (there are errors in the terminal, but it runs). Since this also has a positive effect on this notebook issue it seems that they are likely related. Some sort of mis-communication about paths between the homebrew build and jupyter?

1 Like

Thanks @defjaf for reporting.

This seems to be a proper issue, also tracked in 500 Error at launch (KeyError: 'terminals_available' in self.settings) · Issue #255 · jupyter/nbclassic · GitHub.

Let’s continue in 500 Error at launch (KeyError: 'terminals_available' in self.settings) · Issue #255 · jupyter/nbclassic · GitHub to keep the discussion in one place?

Will do (that’s my issue, too!)…