lyrpy 2024.0.4__py3-none-any.whl → 2025.0.2__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 lyrpy might be problematic. Click here for more details.

Files changed (149) hide show
  1. SRC/LIB/__init__.py +21 -0
  2. SRC/LIB/lyrpy/LUConst.py +358 -0
  3. {lyrpy → SRC/LIB/lyrpy}/LUDateTime.py +2 -4
  4. {lyrpy → SRC/LIB/lyrpy}/LUDecotators.py +2 -3
  5. {lyrpy → SRC/LIB/lyrpy}/LUDict.py +0 -1
  6. {lyrpy → SRC/LIB/lyrpy}/LUDoc.py +4 -3
  7. {lyrpy → SRC/LIB/lyrpy}/LUErrors.py +0 -1
  8. {lyrpy → SRC/LIB/lyrpy}/LUFile.py +115 -61
  9. {lyrpy → SRC/LIB/lyrpy}/LUFileUtils.py +60 -45
  10. {lyrpy → SRC/LIB/lyrpy}/LULog.py +267 -191
  11. {lyrpy → SRC/LIB/lyrpy}/LUObjects.py +4 -4
  12. {lyrpy → SRC/LIB/lyrpy}/LUObjectsYT.py +39 -22
  13. {lyrpy → SRC/LIB/lyrpy}/LUParserARG.py +2 -3
  14. {lyrpy → SRC/LIB/lyrpy}/LUParserINI.py +8 -3
  15. {lyrpy → SRC/LIB/lyrpy}/LUParserREG.py +5 -1
  16. {lyrpy → SRC/LIB/lyrpy}/LUQThread.py +6 -4
  17. {lyrpy → SRC/LIB/lyrpy}/LUQTimer.py +5 -5
  18. {lyrpy → SRC/LIB/lyrpy}/LUSheduler.py +24 -23
  19. SRC/LIB/lyrpy/LUTelegram.py +428 -0
  20. {lyrpy → SRC/LIB/lyrpy}/LUThread.py +7 -6
  21. {lyrpy → SRC/LIB/lyrpy}/LUTimer.py +5 -3
  22. {lyrpy → SRC/LIB/lyrpy}/LUVersion.py +4 -1
  23. {lyrpy → SRC/LIB/lyrpy}/LUYouTube.py +6 -7
  24. {lyrpy → SRC/LIB/lyrpy}/LUos.py +13 -3
  25. SRC/LIB/lyrpy/__init__.py +21 -0
  26. {lyrpy → SRC/LIB/lyrpy}/__main__.py +20 -19
  27. SRC/__init__.py +0 -0
  28. SRC/lyrpy/LUConsole.py +402 -0
  29. SRC/lyrpy/LUConst.py +358 -0
  30. SRC/lyrpy/LUDateTime.py +205 -0
  31. SRC/lyrpy/LUDecotators.py +417 -0
  32. SRC/lyrpy/LUDict.py +116 -0
  33. SRC/lyrpy/LUDoc.py +62 -0
  34. SRC/lyrpy/LUErrors.py +79 -0
  35. SRC/lyrpy/LUFile.py +1228 -0
  36. SRC/lyrpy/LUFileUtils.py +501 -0
  37. SRC/lyrpy/LULog.py +2324 -0
  38. SRC/lyrpy/LUNetwork.py +277 -0
  39. SRC/lyrpy/LUNumUtils.py +305 -0
  40. SRC/lyrpy/LUObjects.py +208 -0
  41. SRC/lyrpy/LUObjectsYT.py +846 -0
  42. SRC/lyrpy/LUParserARG.py +364 -0
  43. SRC/lyrpy/LUParserINI.py +376 -0
  44. SRC/lyrpy/LUParserREG.py +514 -0
  45. SRC/lyrpy/LUProc.py +110 -0
  46. SRC/lyrpy/LUQThread.py +141 -0
  47. SRC/lyrpy/LUQTimer.py +197 -0
  48. SRC/lyrpy/LUSheduler.py +941 -0
  49. SRC/lyrpy/LUStrDecode.py +223 -0
  50. SRC/lyrpy/LUStrUtils.py +633 -0
  51. SRC/lyrpy/LUSupport.py +124 -0
  52. SRC/lyrpy/LUTelegram.py +428 -0
  53. SRC/lyrpy/LUThread.py +177 -0
  54. SRC/lyrpy/LUTimer.py +141 -0
  55. SRC/lyrpy/LUVersion.py +383 -0
  56. SRC/lyrpy/LUYouTube.py +203 -0
  57. SRC/lyrpy/LUos.py +807 -0
  58. lyrpy/LUConst.py → SRC/lyrpy/LUsys.py +12 -10
  59. SRC/lyrpy/__init__.py +21 -0
  60. lyrpy/__init__.py → SRC/lyrpy/__main__.py +2 -3
  61. TESTS/__init__.py +0 -0
  62. TESTS/test_lyrpy.py +4 -0
  63. TESTS/test_main.py +10 -0
  64. __SRC/LIB/__init__.py +0 -0
  65. __SRC/LIB/lyrpy/LUConsole.py +402 -0
  66. __SRC/LIB/lyrpy/LUConst.py +358 -0
  67. __SRC/LIB/lyrpy/LUDateTime.py +205 -0
  68. __SRC/LIB/lyrpy/LUDecotators.py +417 -0
  69. __SRC/LIB/lyrpy/LUDict.py +116 -0
  70. __SRC/LIB/lyrpy/LUDoc.py +62 -0
  71. __SRC/LIB/lyrpy/LUErrors.py +79 -0
  72. __SRC/LIB/lyrpy/LUFile.py +1228 -0
  73. __SRC/LIB/lyrpy/LUFileUtils.py +501 -0
  74. __SRC/LIB/lyrpy/LULog.py +2324 -0
  75. __SRC/LIB/lyrpy/LUNetwork.py +277 -0
  76. __SRC/LIB/lyrpy/LUNumUtils.py +305 -0
  77. __SRC/LIB/lyrpy/LUObjects.py +208 -0
  78. __SRC/LIB/lyrpy/LUObjectsYT.py +846 -0
  79. __SRC/LIB/lyrpy/LUParserARG.py +364 -0
  80. __SRC/LIB/lyrpy/LUParserINI.py +376 -0
  81. __SRC/LIB/lyrpy/LUParserREG.py +514 -0
  82. __SRC/LIB/lyrpy/LUProc.py +110 -0
  83. __SRC/LIB/lyrpy/LUQThread.py +141 -0
  84. __SRC/LIB/lyrpy/LUQTimer.py +197 -0
  85. __SRC/LIB/lyrpy/LUSheduler.py +941 -0
  86. __SRC/LIB/lyrpy/LUStrDecode.py +223 -0
  87. __SRC/LIB/lyrpy/LUStrUtils.py +633 -0
  88. __SRC/LIB/lyrpy/LUSupport.py +124 -0
  89. __SRC/LIB/lyrpy/LUTelegram.py +428 -0
  90. __SRC/LIB/lyrpy/LUThread.py +177 -0
  91. __SRC/LIB/lyrpy/LUTimer.py +141 -0
  92. __SRC/LIB/lyrpy/LUVersion.py +383 -0
  93. __SRC/LIB/lyrpy/LUYouTube.py +203 -0
  94. __SRC/LIB/lyrpy/LUos.py +807 -0
  95. __SRC/LIB/lyrpy/LUsys.py +47 -0
  96. __SRC/LIB/lyrpy/__init__.py +21 -0
  97. __SRC/LIB/lyrpy/__main__.py +20 -0
  98. __SRC/__init__.py +0 -0
  99. ____src/__init__.py +0 -0
  100. ____src/lyrpy/LUConsole.py +402 -0
  101. ____src/lyrpy/LUConst.py +358 -0
  102. ____src/lyrpy/LUDateTime.py +205 -0
  103. ____src/lyrpy/LUDecotators.py +417 -0
  104. ____src/lyrpy/LUDict.py +116 -0
  105. ____src/lyrpy/LUDoc.py +62 -0
  106. ____src/lyrpy/LUErrors.py +79 -0
  107. ____src/lyrpy/LUFile.py +1228 -0
  108. ____src/lyrpy/LUFileUtils.py +501 -0
  109. ____src/lyrpy/LULog.py +2324 -0
  110. ____src/lyrpy/LUNetwork.py +277 -0
  111. ____src/lyrpy/LUNumUtils.py +305 -0
  112. ____src/lyrpy/LUObjects.py +208 -0
  113. ____src/lyrpy/LUObjectsYT.py +846 -0
  114. ____src/lyrpy/LUParserARG.py +364 -0
  115. ____src/lyrpy/LUParserINI.py +376 -0
  116. ____src/lyrpy/LUParserREG.py +514 -0
  117. ____src/lyrpy/LUProc.py +110 -0
  118. ____src/lyrpy/LUQThread.py +141 -0
  119. ____src/lyrpy/LUQTimer.py +197 -0
  120. ____src/lyrpy/LUSheduler.py +941 -0
  121. ____src/lyrpy/LUStrDecode.py +223 -0
  122. ____src/lyrpy/LUStrUtils.py +633 -0
  123. ____src/lyrpy/LUSupport.py +124 -0
  124. ____src/lyrpy/LUTelegram.py +428 -0
  125. ____src/lyrpy/LUThread.py +177 -0
  126. ____src/lyrpy/LUTimer.py +141 -0
  127. ____src/lyrpy/LUVersion.py +383 -0
  128. ____src/lyrpy/LUYouTube.py +203 -0
  129. ____src/lyrpy/LUos.py +807 -0
  130. ____src/lyrpy/LUsys.py +47 -0
  131. ____src/lyrpy/__init__.py +21 -0
  132. ____src/lyrpy/__main__.py +20 -0
  133. lyrpy-2025.0.2.dist-info/METADATA +21 -0
  134. lyrpy-2025.0.2.dist-info/RECORD +145 -0
  135. {lyrpy-2024.0.4.dist-info → lyrpy-2025.0.2.dist-info}/WHEEL +1 -1
  136. lyrpy-2025.0.2.dist-info/top_level.txt +2 -0
  137. lyrpy-2024.0.4.data/data/data/text.txt +0 -1
  138. lyrpy-2024.0.4.dist-info/METADATA +0 -44
  139. lyrpy-2024.0.4.dist-info/RECORD +0 -38
  140. lyrpy-2024.0.4.dist-info/top_level.txt +0 -1
  141. {lyrpy → SRC/LIB/lyrpy}/LUConsole.py +0 -0
  142. {lyrpy → SRC/LIB/lyrpy}/LUNetwork.py +0 -0
  143. {lyrpy → SRC/LIB/lyrpy}/LUNumUtils.py +0 -0
  144. {lyrpy → SRC/LIB/lyrpy}/LUProc.py +0 -0
  145. {lyrpy → SRC/LIB/lyrpy}/LUStrDecode.py +0 -0
  146. {lyrpy → SRC/LIB/lyrpy}/LUStrUtils.py +0 -0
  147. {lyrpy → SRC/LIB/lyrpy}/LUSupport.py +0 -0
  148. {lyrpy → SRC/LIB/lyrpy}/LUsys.py +0 -0
  149. {lyrpy-2024.0.4.dist-info → lyrpy-2025.0.2.dist-info/licenses}/LICENSE +0 -0
