Skip to main content

jupywire

jupywire provides shared Jupyter protocol code for kernmini, jupygate, jupyasyncclient, and conkernelclient. It handles wire-format messages, connection files, and common kernel-client operations.

What's here

The package has four modules:

  • jupywire.session provides Session for constructing and HMAC-signing Jupyter messages. It serializes and deserializes frames and provides replay protection. The module also includes websocket JSON helpers (dumps and loads), binary helpers (serialize_binary_message and deserialize_binary_message), and validate_string_dict.
  • jupywire.connect provides write_connection_file. It selects random free ports and writes a kernel connection file with permissions 0600.
  • jupywire.route provides RouterOps for routing kernel-client messages and JmsgQueues for queue-based access to them.
  • jupywire.ops provides EvalOps, a mixin for evaluation and variable operations on kernel clients.

Install

pip install jupywire

Client messages

RouterOps provides these ways to receive execution results:

  • reply() awaits one execute_reply.
  • run() sends the execution request when called. It returns an async generator of every message caused by that execution.
  • exec_outs collects the results from run and returns a list of rendered results.

run uses each return value from on_stdin to send an input_reply with the correct parent. allow_stdin defaults to whether an on_stdin hook is present. Pass allow_stdin=True without a hook to handle prompts through the application's on_jmsg callback.

Every inbound message also goes once to the application's on_jmsg callback, in receive order, after request routing. This includes collected run messages and stdin handled by a run callback. Receiving a notification does not transfer ownership of that stdin exchange. Keep the handler a cheap dispatcher; an awaitable return blocks the transport reader until it completes. Use JmsgQueues to pull the same messages from queues.

request sends any named protocol request. shell and control provide channel-specific helpers. Named methods include complete, inspect, check, history, and comm_msg.

The transport must supply execute, send, and a session. Its read loop passes incoming messages to route. DESIGN.md specifies the full contract. Both clients inherit the conformance suite in tests/test_route.py.

Evaluation and variables

EvalOps provides eval, ipy, the ipyfuncs service methods, retr, eval_expr, and user_exprs. It also provides xpush and xenv for synchronous fire-and-forget calls.

These operations use the client's reply or execute method. reply waits for a shell reply. execute sends without awaiting a reply.

Pass sidecar_=True to evaluate in the persistent sidecar. kernmini creates a missing named subshell on first use. Variable operations use this serial sidecar by default. Ordinary eval calls use the main shell by default.

Credits

jupywire.session and jupywire.connect are adapted from jupyter_client, specifically jupyter_client.session, jupyter_client.connect, and jupyter_client.client. Copyright (c) Jupyter Development Team. The source is distributed under the Modified BSD License (BSD-3-Clause). See that project's COPYING.md.

The adaptations remove traitlets and retain wire compatibility. Each module's docstring records its differences from the original.

Release files for jupywire 0.1.11

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jupywire 0.1.11
File Size Uploaded
jupywire-0.1.11.tar.gz 24.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for jupywire 0.1.11
File Interpreter ABI Platform
jupywire-0.1.11-py3-none-any.whl Python 3 none any Details

Total release size: 44.2 kB

Release files / jupywire-0.1.11.tar.gz

Download URL jupywire-0.1.11.tar.gz
Size 24.7 kB
Tags Source
SHA-256 checksum
How to use checksums
3410b700dbb6aafc872e501e1ea72b557c570feaaf8504401d6d8be66a2a77df
BLAKE2b-256 checksum
How to use checksums
64229111f81a0f63bd412ff59220a7a1a7d9f365c8968ec2d7423bf6c373e623
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.15

Release files / jupywire-0.1.11-py3-none-any.whl

Download URL jupywire-0.1.11-py3-none-any.whl
Size 19.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
93b0b9a895c2c9e578a7cee80c2759e58d1bcb0dd0c4c49efc3340058d2076d9
BLAKE2b-256 checksum
How to use checksums
a99190aaa8c7d346adfc383fb4a17cd9994889b9b21d625bff2a649a2b54c34e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.15

Release history Release notifications | RSS feed

0.1.12

2 release files

This release

0.1.11 This release

2 release files

0.1.10

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page