quit() command display asyncio.exceptions.CancelledError while leaving
Issue reported by @muzelle.
When leaving the session with quit() builtin command, the REPL is still running while I/O are being closed.
Then we get this harmless but unpleasant error message:
TEST_SESSION [1]: quit()
Traceback (most recent call last):
File "/home/felix/projects/bliss/bliss/shell/cli/no_thread_repl.py", line 229, in run_async
await future
asyncio.exceptions.CancelledError
ERROR: unhandled exception during asyncio.run() shutdown
task: <Task finished name='Task-1' coro=<NoThreadPythonRepl.run_async() done, defined at /home/felix/projects/bliss/bliss/shell/cli/no_thread_repl.py:202> exception=ValueError('I/O operation on closed file')>
Traceback (most recent call last):
File "/home/felix/miniconda3/envs/bliss/lib/python3.9/asyncio/runners.py", line 44, in run
return loop.run_until_complete(main)
File "/home/felix/miniconda3/envs/bliss/lib/python3.9/asyncio/base_events.py", line 634, in run_until_complete
self.run_forever()
File "/home/felix/miniconda3/envs/bliss/lib/python3.9/asyncio/base_events.py", line 601, in run_forever
self._run_once()
File "/home/felix/miniconda3/envs/bliss/lib/python3.9/asyncio/base_events.py", line 1869, in _run_once
event_list = self._selector.select(timeout)
File "/home/felix/miniconda3/envs/bliss/lib/python3.9/site-packages/gevent/selectors.py", line 201, in select
self._ready.wait(timeout)
File "src/gevent/event.py", line 163, in gevent._gevent_cevent.Event.wait
File "src/gevent/_abstract_linkable.py", line 521, in gevent._gevent_c_abstract_linkable.AbstractLinkable._wait
File "src/gevent/_abstract_linkable.py", line 487, in gevent._gevent_c_abstract_linkable.AbstractLinkable._wait_core
File "src/gevent/_abstract_linkable.py", line 490, in gevent._gevent_c_abstract_linkable.AbstractLinkable._wait_core
File "src/gevent/_abstract_linkable.py", line 442, in gevent._gevent_c_abstract_linkable.AbstractLinkable._AbstractLinkable__wait_to_be_notified
File "src/gevent/_abstract_linkable.py", line 451, in gevent._gevent_c_abstract_linkable.AbstractLinkable._switch_to_hub
File "src/gevent/_greenlet_primitives.py", line 61, in gevent._gevent_c_greenlet_primitives.SwitchOutGreenletWithLoop.switch
File "src/gevent/_greenlet_primitives.py", line 65, in gevent._gevent_c_greenlet_primitives.SwitchOutGreenletWithLoop.switch
File "src/gevent/_gevent_c_greenlet_primitives.pxd", line 35, in gevent._gevent_c_greenlet_primitives._greenlet_switch
File "src/gevent/greenlet.py", line 908, in gevent._gevent_cgreenlet.Greenlet.run
File "/home/felix/projects/bliss/bliss/common/greenlet_utils/asyncio_gevent.py", line 161, in wrap_func
result = orig_func(*args, **kw)
File "/home/felix/projects/bliss/bliss/shell/cli/no_thread_repl.py", line 180, in f
return func(*args, **kwargs)
File "/home/felix/projects/bliss/bliss/shell/cli/repl.py", line 544, in eval
result = self.raw_eval(text)
File "/home/felix/projects/bliss/bliss/shell/cli/repl.py", line 533, in raw_eval
return super().eval(text)
File "/home/felix/miniconda3/envs/bliss/lib/python3.9/site-packages/ptpython/repl.py", line 245, in eval
result = eval(code, self.get_globals(), self.get_locals())
File "<stdin>", line 1, in <module>
File "/home/felix/miniconda3/envs/bliss/lib/python3.9/_sitebuiltins.py", line 26, in __call__
raise SystemExit(code)
SystemExit: None
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/felix/projects/bliss/bliss/shell/cli/no_thread_repl.py", line 218, in run_async
await self.read()
File "/home/felix/projects/bliss/bliss/shell/cli/no_thread_repl.py", line 143, in read
raise exception
File "/home/felix/projects/bliss/bliss/shell/cli/no_thread_repl.py", line 113, in in_thread
result = await self.app.run_async(pre_run=pre_run)
File "/home/felix/projects/bliss/bliss/shell/prompt_toolkit_patch.py", line 30, in run_async
return await super().run_async(**kwargs)
File "/home/felix/miniconda3/envs/bliss/lib/python3.9/site-packages/prompt_toolkit/application/application.py", line 886, in run_async
return await _run_async(f)
File "/home/felix/miniconda3/envs/bliss/lib/python3.9/site-packages/prompt_toolkit/application/application.py", line 734, in _run_async
with self.input.raw_mode(), self.input.attach(
File "/home/felix/miniconda3/envs/bliss/lib/python3.9/site-packages/prompt_toolkit/input/vt100.py", line 123, in raw_mode
return raw_mode(self.stdin.fileno())
ValueError: I/O operation on closed file