#1099793 toot traces back when scrolling through the notifications timeline

#1099793#5
Date:
2025-03-08 09:19:38 UTC
From:
To:
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

#1099793#10
Date:
2025-08-11 19:49:13 UTC
From:
To:
Dear Maintainer,

I just had the same issue with the current version while scrolling
through the notification timeline in tui mode.

Best regards,
Martin