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

Got "expected LP_CONSOLE_SCREEN_BUFFER_INFO instance instead of pointer to CONSOLE_SCREEN_BUFFER_INFO" on Win10

Open
#1,601 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

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

Description

Issue

While run ipython on Windows10 and execute my own script, I got this error:

# Just ignore run_debug.py script because it is okay for run "python run_debug.py" directly
# The issue only occurred in ipython interpreter
run d:/CodeStation/watf/bin/run_debug.py d:/tmp/waf_mts_access_control.params.yaml
Traceback (most recent call last):
  File "C:\Users\jonjiang\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\Users\jonjiang\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "C:\Users\jonjiang\AppData\Local\Programs\Python\Python310\Scripts\ipython.exe\__main__.py", line 7, in <module>
    sys.exit(start_ipython())
  File "C:\Users\jonjiang\AppData\Roaming\Python\Python310\site-packages\IPython\__init__.py", line 123, in start_ipython
    return launch_new_instance(argv=argv, **kwargs)
  File "C:\Users\jonjiang\AppData\Roaming\Python\Python310\site-packages\traitlets\config\application.py", line 846, in launch_instance
    app.start()
  File "C:\Users\jonjiang\AppData\Roaming\Python\Python310\site-packages\IPython\terminal\ipapp.py", line 318, in start
    self.shell.mainloop()
  File "C:\Users\jonjiang\AppData\Roaming\Python\Python310\site-packages\IPython\terminal\interactiveshell.py", line 653, in mainloop
    self.interact()
  File "C:\Users\jonjiang\AppData\Roaming\Python\Python310\site-packages\IPython\terminal\interactiveshell.py", line 638, in interact
    code = self.prompt_for_code()
  File "C:\Users\jonjiang\AppData\Roaming\Python\Python310\site-packages\IPython\terminal\interactiveshell.py", line 576, in prompt_for_code
    text = self.pt_app.prompt(
  File "C:\Users\jonjiang\AppData\Local\Programs\Python\Python310\lib\site-packages\prompt_toolkit\shortcuts\prompt.py", line 1033, in prompt
    return self.app.run(
  File "C:\Users\jonjiang\AppData\Local\Programs\Python\Python310\lib\site-packages\prompt_toolkit\application\application.py", line 937, in run
    return loop.run_until_complete(
  File "C:\Users\jonjiang\AppData\Local\Programs\Python\Python310\lib\asyncio\base_events.py", line 646, in run_until_complete
    return future.result()
  File "C:\Users\jonjiang\AppData\Local\Programs\Python\Python310\lib\site-packages\prompt_toolkit\application\application.py", line 856, in run_async
    return await _run_async2()
  File "C:\Users\jonjiang\AppData\Local\Programs\Python\Python310\lib\site-packages\prompt_toolkit\application\application.py", line 826, in _run_async2
    result = await _run_async()
  File "C:\Users\jonjiang\AppData\Local\Programs\Python\Python310\lib\site-packages\prompt_toolkit\application\application.py", line 746, in _run_async
    self._request_absolute_cursor_position()
  File "C:\Users\jonjiang\AppData\Local\Programs\Python\Python310\lib\site-packages\prompt_toolkit\application\application.py", line 1149, in _request_absolute_cursor_position
    self.renderer.request_absolute_cursor_position()
  File "C:\Users\jonjiang\AppData\Local\Programs\Python\Python310\lib\site-packages\prompt_toolkit\renderer.py", line 486, in request_absolute_cursor_position
    self._min_available_height = self.output.get_rows_below_cursor_position()
  File "C:\Users\jonjiang\AppData\Local\Programs\Python\Python310\lib\site-packages\prompt_toolkit\output\win32.py", line 385, in get_rows_below_cursor_position
    info = self.get_win32_screen_buffer_info()
  File "C:\Users\jonjiang\AppData\Local\Programs\Python\Python310\lib\site-packages\prompt_toolkit\output\win32.py", line 204, in get_win32_screen_buffer_info
    success = windll.kernel32.GetConsoleScreenBufferInfo(
ctypes.ArgumentError: argument 2: <class 'TypeError'>: expected LP_CONSOLE_SCREEN_BUFFER_INFO instance instead of pointer to CONSOLE_SCREEN_BUFFER_INFO

If you suspect this is an IPython 8.1.1 bug, please report it at:
    https://github.com/ipython/ipython/issues
or send an email to the mailing list at ipython-dev@python.org

You can print a more detailed traceback right now with "%tb", or use "%debug"
to interactively debug it.

Extra-detailed tracebacks for bug-reporting purposes can be enabled via:
    %config Application.verbose_crash=True

Environment

Windows
# OS is Chinese Edition, I translate Chinese character to English
Version	Windows 10 Home Edition
Release	21H2
Install Date	‎2021-‎12-‎06
OS Internal Version	19044.1586
Experience	Windows Feature Experience Pack 120.2212.4170.0

For more investigation, I verified as below version but got same issue:

  • 20H2.19042.1586
  • 21H1.19043.1586
  • 21H2.19044.1586
Python && IPython && prompt_tool

Python 3.10.3 (tags/v3.10.3:a342a49, Mar 16 2022, 13:07:40) [MSC v.1929 64 bit (AMD64)]
Type 'copyright', 'credits' or 'license' for more information
IPython 8.1.1 -- An enhanced Interactive Python. Type '?' for help.

Related packages:

PS C:\Users\jonjiang> python -m pip install --upgrade ipython
Requirement already satisfied: ipython in c:\users\jonjiang\appdata\local\programs\python\python310\lib\site-packages (8.1.1)
Requirement already satisfied: decorator in c:\users\jonjiang\appdata\roaming\python\python310\site-packages (from ipython) (5.1.1)
Requirement already satisfied: colorama in c:\users\jonjiang\appdata\roaming\python\python310\site-packages (from ipython) (0.4.4)
Requirement already satisfied: stack-data in c:\users\jonjiang\appdata\roaming\python\python310\site-packages (from ipython) (0.2.0)
Requirement already satisfied: setuptools>=18.5 in c:\users\jonjiang\appdata\local\programs\python\python310\lib\site-packages (from ipython) (58.1.0)
Requirement already satisfied: pygments>=2.4.0 in c:\users\jonjiang\appdata\roaming\python\python310\site-packages (from ipython) (2.11.2)
Requirement already satisfied: matplotlib-inline in c:\users\jonjiang\appdata\roaming\python\python310\site-packages (from ipython) (0.1.3)
Requirement already satisfied: backcall in c:\users\jonjiang\appdata\roaming\python\python310\site-packages (from ipython) (0.2.0)
Requirement already satisfied: jedi>=0.16 in c:\users\jonjiang\appdata\roaming\python\python310\site-packages (from ipython) (0.18.1)
Requirement already satisfied: traitlets>=5 in c:\users\jonjiang\appdata\roaming\python\python310\site-packages (from ipython) (5.1.1)
Requirement already satisfied: prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0 in c:\users\jonjiang\appdata\local\programs\python\python310\lib\site-packages (from ipython) (3.0.28)
Requirement already satisfied: pickleshare in c:\users\jonjiang\appdata\roaming\python\python310\site-packages (from ipython) (0.7.5)
Requirement already satisfied: parso<0.9.0,>=0.8.0 in c:\users\jonjiang\appdata\roaming\python\python310\site-packages (from jedi>=0.16->ipython) (0.8.3)
Requirement already satisfied: wcwidth in c:\users\jonjiang\appdata\roaming\python\python310\site-packages (from prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0->ipython) (0.2.5)
Requirement already satisfied: pure-eval in c:\users\jonjiang\appdata\roaming\python\python310\site-packages (from stack-data->ipython) (0.2.2)
Requirement already satisfied: executing in c:\users\jonjiang\appdata\roaming\python\python310\site-packages (from stack-data->ipython) (0.8.3)
Requirement already satisfied: asttokens in c:\users\jonjiang\appdata\roaming\python\python310\site-packages (from stack-data->ipython) (2.0.5)
Requirement already satisfied: six in c:\users\jonjiang\appdata\roaming\python\python310\site-packages (from asttokens->stack-data->ipython) (1.16.0)

Reproduce

I tried to find this issue in google, several person said downgrade prompt_toolkit to previous version, I do it, and do it more that not only downgrade prompt_toolkit, but also ipython. I tried below versions for IPython and prompt_toolkit, but all have same issue:

IPython 7.9.0
IPython 7.6.0

and tried use python 3.9.9 interpreter as well, it crash same as 3.10.3
So I tried to run my script (run_debug.py) on Debian 10, it is ok. The issue only shown on Win10 (whatever have or not have administrator permission)

From IPython team, they told me this should be a prompt_toolkit common issue? Could you please have a look?

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

Start with prompt_toolkit/output/win32.py, especially get_win32_screen_buffer_info and its GetConsoleScreenBufferInfo call, then reproduce the traceback on Windows with the reported Python and prompt-toolkit versions. Done means the IPython prompt no longer raises the ctypes ArgumentError while requesting cursor position.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
cli, operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.