urwid 2.6.15__py3-none-any.whl → 2.6.16__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.

urwid/canvas.py CHANGED
@@ -40,7 +40,7 @@ from urwid.util import (
40
40
  )
41
41
 
42
42
  if typing.TYPE_CHECKING:
43
- from collections.abc import Hashable, Iterable, Sequence
43
+ from collections.abc import Hashable, Iterable, Iterator, Sequence
44
44
 
45
45
  from typing_extensions import Literal
46
46
 
@@ -126,7 +126,7 @@ class CanvasCache:
126
126
 
127
127
  ref = weakref.ref(canvas, cls.cleanup)
128
128
  cls._refs[ref] = (widget, wcls, size, focus)
129
- cls._widgets.setdefault(widget, {})[(wcls, size, focus)] = ref
129
+ cls._widgets.setdefault(widget, {})[wcls, size, focus] = ref
130
130
 
131
131
  @classmethod
132
132
  def fetch(cls, widget, wcls, size, focus) -> Canvas | None:
@@ -182,7 +182,7 @@ class CanvasCache:
182
182
  if not sizes:
183
183
  return
184
184
  with suppress(KeyError):
185
- del sizes[(wcls, size, focus)]
185
+ del sizes[wcls, size, focus]
186
186
  if not sizes:
187
187
  with contextlib.suppress(KeyError):
188
188
  del cls._widgets[widget]
@@ -282,7 +282,7 @@ class Canvas:
282
282
  cols: int | None = None,
283
283
  rows: int | None = None,
284
284
  attr=None,
285
- ) -> Iterable[list[tuple[object, Literal["0", "U"] | None, bytes]]]:
285
+ ) -> Iterator[list[tuple[object, Literal["0", "U"] | None, bytes]]]:
286
286
  raise NotImplementedError()
287
287
 
288
288
  def cols(self) -> int:
@@ -376,7 +376,7 @@ class TextCanvas(Canvas):
376
376
 
377
377
  def __init__(
378
378
  self,
379
- text: Sequence[bytes] | None = None,
379
+ text: list[bytes] | None = None,
380
380
  attr: list[list[tuple[Hashable | None, int]]] | None = None,
381
381
  cs: list[list[tuple[Literal["0", "U"] | None, int]]] | None = None,
382
382
  cursor: tuple[int, int] | None = None,
@@ -477,7 +477,7 @@ class TextCanvas(Canvas):
477
477
  cols: int | None = 0,
478
478
  rows: int | None = 0,
479
479
  attr=None,
480
- ) -> Iterable[tuple[object, Literal["0", "U"] | None, bytes]]:
480
+ ) -> Iterator[tuple[object, Literal["0", "U"] | None, bytes]]:
481
481
  """
482
482
  Return the canvas content as a list of rows where each row
483
483
  is a list of (attr, cs, text) tuples.
@@ -551,7 +551,7 @@ class BlankCanvas(Canvas):
551
551
  cols: int | None = 0,
552
552
  rows: int | None = 0,
553
553
  attr=None,
554
- ) -> Iterable[list[tuple[object, Literal["0", "U"] | None, bytes]]]:
554
+ ) -> Iterator[list[tuple[object, Literal["0", "U"] | None, bytes]]]:
555
555
  """
556
556
  return (cols, rows) of spaces with default attributes.
557
557
  """
@@ -603,7 +603,7 @@ class SolidCanvas(Canvas):
603
603
  cols: int | None = None,
604
604
  rows: int | None = None,
605
605
  attr=None,
606
- ) -> Iterable[list[tuple[object, Literal["0", "U"] | None, bytes]]]:
606
+ ) -> Iterator[list[tuple[object, Literal["0", "U"] | None, bytes]]]:
607
607
  if cols is None:
608
608
  cols = self.size[0]
609
609
  if rows is None:
@@ -704,7 +704,7 @@ class CompositeCanvas(Canvas):
704
704
  cols: int | None = None,
705
705
  rows: int | None = None,
706
706
  attr=None,
707
- ) -> Iterable[list[tuple[object, Literal["0", "U"] | None, bytes]]]:
707
+ ) -> Iterator[list[tuple[object, Literal["0", "U"] | None, bytes]]]:
708
708
  """
709
709
  Return the canvas content as a list of rows where each row
710
710
  is a list of (attr, cs, text) tuples.
urwid/command_map.py CHANGED
@@ -21,9 +21,10 @@ from __future__ import annotations
21
21
 
22
22
  import enum
23
23
  import typing
