Dear Maintainer,
I was scrolling through my notifications timeline when toot suddenly
traced back:
toot tui SIGINT(2) ↵
Traceback (most recent call last):
File "/usr/bin/toot", line 8, in <module>
sys.exit(cli())
~~~^^
File "/usr/lib/python3/dist-packages/click/core.py", line 1161, in __call__
return self.main(*args, **kwargs)
~~~~~~~~~^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/click/core.py", line 1082, in main
rv = self.invoke(ctx)
File "/usr/lib/python3/dist-packages/click/core.py", line 1697, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
File "/usr/lib/python3/dist-packages/click/core.py", line 1443, in invoke
return ctx.invoke(self.callback, **ctx.params)
~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/click/core.py", line 788, in invoke
return __callback(*args, **kwargs)
File "/usr/lib/python3/dist-packages/toot/cli/__init__.py", line 136, in wrapped
return f(get_context(), *args, **kwargs)
File "/usr/lib/python3/dist-packages/toot/cli/tui.py", line 81, in tui
tui.run()
~~~~~~~^^
File "/usr/lib/python3/dist-packages/toot/tui/app.py", line 164, in run
self.loop.run()
~~~~~~~~~~~~~^^
File "/usr/lib/python3/dist-packages/urwid/event_loop/main_loop.py", line 337, in run
self._run()
~~~~~~~~~^^
File "/usr/lib/python3/dist-packages/urwid/event_loop/main_loop.py", line 439, in _run
self.event_loop.run()
~~~~~~~~~~~~~~~~~~~^^
File "/usr/lib/python3/dist-packages/urwid/event_loop/asyncio_loop.py", line 235, in run
raise exc.with_traceback(exc.__traceback__)
File "/usr/lib/python3.13/asyncio/events.py", line 89, in _run
self._context.run(self._callback, *self._args)
~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/urwid/event_loop/asyncio_loop.py", line 104, in wrapper
return callback(*args, **kwargs)
File "/usr/lib/python3/dist-packages/urwid/display/_posix_raw_display.py", line 285, in wrapper
return self.parse_input(event_loop, callback, self.get_available_raw_input())
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/urwid/display/_raw_display_base.py", line 488, in parse_input
callback(decoded_codes, raw_codes)
~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/urwid/event_loop/main_loop.py", line 466, in _update
self.process_input(keys)
~~~~~~~~~~~~~~~~~~^^^^^^
File "/usr/lib/python3/dist-packages/urwid/event_loop/main_loop.py", line 566, in process_input
handled_key = self._topmost_widget.keypress(self.screen_size, key)
File "/usr/lib/python3/dist-packages/urwid/widget/frame.py", line 526, in keypress
return self.body.keypress((maxcol, remaining), key)
~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/toot/tui/timeline.py", line 287, in keypress
return super().keypress(size, key)
~~~~~~~~~~~~~~~~^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/urwid/widget/columns.py", line 1216, in keypress
key = w.keypress(size_args[i], key)
File "/usr/lib/python3/dist-packages/urwid/widget/listbox.py", line 1342, in keypress
return actual_key(self._keypress_down((maxcol, maxrow)))
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/urwid/widget/listbox.py", line 1458, in _keypress_down
self.change_focus((maxcol, maxrow), pos, row_offset, "above")
~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/urwid/widget/listbox.py", line 1183, in change_focus
self._body.set_focus(position)
~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^
File "/usr/lib/python3/dist-packages/urwid/widget/listbox.py", line 264, in set_focus
self._modified()
~~~~~~~~~~~~~~^^
File "/usr/lib/python3/dist-packages/urwid/widget/listbox.py", line 98, in _modified
signals.emit_signal(self, "modified")
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/urwid/signals.py", line 298, in emit
result |= self._call_callback(callback, user_arg, weak_args, user_args, args)
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/urwid/signals.py", line 322, in _call_callback
return bool(callback(*args))
~~~~~~~~^^^^^^^
File "/usr/lib/python3/dist-packages/toot/tui/timeline.py", line 162, in modified
self.draw_status_details(status)
~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^
File "/usr/lib/python3/dist-packages/toot/tui/timeline.py", line 173, in draw_status_details
self.status_details = StatusDetails(self, status)
~~~~~~~~~~~~~^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/toot/tui/timeline.py", line 368, in __init__
widget_list = list(self.content_generator(status.original, reblogged_by)
if status else ())
File "/usr/lib/python3/dist-packages/toot/tui/timeline.py", line 502, in content_generator
yield ("pack", self.build_linebox(self.poll_generator(poll)))
~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/toot/tui/timeline.py", line 547, in build_linebox
contents = urwid.Pile(list(contents))
~~~~^^^^^^^^^^
File "/usr/lib/python3/dist-packages/toot/tui/timeline.py", line 575, in poll_generator
if poll["voted"] and poll["own_votes"] and idx in poll["own_votes"]:
~~~~^^^^^^^^^^^^^
KeyError: 'own_votes'
Best regards,
Martin