@@ -0,0 +1,47 @@
1
+ """LUsys.py"""
2
+ # -*- coding: UTF-8 -*-
3
+ __annotations__ = """
4
+ =======================================================
5
+ Copyright (c) 2023-2024
6
+ Author:
7
+ Lisitsin Y.R.
8
+ Project:
9
+ LU_PY
10
+ Python (LU)
11
+ Module:
12
+ LUsys.py
13
+
14
+ =======================================================
15
+ """
16
+
17
+ #------------------------------------------
18
+ # БИБЛИОТЕКИ python
19
+ #------------------------------------------
20
+
21
+ #------------------------------------------
22
+ # БИБЛИОТЕКИ сторонние
23
+ #------------------------------------------
24
+
25
+ #------------------------------------------
26
+ # БИБЛИОТЕКИ LU
27
+ #------------------------------------------
28
+
29
+ # sys.getrefcount(IvanFranko)
30
+
31
+ #---------------------------------------------------------
32
+ # main
33
+ #---------------------------------------------------------
34
+ def main ():
35
+ #beginfunction
36
+ ...
37
+ #endfunction
38
+
39
+ #---------------------------------------------------------
40
+ #
41
+ #---------------------------------------------------------
42
+ #beginmodule
43
+ if __name__ == "__main__":
44
+ main()
45
+ #endif
46
+
47
+ #endmodule
@@ -0,0 +1,21 @@
1
+ import os
2
+
3
+ print("import lyrpy")
4
+
5
+ #-------------------------------------------------------------------------------
6
+ #
7
+ #-------------------------------------------------------------------------------
8
+ def main ():
9
+ #beginfunction
10
+ print("Hello, **lyrpy**")
11
+ #endfunction
12
+
13
+ #------------------------------------------
14
+ #
15
+ #------------------------------------------
16
+ #beginmodule
17
+ if __name__ == "__main__":
18
+ main()
19
+ #endif
20
+
21
+ #endmodule
@@ -0,0 +1,20 @@
1
+ import io
2
+ from pathlib import Path
3
+
4
+ #-------------------------------------------------------------------------------
5
+ #
6
+ #-------------------------------------------------------------------------------
7
+ def main ():
8
+ #beginfunction
9
+ print("Hello, **World**")
10
+ #endfunction
11
+
12
+ #------------------------------------------
13
+ #
14
+ #------------------------------------------
15
+ #beginmodule
16
+ if __name__ == "__main__":
17
+ main()
18
+ #endif
19
+
20
+ #endmodule
__SRC/__init__.py ADDED
File without changes
____src/__init__.py ADDED
File without changes
@@ -0,0 +1,402 @@
1
+ """LUConsole.py"""
2
+ # -*- coding: UTF-8 -*-
3
+ __annotations__ = """
4
+ =======================================================
5
+ Copyright (c) 2023-2024
6
+ Author:
7
+ Lisitsin Y.R.
8
+ Project:
9
+ LU_PY
10
+ Python (LU)
11
+ Module:
12
+ LUConsole.py
13
+
14
+ =======================================================
15
+ """
16
+
17
+ #------------------------------------------
18
+ # БИБЛИОТЕКИ python
19
+ #------------------------------------------
20
+ import sys
21
+ import enum
22
+
23
+ #------------------------------------------
24
+ # БИБЛИОТЕКИ сторонние
25
+ #------------------------------------------
26
+ from colorama import Fore, Back, Style
27
+
28
+ #------------------------------------------
29
+ # БИБЛИОТЕКИ LU
30
+ #------------------------------------------
31
+ import lyrpy.LUSupport as LUSupport
32
+
33
+ #------------------------------------------
34
+ # CONST
35
+ #------------------------------------------
36
+ sBEGIN_hex = '\x1b['
37
+ sBEGIN_Unicode = '\u001b'
38
+ sBEGIN_oct = '\33['
39
+ sBEGIN = sBEGIN_hex
40
+ sEND = 'm'
41
+ sRESET = sBEGIN_oct+'0'+sEND # сброс к начальным значениям
42
+ sRESET_1 = sBEGIN_oct+'0'+';'+sEND # вернуться к начальному стилю
43
+ sRESET_2 = sBEGIN_oct+sEND
44
+
45
+ sR = '\r'
46
+ sB = '\b' # символ возврата
47
+
48
+ sERASE_LINE = '\x1b[2K' # erase line command
49
+ sCURSOR_UP_ONE = '\033[K'
50
+
51
+ #--------------------------------------
52
+ # Изменения стиля (Styles)
53
+ #--------------------------------------
54
+ cS_BOLD = '01' # Жирный
55
+ cS_02 = '02' # Блеклый
56
+ cS_ITALIC = '03' # Курсив
57
+ cS_UNDERLINE = '04' # Подчёркнутый
58
+ cS_05 = '05' # Мигание
59
+ cS_06 = '06'
60
+ cS_REVERSE = '07' # Реверс
61
+ cS_08 = '08'
62
+ cS_09 = '09' # Зачёркнутый
63
+ @enum.unique
64
+ class cStyles(enum.Enum):
65
+ """cStyles"""
66
+ BOLD = cS_BOLD
67
+ ITALIC = cS_ITALIC
68
+ UNDERLINE = cS_UNDERLINE
69
+ REVERSE = cS_REVERSE
70
+ #endclass
71
+ #--------------------------------------
72
+ cStylesList = [cStyles.BOLD, cStyles.ITALIC, cStyles.UNDERLINE, cStyles.REVERSE]
73
+
74
+ #--------------------------------------
75
+ # Изменения цвета шрифта
76
+ #--------------------------------------
77
+ cFG8_BLACK = '30' # Чёрный
78
+ cFG8_RED = '31' # Красный
79
+ cFG8_GREEN = '32' # Зелёный
80
+ cFG8_YELLOW = '33' # Жёлтый
81
+ cFG8_BLUE = '34' # Синий
82
+ cFG8_MAGENTA = '35' # Фиолетовый (пурпурный цвет)
83
+ cFG8_CYAN = '36' # Бирюзовый (голубой цвет)
84
+ cFG8_WHITE = '37' # Белый
85
+ @enum.unique
86
+ class cFG8(enum.Enum):
87
+ """cFG8"""
88
+ BLACK = cFG8_BLACK
89
+ RED = cFG8_RED
90
+ GREEN = cFG8_GREEN
91
+ YELLOW = cFG8_YELLOW
92
+ BLUE = cFG8_BLUE
93
+ MAGENTA = cFG8_MAGENTA
94
+ CYAN = cFG8_CYAN
95
+ WHITE = cFG8_WHITE
96
+ #endclass
97
+ #--------------------------------------
98
+ cFG8List = [cFG8.BLACK, cFG8.RED, cFG8.GREEN, cFG8.YELLOW, cFG8.BLUE, cFG8.MAGENTA, cFG8.CYAN, cFG8.WHITE]
99
+
100
+ #--------------------------------------
101
+ # Изменения цвета фона
102
+ #--------------------------------------
103
+ cBG8_BLACK = '40' # Чёрный
104
+ cBG8_RED = '41' # Красный
105
+ cBG8_GREEN = '42' # Зелёный
106
+ cBG8_YELLOW = '43' # Жёлтый
107
+ cBG8_BLUE = '44' # Синий
108
+ cBG8_MAGENTA = '45' # Фиолетовый (пурпурный цвет)
109
+ cBG8_CYAN = '46' # Бирюзовый (голубой цвет)
110
+ cBG8_WHITE = '47' # Белый
111
+ @enum.unique
112
+ class cBG8(enum.Enum):
113
+ """cBG8"""
114
+ BLACK = cBG8_BLACK
115
+ RED = cBG8_RED
116
+ GREEN = cBG8_GREEN
117
+ YELLOW = cBG8_YELLOW
118
+ BLUE = cBG8_BLUE
119
+ MAGENTA = cBG8_MAGENTA
120
+ CYAN = cBG8_CYAN
121
+ WHITE = cBG8_WHITE
122
+ #endclass
123
+ #--------------------------------------
124
+ cBG8List = [cBG8.BLACK, cBG8.RED, cBG8.GREEN, cBG8.YELLOW, cBG8.BLUE, cBG8.MAGENTA, cBG8.CYAN, cBG8.WHITE]
125
+
126
+ #--------------------------------------
127
+ # Избранные цвета 8
128
+ #--------------------------------------
129
+ # красный текст - для обозначения ошибок
130
+ # \033[ 01; 03; 04; 07; '__'; '__' m
131
+ ERROR_ESC = '\033['+'31'+'m'
132
+ ERROR_s = ''
133
+ ERROR_cFG8 = cFG8_RED
134
+ ERROR_cBG8 = ''
135
+ # жирный красный текст - для обозначения критических ошибок
136
+ ERROR_CRITICAL_ESC = '\033['+'01'+'31'+'m'
137
+ ERROR_CRITICAL_s = cS_BOLD
138
+ ERROR_CRITICAL_cFG8 = cFG8_RED
139
+ ERROR_CRITICAL_cBG8 = ''
140
+ # зеленый текст - успешное выполнение
141
+ SUCCESS_ESC = '\033['+'32'+'m'
142
+ SUCCESS_s = ''
143
+ SUCCESS_cFG8 = cFG8_GREEN
144
+ SUCCESS_sBG8 = ''
145
+ # красный курсив - текст ошибки
146
+ ERROR_TEXT_ESC = '\033['+'03'+'31'+'m'
147
+ ERROR_TEXT_s = cS_ITALIC
148
+ ERROR_TEXT_cFG8 = cFG8_RED
149
+ ERROR_TEXT_cBG8 = ''
150
+ # выделение основного, как будто жёлтым маркером
151
+ MARKER_ESC = '\033['+'43'+'m'
152
+ MARKER_s = ''
153
+ MARKER_cFG8 = ''
154
+ MARKER_cBG8 = cBG8_YELLOW
155
+ # жирный белый на черном
156
+ BOLD_ESC = '\033['+'01'+'31'+'40'+'m'
157
+ BOLD_s = cS_BOLD
158
+ BOLD_cFG8 = cFG8_WHITE
159
+ BOLD_cBG8 = cBG8_BLACK
160
+
161
+ #--------------------------------------
162
+ # Больше цветов: аж целых 256
163
+ # Совсем много цветов
164
+ # Этот формат не всегда поддерживается стандартными консолями.
165
+ #--------------------------------------
166
+ # Некоторые будут негодовать: "256 цветов и нет моего любимого терракотового, какой ужас!".
167
+ # Для таких ценителей существует формат, который уже поддерживает 24 битные цвета (3 канала RGB по 256 градаций).
168
+ # Для не ценителей поясню, что терракотовый кодируется как — (201, 100, 59) или #c9643b.
169
+ # Синтаксис в этом формате выглядит вот так:
170
+ # цвет текста
171
+ # \33[+38;2;⟨r⟩;⟨g⟩;⟨b⟩ m
172
+ # цвет фона
173
+ # \33[+48;2;⟨r⟩;⟨g⟩;⟨b⟩ m
174
+ #--------------------------------------
175
+ # \033[ 01; 03; 04; 07; 38;05;222; 48;05;22 m
176
+ #--------------------------------------
177
+ # Изменения цвета шрифта
178
+ #--------------------------------------
179
+ sFG256_BEGIN = '38;05;'
180
+ #--------------------------------------
181
+ # Изменения цвета фона
182
+ #--------------------------------------
183
+ sBG256_BEGIN = '48;05;'
184
+ #--------------------------------------
185
+ #--------------------------------------
186
+ # Избранные цвета 256
187
+ #--------------------------------------
188
+ sFG256_01 = '38;05;'+'15'
189
+ sBG256_01 = '48;05;'+'21'
190
+ sColor256_01 = sBEGIN_oct+cS_BOLD+';'+sFG256_01+';'+sBG256_01+sEND
191
+
192
+ #--------------------------------------
193
+ # colorama
194
+ #--------------------------------------
195
+ # список доступных фронтальных цветов
196
+ #--------------------------------------
197
+ FOREGROUND = [Fore.BLACK, Fore.RED, Fore.GREEN, Fore.YELLOW, Fore.BLUE, Fore.MAGENTA, Fore.CYAN, Fore.WHITE]
198
+ #--------------------------------------
199
+ # список доступных фоновых цветов
200
+ #--------------------------------------
201
+ BACKGROUND = [Back.BLACK, Back.RED, Back.GREEN, Back.YELLOW, Back.BLUE, Back.MAGENTA, Back.CYAN, Back.WHITE]
202
+ #
203
+ BRIGHTNESS = [Style.DIM, Style.NORMAL, Style.BRIGHT]
204
+
205
+ #-------------------------------------------------
206
+ # FormatColorStr (s, AStyles:()='', AFG8:str='', ABG8:str='', AFG256:str='', ABG256:str='', AESC:str=''):
207
+ #-------------------------------------------------
208
+ def FormatColorStr (s, **kwargs) -> str:
209
+ """FormatColorStr"""
210
+ #beginfunction
211
+ AStyles:() = kwargs.get('AStyles')
212
+ AFG8:str = kwargs.get ('AFG8')
213
+ ABG8:str = kwargs.get ('ABG8')
214
+ AFG256:str = kwargs.get ('AFG256')
215
+ ABG256:str = kwargs.get ('ABG256')
216
+ AESC:str = kwargs.get ('AESC')
217
+
218
+ LResult = ''
219
+ if AESC is not None:
220
+ LResult = LResult + AESC + s + sRESET
221
+ else:
222
+ LStyles = LUSupport.TupleToStr (AStyles)
223
+ # --------------------------------------------
224
+ if len(LStyles) > 0 \
225
+ or AFG8 is not None or ABG8 is not None \
226
+ or AFG256 is not None or ABG256 is not None:
227
+ LResult = sBEGIN
228
+ # --------------------------------------------
229
+ if len (LStyles) > 0:
230
+ LResult = LResult + LStyles
231
+ # --------------------------------------------
232
+ if AFG8 is not None:
233
+ if len (LStyles) > 0:
234
+ LResult = LResult + ';' + AFG8
235
+ else:
236
+ LResult = LResult + AFG8
237
+ # --------------------------------------------
238
+ if ABG8 is not None:
239
+ if len (LStyles) > 0 or AFG8 is not None:
240
+ LResult = LResult + ';' + ABG8
241
+ else:
242
+ LResult = LResult + ABG8
243
+ # --------------------------------------------
244
+ if AFG8 is None and ABG8 is None:
245
+ if AFG256 is not None:
246
+ if len (LStyles) > 0:
247
+ LResult = LResult + ';' + sFG256_BEGIN + AFG256
248
+ else:
249
+ LResult = LResult + sFG256_BEGIN +AFG256
250
+ # --------------------------------------------
251
+ if ABG256 is not None:
252
+ if len (LStyles) > 0 or AFG256 is not None:
253
+ LResult = LResult + ';' + sBG256_BEGIN + ABG256
254
+ else:
255
+ LResult = LResult + sBG256_BEGIN + ABG256
256
+ # --------------------------------------------
257
+ if len (LResult) > 0:
258
+ LResult = LResult + sEND + s + sRESET
259
+ else:
260
+ LResult = s
261
+ return LResult
262
+ #endfunction
263
+
264
+ #-------------------------------------------------
265
+ # Write (s, AStyles:()='', AFG8:str='', ABG8:str='', AFG256:str='', ABG256:str='', AESC:str=''):
266
+ #-------------------------------------------------
267
+ def Write (s, **kwargs):
268
+ """Write"""
269
+ #beginfunction
270
+ _s = s
271
+ if LUSupport.IsTerminal():
272
+ sys.stdout.write (_s)
273
+ else:
274
+ if len(kwargs):
275
+ __s = FormatColorStr(_s, **kwargs)
276
+ sys.stdout.write (__s)
277
+ else:
278
+ sys.stdout.write (_s)
279
+ #endif
280
+ #endif
281
+ sys.stdout.flush ()
282
+ #endfunction
283
+
284
+ #-------------------------------------------------
285
+ # WriteLN (s, AStyles:()='', AFG8:str='', ABG8:str='', AFG256:str='', ABG256:str='', AESC:str=''):
286
+ #-------------------------------------------------
287
+ def WriteLN (s, **kwargs):
288
+ """WriteLN"""
289
+ #beginfunction
290
+ Write (s, **kwargs)
291
+ sys.stdout.write ('\n')
292
+ sys.stdout.flush ()
293
+ #endfunction
294
+
295
+ #-------------------------------------------------
296
+ # ClearLine
297
+ #-------------------------------------------------
298
+ def ClearLine():
299
+ """ClearLine"""
300
+ #beginfunction
301
+ # if ISTerminal():
302
+ # sys.stdout.write ('\r')
303
+ # else:
304
+ # sys.stdout.write(sCURSOR_UP_ONE)
305
+ # sys.stdout.write(sERASE_LINE+'\r')
306
+ # #endif
307
+ sys.stdout.write ('\r')
308
+ #endfunction
309
+
310
+ #-------------------------------------------------
311
+ # ReadParam
312
+ #-------------------------------------------------
313
+ def ReadParam (ATitle: str, ADefault: str) -> str:
314
+ """ReadParam"""
315
+ #beginfunction
316
+ WriteLN ('Введите ('+ATitle+')['+ADefault+']: ', AStyles=cS_ITALIC, AFG8=cFG8_RED, ABG8=cBG8_WHITE)
317
+ LReadParam: str = input ("")
318
+ if LReadParam == "":
319
+ LReadParam = ADefault
320
+ #endif
321
+ return LReadParam
322
+ #endfunction
323
+
324
+ #--------------------------------------------------------------------
325
+ # Pause
326
+ #--------------------------------------------------------------------
327
+ def Pause (Aprompt: str = ''):
328
+ """Pause"""
329
+ #beginfunction
330
+ if Aprompt == '':
331
+ Aprompt = "Press any key to continue"
332
+ #endif
333
+ if Aprompt != '':
334
+ WriteLN (Aprompt, AStyles=cS_ITALIC, AFG8=cFG8_RED, ABG8=cBG8_WHITE)
335
+ #endif
336
+ x = sys.stdin.read (1)
337
+ #endfunction
338
+
339
+ #--------------------------------------------------------------------
340
+ # pause2
341
+ #--------------------------------------------------------------------
342
+ def pause2 (ADelay:int=0, Aprompt:str=''):
343
+ """pause2"""
344
+ #beginfunction
345
+ LDelay = ADelay
346
+ LPrompt = Aprompt
347
+ LLoop = 0
348
+ LCounter = 0
349
+ LInterval = 0.2
350
+ LPause = -1
351
+ if Aprompt == '':
352
+ LPrompt = "Press any key to continue"
353
+ #endif
354
+ if LPrompt != '':
355
+ WriteLN(LPrompt)
356
+ #endif
357
+ if LDelay > 0:
358
+ LDelay = LDelay + 1
359
+ while LPause == -1 and LDelay > 1.0 + LInterval:
360
+ LDelay = LDelay - LInterval
361
+ #LCounter = "[" + int(LDelay) + "]:"
362
+ #Write (LCounter)
363
+ #sleep (LInterval)
364
+ #for loop in range (1, len(LCounter), 1):
365
+ # Write (chr(8)+" "+chr(8))
366
+ #endfor
367
+ #if kbhit():
368
+ #LPause = sys.stdin.read(1)
369
+ #endif
370
+ #endwhile
371
+ else:
372
+ LPause = sys.stdin.read(1)
373
+ #endif
374
+ #endfunction
375
+
376
+ #------------------------------------------------------
377
+ # PasswdFromKbd
378
+ #------------------------------------------------------
379
+ #def PasswdFromKbd(Prompt = ''):
380
+ ##beginfunction
381
+ # WriteLN ("w/n", "")
382
+ # WriteLN ("w+/n", "$Admin_Password_Desc")
383
+ # PasswdFromKbd = fnGetM("*")
384
+ #endfunction
385
+
386
+ #------------------------------------------------------
387
+ # main
388
+ #------------------------------------------------------
389
+ def main ():
390
+ #beginfunction
391
+ print('main LUConsole.py ...')
392
+ #endfunction
393
+
394
+ #------------------------------------------
395
+ #
396
+ #------------------------------------------
397
+ #beginmodule
398
+ if __name__ == "__main__":
399
+ main()
400
+ #endif
401
+
402
+ #endmodule