Using the `--IPKernelApp.trio_loop=True` doesn't appear to set the main loop to use `trio`
- Dominant language
- Python
- Stars
- 734
- Forks
- 412
- Avg merge
- 1d 5h
- Merged PRs (30d)
- 8
Description
To reproduce:
```
% ipython --IPKernelApp.trio_loop=True
Python 3.11.6 | packaged by conda-forge | (main, Oct 3 2023, 10:37:07) [Clang 15.0.7 ]
Type 'copyright', 'credits' or 'license' for more information
IPython 8.24.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: import trio
In [2]: await trio.sleep(1)
...
RuntimeError: must be called from async context
```
However the following does work, which is not expected:
```
% ipython --IPKernelApp.trio_loop=True
Python 3.11.6 | packaged by conda-forge | (main, Oct 3 2023, 10:37:07) [Clang 15.0.7 ]
Type 'copyright', 'credits' or 'license' for more information
IPython 8.24.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: import asyncio
In [2]: await asyncio.sleep(1)
In [3]:
```
I could have missed something obvious though...
Contributor guide
Research direction
Reproduce the command with --IPKernelApp.trio_loop=True and compare the trio and asyncio await cases. Trace how ipykernel handles the trio_loop setting and identify why trio.sleep is outside an async context; done means trio awaits work under the flag and the observed asyncio behavior matches the intended semantics.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- jupyter, python
- Domain
- backend, devtools
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100