24
- from typing import Iterator
25
24
 
26
25
  if typing.TYPE_CHECKING:
26
+ from collections.abc import Iterator
27
+
27
28
  from typing_extensions import Self
28
29
 
29
30
 
@@ -56,6 +56,7 @@ class Screen(_raw_display_base.Screen):
56
56
  input: typing.TextIO = sys.stdin, # noqa: A002 # pylint: disable=redefined-builtin
57
57
  output: typing.TextIO = sys.stdout,
58
58
  bracketed_paste_mode=False,
59
+ focus_reporting=False,
59
60
  ) -> None:
60
61
  """Initialize a screen that directly prints escape codes to an output
61
62
  terminal.
@@ -63,11 +64,15 @@ class Screen(_raw_display_base.Screen):
63
64
  bracketed_paste_mode -- enable bracketed paste mode in the host terminal.
64
65
  If the host terminal supports it, the application will receive `begin paste`
65
66
  and `end paste` keystrokes when the user pastes text.
67
+ focus_reporting -- enable focus reporting in the host terminal.
68
+ If the host terminal supports it, the application will receive `focus in`
69
+ and `focus out` keystrokes when the application gains and loses focus.
66
70
  """
67
71
  super().__init__(input, output)
68
72
  self.gpm_mev: Popen | None = None
69
73
  self.gpm_event_pending: bool = False
70
74
  self.bracketed_paste_mode = bracketed_paste_mode
75
+ self.focus_reporting = focus_reporting
71
76
 
72
77
  # These store the previous signal handlers after setting ours
73
78
  self._prev_sigcont_handler = None
@@ -79,7 +84,8 @@ class Screen(_raw_display_base.Screen):
79
84
  f"<{self.__class__.__name__}("
80
85
  f"input={self._term_input_file}, "
81
86
  f"output={self._term_output_file}, "
82
- f"bracketed_paste_mode={self.bracketed_paste_mode})>"
87
+ f"bracketed_paste_mode={self.bracketed_paste_mode}, "
88
+ f"focus_reporting={self.focus_reporting})>"
83
89
  )
84
90
 
85
91
  def _sigwinch_handler(self, signum: int = 28, frame: FrameType | None = None) -> None:
@@ -180,6 +186,9 @@ class Screen(_raw_display_base.Screen):
180
186
  if self.bracketed_paste_mode:
181
187
  self.write(escape.ENABLE_BRACKETED_PASTE_MODE)
182
188
 
189
+ if self.focus_reporting:
190
+ self.write(escape.ENABLE_FOCUS_REPORTING)
191
+
183
192
  fd = self._input_fileno()
184
193
  if fd is not None and os.isatty(fd):
185
194
  self._old_termios_settings = termios.tcgetattr(fd)
@@ -207,15 +216,18 @@ class Screen(_raw_display_base.Screen):
207
216
  if self.bracketed_paste_mode:
208
217
  self.write(escape.DISABLE_BRACKETED_PASTE_MODE)
209
218
 
219
+ if self.focus_reporting:
220
+ self.write(escape.DISABLE_FOCUS_REPORTING)
221
+
210
222
  signals.emit_signal(self, INPUT_DESCRIPTORS_CHANGED)
211
223
 
212
224
  self.signal_restore()
213
225
 
226
+ self._stop_mouse_restore_buffer()
227
+
214
228
  fd = self._input_fileno()
215
229
  if fd is not None and os.isatty(fd):
216
- termios.tcsetattr(fd, termios.TCSADRAIN, self._old_termios_settings)
217
-
218
- self._stop_mouse_restore_buffer()
230
+ termios.tcsetattr(fd, termios.TCSAFLUSH, self._old_termios_settings)
219
231
 
220
232
  if self._old_signal_keys:
221
233
  self.tty_signal_keys(*self._old_signal_keys, fd)
@@ -246,11 +246,12 @@ class ReadInputThread(threading.Thread):
246
246
  if not inp.Event.KeyEvent.bKeyDown:
247
247
  continue
248
248
 
249
- input_data = inp.Event.KeyEvent.uChar.AsciiChar
250
- # On Windows atomic press/release of modifier keys produce phantom input with code NULL
249
+ input_data = inp.Event.KeyEvent.uChar.UnicodeChar
250
+ # On Windows atomic press/release of modifier keys produce phantom input with code NULL.
251
251
  # This input cannot be decoded and should be handled as garbage.
