logger-36 2024.21__tar.gz → 2024.22__tar.gz

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.
Files changed (57) hide show
  1. {logger_36-2024.21 → logger_36-2024.22}/PKG-INFO +1 -1
  2. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36/constant/issue.py +2 -0
  3. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36/type/issue.py +4 -1
  4. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36/type/logger.py +36 -21
  5. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36/version.py +1 -1
  6. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36.egg-info/PKG-INFO +1 -1
  7. {logger_36-2024.21 → logger_36-2024.22}/MANIFEST.in +0 -0
  8. {logger_36-2024.21 → logger_36-2024.22}/README-COPYRIGHT-utf8.txt +0 -0
  9. {logger_36-2024.21 → logger_36-2024.22}/README-LICENCE-utf8.txt +0 -0
  10. {logger_36-2024.21 → logger_36-2024.22}/README.rst +0 -0
  11. {logger_36-2024.21 → logger_36-2024.22}/documentation/wiki/description.asciidoc +0 -0
  12. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36/__init__.py +0 -0
  13. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36/catalog/config/console_rich.py +0 -0
  14. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36/catalog/handler/console.py +0 -0
  15. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36/catalog/handler/console_rich.py +0 -0
  16. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36/catalog/handler/file.py +0 -0
  17. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36/catalog/handler/generic.py +0 -0
  18. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36/catalog/logger/chronos.py +0 -0
  19. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36/catalog/logger/gpu.py +0 -0
  20. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36/catalog/logger/memory.py +0 -0
  21. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36/catalog/logger/system.py +0 -0
  22. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36/config/issue.py +0 -0
  23. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36/config/logger.py +0 -0
  24. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36/config/memory.py +0 -0
  25. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36/config/message.py +0 -0
  26. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36/config/system.py +0 -0
  27. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36/constant/error.py +0 -0
  28. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36/constant/generic.py +0 -0
  29. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36/constant/handler.py +0 -0
  30. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36/constant/logger.py +0 -0
  31. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36/constant/memory.py +0 -0
  32. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36/constant/message.py +0 -0
  33. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36/constant/record.py +0 -0
  34. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36/constant/system.py +0 -0
  35. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36/format.py +0 -0
  36. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36/handler.py +0 -0
  37. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36/instance/logger.py +0 -0
  38. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36/instance/loggers.py +0 -0
  39. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36/logger.py +0 -0
  40. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36/logger_gpu.py +0 -0
  41. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36/measure.py +0 -0
  42. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36/storage.py +0 -0
  43. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36/task/format/memory.py +0 -0
  44. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36/task/format/message.py +0 -0
  45. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36/task/format/rule.py +0 -0
  46. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36/task/inspection.py +0 -0
  47. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36/task/measure/chronos.py +0 -0
  48. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36/task/measure/memory.py +0 -0
  49. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36/task/storage.py +0 -0
  50. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36/type/handler.py +0 -0
  51. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36/type/loggers.py +0 -0
  52. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36.egg-info/SOURCES.txt +0 -0
  53. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36.egg-info/dependency_links.txt +0 -0
  54. {logger_36-2024.21 → logger_36-2024.22}/package/logger_36.egg-info/top_level.txt +0 -0
  55. {logger_36-2024.21 → logger_36-2024.22}/pyproject.toml +0 -0
  56. {logger_36-2024.21 → logger_36-2024.22}/setup.cfg +0 -0
  57. {logger_36-2024.21 → logger_36-2024.22}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: logger-36
3
- Version: 2024.21
3
+ Version: 2024.22
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
@@ -9,6 +9,8 @@ import typing as h
9
9
  order_h = h.Literal["when", "context"]
10
10
  ORDER: tuple[str, ...] = h.get_args(order_h)
11
11
 
12
+ ISSUE_LEVEL_SEPARATOR = "#"
13
+
12
14
  """
13
15
  COPYRIGHT NOTICE
14
16
 
@@ -4,10 +4,12 @@ Contributor(s): Eric Debreuve (eric.debreuve@cnrs.fr) since 2023
4
4
  SEE COPYRIGHT NOTICE BELOW
5
5
  """
6
6
 
7
+ import logging as lggg
7
8
  import typing as h
8
9
 
9
10
  from logger_36.config.issue import ISSUE_BASE_CONTEXT
10
11
  from logger_36.constant.generic import NOT_PASSED
12
+ from logger_36.constant.issue import ISSUE_LEVEL_SEPARATOR
11
13
  from logger_36.constant.message import expected_op_h
12
14
  from logger_36.task.format.message import FormattedMessage
13
15
 
