logger-36 2024.19__py3-none-any.whl → 2024.21__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 +4 -1
- logger_36/catalog/handler/console_rich.py +4 -1
- logger_36/catalog/handler/file.py +4 -1
- logger_36/catalog/handler/generic.py +20 -22
- logger_36/handler.py +4 -3
- logger_36/logger.py +0 -1
- logger_36/type/logger.py +23 -4
- logger_36/version.py +1 -1
- {logger_36-2024.19.dist-info → logger_36-2024.21.dist-info}/METADATA +1 -1
- {logger_36-2024.19.dist-info → logger_36-2024.21.dist-info}/RECORD +12 -13
- {logger_36-2024.19.dist-info → logger_36-2024.21.dist-info}/WHEEL +1 -1
- logger_36/catalog/logger/exception.py +0 -74
- {logger_36-2024.19.dist-info → logger_36-2024.21.dist-info}/top_level.txt +0 -0
@@ -155,7 +155,10 @@ class console_rich_handler_t(lggg.Handler):
|
|
155
155
|
self.console.print(richer, crop=False, overflow="ignore")
|
156
156
|
|
157
157
|
def ShowMessage(self, message: str, /) -> None:
|
158
|
-
"""
|
158
|
+
"""
|
159
|
+
See documentation of
|
160
|
+
logger_36.catalog.handler.generic.generic_handler_t.ShowMessage.
|
161
|
+
"""
|
159
162
|
self.console.print(message, crop=False, overflow="ignore")
|
160
163
|
|
161
164
|
|
@@ -68,7 +68,10 @@ class file_handler_t(lggg.FileHandler):
|
|
68
68
|
self.stream.flush()
|
69
69
|
|
70
70
|
def ShowMessage(self, message: str, /) -> None:
|
71
|
-
"""
|
71
|
+
"""
|
72
|
+
See documentation of
|
73
|
+
logger_36.catalog.handler.generic.generic_handler_t.ShowMessage.
|
74
|
+
"""
|
72
75
|
print(message, file=self.stream)
|
73
76
|
self.stream.flush()
|
74
77
|
|
@@ -23,31 +23,35 @@ from logger_36.task.format.rule import Rule, RuleAsText
|
|
23
23
|
from logger_36.type.handler import handler_extension_t
|
24
24
|
|
25
25
|
|
26
|
-
class can_show_message_p(h.Protocol):
|
27
|
-
def ShowMessage(self, message: str, /) -> None: ...
|
28
|
-
|
29
|
-
|
30
|
-
interface_h = can_show_message_p | h.Callable[[str], None]
|
31
|
-
|
32
|
-
|
33
26
|
@d.dataclass(slots=True, repr=False, eq=False)
|
34
27
|
class generic_handler_t(lggg.Handler):
|
35
28
|
"""
|
36
29
|
alternating_lines:
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
30
|
+
- Initial value:
|
31
|
+
- 1: enabled for dark background
|
32
|
+
- 2: enabled for light background
|
33
|
+
- anything else: disabled
|
34
|
+
- Runtime value: 0/1=do not/do highlight next time.
|
35
|
+
|
36
|
+
ShowMessage:
|
37
|
+
Log a message as is, i.e. without formatting. If this is a method, it should
|
38
|
+
contain the same call(s) as the final ones in the emit methods that are used to
|
39
|
+
output the formatted log messages. This means that there is some code
|
40
|
+
duplication, but it avoids a (maybe negligible) slowing down that would arise
|
41
|
+
from calling this method at the end of the emit methods.
|
42
|
+
Here, since, by definition, the generic handler does not know how to output
|
43
|
+
messages, it is a callable attribute that must be set at instantiation time, and
|
44
|
+
it is indeed called at the end of the emit method.
|
42
45
|
"""
|
43
46
|
|
44
|
-
|
47
|
+
ShowMessage: h.Callable[[str], None]
|
45
48
|
console: console_t = None
|
46
49
|
console_options: console_options_t = None
|
47
|
-
FormattedLines: h.Callable[..., tuple[str, str | None]] = d.field(init=False)
|
48
50
|
alternating_lines: int = 0
|
49
51
|
background_is_light: bool = True
|
50
|
-
|
52
|
+
|
53
|
+
extension: handler_extension_t = d.field(init=False)
|
54
|
+
FormattedLines: h.Callable[..., tuple[str, str | None]] = d.field(init=False)
|
51
55
|
|
52
56
|
name: d.InitVar[str | None] = None
|
53
57
|
level: d.InitVar[int] = lggg.NOTSET
|
@@ -57,9 +61,8 @@ class generic_handler_t(lggg.Handler):
|
|
57
61
|
formatter: d.InitVar[lggg.Formatter | None] = None
|
58
62
|
|
59
63
|
supports_html: d.InitVar[bool] = False
|
60
|
-
should_record: d.InitVar[bool] =
|
64
|
+
should_record: d.InitVar[bool] = False
|
61
65
|
rich_kwargs: d.InitVar[dict[str, h.Any] | None] = None
|
62
|
-
interface: d.InitVar[interface_h | None] = None # Cannot be None actually.
|
63
66
|
|
64
67
|
def __post_init__(
|
65
68
|
self,
|
@@ -72,7 +75,6 @@ class generic_handler_t(lggg.Handler):
|
|
72
75
|
supports_html: bool,
|
73
76
|
should_record: bool,
|
74
77
|
rich_kwargs: dict[str, h.Any] | None,
|
75
|
-
interface: interface_h | None,
|
76
78
|
) -> None:
|
77
79
|
""""""
|
78
80
|
lggg.Handler.__init__(self)
|
@@ -110,10 +112,6 @@ class generic_handler_t(lggg.Handler):
|
|
110
112
|
else:
|
111
113
|
self.alternating_lines = -1
|
112
114
|
|
113
|
-
self.ShowMessage = getattr(
|
114
|
-
interface, can_show_message_p.ShowMessage.__name__, interface
|
115
|
-
)
|
116
|
-
|
117
115
|
def emit(self, record: lggg.LogRecord, /) -> None:
|
118
116
|
""""""
|
119
117
|
if self.console is None:
|
logger_36/handler.py
CHANGED
@@ -6,11 +6,12 @@ SEE COPYRIGHT NOTICE BELOW
|
|
6
6
|
|
7
7
|
import logging as lggg
|
8
8
|
import sys as sstm
|
9
|
+
import typing as h
|
9
10
|
from pathlib import Path as path_t
|
10
11
|
|
11
12
|
from logger_36.catalog.handler.console import console_handler_t
|
12
13
|
from logger_36.catalog.handler.file import file_handler_t
|
13
|
-
from logger_36.catalog.handler.generic import generic_handler_t
|
14
|
+
from logger_36.catalog.handler.generic import generic_handler_t
|
14
15
|
from logger_36.constant.error import MISSING_RICH_ERROR
|
15
16
|
from logger_36.instance.logger import LOGGER
|
16
17
|
|
@@ -27,7 +28,7 @@ except ModuleNotFoundError:
|
|
27
28
|
|
28
29
|
|
29
30
|
def AddGenericHandler(
|
30
|
-
|
31
|
+
ShowMessage: h.Callable[[str], None],
|
31
32
|
/,
|
32
33
|
*,
|
33
34
|
logger: lggg.Logger | None = None,
|
@@ -58,7 +59,7 @@ def AddGenericHandler(
|
|
58
59
|
alternating_lines=alternating_lines,
|
59
60
|
should_record=should_record,
|
60
61
|
rich_kwargs=kwargs,
|
61
|
-
|
62
|
+
ShowMessage=ShowMessage,
|
62
63
|
)
|
63
64
|
logger.AddHandler(handler, should_hold_messages)
|
64
65
|
|
logger_36/logger.py
CHANGED
@@ -5,7 +5,6 @@ SEE COPYRIGHT NOTICE BELOW
|
|
5
5
|
"""
|
6
6
|
|
7
7
|
from logger_36.catalog.logger.chronos import LogElapsedTime
|
8
|
-
from logger_36.catalog.logger.exception import LogException
|
9
8
|
from logger_36.catalog.logger.memory import LogMaximumMemoryUsage, LogMemoryUsages
|
10
9
|
from logger_36.catalog.logger.system import LogSystemDetails
|
11
10
|
|
logger_36/type/logger.py
CHANGED
@@ -7,7 +7,7 @@ SEE COPYRIGHT NOTICE BELOW
|
|
7
7
|
import dataclasses as d
|
8
8
|
import logging as lggg
|
9
9
|
import sys as sstm
|
10
|
-
import traceback as
|
10
|
+
import traceback as tcbk
|
11
11
|
import types as t
|
12
12
|
import typing as h
|
13
13
|
from datetime import datetime as dttm
|
@@ -221,6 +221,22 @@ class logger_t(lggg.Logger):
|
|
221
221
|
# __post_init__ set self.exit_on_critical if self.exit_on_error.
|
222
222
|
sstm.exit(1)
|
223
223
|
|
224
|
+
def error_for_exception(
|
225
|
+
self,
|
226
|
+
exception: Exception,
|
227
|
+
/,
|
228
|
+
*,
|
229
|
+
should_remove_caller: bool = False,
|
230
|
+
) -> None:
|
231
|
+
""""""
|
232
|
+
lines = tcbk.format_exception(exception)
|
233
|
+
if should_remove_caller:
|
234
|
+
message = "\n".join(lines[:1] + lines[2:])
|
235
|
+
else:
|
236
|
+
formatted = "".join(lines)
|
237
|
+
message = f"{type(exception).__name__}:\n{formatted}"
|
238
|
+
self.error(message)
|
239
|
+
|
224
240
|
def AddContextLevel(self, new_level: str, /) -> None:
|
225
241
|
""""""
|
226
242
|
self.context_levels.append(new_level)
|
@@ -292,11 +308,11 @@ class logger_t(lggg.Logger):
|
|
292
308
|
try:
|
293
309
|
raise level("\n" + issues)
|
294
310
|
except Exception as exception:
|
295
|
-
lines = ["Traceback (most recent call last):"] +
|
311
|
+
lines = ["Traceback (most recent call last):"] + tcbk.format_stack()[
|
296
312
|
:-1
|
297
313
|
]
|
298
314
|
lines[-1] = lines[-1][:-1]
|
299
|
-
lines.extend(
|
315
|
+
lines.extend(tcbk.format_exception_only(exception))
|
300
316
|
print("\n".join(lines), file=sstm.stderr)
|
301
317
|
sstm.exit(1)
|
302
318
|
|
@@ -305,7 +321,10 @@ class logger_t(lggg.Logger):
|
|
305
321
|
self.staged_issues.clear()
|
306
322
|
|
307
323
|
def ShowMessage(self, message: str, /) -> None:
|
308
|
-
"""
|
324
|
+
"""
|
325
|
+
See documentation of
|
326
|
+
logger_36.catalog.handler.generic.generic_handler_t.ShowMessage.
|
327
|
+
"""
|
309
328
|
for handler in self.handlers:
|
310
329
|
ShowMessage = getattr(handler, "ShowMessage", None)
|
311
330
|
if ShowMessage is not None:
|
logger_36/version.py
CHANGED
@@ -1,18 +1,17 @@
|
|
1
1
|
logger_36/__init__.py,sha256=jHidpp6dmfJVdoiHkwTXBn1_u1HRaZj3BHS8jq71ZOE,2312
|
2
2
|
logger_36/format.py,sha256=mox36RRkNUWbeHo3XkGGlik2CoyswDvDehRDtZkrnD0,2558
|
3
|
-
logger_36/handler.py,sha256=
|
4
|
-
logger_36/logger.py,sha256=
|
3
|
+
logger_36/handler.py,sha256=9KUu02RpKGKBR358gqS5G1Zut5C6MyBgGzRsQYFBAtY,6721
|
4
|
+
logger_36/logger.py,sha256=7LJtdT7TmfFsn6r34iTr6OGvEjXlU6hKXEO2c5Lm2zY,2386
|
5
5
|
logger_36/logger_gpu.py,sha256=YYFk6aYQrBDJfxQaDm-ar16T6SlOSL6jJWTOgvpF4EU,2244
|
6
6
|
logger_36/measure.py,sha256=P507VNbVKAf4jYGnGX-3rlDrVbrYP0ZD3nxFmAFvhyI,2404
|
7
7
|
logger_36/storage.py,sha256=O8pDmiL0B3LJpKrhi8a9IMBXs6MwW6r1bMUn_cSDAaY,2246
|
8
|
-
logger_36/version.py,sha256=
|
8
|
+
logger_36/version.py,sha256=rTDQY_iaCr8FcZO-_ELLxzcbp57fGX9nsGWkY7plJmk,2206
|
9
9
|
logger_36/catalog/config/console_rich.py,sha256=QDkgSs3I7ZULvkd1q4J1hdvgyB857JJcJWxM9fdL51Y,2883
|
10
|
-
logger_36/catalog/handler/console.py,sha256=
|
11
|
-
logger_36/catalog/handler/console_rich.py,sha256=
|
12
|
-
logger_36/catalog/handler/file.py,sha256=
|
13
|
-
logger_36/catalog/handler/generic.py,sha256=
|
10
|
+
logger_36/catalog/handler/console.py,sha256=SF9S3CUoEPp5dh7RrqotywDJjMgRp0rD9sO3eLVXnkA,4004
|
11
|
+
logger_36/catalog/handler/console_rich.py,sha256=Ti1k2E1ox4egzicghTb9Wv30xiWaBbWwe8ouopJsujY,8792
|
12
|
+
logger_36/catalog/handler/file.py,sha256=z5ovaOxemh61pbWDCK2sMMlbd1TKwGjMiQhgoicilm4,4456
|
13
|
+
logger_36/catalog/handler/generic.py,sha256=wG6Z1-lHj_9o6cPurEVpPctFlec3BFeqx2mZU_krJt8,8379
|
14
14
|
logger_36/catalog/logger/chronos.py,sha256=eLqQw8N9vaGO23OCf5RrYDPbUeu7epUvDt9rH-dN7i0,2522
|
15
|
-
logger_36/catalog/logger/exception.py,sha256=sL7sZ_bjNoof2xgOXvBzAi2xHrj7Pmjfkfhjzuy6NGs,2708
|
16
15
|
logger_36/catalog/logger/gpu.py,sha256=vUFSP17e7U4nenMi5IMlDiP3cZvXe6nqEDpoqzTavdg,3490
|
17
16
|
logger_36/catalog/logger/memory.py,sha256=Zel_UCnHqGAqf_YuKpvjt0OIOo9vwKYpFM9g_2bjir0,4790
|
18
17
|
logger_36/catalog/logger/system.py,sha256=FQ3w1zIN1ab6y8QYtcYDULhyJYy4iwTwHoDs8Mi2IdQ,3159
|
@@ -41,9 +40,9 @@ logger_36/task/measure/chronos.py,sha256=t-y0bVm1SmF-3wI9pR9Bp6-qzVlsE94fZTZr5a_
|
|
41
40
|
logger_36/task/measure/memory.py,sha256=eVw5WOYLyn8o4O4mMArdX2MzsVuhhNDovjYEkk-MIaU,2504
|
42
41
|
logger_36/type/handler.py,sha256=BXpevZhLq5V_IdUfi_LZA4czzlH2SGLpgvbqUBe5X10,8311
|
43
42
|
logger_36/type/issue.py,sha256=cB8pSSJg9aqFPQ6yJr4TC2kJbngKGK8Hyq4ATBm6jAc,2973
|
44
|
-
logger_36/type/logger.py,sha256=
|
43
|
+
logger_36/type/logger.py,sha256=W6U0t_M6juGoc5cGb9vdwk29LhNeg2Sa-VeOKiWJrac,15234
|
45
44
|
logger_36/type/loggers.py,sha256=znqxWBnfQxvkg3VUfbTUvt3S6Kq0DAzWWepxQDt9suI,2871
|
46
|
-
logger_36-2024.
|
47
|
-
logger_36-2024.
|
48
|
-
logger_36-2024.
|
49
|
-
logger_36-2024.
|
45
|
+
logger_36-2024.21.dist-info/METADATA,sha256=fsvDva8-byjx5YqWdp2yf83uIjNA04WYyBjTcdVAgbY,6276
|
46
|
+
logger_36-2024.21.dist-info/WHEEL,sha256=HiCZjzuy6Dw0hdX5R3LCFPDmFS4BWl8H-8W39XfmgX4,91
|
47
|
+
logger_36-2024.21.dist-info/top_level.txt,sha256=sM95BTMWmslEEgR_1pzwZsOeSp8C_QBiu8ImbFr0XLc,10
|
48
|
+
logger_36-2024.21.dist-info/RECORD,,
|
@@ -1,74 +0,0 @@
|
|
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 traceback as tcbk
|
8
|
-
|
9
|
-
from logger_36.instance.logger import LOGGER
|
10
|
-
from logger_36.type.logger import logger_t
|
11
|
-
|
12
|
-
|
13
|
-
def LogException(
|
14
|
-
exception: Exception,
|
15
|
-
/,
|
16
|
-
*,
|
17
|
-
logger: logger_t = LOGGER,
|
18
|
-
should_remove_caller: bool = False,
|
19
|
-
) -> None:
|
20
|
-
""""""
|
21
|
-
lines = tcbk.format_exception(exception)
|
22
|
-
if should_remove_caller:
|
23
|
-
message = "\n".join(lines[:1] + lines[2:])
|
24
|
-
else:
|
25
|
-
formatted = "".join(lines)
|
26
|
-
message = f"{type(exception).__name__}:\n{formatted}"
|
27
|
-
logger.error(message)
|
28
|
-
|
29
|
-
|
30
|
-
"""
|
31
|
-
COPYRIGHT NOTICE
|
32
|
-
|
33
|
-
This software is governed by the CeCILL license under French law and
|
34
|
-
abiding by the rules of distribution of free software. You can use,
|
35
|
-
modify and/ or redistribute the software under the terms of the CeCILL
|
36
|
-
license as circulated by CEA, CNRS and INRIA at the following URL
|
37
|
-
"http://www.cecill.info".
|
38
|
-
|
39
|
-
As a counterpart to the access to the source code and rights to copy,
|
40
|
-
modify and redistribute granted by the license, users are provided only
|
41
|
-
with a limited warranty and the software's author, the holder of the
|
42
|
-
economic rights, and the successive licensors have only limited
|
43
|
-
liability.
|
44
|
-
|
45
|
-
In this respect, the user's attention is drawn to the risks associated
|
46
|
-
with loading, using, modifying and/or developing or reproducing the
|
47
|
-
software by the user in light of its specific status of free software,
|
48
|
-
that may mean that it is complicated to manipulate, and that also
|
49
|
-
therefore means that it is reserved for developers and experienced
|
50
|
-
professionals having in-depth computer knowledge. Users are therefore
|
51
|
-
encouraged to load and test the software's suitability as regards their
|
52
|
-
requirements in conditions enabling the security of their systems and/or
|
53
|
-
data to be ensured and, more generally, to use and operate it in the
|
54
|
-
same conditions as regards security.
|
55
|
-
|
56
|
-
The fact that you are presently reading this means that you have had
|
57
|
-
knowledge of the CeCILL license and that you accept its terms.
|
58
|
-
|
59
|
-
SEE LICENCE NOTICE: file README-LICENCE-utf8.txt at project source root.
|
60
|
-
|
61
|
-
This software is being developed by Eric Debreuve, a CNRS employee and
|
62
|
-
member of team Morpheme.
|
63
|
-
Team Morpheme is a joint team between Inria, CNRS, and UniCA.
|
64
|
-
It is hosted by the Centre Inria d'Université Côte d'Azur, Laboratory
|
65
|
-
I3S, and Laboratory iBV.
|
66
|
-
|
67
|
-
CNRS: https://www.cnrs.fr/index.php/en
|
68
|
-
Inria: https://www.inria.fr/en/
|
69
|
-
UniCA: https://univ-cotedazur.eu/
|
70
|
-
Centre Inria d'Université Côte d'Azur: https://www.inria.fr/en/centre/sophia/
|
71
|
-
I3S: https://www.i3s.unice.fr/en/
|
72
|
-
iBV: http://ibv.unice.fr/
|
73
|
-
Team Morpheme: https://team.inria.fr/morpheme/
|
74
|
-
"""
|
File without changes
|