252
- if input_data != b"\x00":
253
- self._input.send(input_data)
252
+ input_bytes = input_data.encode("utf-8")
253
+ if input_bytes != b"\x00":
254
+ self._input.send(input_bytes)
254
255
 
255
256
  elif inp.EventType == _win32.EventType.WINDOW_BUFFER_SIZE_EVENT:
256
257
  self._resize()
urwid/display/escape.py CHANGED
@@ -32,7 +32,7 @@ from collections.abc import MutableMapping, Sequence
32
32
  from urwid import str_util
33
33
 
34
34
  if typing.TYPE_CHECKING:
35
- from collections.abc import Collection, Iterable
35
+ from collections.abc import Iterable
36
36
 
37
37
  # NOTE: because of circular imports (urwid.util -> urwid.escape -> urwid.util)
38
38
  # from urwid.util import is_mouse_event -- will not work here
@@ -85,6 +85,8 @@ input_sequences = [
85
85
  ("[F", "end"),
86
86
  ("[G", "5"),
87
87
  ("[H", "home"),
88
+ ("[I", "focus in"),
89
+ ("[O", "focus out"),
88
90
  ("[1~", "home"),
89
91
  ("[2~", "insert"),
90
92
  ("[3~", "delete"),
@@ -225,7 +227,7 @@ class KeyqueueTrie:
225
227
  MutableMapping[int, str | MutableMapping[int, str | MutableMapping[int, str]]]
226
228
  | typing.Literal["mouse", "sgrmouse"]
227
229
  ),
228
- keys: Collection[int],
230
+ keys: Sequence[int],
229
231
  more_available: bool,
230
232
  ):
231
233
  if not isinstance(root, MutableMapping):
@@ -245,7 +247,7 @@ class KeyqueueTrie:
245
247
  return None
246
248
  return self.get_recurse(root[keys[0]], keys[1:], more_available)
247
249
 
248
- def read_mouse_info(self, keys: Collection[int], more_available: bool):
250
+ def read_mouse_info(self, keys: Sequence[int], more_available: bool):
249
251
  if len(keys) < 3:
250
252
  if more_available:
251
253
  raise MoreInputRequired()
@@ -284,7 +286,7 @@ class KeyqueueTrie:
284
286
 
285
287
  return ((f"{prefix}mouse {action}", button, x, y), keys[3:])
286
288
 
287
- def read_sgrmouse_info(self, keys: Collection[int], more_available: bool):
289
+ def read_sgrmouse_info(self, keys: Sequence[int], more_available: bool):
288
290
  # Helpful links:
289
291
  # https://stackoverflow.com/questions/5966903/how-to-get-mousemove-and-mouseclick-in-bash
290
292
  # http://invisible-island.net/xterm/ctlseqs/ctlseqs.pdf
@@ -574,6 +576,9 @@ RESTORE_NORMAL_BUFFER = f"{ESC}[?1049l"
574
576
  ENABLE_BRACKETED_PASTE_MODE = f"{ESC}[?2004h"
575
577
  DISABLE_BRACKETED_PASTE_MODE = f"{ESC}[?2004l"
576
578
 
579
+ ENABLE_FOCUS_REPORTING = f"{ESC}[?1004h"
580
+ DISABLE_FOCUS_REPORTING = f"{ESC}[?1004l"
581
+
577
582
  # RESET_SCROLL_REGION = ESC+"[;r"
578
583
  # RESET = ESC+"c"
579
584
 
urwid/font.py CHANGED
@@ -192,9 +192,9 @@ class Font(metaclass=FontRegistry):
192
192
 
193
193
  __slots__ = ("canvas", "char", "utf8_required")
194
194
 
195
- height: int
196
- data: Sequence[str]
197
- name: str
195
+ height: int # pylint: disable=declare-non-slot
196
+ data: Sequence[str] # pylint: disable=declare-non-slot
197
+ name: str # pylint: disable=declare-non-slot
198
198
 
199
199
  def __init__(self) -> None:
200
200
  if not self.height:
urwid/util.py CHANGED
@@ -143,7 +143,7 @@ def get_encoding() -> str:
143
143
 
144
144
 
145
145
  @contextlib.contextmanager
