lyrpy 0.0.2__tar.gz

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 (42) hide show
  1. lyrpy-0.0.2/LICENSE +19 -0
  2. lyrpy-0.0.2/PKG-INFO +19 -0
  3. lyrpy-0.0.2/README.md +5 -0
  4. lyrpy-0.0.2/data/text.txt +1 -0
  5. lyrpy-0.0.2/pyproject.toml +18 -0
  6. lyrpy-0.0.2/setup.cfg +4 -0
  7. lyrpy-0.0.2/src/lyr/LUConsole.py +402 -0
  8. lyrpy-0.0.2/src/lyr/LUConst.py +45 -0
  9. lyrpy-0.0.2/src/lyr/LUDateTime.py +207 -0
  10. lyrpy-0.0.2/src/lyr/LUDecotators.py +418 -0
  11. lyrpy-0.0.2/src/lyr/LUDict.py +117 -0
  12. lyrpy-0.0.2/src/lyr/LUDoc.py +61 -0
  13. lyrpy-0.0.2/src/lyr/LUErrors.py +80 -0
  14. lyrpy-0.0.2/src/lyr/LUFile.py +1174 -0
  15. lyrpy-0.0.2/src/lyr/LUFileUtils.py +486 -0
  16. lyrpy-0.0.2/src/lyr/LULog.py +2249 -0
  17. lyrpy-0.0.2/src/lyr/LUNetwork.py +277 -0
  18. lyrpy-0.0.2/src/lyr/LUNumUtils.py +305 -0
  19. lyrpy-0.0.2/src/lyr/LUObjects.py +208 -0
  20. lyrpy-0.0.2/src/lyr/LUObjectsYT.py +829 -0
  21. lyrpy-0.0.2/src/lyr/LUParserARG.py +365 -0
  22. lyrpy-0.0.2/src/lyr/LUParserINI.py +371 -0
  23. lyrpy-0.0.2/src/lyr/LUParserREG.py +510 -0
  24. lyrpy-0.0.2/src/lyr/LUProc.py +110 -0
  25. lyrpy-0.0.2/src/lyr/LUQThread.py +139 -0
  26. lyrpy-0.0.2/src/lyr/LUQTimer.py +197 -0
  27. lyrpy-0.0.2/src/lyr/LUSheduler.py +940 -0
  28. lyrpy-0.0.2/src/lyr/LUStrDecode.py +223 -0
  29. lyrpy-0.0.2/src/lyr/LUStrUtils.py +633 -0
  30. lyrpy-0.0.2/src/lyr/LUSupport.py +124 -0
  31. lyrpy-0.0.2/src/lyr/LUThread.py +176 -0
  32. lyrpy-0.0.2/src/lyr/LUTimer.py +139 -0
  33. lyrpy-0.0.2/src/lyr/LUVersion.py +380 -0
  34. lyrpy-0.0.2/src/lyr/LUYouTube.py +204 -0
  35. lyrpy-0.0.2/src/lyr/LUos.py +797 -0
  36. lyrpy-0.0.2/src/lyr/LUsys.py +47 -0
  37. lyrpy-0.0.2/src/lyr/__init__.py +21 -0
  38. lyrpy-0.0.2/src/lyr/__main__.py +19 -0
  39. lyrpy-0.0.2/src/lyrpy.egg-info/PKG-INFO +19 -0
  40. lyrpy-0.0.2/src/lyrpy.egg-info/SOURCES.txt +41 -0
  41. lyrpy-0.0.2/src/lyrpy.egg-info/dependency_links.txt +1 -0
  42. lyrpy-0.0.2/src/lyrpy.egg-info/top_level.txt +1 -0
lyrpy-0.0.2/LICENSE ADDED
@@ -0,0 +1,19 @@
1
+ Copyright (c) 2018 The Python Packaging Authority
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in all
11
+ copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
+ SOFTWARE.
lyrpy-0.0.2/PKG-INFO ADDED
@@ -0,0 +1,19 @@
1
+ Metadata-Version: 2.1
2
+ Name: lyrpy
3
+ Version: 0.0.2
4
+ Summary: lyrpy
5
+ Author-email: lisitsinyr <lisitsinyr@gmail.com>
6
+ Project-URL: Homepage, https://github.com/lisitsinyr/TOOLS_PY
7
+ Project-URL: Issues, https://github.com/lisitsinyr/TOOLS_PY/issues
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: License :: OSI Approved :: MIT License
10
+ Classifier: Operating System :: OS Independent
11
+ Requires-Python: >=3.8
12
+ Description-Content-Type: text/markdown
13
+ License-File: LICENSE
14
+
15
+ TOOLS_PY
16
+ --------
17
+
18
+ This is a simple example package. You can use
19
+ [GitHub-flavored Markdown](https://guides.github.com/features/mastering-markdown/)
lyrpy-0.0.2/README.md ADDED
@@ -0,0 +1,5 @@
1
+ TOOLS_PY
2
+ --------
3
+
4
+ This is a simple example package. You can use
5
+ [GitHub-flavored Markdown](https://guides.github.com/features/mastering-markdown/)
@@ -0,0 +1 @@
1
+ Hello World!
@@ -0,0 +1,18 @@
1
+ [project]
2
+ name = "lyrpy"
3
+ version = "0.0.2"
4
+ authors = [
5
+ { name="lisitsinyr", email="lisitsinyr@gmail.com" },
6
+ ]
7
+ description = "lyrpy"
8
+ readme = "README.md"
9
+ requires-python = ">=3.8"
10
+ classifiers = [
11
+ "Programming Language :: Python :: 3",
12
+ "License :: OSI Approved :: MIT License",
13
+ "Operating System :: OS Independent",
14
+ ]
15
+
16
+ [project.urls]
17
+ Homepage = "https://github.com/lisitsinyr/TOOLS_PY"
18
+ Issues = "https://github.com/lisitsinyr/TOOLS_PY/issues"
lyrpy-0.0.2/setup.cfg ADDED
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -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 lyr.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
@@ -0,0 +1,45 @@
1
+ """LUConst.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
+ LUConst.py
13
+
14
+ =======================================================
15
+ """
16
+
17
+ #------------------------------------------
18
+ # БИБЛИОТЕКИ python
19
+ #------------------------------------------
20
+
21
+ #------------------------------------------
22
+ # БИБЛИОТЕКИ сторонние
23
+ #------------------------------------------
24
+
25
+ #------------------------------------------
26
+ # БИБЛИОТЕКИ LU
27
+ #------------------------------------------
28
+
29
+ #-------------------------------------------------------------------------------
30
+ #
31
+ #-------------------------------------------------------------------------------
32
+ def main ():
33
+ #beginfunction
34
+ print('main LUConst.py ...')
35
+ #endfunction
36
+
37
+ #------------------------------------------
38
+ #
39
+ #------------------------------------------
40
+ #beginmodule
41
+ if __name__ == "__main__":
42
+ main()
43
+ #endif
44
+
45
+ #endmodule