$ echo '{"a":1}' | python example.py
a
0 1
Warning: Input is not a terminal (fd=0).
>
Traceback (most recent call last):
File "example.py", line 11, in <module>
query = session.prompt('> ')
File "/opt/miniconda/lib/python3.8/site-packages/prompt_toolkit/shortcuts/prompt.py", line 994, in prompt
return self.app.run(set_exception_handler=set_exception_handler)
File "/opt/miniconda/lib/python3.8/site-packages/prompt_toolkit/application/application.py", line 811, in run
return loop.run_until_complete(
File "/opt/miniconda/lib/python3.8/asyncio/base_events.py", line 616, in run_until_complete
return future.result()
File "/opt/miniconda/lib/python3.8/site-packages/prompt_toolkit/application/application.py", line 778, in run_async
return await _run_async2()
File "/opt/miniconda/lib/python3.8/site-packages/prompt_toolkit/application/application.py", line 760, in _run_async2
result = await _run_async()
File "/opt/miniconda/lib/python3.8/site-packages/prompt_toolkit/application/application.py", line 696, in _run_async
result = await f
EOFError
There is a workaround to renew stdin with sys.stdin = open("/dev/tty"). In this case I get:
$ echo '{"a":1}' | python example.py
a
0 1
Traceback (most recent call last):
File "example.py", line 12, in <module>
query = session.prompt('> ')
File "/opt/miniconda/lib/python3.8/site-packages/prompt_toolkit/shortcuts/prompt.py", line 994, in prompt
return self.app.run(set_exception_handler=set_exception_handler)
File "/opt/miniconda/lib/python3.8/site-packages/prompt_toolkit/application/application.py", line 811, in run
return loop.run_until_complete(
File "/opt/miniconda/lib/python3.8/asyncio/base_events.py", line 616, in run_until_complete
return future.result()
File "/opt/miniconda/lib/python3.8/site-packages/prompt_toolkit/application/application.py", line 778, in run_async
return await _run_async2()
File "/opt/miniconda/lib/python3.8/site-packages/prompt_toolkit/application/application.py", line 760, in _run_async2
result = await _run_async()
File "/opt/miniconda/lib/python3.8/site-packages/prompt_toolkit/application/application.py", line 682, in _run_async
with self.input.raw_mode():
File "/opt/miniconda/lib/python3.8/site-packages/prompt_toolkit/input/vt100.py", line 262, in __enter__
os.write(self.fileno, b"\x1b[?1l")
OSError: [Errno 9] Bad file descriptor
Hello! Thank you for prompt_toolkit it's awesome!
Is there a way to read the data from stdin and then open prompt?
Example:
Expected result:
What I've got in prompt_toolkit 3.0.5:
There is a workaround to renew stdin with
sys.stdin = open("/dev/tty")
. In this case I get:Thanks!