hspylib-clitt 0.9.34__py3-none-any.whl → 0.9.36__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 hspylib-clitt might be problematic. Click here for more details.

clitt/.version CHANGED
@@ -1 +1 @@
1
- 0.9.34
1
+ 0.9.36
clitt/__init__.py CHANGED
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.34
3
+ # hspylib-clitt v0.9.36
4
4
  #
5
5
  # Package: main.clitt
6
6
  """Package initialization."""
@@ -9,4 +9,4 @@ __all__ = [
9
9
  'addons',
10
10
  'core'
11
11
  ]
12
- __version__ = '0.9.34'
12
+ __version__ = '0.9.36'
clitt/addons/__init__.py CHANGED
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.34
3
+ # hspylib-clitt v0.9.36
4
4
  #
5
5
  # Package: main.clitt.addons
6
6
  """Package initialization."""
@@ -10,4 +10,4 @@ __all__ = [
10
10
  'setman',
11
11
  'widman'
12
12
  ]
13
- __version__ = '0.9.34'
13
+ __version__ = '0.9.36'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.34
3
+ # hspylib-clitt v0.9.36
4
4
  #
5
5
  # Package: main.clitt.addons.appman
6
6
  """Package initialization."""
@@ -10,4 +10,4 @@ __all__ = [
10
10
  'appman_enums',
11
11
  'templates'
12
12
  ]
13
- __version__ = '0.9.34'
13
+ __version__ = '0.9.36'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.34
3
+ # hspylib-clitt v0.9.36
4
4
  #
5
5
  # Package: main.clitt.addons.appman.templates
6
6
  """Package initialization."""
@@ -8,4 +8,4 @@
8
8
  __all__ = [
9
9
 
10
10
  ]
11
- __version__ = '0.9.34'
11
+ __version__ = '0.9.36'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.34
3
+ # hspylib-clitt v0.9.36
4
4
  #
5
5
  # Package: main.clitt.addons.setman
6
6
  """Package initialization."""
@@ -13,4 +13,4 @@ __all__ = [
13
13
  'setman_repository',
14
14
  'setman_service'
15
15
  ]
16
- __version__ = '0.9.34'
16
+ __version__ = '0.9.36'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.34
3
+ # hspylib-clitt v0.9.36
4
4
  #
5
5
  # Package: main.clitt.addons.widman
6
6
  """Package initialization."""
@@ -11,4 +11,4 @@ __all__ = [
11
11
  'widgets',
12
12
  'widman'
13
13
  ]
14
- __version__ = '0.9.34'
14
+ __version__ = '0.9.36'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.34
3
+ # hspylib-clitt v0.9.36
4
4
  #
5
5
  # Package: main.clitt.addons.widman.widgets
6
6
  """Package initialization."""
@@ -11,4 +11,4 @@ __all__ = [
11
11
  'widget_send_msg',
12
12
  'widget_time_calc'
13
13
  ]
14
- __version__ = '0.9.34'
14
+ __version__ = '0.9.36'
clitt/core/__init__.py CHANGED
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.34
3
+ # hspylib-clitt v0.9.36
4
4
  #
5
5
  # Package: main.clitt.core
6
6
  """Package initialization."""
@@ -9,4 +9,4 @@ __all__ = [
9
9
  'icons',
10
10
  'tui'
11
11
  ]
12
- __version__ = '0.9.34'
12
+ __version__ = '0.9.36'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.34
3
+ # hspylib-clitt v0.9.36
4
4
  #
5
5
  # Package: main.clitt.core.icons
6
6
  """Package initialization."""
@@ -9,4 +9,4 @@ __all__ = [
9
9
  'emojis',
10
10
  'font_awesome'
11
11
  ]
12
- __version__ = '0.9.34'
12
+ __version__ = '0.9.36'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.34
3
+ # hspylib-clitt v0.9.36
4
4
  #
5
5
  # Package: main.clitt.core.icons.emojis
6
6
  """Package initialization."""
@@ -9,4 +9,4 @@ __all__ = [
9
9
  'emojis',
10
10
  'face_smiling'
11
11
  ]
12
- __version__ = '0.9.34'
12
+ __version__ = '0.9.36'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.34
3
+ # hspylib-clitt v0.9.36
4
4
  #
5
5
  # Package: main.clitt.core.icons.font_awesome
6
6
  """Package initialization."""
@@ -14,4 +14,4 @@ __all__ = [
14
14
  'nav_icons',
15
15
  'widget_icons'
16
16
  ]
17
- __version__ = '0.9.34'
17
+ __version__ = '0.9.36'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.34
3
+ # hspylib-clitt v0.9.36
4
4
  #
5
5
  # Package: main.clitt.core.tui
6
6
  """Package initialization."""
@@ -17,4 +17,4 @@ __all__ = [
17
17
  'tui_preferences',
18
18
  'tui_screen'
19
19
  ]
