[Bug 2058388] Re: urwid 2.6.4-1 exception when using an empty Pile or Columns as a flow widget

Olivier Gayot 2058388 at bugs.launchpad.net
Tue Mar 19 16:27:55 UTC 2024


** Summary changed:

- urwid 2.6.4-1 exception when drawing an empty Pile or Columns
+ urwid 2.6.4-1 exception when using an empty Pile or Columns as a flow widget

** Description changed:

- When attempting to draw an empty Pile or Columns using urwid 2.6.4-1, it
- fails with the following exception:
+ When attempting to render an empty Pile or Columns as a flow widget
+ using urwid 2.6.4-1, it fails with the following exception:
  
-   File "urwid/event_loop/main_loop.py", line 672, in draw_screen
-     canvas = self._topmost_widget.render(self.screen_size, focus=True)
-              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   File "urwid/widget/widget.py", line 112, in cached_render
+   File "/usr/lib/python3/dist-packages/urwid/widget/widget.py", line 112, in cached_render
      canv = fn(self, size, focus=focus)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   File "urwid/widget/popup.py", line 127, in render
-     self._update_overlay(size, focus)
-   File "urwid/widget/popup.py", line 100, in _update_overlay
-     canv = self._original_widget.render(size, focus=focus)
-            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   File "urwid/widget/widget.py", line 112, in cached_render
-     canv = fn(self, size, focus=focus)
-            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   File "urwid/widget/widget.py", line 711, in render
-     canv = get_delegate(self).render(size, focus=focus)
-            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   File "urwid/widget/widget.py", line 112, in cached_render
-     canv = fn(self, size, focus=focus)
-            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   File "urwid/widget/attr_map.py", line 158, in render
-     canv = self._original_widget.render(size, focus=focus)
-            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   File "urwid/widget/widget.py", line 112, in cached_render
-     canv = fn(self, size, focus=focus)
-            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   File "urwid/widget/pile.py", line 829, in render
-     canv = w.render(w_size, focus=focus and item_focus)
-            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   File "urwid/widget/widget.py", line 112, in cached_render
-     canv = fn(self, size, focus=focus)
-            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   File "urwid/widget/widget.py", line 711, in render
-     canv = get_delegate(self).render(size, focus=focus)
-            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   File "urwid/widget/widget.py", line 112, in cached_render
-     canv = fn(self, size, focus=focus)
-            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   File "urwid/widget/padding.py", line 330, in render
-     canv = self._original_widget.render((maxcol,) + size[1:], focus)
-            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   File "urwid/widget/widget.py", line 112, in cached_render
-     canv = fn(self, size, focus=focus)
-            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   File "urwid/widget/pile.py", line 822, in render
+   File "/usr/lib/python3/dist-packages/urwid/widget/pile.py", line 822, in render
      _widths, heights, size_args = self.get_rows_sizes(size, focus)
                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   File "urwid/widget/pile.py", line 730, in get_rows_sizes
+   File "/usr/lib/python3/dist-packages/urwid/widget/pile.py", line 730, in get_rows_sizes
      heights.append(w.pack(w_h_arg, item_focus)[1])
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   File "urwid/widget/padding.py", line 276, in pack
+   File "/usr/lib/python3/dist-packages/urwid/widget/pile.py", line 744, in pack
      return super().pack(size, focus)
             ^^^^^^^^^^^^^^^^^^^^^^^^^
-   File "urwid/widget/widget.py", line 401, in pack
+   File "/usr/lib/python3/dist-packages/urwid/widget/widget.py", line 401, in pack
      raise WidgetError(f"Cannot pack (maxcol,) size, this is not a flow widget: {self!r}")
- urwid.widget.widget.WidgetError: Cannot pack (maxcol,) size, this is not a flow widget: <Padding widget <FocusTrackingPile widget> align=<Align.CENTER: 'center'> min_width=14 width=14>
+ urwid.widget.widget.WidgetError: Cannot pack (maxcol,) size, this is not a flow widget: <Pile widget>
+ 
+ Minimal code to reproduce:
+ 
+ ```python
+ from urwid import Pile
+ 
+ Pile([
+     ("pack", Pile([])),
+ ]).render((10,))
+ ```
+ 
+ This looks like a regression in 2.6.4-1 since the same code was not
+ failing on 2.1.2-4
  
  There is an upstream fix [1] that is released in urwid 2.6.5.
  
-  https://github.com/urwid/urwid/pull/843
+  https://github.com/urwid/urwid/pull/843

** Summary changed:

- urwid 2.6.4-1 exception when using an empty Pile or Columns as a flow widget
+ urwid 2.6.4-1 exception when rendering an empty Pile or Columns as a flow widget

-- 
You received this bug notification because you are a member of Ubuntu
OpenStack, which is subscribed to urwid in Ubuntu.
https://bugs.launchpad.net/bugs/2058388

Title:
  urwid 2.6.4-1 exception when rendering an empty Pile or Columns as a
  flow widget

Status in subiquity:
  Invalid
Status in urwid package in Ubuntu:
  In Progress

Bug description:
  When attempting to render an empty Pile or Columns as a flow widget
  using urwid 2.6.4-1, it fails with the following exception:

    File "/usr/lib/python3/dist-packages/urwid/widget/widget.py", line 112, in cached_render
      canv = fn(self, size, focus=focus)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/urwid/widget/pile.py", line 822, in render
      _widths, heights, size_args = self.get_rows_sizes(size, focus)
                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/urwid/widget/pile.py", line 730, in get_rows_sizes
      heights.append(w.pack(w_h_arg, item_focus)[1])
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/urwid/widget/pile.py", line 744, in pack
      return super().pack(size, focus)
             ^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/urwid/widget/widget.py", line 401, in pack
      raise WidgetError(f"Cannot pack (maxcol,) size, this is not a flow widget: {self!r}")
  urwid.widget.widget.WidgetError: Cannot pack (maxcol,) size, this is not a flow widget: <Pile widget>

  Minimal code to reproduce:

  ```python
  from urwid import Pile

  Pile([
      ("pack", Pile([])),
  ]).render((10,))
  ```

  This looks like a regression in 2.6.4-1 since the same code was not
  failing on 2.1.2-4

  There is an upstream fix [1] that is released in urwid 2.6.5.

   https://github.com/urwid/urwid/pull/843

To manage notifications about this bug go to:
https://bugs.launchpad.net/subiquity/+bug/2058388/+subscriptions




More information about the Ubuntu-openstack-bugs mailing list