146
- def set_temporary_encoding(encoding_name: str) -> Generator[None, None, None]:
146
+ def set_temporary_encoding(encoding_name: str) -> Generator[None]:
147
147
  """Internal helper for encoding specific validation in unittests/doctests.
148
148
 
149
149
  Not exported globally.
urwid/version.py CHANGED
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '2.6.15'
16
- __version_tuple__ = version_tuple = (2, 6, 15)
15
+ __version__ = version = '2.6.16'
16
+ __version_tuple__ = version_tuple = (2, 6, 16)
urwid/vterm.py CHANGED
@@ -375,7 +375,7 @@ class TermCanvas(Canvas):
375
375
  lines = self.height // 2
376
376
 
377
377
  if not up:
378
- lines = -lines # pylint: disable=invalid-unary-operand-type # type already narrowed
378
+ lines = -lines
379
379
 
380
380
  maxscroll = len(self.scrollback_buffer)
381
381
  self.scrolling_up += lines
@@ -1118,6 +1118,14 @@ class TermCanvas(Canvas):
1118
1118
  elif 40 <= attr <= 47:
1119
1119
  bg = attr - 40
1120
1120
  colors = max(16, colors)
1121
+ # AIXTERM bright color spec
1122
+ # https://en.wikipedia.org/wiki/ANSI_escape_code
1123
+ elif 90 <= attr <= 97:
1124
+ fg = attr - 90 + 8
1125
+ colors = max(16, colors)
1126
+ elif 100 <= attr <= 107:
1127
+ bg = attr - 100 + 8
1128
+ colors = max(16, colors)
1121
1129
  elif attr in {38, 48}:
1122
1130
  if idx + 2 < len(attrs) and attrs[idx + 1] == 5:
1123
1131
  # 8 bit color specification
urwid/widget/bar_graph.py CHANGED
@@ -410,7 +410,7 @@ class BarGraph(Widget, metaclass=BarGraphMeta):
410
410
  if len(bar_type) == 3:
411
411
  # vertical eighths
412
412
  fg, bg, k = bar_type
413
- a = self.satt[(fg, bg)]
413
+ a = self.satt[fg, bg]
414
414
  t = self.eighths[k] * width
415
415
  else:
416
416
  # horizontal lines
urwid/widget/columns.py CHANGED
@@ -400,7 +400,7 @@ class Columns(Widget, WidgetContainerMixin, WidgetContainerListContentsMixin):
400
400
  chain(self.contents, repeat((None, (WHSettings.WEIGHT, 1, False)))),
401
401
  )
402
402
  ]
403
- if focus_position < len(widgets): # pylint: disable=consider-using-max-builtin # pylint bug
403
+ if focus_position < len(widgets):
404
404
  self.focus_position = focus_position
405
405
 
406
406
  @property
@@ -441,7 +441,7 @@ class Columns(Widget, WidgetContainerMixin, WidgetContainerListContentsMixin):
441
441
  (w, ({Sizing.FIXED: WHSettings.GIVEN, Sizing.FLOW: WHSettings.PACK}.get(new_t, new_t), new_n, b))
442
442
  for ((new_t, new_n), (w, (t, n, b))) in zip(column_types, self.contents)
443
443
  ]
444
- if focus_position < len(column_types): # pylint: disable=consider-using-max-builtin # pylint bug
444
+ if focus_position < len(column_types):
445
445
  self.focus_position = focus_position
446
446
 
447
447
  @property
urwid/widget/grid_flow.py CHANGED
@@ -166,7 +166,7 @@ class GridFlow(WidgetWrap[Pile], WidgetContainerMixin, WidgetContainerListConten
166
166
  )
167
167
  focus_position = self.focus_position
168
168
  self.contents = [(new, (WHSettings.GIVEN, self._cell_width)) for new in widgets]
169
- if focus_position < len(widgets): # pylint: disable=consider-using-max-builtin # pylint bug
169
+ if focus_position < len(widgets):
170
170
  self.focus_position = focus_position
171
171
 
172
172
  def _get_cells(self):
urwid/widget/pile.py CHANGED
@@ -325,7 +325,7 @@ class Pile(Widget, WidgetContainerMixin, WidgetContainerListContentsMixin):
325
325
  chain(self.contents, repeat((None, (WHSettings.WEIGHT, 1)))),
326
326
  )
327
327
  ]
328
- if focus_position < len(widgets): # pylint: disable=consider-using-max-builtin # pylint bug
328
+ if focus_position < len(widgets):
329
329
  self.focus_position = focus_position
330
330
 
331
331
  @property
@@ -365,7 +365,7 @@ class Pile(Widget, WidgetContainerMixin, WidgetContainerListContentsMixin):
365
365
  (w, ({Sizing.FIXED: WHSettings.GIVEN, Sizing.FLOW: WHSettings.PACK}.get(new_t, new_t), new_height))
366
366
  for ((new_t, new_height), (w, options)) in zip(item_types, self.contents)
367
367
  ]
368
- if focus_position < len(item_types): # pylint: disable=consider-using-max-builtin # pylint bug
368
+ if focus_position < len(item_types):
369
369
  self.focus_position = focus_position
370
370
 
371
371
  @property
@@ -8,6 +8,8 @@ from .text import Text
8
8
  from .widget import Widget
9
9
 
10
10
  if typing.TYPE_CHECKING:
11
+ from collections.abc import Hashable
12
+
11
13
  from urwid.canvas import TextCanvas
12
14
 
13
15
 
@@ -18,7 +20,14 @@ class ProgressBar(Widget):
18
20
 
19
21
  text_align = Align.CENTER
20
22
 
21
- def __init__(self, normal, complete, current: int = 0, done: int = 100, satt=None):
23
+ def __init__(
24
+ self,
25
+ normal: Hashable | None,
26
+ complete: Hashable | None,
27
+ current: int = 0,
28
+ done: int = 100,
29
+ satt: Hashable | None = None,
30
+ ) -> None:
22
31
  """
