Python2 crashes with non-ascii caracters.
See original GitHub issueHi,
When using PyInquirer with python2 I face a problem when the options include non-ascii characters. Python3 works fine though.
Here is a minimal working example that demonstrates this behaviour.
# -*- coding: utf-8 -*-
from __future__ import print_function, unicode_literals
from PyInquirer import prompt
def main():
choice = 'John’s Pizza'
questions = [
{
'type': 'list',
'name': 'pizza',
'message': 'Pizzeria:',
'choices' : [choice]
}
]
answer = prompt(questions)
pizza = answer['pizza']
print('Answer is |' + pizza + '|' )
if __name__ == '__main__':
main()
Python3 execution:
❯ python3 encoding-test.py
? Pizzeria: John’s Pizza
Answer is |John’s Pizza|
Python2 execution:
❯ python2 encoding-test.py
? Pizzeria: (Use arrow keys)
Traceback (most recent call last):
File "encoding-test.py", line 20, in <module>
main()
File "encoding-test.py", line 15, in main
answer = prompt(questions)
File "/usr/local/lib/python2.7/dist-packages/PyInquirer/prompt.py", line 71, in prompt
eventloop=eventloop)
File "/usr/local/lib/python2.7/dist-packages/prompt_toolkit/shortcuts.py", line 625, in run_application
result = cli.run()
File "/usr/local/lib/python2.7/dist-packages/prompt_toolkit/interface.py", line 413, in run
self._redraw()
File "/usr/local/lib/python2.7/dist-packages/prompt_toolkit/interface.py", line 358, in _redraw
self.renderer.render(self, self.layout, is_done=self.is_done)
File "/usr/local/lib/python2.7/dist-packages/prompt_toolkit/renderer.py", line 429, in render
extended_height=size.rows,
File "/usr/local/lib/python2.7/dist-packages/prompt_toolkit/layout/containers.py", line 142, in write_to_screen
sizes = self._divide_heigths(cli, write_position)
File "/usr/local/lib/python2.7/dist-packages/prompt_toolkit/layout/containers.py", line 177, in _divide_heigths
dimensions = [get_dimension_for_child(c, index) for index, c in enumerate(self.children)]
File "/usr/local/lib/python2.7/dist-packages/prompt_toolkit/layout/containers.py", line 175, in get_dimension_for_child
return c.preferred_height(cli, write_position.width, write_position.extended_height)
File "/usr/local/lib/python2.7/dist-packages/prompt_toolkit/layout/containers.py", line 1652, in preferred_height
return self.content.preferred_height(cli, width, max_available_height)
File "/usr/local/lib/python2.7/dist-packages/prompt_toolkit/layout/containers.py", line 1000, in preferred_height
cli, width - total_margin_width, max_available_height, wrap_lines),
File "/usr/local/lib/python2.7/dist-packages/prompt_toolkit/layout/controls.py", line 254, in preferred_height
content = self.create_content(cli, width, None)
File "/usr/local/lib/python2.7/dist-packages/prompt_toolkit/layout/controls.py", line 259, in create_content
tokens_with_mouse_handlers = self._get_tokens_cached(cli)
File "/usr/local/lib/python2.7/dist-packages/prompt_toolkit/layout/controls.py", line 239, in _get_tokens_cached
cli.render_counter, lambda: self.get_tokens(cli))
File "/usr/local/lib/python2.7/dist-packages/prompt_toolkit/cache.py", line 37, in get
value = getter_func()
File "/usr/local/lib/python2.7/dist-packages/prompt_toolkit/layout/controls.py", line 239, in <lambda>
cli.render_counter, lambda: self.get_tokens(cli))
File "/usr/local/lib/python2.7/dist-packages/PyInquirer/prompts/list.py", line 98, in _get_choice_tokens
append(i, choice)
File "/usr/local/lib/python2.7/dist-packages/PyInquirer/prompts/list.py", line 92, in append
tokens.append((T.Selected if selected else T, str(choice[0]),
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in position 4: ordinal not in range(128)
The apostrophe unicode character is what is breaking the python2 execution.
Issue Analytics
- State:
- Created 5 years ago
- Comments:11 (10 by maintainers)
Top Results From Across the Web
Python2 crashes with non-ascii characters. · Issue #28 - GitHub
Hi, When using huepy with python2 I face a problem when the string to be printed includes non-ascii characters. Python3 works fine though....
Read more >#26103 (Python 2 crash with non-ASCII characters in settings ...
Python 2 crash with non-ASCII characters in settings. ... coding: utf-8 -*- to django/conf/global_settings.py , causes a test failure on Python 2.7:
Read more >Heroku crashing due to "Non-ASCII character '\xe2' in file" error
It appears that when I erase everything in the file but the header and have it return none , it's still giving me...
Read more >crashes when uploading job with non-ascii chars on python2.7
If run on python 2.7.13, jenkins-python crashes if job xml contains non-ascii characters. Traceback (most recent call last):
Read more >Why does csh (tcsh) crash when I type non-ASCII characters?
Issue. User types non-ASCII characters (e.g. Swedish characters with umlaut: å, ä, ö) on the csh/tcsh command line.
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
Yes that would be great, if you tag it with
1.1.0a1
(or whatever your next release is) “normal” people wont get it if they install from pip only if you specifically use the version number, that would be best 👍No, not anytime soon. Cos I am planning to add
editor
and some other fix. I need to carry out test against some environments. Just too busy these days in my company. Also I wanted to add some of the TODO feature. But, I can create a pre release version, so people can use most recent fix with no new feature. 👍