urwid 2.6.16__py3-none-any.whl → 3.0.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of urwid might be problematic. Click here for more details.

Files changed (53) hide show
  1. urwid/__init__.py +1 -4
  2. urwid/canvas.py +18 -37
  3. urwid/command_map.py +4 -3
  4. urwid/container.py +1 -1
  5. urwid/decoration.py +1 -1
  6. urwid/display/_raw_display_base.py +8 -5
  7. urwid/display/_win32_raw_display.py +11 -13
  8. urwid/display/common.py +26 -55
  9. urwid/display/curses.py +1 -1
  10. urwid/display/escape.py +6 -8
  11. urwid/display/lcd.py +4 -6
  12. urwid/display/web.py +7 -12
  13. urwid/event_loop/asyncio_loop.py +1 -2
  14. urwid/event_loop/main_loop.py +13 -18
  15. urwid/event_loop/tornado_loop.py +4 -5
  16. urwid/event_loop/trio_loop.py +1 -1
  17. urwid/font.py +10 -15
  18. urwid/signals.py +2 -1
  19. urwid/str_util.py +15 -18
  20. urwid/text_layout.py +6 -7
  21. urwid/util.py +6 -17
  22. urwid/version.py +9 -4
  23. urwid/vterm.py +9 -44
  24. urwid/widget/__init__.py +0 -6
  25. urwid/widget/attr_wrap.py +8 -10
  26. urwid/widget/bar_graph.py +2 -7
  27. urwid/widget/big_text.py +9 -7
  28. urwid/widget/box_adapter.py +4 -4
  29. urwid/widget/columns.py +50 -81
  30. urwid/widget/container.py +29 -75
  31. urwid/widget/edit.py +8 -8
  32. urwid/widget/filler.py +6 -6
  33. urwid/widget/frame.py +28 -37
  34. urwid/widget/grid_flow.py +24 -109
  35. urwid/widget/line_box.py +13 -0
  36. urwid/widget/listbox.py +12 -50
  37. urwid/widget/monitored_list.py +6 -4
  38. urwid/widget/overlay.py +4 -37
  39. urwid/widget/padding.py +11 -48
  40. urwid/widget/pile.py +177 -156
  41. urwid/widget/popup.py +2 -2
  42. urwid/widget/progress_bar.py +0 -10
  43. urwid/widget/scrollable.py +24 -32
  44. urwid/widget/treetools.py +27 -48
  45. urwid/widget/widget.py +7 -124
  46. urwid/widget/widget_decoration.py +4 -33
  47. urwid/wimp.py +1 -1
  48. {urwid-2.6.16.dist-info → urwid-3.0.0.dist-info}/METADATA +9 -11
  49. urwid-3.0.0.dist-info/RECORD +74 -0
  50. {urwid-2.6.16.dist-info → urwid-3.0.0.dist-info}/WHEEL +1 -1
  51. urwid-2.6.16.dist-info/RECORD +0 -74
  52. {urwid-2.6.16.dist-info → urwid-3.0.0.dist-info/licenses}/COPYING +0 -0
  53. {urwid-2.6.16.dist-info → urwid-3.0.0.dist-info}/top_level.txt +0 -0
urwid/widget/treetools.py CHANGED
@@ -27,7 +27,6 @@ Features:
27
27
  - custom list walker for displaying widgets in a tree fashion
