inducer / inducer/pudb

UnicodeDecodeError: 'ascii' codec can't decode byte ...

Open
#278 28 comments 5 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
3.2k
Forks
245
Avg merge
13m
Merged PRs (30d)
5

Description

Environment:

- Python 2.7
- Linux x64

Stack trace:

```
...
File "/home/wookayin/.local/lib/python2.7/site-packages/pudb/debugger.py", line 360, in user_call
self.interaction(frame)
File "/home/wookayin/.local/lib/python2.7/site-packages/pudb/debugger.py", line 349, in interaction
show_exc_dialog=show_exc_dialog)
File "/home/wookayin/.local/lib/python2.7/site-packages/pudb/debugger.py", line 2089, in call_with_ui
return f(*args, **kwargs)
File "/home/wookayin/.local/lib/python2.7/site-packages/pudb/debugger.py", line 2330, in interaction
self.event_loop()
File "/home/wookayin/.local/lib/python2.7/site-packages/pudb/debugger.py", line 2288, in event_loop
canvas = toplevel.render(self.size, focus=True)
File "/home/wookayin/.local/lib/python2.7/site-packages/urwid/widget.py", line 141, in cached_render
canv = fn(self, size, focus=focus)
File "/home/wookayin/.local/lib/python2.7/site-packages/urwid/widget.py", line 1751, in render
canv = get_delegate(self).render(size, focus=focus)
File "/home/wookayin/.local/lib/python2.7/site-packages/urwid/widget.py", line 141, in cached_render
canv = fn(self, size, focus=focus)
File "/home/wookayin/.local/lib/python2.7/site-packages/urwid/container.py", line 1083, in render
focus and self.focus_part == 'body')
File "/home/wookayin/.local/lib/python2.7/site-packages/urwid/widget.py", line 141, in cached_render
canv = fn(self, size, focus=focus)
File "/home/wookayin/.local/lib/python2.7/site-packages/urwid/decoration.py", line 225, in render
canv = self._original_widget.render(size, focus=focus)
File "/home/wookayin/.local/lib/python2.7/site-packages/urwid/widget.py", line 141, in cached_render
canv = fn(self, size, focus=focus)
File "/home/wookayin/.local/lib/python2.7/site-packages/urwid/container.py", line 2085, in render
focus = focus and self.focus_position == i)
File "/home/wookayin/.local/lib/python2.7/site-packages/urwid/widget.py", line 141, in cached_render
canv = fn(self, size, focus=focus)
File "/home/wookayin/.local/lib/python2.7/site-packages/urwid/widget.py", line 1751, in render
canv = get_delegate(self).render(size, focus=focus)
File "/home/wookayin/.local/lib/python2.7/site-packages/urwid/widget.py", line 141, in cached_render
canv = fn(self, size, focus=focus)
File "/home/wookayin/.local/lib/python2.7/site-packages/urwid/container.py", line 1526, in render
canv = w.render((maxcol, rows), focus=focus and item_focus)
File "/home/wookayin/.local/lib/python2.7/site-packages/urwid/widget.py", line 141, in cached_render
canv = fn(self, size, focus=focus)
File "/home/wookayin/.local/lib/python2.7/site-packages/urwid/decoration.py", line 225, in render
canv = self._original_widget.render(size, focus=focus)
File "/home/wookayin/.local/lib/python2.7/site-packages/urwid/widget.py", line 141, in cached_render
canv = fn(self, size, focus=focus)
File "/home/wookayin/.local/lib/python2.7/site-packages/urwid/container.py", line 1526, in render
canv = w.render((maxcol, rows), focus=focus and item_focus)
File "/home/wookayin/.local/lib/python2.7/site-packages/urwid/widget.py", line 141, in cached_render
canv = fn(self, size, focus=focus)
File "/home/wookayin/.local/lib/python2.7/site-packages/urwid/decoration.py", line 225, in render
canv = self._original_widget.render(size, focus=focus)
File "/home/wookayin/.local/lib/python2.7/site-packages/urwid/widget.py", line 141, in cached_render
canv = fn(self, size, focus=focus)
File "/home/wookayin/.local/lib/python2.7/site-packages/urwid/widget.py", line 1751, in render
canv = get_delegate(self).render(size, focus=focus)
File "/home/wookayin/.local/lib/python2.7/site-packages/urwid/widget.py", line 141, in cached_render
canv = fn(self, size, focus=focus)
File "/home/wookayin/.local/lib/python2.7/site-packages/urwid/listbox.py", line 475, in render
focus_canvas = focus_widget.render((maxcol,), focus=focus)
File "/home/wookayin/.local/lib/python2.7/site-packages/urwid/widget.py", line 141, in cached_render
canv = fn(self, size, focus=focus)
File "/home/wookayin/.local/lib/python2.7/site-packages/pudb/var_view.py", line 164, in render
return make_canvas(text, attr, maxcol, apfx+"value")
File "/home/wookayin/.local/lib/python2.7/site-packages/pudb/ui_tools.py", line 38, in make_canvas
line_attr = list(get_byte_line_attr(line, line_attr))
File "/home/wookayin/.local/lib/python2.7/site-packages/pudb/ui_tools.py", line 34, in get_byte_line_attr
byte_count = len(line[i:i+column_count].encode(_target_encoding))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 9: ordinal not in range(128)
```

Link: [`ui_tools.py:34`](https://github.com/inducer/pudb/blob/master/pudb/ui_tools.py#L34).

I am not sure for when it happens or which line it is reading (it is hard to print them out), but I could somehow workaround with the following dirty patch, ~simply ignoring the error~ (UPDATED) not calling `encode()`:

```diff
def get_byte_line_attr(line, line_attr):
i = 0
for label, column_count in line_attr:
- byte_count = len(line[i:i+column_count].encode(_target_encoding))
+ byte_count = len(line[i:i+column_count])
i += column_count
yield label, byte_count
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.