Skip to content
Snippets Groups Projects

Bump textual to the latest version

Merged Mateusz Żebrak requested to merge mzebrak/textual-bump into develop

Merge request reports

Loading
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
  • assigned to @mzebrak

  • Mateusz Żebrak added 10 commits

    added 10 commits

    • 426a8e4f - Fix crash on alarm info by escaping markup in RecoveryAccountWarningListed.FIX_ALARM_INFO
    • 9b6120f6 - Bump textual to 2.0.1
    • 720af337 - Bump textual to 2.0.2
    • 46ea6c1e - Bump textual to 2.0.3
    • 89b1d0bd - Bump textual to 2.0.4
    • 6aeb4c64 - Bump textual to 2.1.0
    • 3aed9426 - Bump textual to 2.1.1
    • 11931ddb - Bump textual to 2.1.2
    • 930938c4 - Add workaround for CanFocusWithScrollbarsOnly missing focus
    • 8d455036 - Fix CanFocusWithScrollbarsOnly

    Compare with previous version

  • added 1 commit

    • ae7480dc - Fix CanFocusWithScrollbarsOnly

    Compare with previous version

  • Mateusz Żebrak added 10 commits

    added 10 commits

    • bddc4313 - Fix crash in cart by disabling markup for operation details table cell
    • dd798dcc - Bump textual to 2.0.1
    • f907f1de - Bump textual to 2.0.2
    • 7b48c061 - Bump textual to 2.0.3
    • bc3e9c4e - Bump textual to 2.0.4
    • 4d277102 - Bump textual to 2.1.0
    • 7c64e5b7 - Bump textual to 2.1.1
    • 83907f22 - Bump textual to 2.1.2
    • bda6d2b1 - Add workaround for CanFocusWithScrollbarsOnly missing focus
    • c6581647 - Fix CanFocusWithScrollbarsOnly

    Compare with previous version

  • added 1 commit

    • 4ccd3f58 - Fix CanFocusWithScrollbarsOnly

    Compare with previous version

  • Mateusz Żebrak added 60 commits

    added 60 commits

    • 4ccd3f58...127f5c42 - 50 earlier commits
    • dc23c896 - Fix crash on alarm info by escaping markup in RecoveryAccountWarningListed.FIX_ALARM_INFO
    • b3e2c85b - Fix crash in cart by disabling markup for operation details table cell
    • e0db29b6 - Bump textual to 2.0.1
    • db4cecbd - Bump textual to 2.0.2
    • d2c48a67 - Bump textual to 2.0.3
    • 5db72f45 - Bump textual to 2.0.4
    • c51b7329 - Bump textual to 2.1.0
    • a47f7356 - Bump textual to 2.1.1
    • e3a13a3a - Bump textual to 2.1.2
    • 469200a9 - Fix CanFocusWithScrollbarsOnly

    Compare with previous version

  • changed milestone to %Release v1.27.5.21

  • Mateusz Żebrak requested review from @jziebinski

    requested review from @jziebinski

  • added Review label

  • Mateusz Żebrak mentioned in issue #395

    mentioned in issue #395

  • Mateusz Żebrak resolved all threads

    resolved all threads

  • Mateusz Żebrak mentioned in issue #397

    mentioned in issue #397

  • Mateusz Żebrak added 53 commits

    added 53 commits

    • b91adf81 - 1 commit from branch develop
    • b91adf81...9ed94bd7 - 42 earlier commits
    • 3d17feca - Fix crash on alarm info by escaping markup in RecoveryAccountWarningListed.FIX_ALARM_INFO
    • cff7f3d6 - Fix crash in cart by disabling markup for operation details table cell
    • 2d232a3d - Bump textual to 2.0.1
    • cb9013ab - Bump textual to 2.0.2
    • df4a4e24 - Bump textual to 2.0.3
    • ad1af86c - Bump textual to 2.0.4
    • 06b4bc4a - Bump textual to 2.1.0
    • beb2f594 - Bump textual to 2.1.1
    • ad9ec807 - Bump textual to 2.1.2
    • 4dd31544 - Fix CanFocusWithScrollbarsOnly

    Compare with previous version

  • added 1 commit

    • 1b5c63ea - Fix ctrl+c help quit not being displayed

    Compare with previous version

    • Resolved by Jakub Ziebinski

      crash when trying to switch operations in the cart (when trying to remove operation also):

       ╭─────────────────────────────────────────────── Traceback (most recent call last) ────────────────────────────────────────────────╮
      │ /home/dev/workspace/clive/clive/__private/ui/screens/transaction_summary/cart_table.py:336 in move_item                          │
      │                                                                                                                                  │
      │   333 │   │   assert to_index < len(self.profile.transaction), "Item cannot be moved to id gre ╭───────── locals ─────────╮      │
      │   334 │   │                                                                                    │      event = Move()      │      │
      │   335 │   │   with self.app.batch_update():                                                    │ from_index = 1           │      │
      │ ❱ 336 │   │   │   self._update_values_of_swapped_rows(from_index=from_index, to_index=to_index │       self = CartTable() │      │
      │   337 │   │   │   self._focus_item_on_move(to_index)                                           │   to_index = 2           │      │
      │   338 │   │                                                                                    ╰──────────────────────────╯      │
      │   339 │   │   self.profile.transaction.swap_operations(from_index, to_index)                                                     │
      │                                                                                                                                  │
      │ /home/dev/workspace/clive/clive/__private/ui/screens/transaction_summary/cart_table.py:405 in _update_values_of_swapped_rows     │
      │                                                                                                                                  │
      │   402 │   │   │   for cell, value in zip(source_cells, target_data):                                                             │
      │   403 │   │   │   │   cell.update_content(value)                                                                                 │
      │   404 │   │                                                                                                                      │
      │ ❱ 405 │   │   from_cells, from_data = extract_cells_and_data(from_index)                                                         │
      │   406 │   │   to_cells, to_data = extract_cells_and_data(to_index)                                                               │
      │   407 │   │                                                                                                                      │
      │   408 │   │   swap_cell_data(to_cells, from_data)                                                                                │
      │                                                                                                                                  │
      │ ╭─────────────────────────────────────────────────────────── locals ───────────────────────────────────────────────────────────╮ │
      │ │ extract_cells_and_data = <function CartTable._update_values_of_swapped_rows.<locals>.extract_cells_and_data at               │ │
      │ │                          0x7663c4de9480>                                                                                     │ │
      │ │             from_index = 1                                                                                                   │ │
      │ │                   self = CartTable()                                                                                         │ │
      │ │         swap_cell_data = <function CartTable._update_values_of_swapped_rows.<locals>.swap_cell_data at 0x7663c4de9ea0>       │ │
      │ │               to_index = 2                                                                                                   │ │
      │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
      │                                                                                                                                  │
      │ /home/dev/workspace/clive/clive/__private/ui/screens/transaction_summary/cart_table.py:397 in extract_cells_and_data             │
      │                                                                                                                                  │
      │   394 │   │   │   data: list[str] = []                                                                                           │
      │   395 │   │   │   for cell in cells:                                                                                             │
      │   396 │   │   │   │   content = cell.content                                                                                     │
      │ ❱ 397 │   │   │   │   assert isinstance(content, str), f"Cell content is not a string: {conten                                   │
      │   398 │   │   │   │   data.append(content)                                                                                       │
      │   399 │   │   │   return list(cells), data                                                                                       │
      │   400                                                                                                                            │
      │                                                                                                                                  │
      │ ╭───────────────────────────────── locals ─────────────────────────────────╮                                                     │
      │ │      cell = CliveCheckerBoardTableCell()                                 │                                                     │
      │ │     cells = [CliveCheckerBoardTableCell(), CliveCheckerBoardTableCell()] │                                                     │
      │ │   content = Static()                                                     │                                                     │
      │ │      data = ['Transfer to vesting']                                      │                                                     │
      │ │       row = CartItem()                                                   │                                                     │
      │ │ row_index = 1                                                            │                                                     │
      │ │      self = CartTable()                                                  │                                                     │
      │ ╰──────────────────────────────────────────────────────────────────────────╯                                                     │
      ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
      AssertionError: Cell content is not a string: Static()
      Edited by Jakub Ziebinski
    • Resolved by Jakub Ziebinski

      crash when trying to remove known account:

      ╭─────────────────────────────────────────────── Traceback (most recent call last) ────────────────────────────────────────────────╮
      │ /home/dev/.pyenv/versions/clive/lib/python3.10/site-packages/textual/app.py:3748 in on_event                                     │
      │                                                                                                                                  │
      │   3745 │   │   │   │   │   │   # Shouldn't occur, since at the very least this will find the Sc                                  │
      │   3746 │   │   │   │   │   │   self._mouse_down_widget = None                                                                    │
      │   3747 │   │   │   │                                                                                                             │
      │ ❱ 3748 │   │   │   │   self.screen._forward_event(event)                                                                         │
      │   3749 │   │   │   │                                                                                                             │
      │   3750 │   │   │   │   # If a MouseUp occurs at the same widget as a MouseDown, then we should                                   │
      │   3751 │   │   │   │   # consider it a click, and produce a Click event.                                                         │
      │                                                                                                                                  │
      │ ╭────────────────────────────────────────────────── locals ──────────────────────────────────────────────────╮                   │
      │ │     _ = Region(x=66, y=22, width=32, height=1)                                                             │                   │
      │ │ event = MouseDown(None, x=90, y=22, pointer_x=90.0, pointer_y=22.0, button=1)                              │                   │
      │ │  self = Clive(title='Clive (AccountManagement)', classes={'-dark-mode'}, pseudo_classes={'focus', 'dark'}) │                   │
      │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────╯                   │
      │                                                                                                                                  │
      │ /home/dev/.pyenv/versions/clive/lib/python3.10/site-packages/textual/screen.py:1533 in _forward_event                            │
      │                                                                                                                                  │
      │   1530 │   │   │   elif isinstance(event, events.MouseDown) and not self.app.mouse_captured:                                     │
      │   1531 │   │   │   │   self._box_select = event.shift                                                                            │
      │   1532 │   │   │   │   self._mouse_down_offset = event.screen_offset                                                             │
      │ ❱ 1533 │   │   │   │   select_widget, select_offset = self.get_widget_and_offset_at(                                             │
      │   1534 │   │   │   │   │   event.screen_x, event.screen_y                                                                        │
      │   1535 │   │   │   │   )                                                                                                         │
      │   1536 │   │   │   │   if (                                                                                                      │
      │                                                                                                                                  │
      │ ╭─────────────────────────────────── locals ────────────────────────────────────╮                                                │
      │ │ event = MouseDown(None, x=90, y=22, pointer_x=90.0, pointer_y=22.0, button=1) │                                                │
      │ │  self = AccountManagement()                                                   │                                                │
      │ ╰───────────────────────────────────────────────────────────────────────────────╯                                                │
      │                                                                                                                                  │
      │ /home/dev/.pyenv/versions/clive/lib/python3.10/site-packages/textual/screen.py:634 in get_widget_and_offset_at                   │
      │                                                                                                                                  │
      │    631 │   │   Returns:                                                                         ╭────────── locals ──────────╮   │
      │    632 │   │   │   Tuple of Widget and Offset, both of which may be None.                       │ self = AccountManagement() │   │
      │    633 │   │   """                                                                              │    x = 90                  │   │
      │ ❱  634 │   │   return self._compositor.get_widget_and_offset_at(x, y)                           │    y = 22                  │   │
      │    635 │                                                                                        ╰────────────────────────────╯   │
      │    636 │   def find_widget(self, widget: Widget) -> MapGeometry:                                                                 │
      │    637 │   │   """Get the screen region of a Widget.                                                                             │
      │                                                                                                                                  │
      │ /home/dev/.pyenv/versions/clive/lib/python3.10/site-packages/textual/_compositor.py:904 in get_widget_and_offset_at              │
      │                                                                                                                                  │
      │    901 │   │   y -= region.y + gutter_right                                                                                      │
      │    902 │   │                                                                                                                     │
      │    903 │   │   visible_screen_stack.set(widget.app._background_screens)                                                          │
      │ ❱  904 │   │   line = widget.render_line(y)                                                                                      │
      │    905 │   │                                                                                                                     │
      │    906 │   │   end = 0                                                                                                           │
      │    907 │   │   start = 0                                                                                                         │
      │                                                                                                                                  │
      │ ╭────────────────────────────────── locals ──────────────────────────────────╮                                                   │
      │ │  gutter_left = 0                                                           │                                                   │
      │ │ gutter_right = 0                                                           │                                                   │
      │ │       region = Region(x=66, y=22, width=32, height=1)                      │                                                   │
      │ │         self = <Compositor                                                 │                                                   │
      │ │                │   size=Size(width=132, height=48)                         │                                                   │
      │ │                │   widgets={                                               │                                                   │
      │ │                │   │   CliveCheckerBoardTableCell(),                       │                                                   │
      │ │                │   │   CliveCheckerBoardTableCell(),                       │                                                   │
      │ │                │   │   Label(),                                            │                                                   │
      │ │                │   │   DynamicLabel(id='value'),                           │                                                   │
      │ │                │   │   WorkingAccountButton(),                             │                                                   │
      │ │                │   │   Horizontal(),                                       │                                                   │
      │ │                │   │   Label(),                                            │                                                   │
      │ │                │   │   AddAccountContainer(),                              │                                                   │
      │ │                │   │   DynamicLabel(id='profile-name'),                    │                                                   │
      │ │                │   │   OneLineButton(variant='success'),                   │                                                   │
      │ │                │   │   ... +70                                             │                                                   │
      │ │                │   }                                                       │                                                   │
      │ │                >                                                           │                                                   │
      │ │       widget = OneLineButton(id='discard-account-button', variant='error') │                                                   │
      │ │            x = -67                                                         │                                                   │
      │ │            y = -23                                                         │                                                   │
      │ ╰────────────────────────────────────────────────────────────────────────────╯                                                   │
      │                                                                                                                                  │
      │ /home/dev/.pyenv/versions/clive/lib/python3.10/site-packages/textual/widget.py:3902 in render_line                               │
      │                                                                                                                                  │
      │   3899 │   │   │   A rendered line.                                                                                              │
      │   3900 │   │   """                                                                                                               │
      │   3901 │   │   if self._dirty_regions:                                                                                           │
      │ ❱ 3902 │   │   │   self._render_content()                                                                                        │
      │   3903 │   │   try:                                                                                                              │
      │   3904 │   │   │   line = self._render_cache.lines[y]                                                                            │
      │   3905 │   │   except IndexError:                                                                                                │
      │                                                                                                                                  │
      │ ╭────────────────────────────── locals ──────────────────────────────╮                                                           │
      │ │ self = OneLineButton(id='discard-account-button', variant='error') │                                                           │
      │ │    y = -23                                                         │                                                           │
      │ ╰────────────────────────────────────────────────────────────────────╯                                                           │
      │                                                                                                                                  │
      │ /home/dev/.pyenv/versions/clive/lib/python3.10/site-packages/textual/widget.py:3888 in _render_content                           │
      │                                                                                                                                  │
      │   3885 │   │   """Render all lines."""                                                                                           │
      │   3886 │   │   width, height = self.size                                                                                         │
      │   3887 │   │   visual = self._render()                                                                                           │
      │ ❱ 3888 │   │   strips = Visual.to_strips(self, visual, width, height, self.visual_style)                                         │
      │   3889 │   │   self._render_cache = _RenderCache(self.size, strips)                                                              │
      │   3890 │   │   self._dirty_regions.clear()                                                                                       │
      │   3891                                                                                                                           │
      │                                                                                                                                  │
      │ ╭───────────────────────────────── locals ──────────────────────────────────╮                                                    │
      │ │ height = 0                                                                │                                                    │
      │ │   self = OneLineButton(id='discard-account-button', variant='error')      │                                                    │
      │ │ visual = RichVisual(                                                      │                                                    │
      │ │          │   OneLineButton(                                               │                                                    │
      │ │          │   │   id='discard-account-button',                             │                                                    │
      │ │          │   │   variant='error'                                          │                                                    │
      │ │          │   ),                                                           │                                                    │
      │ │          │   <textual.pad.HorizontalPad object at 0x7084b3995810>         │                                                    │
      │ │          )                                                                │                                                    │
      │ │  width = 0                                                                │                                                    │
      │ ╰───────────────────────────────────────────────────────────────────────────╯                                                    │
      │                                                                                                                                  │
      │ /home/dev/.pyenv/versions/clive/lib/python3.10/site-packages/textual/visual.py:191 in to_strips                                  │
      │                                                                                                                                  │
      │   188 │   │   │   A list of Strips containing the render.                                                                        │
      │   189 │   │   """                                                                                                                │
      │   190 │   │                                                                                                                      │
      │ ❱ 191 │   │   selection = widget.text_selection                                                                                  │
      │   192 │   │   if selection is not None:                                                                                          │
      │   193 │   │   │   selection_style: Style | None = Style.from_rich_style(                                                         │
      │   194 │   │   │   │   widget.screen.get_component_rich_style("screen--selection")                                                │
      │                                                                                                                                  │
      │ ╭───────────────────────────────────────────── locals ─────────────────────────────────────────────╮                             │
      │ │    cls = <class 'textual.visual.Visual'>                                                         │                             │
      │ │ height = 0                                                                                       │                             │
      │ │    pad = False                                                                                   │                             │
      │ │  style = <Style background=Color(172, 55, 84) foreground=Color(255, 255, 255, a=0.87) bold=True> │                             │
      │ │ visual = RichVisual(                                                                             │                             │
      │ │          │   OneLineButton(id='discard-account-button', variant='error'),                        │                             │
      │ │          │   <textual.pad.HorizontalPad object at 0x7084b3995810>                                │                             │
      │ │          )                                                                                       │                             │
      │ │ widget = OneLineButton(id='discard-account-button', variant='error')                             │                             │
      │ │  width = 0                                                                                       │                             │
      │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯                             │
      │                                                                                                                                  │
      │ /home/dev/.pyenv/versions/clive/lib/python3.10/site-packages/textual/widget.py:652 in text_selection                             │
      │                                                                                                                                  │
      │    649 │   @property                                                                                                             │
      │    650 │   def text_selection(self) -> Selection | None:                                                                         │
      │    651 │   │   """Text selection information, or `None` if no text is selected in this widget."                                  │
      │ ❱  652 │   │   return self.screen.selections.get(self, None)                                                                     │
      │    653 │                                                                                                                         │
      │    654 │   def _cover(self, widget: Widget) -> None:                                                                             │
      │    655 │   │   """Set a widget used to replace the visuals of this widget (used for loading ind                                  │
      │                                                                                                                                  │
      │ ╭────────────────────────────── locals ──────────────────────────────╮                                                           │
      │ │ self = OneLineButton(id='discard-account-button', variant='error') │                                                           │
      │ ╰────────────────────────────────────────────────────────────────────╯                                                           │
      │                                                                                                                                  │
      │ /home/dev/.pyenv/versions/clive/lib/python3.10/site-packages/textual/dom.py:757 in screen                                        │
      │                                                                                                                                  │
      │    754 │   │   │   │   "Widget is missing attributes; have you called the constructor in your w                                  │
      │    755 │   │   │   ) from None                                                                                                   │
      │    756 │   │   if not isinstance(node, Screen):                                                                                  │
      │ ❱  757 │   │   │   raise NoScreen("node has no screen")                                                                          │
      │    758 │   │   return node                                                                                                       │
      │    759 │                                                                                                                         │
      │    760 │   @property                                                                                                             │
      │                                                                                                                                  │
      │ ╭─────────────────────────────── locals ───────────────────────────────╮                                                         │
      │ │   node = None                                                        │                                                         │
      │ │ Screen = <class 'textual.screen.Screen'>                             │                                                         │
      │ │   self = OneLineButton(id='discard-account-button', variant='error') │                                                         │
      │ ╰──────────────────────────────────────────────────────────────────────╯                                                         │
      ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
      NoScreen: node has no screen
  • Mateusz Żebrak added 4 commits

    added 4 commits

    • 8f83835e - Rename Content -> ContentT
    • bad6a196 - Introduce CellContent
    • 1af12a9e - Remove assertion for Cell content type and InvalidContentUpdateError
    • 115c89e5 - Use Content instead of Static with markup=False to disable markup

    Compare with previous version

  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
Please register or sign in to reply
Loading