logger-36 2024.22__tar.gz → 2024.23__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.22 → logger_36-2024.23}/PKG-INFO +1 -1
  2. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36/constant/message.py +1 -1
  3. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36/task/format/message.py +24 -14
  4. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36/type/issue.py +2 -0
  5. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36/type/logger.py +27 -2
  6. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36/version.py +1 -1
  7. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36.egg-info/PKG-INFO +1 -1
  8. {logger_36-2024.22 → logger_36-2024.23}/MANIFEST.in +0 -0
  9. {logger_36-2024.22 → logger_36-2024.23}/README-COPYRIGHT-utf8.txt +0 -0
  10. {logger_36-2024.22 → logger_36-2024.23}/README-LICENCE-utf8.txt +0 -0
  11. {logger_36-2024.22 → logger_36-2024.23}/README.rst +0 -0
  12. {logger_36-2024.22 → logger_36-2024.23}/documentation/wiki/description.asciidoc +0 -0
  13. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36/__init__.py +0 -0
  14. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36/catalog/config/console_rich.py +0 -0
  15. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36/catalog/handler/console.py +0 -0
  16. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36/catalog/handler/console_rich.py +0 -0
  17. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36/catalog/handler/file.py +0 -0
  18. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36/catalog/handler/generic.py +0 -0
  19. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36/catalog/logger/chronos.py +0 -0
  20. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36/catalog/logger/gpu.py +0 -0
  21. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36/catalog/logger/memory.py +0 -0
  22. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36/catalog/logger/system.py +0 -0
  23. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36/config/issue.py +0 -0
  24. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36/config/logger.py +0 -0
  25. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36/config/memory.py +0 -0
  26. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36/config/message.py +0 -0
  27. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36/config/system.py +0 -0
  28. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36/constant/error.py +0 -0
  29. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36/constant/generic.py +0 -0
  30. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36/constant/handler.py +0 -0
  31. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36/constant/issue.py +0 -0
  32. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36/constant/logger.py +0 -0
  33. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36/constant/memory.py +0 -0
  34. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36/constant/record.py +0 -0
  35. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36/constant/system.py +0 -0
  36. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36/format.py +0 -0
  37. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36/handler.py +0 -0
  38. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36/instance/logger.py +0 -0
  39. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36/instance/loggers.py +0 -0
  40. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36/logger.py +0 -0
  41. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36/logger_gpu.py +0 -0
  42. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36/measure.py +0 -0
  43. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36/storage.py +0 -0
  44. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36/task/format/memory.py +0 -0
  45. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36/task/format/rule.py +0 -0
  46. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36/task/inspection.py +0 -0
  47. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36/task/measure/chronos.py +0 -0
  48. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36/task/measure/memory.py +0 -0
  49. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36/task/storage.py +0 -0
  50. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36/type/handler.py +0 -0
  51. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36/type/loggers.py +0 -0
  52. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36.egg-info/SOURCES.txt +0 -0
  53. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36.egg-info/dependency_links.txt +0 -0
  54. {logger_36-2024.22 → logger_36-2024.23}/package/logger_36.egg-info/top_level.txt +0 -0
  55. {logger_36-2024.22 → logger_36-2024.23}/pyproject.toml +0 -0
  56. {logger_36-2024.22 → logger_36-2024.23}/setup.cfg +0 -0
  57. {logger_36-2024.22 → logger_36-2024.23}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: logger-36
3
- Version: 2024.22
3
+ Version: 2024.23
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
@@ -19,7 +19,7 @@ LOG_LEVEL_LENGTH = 1 + LEVEL_OPENING.__len__() + LEVEL_CLOSING.__len__()
19
19
  CONTEXT_LENGTH = TIME_LENGTH + LOG_LEVEL_LENGTH
20
20
  NEXT_LINE_PROLOGUE = "\n" + (CONTEXT_LENGTH + MESSAGE_MARKER.__len__() + 1) * " "
21
21
 
22
- expected_op_h = h.Literal[": ", "=", "!=", ">=", "<="]
22
+ expected_op_h = h.Literal[":", ": ", "=", "!=", ">=", "<="]
23
23
  EXPECTED_OP: tuple[str, ...] = h.get_args(expected_op_h)
24
24
 
25
25
  """
@@ -4,6 +4,7 @@ Contributor(s): Eric Debreuve (eric.debreuve@cnrs.fr) since 2023
4
4
  SEE COPYRIGHT NOTICE BELOW
5
5
  """
6
6
 
7
+ import difflib as diff
7
8
  import typing as h
8
9
 
