hspylib-clitt 0.9.122__py3-none-any.whl → 0.9.123__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.122
1
+ 0.9.123
clitt/__init__.py CHANGED
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.122
3
+ # hspylib-clitt v0.9.123
4
4
  #
5
5
  # Package: main.clitt
6
6
  """Package initialization."""
@@ -10,4 +10,4 @@ __all__ = [
10
10
  'core',
11
11
  'utils'
12
12
  ]
13
- __version__ = '0.9.122'
13
+ __version__ = '0.9.123'
clitt/addons/__init__.py CHANGED
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.122
3
+ # hspylib-clitt v0.9.123
4
4
  #
5
5
  # Package: main.clitt.addons
6
6
  """Package initialization."""
@@ -9,4 +9,4 @@ __all__ = [
9
9
  'appman',
10
10
  'widman'
11
11
  ]
12
- __version__ = '0.9.122'
12
+ __version__ = '0.9.123'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.122
3
+ # hspylib-clitt v0.9.123
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.122'
13
+ __version__ = '0.9.123'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.122
3
+ # hspylib-clitt v0.9.123
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.122'
11
+ __version__ = '0.9.123'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.122
3
+ # hspylib-clitt v0.9.123
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.122'
14
+ __version__ = '0.9.123'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.122
3
+ # hspylib-clitt v0.9.123
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.122'
14
+ __version__ = '0.9.123'
clitt/core/__init__.py CHANGED
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.122
3
+ # hspylib-clitt v0.9.123
4
4
  #
5
5
  # Package: main.clitt.core
6
6
  """Package initialization."""
@@ -12,4 +12,4 @@ __all__ = [
12
12
  'term',
13
13
  'tui'
14
14
  ]
15
- __version__ = '0.9.122'
15
+ __version__ = '0.9.123'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.122
3
+ # hspylib-clitt v0.9.123
4
4
  #
5
5
  # Package: main.clitt.core.exception
6
6
  """Package initialization."""
@@ -8,4 +8,4 @@
8
8
  __all__ = [
9
9
  'exceptions'
10
10
  ]
11
- __version__ = '0.9.122'
11
+ __version__ = '0.9.123'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.122
3
+ # hspylib-clitt v0.9.123
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.122'
12
+ __version__ = '0.9.123'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.122
3
+ # hspylib-clitt v0.9.123
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.122'
12
+ __version__ = '0.9.123'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.122
3
+ # hspylib-clitt v0.9.123
4
4
  #
5
5
  # Package: main.clitt.core.icons.font_awesome
6
6
  """Package initialization."""
@@ -15,4 +15,4 @@ __all__ = [
15
15
  'trickplay_icons',
16
16
  'widget_icons'
17
17
  ]
18
- __version__ = '0.9.122'
18
+ __version__ = '0.9.123'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.122
3
+ # hspylib-clitt v0.9.123
4
4
  #
5
5
  # Package: main.clitt.core.term
6
6
  """Package initialization."""
@@ -11,4 +11,4 @@ __all__ = [
11
11
  'screen',
12
12
  'terminal'
13
13
  ]
14
- __version__ = '0.9.122'
14
+ __version__ = '0.9.123'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.122
3
+ # hspylib-clitt v0.9.123
4
4
  #
5
5
  # Package: main.clitt.core.tui
6
6
  """Package initialization."""
@@ -17,4 +17,4 @@ __all__ = [
17
17
  'tui_component',
18
18
  'tui_preferences'
19
19
  ]
20
- __version__ = '0.9.122'
20
+ __version__ = '0.9.123'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.122
3
+ # hspylib-clitt v0.9.123
4
4
  #
5
5
  # Package: main.clitt.core.tui.line_input
6
6
  """Package initialization."""
@@ -9,4 +9,4 @@ __all__ = [
9
9
  'keyboard_input',
10
10
  'line_input'
11
11
  ]
12
- __version__ = '0.9.122'
12
+ __version__ = '0.9.123'
@@ -91,17 +91,19 @@ class KeyboardInput(TUIComponent):
91
91
  def __init__(
92
92
  self,
93
93
  prompt: str = "",
94
+ placeholder: str = "",
94
95
  prompt_color: VtColor = VtColor.NC,
95
96
  text_color: VtColor = VtColor.NC,
96
97
  navbar_enable: bool = False,
97
98
  ):
98
99
  super().__init__(prompt)
100
+ self._placeholder: str = placeholder
99
101
  self._prompt_color: VtColor = prompt_color
100
102
  self._text_color: VtColor = text_color
101
103
  self._navbar_enable: bool = navbar_enable
102
104
  self._input_index: int = 0
103
105
  self._input_text: str = ""
104
- self._tab_complete: str = ""
106
+ self._suggestion: str = ""
105
107
  self._HISTORY[-1] = ""
106
108
  self._HIST_INDEX = max(0, len(self._HISTORY) - 1)
107
109
 
@@ -126,6 +128,7 @@ class KeyboardInput(TUIComponent):
126
128
  elif keypress == Keyboard.VK_ESC:
127
129
  self._input_text = None
128
130
 
131
+ self._terminal.cursor.erase(Direction.RIGHT)
129
132
  self.writeln("%NC%")
130
133
 
131
134
  return self._input_text
@@ -153,9 +156,13 @@ class KeyboardInput(TUIComponent):
153
156
  Terminal.set_show_cursor(False)
154
157
  self.cursor.restore()
155
158
  self.write(f"{self._prompt_color.placeholder}{self.title}{self._text_color.placeholder}")
156
- self.write(self._input_text)
157
- # Write the tab complete option
158
- self._write_hint()
159
+ if self._input_text:
160
+ self.write(self._input_text)
161
+ self._write_suggestion()
162
+ else:
163
+ self.write(f"%GRAY%{self._placeholder}%NC%")
164
+ self._terminal.cursor.erase(Direction.DOWN)
165
+ self.cursor.move(len(self._placeholder), Direction.LEFT)
159
166
  self._re_render = False
160
167
  self._set_cursor_pos()
161
168
  Terminal.set_show_cursor()
@@ -170,11 +177,11 @@ class KeyboardInput(TUIComponent):
170
177
  if self._input_index > 0:
