logger-36 2025.16__py3-none-any.whl → 2025.17__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 +1 -2
- logger_36/catalog/handler/console_rich.py +2 -14
- logger_36/catalog/handler/file.py +1 -4
- logger_36/catalog/handler/generic.py +2 -14
- logger_36/catalog/logger/memory.py +7 -5
- logger_36/constant/handler.py +0 -2
- logger_36/constant/path.py +2 -2
- logger_36/constant/record.py +1 -2
- logger_36/type/handler.py +6 -20
- logger_36/type/logger.py +30 -32
- logger_36/version.py +1 -1
- {logger_36-2025.16.dist-info → logger_36-2025.17.dist-info}/METADATA +1 -1
- {logger_36-2025.16.dist-info → logger_36-2025.17.dist-info}/RECORD +15 -15
- {logger_36-2025.16.dist-info → logger_36-2025.17.dist-info}/WHEEL +0 -0
- {logger_36-2025.16.dist-info → logger_36-2025.17.dist-info}/top_level.txt +0 -0
@@ -21,14 +21,13 @@ class console_handler_t(base_t):
|
|
21
21
|
/,
|
22
22
|
*,
|
23
23
|
name: str | None = None,
|
24
|
-
should_store_memory_usage: bool = False,
|
25
24
|
message_width: int = -1,
|
26
25
|
level: int = l.NOTSET,
|
27
26
|
formatter: l.Formatter | None = None,
|
28
27
|
**_,
|
29
28
|
) -> h.Self:
|
30
29
|
""""""
|
31
|
-
return cls(name,
|
30
|
+
return cls(name, message_width, level, formatter)
|
32
31
|
|
33
32
|
def emit(self, record: l.LogRecord, /) -> None:
|
34
33
|
""""""
|
@@ -55,7 +55,6 @@ class console_rich_handler_t(base_t):
|
|
55
55
|
def __init__(
|
56
56
|
self,
|
57
57
|
name: str | None,
|
58
|
-
should_store_memory_usage: bool,
|
59
58
|
message_width: int,
|
60
59
|
level: int,
|
61
60
|
formatter: l.Formatter | None,
|
@@ -67,15 +66,7 @@ class console_rich_handler_t(base_t):
|
|
67
66
|
|
68
67
|
assert alternating_logs in (0, 1, 2)
|
69
68
|
|
70
|
-
base_t.__init__(
|
71
|
-
self,
|
72
|
-
name,
|
73
|
-
should_store_memory_usage,
|
74
|
-
message_width,
|
75
|
-
level,
|
76
|
-
formatter,
|
77
|
-
kwargs,
|
78
|
-
)
|
69
|
+
base_t.__init__(self, name, message_width, level, formatter, kwargs)
|
79
70
|
|
80
71
|
self.console = None # console_t | None.
|
81
72
|
self.alternating_logs = alternating_logs
|
@@ -105,16 +96,13 @@ class console_rich_handler_t(base_t):
|
|
105
96
|
/,
|
106
97
|
*,
|
107
98
|
name: str | None = None,
|
108
|
-
should_store_memory_usage: bool = False,
|
109
99
|
message_width: int = -1,
|
110
100
|
level: int = l.NOTSET,
|
111
101
|
formatter: l.Formatter | None = None,
|
112
102
|
**kwargs,
|
113
103
|
) -> h.Self:
|
114
104
|
""""""
|
115
|
-
return cls(
|
116
|
-
name, should_store_memory_usage, message_width, level, formatter, kwargs
|
117
|
-
)
|
105
|
+
return cls(name, message_width, level, formatter, kwargs)
|
118
106
|
|
119
107
|
def emit(self, record: l.LogRecord, /) -> None:
|
120
108
|
""""""
|
@@ -21,7 +21,6 @@ class file_handler_t(base_t):
|
|
21
21
|
/,
|
22
22
|
*,
|
23
23
|
name: str | None = None,
|
24
|
-
should_store_memory_usage: bool = False,
|
25
24
|
message_width: int = -1,
|
26
25
|
level: int = l.NOTSET,
|
27
26
|
formatter: l.Formatter | None = None,
|
@@ -29,9 +28,7 @@ class file_handler_t(base_t):
|
|
29
28
|
**_,
|
30
29
|
) -> h.Self:
|
31
30
|
""""""
|
32
|
-
return cls(
|
33
|
-
name, should_store_memory_usage, message_width, level, formatter, path
|
34
|
-
)
|
31
|
+
return cls(name, message_width, level, formatter, path)
|
35
32
|
|
36
33
|
def emit(self, record: l.LogRecord, /) -> None:
|
37
34
|
""""""
|
@@ -56,7 +56,6 @@ class generic_handler_t(base_t):
|
|
56
56
|
def __init__(
|
57
57
|
self,
|
58
58
|
name: str | None,
|
59
|
-
should_store_memory_usage: bool,
|
60
59
|
message_width: int,
|
61
60
|
level: int,
|
62
61
|
formatter: l.Formatter | None,
|
@@ -69,15 +68,7 @@ class generic_handler_t(base_t):
|
|
69
68
|
|
70
69
|
assert alternating_logs in (0, 1, 2)
|
71
70
|
|
72
|
-
base_t.__init__(
|
73
|
-
self,
|
74
|
-
name,
|
75
|
-
should_store_memory_usage,
|
76
|
-
message_width,
|
77
|
-
level,
|
78
|
-
formatter,
|
79
|
-
kwargs,
|
80
|
-
)
|
71
|
+
base_t.__init__(self, name, message_width, level, formatter, kwargs)
|
81
72
|
|
82
73
|
self.LogAsIs = LogAsIs
|
83
74
|
self.DisplayRule = None # DisplayRule_p | None.
|
@@ -105,16 +96,13 @@ class generic_handler_t(base_t):
|
|
105
96
|
/,
|
106
97
|
*,
|
107
98
|
name: str | None = None,
|
108
|
-
should_store_memory_usage: bool = False,
|
109
99
|
message_width: int = -1,
|
110
100
|
level: int = l.NOTSET,
|
111
101
|
formatter: l.Formatter | None = None,
|
112
102
|
**kwargs,
|
113
103
|
) -> h.Self:
|
114
104
|
""""""
|
115
|
-
return cls(
|
116
|
-
name, should_store_memory_usage, message_width, level, formatter, kwargs
|
117
|
-
)
|
105
|
+
return cls(name, message_width, level, formatter, kwargs)
|
118
106
|
|
119
107
|
def emit(self, record: l.LogRecord, /) -> None:
|
120
108
|
""""""
|
@@ -21,7 +21,7 @@ def LogMemoryUsages(
|
|
21
21
|
logger: logger_t = L,
|
22
22
|
) -> None:
|
23
23
|
""""""
|
24
|
-
if not logger.
|
24
|
+
if (not hasattr(logger, "memory_usages")) or (logger.memory_usages.__len__() == 0):
|
25
25
|
return
|
26
26
|
|
27
27
|
where_s, usages = zip(*logger.memory_usages)
|
@@ -76,10 +76,12 @@ def LogMaximumMemoryUsage(
|
|
76
76
|
"""
|
77
77
|
unit: b or None=bytes, k=kilo, m=mega, g=giga, a=auto
|
78
78
|
"""
|
79
|
-
if logger.
|
80
|
-
|
81
|
-
|
82
|
-
|
79
|
+
if (not hasattr(logger, "memory_usages")) or (logger.memory_usages.__len__() == 0):
|
80
|
+
return
|
81
|
+
|
82
|
+
where, max_usage = logger.max_memory_usage_full
|
83
|
+
value, unit = FormattedUsage(max_usage, unit=unit, decimals=decimals)
|
84
|
+
logger.info(f"Max. Memory Usage: {value}{unit} near {where}")
|
83
85
|
|
84
86
|
|
85
87
|
"""
|
logger_36/constant/handler.py
CHANGED
logger_36/constant/path.py
CHANGED
@@ -4,13 +4,13 @@ Contributor(s): Eric Debreuve (eric.debreuve@cnrs.fr) since 2023
|
|
4
4
|
SEE COPYRIGHT NOTICE BELOW
|
5
5
|
"""
|
6
6
|
|
7
|
-
import inspect as
|
7
|
+
import inspect as e
|
8
8
|
import tempfile as tmps
|
9
9
|
from pathlib import Path as path_t
|
10
10
|
|
11
11
|
USER_FOLDER = path_t.home()
|
12
12
|
|
13
|
-
frame =
|
13
|
+
frame = e.stack(context=0)[-1] # -1=root caller.
|
14
14
|
if path_t(frame.filename).exists():
|
15
15
|
PROJECT_FILE = path_t(frame.filename)
|
16
16
|
if PROJECT_FILE.is_relative_to(USER_FOLDER):
|
logger_36/constant/record.py
CHANGED
logger_36/type/handler.py
CHANGED
@@ -10,26 +10,22 @@ import typing as h
|
|
10
10
|
from pathlib import Path as path_t
|
11
11
|
|
12
12
|
from logger_36.config.message import FALLBACK_MESSAGE_WIDTH
|
13
|
-
from logger_36.constant.error import MEMORY_MEASURE_ERROR
|
14
13
|
from logger_36.constant.handler import HANDLER_KINDS
|
15
14
|
from logger_36.task.format.message import MessageFromRecord, MessageWithActualExpected
|
16
15
|
from logger_36.task.format.rule import RuleAsText
|
17
16
|
from logger_36.task.measure.chronos import TimeStamp
|
18
|
-
from logger_36.task.measure.memory import CanCheckUsage as CanCheckMemoryUsage
|
19
17
|
from logger_36.type.message import MessageFromRecord_h, RuleWithText_h
|
20
18
|
|
21
|
-
_MEMORY_MEASURE_ERROR = MEMORY_MEASURE_ERROR
|
22
|
-
|
23
19
|
|
24
20
|
class _base_t:
|
25
21
|
kind: h.ClassVar[str] = "" # See logger_36.constant.handler.handler_codes_h.
|
26
22
|
|
27
|
-
def __init__(
|
28
|
-
self, name: str | None, should_store_memory_usage: bool, message_width: int
|
29
|
-
) -> None:
|
23
|
+
def __init__(self, name: str | None, message_width: int) -> None:
|
30
24
|
""""""
|
25
|
+
if name is None:
|
26
|
+
name = f"{type(self).__name__}:{id(self)}"
|
27
|
+
|
31
28
|
self.name = name
|
32
|
-
self.should_store_memory_usage = should_store_memory_usage
|
33
29
|
self.message_width = message_width
|
34
30
|
#
|
35
31
|
self.MessageFromRecord: MessageFromRecord_h | None = None
|
@@ -38,8 +34,6 @@ class _base_t:
|
|
38
34
|
|
39
35
|
def __post_init__(self) -> None:
|
40
36
|
""""""
|
41
|
-
global _MEMORY_MEASURE_ERROR
|
42
|
-
|
43
37
|
if self.name in HANDLER_KINDS:
|
44
38
|
raise ValueError(
|
45
39
|
MessageWithActualExpected(
|
@@ -52,12 +46,6 @@ class _base_t:
|
|
52
46
|
if self.name is None:
|
53
47
|
self.name = TimeStamp()
|
54
48
|
|
55
|
-
if self.should_store_memory_usage and not CanCheckMemoryUsage():
|
56
|
-
self.should_store_memory_usage = False
|
57
|
-
if _MEMORY_MEASURE_ERROR is not None:
|
58
|
-
s.__stderr__.write(_MEMORY_MEASURE_ERROR + "\n")
|
59
|
-
_MEMORY_MEASURE_ERROR = None
|
60
|
-
|
61
49
|
if 0 < self.message_width < FALLBACK_MESSAGE_WIDTH:
|
62
50
|
self.message_width = FALLBACK_MESSAGE_WIDTH
|
63
51
|
|
@@ -84,7 +72,6 @@ class handler_t(l.Handler, _base_t):
|
|
84
72
|
def __init__(
|
85
73
|
self,
|
86
74
|
name: str | None,
|
87
|
-
should_store_memory_usage: bool,
|
88
75
|
message_width: int,
|
89
76
|
level: int,
|
90
77
|
formatter: l.Formatter | None,
|
@@ -92,7 +79,7 @@ class handler_t(l.Handler, _base_t):
|
|
92
79
|
) -> None:
|
93
80
|
""""""
|
94
81
|
l.Handler.__init__(self)
|
95
|
-
_base_t.__init__(self, name,
|
82
|
+
_base_t.__init__(self, name, message_width)
|
96
83
|
__post_init__(self, level, formatter)
|
97
84
|
|
98
85
|
|
@@ -100,7 +87,6 @@ class file_handler_t(l.FileHandler, _base_t):
|
|
100
87
|
def __init__(
|
101
88
|
self,
|
102
89
|
name: str | None,
|
103
|
-
should_store_memory_usage: bool,
|
104
90
|
message_width: int,
|
105
91
|
level: int,
|
106
92
|
formatter: l.Formatter | None,
|
@@ -116,7 +102,7 @@ class file_handler_t(l.FileHandler, _base_t):
|
|
116
102
|
raise ValueError(f"File or folder already exists: {path}.")
|
117
103
|
|
118
104
|
l.FileHandler.__init__(self, path)
|
119
|
-
_base_t.__init__(self, name,
|
105
|
+
_base_t.__init__(self, name, message_width)
|
120
106
|
__post_init__(self, level, formatter)
|
121
107
|
|
122
108
|
|
logger_36/type/logger.py
CHANGED
@@ -5,6 +5,7 @@ SEE COPYRIGHT NOTICE BELOW
|
|
5
5
|
"""
|
6
6
|
|
7
7
|
import dataclasses as d
|
8
|
+
import inspect as e
|
8
9
|
import logging as l
|
9
10
|
import sys as s
|
10
11
|
import textwrap as text
|
@@ -28,8 +29,9 @@ from logger_36.config.message import (
|
|
28
29
|
LONG_ENOUGH,
|
29
30
|
TIME_FORMAT,
|
30
31
|
)
|
32
|
+
from logger_36.constant.error import MEMORY_MEASURE_ERROR
|
31
33
|
from logger_36.constant.generic import NOT_PASSED
|
32
|
-
from logger_36.constant.handler import
|
34
|
+
from logger_36.constant.handler import HANDLER_KINDS, handler_codes_h
|
33
35
|
from logger_36.constant.issue import ISSUE_LEVEL_SEPARATOR, ORDER, order_h
|
34
36
|
from logger_36.constant.logger import (
|
35
37
|
LOGGER_NAME,
|
@@ -39,14 +41,11 @@ from logger_36.constant.logger import (
|
|
39
41
|
from logger_36.constant.memory import UNKNOWN_MEMORY_USAGE
|
40
42
|
from logger_36.constant.message import LINE_INDENT, TIME_LENGTH_m_1, expected_op_h
|
41
43
|
from logger_36.constant.path import PROJECT_FILE_RELATIVE
|
42
|
-
from logger_36.constant.record import
|
43
|
-
HIDE_WHERE_ATTR,
|
44
|
-
SHOW_W_RULE_ATTR,
|
45
|
-
STORE_MEMORY_ATTR,
|
46
|
-
)
|
44
|
+
from logger_36.constant.record import SHOW_W_RULE_ATTR, SHOW_WHERE_ATTR
|
47
45
|
from logger_36.task.format.message import MessageFromRecord, MessageWithActualExpected
|
48
46
|
from logger_36.task.format.rule import RuleAsText
|
49
47
|
from logger_36.task.measure.chronos import ElapsedTime
|
48
|
+
from logger_36.task.measure.memory import CanCheckUsage as CanCheckMemoryUsage
|
50
49
|
from logger_36.task.measure.memory import CurrentUsage as CurrentMemoryUsage
|
51
50
|
from logger_36.type.handler import any_handler_t as base_handler_t
|
52
51
|
from logger_36.type.issue import NewIssue, issue_t
|
@@ -66,6 +65,7 @@ logger_handle_h = logger_handle_raw_h | logger_handle_with_self_h
|
|
66
65
|
|
67
66
|
_DATE_TIME_ORIGIN = date_time_t.fromtimestamp(1970, None)
|
68
67
|
_DATE_ORIGIN = _DATE_TIME_ORIGIN.date()
|
68
|
+
_MEMORY_MEASURE_ERROR = MEMORY_MEASURE_ERROR
|
69
69
|
|
70
70
|
|
71
71
|
@d.dataclass(slots=True, repr=False, eq=False)
|
@@ -85,6 +85,7 @@ class logger_t(base_t):
|
|
85
85
|
"""
|
86
86
|
|
87
87
|
should_record_messages: bool = False
|
88
|
+
should_watch_memory_usage: bool = False
|
88
89
|
exit_on_error: bool = False # Implies exit_on_critical.
|
89
90
|
exit_on_critical: bool = False
|
90
91
|
|
@@ -93,7 +94,6 @@ class logger_t(base_t):
|
|
93
94
|
|
94
95
|
last_message_now: date_time_t = d.field(init=False, default=_DATE_TIME_ORIGIN)
|
95
96
|
last_message_date: date_t = d.field(init=False, default=_DATE_ORIGIN)
|
96
|
-
any_handler_stores_memory: bool = d.field(init=False, default=False)
|
97
97
|
memory_usages: list[tuple[str, int]] = d.field(init=False, default_factory=list)
|
98
98
|
context_levels: list[str] = d.field(init=False, default_factory=list)
|
99
99
|
staged_issues: list[issue_t] = d.field(init=False, default_factory=list)
|
@@ -159,6 +159,8 @@ class logger_t(base_t):
|
|
159
159
|
activate_exc_interceptions: bool,
|
160
160
|
) -> None:
|
161
161
|
""""""
|
162
|
+
global _MEMORY_MEASURE_ERROR
|
163
|
+
|
162
164
|
base_t.__init__(self, name_)
|
163
165
|
self.setLevel(level_)
|
164
166
|
self.propagate = False # Part of base_t.
|
@@ -178,6 +180,12 @@ class logger_t(base_t):
|
|
178
180
|
if self.exit_on_error:
|
179
181
|
self.exit_on_critical = True
|
180
182
|
|
183
|
+
if self.should_watch_memory_usage and not CanCheckMemoryUsage():
|
184
|
+
self.should_watch_memory_usage = False
|
185
|
+
if _MEMORY_MEASURE_ERROR is not None:
|
186
|
+
s.__stderr__.write(_MEMORY_MEASURE_ERROR + "\n")
|
187
|
+
_MEMORY_MEASURE_ERROR = None
|
188
|
+
|
181
189
|
def handle(self, record: l.LogRecord, /) -> None:
|
182
190
|
""""""
|
183
191
|
elapsed_time, now = ElapsedTime(should_return_now=True)
|
@@ -224,12 +232,8 @@ class logger_t(base_t):
|
|
224
232
|
self.last_message_now = now
|
225
233
|
|
226
234
|
# Where.
|
227
|
-
|
228
|
-
|
229
|
-
should_show_where = (record.levelno != l.INFO) and not hasattr(
|
230
|
-
record, HIDE_WHERE_ATTR
|
231
|
-
)
|
232
|
-
if should_store_where or should_show_where:
|
235
|
+
should_show_where = getattr(record, SHOW_WHERE_ATTR, record.levelno != l.INFO)
|
236
|
+
if should_show_where or self.should_watch_memory_usage:
|
233
237
|
module = path_t(record.pathname)
|
234
238
|
for path in s.path:
|
235
239
|
if module.is_relative_to(path):
|
@@ -269,7 +273,7 @@ class logger_t(base_t):
|
|
269
273
|
|
270
274
|
self.events[record.levelno] += 1
|
271
275
|
|
272
|
-
if
|
276
|
+
if self.should_watch_memory_usage:
|
273
277
|
self.memory_usages.append((where, CurrentMemoryUsage()))
|
274
278
|
|
275
279
|
def SetLevel(self, level: int, /, *, which: handler_codes_h | str = "a") -> None:
|
@@ -417,7 +421,6 @@ class logger_t(base_t):
|
|
417
421
|
*,
|
418
422
|
name: str | None = None,
|
419
423
|
level: int = l.INFO,
|
420
|
-
should_store_memory_usage: bool = False,
|
421
424
|
message_width: int = -1,
|
422
425
|
formatter: l.Formatter | None = None,
|
423
426
|
should_still_hold_messages: bool = False,
|
@@ -429,9 +432,9 @@ class logger_t(base_t):
|
|
429
432
|
self._should_activate_log_interceptions = False
|
430
433
|
|
431
434
|
self._should_hold_messages = should_still_hold_messages
|
435
|
+
|
432
436
|
handler = handler_t.New(
|
433
437
|
name=name,
|
434
|
-
should_store_memory_usage=should_store_memory_usage,
|
435
438
|
message_width=message_width,
|
436
439
|
level=level,
|
437
440
|
formatter=formatter,
|
@@ -439,31 +442,26 @@ class logger_t(base_t):
|
|
439
442
|
)
|
440
443
|
base_t.addHandler(self, handler)
|
441
444
|
|
442
|
-
extension = getattr(handler, "extension", None)
|
443
|
-
if extension is None:
|
444
|
-
name = handler.name
|
445
|
-
if (name is None) or (name.__len__() == 0):
|
446
|
-
name = ANONYMOUS
|
447
|
-
else:
|
448
|
-
name = getattr(extension, "name", ANONYMOUS)
|
449
|
-
if getattr(extension, STORE_MEMORY_ATTR, False):
|
450
|
-
self.any_handler_stores_memory = True
|
451
|
-
|
452
445
|
path = getattr(handler, "baseFilename", "")
|
453
446
|
if isinstance(path, path_t) or (path.__len__() > 0):
|
454
447
|
path = f"\nPath: {path}"
|
455
|
-
|
456
448
|
self.info(
|
457
|
-
f'New handler "{name}" of type "{type(handler).__name__}" and '
|
449
|
+
f'New handler "{handler.name}" of type "{type(handler).__name__}" and '
|
458
450
|
f"level {handler.level}={l.getLevelName(handler.level)}{path}"
|
459
451
|
)
|
460
452
|
|
461
453
|
def __call__(self, *args, **kwargs) -> None:
|
462
454
|
"""
|
463
|
-
For a print-like calling.
|
455
|
+
For a print-like calling for print-based debugging.
|
464
456
|
"""
|
457
|
+
frame = e.stack(context=0)[1][0] # 1=caller.
|
458
|
+
details = e.getframeinfo(frame, context=0)
|
459
|
+
path = path_t(details.filename).relative_to(path_t.home())
|
460
|
+
where = f"{str(path)[:-3]}.{details.function}.{details.lineno}"
|
461
|
+
|
465
462
|
separator = kwargs.get("separator", " ")
|
466
|
-
|
463
|
+
|
464
|
+
self.info(where + "\n" + separator.join(map(str, args)))
|
467
465
|
|
468
466
|
def Log(
|
469
467
|
self,
|
@@ -510,7 +508,7 @@ class logger_t(base_t):
|
|
510
508
|
# - Why adding exception name here and not when removing caller?
|
511
509
|
formatted = "".join(lines)
|
512
510
|
message = f"Exception of type {type(exception).__name__}\n----\n{formatted}"
|
513
|
-
self.log(level, message, extra={
|
511
|
+
self.log(level, message, extra={SHOW_WHERE_ATTR: False})
|
514
512
|
|
515
513
|
def LogAsIs(self, message: str, /, *, indented: bool = False) -> None:
|
516
514
|
""""""
|
@@ -624,7 +622,7 @@ class logger_t(base_t):
|
|
624
622
|
formatted = "\n".join(lines)
|
625
623
|
"""
|
626
624
|
|
627
|
-
hide_where = {
|
625
|
+
hide_where = {SHOW_WHERE_ATTR: False}
|
628
626
|
if unified:
|
629
627
|
level, _ = issues[0].split(ISSUE_LEVEL_SEPARATOR, maxsplit=1)
|
630
628
|
wo_level = []
|
logger_36/version.py
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
logger_36/__init__.py,sha256=UhKxuQLS1Pfgt5H0K_7BaDAPejOUR8byD5BYRCnHQMQ,2655
|
2
|
-
logger_36/version.py,sha256=
|
2
|
+
logger_36/version.py,sha256=SlgS0Uo9sKB6vpjWQKryKeGsW_DST0lxy888VpF5J5Q,2206
|
3
3
|
logger_36/api/content.py,sha256=clHYYUKa8n4qef6PVlUV4mFHRRf6fnm9wEd2fu9oagA,2381
|
4
4
|
logger_36/api/gpu.py,sha256=BOumedCAPWvCo7J-KJ3XE-jr5S0KSmgcFv_S4QKRPO8,2252
|
5
5
|
logger_36/api/memory.py,sha256=szJVk4UTXsbYv3B-W9LFttf1F3j86GXHsKgEUOsXKl4,2743
|
@@ -9,13 +9,13 @@ logger_36/api/time.py,sha256=Uw1jQtY1njsRuIPRAXX44v4nPOo84MSBu_WK_YCRzQs,2324
|
|
9
9
|
logger_36/api/type.py,sha256=4m5fZGI6LOQvFakEStFv6HTP4FY9nyFpNNlK34rCfQw,2286
|
10
10
|
logger_36/catalog/config/console_rich.py,sha256=lAa5Ev5BhXvmQzfIt1FNihMNUQJFlXaIzNanAMdgtd0,2861
|
11
11
|
logger_36/catalog/config/optional.py,sha256=HaN6mbx7gHBBppNvUw1ckhYTOrlYqb-b_r0mzPcHPjM,2398
|
12
|
-
logger_36/catalog/handler/console.py,sha256=
|
13
|
-
logger_36/catalog/handler/console_rich.py,sha256=
|
14
|
-
logger_36/catalog/handler/file.py,sha256=
|
15
|
-
logger_36/catalog/handler/generic.py,sha256=
|
12
|
+
logger_36/catalog/handler/console.py,sha256=nczZAIlkolkuTG5TMipqJJTtlwg58HQE1q-9hVyelCg,2951
|
13
|
+
logger_36/catalog/handler/console_rich.py,sha256=cZHFM9fHxdEnzhVg1S94wa0P_QOSTO4O1oQxigpNA0s,6907
|
14
|
+
logger_36/catalog/handler/file.py,sha256=jZEoKPUjK5MlvzxgxXICH7jJLnHr7vDw42tv7GqopiA,3181
|
15
|
+
logger_36/catalog/handler/generic.py,sha256=nfJSi0mghbSfSfZa4VV5jTetDV8ykEIkkRxRkIC084Y,7989
|
16
16
|
logger_36/catalog/logger/chronos.py,sha256=ocY13f98EfknU7wZCv0FS9Xb7pTNaWCPSusXFIEvEd4,2437
|
17
17
|
logger_36/catalog/logger/gpu.py,sha256=ybn7Q8exiqoigvNpzEhg0Zp027WogypuNJwfsQ1pRY4,3416
|
18
|
-
logger_36/catalog/logger/memory.py,sha256=
|
18
|
+
logger_36/catalog/logger/memory.py,sha256=aSLHDQPacPE2FJlpBRItVhQA0KxzkFDFPXPn3TcZ8Dg,4779
|
19
19
|
logger_36/catalog/logger/system.py,sha256=3VWbceSAknZwmRhEfd8pkuLwU2B8zPhCGNGQE0h5KLo,3065
|
20
20
|
logger_36/config/issue.py,sha256=G-i5p6lhZCLAOa-VTMyL9ZonvGCvhdoQ5KZdSWgP-FU,2267
|
21
21
|
logger_36/config/memory.py,sha256=yCX5phsB_KJMr5xHpVUeOHFhAA7p_8yahP3X28VndOY,2217
|
@@ -23,14 +23,14 @@ logger_36/config/message.py,sha256=mgPcMS7qWBuqP2w5NoHw1df32kcVToVhisozb32_EII,2
|
|
23
23
|
logger_36/config/system.py,sha256=HD8ZuwsXhEAExeZrww8YoDkQGMs4T5RDqQMb1W4qVgc,2477
|
24
24
|
logger_36/constant/error.py,sha256=LzsS_P1IoH3ct_ifNWi9LzJ-X_Y5DN1naTLwwIFzDQA,2827
|
25
25
|
logger_36/constant/generic.py,sha256=t6aRb66_NHwMhR1p7BZ4QXTU2jpLz-H5YAL4PuMtKx8,2244
|
26
|
-
logger_36/constant/handler.py,sha256=
|
26
|
+
logger_36/constant/handler.py,sha256=tnTr6JvObgL6LPIX77HR5uXQvwqAT8hbKvEWfKkzlCo,2351
|
27
27
|
logger_36/constant/html.py,sha256=-m1CDyDN0kkurloEtJeqBsyxy9nXCImIMGLwEIF33M0,2515
|
28
28
|
logger_36/constant/issue.py,sha256=01l8itRPWGS5F6gXtsXUJgGR-4lS1Eu3_YeKC-khKLw,2315
|
29
29
|
logger_36/constant/logger.py,sha256=2qRkteblpbHrq9x0aiw9MPquyXrSRd6_yMQnPEhFp2U,2468
|
30
30
|
logger_36/constant/memory.py,sha256=ZL1MwbdtNsrCrOwzEyfTsfOoOsRBTJtbbf3otHGnxXo,2343
|
31
31
|
logger_36/constant/message.py,sha256=Ys_CAyhENlT8Z3rr-AxO4hjdl1jLsKzVSPQ8wqLOCPQ,2838
|
32
|
-
logger_36/constant/path.py,sha256=
|
33
|
-
logger_36/constant/record.py,sha256=
|
32
|
+
logger_36/constant/path.py,sha256=hNT_Ut8NMWVW826eUZsJ5ieFeihFKXZBcLOUszJYn8g,2753
|
33
|
+
logger_36/constant/record.py,sha256=D_VDC5m5_LGcoV6YBb5hE6CLioUPFGX8hzcMdMazRoM,2260
|
34
34
|
logger_36/constant/system.py,sha256=G2mzBTxRXoJMxb53TnmBaceMJC_q3WonoCG7y6nC_R8,2430
|
35
35
|
logger_36/extension/html_.py,sha256=J9EX8-Rotq9i8bZ9U-dIpXv5gKLLnLmWqdDy4XayT1Q,3868
|
36
36
|
logger_36/extension/line.py,sha256=3MJ3B5PXJn18RHxBUcWnNBLEYzb7VTcEAufn7ULdYfY,3143
|
@@ -43,12 +43,12 @@ logger_36/task/format/message.py,sha256=5mR9CZaARy9q-JtIX68IyY-DKTepkxyRV7juByqB
|
|
43
43
|
logger_36/task/format/rule.py,sha256=CtR7d2X-pZFKdqG6Y2_3b5AMKg_J274Jq69kht0N6xs,2910
|
44
44
|
logger_36/task/measure/chronos.py,sha256=1kVhu6jZlNAtNWQQh8ZVuRwZIAC9gGz3_ul1tn0t4Yw,3055
|
45
45
|
logger_36/task/measure/memory.py,sha256=OjU5EYFH8SnzlCQKAoiXvauUlwQYOrH34jFXTVYF0jE,2517
|
46
|
-
logger_36/type/handler.py,sha256=
|
46
|
+
logger_36/type/handler.py,sha256=RlYVGxP6jfLqKJH-KvJBunPrjmcQ-gcoQzr6Hw4dOdk,5962
|
47
47
|
logger_36/type/issue.py,sha256=2rGsFqaQJCbeml9xN08mN_nK79L8qscaS_0ws36Y0bI,3214
|
48
|
-
logger_36/type/logger.py,sha256=
|
48
|
+
logger_36/type/logger.py,sha256=6q_9nbbumyF0aXupl36Xc_06gJ2aE7k39ZQwSffXQnI,26319
|
49
49
|
logger_36/type/loggers.py,sha256=KLPoZ8UtQNhUw6MVu2pBcbSsIMKzgTaoxCulS1z2zPU,3748
|
50
50
|
logger_36/type/message.py,sha256=zKME5p87ynsXte_b5usXV3VHaj34Uezs9Gg_WVWfaeY,3063
|
51
|
-
logger_36-2025.
|
52
|
-
logger_36-2025.
|
53
|
-
logger_36-2025.
|
54
|
-
logger_36-2025.
|
51
|
+
logger_36-2025.17.dist-info/METADATA,sha256=lniQQRbIv0AHbWw_iEoVZjm3ZKBTKQW-1BXXXdKv6fs,6506
|
52
|
+
logger_36-2025.17.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
53
|
+
logger_36-2025.17.dist-info/top_level.txt,sha256=sM95BTMWmslEEgR_1pzwZsOeSp8C_QBiu8ImbFr0XLc,10
|
54
|
+
logger_36-2025.17.dist-info/RECORD,,
|
File without changes
|
File without changes
|