20
- __version__ = '0.9.34'
20
+ __version__ = '0.9.36'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.34
3
+ # hspylib-clitt v0.9.36
4
4
  #
5
5
  # Package: main.clitt.core.tui.mchoose
6
6
  """Package initialization."""
@@ -9,4 +9,4 @@ __all__ = [
9
9
  'mchoose',
10
10
  'menu_choose'
11
11
  ]
12
- __version__ = '0.9.34'
12
+ __version__ = '0.9.36'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.34
3
+ # hspylib-clitt v0.9.36
4
4
  #
5
5
  # Package: main.clitt.core.tui.mdashboard
6
6
  """Package initialization."""
@@ -11,4 +11,4 @@ __all__ = [
11
11
  'mdashboard',
12
12
  'menu_dashboard'
13
13
  ]
14
- __version__ = '0.9.34'
14
+ __version__ = '0.9.36'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.34
3
+ # hspylib-clitt v0.9.36
4
4
  #
5
5
  # Package: main.clitt.core.tui.menu
6
6
  """Package initialization."""
@@ -13,4 +13,4 @@ __all__ = [
13
13
  'tui_menu_ui',
14
14
  'tui_menu_view'
15
15
  ]
16
- __version__ = '0.9.34'
16
+ __version__ = '0.9.36'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.34
3
+ # hspylib-clitt v0.9.36
4
4
  #
5
5
  # Package: main.clitt.core.tui.minput
6
6
  """Package initialization."""
@@ -16,4 +16,4 @@ __all__ = [
16
16
  'minput',
17
17
  'minput_utils'
18
18
  ]
19
- __version__ = '0.9.34'
19
+ __version__ = '0.9.36'
@@ -12,8 +12,8 @@
12
12
 
13
13
  Copyright 2023, HsPyLib team
14
14
  """
15
- import time
16
15
  from functools import reduce
16
+ from time import sleep
17
17
  from typing import List
18
18
 
19
19
  import pyperclip
@@ -41,6 +41,13 @@ class MenuInput(TUIComponent):
41
41
  def builder(cls) -> FormBuilder:
42
42
  return FormBuilder()
43
43
 
44
+ @staticmethod
45
+ def str_val(field: FormField) -> str:
46
+ """TODO"""
47
+ if field.value is None:
48
+ return ''
49
+ return str(field.value)
50
+
44
51
  def __init__(self, title: str, fields: List[FormField]):
45
52
  super().__init__(title)
46
53
  self.fields = fields
@@ -68,6 +75,7 @@ class MenuInput(TUIComponent):
68
75
  return None
69
76
 
70
77
  def render(self) -> None:
78
+
71
79
  set_show_cursor(False)
72
80
  self.cursor.restore()
73
81
  self.writeln(f"{self.prefs.title_color.placeholder}{self.title}%EOL%%NC%")
@@ -160,15 +168,15 @@ class MenuInput(TUIComponent):
160
168
  case InputType.SELECT:
161
169
  if keypress == Keyboard.VK_SPACE:
162
170
  if self.cur_field.value:
163
- self.cur_field.value = toggle_selected(str(self.cur_field.value or ''))
171
+ self.cur_field.value = toggle_selected(self.str_val(self.cur_field))
164
172
  case InputType.MASKED:
165
- value, mask = unpack_masked(str(self.cur_field.value or ''))
173
+ value, mask = unpack_masked(self.str_val(self.cur_field))
166
174
  try:
167
175
  self.cur_field.value = append_masked(value, mask, keypress.value)
168
176
  except InvalidInputError as err:
169
177
  self._display_error(str(err))
170
178
  case _:
171
- if len(str(self.cur_field.value or '')) < self.cur_field.max_length:
179
+ if len(self.str_val(self.cur_field)) < self.cur_field.max_length:
172
180
  if self.cur_field.validate_input(keypress.value):
173
181
  self.cur_field.value = (
174
182
  str(self.cur_field.value) if self.cur_field.value else ''
@@ -211,7 +219,7 @@ class MenuInput(TUIComponent):
211
219
  """
212
220
  match field.itype:
213
221
  case InputType.TEXT:
214
- mi_print(self.screen, str(field.value or ''), field_len=self.max_value_length)
222
+ mi_print(self.screen, self.str_val(field), field_len=self.max_value_length)
215
223
  case InputType.PASSWORD:
216
224
  mi_print(self.screen, "*" * field.length, field_len=self.max_value_length)
217
225
  case InputType.CHECKBOX:
@@ -243,7 +251,7 @@ class MenuInput(TUIComponent):
243
251
  count = len(re.split(VALUE_SEPARATORS, field.value))
244
252
  self.writeln(fmt.format(field.icon, idx + 1 if idx >= 0 else 1, count))
245
253
  elif field.itype == InputType.MASKED:
246
- value, mask = unpack_masked(str(field.value or ''))
254
+ value, mask = unpack_masked(self.str_val(field))
247
255
  self.writeln(fmt.format(
248
256
  field.icon,
249
257
  reduce(lambda n, m: n + m, list(map(lambda s: mask[:len(value)].count(s), MASK_SYMBOLS))),
@@ -263,18 +271,18 @@ class MenuInput(TUIComponent):
263
271
  if self.tab_index == field_index:
264
272
  self.cur_row, self.cur_col = f_pos[0], f_pos[1] + field_size
265
273
 
266
- def _display_error(self, err_msg) -> None:
274
+ def _display_error(self, err_msg: str) -> None:
267
275
  """Display a form filling or submitting error.
268
276
  :param err_msg: the error message.
269
277
  """
270
278
  set_enable_echo(False)
271
279
  set_show_cursor(False)
272
- offset = 16 # Magic number :D . That is the value to best fit the message along with the form.
273
- err_pos = self.max_label_length + self.max_value_length + self.max_detail_length + offset
280
+ offset = 15 # Sum of minput used characters that are not related to the field.
281
+ err_pos = offset + self.max_label_length + self.max_value_length + self.max_detail_length
274
282
  self.cursor.move_to(self.cur_row, err_pos)
275
- mi_print_err(self.screen, f"{FormIcons.ERROR_CIRCLE} {err_msg}")
283
+ mi_print_err(self.screen, f"{FormIcons.ARROW_LEFT} {err_msg}")
276
284
  # This calculation gives a good delay amount based on the size of the message.
277
- time.sleep(max(1.8, int(len(err_msg) / 24)))
285
+ sleep(max(2.0, int(len(err_msg) / 21)))
278
286
  set_enable_echo()
279
287
  # Erase the message after the timeout
280
288
  self.cursor.move_to(self.cur_row, err_pos)
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.34
3
+ # hspylib-clitt v0.9.36
4
4
  #
5
5
  # Package: main.clitt.core.tui.mselect
6
6
  """Package initialization."""
@@ -9,4 +9,4 @@ __all__ = [
9
9
  'menu_select',
10
10
  'mselect'
11
11
  ]
12
- __version__ = '0.9.34'
12
+ __version__ = '0.9.36'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.34
3
+ # hspylib-clitt v0.9.36
4
4
  #
5
5
  # Package: main.clitt.core.tui.table
6
6
  """Package initialization."""
@@ -8,4 +8,4 @@
8
8
  __all__ = [
9
9
  'table_renderer'
10
10
  ]
11
- __version__ = '0.9.34'
11
+ __version__ = '0.9.36'
@@ -12,13 +12,16 @@
12
12
 
13
13
  Copyright 2023, HsPyLib team
14
14
  """
15
+ import csv
16
+ import os
17
+ from typing import Iterable, List
18
+
15
19
  from hspylib.core.enums.enumeration import Enumeration
16
20
  from hspylib.core.preconditions import check_argument
17
21
  from hspylib.core.tools.commons import file_is_not_empty, sysout
18
22
  from hspylib.core.tools.text_tools import elide_text, justified_center, justified_left, justified_right, titlecase
19
- from typing import Iterable, List
20
23
 
21
- import csv
24
+ from clitt.core.tui.tui_screen import TUIScreen
22
25
 
23
26
 
24
27
  class TableRenderer:
@@ -27,20 +30,26 @@ class TableRenderer:
27
30
  DEFAULT_MINIMUM_CELL_SIZE = 6
28
31
 
29
32
  @staticmethod
30
- def from_csv(filepath: str, caption: str | None = None, delimiter: chr = ",") -> "TableRenderer":
31
- """TODO"""
32
-
33
+ def import_csv(
34
+ filepath: str,
35
+ caption: str | None = None,
36
+ has_headers: bool = True,
37
+ delimiter: chr = ",") -> "TableRenderer":
38
+ """Render the table based on a CSV file."""
33
39
  check_argument(file_is_not_empty(filepath), f"File not found: {filepath}")
34
40
  headers, data = None, []
35
41
  with open(filepath, encoding="UTF8") as csv_file:
36
42
  csv_reader = csv.reader(csv_file, delimiter=delimiter)
37
43
  line_count = 0
38
44
  for row in csv_reader:
39
- if line_count == 0:
40
- headers = row
41
- else:
42
- data.append(row)
43
45
  line_count += 1
46
+ if line_count == 1:
47
+ if has_headers:
48
+ headers = row
49
+ continue
50
+ else:
51
+ headers = [f"C{idx}" for idx, _ in enumerate(row)]
52
+ data.append(row)
44
53
  return TableRenderer(headers, data, caption)
45
54
 
46
55
  class TextAlignment(Enumeration):
@@ -66,15 +75,28 @@ class TableRenderer:
66
75
  self._header_alignment = TableRenderer.TextAlignment.CENTER
67
76
  self._cell_alignment = TableRenderer.TextAlignment.LEFT
68
77
  self._min_cell_size = self.DEFAULT_MINIMUM_CELL_SIZE
78
+ self._screen = TUIScreen.INSTANCE
79
+
69
80
  if data:
70
81
  check_argument(
71
82
  len(min(data, key=len)) == len(self._headers),
72
83
  "Headers and Columns must have the same size: {} vs {}",
73
- len(min(data, key=len)),
74
- len(self._headers),
84
+ len(min(data, key=len)), len(self._headers),
75
85
  )
86
+
76
87
  self._column_sizes = [self._min_cell_size for _ in self._headers]
77
88
 
89
+ @property
90
+ def cursor(self) -> TUIScreen.Cursor:
91
+ return self._screen.cursor
92
+
93
+ def write(self, data: str) -> None:
94
+ """TODO"""
95
+ if TUIScreen.INSTANCE:
96
+ self.write(data)
97
+ else:
98
+ sysout(data)
99
+
78
100
  def set_header_alignment(self, alignment: TextAlignment) -> None:
79
101
  """Set table headers alignment.
80
102
  :param alignment: table header text alignment function.
@@ -147,14 +169,20 @@ class TableRenderer:
147
169
  """Render the table.
148
170
  :return: None
149
171
  """
150
- header_row, data_rows = self._format_header_row(), self._format_data_rows()
172
+ header_line, data_lines = self._format_header_row(), self._format_data_rows()
151
173
  table_line = "+" + "+".join(f"{'-' * (self._column_sizes[idx] + 2)}" for idx in self._columns) + "+"
152
- self._render_table(table_line, header_row, data_rows)
174
+ self._render_table(table_line, header_line, data_lines)
153
175
 
154
- def to_csv(self, filepath: str) -> None:
176
+ def export_csv(
177
+ self,
178
+ filepath: str,
179
+ delimiter: chr = ',',
180
+ has_headers: bool = True) -> None:
181
+ """TODO"""
155
182
  with open(filepath, "w", encoding="UTF8") as csv_file:
156
- writer = csv.writer(csv_file)
157
- writer.writerow(self._headers)
183
+ writer = csv.writer(csv_file, delimiter=delimiter)
184
+ if has_headers:
185
+ writer.writerow(self._headers)
158
186
  writer.writerows(self._data)
159
187
 
160
188
  def _format_header_row(self) -> str:
@@ -199,11 +227,12 @@ class TableRenderer:
199
227
  """
200
228
  line_length, render_line = len(table_line) - 4, f"+{table_line[1:-1]}+"
201
229
  empty_line = f"| {'<empty>': ^{line_length}} |"
202
- sysout(render_line.replace("+", "-"))
203
230
  if self._caption:
204
- sysout(f"| {elide_text(self._caption, line_length): ^{line_length}} |")
205
- sysout(render_line)
206
- sysout(header_row)
207
- sysout(render_line)
208
- sysout(f"{'%EOL%'.join(data_rows) if data_rows else empty_line}")
209
- sysout(render_line.replace("+", "-"))
231
+ border_line = render_line.replace("+", "-")
232
+ self.write(border_line)
233
+ self.write(f"| {elide_text(self._caption, line_length): ^{line_length}} |")
234
+ self.write(render_line)
235
+ self.write(header_row)
236
+ self.write(render_line)
237
+ self.write(f"{os.linesep.join(data_rows) if data_rows else empty_line}")
238
+ self.write(render_line)
@@ -68,7 +68,7 @@ class TUIComponent(ABC):
68
68
  self._screen.add_watcher(self.invalidate)
69
69
  set_auto_wrap(auto_wrap)
70
70
  set_show_cursor(show_cursor)
71
- self._screen.clear()
71
+ self.screen.clear()
72
72
  self.cursor.save()
73
73
 
74
74
  def _loop(self, break_keys: List[Keyboard] = None) -> Keyboard:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: hspylib-clitt
3
- Version: 0.9.34
3
+ Version: 0.9.36
4
4
  Summary: HsPyLib - CLI Terminal Tools
5
5
  Home-page: https://github.com/yorevs/hspylib
6
6
  Author: Hugo Saporetti Junior
@@ -31,7 +31,7 @@ Requires-Dist: hspylib
31
31
  ## Create professional CLI applications
32
32
 
33
33
  [![License](https://badgen.net/badge/license/MIT/gray)](LICENSE.md)
34
- [![Release](https://badgen.net/badge/release/v0.9.34/gray)](CHANGELOG.md#unreleased)
34
+ [![Release](https://badgen.net/badge/release/v0.9.36/gray)](CHANGELOG.md#unreleased)
35
35
  [![PyPi](https://badgen.net/badge/icon/python?icon=pypi&label)](https://pypi.org/project/hspylib-cfman)
36
36
  [![GitHub](https://badgen.net/badge/icon/github?icon=github&label)](https://github.com/yorevs/hspylib)
37
37
  [![Gitter](https://badgen.net/badge/icon/gitter?icon=gitter&label)](https://gitter.im/hspylib/community)
@@ -1,13 +1,13 @@
1
- clitt/.version,sha256=GiSux3LKPB7ZJg2Z6q_kl-eS_lJ4cPlTKGImSFNQN4U,7
1
+ clitt/.version,sha256=QyZbwrqhwFuHODXatMEY7csldm9f9Igeb7360aAUHCM,7
2
2
  clitt/__classpath__.py,sha256=j7k_kckSu-7r0RB630enzF3JH_1z2J7RByxp2ZZNdmg,717
3
- clitt/__init__.py,sha256=QEvjCmII4t28WjOdWVBsqDthnsqgF4g4KnguSDc40Hs,164
3
+ clitt/__init__.py,sha256=B5Yz6bLdnq22RhmpC-Eg2yZ_nyGv3PnOEWPebRLhBbo,164
4
4
  clitt/__main__.py,sha256=leYCCcxf0CrO9zBiI4MVRL-s02rt25Ib6uROSYlNca4,6973
5
5
  clitt/welcome.txt,sha256=x4oQU6m_9g75x4d7tLriPkFR6I_4MLhlHRzqwBIC-lA,452
6
- clitt/addons/__init__.py,sha256=eWlL32sZ8cfQ2m1kP24W8NfzC0fxmrvAuuMrmrzZyLg,186
7
- clitt/addons/appman/__init__.py,sha256=4gIHR-LpwYezD8JPidvgN9Waxs8Al56-Mr29Iz8lPKQ,202
6
+ clitt/addons/__init__.py,sha256=npeE4fu0anNG6KTPIQAWGNxSdLu4MBnZ-Is-U4OJviQ,186
7
+ clitt/addons/appman/__init__.py,sha256=NrCW9AKib6GiZS5N7GXSgGNh-maldOc7KElfsxbnmQU,202
8
8
  clitt/addons/appman/appman.py,sha256=-fwijYySTWoyoAwzWFycIdScBkStH7VLFr-4bFuGXw8,13150
9
9
  clitt/addons/appman/appman_enums.py,sha256=FMfSIBptbCDBxWsqUmF_xIsRBFNITqqxeXr2iOIdcLM,873
10
- clitt/addons/appman/templates/__init__.py,sha256=V7r3LmKDVG1u_-qyYpq53ZMYm55cekkSOT_BlraZeHg,169
10
+ clitt/addons/appman/templates/__init__.py,sha256=ekNux4NN7W5-d6ldx09BCDxAkaztn8DabgcVzQy2Iyk,169
11
11
  clitt/addons/appman/templates/build.gradle.tpl,sha256=VQKs4r41xPr7P14PtQPt3alYCmNuXaGraaXbKB_FKkM,1817
12
12
  clitt/addons/appman/templates/classpath.py.tpl,sha256=R60uLvVxeJ7nJCXCvav_9LAnDe5VOfJqWO-T1QAlwAc,397
13
13
  clitt/addons/appman/templates/dependencies.hspd.tpl,sha256=bbVNU6XBm5QT28lvH7Bp_4nlXvoD-LwX5kGQ-CPhOEA,764
@@ -20,28 +20,28 @@ clitt/addons/appman/templates/run.sh.tpl,sha256=2xpuHjZP9-7j14dAA2CqPm4G2xtnuenf
20
20
  clitt/addons/appman/templates/test_main.py.tpl,sha256=x_xuKy2O2b1bs6tuzOUqF5shnx-2-EfFRc7sBV4Fndc,1239
21
21
  clitt/addons/appman/templates/usage.txt.tpl,sha256=R0e48HCeD7PDbWnX6HGIjz6gr_hBdp-zK6V42U1Aexw,217
22
22
  clitt/addons/appman/templates/widget.py.tpl,sha256=JmlO5rh2ETCF5ldiB9MStfjB4oB4JLI8UUnNP5SAAcM,1668
23
- clitt/addons/setman/__init__.py,sha256=pGI-w38LyS17ZdFDn_BkCCpcfN5rp200a5C5dVzsVus,270
23
+ clitt/addons/setman/__init__.py,sha256=jl2lyjZSsCyL35RCRj98uEPrrpSJrYSoHBP8lD9dUcY,270
24
24
  clitt/addons/setman/setman.py,sha256=70CC1dnuNxeumo7fESQfIViIeKBr-ee2ST6JcL1N_Ow,8129
25
25
  clitt/addons/setman/setman_config.py,sha256=X39iFkd4HLqMgQ0dpbtngASe05HrtCdxIbKwgQWImIs,1012
26
26
  clitt/addons/setman/setman_entry.py,sha256=eZqOgNzRK6mtFc_eoyQw8Y-sq8z87QK95RpoYpcqtLo,3394
27
27
  clitt/addons/setman/setman_enums.py,sha256=fZ0uXTzBh7fx1xUqV02BkFmVKSUUIJbr2HmVLbcrhqk,1281
28
28
  clitt/addons/setman/setman_repository.py,sha256=yxL9raNA3FVcvWdFtbIQMrKYmrjgPbu4TcqViJGE3lY,2547
29
29
  clitt/addons/setman/setman_service.py,sha256=1Yw27DFmlaiCedaGjg1TLxDyOfNFjlrbfE91uChzLL8,2244
30
- clitt/addons/widman/__init__.py,sha256=kS21YpLV4Jpn-L3q1pu1rfoyKkCUaJLprq_mpOsbOWc,213
30
+ clitt/addons/widman/__init__.py,sha256=-HFWAskd6JLpHkwgUlA40SQWLr1CLy1Jf7MHORxvyFk,213
31
31
  clitt/addons/widman/widget.py,sha256=mIEB3Fs4ypaUMhh85meg2vMhKJVjW8Tyxkp_XqHIHtA,1920
32
32
  clitt/addons/widman/widget_entry.py,sha256=8Shj4_esh6KN69usTrCcUsfGVas81Xz0QabsY_zV9o0,1350
33
33
  clitt/addons/widman/widman.py,sha256=kfv3CcDSjUZglurPXa4Bv1jYELtEkbixOjpVL8yRf3M,5260
34
- clitt/addons/widman/widgets/__init__.py,sha256=EYww5RDRZaLGDuB_pOSGkwfIjnaceX0HQdonKtEmga4,244
34
+ clitt/addons/widman/widgets/__init__.py,sha256=7KuE5-5eaO3lSNwPws-ZgJJQyOuFYqEopoiw2Hegw2E,244
35
35
  clitt/addons/widman/widgets/widget_free.py,sha256=5imXWD4F984KqwcWuI-ZuBaF1gtNha0TAmmaiIZ-MVg,3997
36
36
  clitt/addons/widman/widgets/widget_punch.py,sha256=YQ27qC15gyt1jn-R4oNumVLVbMzbs3s7I0yLPqpR8xY,10535
37
37
  clitt/addons/widman/widgets/widget_send_msg.py,sha256=MMBOGTBc6c3jgLgZBzbQIiQsSs5jl-8ohqy7evMSNQU,11056
38
38
  clitt/addons/widman/widgets/widget_time_calc.py,sha256=JQOHRf5OFDL73Y-GJEWtdN5_s2vKR-9mX0yoisxNQRg,5100
39
- clitt/core/__init__.py,sha256=twL6xekgpsy_Vmp5Wl5VvugMlr_vBbo0Tcl9x_rJV4M,167
40
- clitt/core/icons/__init__.py,sha256=wklMn68feTajNTbQodPrfU56oGGYGUftp2sw756kT1s,183
41
- clitt/core/icons/emojis/__init__.py,sha256=NPdTQoJn7sYMXGqWkBr_mpuwZGKON3alp2C-DBP_xQg,190
39
+ clitt/core/__init__.py,sha256=-KycWQ08a-x7X78ghcKF8Q1dgTUZP-hl-St_HgZ1XGg,167
40
+ clitt/core/icons/__init__.py,sha256=xWq1MFmwtuzSuEenvD9YB9gHxg6Wt23zsZqQ1tGQDtU,183
41
+ clitt/core/icons/emojis/__init__.py,sha256=wFpPNVmGdcm_Qxn_zqes3l5UmPW6t0I9bCg33uY2VpQ,190
42
42
  clitt/core/icons/emojis/emojis.py,sha256=LbwpjJonRlNVPa6eMEDTreQz1fmFfFK4dOk6X-4XHrI,1109
43
43
  clitt/core/icons/emojis/face_smiling.py,sha256=qho6t7W3za6-H9bW51_0RoYKah_f0_DCJ0EiCiwvQwI,1269
44
- clitt/core/icons/font_awesome/__init__.py,sha256=NPp7cJgEkla2IK3Bzd0V5Z77D-PzFp19DBJE4agLrO0,288
44
+ clitt/core/icons/font_awesome/__init__.py,sha256=0Rq6wBITvK84dVX-yMJZz48vVBXixVFpkWs4SZOjpDg,288
45
45
  clitt/core/icons/font_awesome/app_icons.py,sha256=cMPlXVWOn5YnLmlk20nwhFgA16Ug2jFiHZPYlwwH724,1662
46
46
  clitt/core/icons/font_awesome/awesome.py,sha256=oEOi0DWj0yvJbmg18fXE5hgSrMmCckTYC0cbgw1cyQQ,1831
47
47
  clitt/core/icons/font_awesome/control_icons.py,sha256=OuAnvXRIusxDRVnPHxltTn4V6tF_uc2gfoqoQWB7Bks,1075
@@ -49,42 +49,42 @@ clitt/core/icons/font_awesome/dashboard_icons.py,sha256=MGXLJ-I_xXalOaLeWHkaZe5Z
49
49
  clitt/core/icons/font_awesome/form_icons.py,sha256=mDF_0nFJ9VYO2ZoXWSTETm7qEd03dcIgeCUpFnH0sLI,2314
50
50
  clitt/core/icons/font_awesome/nav_icons.py,sha256=A3GqJuwD-RKybY67THimI1oqcNlDSEaA_Hdy8LSzfqo,1105
51
51
  clitt/core/icons/font_awesome/widget_icons.py,sha256=Oho4jPezyMSw-tKWSjpdK3dv-FK2GC_62liNeThhhAs,1024
52
- clitt/core/tui/__init__.py,sha256=u5pdP4mRJuBtwBIeM3UGVUZgcIYzxFNzBe_35lJnuDw,311
52
+ clitt/core/tui/__init__.py,sha256=DXjTu2t6KnCeBeddgwc8ebuxSe-Uv_uNiIBoIO9rlww,311
53
53
  clitt/core/tui/tui_application.py,sha256=kBYc_IUrVrZ6v7MZ6A8QJ9hONDpXwqO9TqJa_XBsM8E,1611
54
- clitt/core/tui/tui_component.py,sha256=3GXfU7AO9oi7VnM8MAClieZUyTU9s9vkrv0Pwce_0hM,4733
54
+ clitt/core/tui/tui_component.py,sha256=utHiH1MdkvP8ufMDwN5MxfBf0ra6Sir3LfC8cuqv1_Q,4732
55
55
  clitt/core/tui/tui_preferences.py,sha256=C3cXqwBykE8Sw3Brn-s4nBxr5gDgSslS7bD1g67rtBw,4731
56
56
  clitt/core/tui/tui_screen.py,sha256=I043SGE7d2OQZDwjLsuvyUO7ucwYHmtyfx54FL52ejE,8374
57
- clitt/core/tui/mchoose/__init__.py,sha256=6dXoUnpOlyYyfoJRIXmJ508vCnRJu49zSHaozD8F4nM,189
57
+ clitt/core/tui/mchoose/__init__.py,sha256=DdyJPAIRHj0jGneH3pucSD8FcbhEZA7mNBn0xl5rQFI,189
58
58
  clitt/core/tui/mchoose/mchoose.py,sha256=SsflRDJUAB2opK1BeZXBba6zFYuqe1prflaePX21Xfk,1197
59
59
  clitt/core/tui/mchoose/menu_choose.py,sha256=kvEvuADZDk_lRqC7jH_cWtJGiNZjdh_765x27cu8ySo,7016
60
- clitt/core/tui/mdashboard/__init__.py,sha256=irSTrEeG6efAutKKGlKeRFHWWD0ubDZDR4JuBW7gLVU,243
60
+ clitt/core/tui/mdashboard/__init__.py,sha256=p9FO1p7Mjr6SpQnDgLWxSuHQIe3Osw5s3-nBE30oph8,243
61
61
  clitt/core/tui/mdashboard/dashboard_builder.py,sha256=wWcT1UyQnOrvalV920XtmBUg5lRVbhA8hMrmxRcLrtY,1658
62
62
  clitt/core/tui/mdashboard/dashboard_item.py,sha256=4MK6bxROWo1ZK9FlMoSm38z0qe5HoxqH0W5tt3iUT5M,886
63
63
  clitt/core/tui/mdashboard/mdashboard.py,sha256=sUOAsrHxCIz3gjJAJOcm6ZD3Xh1uU_I5qx-6pOiJ6KU,903
64
64
  clitt/core/tui/mdashboard/menu_dashboard.py,sha256=UyzbdhSeWV_NylryVJcjcHqW5vwFScUcaTpdCXllvXs,5547
65
- clitt/core/tui/menu/__init__.py,sha256=6X1nGM4mWttgTDKgVcJJqQXNgbRiaXvf0eOSAotPttE,272
65
+ clitt/core/tui/menu/__init__.py,sha256=TFW6DaRmah36QxaxvBODEaO_QorfA7hFsGvKxJ8tGF4,272
66
66
  clitt/core/tui/menu/tui_menu.py,sha256=wWgHr0D_jzj3l6XPwWoIfy1kCXn-zYwZn2ctqB9lTrk,3599
67
67
  clitt/core/tui/menu/tui_menu_action.py,sha256=KqhG_YkEMWF37uoI7Q_bCr3jHLIeTbDr_-uROuhAvB0,1590
68
68
  clitt/core/tui/menu/tui_menu_factory.py,sha256=rL33KX5yD2ppvVRAEFIAme5ka7GrBQecVr63aUf2hf0,4459
69
69
  clitt/core/tui/menu/tui_menu_item.py,sha256=NZjlYl6nVwB0wo0fJ4OFnIo98eowLwLWHGMnSD-yTto,7482
70
70
  clitt/core/tui/menu/tui_menu_ui.py,sha256=GK9suH6eeG4rqV_TahZ9PDDIHYpu7yETHWjzKsh_Xdo,3271
71
71
  clitt/core/tui/menu/tui_menu_view.py,sha256=oJwdmwfbMoJ2mh_mc-IQZ4qERuz5v4hZtsHjaW34fvM,1943
72
- clitt/core/tui/minput/__init__.py,sha256=TCQd9t46b_aQqLleIKPg2bHA6457iNpR2q_3yfKzLi4,318
72
+ clitt/core/tui/minput/__init__.py,sha256=JN5cXI_9IyCi45LZuDC8mLGSGJn30dBq7leGL5gF6ZM,318
73
73
  clitt/core/tui/minput/access_type.py,sha256=Dss6okfXHCoUI3_OOu2nKsgpy2NeStIwhdDvTR2z-2w,636
74
74
  clitt/core/tui/minput/field_builder.py,sha256=lw-JguTb8glG7NIiyoCb6UigzlOgk7k81l5x0uyWuhI,4311
75
75
  clitt/core/tui/minput/form_builder.py,sha256=HjwJVtrizUNgpNWA7NkpzM0ZRweFUJBHvuB5L33LD2k,2866
76
76
  clitt/core/tui/minput/form_field.py,sha256=3xYglKDAQj-YFyRGvUWgl9fiF4jJjA7tN4sgYfg6vzQ,5776
77
77
  clitt/core/tui/minput/input_type.py,sha256=O6-jk_QSjjRGeHsGVzIDZSCLg739f2xtnVV_ElcHYpA,722
78
78
  clitt/core/tui/minput/input_validator.py,sha256=z6CNtWFx90wDeYgLilIdPeZC23aub804fCBd_95wKAA,3438
79
- clitt/core/tui/minput/menu_input.py,sha256=usLRCnjheA7dfoinEZIflsRiwIo0yV6XHrsGqmgCL-w,12535
79
+ clitt/core/tui/minput/menu_input.py,sha256=rLgxfNY8ryZIQXtk1jjzfj4hmRVWsH9Y-5eJy1Srtaw,12679
80
80
  clitt/core/tui/minput/minput.py,sha256=no3J-eIhlalvvEDmfjMLX2Gi197PKqSY28tur6oePBk,1545
81
81
  clitt/core/tui/minput/minput_utils.py,sha256=raA0KE7NaFesR4W1MNeevaDEep0O0XBRYguDtsf2Pbo,5374
82
- clitt/core/tui/mselect/__init__.py,sha256=ZmwlV0J1fKnTnxbQ__Mkud2C_pK2LFtd_Fuh-1arW8g,189
82
+ clitt/core/tui/mselect/__init__.py,sha256=oSZignBh_Qy5OCgPHbC-OlvKK8T60uhRIRfY4QqdfLQ,189
83
83
  clitt/core/tui/mselect/menu_select.py,sha256=059o7lN81dAO5su7iO2tzIjRpmoerRekGXzFlWNGw5w,6176
84
84
  clitt/core/tui/mselect/mselect.py,sha256=2vuIHjbjBQq0XtIUKxX5ku7hPv3iLBwgEX4Sa82cOc8,1059
85
- clitt/core/tui/table/__init__.py,sha256=PqbtbZNr2NdkmlY1iK_uGE9p-zYrFPqQZ9kfeY0yPiY,176
86
- clitt/core/tui/table/table_renderer.py,sha256=qOkcmG7LWYzI8-qTkAVTNogSIr-S7lND41c7hvV3suw,8270
87
- hspylib_clitt-0.9.34.dist-info/METADATA,sha256=D7b2w0lR9ZIBGUT5ZW3PWOmWzkiPdWp8aP1Ushaaf-s,1728
88
- hspylib_clitt-0.9.34.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
89
- hspylib_clitt-0.9.34.dist-info/top_level.txt,sha256=vrnpkFU7dZ-vH7x5xdcY1vJSuboTqPBUcc3jD6SJkAo,6
90
- hspylib_clitt-0.9.34.dist-info/RECORD,,
85
+ clitt/core/tui/table/__init__.py,sha256=mvfSa2YH2ml5rYKyrr5VEZKddVSJgWbNSybC9_Ahzj4,176
86
+ clitt/core/tui/table/table_renderer.py,sha256=ER8QvMdLu5sWdciOqPGseepCVZXxYd89J8J_Ku1Kg4Q,9061
87
+ hspylib_clitt-0.9.36.dist-info/METADATA,sha256=kWfcJoRaL6dgiXZ1gdaesShlHUGqAp5q_6j01NJ4CFM,1728
88
+ hspylib_clitt-0.9.36.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
89
+ hspylib_clitt-0.9.36.dist-info/top_level.txt,sha256=vrnpkFU7dZ-vH7x5xdcY1vJSuboTqPBUcc3jD6SJkAo,6
90
+ hspylib_clitt-0.9.36.dist-info/RECORD,,