prompt-toolkit / prompt-toolkit/python-prompt-toolkit
asyncio: patch_stdout and initialization errors
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 10.6k
- Forks
- 815
- PR merge metrics
- No merged PRs in 30d
Description
Any strings printed before executing await session.prompt_async() don't seem to appear on the console. Is the recommended approach to perform (synchronous) initialization prior to patching stdout?
Below is a simple example, where the Unable to open serial port string is not printed at all (tested on Linux and macOS).
[...]
async def interactive_shell():
try:
ser = serial.Serial('/dev/thisportdoesntexist')
except SerialError as e:
print(f"Unable to open serial port: {e.errno}")
return
# Create Prompt.
session = PromptSession(">> ")
# Run echo loop. Read text from stdin, and reply it back.
while True:
try:
text = await session.prompt_async()
print('You said: "{0}"'.format(text))
if text == 'q' or text == 'quit':
break
except (EOFError, KeyboardInterrupt):
return
async def _main():
with patch_stdout():
try:
await interactive_shell()
finally:
print("caught")
print("Quitting event loop. Bye.")
def main():
asyncio.run(_main())
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading the patch_stdout context manager and the prompt_async entry point, then reproduce the provided serial-initialization example on the reported platforms. Determine whether output printed before the first prompt is preserved while stdout is patched, and document or test the expected initialization behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- cli
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100