28
28
  """
29
29
 
30
-
31
30
  from __future__ import annotations
32
31
 
33
32
  import typing
@@ -107,8 +106,8 @@ class TreeWidget(WidgetWrap[Padding[typing.Union[Text, Columns]]]):
107
106
  def next_inorder(self) -> TreeWidget | None:
108
107
  """Return the next TreeWidget depth first from this one."""
109
108
  # first check if there's a child widget
110
- first_child = self.first_child()
111
- if first_child is not None:
109
+
110
+ if (first_child := self.first_child()) is not None:
112
111
  return first_child
113
112
 
114
113
  # now we need to hunt for the next sibling
@@ -131,24 +130,21 @@ class TreeWidget(WidgetWrap[Padding[typing.Union[Text, Columns]]]):
131
130
  def prev_inorder(self) -> TreeWidget | None:
132
131
  """Return the previous TreeWidget depth first from this one."""
133
132
  this_node = self._node
134
- prev_node = this_node.prev_sibling()
135
- if prev_node is not None:
133
+
134
+ if (prev_node := this_node.prev_sibling()) is not None:
136
135
  # we need to find the last child of the previous widget if its
137
136
  # expanded
138
137
  prev_widget = prev_node.get_widget()
139
- last_child = prev_widget.last_child()
140
- if last_child is None:
141
- return prev_widget
138
+ if (last_child := prev_widget.last_child()) is not None:
139
+ return last_child
142
140
 
143
- return last_child
141
+ return prev_widget
144
142
 
145
143
  # need to hunt for the parent
146
- depth = this_node.get_depth()
147
- if prev_node is None and depth == 0:
144
+ if this_node.get_depth() == 0:
148
145
  return None
149
- if prev_node is None:
150
- prev_node = this_node.get_parent()
151
- return prev_node.get_widget()
146
+
147
+ return this_node.get_parent().get_widget()
152
148
 
153
149
  def keypress(
154
150
  self,
@@ -212,11 +208,10 @@ class TreeWidget(WidgetWrap[Padding[typing.Union[Text, Columns]]]):
212
208
  else:
213
209
  return None
214
210
  # recursively search down for the last descendant
215
- last_descendant = last_child.last_child()
216
- if last_descendant is None:
217
- return last_child
211
+ if (last_descendant := last_child.last_child()) is not None:
212
+ return last_descendant
218
213
 
219
- return last_descendant
214
+ return last_child
220
215
 
221
216
 
222
217
  class TreeNode:
@@ -372,32 +367,18 @@ class ParentNode(TreeNode):
372
367
 
373
368
  def next_child(self, key: Hashable) -> TreeNode | None:
374
369
  """Return the next child node in index order from the given key."""
375
-
376
- index = self.get_child_index(key)
377
- # the given node may have just been deleted
378
- if index is None:
379
- return None
380
- index += 1
381
-
382
- child_keys = self.get_child_keys()
383
- if index < len(child_keys):
370
+ if (index := self.get_child_index(key)) is not None and (index + 1) < len(child_keys := self.get_child_keys()):
384
371
  # get the next item at same level
385
- return self.get_child_node(child_keys[index])
372
+ return self.get_child_node(child_keys[index + 1])
386
373
 
374
+ # the given node may have just been deleted
387
375
  return None
388
376
 
389
377
  def prev_child(self, key: Hashable) -> TreeNode | None:
390
378
  """Return the previous child node in index order from the given key."""
391
- index = self.get_child_index(key)
392
- if index is None:
393
- return None
394
-
395
- child_keys = self.get_child_keys()
396
- index -= 1
397
-
398
- if index >= 0:
399
- # get the previous item at same level
400
- return self.get_child_node(child_keys[index])
379
+ if (index := self.get_child_index(key)) is not None and index >= 1:
380
+ # get the previous item at the same level
381
+ return self.get_child_node(self.get_child_keys()[index - 1])
401
382
 
402
383
  return None
403
384
 
@@ -435,18 +416,16 @@ class TreeWalker(ListWalker):
435
416
 
436
417
  # pylint: disable=arguments-renamed # its bad, but we should not change API
437
418
  def get_next(self, start_from) -> tuple[TreeWidget, TreeNode] | tuple[None, None]:
438
- target = start_from.get_widget().next_inorder()
439
- if target is None:
440
- return None, None
419
+ if (target := start_from.get_widget().next_inorder()) is not None:
420
+ return target, target.get_node()
441
421
 
442
- return target, target.get_node()
422
+ return None, None
443
423
 
444
424
  def get_prev(self, start_from) -> tuple[TreeWidget, TreeNode] | tuple[None, None]:
445
- target = start_from.get_widget().prev_inorder()
446
- if target is None:
447
- return None, None
425
+ if (target := start_from.get_widget().prev_inorder()) is not None:
426
+ return target, target.get_node()
448
427
 
449
- return target, target.get_node()
428
+ return None, None
450
429
 
451
430
  # pylint: enable=arguments-renamed
452
431
 
@@ -525,8 +504,8 @@ class TreeListBox(ListBox):
525
504
 
526
505
  maxrow, _maxcol = size
527
506
  _widget, pos = self.body.get_focus()
528
- lastwidget = pos.get_root().get_widget().last_child()
529
- if lastwidget:
507
+
508
+ if lastwidget := pos.get_root().get_widget().last_child():
530
509
  lastnode = lastwidget.get_node()
531
510
 
532
511
  self.change_focus(size, lastnode, maxrow - 1)
urwid/widget/widget.py CHANGED
@@ -41,7 +41,7 @@ WrappedWidget = typing.TypeVar("WrappedWidget")
41
41
  LOGGER = logging.getLogger(__name__)
42
42
 
43
43
 
44
- class WidgetMeta(MetaSuper, signals.MetaSignals):
44
+ class WidgetMeta(signals.MetaSignals, MetaSuper):
45
45
  """
46
46
  Bases: :class:`MetaSuper`, :class:`MetaSignals`
47
47
 
@@ -105,8 +105,8 @@ def cache_widget_render(cls):
105
105
  @functools.wraps(fn)
106
106
  def cached_render(self, size, focus=False):
107
107
  focus = focus and not ignore_focus
108
- canv = CanvasCache.fetch(self, cls, size, focus)
109
- if canv:
108
+
109
+ if canv := CanvasCache.fetch(self, cls, size, focus):
110
110
  return canv
111
111
 
112
112
  canv = fn(self, size, focus=focus)
@@ -174,8 +174,8 @@ def cache_widget_rows(cls):
174
174
  @functools.wraps(fn)
175
175
  def cached_rows(self, size: tuple[int], focus: bool = False) -> int:
176
176
  focus = focus and not ignore_focus
177
- canv = CanvasCache.fetch(self, cls, size, focus)
178
- if canv:
177
+
178
+ if canv := CanvasCache.fetch(self, cls, size, focus):
179
179
  return canv.rows()
180
180
 
181
181
  return fn(self, size, focus)
@@ -565,133 +565,16 @@ class Widget(metaclass=WidgetMeta):
565
565
  raise NotImplementedError
566
566
 
567
567
 
