prompt-toolkit / prompt-toolkit/python-prompt-toolkit
KeyError in cache.py prompt_toolkit 2.09
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 10.6k
- Forks
- 815
- PR merge metrics
- No merged PRs in 30d
Description
While attempting to create the repl example in this Pycon video,
https://www.youtube.com/watch?v=hJhZhLg3obk&t=776s
The repl example is at 26:19 in the above video
an exception is thrown when I pass a lexer in the prompt() call.
I'm running Python 3.6.6 from the Anaconda distribution on Windows 7 64-bit Professional.
simple_repl.zip
python simple_repl.py
Traceback (most recent call last):
File "C:\Users\MyUserName\AppData\Local\Continuum\miniconda3\envs\py36sci\lib\site-packages\prompt_toolkit\cache.py", line 34, in get
return self._data[key]
KeyError: ('', 47623800)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "simple_repl.py", line 14, in
lexer=SqlLexer,
File "C:\Users\MyUserName\AppData\Local\Continuum\miniconda3\envs\py36sci\lib\site-packages\prompt_toolkit\shortcuts\prompt.py", line 845, in prompt
return session.prompt(*a, **kw)
File "C:\Users\MyUserName\AppData\Local\Continuum\miniconda3\envs\py36sci\lib\site-packages\prompt_toolkit\shortcuts\prompt.py", line 738, in prompt
return run_sync()
File "C:\Users\MyUserName\AppData\Local\Continuum\miniconda3\envs\py36sci\lib\site-packages\prompt_toolkit\shortcuts\prompt.py", line 727, in run_sync
return self.app.run(inputhook=self.inputhook, pre_run=pre_run2)
File "C:\Users\MyUserName\AppData\Local\Continuum\miniconda3\envs\py36sci\lib\site-packages\prompt_toolkit\application\application.py", line 709, in run
return run()
File "C:\Users\MyUserName\AppData\Local\Continuum\miniconda3\envs\py36sci\lib\site-packages\prompt_toolkit\application\application.py", line 683, in run
return f.result()
File "C:\Users\MyUserName\AppData\Local\Continuum\miniconda3\envs\py36sci\lib\site-packages\prompt_toolkit\eventloop\future.py", line 149, in result
raise self._exception
File "C:\Users\MyUserName\AppData\Local\Continuum\miniconda3\envs\py36sci\lib\site-packages\prompt_toolkit\eventloop\coroutine.py", line 90, in step_next
new_f = coroutine.throw(exc)
File "C:\Users\MyUserName\AppData\Local\Continuum\miniconda3\envs\py36sci\lib\site-packages\prompt_toolkit\application\application.py", line 658, in _run_async2
result = yield f
File "C:\Users\MyUserName\AppData\Local\Continuum\miniconda3\envs\py36sci\lib\site-packages\prompt_toolkit\eventloop\coroutine.py", line 86, in step_next
new_f = coroutine.send(None)
File "C:\Users\MyUserName\AppData\Local\Continuum\miniconda3\envs\py36sci\lib\site-packages\prompt_toolkit\application\application.py", line 601, in _run_async
self._redraw()
File "C:\Users\MyUserName\AppData\Local\Continuum\miniconda3\envs\py36sci\lib\site-packages\prompt_toolkit\application\application.py", line 444, in _redraw
self.renderer.render(self, self.layout)
File "C:\Users\MyUserName\AppData\Local\Continuum\miniconda3\envs\py36sci\lib\site-packages\prompt_toolkit\renderer.py", line 546, in render
layout.container.preferred_height(size.columns, size.rows).preferred)
File "C:\Users\MyUserName\AppData\Local\Continuum\miniconda3\envs\py36sci\lib\site-packages\prompt_toolkit\layout\containers.py", line 245, in preferred_height
for c in self._all_children]
File "C:\Users\MyUserName\AppData\Local\Continuum\miniconda3\envs\py36sci\lib\site-packages\prompt_toolkit\layout\containers.py", line 245, in
for c in self._all_children]
File "C:\Users\MyUserName\AppData\Local\Continuum\miniconda3\envs\py36sci\lib\site-packages\prompt_toolkit\layout\containers.py", line 639, in preferred_height
return self.content.preferred_height(width, max_available_height)
File "C:\Users\MyUserName\AppData\Local\Continuum\miniconda3\envs\py36sci\lib\site-packages\prompt_toolkit\layout\containers.py", line 245, in preferred_height
for c in self._all_children]
File "C:\Users\MyUserName\AppData\Local\Continuum\miniconda3\envs\py36sci\lib\site-packages\prompt_toolkit\layout\containers.py", line 245, in
for c in self._all_children]
File "C:\Users\MyUserName\AppData\Local\Continuum\miniconda3\envs\py36sci\lib\site-packages\prompt_toolkit\layout\containers.py", line 2179, in preferred_height
return self.content.preferred_height(width, max_available_height)
File "C:\Users\MyUserName\AppData\Local\Continuum\miniconda3\envs\py36sci\lib\site-packages\prompt_toolkit\layout\containers.py", line 1362, in preferred_height
dont_extend=self.dont_extend_height())
File "C:\Users\MyUserName\AppData\Local\Continuum\miniconda3\envs\py36sci\lib\site-packages\prompt_toolkit\layout\containers.py", line 1380, in _merge_dimensions
preferred = get_preferred()
File "C:\Users\MyUserName\AppData\Local\Continuum\miniconda3\envs\py36sci\lib\site-packages\prompt_toolkit\layout\containers.py", line 1357, in preferred_content_height
self.get_line_prefix)
File "C:\Users\MyUserName\AppData\Local\Continuum\miniconda3\envs\py36sci\lib\site-packages\prompt_toolkit\layout\controls.py", line 548, in preferred_height
content = self.create_content(width, None)
File "C:\Users\MyUserName\AppData\Local\Continuum\miniconda3\envs\py36sci\lib\site-packages\prompt_toolkit\layout\controls.py", line 667, in create_content
document, width, height)
File "C:\Users\MyUserName\AppData\Local\Continuum\miniconda3\envs\py36sci\lib\site-packages\prompt_toolkit\layout\controls.py", line 632, in _create_get_processed_line_func
return create_func()
File "C:\Users\MyUserName\AppData\Local\Continuum\miniconda3\envs\py36sci\lib\site-packages\prompt_toolkit\layout\controls.py", line 620, in create_func
get_line = self._get_formatted_text_for_line_func(document)
File "C:\Users\MyUserName\AppData\Local\Continuum\miniconda3\envs\py36sci\lib\site-packages\prompt_toolkit\layout\controls.py", line 577, in _get_formatted_text_for_line_func
return self._fragment_cache.get(key, get_formatted_text_for_line)
File "C:\Users\MyUserName\AppData\Local\Continuum\miniconda3\envs\py36sci\lib\site-packages\prompt_toolkit\cache.py", line 37, in get
value = getter_func()
File "C:\Users\MyUserName\AppData\Local\Continuum\miniconda3\envs\py36sci\lib\site-packages\prompt_toolkit\layout\controls.py", line 574, in get_formatted_text_for_line
return self.lexer.lex_document(document)
File "C:\Users\MyUserName\AppData\Local\Continuum\miniconda3\envs\py36sci\lib\site-packages\prompt_toolkit\lexers\base.py", line 73, in lex_document
assert isinstance(lexer, Lexer)
AssertionError
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
Reproduce the attached simple_repl.py example first, then inspect prompt_toolkit/cache.py at get and lexers/base.py at lex_document, as identified in the traceback. Confirm the behavior when a lexer is passed to prompt(); done means the example no longer ends with the reported AssertionError.
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