Skip to main content

A concurrent python kernel for Jupyter supporting AnyIO, AsyncIO and Trio.

Project description

Async kernel

pypi downloads CI Ruff uv basedpyright - checked Built with Material for MkDocs codecov

logo-svg

Async kernel is a Python Jupyter kernel with concurrent message handling.

Messages are processed fairly whilst preventing asynchronous deadlocks by using a unique message handler per channel, message_type and subshell_id.

Highlights

Documentation

Installation

pip install async-kernel

Asyncio

An asyncio kernel based backend with the name 'async' is installed when the kernel is installed.

Trio backend

To add a kernel spec for a trio backend.

pip install trio
async-kernel -a async-trio --interface.backend=trio

For further detail about kernel spec customisation see command line usage.

Message handling

  • When a message is received the msg_handler is called with:

    • 'job' (a dict of msg, received_time and ident)
    • The channel
    • msg_type
    • A function send_reply
  • The msg_handler

    • determines the subshell_id and run mode.
    • obtains the handler from the kernel with the same name as the msg_type.
    • determines the run mode
    • creates cached version of the run_handler with a unique version per:
      • The handler
      • channel
      • subshell_id
      • send_reply (constant or per-channel)
    • Obtains the caller associated with the channel and schedules execution of the cached handler

Run mode

The run modes available are:

  • RunMode.directCaller.call_direct: Run the request directly in the scheduler.
  • RunMode.queueCaller.queue_call: Run the request in a queue dedicated to the subshell, handler & channel.
  • RunMode.taskCaller.call_soon: Run the request in a separate task.
  • RunMode.threadCaller.to_thread: Run the request in a separate worker thread.

These are the currently assigned run modes.

SocketID shell control
comm_close direct direct
comm_info_request direct direct
comm_msg queue queue
comm_open direct direct
complete_request thread thread
create_subshell_request None thread
debug_request None queue
delete_subshell_request None thread
execute_request queue queue
history_request thread thread
inspect_request thread thread
interrupt_request direct direct
is_complete_request thread thread
kernel_info_request direct direct
list_subshell_request None direct
shutdown_request None direct

Origin

Async kernel started as a fork of IPyKernel. Thank you to the original contributors of IPyKernel that made Async kernel possible.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

async_kernel-0.12.1.tar.gz (288.6 kB view details)

Uploaded Source

Built Distribution

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

async_kernel-0.12.1-py3-none-any.whl (94.3 kB view details)

Uploaded Python 3

File details

Details for the file async_kernel-0.12.1.tar.gz.

File metadata

  • Download URL: async_kernel-0.12.1.tar.gz
  • Upload date:
  • Size: 288.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for async_kernel-0.12.1.tar.gz
Algorithm Hash digest
SHA256 b7cb0726be3badbc628fd2f2b6b07e0e317cf7a0ed962382def278b99aacdc99
MD5 1116b56eb10257e407571d7c567ba1be
BLAKE2b-256 fedb792581857a3549ed2689d3dad1f407748bf1f265366a8b99a59fcf83bb96

See more details on using hashes here.

Provenance

The following attestation bundles were made for async_kernel-0.12.1.tar.gz:

Publisher: publish-to-pypi.yml on fleming79/async-kernel

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file async_kernel-0.12.1-py3-none-any.whl.

File metadata

  • Download URL: async_kernel-0.12.1-py3-none-any.whl
  • Upload date:
  • Size: 94.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for async_kernel-0.12.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b6948667f3c3def02f1dd0be819be98ddefc5e1722fe1433c23edcf032f0ddf8
MD5 fa241034865b92d82a68eec055addff6
BLAKE2b-256 6268268becd2895b0fb707e98d4ec182978b4b2074576bbaedf513bb0a6f759a

See more details on using hashes here.

Provenance

The following attestation bundles were made for async_kernel-0.12.1-py3-none-any.whl:

Publisher: publish-to-pypi.yml on fleming79/async-kernel

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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