Skip to content

Latest commit

 

History

34 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

jupywire

Minimal Jupyter protocol commons: wire-format sessions (message construction, HMAC signing, frame serialize/deserialize) and kernel-client call conventions, shared by kernmini, jupygate, jupyasyncclient, and conkernelclient.

What's here

  • jupywire.session: Session — Jupyter protocol messages: construction, HMAC signing, frame (de)serialization, replay protection — plus the websocket JSON/binary frame helpers (dumps/loads, serialize_binary_message/deserialize_binary_message) and validate_string_dict.
  • jupywire.connect: write_connection_file — kernel connection files with random free-port selection, written 0600.
  • jupywire.route: RouterOps and JmsgQueues — message handling for kernel clients. reply() awaits one execute_reply; run() sends at call time and returns an async generator of every message one execute causes (exec_outs is its listified, rendered form), and turns each on_stdin return value into the correctly parented input_reply (stdin is disabled when that hook is absent). Everything unmatched goes to the app's on_jmsg callback, with JmsgQueues as the pull adapter. A generic request sends any named protocol request, with shell/control sugar and typed verbs (complete, inspect, check, history, comm_msg) on top. The transport supplies execute, send, a session, and a read loop feeding route. DESIGN.md states the full contract; tests/test_route.py is the conformance suite both clients inherit.
  • jupywire.ops: EvalOps — a mixin giving any kernel client the calling conventions (eval, ipy, the ipyfuncs service methods, retr, eval_expr/user_exprs, and the sync fire-and-forget xpush/xenv) over reply, which awaits the shell reply, and execute, which sends without awaiting one. sidecar_=True tags an evaluation for the persistent sidecar; kernmini creates a missing named subshell on first use. Variable operations default to that serial sidecar lane, while ordinary eval defaults to the main shell.

Install

pip install jupywire

Credits

jupywire.session and jupywire.connect are adapted from jupyter_client (jupyter_client.session, jupyter_client.connect, jupyter_client.client), Copyright (c) Jupyter Development Team, distributed under the terms of the Modified BSD License (BSD-3-Clause); see that project's COPYING.md.

The adaptations are trimmed, traitlets-free mirrors that stay wire-compatible. Divergences are noted in each module's docstring.

About

Minimal Jupyter protocol commons: wire-format sessions and kernel-client call conventions

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages