jupyasyncclient 0.2.21__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,141 @@
1
+ Metadata-Version: 2.4
2
+ Name: jupyasyncclient
3
+ Version: 0.2.21
4
+ Summary: Async kernel client for Jupyter Server via HTTP/WebSocket
5
+ Author: Jeremy Howard
6
+ License-Expression: Apache-2.0
7
+ Project-URL: Repository, https://github.com/AnswerDotAI/jupyasyncclient
8
+ Project-URL: Documentation, https://AnswerDotAI.github.io/jupyasyncclient/
9
+ Requires-Python: >=3.10
10
+ Description-Content-Type: text/markdown
11
+ Requires-Dist: jupywire>=0.1.14
12
+ Requires-Dist: fasttransport>=0.0.2
13
+ Requires-Dist: fastcore>=2.1.17
14
+ Requires-Dist: websockets>=13
15
+ Requires-Dist: fastspec>=0.2.6
16
+ Provides-Extra: dev
17
+ Requires-Dist: pytest>=7; extra == "dev"
18
+ Requires-Dist: pytest-asyncio>=0.23; extra == "dev"
19
+ Requires-Dist: jupyter_server>=2; extra == "dev"
20
+ Requires-Dist: ipykernel; extra == "dev"
21
+ Requires-Dist: pytest-timeout; extra == "dev"
22
+ Requires-Dist: rustygate>=0.1.25; extra == "dev"
23
+ Requires-Dist: ipymini>=0.1.23; extra == "dev"
24
+ Requires-Dist: ipyfuncs>=0.0.1; extra == "dev"
25
+
26
+ # jupyasyncclient
27
+
28
+
29
+ <!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->
30
+
31
+ `jupyasyncclient` is an async Python client for running code on Jupyter kernels. It connects to servers that implement the standard kernels API, including [rustygate](https://github.com/AnswerDotAI/rustygate), jupygate, and jupyter_server.
32
+
33
+ Kernel creation, interruption, restart, and deletion use HTTP. Each client exchanges messages over one websocket. Sends await the websocket transport. The client does not depend on zmq or tornado.
34
+
35
+ Three classes provide jupyter_client-style interfaces:
36
+
37
+ - [`JupyAsyncKernelClient`](https://AnswerDotAI.github.io/jupyasyncclient/core.html#jupyasynckernelclient) manages one kernel’s lifecycle, channels, and messages.
38
+ - `JupyAsyncKernelManager` starts and stops one kernel and creates clients for it.
39
+ - `JupyAsyncMultiKernelManager` manages multiple kernels. `ensure_kernel('some-key')` returns the live kernel registered under that key or starts one.
40
+
41
+ The [core notebook](00_core.ipynb) builds the client bottom-up and demonstrates every method against a live server. The managers are HTTP wrappers in plain modules. Two other notebooks cover gateway APIs:
42
+
43
+ - [term](01_term.ipynb) demonstrates [`JupyAsyncTerminalClient`](https://AnswerDotAI.github.io/jupyasyncclient/term.html#jupyasyncterminalclient) for gateway-hosted terminals.
44
+ - [files](02_files.ipynb) builds [`JupyAsyncFilesClient`](https://AnswerDotAI.github.io/jupyasyncclient/files.html#jupyasyncfilesclient) and [`JupyAsyncCellsClient`](https://AnswerDotAI.github.io/jupyasyncclient/files.html#jupyasynccellsclient) over the files and cells APIs. It includes [`apply_ops`](https://AnswerDotAI.github.io/jupyasyncclient/files.html#apply_ops) for updating a local view from a kernel’s change broadcasts.
45
+
46
+ [`JupyAsyncCellsClient.view`](https://AnswerDotAI.github.io/jupyasyncclient/files.html#jupyasynccellsclient.view) returns selected cells with the current notebook path and requested metadata. `cells` returns the selected cell list. Both accept a filename or a kernel binding through the client constructor.
47
+
48
+ ## Install
49
+
50
+ ``` sh
51
+ pip install jupyasyncclient
52
+ ```
53
+
54
+ You also need a kernel server. These examples use rustygate serving [ipymini](https://github.com/AnswerDotAI/ipymini) kernels. The test suite also runs against a stock jupyter_server.
55
+
56
+ ## Use
57
+
58
+ The client’s `execute`, `complete`, `inspect`, `history`, `kernel_info`, and `wait_for_ready` methods follow their jupyter_client namesakes. Choose how to receive execution results:
59
+
60
+ - `execute` sends without waiting for a reply.
61
+ - `reply` awaits one `execute_reply`.
62
+ - `run` collects every message caused by an execution.
63
+
64
+ Every inbound message also reaches the `on_jmsg` callback once, in receive order, after request routing. The callback can be synchronous or asynchronous. The reader awaits it before taking the next message. Do not await replies on the same websocket from the callback. `JmsgQueues` provides queues for applications that need to pull the same messages instead.
65
+
66
+ Every protocol `*_request` type is callable by name and returns an awaitable for its reply. This includes subshell requests. New protocol messages do not require a client release.
67
+
68
+ Messages are standard Jupyter dictionaries with a `channel` key. The server handles zmq-specific behaviour, including sync-send edge consumption, slow-joiner subscriptions, and socket identity.
69
+
70
+ ``` python
71
+ import asyncio
72
+ from rustygate.tools import start_gateway
73
+ ```
74
+
75
+ ``` python
76
+ g = start_gateway()
77
+ g
78
+ ```
79
+
80
+ <Gateway http://127.0.0.1:60487 pid=47781 up>
81
+
82
+ `start_new_server_kernel` starts a kernel and returns its manager and a ready client. This example uses a single `jmsg` queue for iopub and stdin messages:
83
+
84
+ ``` python
85
+ km, kc = await start_new_server_kernel(g.url)
86
+ qs = JmsgQueues(kc, queues=('jmsg',), merge=dict(iopub='jmsg', stdin='jmsg'))
87
+ rep = await kc.reply("print('hello'); 6*7", timeout=30)
88
+ rep['content']['status']
89
+ ```
90
+
91
+ 'ok'
92
+
93
+ Kernel output arrives on the iopub channel. Read the `stream` message from the queue:
94
+
95
+ ``` python
96
+ m = await qs.jmsg_for('stream', timeout=15)
97
+ m['content']['text']
98
+ ```
99
+
100
+ 'hello\n'
101
+
102
+ Calling `input()` in the kernel produces an `input_request` on the stdin channel. Answer with the client’s `input` method. It sets the reply’s parent to the request:
103
+
104
+ ``` python
105
+ fut = asyncio.ensure_future(kc.reply("name = input('who? ')", timeout=30))
106
+ prompt = await qs.jmsg_for('input_request', timeout=15)
107
+ kc.input('Jeremy')
108
+ (await fut)['content']['status']
109
+ ```
110
+
111
+ 'ok'
112
+
113
+ Call protocol requests by name and await their replies. This example creates and deletes a JEP 91 subshell:
114
+
115
+ ``` python
116
+ sub = (await kc.create_subshell(timeout=15))['content']['subshell_id']
117
+ rep = await kc.reply('40+2', timeout=30, subshell_id=sub)
118
+ await kc.delete_subshell(sub, timeout=15)
119
+ rep['content']['status']
120
+ ```
121
+
122
+ 'ok'
123
+
124
+ Use the multimanager to keep a kernel for each named task. Repeated calls to `ensure_kernel` with the same key reuse its live kernel:
125
+
126
+ ``` python
127
+ mkm = JupyAsyncMultiKernelManager(g.url)
128
+ k1 = await mkm.ensure_kernel('analysis')
129
+ k2 = await mkm.ensure_kernel('analysis')
130
+ k1 == k2
131
+ ```
132
+
133
+ True
134
+
135
+ ``` python
136
+ await kc.aclose()
137
+ await km.shutdown_kernel()
138
+ await mkm.shutdown_all()
139
+ ```
140
+
141
+ Pass `token=...` to any of the three classes when the server requires a bearer token. HTTP requests send it in the `Authorization` header. Websocket connections send it as a query parameter.
@@ -0,0 +1,116 @@
1
+ # jupyasyncclient
2
+
3
+
4
+ <!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->
5
+
6
+ `jupyasyncclient` is an async Python client for running code on Jupyter kernels. It connects to servers that implement the standard kernels API, including [rustygate](https://github.com/AnswerDotAI/rustygate), jupygate, and jupyter_server.
7
+
8
+ Kernel creation, interruption, restart, and deletion use HTTP. Each client exchanges messages over one websocket. Sends await the websocket transport. The client does not depend on zmq or tornado.
9
+
10
+ Three classes provide jupyter_client-style interfaces:
11
+
12
+ - [`JupyAsyncKernelClient`](https://AnswerDotAI.github.io/jupyasyncclient/core.html#jupyasynckernelclient) manages one kernel’s lifecycle, channels, and messages.
13
+ - `JupyAsyncKernelManager` starts and stops one kernel and creates clients for it.
14
+ - `JupyAsyncMultiKernelManager` manages multiple kernels. `ensure_kernel('some-key')` returns the live kernel registered under that key or starts one.
15
+
16
+ The [core notebook](00_core.ipynb) builds the client bottom-up and demonstrates every method against a live server. The managers are HTTP wrappers in plain modules. Two other notebooks cover gateway APIs:
17
+
18
+ - [term](01_term.ipynb) demonstrates [`JupyAsyncTerminalClient`](https://AnswerDotAI.github.io/jupyasyncclient/term.html#jupyasyncterminalclient) for gateway-hosted terminals.
19
+ - [files](02_files.ipynb) builds [`JupyAsyncFilesClient`](https://AnswerDotAI.github.io/jupyasyncclient/files.html#jupyasyncfilesclient) and [`JupyAsyncCellsClient`](https://AnswerDotAI.github.io/jupyasyncclient/files.html#jupyasynccellsclient) over the files and cells APIs. It includes [`apply_ops`](https://AnswerDotAI.github.io/jupyasyncclient/files.html#apply_ops) for updating a local view from a kernel’s change broadcasts.
20
+
21
+ [`JupyAsyncCellsClient.view`](https://AnswerDotAI.github.io/jupyasyncclient/files.html#jupyasynccellsclient.view) returns selected cells with the current notebook path and requested metadata. `cells` returns the selected cell list. Both accept a filename or a kernel binding through the client constructor.
22
+
23
+ ## Install
24
+
25
+ ``` sh
26
+ pip install jupyasyncclient
27
+ ```
28
+
29
+ You also need a kernel server. These examples use rustygate serving [ipymini](https://github.com/AnswerDotAI/ipymini) kernels. The test suite also runs against a stock jupyter_server.
30
+
31
+ ## Use
32
+
33
+ The client’s `execute`, `complete`, `inspect`, `history`, `kernel_info`, and `wait_for_ready` methods follow their jupyter_client namesakes. Choose how to receive execution results:
34
+
35
+ - `execute` sends without waiting for a reply.
36
+ - `reply` awaits one `execute_reply`.
37
+ - `run` collects every message caused by an execution.
38
+
39
+ Every inbound message also reaches the `on_jmsg` callback once, in receive order, after request routing. The callback can be synchronous or asynchronous. The reader awaits it before taking the next message. Do not await replies on the same websocket from the callback. `JmsgQueues` provides queues for applications that need to pull the same messages instead.
40
+
41
+ Every protocol `*_request` type is callable by name and returns an awaitable for its reply. This includes subshell requests. New protocol messages do not require a client release.
42
+
43
+ Messages are standard Jupyter dictionaries with a `channel` key. The server handles zmq-specific behaviour, including sync-send edge consumption, slow-joiner subscriptions, and socket identity.
44
+
45
+ ``` python
46
+ import asyncio
47
+ from rustygate.tools import start_gateway
48
+ ```
49
+
50
+ ``` python
51
+ g = start_gateway()
52
+ g
53
+ ```
54
+
55
+ <Gateway http://127.0.0.1:60487 pid=47781 up>
56
+
57
+ `start_new_server_kernel` starts a kernel and returns its manager and a ready client. This example uses a single `jmsg` queue for iopub and stdin messages:
58
+
59
+ ``` python
60
+ km, kc = await start_new_server_kernel(g.url)
61
+ qs = JmsgQueues(kc, queues=('jmsg',), merge=dict(iopub='jmsg', stdin='jmsg'))
62
+ rep = await kc.reply("print('hello'); 6*7", timeout=30)
63
+ rep['content']['status']
64
+ ```
65
+
66
+ 'ok'
67
+
68
+ Kernel output arrives on the iopub channel. Read the `stream` message from the queue:
69
+
70
+ ``` python
71
+ m = await qs.jmsg_for('stream', timeout=15)
72
+ m['content']['text']
73
+ ```
74
+
75
+ 'hello\n'
76
+
77
+ Calling `input()` in the kernel produces an `input_request` on the stdin channel. Answer with the client’s `input` method. It sets the reply’s parent to the request:
78
+
79
+ ``` python
80
+ fut = asyncio.ensure_future(kc.reply("name = input('who? ')", timeout=30))
81
+ prompt = await qs.jmsg_for('input_request', timeout=15)
82
+ kc.input('Jeremy')
83
+ (await fut)['content']['status']
84
+ ```
85
+
86
+ 'ok'
87
+
88
+ Call protocol requests by name and await their replies. This example creates and deletes a JEP 91 subshell:
89
+
90
+ ``` python
91
+ sub = (await kc.create_subshell(timeout=15))['content']['subshell_id']
92
+ rep = await kc.reply('40+2', timeout=30, subshell_id=sub)
93
+ await kc.delete_subshell(sub, timeout=15)
94
+ rep['content']['status']
95
+ ```
96
+
97
+ 'ok'
98
+
99
+ Use the multimanager to keep a kernel for each named task. Repeated calls to `ensure_kernel` with the same key reuse its live kernel:
100
+
101
+ ``` python
102
+ mkm = JupyAsyncMultiKernelManager(g.url)
103
+ k1 = await mkm.ensure_kernel('analysis')
104
+ k2 = await mkm.ensure_kernel('analysis')
105
+ k1 == k2
106
+ ```
107
+
108
+ True
109
+
110
+ ``` python
111
+ await kc.aclose()
112
+ await km.shutdown_kernel()
113
+ await mkm.shutdown_all()
114
+ ```
115
+
116
+ Pass `token=...` to any of the three classes when the server requires a bearer token. HTTP requests send it in the `Authorization` header. Websocket connections send it as a query parameter.
@@ -0,0 +1,17 @@
1
+ """Async kernel client for Jupyter Server via HTTP/WebSocket
2
+
3
+ Modules:
4
+
5
+ - `jupyasyncclient.files`: Files and cells over the gateway's contents and cells APIs
6
+ - `jupyasyncclient.term`: A client for gateway-hosted terminals: REST lifecycle plus one websocket attachment"""
7
+
8
+ __version__ = "0.2.21"
9
+
10
+ from jupywire.route import JmsgQueues
11
+ from .core import JupyAsyncKernelClient, DeadKernelError
12
+ from .manager import JupyAsyncKernelManager, start_new_server_kernel
13
+ from .multimanager import JupyAsyncMultiKernelManager
14
+ from .term import JupyAsyncTerminalClient
15
+ from .files import JupyAsyncFilesClient, JupyAsyncCellsClient, apply_ops
16
+
17
+ __all__ = ["JupyAsyncKernelClient", "JmsgQueues", "DeadKernelError", "JupyAsyncKernelManager", "JupyAsyncMultiKernelManager", "JupyAsyncTerminalClient", "JupyAsyncFilesClient", "JupyAsyncCellsClient", "apply_ops", "start_new_server_kernel"]
@@ -0,0 +1,147 @@
1
+ # Autogenerated by nbdev
2
+
3
+ d = { 'settings': { 'branch': 'main',
4
+ 'doc_baseurl': '/jupyasyncclient',
5
+ 'doc_host': 'https://AnswerDotAI.github.io',
6
+ 'git_url': 'https://github.com/AnswerDotAI/jupyasyncclient',
7
+ 'lib_path': 'jupyasyncclient'},
8
+ 'syms': { 'jupyasyncclient.core': { 'jupyasyncclient.core.JupyAsyncKernelClient': ( 'core.html#jupyasynckernelclient',
9
+ 'jupyasyncclient/core.py'),
10
+ 'jupyasyncclient.core.JupyAsyncKernelClient.__aenter__': ( 'core.html#jupyasynckernelclient.__aenter__',
11
+ 'jupyasyncclient/core.py'),
12
+ 'jupyasyncclient.core.JupyAsyncKernelClient.__aexit__': ( 'core.html#jupyasynckernelclient.__aexit__',
13
+ 'jupyasyncclient/core.py'),
14
+ 'jupyasyncclient.core.JupyAsyncKernelClient.__init__': ( 'core.html#jupyasynckernelclient.__init__',
15
+ 'jupyasyncclient/core.py'),
16
+ 'jupyasyncclient.core.JupyAsyncKernelClient._ensure_started': ( 'core.html#jupyasynckernelclient._ensure_started',
17
+ 'jupyasyncclient/core.py'),
18
+ 'jupyasyncclient.core.JupyAsyncKernelClient._exec_req': ( 'core.html#jupyasynckernelclient._exec_req',
19
+ 'jupyasyncclient/core.py'),
20
+ 'jupyasyncclient.core.JupyAsyncKernelClient._kpath': ( 'core.html#jupyasynckernelclient._kpath',
21
+ 'jupyasyncclient/core.py'),
22
+ 'jupyasyncclient.core.JupyAsyncKernelClient._reconnect': ( 'core.html#jupyasynckernelclient._reconnect',
23
+ 'jupyasyncclient/core.py'),
24
+ 'jupyasyncclient.core.JupyAsyncKernelClient._recv_loop': ( 'core.html#jupyasynckernelclient._recv_loop',
25
+ 'jupyasyncclient/core.py'),
26
+ 'jupyasyncclient.core.JupyAsyncKernelClient._send_loop': ( 'core.html#jupyasynckernelclient._send_loop',
27
+ 'jupyasyncclient/core.py'),
28
+ 'jupyasyncclient.core.JupyAsyncKernelClient._start_ws': ( 'core.html#jupyasynckernelclient._start_ws',
29
+ 'jupyasyncclient/core.py'),
30
+ 'jupyasyncclient.core.JupyAsyncKernelClient.aclose': ( 'core.html#jupyasynckernelclient.aclose',
31
+ 'jupyasyncclient/core.py'),
32
+ 'jupyasyncclient.core.JupyAsyncKernelClient.channels_running': ( 'core.html#jupyasynckernelclient.channels_running',
33
+ 'jupyasyncclient/core.py'),
34
+ 'jupyasyncclient.core.JupyAsyncKernelClient.comm_info': ( 'core.html#jupyasynckernelclient.comm_info',
35
+ 'jupyasyncclient/core.py'),
36
+ 'jupyasyncclient.core.JupyAsyncKernelClient.connect': ( 'core.html#jupyasynckernelclient.connect',
37
+ 'jupyasyncclient/core.py'),
38
+ 'jupyasyncclient.core.JupyAsyncKernelClient.create_subshell': ( 'core.html#jupyasynckernelclient.create_subshell',
39
+ 'jupyasyncclient/core.py'),
40
+ 'jupyasyncclient.core.JupyAsyncKernelClient.delete_subshell': ( 'core.html#jupyasynckernelclient.delete_subshell',
41
+ 'jupyasyncclient/core.py'),
42
+ 'jupyasyncclient.core.JupyAsyncKernelClient.execute': ( 'core.html#jupyasynckernelclient.execute',
43
+ 'jupyasyncclient/core.py'),
44
+ 'jupyasyncclient.core.JupyAsyncKernelClient.interrupt_kernel': ( 'core.html#jupyasynckernelclient.interrupt_kernel',
45
+ 'jupyasyncclient/core.py'),
46
+ 'jupyasyncclient.core.JupyAsyncKernelClient.is_alive': ( 'core.html#jupyasynckernelclient.is_alive',
47
+ 'jupyasyncclient/core.py'),
48
+ 'jupyasyncclient.core.JupyAsyncKernelClient.kernel_info': ( 'core.html#jupyasynckernelclient.kernel_info',
49
+ 'jupyasyncclient/core.py'),
50
+ 'jupyasyncclient.core.JupyAsyncKernelClient.list_subshell': ( 'core.html#jupyasynckernelclient.list_subshell',
51
+ 'jupyasyncclient/core.py'),
52
+ 'jupyasyncclient.core.JupyAsyncKernelClient.model': ( 'core.html#jupyasynckernelclient.model',
53
+ 'jupyasyncclient/core.py'),
54
+ 'jupyasyncclient.core.JupyAsyncKernelClient.release': ( 'core.html#jupyasynckernelclient.release',
55
+ 'jupyasyncclient/core.py'),
56
+ 'jupyasyncclient.core.JupyAsyncKernelClient.restart_kernel': ( 'core.html#jupyasynckernelclient.restart_kernel',
57
+ 'jupyasyncclient/core.py'),
58
+ 'jupyasyncclient.core.JupyAsyncKernelClient.send': ( 'core.html#jupyasynckernelclient.send',
59
+ 'jupyasyncclient/core.py'),
60
+ 'jupyasyncclient.core.JupyAsyncKernelClient.shutdown': ( 'core.html#jupyasynckernelclient.shutdown',
61
+ 'jupyasyncclient/core.py'),
62
+ 'jupyasyncclient.core.JupyAsyncKernelClient.shutdown_kernel': ( 'core.html#jupyasynckernelclient.shutdown_kernel',
63
+ 'jupyasyncclient/core.py'),
64
+ 'jupyasyncclient.core.JupyAsyncKernelClient.start_channels': ( 'core.html#jupyasynckernelclient.start_channels',
65
+ 'jupyasyncclient/core.py'),
66
+ 'jupyasyncclient.core.JupyAsyncKernelClient.start_kernel': ( 'core.html#jupyasynckernelclient.start_kernel',
67
+ 'jupyasyncclient/core.py'),
68
+ 'jupyasyncclient.core.JupyAsyncKernelClient.stop_channels': ( 'core.html#jupyasynckernelclient.stop_channels',
69
+ 'jupyasyncclient/core.py'),
70
+ 'jupyasyncclient.core.JupyAsyncKernelClient.wait_for_ready': ( 'core.html#jupyasynckernelclient.wait_for_ready',
71
+ 'jupyasyncclient/core.py'),
72
+ 'jupyasyncclient.core.KernelApi': ('core.html#kernelapi', 'jupyasyncclient/core.py'),
73
+ 'jupyasyncclient.core.KernelApi.__init__': ( 'core.html#kernelapi.__init__',
74
+ 'jupyasyncclient/core.py'),
75
+ 'jupyasyncclient.core.KernelApi._kpath': ('core.html#kernelapi._kpath', 'jupyasyncclient/core.py'),
76
+ 'jupyasyncclient.core.KernelApi._ws_ssl': ('core.html#kernelapi._ws_ssl', 'jupyasyncclient/core.py'),
77
+ 'jupyasyncclient.core.KernelApi.kernel_for': ( 'core.html#kernelapi.kernel_for',
78
+ 'jupyasyncclient/core.py'),
79
+ 'jupyasyncclient.core._gen_request': ('core.html#_gen_request', 'jupyasyncclient/core.py'),
80
+ 'jupyasyncclient.core._join_url': ('core.html#_join_url', 'jupyasyncclient/core.py'),
81
+ 'jupyasyncclient.core.build_spec': ('core.html#build_spec', 'jupyasyncclient/core.py'),
82
+ 'jupyasyncclient.core.rg_spec': ('core.html#rg_spec', 'jupyasyncclient/core.py')},
83
+ 'jupyasyncclient.files': { 'jupyasyncclient.files.JupyAsyncCellsClient': ( 'files.html#jupyasynccellsclient',
84
+ 'jupyasyncclient/files.py'),
85
+ 'jupyasyncclient.files.JupyAsyncCellsClient.__getitem__': ( 'files.html#jupyasynccellsclient.__getitem__',
86
+ 'jupyasyncclient/files.py'),
87
+ 'jupyasyncclient.files.JupyAsyncCellsClient.__init__': ( 'files.html#jupyasynccellsclient.__init__',
88
+ 'jupyasyncclient/files.py'),
89
+ 'jupyasyncclient.files.JupyAsyncCellsClient._lookup': ( 'files.html#jupyasynccellsclient._lookup',
90
+ 'jupyasyncclient/files.py'),
91
+ 'jupyasyncclient.files.JupyAsyncCellsClient.apply': ( 'files.html#jupyasynccellsclient.apply',
92
+ 'jupyasyncclient/files.py'),
93
+ 'jupyasyncclient.files.JupyAsyncCellsClient.cells': ( 'files.html#jupyasynccellsclient.cells',
94
+ 'jupyasyncclient/files.py'),
95
+ 'jupyasyncclient.files.JupyAsyncCellsClient.view': ( 'files.html#jupyasynccellsclient.view',
96
+ 'jupyasyncclient/files.py'),
97
+ 'jupyasyncclient.files.JupyAsyncFilesClient': ( 'files.html#jupyasyncfilesclient',
98
+ 'jupyasyncclient/files.py'),
99
+ 'jupyasyncclient.files.JupyAsyncFilesClient.copy': ( 'files.html#jupyasyncfilesclient.copy',
100
+ 'jupyasyncclient/files.py'),
101
+ 'jupyasyncclient.files.JupyAsyncFilesClient.delete': ( 'files.html#jupyasyncfilesclient.delete',
102
+ 'jupyasyncclient/files.py'),
103
+ 'jupyasyncclient.files.JupyAsyncFilesClient.edit': ( 'files.html#jupyasyncfilesclient.edit',
104
+ 'jupyasyncclient/files.py'),
105
+ 'jupyasyncclient.files.JupyAsyncFilesClient.get': ( 'files.html#jupyasyncfilesclient.get',
106
+ 'jupyasyncclient/files.py'),
107
+ 'jupyasyncclient.files.JupyAsyncFilesClient.listing': ( 'files.html#jupyasyncfilesclient.listing',
108
+ 'jupyasyncclient/files.py'),
109
+ 'jupyasyncclient.files.JupyAsyncFilesClient.mkdir': ( 'files.html#jupyasyncfilesclient.mkdir',
110
+ 'jupyasyncclient/files.py'),
111
+ 'jupyasyncclient.files.JupyAsyncFilesClient.patch': ( 'files.html#jupyasyncfilesclient.patch',
112
+ 'jupyasyncclient/files.py'),
113
+ 'jupyasyncclient.files.JupyAsyncFilesClient.post': ( 'files.html#jupyasyncfilesclient.post',
114
+ 'jupyasyncclient/files.py'),
115
+ 'jupyasyncclient.files.JupyAsyncFilesClient.put': ( 'files.html#jupyasyncfilesclient.put',
116
+ 'jupyasyncclient/files.py'),
117
+ 'jupyasyncclient.files.JupyAsyncFilesClient.read': ( 'files.html#jupyasyncfilesclient.read',
118
+ 'jupyasyncclient/files.py'),
119
+ 'jupyasyncclient.files.JupyAsyncFilesClient.rename': ( 'files.html#jupyasyncfilesclient.rename',
120
+ 'jupyasyncclient/files.py'),
121
+ 'jupyasyncclient.files.JupyAsyncFilesClient.write': ( 'files.html#jupyasyncfilesclient.write',
122
+ 'jupyasyncclient/files.py'),
123
+ 'jupyasyncclient.files._cs': ('files.html#_cs', 'jupyasyncclient/files.py'),
124
+ 'jupyasyncclient.files._update_cell': ('files.html#_update_cell', 'jupyasyncclient/files.py'),
125
+ 'jupyasyncclient.files.apply_ops': ('files.html#apply_ops', 'jupyasyncclient/files.py')},
126
+ 'jupyasyncclient.term': { 'jupyasyncclient.term.JupyAsyncTerminalClient': ( 'term.html#jupyasyncterminalclient',
127
+ 'jupyasyncclient/term.py'),
128
+ 'jupyasyncclient.term.JupyAsyncTerminalClient.__init__': ( 'term.html#jupyasyncterminalclient.__init__',
129
+ 'jupyasyncclient/term.py'),
130
+ 'jupyasyncclient.term.JupyAsyncTerminalClient._tpath': ( 'term.html#jupyasyncterminalclient._tpath',
131
+ 'jupyasyncclient/term.py'),
132
+ 'jupyasyncclient.term.JupyAsyncTerminalClient.aclose': ( 'term.html#jupyasyncterminalclient.aclose',
133
+ 'jupyasyncclient/term.py'),
134
+ 'jupyasyncclient.term.JupyAsyncTerminalClient.connect': ( 'term.html#jupyasyncterminalclient.connect',
135
+ 'jupyasyncclient/term.py'),
136
+ 'jupyasyncclient.term.JupyAsyncTerminalClient.frames': ( 'term.html#jupyasyncterminalclient.frames',
137
+ 'jupyasyncclient/term.py'),
138
+ 'jupyasyncclient.term.JupyAsyncTerminalClient.list_terminals': ( 'term.html#jupyasyncterminalclient.list_terminals',
139
+ 'jupyasyncclient/term.py'),
140
+ 'jupyasyncclient.term.JupyAsyncTerminalClient.resize': ( 'term.html#jupyasyncterminalclient.resize',
141
+ 'jupyasyncclient/term.py'),
142
+ 'jupyasyncclient.term.JupyAsyncTerminalClient.shutdown_terminal': ( 'term.html#jupyasyncterminalclient.shutdown_terminal',
143
+ 'jupyasyncclient/term.py'),
144
+ 'jupyasyncclient.term.JupyAsyncTerminalClient.start_terminal': ( 'term.html#jupyasyncterminalclient.start_terminal',
145
+ 'jupyasyncclient/term.py'),
146
+ 'jupyasyncclient.term.JupyAsyncTerminalClient.write': ( 'term.html#jupyasyncterminalclient.write',
147
+ 'jupyasyncclient/term.py')}}}