logger-36 2025.12__py3-none-any.whl → 2025.14__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.
- logger_36/catalog/handler/console.py +22 -49
- logger_36/catalog/handler/console_rich.py +73 -87
- logger_36/catalog/handler/file.py +24 -55
- logger_36/catalog/handler/generic.py +67 -68
- logger_36/catalog/logger/gpu.py +1 -1
- logger_36/catalog/logger/system.py +1 -1
- logger_36/config/message.py +1 -0
- logger_36/{api/handler.py → constant/html.py} +18 -6
- logger_36/extension/exception.py +4 -2
- logger_36/extension/line.py +83 -0
- logger_36/task/format/memory.py +1 -5
- logger_36/task/format/message.py +60 -1
- logger_36/task/format/rule.py +3 -2
- logger_36/task/inspection.py +1 -1
- logger_36/task/storage.py +29 -8
- logger_36/type/handler.py +101 -106
- logger_36/type/logger.py +92 -60
- logger_36/type/message.py +90 -0
- logger_36/version.py +1 -1
- {logger_36-2025.12.dist-info → logger_36-2025.14.dist-info}/METADATA +2 -2
- {logger_36-2025.12.dist-info → logger_36-2025.14.dist-info}/RECORD +23 -22
- {logger_36-2025.12.dist-info → logger_36-2025.14.dist-info}/WHEEL +1 -1
- logger_36/task/handling.py +0 -196
- {logger_36-2025.12.dist-info → logger_36-2025.14.dist-info}/top_level.txt +0 -0
logger_36/type/logger.py
CHANGED
@@ -17,6 +17,9 @@ from os import sep as FOLDER_SEPARATOR
|
|
17
17
|
from pathlib import Path as path_t
|
18
18
|
from traceback import TracebackException as traceback_t
|
19
19
|
|
20
|
+
from logger_36.catalog.config.optional import MISSING_RICH_MESSAGE, RICH_IS_AVAILABLE
|
21
|
+
from logger_36.catalog.handler.console import console_handler_t
|
22
|
+
from logger_36.catalog.handler.file import file_handler_t
|
20
23
|
from logger_36.config.issue import ISSUE_CONTEXT_END, ISSUE_CONTEXT_SEPARATOR
|
21
24
|
from logger_36.config.message import (
|
22
25
|
DATE_FORMAT,
|
@@ -41,17 +44,20 @@ from logger_36.constant.record import (
|
|
41
44
|
STORE_MEMORY_ATTR,
|
42
45
|
)
|
43
46
|
from logger_36.extension.exception import OverrideExceptionFormat
|
44
|
-
from logger_36.task.format.message import MessageWithActualExpected
|
47
|
+
from logger_36.task.format.message import MessageFromRecord, MessageWithActualExpected
|
45
48
|
from logger_36.task.format.rule import RuleAsText
|
46
|
-
from logger_36.task.handling import (
|
47
|
-
AddConsoleHandler,
|
48
|
-
AddFileHandler,
|
49
|
-
AddRichConsoleHandler,
|
50
|
-
)
|
51
49
|
from logger_36.task.measure.chronos import ElapsedTime
|
52
50
|
from logger_36.task.measure.memory import CurrentUsage as CurrentMemoryUsage
|
51
|
+
from logger_36.type.handler import any_handler_t as base_handler_t
|
53
52
|
from logger_36.type.issue import NewIssue, issue_t
|
54
53
|
|
54
|
+
if RICH_IS_AVAILABLE:
|
55
|
+
from logger_36.catalog.handler.console_rich import console_rich_handler_t
|
56
|
+
else:
|
57
|
+
from logger_36.catalog.handler.console import (
|
58
|
+
console_handler_t as console_rich_handler_t,
|
59
|
+
)
|
60
|
+
|
55
61
|
base_t = l.Logger
|
56
62
|
|
57
63
|
logger_handle_raw_h = h.Callable[[l.LogRecord], None]
|
@@ -68,21 +74,23 @@ class logger_t(base_t):
|
|
68
74
|
intercepted_wrn_handle: When warning interception is on, this stores the original
|
69
75
|
"handle" method of the Python warning logger.
|
70
76
|
|
71
|
-
|
77
|
+
_should_activate_log_interceptions: Loggers instantiated after a logger_t logger will
|
72
78
|
be missed by an early call of ToggleLogInterceptions. Therefore, passing True for
|
73
|
-
activate_log_interceptions only sets
|
79
|
+
activate_log_interceptions only sets _should_activate_log_interceptions to True,
|
74
80
|
which is later checked in AddHandler to effectively call ToggleLogInterceptions if
|
75
|
-
|
81
|
+
_should_hold_messages is False (which normally indicates that the handler about to be
|
76
82
|
added is the last one).
|
83
|
+
|
84
|
+
_should_hold_messages: Must not be False until at least one handler has been added.
|
77
85
|
"""
|
78
86
|
|
79
|
-
|
80
|
-
should_hold_messages: bool = True
|
87
|
+
should_record_messages: bool = False
|
81
88
|
exit_on_error: bool = False # Implies exit_on_critical.
|
82
89
|
exit_on_critical: bool = False
|
83
90
|
|
84
|
-
on_hold: list[l.LogRecord] = d.field(init=False, default_factory=list)
|
85
91
|
events: dict[int, int] = d.field(init=False, default_factory=dict)
|
92
|
+
recorded: list[tuple[int, str]] = d.field(init=False, default_factory=list)
|
93
|
+
|
86
94
|
last_message_now: date_time_t = d.field(init=False, default=_DATE_TIME_ORIGIN)
|
87
95
|
last_message_date: date_t = d.field(init=False, default=_DATE_ORIGIN)
|
88
96
|
any_handler_stores_memory: bool = d.field(init=False, default=False)
|
@@ -93,7 +101,9 @@ class logger_t(base_t):
|
|
93
101
|
intercepted_log_handles: dict[str, logger_handle_h] = d.field(
|
94
102
|
init=False, default_factory=dict
|
95
103
|
)
|
96
|
-
|
104
|
+
_on_hold: list[l.LogRecord] = d.field(init=False, default_factory=list)
|
105
|
+
_should_hold_messages: bool = d.field(init=False, default=True)
|
106
|
+
_should_activate_log_interceptions: bool = d.field(init=False, default=False)
|
97
107
|
|
98
108
|
name_: d.InitVar[str] = LOGGER_NAME
|
99
109
|
level_: d.InitVar[int] = l.NOTSET
|
@@ -120,18 +130,6 @@ class logger_t(base_t):
|
|
120
130
|
""""""
|
121
131
|
return self.staged_issues.__len__()
|
122
132
|
|
123
|
-
@property
|
124
|
-
def past_logs_as_HTML(self) -> str | None:
|
125
|
-
"""
|
126
|
-
From the first handler found with the given functionality, if any.
|
127
|
-
"""
|
128
|
-
for handler in self.handlers:
|
129
|
-
past_logs_as_HTML = getattr(handler, "past_logs_as_HTML", None)
|
130
|
-
if past_logs_as_HTML is not None:
|
131
|
-
return past_logs_as_HTML
|
132
|
-
|
133
|
-
return None
|
134
|
-
|
135
133
|
@property
|
136
134
|
def max_memory_usage(self) -> int:
|
137
135
|
""""""
|
@@ -170,7 +168,7 @@ class logger_t(base_t):
|
|
170
168
|
if activate_wrn_interceptions:
|
171
169
|
self.ToggleWarningInterceptions(True)
|
172
170
|
if activate_log_interceptions:
|
173
|
-
self.
|
171
|
+
self._should_activate_log_interceptions = True
|
174
172
|
|
175
173
|
if self.exit_on_error:
|
176
174
|
self.exit_on_critical = True
|
@@ -179,10 +177,14 @@ class logger_t(base_t):
|
|
179
177
|
""""""
|
180
178
|
elapsed_time, now = ElapsedTime(should_return_now=True)
|
181
179
|
|
182
|
-
if (self.
|
183
|
-
for held in self.
|
180
|
+
if (self._on_hold.__len__() > 0) and not self._should_hold_messages:
|
181
|
+
for held in self._on_hold:
|
182
|
+
if self.should_record_messages:
|
183
|
+
self.recorded.append(
|
184
|
+
(held.levelno, MessageFromRecord(held, RuleAsText)[0])
|
185
|
+
)
|
184
186
|
base_t.handle(self, held)
|
185
|
-
self.
|
187
|
+
self._on_hold.clear()
|
186
188
|
|
187
189
|
if (date := now.date()) != self.last_message_date:
|
188
190
|
self.last_message_date = date
|
@@ -195,9 +197,16 @@ class logger_t(base_t):
|
|
195
197
|
SHOW_W_RULE_ATTR: True,
|
196
198
|
}
|
197
199
|
)
|
198
|
-
if self.
|
199
|
-
self.
|
200
|
+
if self._should_hold_messages:
|
201
|
+
self._on_hold.append(date_record)
|
200
202
|
else:
|
203
|
+
if self.should_record_messages:
|
204
|
+
self.recorded.append(
|
205
|
+
(
|
206
|
+
date_record.levelno,
|
207
|
+
MessageFromRecord(date_record, RuleAsText)[0],
|
208
|
+
)
|
209
|
+
)
|
201
210
|
base_t.handle(self, date_record)
|
202
211
|
|
203
212
|
# When.
|
@@ -237,9 +246,13 @@ class logger_t(base_t):
|
|
237
246
|
if not isinstance(record.msg, str):
|
238
247
|
record.msg = str(record.msg)
|
239
248
|
|
240
|
-
if self.
|
241
|
-
self.
|
249
|
+
if self._should_hold_messages:
|
250
|
+
self._on_hold.append(record)
|
242
251
|
else:
|
252
|
+
if self.should_record_messages:
|
253
|
+
self.recorded.append(
|
254
|
+
(record.levelno, MessageFromRecord(record, RuleAsText)[0])
|
255
|
+
)
|
243
256
|
base_t.handle(self, record)
|
244
257
|
|
245
258
|
if (self.exit_on_critical and (record.levelno is l.CRITICAL)) or (
|
@@ -254,13 +267,7 @@ class logger_t(base_t):
|
|
254
267
|
if should_store_where:
|
255
268
|
self.memory_usages.append((where, CurrentMemoryUsage()))
|
256
269
|
|
257
|
-
def SetLevel(
|
258
|
-
self,
|
259
|
-
level: int,
|
260
|
-
/,
|
261
|
-
*,
|
262
|
-
which: handler_codes_h | str = "a",
|
263
|
-
) -> None:
|
270
|
+
def SetLevel(self, level: int, /, *, which: handler_codes_h | str = "a") -> None:
|
264
271
|
"""
|
265
272
|
Set level of handlers, but the logger level is not modified.
|
266
273
|
|
@@ -290,17 +297,24 @@ class logger_t(base_t):
|
|
290
297
|
def MakeMonochrome(self) -> None:
|
291
298
|
""""""
|
292
299
|
OverrideExceptionFormat()
|
293
|
-
|
300
|
+
self.AddHandler(console_handler_t)
|
294
301
|
|
295
302
|
def MakeRich(self, *, alternating_logs: int = 0) -> None:
|
296
303
|
""""""
|
304
|
+
if MISSING_RICH_MESSAGE is not None:
|
305
|
+
s.__stderr__.write(MISSING_RICH_MESSAGE + "\n")
|
306
|
+
|
297
307
|
OverrideExceptionFormat()
|
298
|
-
|
308
|
+
if console_rich_handler_t is console_handler_t:
|
309
|
+
handler_kwargs = {}
|
310
|
+
else:
|
311
|
+
handler_kwargs = {"alternating_logs": alternating_logs}
|
312
|
+
self.AddHandler(console_rich_handler_t, **handler_kwargs)
|
299
313
|
|
300
314
|
def MakePermanent(self, path: str | path_t, /) -> None:
|
301
315
|
""""""
|
302
316
|
OverrideExceptionFormat()
|
303
|
-
|
317
|
+
self.AddHandler(file_handler_t, path=path)
|
304
318
|
|
305
319
|
def ResetEventCounts(self) -> None:
|
306
320
|
""""""
|
@@ -364,14 +378,32 @@ class logger_t(base_t):
|
|
364
378
|
self.info("Log Interception: OFF")
|
365
379
|
|
366
380
|
def AddHandler(
|
367
|
-
self,
|
381
|
+
self,
|
382
|
+
handler_t: type[base_handler_t],
|
383
|
+
/,
|
384
|
+
*,
|
385
|
+
name: str | None = None,
|
386
|
+
level: int = l.INFO,
|
387
|
+
should_store_memory_usage: bool = False,
|
388
|
+
message_width: int = -1,
|
389
|
+
formatter: l.Formatter | None = None,
|
390
|
+
should_still_hold_messages: bool = False,
|
391
|
+
**kwargs,
|
368
392
|
) -> None:
|
369
393
|
""""""
|
370
|
-
if (not
|
394
|
+
if (not should_still_hold_messages) and self._should_activate_log_interceptions:
|
371
395
|
self.ToggleLogInterceptions(True)
|
372
|
-
self.
|
396
|
+
self._should_activate_log_interceptions = False
|
373
397
|
|
374
|
-
self.
|
398
|
+
self._should_hold_messages = should_still_hold_messages
|
399
|
+
handler = handler_t.New(
|
400
|
+
name=name,
|
401
|
+
should_store_memory_usage=should_store_memory_usage,
|
402
|
+
message_width=message_width,
|
403
|
+
level=level,
|
404
|
+
formatter=formatter,
|
405
|
+
**kwargs,
|
406
|
+
)
|
375
407
|
base_t.addHandler(self, handler)
|
376
408
|
|
377
409
|
extension = getattr(handler, "extension", None)
|
@@ -390,9 +422,16 @@ class logger_t(base_t):
|
|
390
422
|
|
391
423
|
self.info(
|
392
424
|
f'New handler "{name}" of type "{type(handler).__name__}" and '
|
393
|
-
f"level {handler.level}={l.getLevelName(handler.level)}{path}"
|
425
|
+
f"level {handler.level}={l.getLevelName(handler.level)}{path}"
|
394
426
|
)
|
395
427
|
|
428
|
+
def __call__(self, *args, **kwargs) -> None:
|
429
|
+
"""
|
430
|
+
For a print-like calling.
|
431
|
+
"""
|
432
|
+
separator = kwargs.get("separator", " ")
|
433
|
+
self.info(separator.join(map(str, args)))
|
434
|
+
|
396
435
|
def Log(
|
397
436
|
self,
|
398
437
|
message: str,
|
@@ -441,10 +480,7 @@ class logger_t(base_t):
|
|
441
480
|
self.log(level, message)
|
442
481
|
|
443
482
|
def LogAsIs(self, message: str, /, *, indented: bool = False) -> None:
|
444
|
-
"""
|
445
|
-
See documentation of
|
446
|
-
logger_36.catalog.handler.generic.generic_handler_t.LogAsIs.
|
447
|
-
"""
|
483
|
+
""""""
|
448
484
|
if indented:
|
449
485
|
message = text.indent(message, LINE_INDENT)
|
450
486
|
|
@@ -454,7 +490,7 @@ class logger_t(base_t):
|
|
454
490
|
else:
|
455
491
|
LogAsIs(message)
|
456
492
|
|
457
|
-
|
493
|
+
info_raw = LogAsIs # To follow the convention of the logging methods info, error...
|
458
494
|
|
459
495
|
def DisplayRule(
|
460
496
|
self, /, *, message: str | None = None, color: str = "white"
|
@@ -462,7 +498,7 @@ class logger_t(base_t):
|
|
462
498
|
""""""
|
463
499
|
for handler in self.handlers:
|
464
500
|
if (DisplayRule := getattr(handler, "DisplayRule", None)) is None:
|
465
|
-
self.info(RuleAsText(message))
|
501
|
+
self.info(RuleAsText(message, None))
|
466
502
|
else:
|
467
503
|
DisplayRule(text=message, color=color)
|
468
504
|
|
@@ -528,11 +564,7 @@ class logger_t(base_t):
|
|
528
564
|
return output
|
529
565
|
|
530
566
|
def CommitIssues(
|
531
|
-
self,
|
532
|
-
/,
|
533
|
-
*,
|
534
|
-
order: order_h = "when",
|
535
|
-
unified: bool = False,
|
567
|
+
self, /, *, order: order_h = "when", unified: bool = False
|
536
568
|
) -> None:
|
537
569
|
"""
|
538
570
|
Note that issues after an issue with a level triggering process exit will not be
|
@@ -553,7 +585,7 @@ class logger_t(base_t):
|
|
553
585
|
if order == "when":
|
554
586
|
issues = self.staged_issues
|
555
587
|
else: # order == "context"
|
556
|
-
issues = sorted(self.staged_issues, key=lambda
|
588
|
+
issues = sorted(self.staged_issues, key=lambda _: _.context)
|
557
589
|
"""
|
558
590
|
Format issues as an exception:
|
559
591
|
try:
|
@@ -0,0 +1,90 @@
|
|
1
|
+
"""
|
2
|
+
Copyright CNRS/Inria/UniCA
|
3
|
+
Contributor(s): Eric Debreuve (eric.debreuve@cnrs.fr) since 2023
|
4
|
+
SEE COPYRIGHT NOTICE BELOW
|
5
|
+
"""
|
6
|
+
|
7
|
+
import logging as l
|
8
|
+
import typing as h
|
9
|
+
|
10
|
+
from logger_36.catalog.config.optional import RICH_IS_AVAILABLE
|
11
|
+
|
12
|
+
|
13
|
+
@h.runtime_checkable
|
14
|
+
class _RuleAsText_p(h.Protocol):
|
15
|
+
def __call__(self, text: str | None, color: None, /) -> str: ...
|
16
|
+
|
17
|
+
|
18
|
+
if RICH_IS_AVAILABLE:
|
19
|
+
from rich.rule import Rule as rule_t # noqa
|
20
|
+
|
21
|
+
@h.runtime_checkable
|
22
|
+
class _Rule_p(h.Protocol):
|
23
|
+
def __call__(self, text: str | None, color: str, /) -> rule_t | str: ...
|
24
|
+
else:
|
25
|
+
_Rule_p = None
|
26
|
+
|
27
|
+
RuleWithText_h = _RuleAsText_p | _Rule_p
|
28
|
+
|
29
|
+
|
30
|
+
@h.runtime_checkable
|
31
|
+
class _MessageFromRecordPreprocessed_p(h.Protocol):
|
32
|
+
def __call__(
|
33
|
+
self,
|
34
|
+
record: l.LogRecord,
|
35
|
+
RuleWithText: RuleWithText_h,
|
36
|
+
/,
|
37
|
+
*,
|
38
|
+
line_width: int = 0,
|
39
|
+
PreProcessed: h.Callable[[str], str] | None = None,
|
40
|
+
) -> tuple[str, bool]: ...
|
41
|
+
|
42
|
+
|
43
|
+
MessageFromRecord_h = _MessageFromRecordPreprocessed_p
|
44
|
+
|
45
|
+
|
46
|
+
"""
|
47
|
+
COPYRIGHT NOTICE
|
48
|
+
|
49
|
+
This software is governed by the CeCILL license under French law and
|
50
|
+
abiding by the rules of distribution of free software. You can use,
|
51
|
+
modify and/ or redistribute the software under the terms of the CeCILL
|
52
|
+
license as circulated by CEA, CNRS and INRIA at the following URL
|
53
|
+
"http://www.cecill.info".
|
54
|
+
|
55
|
+
As a counterpart to the access to the source code and rights to copy,
|
56
|
+
modify and redistribute granted by the license, users are provided only
|
57
|
+
with a limited warranty and the software's author, the holder of the
|
58
|
+
economic rights, and the successive licensors have only limited
|
59
|
+
liability.
|
60
|
+
|
61
|
+
In this respect, the user's attention is drawn to the risks associated
|
62
|
+
with loading, using, modifying and/or developing or reproducing the
|
63
|
+
software by the user in light of its specific status of free software,
|
64
|
+
that may mean that it is complicated to manipulate, and that also
|
65
|
+
therefore means that it is reserved for developers and experienced
|
66
|
+
professionals having in-depth computer knowledge. Users are therefore
|
67
|
+
encouraged to load and test the software's suitability as regards their
|
68
|
+
requirements in conditions enabling the security of their systems and/or
|
69
|
+
data to be ensured and, more generally, to use and operate it in the
|
70
|
+
same conditions as regards security.
|
71
|
+
|
72
|
+
The fact that you are presently reading this means that you have had
|
73
|
+
knowledge of the CeCILL license and that you accept its terms.
|
74
|
+
|
75
|
+
SEE LICENCE NOTICE: file README-LICENCE-utf8.txt at project source root.
|
76
|
+
|
77
|
+
This software is being developed by Eric Debreuve, a CNRS employee and
|
78
|
+
member of team Morpheme.
|
79
|
+
Team Morpheme is a joint team between Inria, CNRS, and UniCA.
|
80
|
+
It is hosted by the Centre Inria d'Université Côte d'Azur, Laboratory
|
81
|
+
I3S, and Laboratory iBV.
|
82
|
+
|
83
|
+
CNRS: https://www.cnrs.fr/index.php/en
|
84
|
+
Inria: https://www.inria.fr/en/
|
85
|
+
UniCA: https://univ-cotedazur.eu/
|
86
|
+
Centre Inria d'Université Côte d'Azur: https://www.inria.fr/en/centre/sophia/
|
87
|
+
I3S: https://www.i3s.unice.fr/en/
|
88
|
+
iBV: http://ibv.unice.fr/
|
89
|
+
Team Morpheme: https://team.inria.fr/morpheme/
|
90
|
+
"""
|
logger_36/version.py
CHANGED
@@ -1,9 +1,8 @@
|
|
1
1
|
logger_36/__init__.py,sha256=UhKxuQLS1Pfgt5H0K_7BaDAPejOUR8byD5BYRCnHQMQ,2655
|
2
|
-
logger_36/version.py,sha256=
|
2
|
+
logger_36/version.py,sha256=puslblEld2sLwTmqWreV3vMyhNnL0uc4l3B-pcUa2hg,2206
|
3
3
|
logger_36/api/content.py,sha256=clHYYUKa8n4qef6PVlUV4mFHRRf6fnm9wEd2fu9oagA,2381
|
4
4
|
logger_36/api/exception.py,sha256=QKIkNJA0N6FvVHLTApiH3ymhVQoSYU08t2RkyufQPIw,2291
|
5
5
|
logger_36/api/gpu.py,sha256=BOumedCAPWvCo7J-KJ3XE-jr5S0KSmgcFv_S4QKRPO8,2252
|
6
|
-
logger_36/api/handler.py,sha256=cM9bn4LDj4rtHKjzfBsTvsp-HYJMRd8Y7HSVNvVgudU,2323
|
7
6
|
logger_36/api/memory.py,sha256=szJVk4UTXsbYv3B-W9LFttf1F3j86GXHsKgEUOsXKl4,2743
|
8
7
|
logger_36/api/storage.py,sha256=t83D7Ge0ka7FCHUM8xchLsO_TMu0Bcc2IcBzw_gjkSA,2300
|
9
8
|
logger_36/api/system.py,sha256=cgOMF_OneYeIJDMbIbIDx96EZss2uAdkk8QofOC7O1U,2251
|
@@ -11,21 +10,22 @@ logger_36/api/time.py,sha256=Uw1jQtY1njsRuIPRAXX44v4nPOo84MSBu_WK_YCRzQs,2324
|
|
11
10
|
logger_36/api/type.py,sha256=4m5fZGI6LOQvFakEStFv6HTP4FY9nyFpNNlK34rCfQw,2286
|
12
11
|
logger_36/catalog/config/console_rich.py,sha256=lAa5Ev5BhXvmQzfIt1FNihMNUQJFlXaIzNanAMdgtd0,2861
|
13
12
|
logger_36/catalog/config/optional.py,sha256=HaN6mbx7gHBBppNvUw1ckhYTOrlYqb-b_r0mzPcHPjM,2398
|
14
|
-
logger_36/catalog/handler/console.py,sha256=
|
15
|
-
logger_36/catalog/handler/console_rich.py,sha256=
|
16
|
-
logger_36/catalog/handler/file.py,sha256=
|
17
|
-
logger_36/catalog/handler/generic.py,sha256=
|
13
|
+
logger_36/catalog/handler/console.py,sha256=5F_JFsGm5ERFh0_1rh8Jae51VwAJMg7d7bRLZkOK4DY,3283
|
14
|
+
logger_36/catalog/handler/console_rich.py,sha256=U4hD8qF88dpDALKkeOvwnrJpUbUpG5egq1JfImU4pFg,7168
|
15
|
+
logger_36/catalog/handler/file.py,sha256=4Du9f-UNJsZrcNV9jCVLLCklA0T4HYX_jKjxSie-deM,3428
|
16
|
+
logger_36/catalog/handler/generic.py,sha256=8xQA0ETIMmdhmip0wcaD21h4ZGz-52gk0hgoUJYxbn8,8258
|
18
17
|
logger_36/catalog/logger/chronos.py,sha256=ocY13f98EfknU7wZCv0FS9Xb7pTNaWCPSusXFIEvEd4,2437
|
19
|
-
logger_36/catalog/logger/gpu.py,sha256=
|
18
|
+
logger_36/catalog/logger/gpu.py,sha256=ybn7Q8exiqoigvNpzEhg0Zp027WogypuNJwfsQ1pRY4,3416
|
20
19
|
logger_36/catalog/logger/memory.py,sha256=CWhr2J4BqArJxzH6tS-ZThr-rYPAQGtuLn0pP7Iryfg,4685
|
21
|
-
logger_36/catalog/logger/system.py,sha256=
|
20
|
+
logger_36/catalog/logger/system.py,sha256=3VWbceSAknZwmRhEfd8pkuLwU2B8zPhCGNGQE0h5KLo,3065
|
22
21
|
logger_36/config/issue.py,sha256=G-i5p6lhZCLAOa-VTMyL9ZonvGCvhdoQ5KZdSWgP-FU,2267
|
23
22
|
logger_36/config/memory.py,sha256=yCX5phsB_KJMr5xHpVUeOHFhAA7p_8yahP3X28VndOY,2217
|
24
|
-
logger_36/config/message.py,sha256=
|
23
|
+
logger_36/config/message.py,sha256=mgPcMS7qWBuqP2w5NoHw1df32kcVToVhisozb32_EII,2554
|
25
24
|
logger_36/config/system.py,sha256=HD8ZuwsXhEAExeZrww8YoDkQGMs4T5RDqQMb1W4qVgc,2477
|
26
25
|
logger_36/constant/error.py,sha256=LzsS_P1IoH3ct_ifNWi9LzJ-X_Y5DN1naTLwwIFzDQA,2827
|
27
26
|
logger_36/constant/generic.py,sha256=t6aRb66_NHwMhR1p7BZ4QXTU2jpLz-H5YAL4PuMtKx8,2244
|
28
27
|
logger_36/constant/handler.py,sha256=PQUehMK9Yg0_rBDcMc8xpUbAsCauCLy_eS_ntiWew1Y,2378
|
28
|
+
logger_36/constant/html.py,sha256=-m1CDyDN0kkurloEtJeqBsyxy9nXCImIMGLwEIF33M0,2515
|
29
29
|
logger_36/constant/issue.py,sha256=01l8itRPWGS5F6gXtsXUJgGR-4lS1Eu3_YeKC-khKLw,2315
|
30
30
|
logger_36/constant/logger.py,sha256=2qRkteblpbHrq9x0aiw9MPquyXrSRd6_yMQnPEhFp2U,2468
|
31
31
|
logger_36/constant/memory.py,sha256=ZL1MwbdtNsrCrOwzEyfTsfOoOsRBTJtbbf3otHGnxXo,2343
|
@@ -33,23 +33,24 @@ logger_36/constant/message.py,sha256=Ys_CAyhENlT8Z3rr-AxO4hjdl1jLsKzVSPQ8wqLOCPQ
|
|
33
33
|
logger_36/constant/path.py,sha256=fKJn2vGj012BU5DFRetDFus_tKMty2q_WL0J2KrXdCo,2731
|
34
34
|
logger_36/constant/record.py,sha256=9Q28lVH_s0og4v74delgwIPAJ9G28I5rBM-brXcoY80,2308
|
35
35
|
logger_36/constant/system.py,sha256=G2mzBTxRXoJMxb53TnmBaceMJC_q3WonoCG7y6nC_R8,2430
|
36
|
-
logger_36/extension/exception.py,sha256=
|
36
|
+
logger_36/extension/exception.py,sha256=CPie_jbp_cPhYln0dECFplykmS7pUaHqiiuQ4M5lvho,5416
|
37
37
|
logger_36/extension/html_.py,sha256=J9EX8-Rotq9i8bZ9U-dIpXv5gKLLnLmWqdDy4XayT1Q,3868
|
38
|
+
logger_36/extension/line.py,sha256=3MJ3B5PXJn18RHxBUcWnNBLEYzb7VTcEAufn7ULdYfY,3143
|
38
39
|
logger_36/instance/logger.py,sha256=oTw5svRzKRJKvGrrZUtutJIOjp5UISft3fl0Ze7DOBE,2241
|
39
40
|
logger_36/instance/loggers.py,sha256=RCWpC1NPAf6vXnFc9NqsSALv-x-FEzcH6k_OlxTxeQk,2251
|
40
|
-
logger_36/task/
|
41
|
-
logger_36/task/
|
42
|
-
logger_36/task/
|
43
|
-
logger_36/task/format/
|
44
|
-
logger_36/task/format/
|
45
|
-
logger_36/task/format/rule.py,sha256=vkf-HivFb4VqV2GeOPVqMAp99krtziI-kXhox3UVnzw,2873
|
41
|
+
logger_36/task/inspection.py,sha256=VR9ESSa2iAAiQggwzHzV2A3-rRr6VgMqR1HvclhK2Xc,5010
|
42
|
+
logger_36/task/storage.py,sha256=Y88934cVcen1i8qruskmCMQYA5-dl1wI8EaJFCv49Q0,4042
|
43
|
+
logger_36/task/format/memory.py,sha256=ZipL1f-Bqv4ugFvXZfNrj49rdIMXjEKcVz1OvgMaZXI,4249
|
44
|
+
logger_36/task/format/message.py,sha256=5mR9CZaARy9q-JtIX68IyY-DKTepkxyRV7juByqBH7c,5771
|
45
|
+
logger_36/task/format/rule.py,sha256=CtR7d2X-pZFKdqG6Y2_3b5AMKg_J274Jq69kht0N6xs,2910
|
46
46
|
logger_36/task/measure/chronos.py,sha256=1kVhu6jZlNAtNWQQh8ZVuRwZIAC9gGz3_ul1tn0t4Yw,3055
|
47
47
|
logger_36/task/measure/memory.py,sha256=OjU5EYFH8SnzlCQKAoiXvauUlwQYOrH34jFXTVYF0jE,2517
|
48
|
-
logger_36/type/handler.py,sha256=
|
48
|
+
logger_36/type/handler.py,sha256=6oxW-Y_kuAEfoXsMr-KXspv0czYiwe8rDzMAMrshFmw,6567
|
49
49
|
logger_36/type/issue.py,sha256=2rGsFqaQJCbeml9xN08mN_nK79L8qscaS_0ws36Y0bI,3214
|
50
|
-
logger_36/type/logger.py,sha256=
|
50
|
+
logger_36/type/logger.py,sha256=ISMUQBZ-KhLBi_tZjCAYtss5pAwFW3psTQu5k9_ZbEw,25287
|
51
51
|
logger_36/type/loggers.py,sha256=znqxWBnfQxvkg3VUfbTUvt3S6Kq0DAzWWepxQDt9suI,2871
|
52
|
-
logger_36
|
53
|
-
logger_36-2025.
|
54
|
-
logger_36-2025.
|
55
|
-
logger_36-2025.
|
52
|
+
logger_36/type/message.py,sha256=zKME5p87ynsXte_b5usXV3VHaj34Uezs9Gg_WVWfaeY,3063
|
53
|
+
logger_36-2025.14.dist-info/METADATA,sha256=GkEE-L8P0ShhL0XxKOu-A5p3yZD0mJzAcGax90FiUw8,6506
|
54
|
+
logger_36-2025.14.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
55
|
+
logger_36-2025.14.dist-info/top_level.txt,sha256=sM95BTMWmslEEgR_1pzwZsOeSp8C_QBiu8ImbFr0XLc,10
|
56
|
+
logger_36-2025.14.dist-info/RECORD,,
|