Z shell kernel for Jupyter
Project description
zsh kernel for jupyter
a simple z shell jupyter kernel powered by pexpect and enthusiasm
support link: https://ko-fi.com/danoak
installation
pipenv
pipenv --python 3 install notebook zsh_jupyter_kernel
pipenv run python -m zsh_jupyter_kernel.install --sys-prefix
pip
python3 -m pip install notebook zsh_jupyter_kernel
python3 -m zsh_jupyter_kernel.install --sys-prefix
technical overview
how does code execution work
the kernel configures zsh prompt string to its own custom value.
when a user requests a cell execution, the code is sent to kernel.
then the kernel puts the frontend on hold, sends the code to zsh process, and waits for the prompt string to release the frontend and let user request more code execution.
code completion
code completion is powered by quite a non-trivial script that involves multiple steps including spawning another temporary zsh process and capturing completion options into a data structure that jupyter frontend understands.
code inspection
code inspection is done by man --pager ul
which sends the whole man page to the frontend.
code completeness
code completeness is checked with the temporary zsh process and help of EXEC
zsh option which allows to switch off code execution and simply check if the code is complete using the exit code of the zsh process itself.
stderr
stderr content is just send to the front-end as regular stdout.
stdin
stdin is not supported because of the execution system when a process spawned by user waits for stdin, there is no way to detect it.
missing features
- history
- rich html output for things like images and tables
- stdin. might be possible with or without the current system
- pagers. might be possible or not
- stored and referenceable outputs
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for zsh_jupyter_kernel-3.4.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2b1f847842980cf827a8fc75d4bd9122415a3c37ac1f6844786fda14f8e67642 |
|
MD5 | 6c4abb408f5b73e49bbb655ee2b7cb31 |
|
BLAKE2b-256 | 211f856791892b5d8483cbcfc73d8c0b9b34a1d6dfc1d783e40408e6b8155a35 |