@@ -20,6 +22,7 @@ def NewIssue(
20
22
  message: str,
21
23
  /,
22
24
  *,
25
+ level: int = lggg.ERROR,
23
26
  actual: h.Any = NOT_PASSED,
24
27
  expected: h.Any | None = None,
25
28
  expected_op: expected_op_h = "=",
@@ -36,7 +39,7 @@ def NewIssue(
36
39
  with_final_dot=with_final_dot,
37
40
  )
38
41
 
39
- return f"{context}{separator}{message}"
42
+ return f"{level}{ISSUE_LEVEL_SEPARATOR}{context}{separator}{message}"
40
43
 
41
44
 
42
45
  """
@@ -17,7 +17,7 @@ from traceback import TracebackException as traceback_t
17
17
  from logger_36.config.issue import ISSUE_CONTEXT_END, ISSUE_CONTEXT_SEPARATOR
18
18
  from logger_36.config.message import DATE_FORMAT
19
19
  from logger_36.constant.generic import NOT_PASSED
20
- from logger_36.constant.issue import ORDER, order_h
20
+ from logger_36.constant.issue import ISSUE_LEVEL_SEPARATOR, ORDER, order_h
21
21
  from logger_36.constant.logger import (
22
22
  HIDE_WHERE_KWARG,
23
23
  LOGGER_NAME,
@@ -221,11 +221,12 @@ 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(
224
+ def log_exception(
225
225
  self,
226
226
  exception: Exception,
227
227
  /,
228
228
  *,
229
+ level: int = lggg.ERROR,
229
230
  should_remove_caller: bool = False,
230
231
  ) -> None:
231
232
  """"""
@@ -233,9 +234,12 @@ class logger_t(lggg.Logger):
233
234
  if should_remove_caller:
234
235
  message = "\n".join(lines[:1] + lines[2:])
235
236
  else:
237
+ # TODO: Explain:
238
+ # - Why it's not: "\n".join(lines)?
239
+ # - Why adding excpetion name here and not when removing caller?
236
240
  formatted = "".join(lines)
237
241
  message = f"{type(exception).__name__}:\n{formatted}"
238
- self.error(message)
242
+ self.log(level, message)
239
243
 
240
244
  def AddContextLevel(self, new_level: str, /) -> None:
241
245
  """"""
@@ -255,6 +259,7 @@ class logger_t(lggg.Logger):
255
259
  message: str,
256
260
  /,
257
261
  *,
262
+ level: int = lggg.ERROR,
258
263
  actual: h.Any = NOT_PASSED,
259
264
  expected: h.Any | None = None,
260
265
  expected_op: expected_op_h = "=",
@@ -266,6 +271,7 @@ class logger_t(lggg.Logger):
266
271
  context,
267
272
  ISSUE_CONTEXT_END,
268
273
  message,
274
+ level=level,
269
275
  actual=actual,
270
276
  expected=expected,
271
277
  expected_op=expected_op,
@@ -280,12 +286,15 @@ class logger_t(lggg.Logger):
280
286
 
281
287
  def CommitIssues(
282
288
  self,
283
- level: int | type[Exception],
284
289
  /,
285
290
  *,
286
291
  order: order_h = "when",
292
+ unified: bool = False,
287
293
  ) -> None:
288
- """"""
294
+ """
295
+ Note that issues after an issue with a level triggering process exit will not be
296
+ logged.
297
+ """
289
298
  if not self.has_staged_issues:
290
299
  return
291
300
 
@@ -302,22 +311,28 @@ class logger_t(lggg.Logger):
302
311
  issues = self.staged_issues
303
312
  else: # order == "context"
304
313
  issues = sorted(self.staged_issues, key=lambda _elm: _elm.context)
305
- issues = "\n".join(issues)
306
-
307
- if isinstance(level, type) and issubclass(level, Exception):
308
- try:
309
- raise level("\n" + issues)
310
- except Exception as exception:
311
- lines = ["Traceback (most recent call last):"] + tcbk.format_stack()[
312
- :-1
313
- ]
314
- lines[-1] = lines[-1][:-1]
315
- lines.extend(tcbk.format_exception_only(exception))
316
- print("\n".join(lines), file=sstm.stderr)
317
- sstm.exit(1)
318
-
319
- level: int
320
- self.log(level, issues, stacklevel=2)
314
+ """
315
+ Format issues as an exception:
316
+ try:
317
+ raise ValueError("\n" + "\n".join(issues))
318
+ except ValueError as exception:
319
+ lines = ["Traceback (most recent call last):"] + tcbk.format_stack()[:-1]
320
+ lines[-1] = lines[-1][:-1]
321
+ lines.extend(tcbk.format_exception_only(exception))
322
+ formatted = "\n".join(lines)
323
+ """
324
+
325
+ if unified:
326
+ level, _ = issues[0].split(ISSUE_LEVEL_SEPARATOR, maxsplit=1)
327
+ wo_level = []
328
+ for issue in issues:
329
+ _, issue = issue.split(ISSUE_LEVEL_SEPARATOR, maxsplit=1)
330
+ wo_level.append(issue)
331
+ self.log(int(level), "\n".join(wo_level), stacklevel=2)
332
+ else:
333
+ for issue in issues:
334
+ level, issue = issue.split(ISSUE_LEVEL_SEPARATOR, maxsplit=1)
335
+ self.log(int(level), issue, stacklevel=2)
321
336
  self.staged_issues.clear()
322
337
 
323
338
  def ShowMessage(self, message: str, /) -> None:
@@ -4,7 +4,7 @@ Contributor(s): Eric Debreuve (eric.debreuve@cnrs.fr) since 2023
4
4
  SEE COPYRIGHT NOTICE BELOW
5
5
  """
6
6
 
7
- __version__ = "2024.21"
7
+ __version__ = "2024.22"
8
8
 
9
9
  """
10
10
  COPYRIGHT NOTICE
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: logger-36
3
- Version: 2024.21
3
+ Version: 2024.22
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
File without changes
File without changes
File without changes
File without changes
File without changes