23
32
  :param normal: display attribute for incomplete part of progress bar
24
33
  :param complete: display attribute for complete part of progress bar
@@ -537,7 +537,7 @@ class ScrollBar(WidgetDecoration[WrappedWidget]):
537
537
  if use_relative:
538
538
  # `operator.length_hint` is Protocol (Spec) over class based and can end false-negative on the instance
539
539
  # use length_hint-like approach with safe `AttributeError` handling
540
- ow_len = getattr(ow_base, "__len__", getattr(ow_base, "__length_hint__", lambda: 0))()
540
+ ow_len = getattr(ow_base, "__len__", getattr(ow_base, "__length_hint__", int))()
541
541
  ow_canv = render_for_scrollbar()
542
542
  visible_amount = ow_base.get_visible_amount(ow_size, focus)
543
543
  pos = ow_base.get_first_visible_pos(ow_size, focus)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: urwid
3
- Version: 2.6.15
3
+ Version: 2.6.16
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>
@@ -29,6 +29,7 @@ Classifier: Programming Language :: Python :: 3.9
29
29
  Classifier: Programming Language :: Python :: 3.10
30
30
  Classifier: Programming Language :: Python :: 3.11
31
31
  Classifier: Programming Language :: Python :: 3.12
32
+ Classifier: Programming Language :: Python :: 3.13
32
33
  Classifier: Programming Language :: Python :: 3 :: Only
33
34
  Classifier: Programming Language :: Python :: Implementation :: CPython
34
35
  Classifier: Programming Language :: Python :: Implementation :: PyPy
@@ -38,22 +39,22 @@ License-File: COPYING
38
39
  Requires-Dist: typing-extensions
39
40
  Requires-Dist: wcwidth
40
41
  Provides-Extra: curses
41
- Requires-Dist: windows-curses ; (sys_platform == "win32") and extra == 'curses'
42
+ Requires-Dist: windows-curses; sys_platform == "win32" and extra == "curses"
42
43
  Provides-Extra: glib
43
- Requires-Dist: PyGObject ; extra == 'glib'
44
+ Requires-Dist: PyGObject; extra == "glib"
44
45
  Provides-Extra: lcd
45
- Requires-Dist: pyserial ; extra == 'lcd'
46
+ Requires-Dist: pyserial; extra == "lcd"
46
47
  Provides-Extra: serial
47
- Requires-Dist: pyserial ; extra == 'serial'
48
+ Requires-Dist: pyserial; extra == "serial"
48
49
  Provides-Extra: tornado
49
- Requires-Dist: tornado >=5.0 ; extra == 'tornado'
50
+ Requires-Dist: tornado>=5.0; extra == "tornado"
50
51
  Provides-Extra: trio
51
- Requires-Dist: trio >=0.22.0 ; extra == 'trio'
52
- Requires-Dist: exceptiongroup ; extra == 'trio'
52
+ Requires-Dist: trio>=0.22.0; extra == "trio"
53
+ Requires-Dist: exceptiongroup; extra == "trio"
53
54
  Provides-Extra: twisted
54
- Requires-Dist: twisted ; extra == 'twisted'
55
+ Requires-Dist: twisted; extra == "twisted"
55
56
  Provides-Extra: zmq
56
- Requires-Dist: zmq ; extra == 'zmq'
57
+ Requires-Dist: zmq; extra == "zmq"
57
58
 