9
10
  from logger_36.config.message import (
@@ -40,6 +41,7 @@ def FormattedMessage(
40
41
  *,
41
42
  actual: h.Any = NOT_PASSED,
42
43
  expected: h.Any | None = None,
44
+ expected_is_choices: bool = False,
43
45
  expected_op: expected_op_h = "=",
44
46
  with_final_dot: bool = True,
45
47
  ) -> str:
@@ -64,27 +66,35 @@ def FormattedMessage(
64
66
 
65
67
  if message[-1] == ".":
66
68
  message = message[:-1]
67
- actual = _FormattedValue(actual)
68
- expected = _FormattedValue(expected)
69
-
69
+ expected = _FormattedExpected(expected_op, expected, expected_is_choices, actual)
70
70
  if with_final_dot:
71
71
  dot = "."
72
72
  else:
73
73
  dot = ""
74
- return f"{message}: Actual={actual}; Expected{expected_op}{expected}{dot}"
75
-
76
74
 
77
- def _FormattedValue(value: h.Any, /, *, should_format_str: bool = True) -> str:
78
- """"""
79
- if value is None:
80
- return "None"
75
+ return f"{message}: Actual={actual}:{type(actual).__name__}; {expected}{dot}"
81
76
 
82
- if isinstance(value, str):
83
- if should_format_str:
84
- return f'"{value}"'
85
- return value
86
77
 
87
- return str(value)
78
+ def _FormattedExpected(
79
+ operator: str, expected: h.Any, expected_is_choices: bool, actual: h.Any, /
80
+ ) -> str:
81
+ """"""
82
+ if isinstance(expected, h.Sequence) and expected_is_choices:
83
+ close_matches = diff.get_close_matches(actual, expected)
84
+ if close_matches.__len__() > 0:
85
+ close_matches = ", ".join(close_matches)
86
+ return f"Close matche(s): {close_matches}"
87
+ else:
88
+ expected = ", ".join(map(str, expected))
89
+ return f"Valid values: {expected}"
90
+ else:
91
+ if operator == "=":
92
+ stripe = f":{type(expected).__name__}"
93
+ else:
94
+ stripe = ""
95
+ if operator == ":":
96
+ operator = ": "
97
+ return f"Expected{operator}{expected}{stripe}"
88
98
 
89
99
 
90
100
  """
@@ -25,6 +25,7 @@ def NewIssue(
25
25
  level: int = lggg.ERROR,
26
26
  actual: h.Any = NOT_PASSED,
27
27
  expected: h.Any | None = None,
28
+ expected_is_choices: bool = False,
28
29
  expected_op: expected_op_h = "=",
29
30
  with_final_dot: bool = True,
30
31
  ) -> issue_t:
@@ -35,6 +36,7 @@ def NewIssue(
35
36
  message,
36
37
  actual=actual,
37
38
  expected=expected,
39
+ expected_is_choices=expected_is_choices,
38
40
  expected_op=expected_op,
39
41
  with_final_dot=with_final_dot,
40
42
  )
@@ -221,7 +221,30 @@ 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 log_exception(
224
+ def Log(
225
+ self,
226
+ message: str,
227
+ /,
228
+ *,
229
+ level: int = lggg.ERROR,
230
+ actual: h.Any = NOT_PASSED,
231
+ expected: h.Any | None = None,
232
+ expected_is_choices: bool = False,
233
+ expected_op: expected_op_h = "=",
234
+ with_final_dot: bool = True,
235
+ ) -> None:
236
+ """"""
237
+ message = FormattedMessage(
238
+ message,
239
+ actual=actual,
240
+ expected=expected,
241
+ expected_is_choices=expected_is_choices,
242
+ expected_op=expected_op,
243
+ with_final_dot=with_final_dot,
244
+ )
245
+ self.log(level, message)
246
+
247
+ def LogException(
225
248
  self,
226
249
  exception: Exception,
227
250
  /,
@@ -236,7 +259,7 @@ class logger_t(lggg.Logger):
236
259
  else:
237
260
  # TODO: Explain:
238
261
  # - Why it's not: "\n".join(lines)?
239
- # - Why adding excpetion name here and not when removing caller?
262
+ # - Why adding exception name here and not when removing caller?
240
263
  formatted = "".join(lines)
241
264
  message = f"{type(exception).__name__}:\n{formatted}"
242
265
  self.log(level, message)
@@ -262,6 +285,7 @@ class logger_t(lggg.Logger):
262
285
  level: int = lggg.ERROR,
263
286
  actual: h.Any = NOT_PASSED,
264
287
  expected: h.Any | None = None,
288
+ expected_is_choices: bool = False,
265
289
  expected_op: expected_op_h = "=",
266
290
  with_final_dot: bool = False,
267
291
  ) -> None:
@@ -274,6 +298,7 @@ class logger_t(lggg.Logger):
274
298
  level=level,
275
299
  actual=actual,
276
300
  expected=expected,
301
+ expected_is_choices=expected_is_choices,
277
302
  expected_op=expected_op,
278
303
  with_final_dot=with_final_dot,
279
304
  )
@@ -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.22"
7
+ __version__ = "2024.23"
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.22
3
+ Version: 2024.23
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