Skip to main content

A small, readable, Python-only Jupyter kernel with strong IPython parity.

Project description

ipymini

🛑 WARNING This is a very early, very experimental, purely research project for now. Have fun playing with it, but don't expect it to work, or be supported, or to still exist next week. Perhaps it'll turn out to be useful, and we'll invest in it and maintain it, in which case we'll remove this warning. If you play with it and find issues, have improvement ideas, etc, we're keen to hear, and to research together!

ipymini is a Python-only Jupyter kernel for Python with a small, readable codebase and strong IPython parity.

The design goal is: a small, readable, testable kernel with first‑class IPython behavior.

This was almost entirely implemented by AI, closely referencing the ipykernel, xeus, xeus-python, and jupyter_kernel_test projects during development. So all credit for this project belongs to the authors of those packages, and to authors of the excellent documentation and specifications referred to (e.g DAP spec; JEPs; etc).


What we’ve aimed to do

  • Implement a full Jupyter kernel in pure Python.
  • Match ipykernel behavior where it matters (IOPub ordering, message shapes, history, inspect, etc.).
  • Use IPython instead of re‑implementing Python semantics.
  • Expand protocol‑level tests (IOPub, interrupts, completions, etc.) to approach upstream parity.

Requirements

  • Python 3.11+ recommended (we test with 3.12)
  • jupyter_client, jupyter_core, ipython, pyzmq

If you need system ZMQ libs on macOS:

brew install libzmq

Install (editable)

From the repo root:

pip install -e .

Optional test deps:

pip install -e ".[test]"

Installing the kernel spec

You have a few options:

Option A: Use the built-in installer

python -m ipymini install --user

Or install into the current environment:

python -m ipymini install --sys-prefix

After either option, you should see it in:

jupyter kernelspec list

Option B: Install the spec into your user Jupyter dir

jupyter kernelspec install --user /path/to/ipymini/share/jupyter/kernels/ipymini

Option C: Use the repo’s JUPYTER_PATH

Set JUPYTER_PATH to include the repo’s share/jupyter:

export JUPYTER_PATH=/path/to/ipymini/share/jupyter:$JUPYTER_PATH

Running manually

ipymini is a normal Jupyter kernel executable. It expects a connection file:

python -m ipymini -f /path/to/connection.json

(When run via Jupyter, that file is created and passed automatically.)


Configuring env and working directory

For per-launch configuration, rely on the kernel launcher:

  • KernelManager: pass env and cwd to start_kernel(...).
  • Kernelspec: add an "env" dict to share/jupyter/kernels/ipymini/kernel.json for static defaults.

Example (KernelManager):

from jupyter_client import KernelManager

km = KernelManager(kernel_name="ipymini")
km.start_kernel(env={"MY_FLAG": "1"}, cwd="/path/to/workdir")

Optional env flags:

  • IPYMINI_STOP_ON_ERROR_TIMEOUT: seconds to keep aborting queued executes after an error (default 0.0).

Developer guide

See DEV.md.

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

ipymini-0.1.4.tar.gz (83.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ipymini-0.1.4-py3-none-any.whl (46.7 kB view details)

Uploaded Python 3

File details

Details for the file ipymini-0.1.4.tar.gz.

File metadata

  • Download URL: ipymini-0.1.4.tar.gz
  • Upload date:
  • Size: 83.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.8

File hashes

Hashes for ipymini-0.1.4.tar.gz
Algorithm Hash digest
SHA256 9f3790b001f19de08ca4f46bc94103fdb45ff6efa2fd6142d0d38b7fb20c53b3
MD5 8ca49e602a1e67710052fa2dfe4f90a0
BLAKE2b-256 0a47d91f2003e54840a147df29a46a5d5befcdbcd0dce542a22e60099fa44652

See more details on using hashes here.

File details

Details for the file ipymini-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: ipymini-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 46.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.8

File hashes

Hashes for ipymini-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 b17cf2eac2e8e76f3adf55e076e7a95909617bb7b4e55cdda05d869212dcf0b1
MD5 e7b74e78e24f5d28115a911079a13626
BLAKE2b-256 a28044a2bff5045a1a9857121f63316fe9eb0bb6f13d550fea59b94996ab4b27

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page