58
59
  Urwid
59
60
  =====
@@ -148,6 +149,7 @@ Supported Python versions
148
149
  - 3.10
149
150
  - 3.11
150
151
  - 3.12
152
+ - 3.13
151
153
  - pypy3
152
154
 
153
155
  Authors
@@ -1,29 +1,29 @@
1
1
  urwid/__init__.py,sha256=UMQZuTCtUPN9jHAEJ35lasW7IbBYRXy7NiRAKvyz4iE,8041
2
- urwid/canvas.py,sha256=8awQrNgD6zewFAzPOYcjyiKUC8mv8yDZme7_hVpKnSE,46741
3
- urwid/command_map.py,sha256=M_OjrGY4yKn0jU3MEF9UOhBo2R6y_zZ-qo3LVIKNT_g,4310
2
+ urwid/canvas.py,sha256=j3nxOezBnYW5Q37DsIdrE227SM_gRC6ztL37kkZpPj0,46743
3
+ urwid/command_map.py,sha256=OpY-sGF-dOv8hEN5mEwjjlO56VOWVTjKnlJMfhtNP1k,4324
4
4
  urwid/container.py,sha256=mikK50qN_Cu-8VlBRqQZzU4DcOvz8P_5CfozyyoIf3Q,1589
5
5
  urwid/decoration.py,sha256=sKfCe8SdSWZ4V0Ed_G4aumLxwwhnjoVvF70vlAhoXBE,1772
6
- urwid/font.py,sha256=c84Yi96dAihF-YRtDoiCQwq4zRo77JZ_XEZqOg1h-Io,31932
6
+ urwid/font.py,sha256=jNYYnR_JW_JWbuSIQmNzg2z3fzpg4ihlNBE0EWpz-8s,32040
7
7
  urwid/graphics.py,sha256=pVGGU5kOWV56iXawDROgQWQwIbgaoh32JHE2COcGesQ,2481
8
8
  urwid/numedit.py,sha256=8z1j-JHovBGFV3yZoP1XAsedpsYjnxqR2EuK-m87hso,13374
9
9
  urwid/signals.py,sha256=eNfDSlIi06ySpen1UySZHdu8X4PePlkPRsHHhJE1Hhg,13174
10
10
  urwid/split_repr.py,sha256=pXzuddzQ4RnfIl537Gvoe8PVaBRHCPnxgdYvKK0qm8k,3899
11
11
  urwid/str_util.py,sha256=1ss-LHAhjXTynTVBcoSgYWIpBeN_RirqHYhP7fq7MrA,10844
12
12
  urwid/text_layout.py,sha256=lHiGfo7clmwHt5dMl_AaQSs2ov9IbY9JySTATZBm7h0,22821
13
- urwid/util.py,sha256=pGXnma03_IBx3v6_qN9cDWPXPj_YjkhQ9IxLjm_0TpU,15747
14
- urwid/version.py,sha256=Jq3FXTZdDD6Bn32iZg7aPPgjQwvpbgKC1G9_06DDn4I,413
15
- urwid/vterm.py,sha256=q9-8dxJpVr_7a0Bj_z_FYDiRgzos3IS17BjhYcy1RDw,58410
13
+ urwid/util.py,sha256=Xvy6yuCevoWjrlGHKgKRaJUJ6DtcYnsscOSpETxhNCI,15735
14
+ urwid/version.py,sha256=tjMs-hqDDWXtLpRofgVMJhxqunEbSaXyws6eSD7xygM,413
15
+ urwid/vterm.py,sha256=l2Ctd0n4IrfCDQ6__EWe8ahBkEHOPCtc5LYKgGE4oGg,58665
16
16
  urwid/wimp.py,sha256=o1YsjL_tBLXba8ZRr1MTHH0poLSlXT_atY3-uD_Ualg,567
17
17
  urwid/display/__init__.py,sha256=y90WbHPNRHlimPrXhzsSfFsBbBHy8QErmB1y4Xza-xo,1732
18
- urwid/display/_posix_raw_display.py,sha256=WQ2ox70Y5Bs3sM_kvSC-LvXFz6J74VVwMlqH9NtiY84,14501
18
+ urwid/display/_posix_raw_display.py,sha256=ExZHAzuJg34VNrWWVKXPZGFSApLJvJxrNh4detTEdCY,15053
19
19
  urwid/display/_raw_display_base.py,sha256=JSkF_HcPsto5YxF7NWm2vYLb6nE72AlS7SOCah8woZw,33600
