Show More
@@ -4,6 +4,7 b'' | |||
|
4 | 4 | # Distributed under the terms of the Modified BSD License. |
|
5 | 5 | |
|
6 | 6 | import asyncio |
|
7 | import asyncio.exceptions | |
|
7 | 8 | import atexit |
|
8 | 9 | import errno |
|
9 | 10 | import os |
@@ -208,15 +209,23 b' class ScriptMagics(Magics):' | |||
|
208 | 209 | """Call a coroutine on the asyncio thread""" |
|
209 | 210 | return asyncio.run_coroutine_threadsafe(coro, event_loop).result() |
|
210 | 211 | |
|
212 | async def _readchunk(stream): | |
|
213 | try: | |
|
214 | return await stream.readuntil(b"\n") | |
|
215 | except asyncio.exceptions.IncompleteReadError as e: | |
|
216 | return e.partial | |
|
217 | except asyncio.exceptions.LimitOverrunError as e: | |
|
218 | return await stream.read(e.consumed) | |
|
219 | ||
|
211 | 220 | async def _handle_stream(stream, stream_arg, file_object): |
|
212 | 221 | while True: |
|
213 |
|
|
|
214 |
if not |
|
|
222 | chunk = (await _readchunk(stream)).decode("utf8", errors="replace") | |
|
223 | if not chunk: | |
|
215 | 224 | break |
|
216 | 225 | if stream_arg: |
|
217 |
self.shell.user_ns[stream_arg] = |
|
|
226 | self.shell.user_ns[stream_arg] = chunk | |
|
218 | 227 | else: |
|
219 |
file_object.write( |
|
|
228 | file_object.write(chunk) | |
|
220 | 229 | file_object.flush() |
|
221 | 230 | |
|
222 | 231 | async def _stream_communicate(process, cell): |
General Comments 0
You need to be logged in to leave comments.
Login now