568
- class FlowWidget(Widget):
569
- """
570
- Deprecated. Inherit from Widget and add:
571
-
572
- _sizing = frozenset(['flow'])
573
-
574
- at the top of your class definition instead.
575
-
576
- Base class of widgets that determine their rows from the number of
577
- columns available.
578
- """
579
-
580
- _sizing = frozenset([Sizing.FLOW])
581
-
582
- def __init__(self, *args, **kwargs):
583
- warnings.warn(
584
- """
585
- FlowWidget is deprecated. Inherit from Widget and add:
586
-
587
- _sizing = frozenset(['flow'])
588
-
589
- at the top of your class definition instead.""",
590
- DeprecationWarning,
591
- stacklevel=3,
592
- )
593
- super().__init__()
594
-
595
- def rows(self, size: tuple[int], focus: bool = False) -> int:
596
- """
597
- All flow widgets must implement this function.
598
- """
599
- raise NotImplementedError()
600
-
601
- def render(self, size: tuple[int], focus: bool = False) -> Canvas: # type: ignore[override]
602
- """
603
- All widgets must implement this function.
604
- """
605
- raise NotImplementedError()
606
-
607
-
608
- class BoxWidget(Widget):
609
- """
610
- Deprecated. Inherit from Widget and add:
611
-
612
- _sizing = frozenset(['box'])
613
- _selectable = True
614
-
615
- at the top of your class definition instead.
616
-
617
- Base class of width and height constrained widgets such as
618
- the top level widget attached to the display object
619
- """
620
-
621
- _selectable = True
622
- _sizing = frozenset([Sizing.BOX])
623
-
624
- def __init__(self, *args, **kwargs):
625
- warnings.warn(
626
- """
627
- BoxWidget is deprecated. Inherit from Widget and add:
628
-
629
- _sizing = frozenset(['box'])
630
- _selectable = True
631
-
632
- at the top of your class definition instead.""",
633
- DeprecationWarning,
634
- stacklevel=3,
635
- )
636
- super().__init__()
637
-
638
- def render(self, size: tuple[int, int], focus: bool = False) -> Canvas: # type: ignore[override]
639
- """
640
- All widgets must implement this function.
641
- """
642
- raise NotImplementedError()
643
-
644
-
645
568
  def fixed_size(size: tuple[()]) -> None:
646
569
  """
647
570
  raise ValueError if size != ().
648
571
 
649
572
  Used by FixedWidgets to test size parameter.
650
573
  """
651
- if size != ():
574
+ if size:
652
575
  raise ValueError(f"FixedWidget takes only () for size.passed: {size!r}")
653
576
 
654
577
 
655
- class FixedWidget(Widget):
656
- """
657
- Deprecated. Inherit from Widget and add:
658
-
659
- _sizing = frozenset(['fixed'])
660
-
661
- at the top of your class definition instead.
662
-
663
- Base class of widgets that know their width and height and
664
- cannot be resized
665
- """
666
-
667
- _sizing = frozenset([Sizing.FIXED])
668
-
669
- def __init__(self, *args, **kwargs):
670
- warnings.warn(
671
- """
672
- FixedWidget is deprecated. Inherit from Widget and add:
673
-
674
- _sizing = frozenset(['fixed'])
675
-
676
- at the top of your class definition instead.""",
677
- DeprecationWarning,
678
- stacklevel=3,
679
- )
680
- super().__init__()
681
-
682
- def render(self, size: tuple[()], focus: bool = False) -> Canvas: # type: ignore[override]
683
- """
684
- All widgets must implement this function.
685
- """
686
- raise NotImplementedError()
687
-
688
- def pack(self, size: tuple[()] = (), focus: bool = False) -> tuple[int, int]: # type: ignore[override]
689
- """
690
- All fixed widgets must implement this function.
691
- """
692
- raise NotImplementedError()
693
-
694
-
695
578
  def delegate_to_widget_mixin(attribute_name: str) -> type[Widget]:
696
579
  """
697
580
  Return a mixin class that delegates all standard widget methods
@@ -827,7 +710,7 @@ class WidgetWrap(delegate_to_widget_mixin("_wrapped_widget"), typing.Generic[Wra
827
710
  False
828
711
  """
829
712
  warnings.warn(
830
- "_set_w is deprecated. Please use 'WidgetWrap._w' property directly",
713
+ "_set_w is deprecated. Please use 'WidgetWrap._w' property directly. API will be removed in version 5.0.",
831
714
  DeprecationWarning,
832
715
  stacklevel=2,
833
716
  )
@@ -71,29 +71,12 @@ class WidgetDecoration(Widget, typing.Generic[WrappedWidget]): # pylint: disabl
71
71
  self._original_widget = original_widget
72
72
  self._invalidate()
73
73
 
74
- def _get_original_widget(self) -> WrappedWidget:
75
- warnings.warn(
76
- f"Method `{self.__class__.__name__}._get_original_widget` is deprecated, "
77
- f"please use property `{self.__class__.__name__}.original_widget`",
78
- DeprecationWarning,
79
- stacklevel=2,
80
- )
81
- return self.original_widget
82
-
83
- def _set_original_widget(self, original_widget: WrappedWidget) -> None:
84
- warnings.warn(
85
- f"Method `{self.__class__.__name__}._set_original_widget` is deprecated, "
86
- f"please use property `{self.__class__.__name__}.original_widget`",
87
- DeprecationWarning,
88
- stacklevel=2,
89
- )
90
- self.original_widget = original_widget
91
-
92
74
  @property
93
75
  def base_widget(self) -> Widget:
94
76
  """
95
- Return the widget without decorations. If there is only one
96
- Decoration then this is the same as original_widget.
77
+ Return the widget without decorations.
78
+
79
+ If there is only one Decoration, then this is the same as original_widget.
97
80
 
98
81
  >>> from urwid import Text
99
82
  >>> t = Text('hello')
@@ -107,22 +90,10 @@ class WidgetDecoration(Widget, typing.Generic[WrappedWidget]): # pylint: disabl
107
90
  """
108
91
  visited = {self}
109
92
  w = self
