logger-36 2024.17__py3-none-any.whl → 2024.19__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/__init__.py +0 -7
- logger_36/catalog/config/console_rich.py +3 -0
- logger_36/catalog/handler/console_rich.py +78 -32
- logger_36/catalog/handler/generic.py +32 -3
- logger_36/config/logger.py +103 -0
- logger_36/format.py +59 -0
- logger_36/{main.py → handler.py} +8 -43
- logger_36/logger.py +56 -0
- logger_36/logger_gpu.py +53 -0
- logger_36/measure.py +55 -0
- logger_36/storage.py +53 -0
- logger_36/task/measure/memory.py +1 -1
- logger_36/task/storage.py +10 -12
- logger_36/type/handler.py +2 -2
- logger_36/type/logger.py +13 -6
- logger_36/version.py +1 -1
- {logger_36-2024.17.dist-info → logger_36-2024.19.dist-info}/METADATA +1 -1
- {logger_36-2024.17.dist-info → logger_36-2024.19.dist-info}/RECORD +25 -19
- {logger_36-2024.17.dist-info → logger_36-2024.19.dist-info}/WHEEL +1 -1
- /logger_36/catalog/{logging → logger}/chronos.py +0 -0
- /logger_36/catalog/{logging → logger}/exception.py +0 -0
- /logger_36/catalog/{logging → logger}/gpu.py +0 -0
- /logger_36/catalog/{logging → logger}/memory.py +0 -0
- /logger_36/catalog/{logging → logger}/system.py +0 -0
- {logger_36-2024.17.dist-info → logger_36-2024.19.dist-info}/top_level.txt +0 -0
logger_36/__init__.py
CHANGED
@@ -5,13 +5,6 @@ SEE COPYRIGHT NOTICE BELOW
|
|
5
5
|
"""
|
6
6
|
|
7
7
|
from logger_36.instance.logger import LOGGER
|
8
|
-
from logger_36.main import (
|
9
|
-
AddConsoleHandler,
|
10
|
-
AddFileHandler,
|
11
|
-
AddGenericHandler,
|
12
|
-
AddRichConsoleHandler,
|
13
|
-
)
|
14
|
-
from logger_36.task.format.message import FormattedMessage
|
15
8
|
from logger_36.type.logger import logger_t
|
16
9
|
from logger_36.version import __version__
|
17
10
|
|
@@ -24,6 +24,9 @@ ACTUAL_COLOR = "indian_red"
|
|
24
24
|
EXPECTED_COLOR = "green"
|
25
25
|
ELAPSED_TIME_COLOR = "green"
|
26
26
|
|
27
|
+
ALTERNATIVE_BACKGROUND_FOR_LIGHT = style_t(bgcolor=color_t.from_rgb(230, 230, 230))
|
28
|
+
ALTERNATIVE_BACKGROUND_FOR_DARK = style_t(bgcolor=color_t.from_rgb(25, 25, 25))
|
29
|
+
|
27
30
|
GRAY_STYLE = style_t(color=color_t.from_rgb(150, 150, 150))
|
28
31
|
|
29
32
|
"""
|
@@ -10,6 +10,8 @@ import typing as h
|
|
10
10
|
|
11
11
|
from logger_36.catalog.config.console_rich import (
|
12
12
|
ACTUAL_COLOR,
|
13
|
+
ALTERNATIVE_BACKGROUND_FOR_DARK,
|
14
|
+
ALTERNATIVE_BACKGROUND_FOR_LIGHT,
|
13
15
|
DATE_TIME_COLOR,
|
14
16
|
ELAPSED_TIME_COLOR,
|
15
17
|
EXPECTED_COLOR,
|
@@ -49,9 +51,20 @@ _EXCLUSIVE_TRACEBACK_ARGUMENTS = (
|
|
49
51
|
|
50
52
|
@d.dataclass(slots=True, repr=False, eq=False)
|
51
53
|
class console_rich_handler_t(lggg.Handler):
|
54
|
+
"""
|
55
|
+
alternating_lines:
|
56
|
+
- Initial value:
|
57
|
+
- 1: enabled for dark background
|
58
|
+
- 2: enabled for light background
|
59
|
+
- anything else: disabled
|
60
|
+
- Runtime value: 0/1=do not/do highlight next time.
|
61
|
+
"""
|
62
|
+
|
52
63
|
extension: handler_extension_t = d.field(init=False)
|
53
64
|
console: console_t = d.field(init=False)
|
54
65
|
FormattedLines: h.Callable[..., tuple[str, str | None]] = d.field(init=False)
|
66
|
+
alternating_lines: int = 0
|
67
|
+
background_is_light: bool = True
|
55
68
|
|
56
69
|
name: d.InitVar[str | None] = None
|
57
70
|
level: d.InitVar[int] = lggg.NOTSET
|
@@ -60,6 +73,7 @@ class console_rich_handler_t(lggg.Handler):
|
|
60
73
|
message_width: d.InitVar[int] = -1
|
61
74
|
formatter: d.InitVar[lggg.Formatter | None] = None
|
62
75
|
should_install_traceback: d.InitVar[bool] = False
|
76
|
+
should_record: d.InitVar[bool] = False
|
63
77
|
|
64
78
|
rich_kwargs: d.InitVar[dict[str, h.Any] | None] = None
|
65
79
|
|
@@ -72,6 +86,7 @@ class console_rich_handler_t(lggg.Handler):
|
|
72
86
|
message_width: int,
|
73
87
|
formatter: lggg.Formatter | None,
|
74
88
|
should_install_traceback: bool,
|
89
|
+
should_record: bool,
|
75
90
|
rich_kwargs: dict[str, h.Any] | None,
|
76
91
|
) -> None:
|
77
92
|
""""""
|
@@ -103,7 +118,7 @@ class console_rich_handler_t(lggg.Handler):
|
|
103
118
|
self.console = console_t(
|
104
119
|
highlight=False,
|
105
120
|
force_terminal=True,
|
106
|
-
record=
|
121
|
+
record=should_record,
|
107
122
|
**rich_console_kwargs,
|
108
123
|
)
|
109
124
|
if should_install_traceback:
|
@@ -111,52 +126,83 @@ class console_rich_handler_t(lggg.Handler):
|
|
111
126
|
InstallTracebackHandler(**rich_traceback_kwargs)
|
112
127
|
|
113
128
|
self.FormattedLines = self.extension.FormattedLines
|
129
|
+
if self.alternating_lines == 1:
|
130
|
+
self.alternating_lines = 0
|
131
|
+
self.background_is_light = False
|
132
|
+
elif self.alternating_lines == 2:
|
133
|
+
self.alternating_lines = 0
|
134
|
+
self.background_is_light = True
|
135
|
+
else:
|
136
|
+
self.alternating_lines = -1
|
114
137
|
|
115
138
|
def emit(self, record: lggg.LogRecord, /) -> None:
|
116
139
|
""""""
|
117
|
-
cls = self.__class__
|
118
140
|
if hasattr(record, SHOW_W_RULE_ATTR):
|
119
141
|
richer = Rule(record.msg, DATE_TIME_COLOR)
|
120
142
|
else:
|
121
143
|
first, next_s = self.FormattedLines(record, PreProcessed=EscapedForRich)
|
122
|
-
|
144
|
+
should_highlight_back = self.alternating_lines == 1
|
145
|
+
if self.alternating_lines >= 0:
|
146
|
+
self.alternating_lines = (self.alternating_lines + 1) % 2
|
147
|
+
richer = HighlightedVersion(
|
148
|
+
self.console,
|
149
|
+
first,
|
150
|
+
next_s,
|
151
|
+
record.levelno,
|
152
|
+
should_highlight_back=should_highlight_back,
|
153
|
+
background_is_light=self.background_is_light,
|
154
|
+
)
|
123
155
|
self.console.print(richer, crop=False, overflow="ignore")
|
124
156
|
|
125
157
|
def ShowMessage(self, message: str, /) -> None:
|
126
158
|
""""""
|
127
159
|
self.console.print(message, crop=False, overflow="ignore")
|
128
160
|
|
129
|
-
@classmethod
|
130
|
-
def HighlightedVersion(
|
131
|
-
cls, first_line: str, next_lines: str | None, log_level: int, /
|
132
|
-
) -> renderable_t:
|
133
|
-
""""""
|
134
|
-
output = text_t(first_line)
|
135
|
-
|
136
|
-
# Used instead of _CONTEXT_LENGTH which might include \t, thus creating a
|
137
|
-
# mismatch between character length and length when displayed in console.
|
138
|
-
context_end = first_line.find(LEVEL_CLOSING)
|
139
|
-
elapsed_time_separator = first_line.rfind(ELAPSED_TIME_SEPARATOR)
|
140
|
-
where_separator = first_line.rfind(
|
141
|
-
WHERE_SEPARATOR, context_end, elapsed_time_separator
|
142
|
-
)
|
143
|
-
|
144
|
-
output.stylize(DATE_TIME_COLOR, end=TIME_LENGTH)
|
145
|
-
output.stylize(
|
146
|
-
LEVEL_COLOR[log_level],
|
147
|
-
start=TIME_LENGTH,
|
148
|
-
end=context_end + 1,
|
149
|
-
)
|
150
|
-
output.stylize(GRAY_STYLE, start=where_separator, end=elapsed_time_separator)
|
151
|
-
output.stylize(ELAPSED_TIME_COLOR, start=elapsed_time_separator)
|
152
|
-
|
153
|
-
if next_lines is not None:
|
154
|
-
output.append(next_lines)
|
155
161
|
|
156
|
-
|
157
|
-
|
162
|
+
def HighlightedVersion(
|
163
|
+
_: console_t,
|
164
|
+
first_line: str,
|
165
|
+
next_lines: str | None,
|
166
|
+
log_level: int,
|
167
|
+
/,
|
168
|
+
*,
|
169
|
+
should_highlight_back: bool = False,
|
170
|
+
background_is_light: bool = True,
|
171
|
+
) -> renderable_t:
|
172
|
+
""""""
|
173
|
+
output = text_t(first_line)
|
174
|
+
|
175
|
+
# Used instead of _CONTEXT_LENGTH which might include \t, thus creating a
|
176
|
+
# mismatch between character length and length when displayed in console.
|
177
|
+
context_end = first_line.find(LEVEL_CLOSING)
|
178
|
+
elapsed_time_separator = first_line.rfind(ELAPSED_TIME_SEPARATOR)
|
179
|
+
where_separator = first_line.rfind(
|
180
|
+
WHERE_SEPARATOR, context_end, elapsed_time_separator
|
181
|
+
)
|
182
|
+
|
183
|
+
output.stylize(DATE_TIME_COLOR, end=TIME_LENGTH)
|
184
|
+
output.stylize(
|
185
|
+
LEVEL_COLOR[log_level],
|
186
|
+
start=TIME_LENGTH,
|
187
|
+
end=context_end + 1,
|
188
|
+
)
|
189
|
+
output.stylize(GRAY_STYLE, start=where_separator, end=elapsed_time_separator)
|
190
|
+
output.stylize(ELAPSED_TIME_COLOR, start=elapsed_time_separator)
|
191
|
+
|
192
|
+
if next_lines is not None:
|
193
|
+
output.append(next_lines)
|
194
|
+
|
195
|
+
_ = output.highlight_regex(ACTUAL_PATTERNS, style=ACTUAL_COLOR)
|
196
|
+
_ = output.highlight_regex(EXPECTED_PATTERNS, style=EXPECTED_COLOR)
|
197
|
+
|
198
|
+
if should_highlight_back:
|
199
|
+
if background_is_light:
|
200
|
+
style = ALTERNATIVE_BACKGROUND_FOR_LIGHT
|
201
|
+
else:
|
202
|
+
style = ALTERNATIVE_BACKGROUND_FOR_DARK
|
203
|
+
output.stylize(style)
|
158
204
|
|
159
|
-
|
205
|
+
return output
|
160
206
|
|
161
207
|
|
162
208
|
"""
|
@@ -10,7 +10,7 @@ import typing as h
|
|
10
10
|
|
11
11
|
try:
|
12
12
|
from logger_36.catalog.config.console_rich import DATE_TIME_COLOR
|
13
|
-
from logger_36.catalog.handler.console_rich import
|
13
|
+
from logger_36.catalog.handler.console_rich import HighlightedVersion
|
14
14
|
from rich.console import Console as console_t
|
15
15
|
from rich.console import ConsoleOptions as console_options_t
|
16
16
|
from rich.markup import escape as EscapedForRich
|
@@ -32,11 +32,21 @@ interface_h = can_show_message_p | h.Callable[[str], None]
|
|
32
32
|
|
33
33
|
@d.dataclass(slots=True, repr=False, eq=False)
|
34
34
|
class generic_handler_t(lggg.Handler):
|
35
|
+
"""
|
36
|
+
alternating_lines:
|
37
|
+
- Initial value:
|
38
|
+
- 1: enabled for dark background
|
39
|
+
- 2: enabled for light background
|
40
|
+
- anything else: disabled
|
41
|
+
- Runtime value: 0/1=do not/do highlight next time.
|
42
|
+
"""
|
35
43
|
|
36
44
|
extension: handler_extension_t = d.field(init=False)
|
37
45
|
console: console_t = None
|
38
46
|
console_options: console_options_t = None
|
39
47
|
FormattedLines: h.Callable[..., tuple[str, str | None]] = d.field(init=False)
|
48
|
+
alternating_lines: int = 0
|
49
|
+
background_is_light: bool = True
|
40
50
|
ShowMessage: h.Callable[[str], None] = lambda _arg: None
|
41
51
|
|
42
52
|
name: d.InitVar[str | None] = None
|
@@ -47,6 +57,7 @@ class generic_handler_t(lggg.Handler):
|
|
47
57
|
formatter: d.InitVar[lggg.Formatter | None] = None
|
48
58
|
|
49
59
|
supports_html: d.InitVar[bool] = False
|
60
|
+
should_record: d.InitVar[bool] = (False,)
|
50
61
|
rich_kwargs: d.InitVar[dict[str, h.Any] | None] = None
|
51
62
|
interface: d.InitVar[interface_h | None] = None # Cannot be None actually.
|
52
63
|
|
@@ -59,6 +70,7 @@ class generic_handler_t(lggg.Handler):
|
|
59
70
|
message_width: int,
|
60
71
|
formatter: lggg.Formatter | None,
|
61
72
|
supports_html: bool,
|
73
|
+
should_record: bool,
|
62
74
|
rich_kwargs: dict[str, h.Any] | None,
|
63
75
|
interface: interface_h | None,
|
64
76
|
) -> None:
|
@@ -81,6 +93,7 @@ class generic_handler_t(lggg.Handler):
|
|
81
93
|
self.console = console_t(
|
82
94
|
highlight=False,
|
83
95
|
force_terminal=True,
|
96
|
+
record=should_record,
|
84
97
|
**rich_kwargs,
|
85
98
|
)
|
86
99
|
self.console_options = self.console.options.update(
|
@@ -88,6 +101,14 @@ class generic_handler_t(lggg.Handler):
|
|
88
101
|
)
|
89
102
|
|
90
103
|
self.FormattedLines = self.extension.FormattedLines
|
104
|
+
if self.alternating_lines == 1:
|
105
|
+
self.alternating_lines = 0
|
106
|
+
self.background_is_light = False
|
107
|
+
elif self.alternating_lines == 2:
|
108
|
+
self.alternating_lines = 0
|
109
|
+
self.background_is_light = True
|
110
|
+
else:
|
111
|
+
self.alternating_lines = -1
|
91
112
|
|
92
113
|
self.ShowMessage = getattr(
|
93
114
|
interface, can_show_message_p.ShowMessage.__name__, interface
|
@@ -105,8 +126,16 @@ class generic_handler_t(lggg.Handler):
|
|
105
126
|
richer = Rule(record.msg, DATE_TIME_COLOR)
|
106
127
|
else:
|
107
128
|
first, next_s = self.FormattedLines(record, PreProcessed=EscapedForRich)
|
108
|
-
|
109
|
-
|
129
|
+
should_highlight_back = self.alternating_lines == 1
|
130
|
+
if self.alternating_lines >= 0:
|
131
|
+
self.alternating_lines = (self.alternating_lines + 1) % 2
|
132
|
+
richer = HighlightedVersion(
|
133
|
+
self.console,
|
134
|
+
first,
|
135
|
+
next_s,
|
136
|
+
record.levelno,
|
137
|
+
should_highlight_back=should_highlight_back,
|
138
|
+
background_is_light=self.background_is_light,
|
110
139
|
)
|
111
140
|
segments = self.console.render(richer, options=self.console_options)
|
112
141
|
|
@@ -0,0 +1,103 @@
|
|
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 lggg
|
8
|
+
|
9
|
+
from logger_36.catalog.handler.console import console_handler_t
|
10
|
+
from logger_36.catalog.handler.console_rich import console_rich_handler_t
|
11
|
+
from logger_36.catalog.handler.file import file_handler_t
|
12
|
+
from logger_36.catalog.handler.generic import generic_handler_t
|
13
|
+
from logger_36.constant.handler import HANDLER_CODES, handler_codes_h
|
14
|
+
from logger_36.instance.logger import LOGGER
|
15
|
+
from logger_36.task.format.message import FormattedMessage
|
16
|
+
|
17
|
+
|
18
|
+
def SetLOGLevel(
|
19
|
+
level: int,
|
20
|
+
/,
|
21
|
+
*,
|
22
|
+
logger: lggg.Logger | None = None,
|
23
|
+
which: handler_codes_h | str = "a",
|
24
|
+
) -> None:
|
25
|
+
"""
|
26
|
+
which: g=generic, c=console, f=file, a=all, str=name.
|
27
|
+
"""
|
28
|
+
if logger is None:
|
29
|
+
logger = LOGGER
|
30
|
+
|
31
|
+
which_is_name = which not in HANDLER_CODES
|
32
|
+
found = False
|
33
|
+
for handler in logger.handlers:
|
34
|
+
if (
|
35
|
+
(which == "a")
|
36
|
+
or ((which == "g") and isinstance(handler, generic_handler_t))
|
37
|
+
or (
|
38
|
+
(which == "c")
|
39
|
+
and isinstance(handler, (console_handler_t, console_rich_handler_t))
|
40
|
+
)
|
41
|
+
or ((which == "f") and isinstance(handler, file_handler_t))
|
42
|
+
or (which == handler.name)
|
43
|
+
):
|
44
|
+
handler.setLevel(level)
|
45
|
+
if which_is_name:
|
46
|
+
return
|
47
|
+
found = True
|
48
|
+
|
49
|
+
if not found:
|
50
|
+
raise ValueError(
|
51
|
+
FormattedMessage(
|
52
|
+
"Handler not found",
|
53
|
+
actual=which,
|
54
|
+
expected=f"{str(HANDLER_CODES)[1:-1]}, or a handler name",
|
55
|
+
)
|
56
|
+
)
|
57
|
+
|
58
|
+
|
59
|
+
"""
|
60
|
+
COPYRIGHT NOTICE
|
61
|
+
|
62
|
+
This software is governed by the CeCILL license under French law and
|
63
|
+
abiding by the rules of distribution of free software. You can use,
|
64
|
+
modify and/ or redistribute the software under the terms of the CeCILL
|
65
|
+
license as circulated by CEA, CNRS and INRIA at the following URL
|
66
|
+
"http://www.cecill.info".
|
67
|
+
|
68
|
+
As a counterpart to the access to the source code and rights to copy,
|
69
|
+
modify and redistribute granted by the license, users are provided only
|
70
|
+
with a limited warranty and the software's author, the holder of the
|
71
|
+
economic rights, and the successive licensors have only limited
|
72
|
+
liability.
|
73
|
+
|
74
|
+
In this respect, the user's attention is drawn to the risks associated
|
75
|
+
with loading, using, modifying and/or developing or reproducing the
|
76
|
+
software by the user in light of its specific status of free software,
|
77
|
+
that may mean that it is complicated to manipulate, and that also
|
78
|
+
therefore means that it is reserved for developers and experienced
|
79
|
+
professionals having in-depth computer knowledge. Users are therefore
|
80
|
+
encouraged to load and test the software's suitability as regards their
|
81
|
+
requirements in conditions enabling the security of their systems and/or
|
82
|
+
data to be ensured and, more generally, to use and operate it in the
|
83
|
+
same conditions as regards security.
|
84
|
+
|
85
|
+
The fact that you are presently reading this means that you have had
|
86
|
+
knowledge of the CeCILL license and that you accept its terms.
|
87
|
+
|
88
|
+
SEE LICENCE NOTICE: file README-LICENCE-utf8.txt at project source root.
|
89
|
+
|
90
|
+
This software is being developed by Eric Debreuve, a CNRS employee and
|
91
|
+
member of team Morpheme.
|
92
|
+
Team Morpheme is a joint team between Inria, CNRS, and UniCA.
|
93
|
+
It is hosted by the Centre Inria d'Université Côte d'Azur, Laboratory
|
94
|
+
I3S, and Laboratory iBV.
|
95
|
+
|
96
|
+
CNRS: https://www.cnrs.fr/index.php/en
|
97
|
+
Inria: https://www.inria.fr/en/
|
98
|
+
UniCA: https://univ-cotedazur.eu/
|
99
|
+
Centre Inria d'Université Côte d'Azur: https://www.inria.fr/en/centre/sophia/
|
100
|
+
I3S: https://www.i3s.unice.fr/en/
|
101
|
+
iBV: http://ibv.unice.fr/
|
102
|
+
Team Morpheme: https://team.inria.fr/morpheme/
|
103
|
+
"""
|
logger_36/format.py
ADDED
@@ -0,0 +1,59 @@
|
|
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
|
+
from logger_36.task.format.memory import FormattedUsage as FormattedMemoryUsage
|
8
|
+
from logger_36.task.format.memory import (
|
9
|
+
FormattedUsageWithAutoUnit as FormattedMemoryUsageWithAutoUnit,
|
10
|
+
)
|
11
|
+
from logger_36.task.format.memory import UsageBar as MemoryUsageBar
|
12
|
+
from logger_36.task.format.message import FormattedMessage
|
13
|
+
from logger_36.task.format.rule import Rule, RuleAsText
|
14
|
+
|
15
|
+
"""
|
16
|
+
COPYRIGHT NOTICE
|
17
|
+
|
18
|
+
This software is governed by the CeCILL license under French law and
|
19
|
+
abiding by the rules of distribution of free software. You can use,
|
20
|
+
modify and/ or redistribute the software under the terms of the CeCILL
|
21
|
+
license as circulated by CEA, CNRS and INRIA at the following URL
|
22
|
+
"http://www.cecill.info".
|
23
|
+
|
24
|
+
As a counterpart to the access to the source code and rights to copy,
|
25
|
+
modify and redistribute granted by the license, users are provided only
|
26
|
+
with a limited warranty and the software's author, the holder of the
|
27
|
+
economic rights, and the successive licensors have only limited
|
28
|
+
liability.
|
29
|
+
|
30
|
+
In this respect, the user's attention is drawn to the risks associated
|
31
|
+
with loading, using, modifying and/or developing or reproducing the
|
32
|
+
software by the user in light of its specific status of free software,
|
33
|
+
that may mean that it is complicated to manipulate, and that also
|
34
|
+
therefore means that it is reserved for developers and experienced
|
35
|
+
professionals having in-depth computer knowledge. Users are therefore
|
36
|
+
encouraged to load and test the software's suitability as regards their
|
37
|
+
requirements in conditions enabling the security of their systems and/or
|
38
|
+
data to be ensured and, more generally, to use and operate it in the
|
39
|
+
same conditions as regards security.
|
40
|
+
|
41
|
+
The fact that you are presently reading this means that you have had
|
42
|
+
knowledge of the CeCILL license and that you accept its terms.
|
43
|
+
|
44
|
+
SEE LICENCE NOTICE: file README-LICENCE-utf8.txt at project source root.
|
45
|
+
|
46
|
+
This software is being developed by Eric Debreuve, a CNRS employee and
|
47
|
+
member of team Morpheme.
|
48
|
+
Team Morpheme is a joint team between Inria, CNRS, and UniCA.
|
49
|
+
It is hosted by the Centre Inria d'Université Côte d'Azur, Laboratory
|
50
|
+
I3S, and Laboratory iBV.
|
51
|
+
|
52
|
+
CNRS: https://www.cnrs.fr/index.php/en
|
53
|
+
Inria: https://www.inria.fr/en/
|
54
|
+
UniCA: https://univ-cotedazur.eu/
|
55
|
+
Centre Inria d'Université Côte d'Azur: https://www.inria.fr/en/centre/sophia/
|
56
|
+
I3S: https://www.i3s.unice.fr/en/
|
57
|
+
iBV: http://ibv.unice.fr/
|
58
|
+
Team Morpheme: https://team.inria.fr/morpheme/
|
59
|
+
"""
|
logger_36/{main.py → handler.py}
RENAMED
@@ -12,9 +12,7 @@ from logger_36.catalog.handler.console import console_handler_t
|
|
12
12
|
from logger_36.catalog.handler.file import file_handler_t
|
13
13
|
from logger_36.catalog.handler.generic import generic_handler_t, interface_h
|
14
14
|
from logger_36.constant.error import MISSING_RICH_ERROR
|
15
|
-
from logger_36.constant.handler import HANDLER_CODES, handler_codes_h
|
16
15
|
from logger_36.instance.logger import LOGGER
|
17
|
-
from logger_36.task.format.message import FormattedMessage
|
18
16
|
|
19
17
|
try:
|
20
18
|
from logger_36.catalog.handler.console_rich import console_rich_handler_t
|
@@ -40,6 +38,8 @@ def AddGenericHandler(
|
|
40
38
|
message_width: int = -1,
|
41
39
|
formatter: lggg.Formatter | None = None,
|
42
40
|
supports_html: bool = False,
|
41
|
+
alternating_lines: int = 2,
|
42
|
+
should_record: bool = False,
|
43
43
|
should_hold_messages: bool = False,
|
44
44
|
**kwargs,
|
45
45
|
) -> None:
|
@@ -55,6 +55,8 @@ def AddGenericHandler(
|
|
55
55
|
message_width=message_width,
|
56
56
|
formatter=formatter,
|
57
57
|
supports_html=supports_html,
|
58
|
+
alternating_lines=alternating_lines,
|
59
|
+
should_record=should_record,
|
58
60
|
rich_kwargs=kwargs,
|
59
61
|
interface=interface,
|
60
62
|
)
|
@@ -96,8 +98,10 @@ def AddRichConsoleHandler(
|
|
96
98
|
show_memory_usage: bool = False,
|
97
99
|
message_width: int = -1,
|
98
100
|
formatter: lggg.Formatter | None = None,
|
101
|
+
alternating_lines: int = 2,
|
99
102
|
should_hold_messages: bool = False,
|
100
103
|
should_install_traceback: bool = False,
|
104
|
+
should_record: bool = False,
|
101
105
|
**kwargs,
|
102
106
|
) -> None:
|
103
107
|
""""""
|
@@ -113,7 +117,9 @@ def AddRichConsoleHandler(
|
|
113
117
|
additional_s = {}
|
114
118
|
else:
|
115
119
|
additional_s = {
|
120
|
+
"alternating_lines": alternating_lines,
|
116
121
|
"should_install_traceback": should_install_traceback,
|
122
|
+
"should_record": should_record,
|
117
123
|
"rich_kwargs": kwargs,
|
118
124
|
}
|
119
125
|
handler = console_rich_handler_t(
|
@@ -164,47 +170,6 @@ def AddFileHandler(
|
|
164
170
|
logger.AddHandler(handler, should_hold_messages)
|
165
171
|
|
166
172
|
|
167
|
-
def SetLOGLevel(
|
168
|
-
level: int,
|
169
|
-
/,
|
170
|
-
*,
|
171
|
-
logger: lggg.Logger | None = None,
|
172
|
-
which: handler_codes_h | str = "a",
|
173
|
-
) -> None:
|
174
|
-
"""
|
175
|
-
which: g=generic, c=console, f=file, a=all, str=name.
|
176
|
-
"""
|
177
|
-
if logger is None:
|
178
|
-
logger = LOGGER
|
179
|
-
|
180
|
-
which_is_name = which not in HANDLER_CODES
|
181
|
-
found = False
|
182
|
-
for handler in logger.handlers:
|
183
|
-
if (
|
184
|
-
(which == "a")
|
185
|
-
or ((which == "g") and isinstance(handler, generic_handler_t))
|
186
|
-
or (
|
187
|
-
(which == "c")
|
188
|
-
and isinstance(handler, (console_handler_t, console_rich_handler_t))
|
189
|
-
)
|
190
|
-
or ((which == "f") and isinstance(handler, file_handler_t))
|
191
|
-
or (which == handler.name)
|
192
|
-
):
|
193
|
-
handler.setLevel(level)
|
194
|
-
if which_is_name:
|
195
|
-
return
|
196
|
-
found = True
|
197
|
-
|
198
|
-
if not found:
|
199
|
-
raise ValueError(
|
200
|
-
FormattedMessage(
|
201
|
-
"Handler not found",
|
202
|
-
actual=which,
|
203
|
-
expected=f"{str(HANDLER_CODES)[1:-1]}, or a handler name",
|
204
|
-
)
|
205
|
-
)
|
206
|
-
|
207
|
-
|
208
173
|
"""
|
209
174
|
COPYRIGHT NOTICE
|
210
175
|
|
logger_36/logger.py
ADDED
@@ -0,0 +1,56 @@
|
|
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
|
+
from logger_36.catalog.logger.chronos import LogElapsedTime
|
8
|
+
from logger_36.catalog.logger.exception import LogException
|
9
|
+
from logger_36.catalog.logger.memory import LogMaximumMemoryUsage, LogMemoryUsages
|
10
|
+
from logger_36.catalog.logger.system import LogSystemDetails
|
11
|
+
|
12
|
+
"""
|
13
|
+
COPYRIGHT NOTICE
|
14
|
+
|
15
|
+
This software is governed by the CeCILL license under French law and
|
16
|
+
abiding by the rules of distribution of free software. You can use,
|
17
|
+
modify and/ or redistribute the software under the terms of the CeCILL
|
18
|
+
license as circulated by CEA, CNRS and INRIA at the following URL
|
19
|
+
"http://www.cecill.info".
|
20
|
+
|
21
|
+
As a counterpart to the access to the source code and rights to copy,
|
22
|
+
modify and redistribute granted by the license, users are provided only
|
23
|
+
with a limited warranty and the software's author, the holder of the
|
24
|
+
economic rights, and the successive licensors have only limited
|
25
|
+
liability.
|
26
|
+
|
27
|
+
In this respect, the user's attention is drawn to the risks associated
|
28
|
+
with loading, using, modifying and/or developing or reproducing the
|
29
|
+
software by the user in light of its specific status of free software,
|
30
|
+
that may mean that it is complicated to manipulate, and that also
|
31
|
+
therefore means that it is reserved for developers and experienced
|
32
|
+
professionals having in-depth computer knowledge. Users are therefore
|
33
|
+
encouraged to load and test the software's suitability as regards their
|
34
|
+
requirements in conditions enabling the security of their systems and/or
|
35
|
+
data to be ensured and, more generally, to use and operate it in the
|
36
|
+
same conditions as regards security.
|
37
|
+
|
38
|
+
The fact that you are presently reading this means that you have had
|
39
|
+
knowledge of the CeCILL license and that you accept its terms.
|
40
|
+
|
41
|
+
SEE LICENCE NOTICE: file README-LICENCE-utf8.txt at project source root.
|
42
|
+
|
43
|
+
This software is being developed by Eric Debreuve, a CNRS employee and
|
44
|
+
member of team Morpheme.
|
45
|
+
Team Morpheme is a joint team between Inria, CNRS, and UniCA.
|
46
|
+
It is hosted by the Centre Inria d'Université Côte d'Azur, Laboratory
|
47
|
+
I3S, and Laboratory iBV.
|
48
|
+
|
49
|
+
CNRS: https://www.cnrs.fr/index.php/en
|
50
|
+
Inria: https://www.inria.fr/en/
|
51
|
+
UniCA: https://univ-cotedazur.eu/
|
52
|
+
Centre Inria d'Université Côte d'Azur: https://www.inria.fr/en/centre/sophia/
|
53
|
+
I3S: https://www.i3s.unice.fr/en/
|
54
|
+
iBV: http://ibv.unice.fr/
|
55
|
+
Team Morpheme: https://team.inria.fr/morpheme/
|
56
|
+
"""
|
logger_36/logger_gpu.py
ADDED
@@ -0,0 +1,53 @@
|
|
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
|
+
from logger_36.catalog.logger.gpu import LogGPURelatedDetails
|
8
|
+
|
9
|
+
"""
|
10
|
+
COPYRIGHT NOTICE
|
11
|
+
|
12
|
+
This software is governed by the CeCILL license under French law and
|
13
|
+
abiding by the rules of distribution of free software. You can use,
|
14
|
+
modify and/ or redistribute the software under the terms of the CeCILL
|
15
|
+
license as circulated by CEA, CNRS and INRIA at the following URL
|
16
|
+
"http://www.cecill.info".
|
17
|
+
|
18
|
+
As a counterpart to the access to the source code and rights to copy,
|
19
|
+
modify and redistribute granted by the license, users are provided only
|
20
|
+
with a limited warranty and the software's author, the holder of the
|
21
|
+
economic rights, and the successive licensors have only limited
|
22
|
+
liability.
|
23
|
+
|
24
|
+
In this respect, the user's attention is drawn to the risks associated
|
25
|
+
with loading, using, modifying and/or developing or reproducing the
|
26
|
+
software by the user in light of its specific status of free software,
|
27
|
+
that may mean that it is complicated to manipulate, and that also
|
28
|
+
therefore means that it is reserved for developers and experienced
|
29
|
+
professionals having in-depth computer knowledge. Users are therefore
|
30
|
+
encouraged to load and test the software's suitability as regards their
|
31
|
+
requirements in conditions enabling the security of their systems and/or
|
32
|
+
data to be ensured and, more generally, to use and operate it in the
|
33
|
+
same conditions as regards security.
|
34
|
+
|
35
|
+
The fact that you are presently reading this means that you have had
|
36
|
+
knowledge of the CeCILL license and that you accept its terms.
|
37
|
+
|
38
|
+
SEE LICENCE NOTICE: file README-LICENCE-utf8.txt at project source root.
|
39
|
+
|
40
|
+
This software is being developed by Eric Debreuve, a CNRS employee and
|
41
|
+
member of team Morpheme.
|
42
|
+
Team Morpheme is a joint team between Inria, CNRS, and UniCA.
|
43
|
+
It is hosted by the Centre Inria d'Université Côte d'Azur, Laboratory
|
44
|
+
I3S, and Laboratory iBV.
|
45
|
+
|
46
|
+
CNRS: https://www.cnrs.fr/index.php/en
|
47
|
+
Inria: https://www.inria.fr/en/
|
48
|
+
UniCA: https://univ-cotedazur.eu/
|
49
|
+
Centre Inria d'Université Côte d'Azur: https://www.inria.fr/en/centre/sophia/
|
50
|
+
I3S: https://www.i3s.unice.fr/en/
|
51
|
+
iBV: http://ibv.unice.fr/
|
52
|
+
Team Morpheme: https://team.inria.fr/morpheme/
|
53
|
+
"""
|
logger_36/measure.py
ADDED
@@ -0,0 +1,55 @@
|
|
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
|
+
from logger_36.task.measure.chronos import ElapsedTime, TimeStamp
|
8
|
+
from logger_36.task.measure.memory import CanCheckUsage as CanCheckMemoryUsage
|
9
|
+
from logger_36.task.measure.memory import CurrentUsage as CurrentMemoryUsage
|
10
|
+
|
11
|
+
"""
|
12
|
+
COPYRIGHT NOTICE
|
13
|
+
|
14
|
+
This software is governed by the CeCILL license under French law and
|
15
|
+
abiding by the rules of distribution of free software. You can use,
|
16
|
+
modify and/ or redistribute the software under the terms of the CeCILL
|
17
|
+
license as circulated by CEA, CNRS and INRIA at the following URL
|
18
|
+
"http://www.cecill.info".
|
19
|
+
|
20
|
+
As a counterpart to the access to the source code and rights to copy,
|
21
|
+
modify and redistribute granted by the license, users are provided only
|
22
|
+
with a limited warranty and the software's author, the holder of the
|
23
|
+
economic rights, and the successive licensors have only limited
|
24
|
+
liability.
|
25
|
+
|
26
|
+
In this respect, the user's attention is drawn to the risks associated
|
27
|
+
with loading, using, modifying and/or developing or reproducing the
|
28
|
+
software by the user in light of its specific status of free software,
|
29
|
+
that may mean that it is complicated to manipulate, and that also
|
30
|
+
therefore means that it is reserved for developers and experienced
|
31
|
+
professionals having in-depth computer knowledge. Users are therefore
|
32
|
+
encouraged to load and test the software's suitability as regards their
|
33
|
+
requirements in conditions enabling the security of their systems and/or
|
34
|
+
data to be ensured and, more generally, to use and operate it in the
|
35
|
+
same conditions as regards security.
|
36
|
+
|
37
|
+
The fact that you are presently reading this means that you have had
|
38
|
+
knowledge of the CeCILL license and that you accept its terms.
|
39
|
+
|
40
|
+
SEE LICENCE NOTICE: file README-LICENCE-utf8.txt at project source root.
|
41
|
+
|
42
|
+
This software is being developed by Eric Debreuve, a CNRS employee and
|
43
|
+
member of team Morpheme.
|
44
|
+
Team Morpheme is a joint team between Inria, CNRS, and UniCA.
|
45
|
+
It is hosted by the Centre Inria d'Université Côte d'Azur, Laboratory
|
46
|
+
I3S, and Laboratory iBV.
|
47
|
+
|
48
|
+
CNRS: https://www.cnrs.fr/index.php/en
|
49
|
+
Inria: https://www.inria.fr/en/
|
50
|
+
UniCA: https://univ-cotedazur.eu/
|
51
|
+
Centre Inria d'Université Côte d'Azur: https://www.inria.fr/en/centre/sophia/
|
52
|
+
I3S: https://www.i3s.unice.fr/en/
|
53
|
+
iBV: http://ibv.unice.fr/
|
54
|
+
Team Morpheme: https://team.inria.fr/morpheme/
|
55
|
+
"""
|
logger_36/storage.py
ADDED
@@ -0,0 +1,53 @@
|
|
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
|
+
from logger_36.task.storage import SaveLOGasHTML, html_reader_t
|
8
|
+
|
9
|
+
"""
|
10
|
+
COPYRIGHT NOTICE
|
11
|
+
|
12
|
+
This software is governed by the CeCILL license under French law and
|
13
|
+
abiding by the rules of distribution of free software. You can use,
|
14
|
+
modify and/ or redistribute the software under the terms of the CeCILL
|
15
|
+
license as circulated by CEA, CNRS and INRIA at the following URL
|
16
|
+
"http://www.cecill.info".
|
17
|
+
|
18
|
+
As a counterpart to the access to the source code and rights to copy,
|
19
|
+
modify and redistribute granted by the license, users are provided only
|
20
|
+
with a limited warranty and the software's author, the holder of the
|
21
|
+
economic rights, and the successive licensors have only limited
|
22
|
+
liability.
|
23
|
+
|
24
|
+
In this respect, the user's attention is drawn to the risks associated
|
25
|
+
with loading, using, modifying and/or developing or reproducing the
|
26
|
+
software by the user in light of its specific status of free software,
|
27
|
+
that may mean that it is complicated to manipulate, and that also
|
28
|
+
therefore means that it is reserved for developers and experienced
|
29
|
+
professionals having in-depth computer knowledge. Users are therefore
|
30
|
+
encouraged to load and test the software's suitability as regards their
|
31
|
+
requirements in conditions enabling the security of their systems and/or
|
32
|
+
data to be ensured and, more generally, to use and operate it in the
|
33
|
+
same conditions as regards security.
|
34
|
+
|
35
|
+
The fact that you are presently reading this means that you have had
|
36
|
+
knowledge of the CeCILL license and that you accept its terms.
|
37
|
+
|
38
|
+
SEE LICENCE NOTICE: file README-LICENCE-utf8.txt at project source root.
|
39
|
+
|
40
|
+
This software is being developed by Eric Debreuve, a CNRS employee and
|
41
|
+
member of team Morpheme.
|
42
|
+
Team Morpheme is a joint team between Inria, CNRS, and UniCA.
|
43
|
+
It is hosted by the Centre Inria d'Université Côte d'Azur, Laboratory
|
44
|
+
I3S, and Laboratory iBV.
|
45
|
+
|
46
|
+
CNRS: https://www.cnrs.fr/index.php/en
|
47
|
+
Inria: https://www.inria.fr/en/
|
48
|
+
UniCA: https://univ-cotedazur.eu/
|
49
|
+
Centre Inria d'Université Côte d'Azur: https://www.inria.fr/en/centre/sophia/
|
50
|
+
I3S: https://www.i3s.unice.fr/en/
|
51
|
+
iBV: http://ibv.unice.fr/
|
52
|
+
Team Morpheme: https://team.inria.fr/morpheme/
|
53
|
+
"""
|
logger_36/task/measure/memory.py
CHANGED
logger_36/task/storage.py
CHANGED
@@ -101,22 +101,20 @@ def SaveLOGasHTML(path: str | path_t | h.TextIO = None) -> None:
|
|
101
101
|
LOGGER.warning(f'{cannot_save}: File "{path}" already exists.')
|
102
102
|
return
|
103
103
|
|
104
|
-
console = None
|
105
|
-
found = False
|
106
104
|
for handler in LOGGER.handlers:
|
107
105
|
console = getattr(handler, "console", None)
|
108
|
-
if
|
106
|
+
if isinstance(console, console_t) and console.record:
|
107
|
+
html = console.export_html()
|
108
|
+
if actual_file:
|
109
|
+
with open(path, "w") as accessor:
|
110
|
+
accessor.write(html)
|
111
|
+
else:
|
112
|
+
path.write(html)
|
109
113
|
break
|
110
|
-
|
111
|
-
if found:
|
112
|
-
html = console.export_html()
|
113
|
-
if actual_file:
|
114
|
-
with open(path, "w") as accessor:
|
115
|
-
accessor.write(html)
|
116
|
-
else:
|
117
|
-
path.write(html)
|
118
114
|
else:
|
119
|
-
LOGGER.warning(
|
115
|
+
LOGGER.warning(
|
116
|
+
f"{cannot_save}: No handler has a RICH console with recording ON."
|
117
|
+
)
|
120
118
|
|
121
119
|
|
122
120
|
"""
|
logger_36/type/handler.py
CHANGED
@@ -18,7 +18,7 @@ from logger_36.constant.message import NEXT_LINE_PROLOGUE
|
|
18
18
|
from logger_36.constant.record import HIDE_WHERE_ATTR, SHOW_WHERE_ATTR
|
19
19
|
from logger_36.task.format.message import FormattedMessage, MessageFormat
|
20
20
|
from logger_36.task.measure.chronos import TimeStamp
|
21
|
-
from logger_36.task.measure.memory import
|
21
|
+
from logger_36.task.measure.memory import CanCheckUsage as CanCheckMemoryUsage
|
22
22
|
|
23
23
|
_MEMORY_MEASURE_ERROR = MEMORY_MEASURE_ERROR
|
24
24
|
|
@@ -53,7 +53,7 @@ class handler_extension_t:
|
|
53
53
|
if self.name is None:
|
54
54
|
self.name = TimeStamp()
|
55
55
|
|
56
|
-
if self.show_memory_usage and not
|
56
|
+
if self.show_memory_usage and not CanCheckMemoryUsage():
|
57
57
|
self.show_memory_usage = False
|
58
58
|
if _MEMORY_MEASURE_ERROR is not None:
|
59
59
|
print(_MEMORY_MEASURE_ERROR, file=sstm.stderr)
|
logger_36/type/logger.py
CHANGED
@@ -40,9 +40,10 @@ from logger_36.type.issue import NewIssue, issue_t
|
|
40
40
|
@d.dataclass(slots=True, repr=False, eq=False)
|
41
41
|
class logger_t(lggg.Logger):
|
42
42
|
name_: d.InitVar[str] = LOGGER_NAME
|
43
|
-
|
43
|
+
level_: d.InitVar[int] = lggg.NOTSET
|
44
44
|
activate_wrn_interceptions: d.InitVar[bool] = True
|
45
|
-
exit_on_error: bool = False
|
45
|
+
exit_on_error: bool = False # Implies exit_on_critical.
|
46
|
+
exit_on_critical: bool = False
|
46
47
|
# Must not be False until at least one handler has been added.
|
47
48
|
should_hold_messages: bool = True
|
48
49
|
|
@@ -58,15 +59,17 @@ class logger_t(lggg.Logger):
|
|
58
59
|
)
|
59
60
|
|
60
61
|
def __post_init__(
|
61
|
-
self, name_: str,
|
62
|
+
self, name_: str, level_: int, activate_wrn_interceptions: bool
|
62
63
|
) -> None:
|
63
64
|
""""""
|
64
65
|
lggg.Logger.__init__(self, name_)
|
65
|
-
self.setLevel(
|
66
|
-
self.propagate = False
|
66
|
+
self.setLevel(level_)
|
67
|
+
self.propagate = False # Part of lggg.Logger.
|
67
68
|
|
68
69
|
if activate_wrn_interceptions:
|
69
70
|
self._ActivateWarningInterceptions()
|
71
|
+
if self.exit_on_error:
|
72
|
+
self.exit_on_critical = True
|
70
73
|
|
71
74
|
def _ActivateWarningInterceptions(self) -> None:
|
72
75
|
"""
|
@@ -211,7 +214,11 @@ class logger_t(lggg.Logger):
|
|
211
214
|
else:
|
212
215
|
lggg.Logger.handle(self, record)
|
213
216
|
|
214
|
-
if self.
|
217
|
+
if (self.exit_on_critical and (record.levelno is lggg.CRITICAL)) or (
|
218
|
+
self.exit_on_error and (record.levelno is lggg.ERROR)
|
219
|
+
):
|
220
|
+
# Also works if self.exit_on_error and record.levelno is lggg.CRITICAL since
|
221
|
+
# __post_init__ set self.exit_on_critical if self.exit_on_error.
|
215
222
|
sstm.exit(1)
|
216
223
|
|
217
224
|
def AddContextLevel(self, new_level: str, /) -> None:
|
logger_36/version.py
CHANGED
@@ -1,17 +1,23 @@
|
|
1
|
-
logger_36/__init__.py,sha256=
|
2
|
-
logger_36/
|
3
|
-
logger_36/
|
4
|
-
logger_36/
|
1
|
+
logger_36/__init__.py,sha256=jHidpp6dmfJVdoiHkwTXBn1_u1HRaZj3BHS8jq71ZOE,2312
|
2
|
+
logger_36/format.py,sha256=mox36RRkNUWbeHo3XkGGlik2CoyswDvDehRDtZkrnD0,2558
|
3
|
+
logger_36/handler.py,sha256=wHMj4OyQrUdhAxk_MCvPTBT1Ig3BYpfbqxHYfp91fOU,6697
|
4
|
+
logger_36/logger.py,sha256=flRcn5-2L7yGfJusfnkQXzFQcX3Ljt-1_KWnA_I0new,2446
|
5
|
+
logger_36/logger_gpu.py,sha256=YYFk6aYQrBDJfxQaDm-ar16T6SlOSL6jJWTOgvpF4EU,2244
|
6
|
+
logger_36/measure.py,sha256=P507VNbVKAf4jYGnGX-3rlDrVbrYP0ZD3nxFmAFvhyI,2404
|
7
|
+
logger_36/storage.py,sha256=O8pDmiL0B3LJpKrhi8a9IMBXs6MwW6r1bMUn_cSDAaY,2246
|
8
|
+
logger_36/version.py,sha256=pk3jW0gVcV0DVsZOCeVxbuluEwh3R_zjxpQerFhYt0Q,2206
|
9
|
+
logger_36/catalog/config/console_rich.py,sha256=QDkgSs3I7ZULvkd1q4J1hdvgyB857JJcJWxM9fdL51Y,2883
|
5
10
|
logger_36/catalog/handler/console.py,sha256=1WLtmxZCBj0AxLu5xey3VIVBKm02bp-Rc-eZOiFtXnU,3893
|
6
|
-
logger_36/catalog/handler/console_rich.py,sha256=
|
11
|
+
logger_36/catalog/handler/console_rich.py,sha256=v57EFAvCaH5ABoZ24lFn1ObCe_EntHpqzW7RJLs6Lik,8681
|
7
12
|
logger_36/catalog/handler/file.py,sha256=GS5nsfp0j0mzPak7vz8E7U4e5H95os_qfDjdM1Ywf0g,4345
|
8
|
-
logger_36/catalog/handler/generic.py,sha256=
|
9
|
-
logger_36/catalog/
|
10
|
-
logger_36/catalog/
|
11
|
-
logger_36/catalog/
|
12
|
-
logger_36/catalog/
|
13
|
-
logger_36/catalog/
|
13
|
+
logger_36/catalog/handler/generic.py,sha256=IwHOE_KhviuJJKCp8-LU86X90Mp0HJO5V5fhiOhfN98,8126
|
14
|
+
logger_36/catalog/logger/chronos.py,sha256=eLqQw8N9vaGO23OCf5RrYDPbUeu7epUvDt9rH-dN7i0,2522
|
15
|
+
logger_36/catalog/logger/exception.py,sha256=sL7sZ_bjNoof2xgOXvBzAi2xHrj7Pmjfkfhjzuy6NGs,2708
|
16
|
+
logger_36/catalog/logger/gpu.py,sha256=vUFSP17e7U4nenMi5IMlDiP3cZvXe6nqEDpoqzTavdg,3490
|
17
|
+
logger_36/catalog/logger/memory.py,sha256=Zel_UCnHqGAqf_YuKpvjt0OIOo9vwKYpFM9g_2bjir0,4790
|
18
|
+
logger_36/catalog/logger/system.py,sha256=FQ3w1zIN1ab6y8QYtcYDULhyJYy4iwTwHoDs8Mi2IdQ,3159
|
14
19
|
logger_36/config/issue.py,sha256=G-i5p6lhZCLAOa-VTMyL9ZonvGCvhdoQ5KZdSWgP-FU,2267
|
20
|
+
logger_36/config/logger.py,sha256=1uzuguWShCU13LtPBPs7tgP_iSnl3SE5hF-iqieaBYQ,3742
|
15
21
|
logger_36/config/memory.py,sha256=yCX5phsB_KJMr5xHpVUeOHFhAA7p_8yahP3X28VndOY,2217
|
16
22
|
logger_36/config/message.py,sha256=SP5hq83WU2gr1G4drne-HLRwArH_ciLzE8ffUGLutc0,2649
|
17
23
|
logger_36/config/system.py,sha256=HD8ZuwsXhEAExeZrww8YoDkQGMs4T5RDqQMb1W4qVgc,2477
|
@@ -27,17 +33,17 @@ logger_36/constant/system.py,sha256=G2mzBTxRXoJMxb53TnmBaceMJC_q3WonoCG7y6nC_R8,
|
|
27
33
|
logger_36/instance/logger.py,sha256=ttKjl9MD7FUjqCWjv5w2hmmpDYxgaORcYf9NaaE9W_M,2246
|
28
34
|
logger_36/instance/loggers.py,sha256=RCWpC1NPAf6vXnFc9NqsSALv-x-FEzcH6k_OlxTxeQk,2251
|
29
35
|
logger_36/task/inspection.py,sha256=f9VkVrwMJ_ixV9rFu3XUNpmCbEgoo1tssqd2nMeGYLI,5028
|
30
|
-
logger_36/task/storage.py,sha256=
|
36
|
+
logger_36/task/storage.py,sha256=XaSeu-iBCa0N8HNpwCV7cLprj-lbOJocpTIKUgSOvsc,5668
|
31
37
|
logger_36/task/format/memory.py,sha256=ECOdHjdxIqXivOwtcmwpLDMYUrutIeOTCn1L4d3-U8k,4241
|
32
38
|
logger_36/task/format/message.py,sha256=X9qtXPxhXgCIjnRYBJn93vj4rW4I-7dJP6LaXD5Qu2o,4142
|
33
39
|
logger_36/task/format/rule.py,sha256=YEe8wG_QLy9vRZqmT2bWlvKT-Dxp4pGaZVmEuwwODyE,2598
|
34
40
|
logger_36/task/measure/chronos.py,sha256=t-y0bVm1SmF-3wI9pR9Bp6-qzVlsE94fZTZr5a_hZUA,2884
|
35
|
-
logger_36/task/measure/memory.py,sha256=
|
36
|
-
logger_36/type/handler.py,sha256=
|
41
|
+
logger_36/task/measure/memory.py,sha256=eVw5WOYLyn8o4O4mMArdX2MzsVuhhNDovjYEkk-MIaU,2504
|
42
|
+
logger_36/type/handler.py,sha256=BXpevZhLq5V_IdUfi_LZA4czzlH2SGLpgvbqUBe5X10,8311
|
37
43
|
logger_36/type/issue.py,sha256=cB8pSSJg9aqFPQ6yJr4TC2kJbngKGK8Hyq4ATBm6jAc,2973
|
38
|
-
logger_36/type/logger.py,sha256=
|
44
|
+
logger_36/type/logger.py,sha256=GaZQQDy6B0_5x2yOrV7r3W9ib7egSRQJCFRE_DpALYw,14669
|
39
45
|
logger_36/type/loggers.py,sha256=znqxWBnfQxvkg3VUfbTUvt3S6Kq0DAzWWepxQDt9suI,2871
|
40
|
-
logger_36-2024.
|
41
|
-
logger_36-2024.
|
42
|
-
logger_36-2024.
|
43
|
-
logger_36-2024.
|
46
|
+
logger_36-2024.19.dist-info/METADATA,sha256=p3u2INogEHx1jOHYVd6Qja2EmVeA-qe5dM2rcVuOfXc,6276
|
47
|
+
logger_36-2024.19.dist-info/WHEEL,sha256=-oYQCr74JF3a37z2nRlQays_SX2MqOANoqVjBBAP2yE,91
|
48
|
+
logger_36-2024.19.dist-info/top_level.txt,sha256=sM95BTMWmslEEgR_1pzwZsOeSp8C_QBiu8ImbFr0XLc,10
|
49
|
+
logger_36-2024.19.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|