20
20
  urwid/display/_web.css,sha256=6HarEsIspH2egt51HSrgI8Yl2lGi-DbziWOdS4RHNlk,359
21
21
  urwid/display/_web.js,sha256=aWEOQ4EsADsiNgdw-zHEUMCRD2bnfR8M1mu4dOc2Tqk,12947
22
22
  urwid/display/_win32.py,sha256=hD4hytElpfIv5qxGNTMSa2QeBNByqJDNVpmiiQSj6CM,5401
23
- urwid/display/_win32_raw_display.py,sha256=0PuHEhqJRl8uQmaWSOWceM1aEuolPZ-1MbHYN7s9yRY,9248
23
+ urwid/display/_win32_raw_display.py,sha256=o12EI-OLN4-UZbultM4GYAsymnZmuEAcyKnSF8wnWOo,9314
24
24
  urwid/display/common.py,sha256=iPz9uqPtjSYHo7Thj1G8nTiPdoC8Vbl5mGP0aHFYYE0,39517
25
25
  urwid/display/curses.py,sha256=LA8Jglr7HRqQLYhN4wcWuvacoX_1LNjBQUbm8x0_GVo,22772
26
- urwid/display/escape.py,sha256=rG7x82_S91SRdfKXOEzkawDFtmVk5_KiKIY4Bh2mf7s,17826
26
+ urwid/display/escape.py,sha256=m4kM33l5fXvGRQ8jFirH2x-9oG83ILBgUpFdeM7D2ZQ,17941
27
27
  urwid/display/html_fragment.py,sha256=lQRqr-hTrknQyZTtzPDp9zr-TWOT4NcuSsusS-LXIOU,8547
28
28
  urwid/display/lcd.py,sha256=qXfuyZcicarrZM-O-ccPFBPjflD3_bLMv3IQzmYI43E,17607
29
29
  urwid/display/raw.py,sha256=TSkIEM6KnQHPmmpBkWKdirZOwVXhSV67k7hWmuuR2OY,1125
@@ -41,34 +41,34 @@ urwid/event_loop/zmq_loop.py,sha256=YK_AkfLf8tayWrpCgQtKwWYuj-F1uMBluUJxPQLagNs,
41
41
  urwid/widget/__init__.py,sha256=lEFAuQKYnGKS9-dhUggItnnm9Bvbbuk7RAKvzrs8xkI,4683
42
42
  urwid/widget/attr_map.py,sha256=L6svBcabtXeSaU2cNrgDv4Nne6QYk-nvVbr88sA4WnY,6205
43
43
  urwid/widget/attr_wrap.py,sha256=pJQHVNlwcX5IgpdSmTqYOt63EX-p5hA0mJfXtWXJ6wg,4830
44
- urwid/widget/bar_graph.py,sha256=1xQPKKVczMw_lDG4UBk5urUTAgtINN6SgEkVyZkaIU4,21603
44
+ urwid/widget/bar_graph.py,sha256=PmuZwYuUF1yE1mKYqmNo51r1v_2LztfX6hbO_f8Lg2U,21601
45
45
  urwid/widget/big_text.py,sha256=Zvjbkdh4H1Wv9ZTdCbX23vfNyeybO8au-kUssE58Bbs,2393
46
46
  urwid/widget/box_adapter.py,sha256=uOFlZUaCK9A4H8Pmw6-OoS9QTYi9nn-LhlSa-JpC9Iw,4276
47
- urwid/widget/columns.py,sha256=Jz-0oR27uAoUV8LdhPWuCrkMgSHSYTxciNjxDCXPTbs,46508
47
+ urwid/widget/columns.py,sha256=HGJ3u5Ucuyy46uOybPh7N1ycfSAXzSkFyPjW3AVpg44,46388
48
48
  urwid/widget/constants.py,sha256=bNvw1OoT6jFWzDc_NDJRcle1uIX-ENswhvy2S6mIUEk,15313
49
49
  urwid/widget/container.py,sha256=HqafpI2Apz-oI1bcW5rTl3kbOKfPFv_xI8zEXQU7hYI,7177
50
50
  urwid/widget/divider.py,sha256=cM0gWHAqBz7E8l52CGEWWDMSVQkPNDjwy-t3ptbmh2s,3251
51
51
  urwid/widget/edit.py,sha256=qgVYeg_hX6tqRUiuLQkYwYKmWcfVLrLzAG1a5Au6S-w,23732