110
- while hasattr(w, "_original_widget"):
111
- w = w._original_widget
112
- if w in visited:
113
- break
93
+ while (w := getattr(w, "_original_widget", w)) not in visited:
114
94
  visited.add(w)
115
95
  return w
116
96
 
117
- def _get_base_widget(self) -> Widget:
118
- warnings.warn(
119
- f"Method `{self.__class__.__name__}._get_base_widget` is deprecated, "
120
- f"please use property `{self.__class__.__name__}.base_widget`",
121
- DeprecationWarning,
122
- stacklevel=2,
123
- )
124
- return self.base_widget
125
-
126
97
  def selectable(self) -> bool:
127
98
  return self._original_widget.selectable()
128
99
 
urwid/wimp.py CHANGED
@@ -17,7 +17,7 @@ __all__ = (
17
17
  warnings.warn(
18
18
  f"{__name__!r} is not expected to be imported directly. "
19
19
  'Please use public access from "urwid" package. '
20
- f"Module {__name__!r} is deprecated and will be removed in the future.",
20
+ f"Module {__name__!r} is deprecated and will be removed in the version 4.0.",
21
21
  DeprecationWarning,
22
22
  stacklevel=3,
23
23
  )
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: urwid
3
- Version: 2.6.16
3
+ Version: 3.0.0
4
4
  Summary: A full-featured console (xterm et al.) user interface library
5
5
  Home-page: https://urwid.org/
6
6
  Author-email: Ian Ward <ian@excess.org>
@@ -23,8 +23,6 @@ Classifier: Operating System :: Microsoft :: Windows
23
23
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
24
24
  Classifier: Topic :: Software Development :: Widget Sets
25
25
  Classifier: Programming Language :: Python :: 3
26
- Classifier: Programming Language :: Python :: 3.7
27
- Classifier: Programming Language :: Python :: 3.8
28
26
  Classifier: Programming Language :: Python :: 3.9
29
27
  Classifier: Programming Language :: Python :: 3.10
30
28
  Classifier: Programming Language :: Python :: 3.11
@@ -36,16 +34,11 @@ Classifier: Programming Language :: Python :: Implementation :: PyPy
36
34
  Requires-Python: >3.7
37
35
  Description-Content-Type: text/x-rst
38
36
  License-File: COPYING
39
- Requires-Dist: typing-extensions
40
37
  Requires-Dist: wcwidth
41
38
  Provides-Extra: curses
42
39
  Requires-Dist: windows-curses; sys_platform == "win32" and extra == "curses"
43
40
  Provides-Extra: glib
44
41
  Requires-Dist: PyGObject; extra == "glib"
45
- Provides-Extra: lcd
46
- Requires-Dist: pyserial; extra == "lcd"
47
- Provides-Extra: serial
48
- Requires-Dist: pyserial; extra == "serial"
49
42
  Provides-Extra: tornado
50
43
  Requires-Dist: tornado>=5.0; extra == "tornado"
51
44
  Provides-Extra: trio
@@ -55,6 +48,13 @@ Provides-Extra: twisted
55
48
  Requires-Dist: twisted; extra == "twisted"
56
49
  Provides-Extra: zmq
57
50
  Requires-Dist: zmq; extra == "zmq"
51
+ Provides-Extra: serial
52
+ Requires-Dist: pyserial; extra == "serial"
53
+ Provides-Extra: lcd
54
+ Requires-Dist: pyserial; extra == "lcd"
55
+ Dynamic: home-page
56
+ Dynamic: license-file
57
+ Dynamic: requires-python
58
58
 
59
59
  Urwid
60
60
  =====
@@ -143,8 +143,6 @@ To test code in all Python versions:
143
143
  Supported Python versions
144
144
  =========================
145
145
 
146
- - 3.7
147
- - 3.8
148
146
  - 3.9
149
147
  - 3.10
150
148
  - 3.11
@@ -0,0 +1,74 @@
1
+ urwid/__init__.py,sha256=t5n8QWni3FbasOyKIulm_7-Go3A0puBKiie_79rxifU,7979
2
+ urwid/canvas.py,sha256=025TShiKhFG09i-iLztlnekXunqdVkNBHG6tCV_BMPY,46092
3
+ urwid/command_map.py,sha256=UUOC11O0SlNhMiBoYqNaSAfGcg0RmjjGEgz6Xt96iA4,4369
4
+ urwid/container.py,sha256=WOodISzyS4NSs3arijXuXLsDvF1GVIn4ufcPzfxSkdA,1594
5
+ urwid/decoration.py,sha256=dwoYY0tiZS4toGgrxEAALKeVvnoDV9W-LadkV9G4CZg,1777
6
+ urwid/font.py,sha256=3xyQrJ_TA5UK176KLJGMuLZhQqCx-aIFTJhyfI3nlHg,31848
7
+ urwid/graphics.py,sha256=pVGGU5kOWV56iXawDROgQWQwIbgaoh32JHE2COcGesQ,2481
8
+ urwid/numedit.py,sha256=8z1j-JHovBGFV3yZoP1XAsedpsYjnxqR2EuK-m87hso,13374
9
+ urwid/signals.py,sha256=jxXkvZJYNxzABe99Ww_G-lVSXq_P5YB_V1ljnt3rYu4,13192
10
+ urwid/split_repr.py,sha256=pXzuddzQ4RnfIl537Gvoe8PVaBRHCPnxgdYvKK0qm8k,3899
11
+ urwid/str_util.py,sha256=oQVTyDWAIRuCsNl_jeAxX1zbldWgU58MMU3YPWKlFbA,10823
12
+ urwid/text_layout.py,sha256=EqsT64CUfP_QPTnhyVy4erEhXaCShxGqynBm6xS5qpI,22792
13
+ urwid/util.py,sha256=cZ2qtutEThZSq4FGu3DMX2Tds0CXXRghn8b8QQasR7w,15337
14
+ urwid/version.py,sha256=feOY2rjYM8_-oXmp5ErPlMe-6zWTpyiw538tUrvFyEA,511
15
+ urwid/vterm.py,sha256=vzzgf1P8M5j6uEePSEMVhQVMzqGeVnJc1L6DZCH9kRg,57744
16
+ urwid/wimp.py,sha256=CRpUWYsrCSrnTX1AH7FnBI_8EvLHHy6eypg8-zno5MI,572
17
+ urwid/display/__init__.py,sha256=y90WbHPNRHlimPrXhzsSfFsBbBHy8QErmB1y4Xza-xo,1732
18
+ urwid/display/_posix_raw_display.py,sha256=ExZHAzuJg34VNrWWVKXPZGFSApLJvJxrNh4detTEdCY,15053
19
+ urwid/display/_raw_display_base.py,sha256=IVkgFhooYFZxuzXoP4OK1J_Uo3R9rxj7pUscrtz8UJM,33586
20
+ urwid/display/_web.css,sha256=6HarEsIspH2egt51HSrgI8Yl2lGi-DbziWOdS4RHNlk,359
21
+ urwid/display/_web.js,sha256=aWEOQ4EsADsiNgdw-zHEUMCRD2bnfR8M1mu4dOc2Tqk,12947
22
+ urwid/display/_win32.py,sha256=hD4hytElpfIv5qxGNTMSa2QeBNByqJDNVpmiiQSj6CM,5401
23
+ urwid/display/_win32_raw_display.py,sha256=VL6TiUId1bI5jszxAyqrso2XBnyVIWM_GWMKvV5kbOw,9176
24
+ urwid/display/common.py,sha256=w3w5qrxMV-2pBC1_SinluMWlmRzxm82GfDf_hrz0AF4,38564
25
+ urwid/display/curses.py,sha256=Ba-CC-qC-K81ZHWyNhMm_2P4fJVbFI0kQFs0gp-SCc4,22748
26
+ urwid/display/escape.py,sha256=DRFKs9rzfzk3aGsc8S3j_BJvNdETpQZyJN8cItetoaE,17913
27
+ urwid/display/html_fragment.py,sha256=lQRqr-hTrknQyZTtzPDp9zr-TWOT4NcuSsusS-LXIOU,8547
28
+ urwid/display/lcd.py,sha256=CB-CXS6clkbNCNTwSKSnssbSK794TL59nsRA82WbR4w,17601
29
+ urwid/display/raw.py,sha256=TSkIEM6KnQHPmmpBkWKdirZOwVXhSV67k7hWmuuR2OY,1125
30
+ urwid/display/web.py,sha256=pd8PjKskTomdSSuYFRxvJo_9oefdXuN0R2UA3UpIwpg,19129
31
+ urwid/event_loop/__init__.py,sha256=6di4AYD6HbCf6v5p0rZOoteKnM9U5tfk4NKcWMH4FV4,1199
32
+ urwid/event_loop/abstract_loop.py,sha256=6Kkw3KCJ4ndiI2I1P8fPdtHzjuekRxUuvzFOiR0Myok,5494
33
+ urwid/event_loop/asyncio_loop.py,sha256=beOtalT3jwJ8klyxUxNyllqXAgst8ShBiS-8-Raq1xc,8460
34
+ urwid/event_loop/glib_loop.py,sha256=GFoLAenoWKm-13rTBKzCF2JdCEryJKpMo25aidZ7BWs,9351
35
+ urwid/event_loop/main_loop.py,sha256=KlCPzvwsrqLe289Gmznyt02rQC52xvKf70fC-rcUEHk,25989
36
+ urwid/event_loop/select_loop.py,sha256=5ZkIPqyIVJdWRTC89Ca5h8ub_-jpqXjFZaKqiWhdkDg,7534
37
+ urwid/event_loop/tornado_loop.py,sha256=WBtDVy704GeVNtyvKSJa9SMWTwbZ-SOU4QB4MBGZOXo,7100
38
+ urwid/event_loop/trio_loop.py,sha256=bizthoPnwA7KUtB0jEWWJBma5p6vKlQ-eBZcuVjx5ag,10594
39
+ urwid/event_loop/twisted_loop.py,sha256=CtpWBzxNp_y7LHejnXIS67B-iboM3irb_MuI_FtXzc0,9219
40
+ urwid/event_loop/zmq_loop.py,sha256=YK_AkfLf8tayWrpCgQtKwWYuj-F1uMBluUJxPQLagNs,9114
41
+ urwid/widget/__init__.py,sha256=CbZjvN9hrE36hmSMo5URMEm2Da75kLv_q1X7N_NKOWM,4581
42
+ urwid/widget/attr_map.py,sha256=L6svBcabtXeSaU2cNrgDv4Nne6QYk-nvVbr88sA4WnY,6205
43
+ urwid/widget/attr_wrap.py,sha256=G2LbiNGuh8NEydR7HTV1FyfOSXIfkFa9ttTeiYzPKO0,4920
44
+ urwid/widget/bar_graph.py,sha256=uXC1_yBln7OvZ6Njaker_dNU6837cV0UMONcxOkkeoI,21518
45
+ urwid/widget/big_text.py,sha256=wtRyXKwf7G8vzwCptiHYCpWZjE9jN-6e8ZwvG5Wzh6o,2412
46
+ urwid/widget/box_adapter.py,sha256=ZtL77-jg9wI7TPYbDi-AeFS0jnlTYo5eeNYri58fgKM,4336
47
+ urwid/widget/columns.py,sha256=PZF6yg5fpvVvjSfOTmfsfSTEn3TMDFNjjsfMmk7W148,45375
48
+ urwid/widget/constants.py,sha256=bNvw1OoT6jFWzDc_NDJRcle1uIX-ENswhvy2S6mIUEk,15313
49
+ urwid/widget/container.py,sha256=Cs1VycRfLfmPrvqO0xTdf4bxjJldvqXiWgGdAle2e3s,5841
50
+ urwid/widget/divider.py,sha256=cM0gWHAqBz7E8l52CGEWWDMSVQkPNDjwy-t3ptbmh2s,3251
51
+ urwid/widget/edit.py,sha256=1tZLymcilI6krofzI3EgjhQgZIohu_O4KxlLor7kYlk,23695
52
+ urwid/widget/filler.py,sha256=l8FzT6gitp7xK9cPN0f1fW1NxxAo43L_GEx1abh-LHc,14799
53
+ urwid/widget/frame.py,sha256=yVwsImuPhOuL99-9q5tTU7_x3kZ5YyRtqBOgUOyAjAw,21492
54
+ urwid/widget/grid_flow.py,sha256=sAKZv9l-a9B-9vjjqq5Z8iuoCRC1MFyRrZzUOXqzA_o,18549
55
+ urwid/widget/line_box.py,sha256=oefB0GRfDafZAOUn1t193gBYdzc6Pz2T8whYfeq5TYA,7458
56
+ urwid/widget/listbox.py,sha256=Sfp1Y6HZGDziknE-wn7eZ3GsGIgINKft8E_MINLnHuQ,73220
57
+ urwid/widget/monitored_list.py,sha256=pMhWGqt0Du97wQwuOydN-tfoba3rvnTi56BDRskUD6M,19360
58
+ urwid/widget/overlay.py,sha256=A0ypqnCtOSR_axmE0zHiUZfonY1-aRMbTiymYulYQNc,33319
59
+ urwid/widget/padding.py,sha256=zz1fy4b0hWTpEjR4uDlJnzAbm-TuiUcDWM9IusubvN0,19853
60
+ urwid/widget/pile.py,sha256=RubgdaaGcShT-w8tiXVpTTJY_xK8p83uyijv44BgejY,39705
61
+ urwid/widget/popup.py,sha256=waiQ9y7Ted2YWF5yT2Hz2I_KutvuFbeobemrdCsFdXA,5961
62
+ urwid/widget/progress_bar.py,sha256=zwiQboBvo16p18j_5u6Sd8pVmsYnjragE8Yk6cq_qfc,4616
63
+ urwid/widget/scrollable.py,sha256=K_-Ys2JagMM_wpohpbCJ4BVnSwXSUINnxD_pWjgX-MM,24423
64
+ urwid/widget/solid_fill.py,sha256=NZRDSRK0lP4r7gXcKDgVaKEoeOcWvtrY5k2aueQEEL4,1260
65
+ urwid/widget/text.py,sha256=jy15hL6rCBoJdZviq2jJ-i9eO6vEcxvzCIVAZs12AUw,12187
66
+ urwid/widget/treetools.py,sha256=NehR7ELL2vvBHIlwtRCGyTfPLdx0Uis5opufC3xNkcE,17031
67
+ urwid/widget/widget.py,sha256=uWHGpOueiDa8wJykFhR38wHV9Wg59E2lENDrWZZm9xI,26432
68
+ urwid/widget/widget_decoration.py,sha256=zqB41ytmZo8-kSp4iurx06ax-t_IEI9GLbEzn7ZdqsU,4621
69
+ urwid/widget/wimp.py,sha256=4wfzTQBLMbhicSlL64hBPb-1W5FAFrIKfb43i10MKSY,27305
70
+ urwid-3.0.0.dist-info/licenses/COPYING,sha256=NrbT-keRaUP9X-wxPFhHhJRgR-wTN6eLRA5ZkstZX4k,26434
71
+ urwid-3.0.0.dist-info/METADATA,sha256=zXgee1SlCUydSez2za1FRQgCumDaw10nOHyU6ayrbqQ,11008
72
+ urwid-3.0.0.dist-info/WHEEL,sha256=0CuiUZ_p9E4cD6NyLD6UG80LBXYyiSYZOKDm5lp32xk,91
73
+ urwid-3.0.0.dist-info/top_level.txt,sha256=AwxQA43kNkjHbhYELXHBKrQ01X5CR2KnDzU07cVqilY,6
74
+ urwid-3.0.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.1.0)
2
+ Generator: setuptools (80.3.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,74 +0,0 @@
1
- urwid/__init__.py,sha256=UMQZuTCtUPN9jHAEJ35lasW7IbBYRXy7NiRAKvyz4iE,8041
2
- urwid/canvas.py,sha256=j3nxOezBnYW5Q37DsIdrE227SM_gRC6ztL37kkZpPj0,46743
3
- urwid/command_map.py,sha256=OpY-sGF-dOv8hEN5mEwjjlO56VOWVTjKnlJMfhtNP1k,4324
4
- urwid/container.py,sha256=mikK50qN_Cu-8VlBRqQZzU4DcOvz8P_5CfozyyoIf3Q,1589
5
- urwid/decoration.py,sha256=sKfCe8SdSWZ4V0Ed_G4aumLxwwhnjoVvF70vlAhoXBE,1772
6
- urwid/font.py,sha256=jNYYnR_JW_JWbuSIQmNzg2z3fzpg4ihlNBE0EWpz-8s,32040
7
- urwid/graphics.py,sha256=pVGGU5kOWV56iXawDROgQWQwIbgaoh32JHE2COcGesQ,2481
8
- urwid/numedit.py,sha256=8z1j-JHovBGFV3yZoP1XAsedpsYjnxqR2EuK-m87hso,13374
9
- urwid/signals.py,sha256=eNfDSlIi06ySpen1UySZHdu8X4PePlkPRsHHhJE1Hhg,13174
10
- urwid/split_repr.py,sha256=pXzuddzQ4RnfIl537Gvoe8PVaBRHCPnxgdYvKK0qm8k,3899
11
- urwid/str_util.py,sha256=1ss-LHAhjXTynTVBcoSgYWIpBeN_RirqHYhP7fq7MrA,10844
12
- urwid/text_layout.py,sha256=lHiGfo7clmwHt5dMl_AaQSs2ov9IbY9JySTATZBm7h0,22821
13
- urwid/util.py,sha256=Xvy6yuCevoWjrlGHKgKRaJUJ6DtcYnsscOSpETxhNCI,15735
14
- urwid/version.py,sha256=tjMs-hqDDWXtLpRofgVMJhxqunEbSaXyws6eSD7xygM,413
15
- urwid/vterm.py,sha256=l2Ctd0n4IrfCDQ6__EWe8ahBkEHOPCtc5LYKgGE4oGg,58665
16
- urwid/wimp.py,sha256=o1YsjL_tBLXba8ZRr1MTHH0poLSlXT_atY3-uD_Ualg,567
17
- urwid/display/__init__.py,sha256=y90WbHPNRHlimPrXhzsSfFsBbBHy8QErmB1y4Xza-xo,1732
18
- urwid/display/_posix_raw_display.py,sha256=ExZHAzuJg34VNrWWVKXPZGFSApLJvJxrNh4detTEdCY,15053
19
- urwid/display/_raw_display_base.py,sha256=JSkF_HcPsto5YxF7NWm2vYLb6nE72AlS7SOCah8woZw,33600
20
- urwid/display/_web.css,sha256=6HarEsIspH2egt51HSrgI8Yl2lGi-DbziWOdS4RHNlk,359
21
- urwid/display/_web.js,sha256=aWEOQ4EsADsiNgdw-zHEUMCRD2bnfR8M1mu4dOc2Tqk,12947
22
- urwid/display/_win32.py,sha256=hD4hytElpfIv5qxGNTMSa2QeBNByqJDNVpmiiQSj6CM,5401
23
- urwid/display/_win32_raw_display.py,sha256=o12EI-OLN4-UZbultM4GYAsymnZmuEAcyKnSF8wnWOo,9314
24
- urwid/display/common.py,sha256=iPz9uqPtjSYHo7Thj1G8nTiPdoC8Vbl5mGP0aHFYYE0,39517
25
- urwid/display/curses.py,sha256=LA8Jglr7HRqQLYhN4wcWuvacoX_1LNjBQUbm8x0_GVo,22772
26
- urwid/display/escape.py,sha256=m4kM33l5fXvGRQ8jFirH2x-9oG83ILBgUpFdeM7D2ZQ,17941
27
- urwid/display/html_fragment.py,sha256=lQRqr-hTrknQyZTtzPDp9zr-TWOT4NcuSsusS-LXIOU,8547
28
- urwid/display/lcd.py,sha256=qXfuyZcicarrZM-O-ccPFBPjflD3_bLMv3IQzmYI43E,17607
29
- urwid/display/raw.py,sha256=TSkIEM6KnQHPmmpBkWKdirZOwVXhSV67k7hWmuuR2OY,1125
30
- urwid/display/web.py,sha256=39o12Cl79Ft669-mIbq_ZGGVzzkSfHb3Ny54mASegec,19250
31
- urwid/event_loop/__init__.py,sha256=6di4AYD6HbCf6v5p0rZOoteKnM9U5tfk4NKcWMH4FV4,1199
32
- urwid/event_loop/abstract_loop.py,sha256=6Kkw3KCJ4ndiI2I1P8fPdtHzjuekRxUuvzFOiR0Myok,5494
33
- urwid/event_loop/asyncio_loop.py,sha256=9B3redIwvfYzqKSbnxiocb6wx9VXLi5XB08cUJkserE,8471
34
- urwid/event_loop/glib_loop.py,sha256=GFoLAenoWKm-13rTBKzCF2JdCEryJKpMo25aidZ7BWs,9351
35
- urwid/event_loop/main_loop.py,sha256=gR2jGmqg1-CXFdNDlt-NizdS5AA7EZfmp6sW-nXwa18,26000
36
- urwid/event_loop/select_loop.py,sha256=5ZkIPqyIVJdWRTC89Ca5h8ub_-jpqXjFZaKqiWhdkDg,7534
37
- urwid/event_loop/tornado_loop.py,sha256=VNgXW2gO4edcYDjyEGb86yOHrE0NNXQUPXIOfJyZnAk,7100
38
- urwid/event_loop/trio_loop.py,sha256=RicEe56BDFmIE5dbMvuqrGhUFIGSx4RliIryNF_62XQ,10593
39
- urwid/event_loop/twisted_loop.py,sha256=CtpWBzxNp_y7LHejnXIS67B-iboM3irb_MuI_FtXzc0,9219
40
- urwid/event_loop/zmq_loop.py,sha256=YK_AkfLf8tayWrpCgQtKwWYuj-F1uMBluUJxPQLagNs,9114
41
- urwid/widget/__init__.py,sha256=lEFAuQKYnGKS9-dhUggItnnm9Bvbbuk7RAKvzrs8xkI,4683
42
- urwid/widget/attr_map.py,sha256=L6svBcabtXeSaU2cNrgDv4Nne6QYk-nvVbr88sA4WnY,6205
43
- urwid/widget/attr_wrap.py,sha256=pJQHVNlwcX5IgpdSmTqYOt63EX-p5hA0mJfXtWXJ6wg,4830
44
- urwid/widget/bar_graph.py,sha256=PmuZwYuUF1yE1mKYqmNo51r1v_2LztfX6hbO_f8Lg2U,21601
45
- urwid/widget/big_text.py,sha256=Zvjbkdh4H1Wv9ZTdCbX23vfNyeybO8au-kUssE58Bbs,2393
46
- urwid/widget/box_adapter.py,sha256=uOFlZUaCK9A4H8Pmw6-OoS9QTYi9nn-LhlSa-JpC9Iw,4276
47
- urwid/widget/columns.py,sha256=HGJ3u5Ucuyy46uOybPh7N1ycfSAXzSkFyPjW3AVpg44,46388
48
- urwid/widget/constants.py,sha256=bNvw1OoT6jFWzDc_NDJRcle1uIX-ENswhvy2S6mIUEk,15313
49
- urwid/widget/container.py,sha256=HqafpI2Apz-oI1bcW5rTl3kbOKfPFv_xI8zEXQU7hYI,7177
50
- urwid/widget/divider.py,sha256=cM0gWHAqBz7E8l52CGEWWDMSVQkPNDjwy-t3ptbmh2s,3251
51
- urwid/widget/edit.py,sha256=qgVYeg_hX6tqRUiuLQkYwYKmWcfVLrLzAG1a5Au6S-w,23732
52
- urwid/widget/filler.py,sha256=EEnyAawdKXuwf79pErfNuvqsU1SVTutcMUrwWkU4wfo,14665
53
- urwid/widget/frame.py,sha256=AOe4FwjvwcIwrpXqyZkCwSZWwAALNl1XRMAKx6ZXYWs,21834
54
- urwid/widget/grid_flow.py,sha256=wZEcEefXKR3i_EXzl4d12aFT-clq-FcTNBhcfmRui8U,21757
55
- urwid/widget/line_box.py,sha256=V750xiZtkw6_uRXLhNY91ER3pXwwrZstVv_IJUZd_YY,6884
56
- urwid/widget/listbox.py,sha256=G6bucNwh0HWiqiyRYsNqfZvWRQz0hBOyxDqpt3DyRXU,74454
57
- urwid/widget/monitored_list.py,sha256=mZUPYB1yhuKN6su6_VjmoiE0LlTXsYxkH14pbif0tbc,19264
58
- urwid/widget/overlay.py,sha256=7EtTHOomIF4xzwYiY7SiMCQZF2IHrmO88YeosFOMFo0,34505
59
- urwid/widget/padding.py,sha256=pBXQsnkySV1GXgveg2Ivm6SCqHiGa2YkYSjXaoCUIHk,21334
60
- urwid/widget/pile.py,sha256=0or-lFRx0c4ZUq9LWPczdA7Qnka_D7Fg1kYLN_SyLAs,38508
61
- urwid/widget/popup.py,sha256=vw9_S1UC6UMy5Roc4qK8NXgH5_dDGxoHmpDAi_u9wsI,5974
62
- urwid/widget/progress_bar.py,sha256=v2iTQq6UrLTkpvIxcFFQ--F2Sf5g2smDO4rB0i5HSbo,4925
63
- urwid/widget/scrollable.py,sha256=5iV1CoHvvoGHLsT_7TwwfdEKRAEztcgGJHveSn37qM0,24536
64
- urwid/widget/solid_fill.py,sha256=NZRDSRK0lP4r7gXcKDgVaKEoeOcWvtrY5k2aueQEEL4,1260
65
- urwid/widget/text.py,sha256=jy15hL6rCBoJdZviq2jJ-i9eO6vEcxvzCIVAZs12AUw,12187
66
- urwid/widget/treetools.py,sha256=5s3Dnp2PCz4wQccutmdvsTTbAROJMLehXe4moB5POY0,17387
67
- urwid/widget/widget.py,sha256=A0ZjvDjLqhdzelPFC96Ozo1voIoGkxftNmJh8X1IyNI,29557
68
- urwid/widget/widget_decoration.py,sha256=6eEPvtF7wk2n1csIBWrnXAosprFl2pZiQ7SoCpwKnJM,5736
69
- urwid/widget/wimp.py,sha256=4wfzTQBLMbhicSlL64hBPb-1W5FAFrIKfb43i10MKSY,27305
70
- urwid-2.6.16.dist-info/COPYING,sha256=NrbT-keRaUP9X-wxPFhHhJRgR-wTN6eLRA5ZkstZX4k,26434
71
- urwid-2.6.16.dist-info/METADATA,sha256=Y09KIQrNHQ6AnPoYaFAbcntFLYNBZWqIovOgxBRDaSg,11088
72
- urwid-2.6.16.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
73
- urwid-2.6.16.dist-info/top_level.txt,sha256=AwxQA43kNkjHbhYELXHBKrQ01X5CR2KnDzU07cVqilY,6
74
- urwid-2.6.16.dist-info/RECORD,,