prompt-toolkit / prompt-toolkit/python-prompt-toolkit

patch_stdout

Open
#934 3 comments 3 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

patch-stdout
Dominant language
Python
Stars
10.6k
Forks
815
PR merge metrics
No merged PRs in 30d

Description

Hi, I have problems with an ./asyncio-prompt.py example. Running it under Ubuntu 18.10, Python 3.6.8 source taken from git master branch (today) I encountered :

./asyncio-prompt.py
Traceback (most recent call last):
File "./asyncio-prompt.py", line 64, in
main()
File "./asyncio-prompt.py", line 57, in main
loop.run_until_complete(shell_task)
File "/usr/lib/python3.6/asyncio/base_events.py", line 484, in run_until_complete
return future.result()
File "./asyncio-prompt.py", line 41, in interactive_shell
session = PromptSession('Say something: ')
File "/usr/local/lib/python3.6/dist-packages/prompt_toolkit-3.0.0-py3.6.egg/prompt_toolkit/shortcuts/prompt.py", line 433, in init
File "/usr/local/lib/python3.6/dist-packages/prompt_toolkit-3.0.0-py3.6.egg/prompt_toolkit/shortcuts/prompt.py", line 671, in _create_application
File "/usr/local/lib/python3.6/dist-packages/prompt_toolkit-3.0.0-py3.6.egg/prompt_toolkit/application/application.py", line 260, in init
File "/usr/local/lib/python3.6/dist-packages/prompt_toolkit-3.0.0-py3.6.egg/prompt_toolkit/application/current.py", line 61, in output
File "/usr/local/lib/python3.6/dist-packages/prompt_toolkit-3.0.0-py3.6.egg/prompt_toolkit/output/defaults.py", line 29, in create_output
AttributeError: 'StdoutProxy' object has no attribute 'isatty'

After adding isatty method (my method returns always True), the error has changed to:

./asyncio-prompt.py
Counter: 0
Traceback (most recent call last):
File "./asyncio-prompt.py", line 64, in
main()
File "./asyncio-prompt.py", line 57, in main
loop.run_until_complete(shell_task)
File "/usr/lib/python3.6/asyncio/base_events.py", line 484, in run_until_complete
return future.result()
File "./asyncio-prompt.py", line 46, in interactive_shell
result = await session.prompt_async ()
File "/usr/local/lib/python3.6/dist-packages/prompt_toolkit-3.0.0-py3.6.egg/prompt_toolkit/shortcuts/prompt.py", line 1030, in prompt_async
File "/usr/local/lib/python3.6/dist-packages/prompt_toolkit-3.0.0-py3.6.egg/prompt_toolkit/application/application.py", line 738, in run_async
File "/usr/local/lib/python3.6/dist-packages/prompt_toolkit-3.0.0-py3.6.egg/prompt_toolkit/application/application.py", line 723, in _run_async2
File "/usr/local/lib/python3.6/dist-packages/prompt_toolkit-3.0.0-py3.6.egg/prompt_toolkit/application/application.py", line 664, in _run_async
File "/usr/local/lib/python3.6/dist-packages/prompt_toolkit-3.0.0-py3.6.egg/prompt_toolkit/application/application.py", line 878, in _request_absolute_cursor_position
File "/usr/local/lib/python3.6/dist-packages/prompt_toolkit-3.0.0-py3.6.egg/prompt_toolkit/renderer.py", line 443, in request_absolute_cursor_position
File "/usr/local/lib/python3.6/dist-packages/prompt_toolkit-3.0.0-py3.6.egg/prompt_toolkit/renderer.py", line 435, in do_cpr
File "/usr/local/lib/python3.6/dist-packages/prompt_toolkit-3.0.0-py3.6.egg/prompt_toolkit/output/vt100.py", line 663, in ask_for_cpr
File "/usr/local/lib/python3.6/dist-packages/prompt_toolkit-3.0.0-py3.6.egg/prompt_toolkit/output/vt100.py", line 634, in flush
File "/usr/local/lib/python3.6/dist-packages/prompt_toolkit-3.0.0-py3.6.egg/prompt_toolkit/patch_stdout.py", line 141, in write
File "/usr/local/lib/python3.6/dist-packages/prompt_toolkit-3.0.0-py3.6.egg/prompt_toolkit/patch_stdout.py", line 121, in _write
TypeError: a bytes-like object is required, not 'str'

The only thing I came up to with this then, was to remove "with patch_stdout():" from the example whatsoever.

Best regards.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the failure with the asyncio-prompt.py example and the reported Python 3.6 setup. Then inspect prompt_toolkit/patch_stdout.py alongside the traceback paths to understand the isatty and bytes-versus-string errors. Done means the example works without removing patch_stdout().

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
cli
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.