171
178
  self._input_index = max(0, self._input_index - 1)
172
179
  self._update_input(
173
- self._input_text[: self._input_index] + self._input_text[1 + self._input_index :]
180
+ self._input_text[: self._input_index] + self._input_text[1 + self._input_index:]
174
181
  )
175
182
  case Keyboard.VK_DELETE:
176
183
  self._update_input(
177
- self._input_text[: self._input_index] + self._input_text[1 + self._input_index :]
184
+ self._input_text[: self._input_index] + self._input_text[1 + self._input_index:]
178
185
  )
179
186
  case Keyboard.VK_CTRL_R:
180
187
  self.reset()
@@ -195,13 +202,16 @@ class KeyboardInput(TUIComponent):
195
202
  case Keyboard.VK_END:
196
203
  self._input_index = self.length
197
204
  case Keyboard.VK_TAB:
198
- self._update_input(self._input_text + self._tab_complete)
205
+ self._update_input(self._input_text + self._suggestion)
199
206
  self._input_index = self.length
200
207
  case _ as key if key.val.isprintable():
208
+ text: str = key.val
209
+ while (key := Keyboard.wait_keystroke(False)) != Keyboard.VK_NONE:
210
+ if key.val and key.val.isprintable():
211
+ text += key.val
201
212
  self._update_input(
202
- self._input_text[: self._input_index] + key.val + self._input_text[self._input_index :]
203
- )
204
- self._input_index += 1
213
+ self._input_text[: self._input_index] + text + self._input_text[self._input_index:])
214
+ self._input_index += len(text)
205
215
  case _ as key if key in Keyboard.break_keys():
206
216
  self._done = True
207
217
  case _:
@@ -250,7 +260,7 @@ class KeyboardInput(TUIComponent):
250
260
  return text
251
261
  return edt_text
252
262
 
253
- def _write_hint(self) -> None:
263
+ def _write_suggestion(self) -> None:
254
264
  """TODO """
255
265
  edt_text: str = self._input_text
256
266
  filtered: list[str] = list(filter(lambda h: h.startswith(edt_text), self._HISTORY))
@@ -269,4 +279,4 @@ class KeyboardInput(TUIComponent):
269
279
  else:
270
280
  self._terminal.cursor.erase(Direction.DOWN)
271
281
 
272
- self._tab_complete = hint
282
+ self._suggestion = hint
@@ -19,13 +19,18 @@ from typing import Optional
19
19
 
20
20
 
21
21
  def line_input(
22
- prompt: str = "", prompt_color: VtColor = VtColor.NC, text_color: VtColor = VtColor.NC, navbar_enable: bool = False
22
+ prompt: str = "",
23
+ placeholder: str = "",
24
+ prompt_color: VtColor = VtColor.NC,
25
+ text_color: VtColor = VtColor.NC,
26
+ navbar_enable: bool = False,
23
27
  ) -> Optional[str | Keyboard]:
24
28
  """Read a string from standard input.
25
29
  :param prompt: The message to be displayed to the user.
30
+ :param placeholder: The placeholder text.
26
31
  :param prompt_color: The color of the prompt text.
27
32
  :param text_color: The color of the input text.
28
33
  :param navbar_enable: Whether to display the navbar or not.
29
34
  """
30
- ptt = KeyboardInput(prompt, prompt_color, text_color, navbar_enable)
35
+ ptt = KeyboardInput(prompt, placeholder, prompt_color, text_color, navbar_enable)
31
36
  return ptt.execute()
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.122
3
+ # hspylib-clitt v0.9.123
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.122'
12
+ __version__ = '0.9.123'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.122
3
+ # hspylib-clitt v0.9.123
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.122'
14
+ __version__ = '0.9.123'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.122
3
+ # hspylib-clitt v0.9.123
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.122'
16
+ __version__ = '0.9.123'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.122
3
+ # hspylib-clitt v0.9.123
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.122'
19
+ __version__ = '0.9.123'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.122
3
+ # hspylib-clitt v0.9.123
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.122'
12
+ __version__ = '0.9.123'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.122
3
+ # hspylib-clitt v0.9.123
4
4
  #
5
5
  # Package: main.clitt.core.tui.table
6
6
  """Package initialization."""
@@ -9,4 +9,4 @@ __all__ = [
9
9
  'table_enums',
10
10
  'table_renderer'
11
11
  ]
12
- __version__ = '0.9.122'
12
+ __version__ = '0.9.123'
clitt/utils/__init__.py CHANGED
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.122
3
+ # hspylib-clitt v0.9.123
4
4
  #
5
5
  # Package: main.clitt.utils
6
6
  """Package initialization."""
@@ -8,4 +8,4 @@
8
8
  __all__ = [
9
9
  'git_utils'
10
10
  ]