52
52
  urwid/widget/filler.py,sha256=EEnyAawdKXuwf79pErfNuvqsU1SVTutcMUrwWkU4wfo,14665
53
53
  urwid/widget/frame.py,sha256=AOe4FwjvwcIwrpXqyZkCwSZWwAALNl1XRMAKx6ZXYWs,21834
54
- urwid/widget/grid_flow.py,sha256=PNgs6YN3-cE5ZLlPns_5rwxrSMynB7T5BZvKohSjiPA,21817
54
+ urwid/widget/grid_flow.py,sha256=wZEcEefXKR3i_EXzl4d12aFT-clq-FcTNBhcfmRui8U,21757
55
55
  urwid/widget/line_box.py,sha256=V750xiZtkw6_uRXLhNY91ER3pXwwrZstVv_IJUZd_YY,6884
56
56
  urwid/widget/listbox.py,sha256=G6bucNwh0HWiqiyRYsNqfZvWRQz0hBOyxDqpt3DyRXU,74454
57
57
  urwid/widget/monitored_list.py,sha256=mZUPYB1yhuKN6su6_VjmoiE0LlTXsYxkH14pbif0tbc,19264
58
58
  urwid/widget/overlay.py,sha256=7EtTHOomIF4xzwYiY7SiMCQZF2IHrmO88YeosFOMFo0,34505
59
59
  urwid/widget/padding.py,sha256=pBXQsnkySV1GXgveg2Ivm6SCqHiGa2YkYSjXaoCUIHk,21334
60
- urwid/widget/pile.py,sha256=aIzKYNrSQtbHVk_bn2PElHUiSdsO_NKnL4mTu-sXm4I,38628
60
+ urwid/widget/pile.py,sha256=0or-lFRx0c4ZUq9LWPczdA7Qnka_D7Fg1kYLN_SyLAs,38508
61
61
  urwid/widget/popup.py,sha256=vw9_S1UC6UMy5Roc4qK8NXgH5_dDGxoHmpDAi_u9wsI,5974
62
- urwid/widget/progress_bar.py,sha256=HRnIu2V2_4wgsnAdrhK-GVVToyLaXRH0gtlkWllA4Mo,4767
63
- urwid/widget/scrollable.py,sha256=Smn5X1wvxm3juqFZGOOKREZS4eD4PIyZLeqWAVuAlos,24542
62
+ urwid/widget/progress_bar.py,sha256=v2iTQq6UrLTkpvIxcFFQ--F2Sf5g2smDO4rB0i5HSbo,4925
63
+ urwid/widget/scrollable.py,sha256=5iV1CoHvvoGHLsT_7TwwfdEKRAEztcgGJHveSn37qM0,24536
64
64
  urwid/widget/solid_fill.py,sha256=NZRDSRK0lP4r7gXcKDgVaKEoeOcWvtrY5k2aueQEEL4,1260
65
65
  urwid/widget/text.py,sha256=jy15hL6rCBoJdZviq2jJ-i9eO6vEcxvzCIVAZs12AUw,12187
66
66
  urwid/widget/treetools.py,sha256=5s3Dnp2PCz4wQccutmdvsTTbAROJMLehXe4moB5POY0,17387
67
67
  urwid/widget/widget.py,sha256=A0ZjvDjLqhdzelPFC96Ozo1voIoGkxftNmJh8X1IyNI,29557
68
68
  urwid/widget/widget_decoration.py,sha256=6eEPvtF7wk2n1csIBWrnXAosprFl2pZiQ7SoCpwKnJM,5736
69
69
  urwid/widget/wimp.py,sha256=4wfzTQBLMbhicSlL64hBPb-1W5FAFrIKfb43i10MKSY,27305
70
- urwid-2.6.15.dist-info/COPYING,sha256=NrbT-keRaUP9X-wxPFhHhJRgR-wTN6eLRA5ZkstZX4k,26434
71
- urwid-2.6.15.dist-info/METADATA,sha256=eKwCcXLLsemMr31tTwqUNhzVblNUGQNvLHtbey9EWLw,11043
72
- urwid-2.6.15.dist-info/WHEEL,sha256=y4mX-SOX4fYIkonsAGA5N0Oy-8_gI4FXw5HNI1xqvWg,91
73
- urwid-2.6.15.dist-info/top_level.txt,sha256=AwxQA43kNkjHbhYELXHBKrQ01X5CR2KnDzU07cVqilY,6
74
- urwid-2.6.15.dist-info/RECORD,,
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,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (70.2.0)
2
+ Generator: setuptools (75.1.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5