lyrpy 2025.0.1__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 (109) hide show
  1. SRC/LIB/__init__.py +21 -0
  2. SRC/lyrpy/LUConsole.py +402 -0
  3. SRC/lyrpy/LUConst.py +358 -0
  4. SRC/lyrpy/LUDateTime.py +205 -0
  5. SRC/lyrpy/LUDecotators.py +417 -0
  6. SRC/lyrpy/LUDict.py +116 -0
  7. SRC/lyrpy/LUDoc.py +62 -0
  8. SRC/lyrpy/LUErrors.py +79 -0
  9. SRC/lyrpy/LUFile.py +1228 -0
  10. SRC/lyrpy/LUFileUtils.py +501 -0
  11. SRC/lyrpy/LULog.py +2324 -0
  12. SRC/lyrpy/LUNetwork.py +277 -0
  13. SRC/lyrpy/LUNumUtils.py +305 -0
  14. SRC/lyrpy/LUObjects.py +208 -0
  15. SRC/lyrpy/LUObjectsYT.py +846 -0
  16. SRC/lyrpy/LUParserARG.py +364 -0
  17. SRC/lyrpy/LUParserINI.py +376 -0
  18. SRC/lyrpy/LUParserREG.py +514 -0
  19. SRC/lyrpy/LUProc.py +110 -0
  20. SRC/lyrpy/LUQThread.py +141 -0
  21. SRC/lyrpy/LUQTimer.py +197 -0
  22. SRC/lyrpy/LUSheduler.py +941 -0
  23. SRC/lyrpy/LUStrDecode.py +223 -0
  24. SRC/lyrpy/LUStrUtils.py +633 -0
  25. SRC/lyrpy/LUSupport.py +124 -0
  26. SRC/lyrpy/LUTelegram.py +428 -0
  27. SRC/lyrpy/LUThread.py +177 -0
  28. SRC/lyrpy/LUTimer.py +141 -0
  29. SRC/lyrpy/LUVersion.py +383 -0
  30. SRC/lyrpy/LUYouTube.py +203 -0
  31. SRC/lyrpy/LUos.py +807 -0
  32. SRC/lyrpy/LUsys.py +47 -0
  33. SRC/lyrpy/__init__.py +21 -0
  34. SRC/lyrpy/__main__.py +20 -0
  35. __SRC/LIB/__init__.py +0 -0
  36. __SRC/LIB/lyrpy/LUConsole.py +402 -0
  37. __SRC/LIB/lyrpy/LUConst.py +358 -0
  38. __SRC/LIB/lyrpy/LUDateTime.py +205 -0
  39. __SRC/LIB/lyrpy/LUDecotators.py +417 -0
  40. __SRC/LIB/lyrpy/LUDict.py +116 -0
  41. __SRC/LIB/lyrpy/LUDoc.py +62 -0
  42. __SRC/LIB/lyrpy/LUErrors.py +79 -0
  43. __SRC/LIB/lyrpy/LUFile.py +1228 -0
  44. __SRC/LIB/lyrpy/LUFileUtils.py +501 -0
  45. __SRC/LIB/lyrpy/LULog.py +2324 -0
  46. __SRC/LIB/lyrpy/LUNetwork.py +277 -0
  47. __SRC/LIB/lyrpy/LUNumUtils.py +305 -0
  48. __SRC/LIB/lyrpy/LUObjects.py +208 -0
  49. __SRC/LIB/lyrpy/LUObjectsYT.py +846 -0
  50. __SRC/LIB/lyrpy/LUParserARG.py +364 -0
  51. __SRC/LIB/lyrpy/LUParserINI.py +376 -0
  52. __SRC/LIB/lyrpy/LUParserREG.py +514 -0
  53. __SRC/LIB/lyrpy/LUProc.py +110 -0
  54. __SRC/LIB/lyrpy/LUQThread.py +141 -0
  55. __SRC/LIB/lyrpy/LUQTimer.py +197 -0
  56. __SRC/LIB/lyrpy/LUSheduler.py +941 -0
  57. __SRC/LIB/lyrpy/LUStrDecode.py +223 -0
  58. __SRC/LIB/lyrpy/LUStrUtils.py +633 -0
  59. __SRC/LIB/lyrpy/LUSupport.py +124 -0
  60. __SRC/LIB/lyrpy/LUTelegram.py +428 -0
  61. __SRC/LIB/lyrpy/LUThread.py +177 -0
  62. __SRC/LIB/lyrpy/LUTimer.py +141 -0
  63. __SRC/LIB/lyrpy/LUVersion.py +383 -0
  64. __SRC/LIB/lyrpy/LUYouTube.py +203 -0
  65. __SRC/LIB/lyrpy/LUos.py +807 -0
  66. __SRC/LIB/lyrpy/LUsys.py +47 -0
  67. __SRC/LIB/lyrpy/__init__.py +21 -0
  68. __SRC/LIB/lyrpy/__main__.py +20 -0
  69. __SRC/__init__.py +0 -0
  70. ____src/__init__.py +0 -0
  71. ____src/lyrpy/LUConsole.py +402 -0
  72. ____src/lyrpy/LUConst.py +358 -0
  73. ____src/lyrpy/LUDateTime.py +205 -0
  74. ____src/lyrpy/LUDecotators.py +417 -0
  75. ____src/lyrpy/LUDict.py +116 -0
  76. ____src/lyrpy/LUDoc.py +62 -0
  77. ____src/lyrpy/LUErrors.py +79 -0
  78. ____src/lyrpy/LUFile.py +1228 -0
  79. ____src/lyrpy/LUFileUtils.py +501 -0
  80. ____src/lyrpy/LULog.py +2324 -0
  81. ____src/lyrpy/LUNetwork.py +277 -0
  82. ____src/lyrpy/LUNumUtils.py +305 -0
  83. ____src/lyrpy/LUObjects.py +208 -0
  84. ____src/lyrpy/LUObjectsYT.py +846 -0
  85. ____src/lyrpy/LUParserARG.py +364 -0
  86. ____src/lyrpy/LUParserINI.py +376 -0
  87. ____src/lyrpy/LUParserREG.py +514 -0
  88. ____src/lyrpy/LUProc.py +110 -0
  89. ____src/lyrpy/LUQThread.py +141 -0
  90. ____src/lyrpy/LUQTimer.py +197 -0
  91. ____src/lyrpy/LUSheduler.py +941 -0
  92. ____src/lyrpy/LUStrDecode.py +223 -0
  93. ____src/lyrpy/LUStrUtils.py +633 -0
  94. ____src/lyrpy/LUSupport.py +124 -0
  95. ____src/lyrpy/LUTelegram.py +428 -0
  96. ____src/lyrpy/LUThread.py +177 -0
  97. ____src/lyrpy/LUTimer.py +141 -0
  98. ____src/lyrpy/LUVersion.py +383 -0
  99. ____src/lyrpy/LUYouTube.py +203 -0
  100. ____src/lyrpy/LUos.py +807 -0
  101. ____src/lyrpy/LUsys.py +47 -0
  102. ____src/lyrpy/__init__.py +21 -0
  103. ____src/lyrpy/__main__.py +20 -0
  104. {lyrpy-2025.0.1.dist-info → lyrpy-2025.0.2.dist-info}/METADATA +1 -1
  105. lyrpy-2025.0.2.dist-info/RECORD +145 -0
  106. lyrpy-2025.0.1.dist-info/RECORD +0 -43
  107. {lyrpy-2025.0.1.dist-info → lyrpy-2025.0.2.dist-info}/WHEEL +0 -0
  108. {lyrpy-2025.0.1.dist-info → lyrpy-2025.0.2.dist-info}/licenses/LICENSE +0 -0
  109. {lyrpy-2025.0.1.dist-info → lyrpy-2025.0.2.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,376 @@
1
+ """LUParserINI.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
+ LUParserINI.py
13
+
14
+ =======================================================
15
+ """
16
+
17
+ #------------------------------------------
18
+ # БИБЛИОТЕКИ python
19
+ #------------------------------------------
20
+ import configparser
21
+ import logging
22
+
23
+ #------------------------------------------
24
+ # БИБЛИОТЕКИ сторонние
25
+ #------------------------------------------
26
+
27
+ #------------------------------------------
28
+ # БИБЛИОТЕКА LU
29
+ #------------------------------------------
30
+ import lyrpy.LULog as LULog
31
+ import lyrpy.LUConst as LUConst
32
+ import lyrpy.LUFile as LUFile
33
+ import lyrpy.LUos as LUos
34
+ import lyrpy.LUStrDecode as LUStrDecode
35
+ import lyrpy.LUStrUtils as LUStrUtils
36
+
37
+ class TINIFile (configparser.ConfigParser):
38
+ """TINIFile"""
39
+ luClassName = 'TINIFile'
40
+
41
+ #--------------------------------------------------
42
+ # constructor
43
+ #--------------------------------------------------
44
+ """
45
+ class configparser.ConfigParser (
46
+ defaults=None,
47
+ dict_type=dict,
48
+ allow_no_value=False,
49
+ delimiters=('=', ':'),
50
+ comment_prefixes=('#', ';'),
51
+ inline_comment_prefixes=None,
52
+ strict=True,
53
+ empty_lines_in_values=True,
54
+ default_section=configparser.DEFAULTSECT,
55
+ interpolation=BasicInterpolation(),
56
+ converters={}
57
+ )
58
+ """
59
+ @staticmethod
60
+ def __GetINIFileName (AFileName: str) -> str:
61
+ """__GetINIFileName"""
62
+ #beginfunction
63
+ LResult = ''
64
+ P = LUFile.ExtractFileDir (AFileName)
65
+ F = LUFile.ExtractFileName (AFileName)
66
+ E = LUFile.ExtractFileExt (AFileName)
67
+ if E == '':
68
+ F = F + '.ini'
69
+ #endif
70
+ if P == '':
71
+ LWinDir = LUos.GetEnvVar (LUos.cWINDIR)
72
+ LPath = [LUos.GetCurrentDir (), LWinDir]
73
+
74
+ LList = LUFile.SearchFileDirs (LPath, F, '', '', False)
75
+ if len(LList) > 0:
76
+ LResult = LList[0]
77
+ #endif
78
+ if LResult == '':
79
+ LResult = LUFile.IncludeTrailingBackslash (LWinDir) + F
80
+ #endif
81
+ else:
82
+ LResult = LUFile.ExpandFileName (AFileName)
83
+ #endif
84
+ return LResult
85
+ #endfunction
86
+
87
+ def __init__ (self, empty_lines_in_values=True, **kwargs): # allow_no_value=True
88
+ """Constructor"""
89
+ #beginfunction
90
+ super ().__init__ (empty_lines_in_values=True, **kwargs)
91
+ self.__FSectionName: str = ''
92
+ self.__FOptionName: str = ''
93
+ self.__FOptionValue: str = ''
94
+ self.__FChangedFileINI: bool = False
95
+ self.__FFileNameINI: str = ''
96
+ #endfunction
97
+
98
+ #--------------------------------------------------
99
+ # destructor
100
+ #--------------------------------------------------
101
+ def __del__ (self):
102
+ """destructor"""
103
+ #beginfunction
104
+ LClassName = self.__class__.__name__
105
+ # s = '{} уничтожен'.format (LClassName)
106
+ # LULog.LoggerTOOLS_AddLevel (LULog.DEBUGTEXT, s)
107
+ #print (s)
108
+ #endfunction
109
+
110
+ #--------------------------------------------------
111
+ # @property ConfigParser
112
+ #--------------------------------------------------
113
+ # getter
114
+ @property
115
+ def ConfigParser(self) -> configparser.ConfigParser:
116
+ #beginfunction
117
+ return self
118
+ #endfunction
119
+
120
+ #--------------------------------------------------
121
+ # @property Sections
122
+ #--------------------------------------------------
123
+ # getter
124
+ @property
125
+ def Sections(self):
126
+ #beginfunction
127
+ return self.sections()
128
+ #endfunction
129
+
130
+ #--------------------------------------------------
131
+ # @property Options
132
+ #--------------------------------------------------
133
+ # getter
134
+ @property
135
+ def Options(self):
136
+ #beginfunction
137
+ return self.options(self.SectionName)
138
+ #endfunction
139
+
140
+ #--------------------------------------------------
141
+ # @property SectionName
142
+ #--------------------------------------------------
143
+ # getter
144
+ @property
145
+ def SectionName(self):
146
+ #beginfunction
147
+ return self.__FSectionName
148
+ #endfunction
149
+ # setter
150
+ @SectionName.setter
151
+ def SectionName (self, AValue: str):
152
+ #beginfunction
153
+ self.__FSectionName = AValue
154
+ #endfunction
155
+
156
+ #--------------------------------------------------
157
+ # @property OptionName
158
+ #--------------------------------------------------
159
+ # getter
160
+ @property
161
+ def OptionName(self):
162
+ #beginfunction
163
+ return self.__FOptionName
164
+ #endfunction
165
+ # setter
166
+ @OptionName.setter
167
+ def OptionName (self, AValue: str):
168
+ #beginfunction
169
+ self.__FOptionName = AValue
170
+ #endfunction
171
+
172
+ #--------------------------------------------------
173
+ # @property OptionValue
174
+ #--------------------------------------------------
175
+ # getter
176
+ @property
177
+ def OptionValue(self):
178
+ #beginfunction
179
+ self.__FOptionValue = self.get(self.SectionName, self.OptionName)
180
+ return self.__FOptionValue
181
+ #endfunction
182
+ # setter
183
+ @OptionValue.setter
184
+ def OptionValue (self, AValue: str):
185
+ #beginfunction
186
+ self.__FOptionValue = AValue
187
+ self.set(self.SectionName, self.OptionName, AValue)
188
+ #endfunction
189
+
190
+ #--------------------------------------------------
191
+ # @property FileNameINI
192
+ #--------------------------------------------------
193
+ # getter
194
+ @property
195
+ def FileNameINI(self):
196
+ #beginfunction
197
+ return self.__FFileNameINI
198
+ #endfunction
199
+ # setter
200
+ @FileNameINI.setter
201
+ def FileNameINI (self, AValue: str):
202
+ #beginfunction
203
+ LFullFileName = self.__GetINIFileName (AValue)
204
+ if not LUFile.FileExists (LFullFileName):
205
+ LFullFileName = LUFile.ExpandFileName (LUFile.ExtractFileName(AValue))
206
+ LUFile.CreateTextFile (LFullFileName, '', LUStrDecode.cCP1251)
207
+ self.__FFileNameINI = LFullFileName
208
+ self.__OpenFileINI ()
209
+ self.ChangedFileINI = False
210
+ #endfunction
211
+
212
+ #--------------------------------------------------
213
+ # @property ChangedFileINI
214
+ #--------------------------------------------------
215
+ # getter
216
+ @property
217
+ def ChangedFileINI(self):
218
+ #beginfunction
219
+ return self.__FChangedFileINI
220
+ #endfunction
221
+ # setter
222
+ @ChangedFileINI.setter
223
+ def ChangedFileINI (self, AValue: bool):
224
+ #beginfunction
225
+ self.__FChangedFileINI = AValue
226
+ #endfunction
227
+
228
+ def __OpenFileINI (self):
229
+ """__OpenFileINI"""
230
+ #beginfunction
231
+ self.read (self.FileNameINI)
232
+ #endfunction
233
+
234
+ def IsSection (self, ASectionName: str) -> bool:
235
+ """IsSection"""
236
+ #beginfunction
237
+ return self.has_section(ASectionName)
238
+ #endfunction
239
+
240
+ def IsOption (self, ASectionName: str, AOption: str) -> bool:
241
+ """IsOption"""
242
+ #beginfunction
243
+ return self.has_option(ASectionName, AOption)
244
+ #endfunction
245
+
246
+ def UpdateFileINI (self):
247
+ """UpdateFileINI"""
248
+ #beginfunction
249
+ if self.ChangedFileINI:
250
+ with open (self.FileNameINI, 'w', encoding = LUStrDecode.cCP1251) as LFileINI:
251
+ self.write (LFileINI)
252
+ #endwith
253
+ self.__OpenFileINI ()
254
+ #endif
255
+ #endfunction
256
+
257
+ def RefreashOption (self):
258
+ """RefreashOption"""
259
+ #beginfunction
260
+ self.__OpenFileINI ()
261
+ #endfunction
262
+
263
+ def GetOption (self, ASectionName: str, AOptionName: str, AValueDefault):
264
+ """GetOption"""
265
+ #beginfunction
266
+ if self.has_section(ASectionName):
267
+ if type(AValueDefault) == int:
268
+ try:
269
+ i = self.getint (ASectionName, AOptionName)
270
+ except:
271
+ i = AValueDefault
272
+ #endtry
273
+ return i
274
+ elif type(AValueDefault) == bool:
275
+ s = self.get(ASectionName, AOptionName)
276
+ return LUStrUtils.strtobool(s)
277
+ elif type(AValueDefault) == float:
278
+ try:
279
+ f = self.getfloat (ASectionName, AOptionName)
280
+ except:
281
+ f = AValueDefault
282
+ #endtry
283
+ return f
284
+ else:
285
+ s = self.get(ASectionName, AOptionName)
286
+ return s
287
+ #endif
288
+ else:
289
+ return AValueDefault
290
+ #endif
291
+ #endfunction
292
+
293
+ def SetOption (self, ASectionName: str, AOptionName: str, AValue):
294
+ """SetOption"""
295
+ #beginfunction
296
+ if not self.has_section(ASectionName):
297
+ self.add_section (ASectionName)
298
+ #endif
299
+ s = ''
300
+ if type(AValue) == int:
301
+ try:
302
+ s = str (AValue)
303
+ self.ChangedFileINI = True
304
+ except:
305
+ self.ChangedFileINI = False
306
+ #endtry
307
+ elif type(AValue) == bool:
308
+ s = LUStrUtils.booltostr (AValue)
309
+ self.ChangedFileINI = True
310
+ elif type(AValue) == float:
311
+ try:
312
+ s = str (AValue)
313
+ self.ChangedFileINI = True
314
+ except:
315
+ self.ChangedFileINI = False
316
+ #endtry
317
+ else:
318
+ s = AValue
319
+ self.ChangedFileINI = True
320
+ #endif
321
+ if self.ChangedFileINI:
322
+ self.set (ASectionName, AOptionName, s)
323
+ self.UpdateFileINI ()
324
+ #endif
325
+ #endfunction
326
+
327
+ def DeleteSection (self, ASectionName: str):
328
+ """DeleteSection"""
329
+ #beginfunction
330
+ if self.IsSection (ASectionName):
331
+ self.remove_section(ASectionName)
332
+ self.UpdateFileINI ()
333
+ #endif
334
+ self.ChangedFileINI = True
335
+ #endfunction
336
+
337
+ def DeleteOption (self, ASectionName: str, AOptionName: str):
338
+ """DeleteOption"""
339
+ #beginfunction
340
+ if self.IsOption (ASectionName, AOptionName):
341
+ self.remove_option(ASectionName, AOptionName)
342
+ self.UpdateFileINI ()
343
+ #endif
344
+ self.ChangedFileINI = True
345
+ #endfunction
346
+
347
+ #endclass
348
+
349
+ #---------------------------------------------------------
350
+ # CreateTINIFile
351
+ #---------------------------------------------------------
352
+ def CreateTINIFile () -> TINIFile:
353
+ """CreateTINIFile"""
354
+ #beginfunction
355
+ return TINIFile ()
356
+ #endfunction
357
+
358
+ GINIFile = CreateTINIFile ()
359
+
360
+ #---------------------------------------------------------
361
+ # main
362
+ #---------------------------------------------------------
363
+ def main ():
364
+ #beginfunction
365
+ ...
366
+ #endfunction
367
+
368
+ #------------------------------------------
369
+ #
370
+ #------------------------------------------
371
+ #beginmodule
372
+ if __name__ == "__main__":
373
+ main()
374
+ #endif
375
+
376
+ #endmodule