11
- __version__ = '0.9.122'
11
+ __version__ = '0.9.123'
@@ -0,0 +1,353 @@
1
+ Metadata-Version: 2.1
2
+ Name: hspylib-clitt
3
+ Version: 0.9.123
4
+ Summary: HsPyLib - CLI Terminal Tools
5
+ Home-page: https://github.com/yorevs/hspylib
6
+ Author: Hugo Saporetti Junior
7
+ Author-email: yorevs@hotmail.com
8
+ License: MIT
9
+ Project-URL: GitHub, https://github.com/yorevs/hspylib
10
+ Project-URL: PyPi, https://pypi.org/project/hspylib-clitt/
11
+ Keywords: cli,clitt,terminal,tui,manager,application,widgets
12
+ Platform: Darwin
13
+ Platform: Linux
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Programming Language :: Python :: 3.10
16
+ Classifier: Operating System :: MacOS :: MacOS X
17
+ Classifier: Operating System :: POSIX :: Linux
18
+ Classifier: Operating System :: Unix
19
+ Classifier: Development Status :: 3 - Alpha
20
+ Classifier: Environment :: Console
21
+ Classifier: Natural Language :: English
22
+ Classifier: Topic :: Terminals
23
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
24
+ Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
25
+ Classifier: Intended Audience :: Developers
26
+ Requires-Python: >=3.10
27
+ Description-Content-Type: text/markdown
28
+ Requires-Dist: hspylib
29
+ Requires-Dist: pyperclip
30
+ Requires-Dist: emoji
31
+ Requires-Dist: urllib3 <2.0.0
32
+
33
+ <img src="https://iili.io/HYBJFA7.png" width="64" height="64" align="right" />
34
+
35
+ # HomeSetup Python Library
36
+ >
37
+ > Because your Python code is not JUST a script !
38
+
39
+ [![PyPi](https://badgen.net/badge/icon/python?icon=pypi&label)](https://pypi.org/project/hspylib)
40
+ [![Gitter](https://badgen.net/badge/icon/gitter?icon=gitter&label)](https://gitter.im/hspylib/community)
41
+ [![Donate](https://badgen.net/badge/paypal/donate/yellow)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=J5CDEFLF6M3H4)
42
+ [![License](https://badgen.net/badge/license/MIT/gray)](LICENSE.md)
43
+ [![Release](https://badgen.net/badge/release/v0.9.123/gray)](docs/CHANGELOG.md#unreleased)
44
+ [![build-and-test](https://github.com/yorevs/hspylib/actions/workflows/build-and-test.yml/badge.svg)](https://github.com/yorevs/hspylib/actions/workflows/build-and-test.yml)
45
+
46
+ HsPyLib is not just a Python library; it's a gateway to elevating your programming experience to new heights. Built on
47
+ established principles like **SOLID**, **DRY** (Don't Repeat Yourself), **KISS** (Keep It Simple, Stupid), and **YAGNI**
48
+ (You Ain’t Gonna Need It), HsPyLib offers a wealth of frameworks and features. It empowers you to craft sophisticated
49
+ Python3 applications, adhering to the philosophy that code should not merely be a simple script - it should be a part
50
+ of the 'PYCSNBASS' (Python Code Should Not Be A Simple Script) mindset.
51
+
52
+ > This project is a part of the [HomeSetup](https://github.com/yorevs/homesetup) project.
53
+
54
+ ## Key Features
55
+
56
+ - Seamless installation process.
57
+ - Application manager offering a helpful scaffold for Python applications.
58
+ - Widgets manager for running both 'built-in' and custom Python widgets.
59
+ - Improved TUI (Text User Interface) helpers and input methods to enhance your User Experience with terminal applications.
60
+ - CRUD (Create, Read, Update, Delete) framework aiding with databases, repositories, and services.
61
+ - HTTP request helpers for simplified communication.
62
+ - Support for enabling Properties and AppConfigs using popular extensions like .properties, toml, yml, and more.
63
+ - Code rigorously tested and consistently adhering to Pylint standards.
64
+ - Utilizes the Gradle build system with numerous extensions.
65
+ - Diverse set of demos to facilitate a deeper understanding of the library.
66
+ - AI model integrations (currently supporting OpenAI).
67
+
68
+ > Create beautiful menu-select inputs
69
+
70
+ ```python
71
+ class SelectableItem:
72
+ def __init__(self, name: str, value: str):
73
+ self.name = name
74
+ self.value = value
75
+
76
+ def __str__(self):
77
+ return f"Name: {self.name} Value: {self.value}"
78
+
79
+ def __repr__(self):
80
+ return str(self)
81
+
82
+
83
+ if __name__ == "__main__":
84
+ quantity = 22
85
+ digits = len(str(quantity))
86
+ it = [SelectableItem(f"Item-{n:>0{digits}}", f"Value-{n:>0{digits}}") for n in range(1, quantity)]
87
+ sel = mselect(it)
88
+ print(str(sel))
89
+ ```
90
+
91
+ ![MenuSelect](https://iili.io/HYBFh74.png "MenuSelect")
92
+
93
+ > And create beautiful menu-choose inputs
94
+
95
+ ```python
96
+ class ChooseableItem:
97
+ def __init__(self, name: str, value: str):
98
+ self.name = name
99
+ self.value = value
100
+
101
+ def __str__(self):
102
+ return f"Name: {self.name} Value: {self.value}"
103
+
104
+ def __repr__(self):
105
+ return str(self)
106
+
107
+
108
+ if __name__ == "__main__":
109
+ quantity = 22
110
+ digits = len(str(quantity))
111
+ it = [ChooseableItem(f"Item-{n:>0{digits}}", f"Value-{n:>0{digits}}") for n in range(1, quantity)]
112
+ sel = mchoose(it, [n % 2 == 0 for n in range(1, quantity)])
113
+ print(str(sel))
114
+ ```
115
+
116
+ ![MenuChoose](https://iili.io/HYBFwp2.png "MenuChoose")
117
+
118
+ > And also, create beautiful form inputs
119
+
120
+ ```python
121
+ from clitt.core.tui.minput.input_validator import InputValidator
122
+ from clitt.core.tui.minput.minput import MenuInput, minput
123
+
124
+ if __name__ == "__main__":
125
+ # fmt: off
126
+ form_fields = MenuInput.builder() \
127
+ .field() \
128
+ .label('letters') \
129
+ .validator(InputValidator.letters()) \
130
+ .build() \
131
+ .field() \
132
+ .label('word') \
133
+ .validator(InputValidator.words()) \
134
+ .build() \
135
+ .field() \
136
+ .label('number') \
137
+ .validator(InputValidator.numbers()) \
138
+ .min_max_length(1, 4) \
139
+ .build() \
140
+ .field() \
141
+ .label('masked') \
142
+ .itype('masked') \
143
+ .value('|##::##::## @@') \
144
+ .build() \
145
+ .field() \
146
+ .label('selectable') \
147
+ .itype('select') \
148
+ .value('one|two|three') \
149
+ .build() \
150
+ .field() \
151
+ .label('checkbox') \
152
+ .itype('checkbox') \
153
+ .build() \
154
+ .field() \
155
+ .label('password') \
156
+ .itype('password') \
157
+ .validator(InputValidator.anything()) \
158
+ .min_max_length(4, 8) \
159
+ .build() \
160
+ .field() \
161
+ .label('read-only') \
162
+ .access_type('read-only') \
163
+ .value('READ-ONLY') \
164
+ .build() \
165
+ .build()
166
+ # fmt: on
167
+
168
+ result = minput(form_fields)
169
+ print(result.__dict__ if result else "None")
170
+ ```
171
+
172
+ ![MenuInput](https://iili.io/HYBFVrG.png "MenuInput")
173
+
174
+ > Or even, create nice dashboards:
175
+
176
+ ```python
177
+ if __name__ == "__main__":
178
+ # fmt: off
179
+ dashboard_items = MenuDashBoard.builder() \
180
+ .item() \
181
+ .icon(DashboardIcons.POWER) \
182
+ .tooltip('Do something') \
183
+ .on_trigger(lambda: print('Something')) \
184
+ .build() \
185
+ .item() \
186
+ .icon(DashboardIcons.MOVIE) \
187
+ .tooltip('Another something') \
188
+ .on_trigger(lambda: print('Another')) \
189
+ .build() \
190
+ .item() \
191
+ .icon(DashboardIcons.NOTIFICATION) \
192
+ .tooltip('Notify something') \
193
+ .on_trigger(lambda: print('Notification')) \
194
+ .build() \
195
+ .item() \
196
+ .icon(DashboardIcons.LIST) \
197
+ .tooltip('List everything') \
198
+ .on_trigger(lambda: print('List')) \
199
+ .build() \
200
+ .item() \
201
+ .icon(DashboardIcons.DATABASE) \
202
+ .tooltip('Database console') \
203
+ .on_trigger(lambda: print('Database')) \
204
+ .build() \
205
+ .item() \
206
+ .icon(DashboardIcons.EXIT) \
207
+ .tooltip('Exit application') \
208
+ .on_trigger(lambda: print('Exit')) \
209
+ .build() \
210
+ .build()
211
+ # fmt: on
212
+
213
+ result = mdashboard(dashboard_items)
214
+ ```
215
+
216
+ ![MenuDashboard](https://iili.io/HYBFX2f.png "MenuDashboard")
217
+
218
+ > And even more, create beautiful menus !
219
+
220
+ ```bash
221
+ if __name__ == "__main__":
222
+ # fmt: off
223
+ main_menu = TUIMenuFactory \
224
+ .create_main_menu('TUI Main Menu', tooltip='Test Terminal UI Menus') \
225
+ .with_item('Sub-Menu-1') \
226
+ .with_action("DO IT 1", "Let's do it") \
227
+ .on_trigger(lambda x: print("ACTION 1", x)) \
228
+ .with_view("Just a View 1", "Show the view 1") \
229
+ .on_render("MY BEAUTIFUL VIEW 1") \
230
+ .with_action("Back", "Back to the previous menu") \
231
+ .on_trigger(TUIMenuUi.back) \
232
+ .then() \
233
+ .with_item('Sub-Menu-2') \
234
+ .with_action("DO IT 2", "Let's do it too") \
235
+ .on_trigger(lambda x: print("ACTION 2", x)) \
236
+ .with_view("Just a View 2", "Show the view 2") \
237
+ .on_render("MY BEAUTIFUL VIEW 2") \
238
+ .with_action("Back", "Back to the previous menu") \
239
+ .on_trigger(TUIMenuUi.back) \
240
+ .then() \
241
+ .then() \
242
+ .build()
243
+ # fmt: on
244
+
245
+ TUIMenuUi(main_menu, "TUI Main Menu").execute()
246
+ ```
247
+
248
+ ![Menus](https://iili.io/JAGQJkJ.png "Menus")
249
+
250
+ ## PyPi Modules
251
+
252
+ - [A Pivotal Cloud Foundry](https://pypi.org/project/hspylib-cfman) application tool.
253
+ - [A CLI Terminal](https://pypi.org/project/hspylib-clitt) tools.
254
+ - [Datasource](https://pypi.org/project/hspylib-datasource) framework.
255
+ - [A Firebase](https://pypi.org/project/hspylib-firebase) integration tool.
256
+ - [A PyQt](https://pypi.org/project/hspylib-hqt) application framework.
257
+ - [Core](https://pypi.org/project/hspylib) HomeSetup library.
258
+ - [A Kafka manager](https://pypi.org/project/hspylib-kafman) application tool.
259
+ - [A System Settings](https://pypi.org/project/hspylib-kafman) application tool.
260
+ - [A Vault](https://pypi.org/project/hspylib-vault) application tool.
261
+
262
+ ## Installation
263
+
264
+ ### Requirements
265
+
266
+ #### Python
267
+
268
+ - Python 3.10 and higher
269
+
270
+ #### Operating Systems
271
+
272
+ - Darwin
273
+ + High Sierra and higher
274
+ - Linux
275
+ + Ubuntu 16 and higher
276
+ + CentOS 7 and higher
277
+ + Fedora 31 and higher
278
+
279
+ You may want to install HsPyLib on other OS's and it will probably work, but there are no guarantees that it
280
+ **WILL ACTUALLY WORK**.
281
+
282
+ #### Required software
283
+
284
+ The following software are required:
285
+
286
+ - Git (To clone the github repository)
287
+ - Gradle (To build the HsPyLib project)
288
+
289
+ There are some python dependencies, but they will be automatically downloaded when the build runs.
290
+
291
+ ### PyPi
292
+
293
+ To install HsPyLib from PyPi issue the command:
294
+
295
+ `# python3 -m pip install hspylib`
296
+
297
+ To upgrade HsPyLib use the command:
298
+
299
+ `# python3 -m pip install hspylib --upgrade`
300
+
301
+ Additional modules that can also be installed:
302
+
303
+ - [CLItt](https://pypi.org/project/hspylib-clitt) : `# python3 -m pip install hspylib-clitt` to install HsPyLib CLI terminal tools.
304
+ - [Firebase](https://pypi.org/project/hspylib-firebase) : `# python3 -m pip install hspylib-firebase` to install HsPyLib Firebase application.
305
+ - [Vault](https://pypi.org/project/hspylib-vault) : `# python3 -m pip install hspylib-vault` to install HsPyLib Vault application.
306
+ - [CFMan](https://pypi.org/project/hspylib-cfman) : `# python3 -m pip install hspylib-cfman` to install CloudFoundry manager.
307
+ - [Kafman](https://pypi.org/project/hspylib-kafman) : `# python3 -m pip install hspylib-kafman` to install Kafka manager.
308
+ - [Datasource](https://pypi.org/project/hspylib-datasource) : `# python3 -m pip install hspylib-datasource` to install datasource helpers.
309
+ - [HQT](https://pypi.org/project/hspylib-hqt) : `# python3 -m pip install hspylib-hqt` to install HsPyLib PyQt framework.
310
+
311
+ ### GitHub
312
+
313
+ To clone HsPyLib into your local machine type the command:
314
+
315
+ `# git clone https://github.com/yorevs/hspylib.git`
316
+
317
+ ## Documentation
318
+
319
+ The API documentation can be found [here](docs/api/index.html)
320
+
321
+ ## Support
322
+
323
+ > Your support and contributions are greatly appreciated in helping us improve and enhance HomeSetup. Together, we can
324
+ make it even better!
325
+
326
+ You can support HomeSetup by [donating](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=J5CDEFLF6M3H4)
327
+ or contributing code. Feel free to contact me for further details. When making code contributions, please make sure to
328
+ review our [guidelines](docs/CONTRIBUTING.md) and adhere to our [code of conduct](docs/CODE_OF_CONDUCT.md).
329
+
330
+ [!["Buy Me A Coffee"](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/yorevs)
331
+
332
+ You can also sponsor it by using our [GitHub Sponsors](https://github.com/sponsors/yorevs) page.
333
+
334
+ This project is already supported by:
335
+
336
+ <a href="https://www.jetbrains.com/community/opensource/?utm_campaign=opensource&utm_content=approved&utm_medium=email&utm_source=newsletter&utm_term=jblogo#support">
337
+ <img src="https://resources.jetbrains.com/storage/products/company/brand/logos/jb_beam.png" width="120" height="120">
338
+ </a>
339
+
340
+ Thank you <3 !!
341
+
342
+ ## Known Issues
343
+
344
+ - [In-Progress] We are aware that there is a problems when using python@3.12 and we are already working on a fix.
345
+
346
+ ## Contacts
347
+
348
+ - Documentation: [API](docs/api/index.html)
349
+ - License: [MIT](LICENSE.md)
350
+ - Issue tracker: [HSPyLib-Issues](https://github.com/yorevs/hspylib/issues)
351
+ - Official chat: [HSPyLib](https://gitter.im/hspylib/community)
352
+ - Contact: [yorevs](https://www.reddit.com/user/yorevs)
353
+ - Mailto: [yorevs](mailto:yorevs@hotmail.com)
@@ -1,13 +1,13 @@
1
- clitt/.version,sha256=psoa2LcWlkgJEL_h2Lfd5RW-bXdsE-LJH9zoHfXHFIg,8
1
+ clitt/.version,sha256=o-IaDKb62u3JYdgWVpmqDuzA3CixksVYBBySqQ-WNwc,8
2
2
  clitt/__classpath__.py,sha256=_woVRfXoFlEHBbtg-we43FJOrIlvdyumxsUV2IloHhE,884
3
- clitt/__init__.py,sha256=ZLiHXlaVSLlg11kNfKx0DO92ddaJFc3aAQs0BpR4UlM,184
3
+ clitt/__init__.py,sha256=JP3SnYfkuj5bfjTqXfscOjbv3wq7DNUSkISFIjG2k-U,184
4
4
  clitt/__main__.py,sha256=43Ugh79L57yhShIvtVqQwrQvsLy2rOtYgVm6g9Nsz_o,5321
5
5
  clitt/welcome.txt,sha256=z72ySJw-1VQHvWmd8pZ95P6t4zEkIWGbqTRT83P2hJw,169
6
- clitt/addons/__init__.py,sha256=OyYZvffqGSfST7woytpx1I4al9KUD2kjDCey25Bmkqo,179
7
- clitt/addons/appman/__init__.py,sha256=dqMI3saB8fJaGZrjcL0uVqjP8uk7WYKMxn-PSA9rTh4,210
6
+ clitt/addons/__init__.py,sha256=Kb5XEiO8jZbT5QT26Oy8SmFjQAQkQpsxptERdRnMA_U,179
7
+ clitt/addons/appman/__init__.py,sha256=sVFroG4TiZCguXe3otp5OURSTUx8Qub-Klm5Gt-pYAI,210
8
8
  clitt/addons/appman/appman.py,sha256=m3cUZzeNuZtky6U26q5way7xMNcLxKeQEdfpGXzboL8,13154
9
9
  clitt/addons/appman/appman_enums.py,sha256=DL99b1gQXdTF-u0VkyknMQDqROHomzN4J570B1NYbqs,874
10
- clitt/addons/appman/templates/__init__.py,sha256=qfNpAoWYiUWn3xXBVHUzEZINKODWG4W4m_xYgMGwihk,173
10
+ clitt/addons/appman/templates/__init__.py,sha256=3-fC7PgtlXPc-n2cnA7y7uYL-N7e2DvMK8Fmbk0sSYI,173
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,24 +20,24 @@ clitt/addons/appman/templates/run.sh.tpl,sha256=2xpuHjZP9-7j14dAA2CqPm4G2xtnuenf
20
20
  clitt/addons/appman/templates/test_main.py.tpl,sha256=y5Bo0ku6FP67WjHfYUF4Kt9tdQ67MSlN6LgoF_NUm-U,1241
21
21
  clitt/addons/appman/templates/usage.txt.tpl,sha256=R0e48HCeD7PDbWnX6HGIjz6gr_hBdp-zK6V42U1Aexw,217
22
22
  clitt/addons/appman/templates/widget.py.tpl,sha256=-4q8hYP1Xdx8ttexeHuFnjMH_DoBANEoN9f59jzHDR4,1670
23
- clitt/addons/widman/__init__.py,sha256=blaiKbxh3ugHPJmsgSxhBkJTblQeBQM6nGZDV50Iovs,223
23
+ clitt/addons/widman/__init__.py,sha256=ruK9XyrkhPm3fsA7zLHWguPzm7465EpzFkHEiJoN9bw,223
24
24
  clitt/addons/widman/widget.py,sha256=mOTpd1O3Cf37Ulz_nKSw9sU_gkE5X6wD28mIupOfVSM,1922
25
25
  clitt/addons/widman/widget_entry.py,sha256=jFvfV2xX_0-Qdj3dDp_UdDtWoy5YkJr0x84X629_iGY,1358
26
26
  clitt/addons/widman/widman.py,sha256=-PGBiWHxK7YJE632DRXisrUumVKES8U_Pemb_7xsFGM,5274
27
- clitt/addons/widman/widgets/__init__.py,sha256=qdD4arFxPD-Q4DH_rqvUnzpz30cZcltS7T_hnTeRTZo,254
27
+ clitt/addons/widman/widgets/__init__.py,sha256=0tEVQc1uBZ7HrbHFT_-bC0ZcMxfebugV0T0SPYeJTo8,254
28
28
  clitt/addons/widman/widgets/widget_free.py,sha256=z_4-1cZG0l_LUEDvtjU5dLbCG2XzqD_Rnw49T45_awc,3995
29
29
  clitt/addons/widman/widgets/widget_punch.py,sha256=L8nIrQGtMsEOr6o3t2-BlSBhca3rB0b_hKuYQrYyeTU,10607
30
30
  clitt/addons/widman/widgets/widget_send_msg.py,sha256=SjK3w36uvsVoOeVs5JiKmlqO9GhQn5dYvIqmbNdkFaQ,11058
31
31
  clitt/addons/widman/widgets/widget_time_calc.py,sha256=kfwwDzp8E-4uE2jt3v_DIZA8RSbK9vQWVOqqTpOvYYo,5037
32
- clitt/core/__init__.py,sha256=MOdBXglYzR4JujiXv9P0vwKlWLh7zqKZxbgeB1lCrog,224
32
+ clitt/core/__init__.py,sha256=Zjbo3sfv8jGYU9YvXuxC8gZrLIkEW1LdNVc-rKRD4o8,224
33
33
  clitt/core/preferences.py,sha256=-A5fewJQY0rOqUIrlNKycdW5rpf60-GniHUE03jNWgY,3142
34
- clitt/core/exception/__init__.py,sha256=bWq4LC3GyiMqzvd1nKk9lAeIvuV7ptItjI8WeYwQqhQ,176
34
+ clitt/core/exception/__init__.py,sha256=G-G9tYx1R4OiEvp3spTgnktvoHCxUjMx4uZ_-awk3qU,176
35
35
  clitt/core/exception/exceptions.py,sha256=WBY5vDokKkrrdc4UjJZdEhxzdYjtFo-HuAx3EmXwanA,478
36
- clitt/core/icons/__init__.py,sha256=H8Sl0DtwJ_qo-hXkK6yMYZHOuxMXkEuPFzFxgfPKmNs,189
37
- clitt/core/icons/emojis/__init__.py,sha256=JT6TXVt4lpuLXjsA_bMquxfTYZciMruIG0GZ8WeL7gU,196
36
+ clitt/core/icons/__init__.py,sha256=4ipFGUiC36w2RLIEvRy0qs5DIkSpKNwAoqb9p2kaSsI,189
37
+ clitt/core/icons/emojis/__init__.py,sha256=FWDhghV5_6hYavLnxCOKlRV3JpmjZVEnvcGaAgvW5w8,196
38
38
  clitt/core/icons/emojis/emojis.py,sha256=pNh3lEk-dNZlDS8hReK4FMyZq0Pz9zU1BXT-C2QyNno,1111
39
39
  clitt/core/icons/emojis/face_smiling.py,sha256=rpMozq6ahAh6sw-7xVOUL3-ViIZsquamDrdvvwUtacU,1271
40
- clitt/core/icons/font_awesome/__init__.py,sha256=OyQY_UjEK-Z0YU6FWormneVljdsrz3RFrPzjA492b2o,325
40
+ clitt/core/icons/font_awesome/__init__.py,sha256=-S-1Sgmb9gV1Fw8_tboAc9IBcSTtLG6XkDJHUgxvc1g,325
41
41
  clitt/core/icons/font_awesome/app_icons.py,sha256=6Voo5dDbyeYN8ZLawm6jUQwq62Cfe669bQ1HOtAYB4A,1702
42
42
  clitt/core/icons/font_awesome/awesome.py,sha256=sR7H2U2TQSDf9ZtmRsU5EOef-gYboEmsob1TG3VYRQE,2243
43
43
  clitt/core/icons/font_awesome/dashboard_icons.py,sha256=iaAHme-DBlcvER5-R33w80x5vOOBDvebp332B6ql5zA,3122
@@ -46,34 +46,34 @@ clitt/core/icons/font_awesome/game_icons.py,sha256=veZuoz3Dz7ubzH3hoAoNzD9WLkuSu
46
46
  clitt/core/icons/font_awesome/nav_icons.py,sha256=D75lokoZUHAIH4WLb0Xj0DWvGLoOoXTNKpteQpL4iPk,1183
47
47
  clitt/core/icons/font_awesome/trickplay_icons.py,sha256=NGItIGhqYBamyxNT5kJmqV1jjrD5rXPT-DRsy3jKwCE,1081
48
48
  clitt/core/icons/font_awesome/widget_icons.py,sha256=YO3eMOjAeBszLNkH998G0rMjTuUfJ3t3t3T_KqYOeQc,1026
49
- clitt/core/term/__init__.py,sha256=8uo6W4drV3HBlNwkxcUOPhd_62O0cXYJhIyDVtNnPyo,215
49
+ clitt/core/term/__init__.py,sha256=nY-e4mXuHMFdM2xkw-o_OpeFCXQfBN68YytxY06cVWE,215
50
50
  clitt/core/term/commons.py,sha256=_zcX6_Bzo9gnFexik1-ETggMGixgAFS6lPfGWUyLfVs,3125
51
51
  clitt/core/term/cursor.py,sha256=OC3j24mrKsz73lD6zmwec9ICdxIxfpWGBr96pzupmnk,6326
52
52
  clitt/core/term/screen.py,sha256=1lj8iwoko741favNBik9Ue6K-OCe2nrv2mprs_c9YRo,3331
53
53
  clitt/core/term/terminal.py,sha256=NBdant1M4SbwVddA2CNtLt-6gw00-XNgMUSWSX0j5GE,7724
54
- clitt/core/tui/__init__.py,sha256=Mked3zmnb_stErGV7ddDaxgRBxepk-RB8CPbgjwCvBM,333
54
+ clitt/core/tui/__init__.py,sha256=iN5Coy719CUbLPTr5_PT5n0pkXG2-OqHvvRccuMIKzc,333
55
55
  clitt/core/tui/tui_application.py,sha256=jD2_RbiUAnWtEOC6NndniFziHrhguIHx4i9T1_PuYgo,1653
56
56
  clitt/core/tui/tui_component.py,sha256=qIeGF_Dog6JuKYIaYy4sRDTDz3ai8WHSturYuh5Iy7w,4880
57
57
  clitt/core/tui/tui_preferences.py,sha256=7GbnlhjbSQjzwixbMb4HHX913dpJCPnMaryLdY7TJuI,3110
58
- clitt/core/tui/line_input/__init__.py,sha256=o5EupXCI__1D08UIzoC81rvtElKxgFpKMoOHh8eab-I,204
59
- clitt/core/tui/line_input/keyboard_input.py,sha256=wmwPYR6aGbZz2IEBSUxrfaUkF5zNgRQ1Pnl89-hDCAE,10111
60
- clitt/core/tui/line_input/line_input.py,sha256=_-TiKg0YlKnXDSi4w8rWSv2jDJB5b8-1SoT0ui2tdVA,1144
61
- clitt/core/tui/mchoose/__init__.py,sha256=CINGsHjZ1QkVovfVgILKNinr8NfGwOzRAoTo_ALFIFI,195
58
+ clitt/core/tui/line_input/__init__.py,sha256=MpC-tS_h8V2hr33u1A_GFlce8Zrj2IYPGPuHtiPLsK8,204
59
+ clitt/core/tui/line_input/keyboard_input.py,sha256=PB0waWrfdJjVO83ZB32rH_ald6EfLJhSeKIrEi6U0Fk,10653
60
+ clitt/core/tui/line_input/line_input.py,sha256=L3G1UcZii-kzfBof37B9f4qIkb_yNSipdrTzLAI9ico,1243
61
+ clitt/core/tui/mchoose/__init__.py,sha256=PGpZqU-WEh4Ww46ZhZZVXXG4itiG5Bb5eFJqK5E-Qn0,195
62
62
  clitt/core/tui/mchoose/mchoose.py,sha256=iqfyRYKLAslfFsQuZnra0lcMfx2GjZ8r4KuQrPSzAf0,1284
63
63
  clitt/core/tui/mchoose/menu_choose.py,sha256=4kRvZCFpQxFPskUS7LcpPg4FgneKxnMe8z9DLzRsqMg,7136
64
- clitt/core/tui/mdashboard/__init__.py,sha256=pB1ZnFHNuvCB6DV83CyMeJvywy7Mksj8ku1CzaGvkp8,253
64
+ clitt/core/tui/mdashboard/__init__.py,sha256=mp6Tc0QMv9tagy95cbVS2bb1QzoUB87rOXhb2PG0s9Y,253
65
65
  clitt/core/tui/mdashboard/dashboard_builder.py,sha256=RJm_XnrNJX8jE-G_a9dFEa3DDWLNxN2Xnc6HVvQV1FE,1660
66
66
  clitt/core/tui/mdashboard/dashboard_item.py,sha256=AhQm1IAj4RlHhj9AH4CHEIqX4SjrOZsGEUkwqiUs3js,888
67
67
  clitt/core/tui/mdashboard/mdashboard.py,sha256=VWzNw_bQf8sQGRXrIqvNdIxauOmYiZ_ZnX0PTr0i5-M,892
68
68
  clitt/core/tui/mdashboard/menu_dashboard.py,sha256=GxJnq_AeZJmNySoLUX3wSSfPYW3B5ip3tI4zSFNo1KQ,5612
69
- clitt/core/tui/menu/__init__.py,sha256=VPFN7BjRomgBZeW4csNnm3sG-E0hmbquYaooZs47yFQ,286
69
+ clitt/core/tui/menu/__init__.py,sha256=I6j-Qt78G9yM_CSmEPG2aYOFxeQpK89i6L5TmAufFyQ,286
70
70
  clitt/core/tui/menu/tui_menu.py,sha256=Yro2ug3MSRWA9mJiqq3Jm2FCRVZI-gc_YyxX0Fc4g4g,3574
71
71
  clitt/core/tui/menu/tui_menu_action.py,sha256=20ZfmIkKKuf_y_hBPUQRx_QPtjNvTxV-3ui9opn74Yo,1537
72
72
  clitt/core/tui/menu/tui_menu_factory.py,sha256=tsQiYJqQdAZjs5aNxlXgwHT3EueSs9mbV4-Ec9HqtRM,4590
73
73
  clitt/core/tui/menu/tui_menu_item.py,sha256=5IcDZ8MSy47WHlpTnDLty2fHjOr13CDvTGWsHU_briE,7442
74
74
  clitt/core/tui/menu/tui_menu_ui.py,sha256=BdebIp3kmycTgrcPyDk20fS1kNQwqed_hQl7TiHx9Z4,3255
75
75
  clitt/core/tui/menu/tui_menu_view.py,sha256=eGoaw_krAR5WQhqYu7fAnmuzz4ouYdWe8wUopBiZE1I,1922
76
- clitt/core/tui/minput/__init__.py,sha256=LdYYJ7NyGhbJWNPbdGaAaoBaI-3Z4cOwDla3IMERVcU,338
76
+ clitt/core/tui/minput/__init__.py,sha256=lRq8GKgpMNeYyZLqbBld5t0nbAR_2C-04qdtLNsj5Ic,338
77
77
  clitt/core/tui/minput/access_type.py,sha256=xNW-Qq0T4Je9WXG69BiTY2piFKCgAd87djam6zJeQ6Q,638
78
78
  clitt/core/tui/minput/field_builder.py,sha256=TJEoZ2X1RH3uy0zaipL_yFfAy0j7rNU-PORPZvjqAfQ,4373
79
79
  clitt/core/tui/minput/form_builder.py,sha256=XDKnDLz7UeYn9UHYCOrAFwjyR59BWnJ7XQVNdy4gf6w,2867
@@ -83,15 +83,15 @@ clitt/core/tui/minput/input_validator.py,sha256=yLnuDS5at1_COGNhljpeCkiQQpVOS5ws
83
83
  clitt/core/tui/minput/menu_input.py,sha256=KgIrhGCDegNlrcJPO_DqcuZdQJtCI85Ncgkj0Vz0hDo,12574
84
84
  clitt/core/tui/minput/minput.py,sha256=qWG5ykYd5GU_50lANJ7egrCALvxh1aGVnq9JlJKsXdE,1609
85
85
  clitt/core/tui/minput/minput_utils.py,sha256=J9iuX9lbw5RWKoEIkMMkRjfm0RcOpjZfEAQTeizwzMc,5267
86
- clitt/core/tui/mselect/__init__.py,sha256=8wx5PNfBTKCJeltBwXESQ_yc9ylkni5W5cQ1hFecqgA,195
86
+ clitt/core/tui/mselect/__init__.py,sha256=6HlTJD-RM6DF4z3f1MWv23bf15K24h0M7LM0ehVM0rU,195
87
87
  clitt/core/tui/mselect/menu_select.py,sha256=BWodSGtjaU-5jBZ8AqEbWGBZ4M71is6GDsWHG3n-yl8,6177
88
88
  clitt/core/tui/mselect/mselect.py,sha256=9O9-OKSNwCnZGYzvXhoLyT-2Ssoyg4x8N6REELdt0P8,1116
89
- clitt/core/tui/table/__init__.py,sha256=RxHZQ3uVPg73t1HPtgb5-3QUk5HTonMRcY4mMvjobZE,200
89
+ clitt/core/tui/table/__init__.py,sha256=pNNJ3xJGREZ5FokxfYCOMQ0fx2r4WDR9kdZylodvwZg,200
90
90
  clitt/core/tui/table/table_enums.py,sha256=bTIr5h8dWBUfVJTagdd2cxie6KyPJleTgcaS-t7ioX4,1282
91
91
  clitt/core/tui/table/table_renderer.py,sha256=gzvXQ7GtE1gqsLsGCcUAidv-DnS8uRUm-ksjqkmoMQs,12800
92
- clitt/utils/__init__.py,sha256=SKLrn6dwxre6F5a1isjME26Ep43I-tZS6z8g3f468yE,166
92
+ clitt/utils/__init__.py,sha256=-z-3WQUumgcq38V02qXBjeGVhX7vxt_oWD17fV5-tvo,166
93
93
  clitt/utils/git_utils.py,sha256=B-QZtRpxAXa3Cw3im5qhJTla0LrlWQouMq_-GR8SOHU,2392
94
- hspylib_clitt-0.9.122.dist-info/METADATA,sha256=ufAQLgT7bonTPR6C3a8Zis7wwmR0dXEp2RkR9sxokpw,1855
95
- hspylib_clitt-0.9.122.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
96
- hspylib_clitt-0.9.122.dist-info/top_level.txt,sha256=4aPEfxPvYp14dwV0l6cjCd90nbDutt1Yr27ZqCunZLI,11
97
- hspylib_clitt-0.9.122.dist-info/RECORD,,
94
+ hspylib_clitt-0.9.123.dist-info/METADATA,sha256=PT5Sm07m7B-w7JzcfN30y3yLalfUyS3Ael1SQW7TlUI,13043
95
+ hspylib_clitt-0.9.123.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
96
+ hspylib_clitt-0.9.123.dist-info/top_level.txt,sha256=4aPEfxPvYp14dwV0l6cjCd90nbDutt1Yr27ZqCunZLI,11
97
+ hspylib_clitt-0.9.123.dist-info/RECORD,,
@@ -1,42 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: hspylib-clitt
3
- Version: 0.9.122
4
- Summary: HsPyLib - CLI Terminal Tools
5
- Home-page: https://github.com/yorevs/hspylib
6
- Author: Hugo Saporetti Junior
7
- Author-email: yorevs@hotmail.com
8
- License: MIT
9
- Project-URL: GitHub, https://github.com/yorevs/hspylib
10
- Project-URL: PyPi, https://pypi.org/project/hspylib-clitt/
11
- Keywords: cli,clitt,terminal,tui,manager,application,widgets
12
- Platform: Darwin
13
- Platform: Linux
14
- Classifier: License :: OSI Approved :: MIT License
15
- Classifier: Programming Language :: Python :: 3.10
16
- Classifier: Operating System :: MacOS :: MacOS X
17
- Classifier: Operating System :: POSIX :: Linux
18
- Classifier: Operating System :: Unix
19
- Classifier: Development Status :: 3 - Alpha
20
- Classifier: Environment :: Console
21
- Classifier: Natural Language :: English
22
- Classifier: Topic :: Terminals
23
- Classifier: Topic :: Software Development :: Libraries :: Python Modules
24
- Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
25
- Classifier: Intended Audience :: Developers
26
- Requires-Python: >=3.10
27
- Description-Content-Type: text/markdown
28
- Requires-Dist: hspylib
29
- Requires-Dist: pyperclip
30
- Requires-Dist: emoji
31
- Requires-Dist: urllib3 <2.0.0
32
-
33
- # HsPyLib - CLI Terminal Tools
34
-
35
- ## Create professional CLI applications
36
-
37
- [![License](https://badgen.net/badge/license/MIT/gray)](LICENSE.md)
38
- [![Release](https://badgen.net/badge/release/v0.9.122/gray)](CHANGELOG.md#unreleased)
39
- [![PyPi](https://badgen.net/badge/icon/python?icon=pypi&label)](https://pypi.org/project/hspylib-clitt)
40
- [![GitHub](https://badgen.net/badge/icon/github?icon=github&label)](https://github.com/yorevs/hspylib)
41
- [![Gitter](https://badgen.net/badge/icon/gitter?icon=gitter&label)](https://gitter.im/hspylib/community)
42
- [![Donate](https://badgen.net/badge/paypal/donate/yellow)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=J5CDEFLF6M3H4)