Show More
@@ -34,22 +34,15 b' def _curio_runner(coroutine):' | |||
|
34 | 34 | return curio.run(coroutine) |
|
35 | 35 | |
|
36 | 36 | |
|
37 | if sys.version_info > (3, 5): | |
|
38 | # nose refuses to avoid this file and async def is invalidsyntax | |
|
39 | s = dedent( | |
|
40 |
|
|
|
41 | def _trio_runner(function): | |
|
42 | import trio | |
|
43 | async def loc(coro): | |
|
44 | """ | |
|
45 | We need the dummy no-op async def to protect from | |
|
46 | trio's internal. See https://github.com/python-trio/trio/issues/89 | |
|
47 | """ | |
|
48 | return await coro | |
|
49 | return trio.run(loc, function) | |
|
50 | ''' | |
|
51 | ) | |
|
52 | exec(s, globals(), locals()) | |
|
37 | def _trio_runner(function): | |
|
38 | import trio | |
|
39 | async def loc(coro): | |
|
40 | """ | |
|
41 | We need the dummy no-op async def to protect from | |
|
42 | trio's internal. See https://github.com/python-trio/trio/issues/89 | |
|
43 | """ | |
|
44 | return await coro | |
|
45 | return trio.run(loc, function) | |
|
53 | 46 | |
|
54 | 47 | |
|
55 | 48 | def _asyncify(code: str) -> str: |
@@ -12,9 +12,10 b' notebook interface or any other frontend using the Jupyter protocol will need to' | |||
|
12 | 12 | use a newer version of IPykernel. The details of how async code runs in |
|
13 | 13 | IPykernel will differ between IPython, IPykernel and their versions. |
|
14 | 14 | |
|
15 | When a supported library is used, IPython will automatically `await` Futures | |
|
16 |
|
|
|
17 | use at top level scope, or if any structure valid only in `async def | |
|
15 | When a supported library is used, IPython will automatically `await` Futures and | |
|
16 | Coroutines in the REPL. This will happen if an :ref:`await <await>` (or any | |
|
17 | other async constructs like async-with, async-for) is use at top level scope, or | |
|
18 | if any structure valid only in `async def | |
|
18 | 19 | <https://docs.python.org/3/reference/compound_stmts.html#async-def>`_ function |
|
19 | 20 | context are present. For example, the following being a syntax error in the |
|
20 | 21 | Python REPL:: |
@@ -117,6 +118,15 b' started only when awaited for the first time. That is to say, in first example,' | |||
|
117 | 118 | no network request is done between ``In[1]`` and ``In[2]``. |
|
118 | 119 | |
|
119 | 120 | |
|
121 | Effects on IPython.embed() | |
|
122 | ========================== | |
|
123 | ||
|
124 | IPython core being synchronous, the use of ``IPython.embed()`` will now require | |
|
125 | a loop to run. This affect the ability to nest ``IPython.embed()`` which may | |
|
126 | require you to install alternate IO libraries like ``curio`` and ``trio`` | |
|
127 | ||
|
128 | ||
|
129 | ||
|
120 | 130 | Internals |
|
121 | 131 | ========= |
|
122 | 132 |
@@ -63,7 +63,7 b' Change to Nested Embed' | |||
|
63 | 63 | |
|
64 | 64 | The introduction of the ability to run async code had ripple effect on the |
|
65 | 65 | ability to use nested IPython. You may need to install the ``trio`` library |
|
66 | (version 05 at the time of this writing) to | |
|
66 | (version 0.5 at the time of this writing) to | |
|
67 | 67 | have this feature working. |
|
68 | 68 | |
|
69 | 69 |
General Comments 0
You need to be logged in to leave comments.
Login now