logger-36 2024.4__py3-none-any.whl → 2024.6__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_rich.py +33 -2
- logger_36/main.py +32 -6
- logger_36/type/logger.py +7 -8
- logger_36/version.py +1 -1
- {logger_36-2024.4.dist-info → logger_36-2024.6.dist-info}/METADATA +3 -3
- {logger_36-2024.4.dist-info → logger_36-2024.6.dist-info}/RECORD +8 -8
- {logger_36-2024.4.dist-info → logger_36-2024.6.dist-info}/WHEEL +0 -0
- {logger_36-2024.4.dist-info → logger_36-2024.6.dist-info}/top_level.txt +0 -0
@@ -56,6 +56,21 @@ from rich.console import Console as console_t
|
|
56
56
|
from rich.console import RenderableType as renderable_t
|
57
57
|
from rich.markup import escape as EscapedForRich
|
58
58
|
from rich.text import Text as text_t
|
59
|
+
from rich.traceback import install as InstallTracebackHandler
|
60
|
+
|
61
|
+
|
62
|
+
_COMMON_TRACEBACK_ARGUMENTS = ("theme", "width")
|
63
|
+
_EXCLUSIVE_TRACEBACK_ARGUMENTS = (
|
64
|
+
"extra_lines",
|
65
|
+
"indent_guides",
|
66
|
+
"locals_hide_dunder",
|
67
|
+
"locals_hide_sunder",
|
68
|
+
"locals_max_length",
|
69
|
+
"locals_max_string",
|
70
|
+
"max_frames" "show_locals",
|
71
|
+
"suppress",
|
72
|
+
"word_wrap",
|
73
|
+
)
|
59
74
|
|
60
75
|
|
61
76
|
@dtcl.dataclass(slots=True, repr=False, eq=False)
|
@@ -69,6 +84,7 @@ class console_rich_handler_t(lggg.Handler):
|
|
69
84
|
show_where: dtcl.InitVar[bool] = True
|
70
85
|
show_memory_usage: dtcl.InitVar[bool] = False
|
71
86
|
formatter: dtcl.InitVar[lggg.Formatter | None] = None
|
87
|
+
should_install_traceback: dtcl.InitVar[bool] = False
|
72
88
|
|
73
89
|
rich_kwargs: dtcl.InitVar[dict[str, h.Any] | None] = None
|
74
90
|
|
@@ -79,6 +95,7 @@ class console_rich_handler_t(lggg.Handler):
|
|
79
95
|
show_where: bool,
|
80
96
|
show_memory_usage: bool,
|
81
97
|
formatter: lggg.Formatter | None,
|
98
|
+
should_install_traceback: bool,
|
82
99
|
rich_kwargs: dict[str, h.Any] | None,
|
83
100
|
) -> None:
|
84
101
|
""""""
|
@@ -94,13 +111,27 @@ class console_rich_handler_t(lggg.Handler):
|
|
94
111
|
)
|
95
112
|
|
96
113
|
if rich_kwargs is None:
|
97
|
-
|
114
|
+
rich_console_kwargs = {}
|
115
|
+
else:
|
116
|
+
rich_console_kwargs = rich_kwargs
|
117
|
+
rich_traceback_kwargs = {}
|
118
|
+
if should_install_traceback:
|
119
|
+
for key in rich_console_kwargs:
|
120
|
+
if key in _COMMON_TRACEBACK_ARGUMENTS:
|
121
|
+
rich_traceback_kwargs[key] = rich_console_kwargs[key]
|
122
|
+
elif key in _EXCLUSIVE_TRACEBACK_ARGUMENTS:
|
123
|
+
rich_traceback_kwargs[key] = rich_console_kwargs[key]
|
124
|
+
del rich_console_kwargs[key]
|
125
|
+
|
98
126
|
self.console = console_t(
|
99
127
|
highlight=False,
|
100
128
|
force_terminal=True,
|
101
129
|
record=True,
|
102
|
-
**
|
130
|
+
**rich_console_kwargs,
|
103
131
|
)
|
132
|
+
if should_install_traceback:
|
133
|
+
rich_traceback_kwargs["console"] = self.console
|
134
|
+
InstallTracebackHandler(**rich_traceback_kwargs)
|
104
135
|
|
105
136
|
self.FormattedLines = self.extension.FormattedLines
|
106
137
|
|
logger_36/main.py
CHANGED
@@ -61,6 +61,7 @@ def AddGenericHandler(
|
|
61
61
|
interface: interface_h,
|
62
62
|
/,
|
63
63
|
*,
|
64
|
+
logger: lggg.Logger | None = None,
|
64
65
|
name: str | None = None,
|
65
66
|
level: int = lggg.INFO,
|
66
67
|
show_where: bool = True,
|
@@ -71,6 +72,9 @@ def AddGenericHandler(
|
|
71
72
|
**kwargs,
|
72
73
|
) -> None:
|
73
74
|
""""""
|
75
|
+
if logger is None:
|
76
|
+
logger = LOGGER
|
77
|
+
|
74
78
|
handler = generic_handler_t(
|
75
79
|
name=name,
|
76
80
|
level=level,
|
@@ -81,11 +85,12 @@ def AddGenericHandler(
|
|
81
85
|
rich_kwargs=kwargs,
|
82
86
|
interface=interface,
|
83
87
|
)
|
84
|
-
|
88
|
+
logger.AddHandler(handler, should_hold_messages)
|
85
89
|
|
86
90
|
|
87
91
|
def AddConsoleHandler(
|
88
92
|
*,
|
93
|
+
logger: lggg.Logger | None = None,
|
89
94
|
name: str | None = None,
|
90
95
|
level: int = lggg.INFO,
|
91
96
|
show_where: bool = True,
|
@@ -94,6 +99,9 @@ def AddConsoleHandler(
|
|
94
99
|
should_hold_messages: bool = False,
|
95
100
|
) -> None:
|
96
101
|
""""""
|
102
|
+
if logger is None:
|
103
|
+
logger = LOGGER
|
104
|
+
|
97
105
|
handler = console_handler_t(
|
98
106
|
name=name,
|
99
107
|
level=level,
|
@@ -101,17 +109,19 @@ def AddConsoleHandler(
|
|
101
109
|
show_memory_usage=show_memory_usage,
|
102
110
|
formatter=formatter,
|
103
111
|
)
|
104
|
-
|
112
|
+
logger.AddHandler(handler, should_hold_messages)
|
105
113
|
|
106
114
|
|
107
115
|
def AddRichConsoleHandler(
|
108
116
|
*,
|
117
|
+
logger: lggg.Logger | None = None,
|
109
118
|
name: str | None = None,
|
110
119
|
level: int = lggg.INFO,
|
111
120
|
show_where: bool = True,
|
112
121
|
show_memory_usage: bool = False,
|
113
122
|
formatter: lggg.Formatter | None = None,
|
114
123
|
should_hold_messages: bool = False,
|
124
|
+
should_install_traceback: bool = False,
|
115
125
|
**kwargs,
|
116
126
|
) -> None:
|
117
127
|
""""""
|
@@ -120,21 +130,26 @@ def AddRichConsoleHandler(
|
|
120
130
|
print(_RICH_ERROR, file=sstm.stderr)
|
121
131
|
_RICH_ERROR = None
|
122
132
|
|
133
|
+
if logger is None:
|
134
|
+
logger = LOGGER
|
135
|
+
|
123
136
|
handler = console_rich_handler_t(
|
124
137
|
name=name,
|
125
138
|
level=level,
|
126
139
|
show_where=show_where,
|
127
140
|
show_memory_usage=show_memory_usage,
|
128
141
|
formatter=formatter,
|
142
|
+
should_install_traceback=should_install_traceback,
|
129
143
|
rich_kwargs=kwargs,
|
130
144
|
)
|
131
|
-
|
145
|
+
logger.AddHandler(handler, should_hold_messages)
|
132
146
|
|
133
147
|
|
134
148
|
def AddFileHandler(
|
135
149
|
path: str | path_t,
|
136
150
|
/,
|
137
151
|
*args,
|
152
|
+
logger: lggg.Logger | None = None,
|
138
153
|
name: str | None = None,
|
139
154
|
level: int = lggg.INFO,
|
140
155
|
show_where: bool = True,
|
@@ -148,6 +163,8 @@ def AddFileHandler(
|
|
148
163
|
path = path_t(path)
|
149
164
|
if path.exists():
|
150
165
|
raise ValueError(f"File or folder already exists: {path}.")
|
166
|
+
if logger is None:
|
167
|
+
logger = LOGGER
|
151
168
|
|
152
169
|
handler = file_handler_t(
|
153
170
|
name=name,
|
@@ -159,16 +176,25 @@ def AddFileHandler(
|
|
159
176
|
handler_args=args,
|
160
177
|
handler_kwargs=kwargs,
|
161
178
|
)
|
162
|
-
|
179
|
+
logger.AddHandler(handler, should_hold_messages)
|
163
180
|
|
164
181
|
|
165
|
-
def SetLOGLevel(
|
182
|
+
def SetLOGLevel(
|
183
|
+
level: int,
|
184
|
+
/,
|
185
|
+
*,
|
186
|
+
logger: lggg.Logger | None = None,
|
187
|
+
which: handler_codes_h | str = "a",
|
188
|
+
) -> None:
|
166
189
|
"""
|
167
190
|
which: g=generic, c=console, f=file, a=all, str=name.
|
168
191
|
"""
|
192
|
+
if logger is None:
|
193
|
+
logger = LOGGER
|
194
|
+
|
169
195
|
which_is_name = which not in HANDLER_CODES
|
170
196
|
found = False
|
171
|
-
for handler in
|
197
|
+
for handler in logger.handlers:
|
172
198
|
if (
|
173
199
|
(which == "a")
|
174
200
|
or ((which == "g") and isinstance(handler, generic_handler_t))
|
logger_36/type/logger.py
CHANGED
@@ -296,17 +296,16 @@ class logger_t(lggg.Logger):
|
|
296
296
|
issues = sorted(self.staged_issues, key=lambda _elm: _elm.context)
|
297
297
|
issues = "\n".join(issues)
|
298
298
|
|
299
|
-
if issubclass(level, Exception):
|
299
|
+
if isinstance(level, type) and issubclass(level, Exception):
|
300
300
|
try:
|
301
301
|
raise level("\n" + issues)
|
302
302
|
except Exception as exception:
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
)
|
303
|
+
lines = ["Traceback (most recent call last):"] + tbck.format_stack()[
|
304
|
+
:-1
|
305
|
+
]
|
306
|
+
lines[-1] = lines[-1][:-1]
|
307
|
+
lines.extend(tbck.format_exception_only(exception))
|
308
|
+
print("\n".join(lines), file=sstm.stderr)
|
310
309
|
sstm.exit(1)
|
311
310
|
|
312
311
|
self.log(level, issues, **HIDE_WHERE_KWARG)
|
logger_36/version.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: logger-36
|
3
|
-
Version: 2024.
|
3
|
+
Version: 2024.6
|
4
4
|
Summary: Simple logger with a catalog of handlers
|
5
5
|
Home-page: https://src.koda.cnrs.fr/eric.debreuve/logger-36/
|
6
6
|
Author: Eric Debreuve
|
@@ -12,8 +12,8 @@ Keywords: log,warning,error
|
|
12
12
|
Classifier: Topic :: Software Development
|
13
13
|
Classifier: Intended Audience :: Developers
|
14
14
|
Classifier: License :: OSI Approved :: CEA CNRS Inria Logiciel Libre License, version 2.1 (CeCILL-2.1)
|
15
|
-
Classifier: Programming Language :: Python :: 3
|
16
|
-
Classifier: Development Status ::
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
16
|
+
Classifier: Development Status :: 5 - Production/Stable
|
17
17
|
Requires-Python: >=3.10
|
18
18
|
Description-Content-Type: text/x-rst
|
19
19
|
|
@@ -1,10 +1,10 @@
|
|
1
1
|
logger_36/__init__.py,sha256=-VGyte6TD6SWU4jBXUjur_xU1R1Asha5KXEwDNmGJ6Q,1756
|
2
2
|
logger_36/instance.py,sha256=NQlDAyXV3TNekX9xj9V7JMePmsa2DWnTDaVzh5dcyGM,1616
|
3
|
-
logger_36/main.py,sha256=
|
4
|
-
logger_36/version.py,sha256=
|
3
|
+
logger_36/main.py,sha256=kdv79ZTpapb9ltLoKfSfR89CdPxDlizUJs6IctSRTqE,6690
|
4
|
+
logger_36/version.py,sha256=4cJ_wNkTKxQDHDz6-DuN3-53TI6P_28cAcNpeuDUmCQ,1575
|
5
5
|
logger_36/catalog/config/console_rich.py,sha256=jJnYXPDsMCTu8zny2X3NdeyKFCfhJupberqIBxyv3LA,2030
|
6
6
|
logger_36/catalog/handler/console.py,sha256=PnaCWJsXN-x_-X8i-4o4HWys-7K0A83s4kIdtmDz3AQ,3092
|
7
|
-
logger_36/catalog/handler/console_rich.py,sha256=
|
7
|
+
logger_36/catalog/handler/console_rich.py,sha256=pTczLjsEB78DT4ph57yLeQKPTcJVXpc3Q99d_I4YOk0,6512
|
8
8
|
logger_36/catalog/handler/file.py,sha256=BAxA-ZQAikmH0R9Ia3mbSXf-Z60-FfA4ElOVjjmanS0,3507
|
9
9
|
logger_36/catalog/handler/generic.py,sha256=1pAmP5vOxBPWhpqoBRDNIc3q14dIDsj7JbX-VqcgUbM,5931
|
10
10
|
logger_36/catalog/logging/chronos.py,sha256=5SWyRUhwwKeJg3NPf9jkCqtKc7b_4x58Slbq2iMA8kE,1814
|
@@ -32,8 +32,8 @@ logger_36/task/measure/chronos.py,sha256=qT80jxZm_dAg2P4WkfU0L3PRvRojT21Ps3DtNYq
|
|
32
32
|
logger_36/task/measure/memory.py,sha256=1f1X-XHd_58LJYJ0Ok5TGIagnf0k5F39IFqWHN2Ojas,1874
|
33
33
|
logger_36/type/extension.py,sha256=fsYx0wT1bR6DtpM2VnaxsM0MFv2vBLROgRSCs4duasY,5198
|
34
34
|
logger_36/type/issue.py,sha256=T1WFtc8Js1OChYkIHQiOP825Dcb9atpEprLWaPTxAHA,2151
|
35
|
-
logger_36/type/logger.py,sha256=
|
36
|
-
logger_36-2024.
|
37
|
-
logger_36-2024.
|
38
|
-
logger_36-2024.
|
39
|
-
logger_36-2024.
|
35
|
+
logger_36/type/logger.py,sha256=t1pXc82F8wF-g-qyh7VxyoFBp0MKgtpOoyDznem9L6Q,12729
|
36
|
+
logger_36-2024.6.dist-info/METADATA,sha256=HPZZUBLa9QTUkXToFVDxwVGXx47snsdOQ1BUwxX0xdM,4246
|
37
|
+
logger_36-2024.6.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
38
|
+
logger_36-2024.6.dist-info/top_level.txt,sha256=sM95BTMWmslEEgR_1pzwZsOeSp8C_QBiu8ImbFr0XLc,10
|
39
|
+
logger_36-2024.6.dist-info/RECORD,,
|
File without changes
|
File without changes
|