logger-36 2025.25__tar.gz → 2025.26__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 (62) hide show
  1. {logger_36-2025.25 → logger_36-2025.26}/PKG-INFO +1 -1
  2. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/catalog/handler/console_rich.py +8 -9
  3. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/catalog/handler/generic.py +1 -1
  4. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/extension/line.py +1 -3
  5. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/type/handler.py +1 -1
  6. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/type/logger.py +24 -10
  7. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/type/loggers.py +0 -2
  8. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/version.py +1 -1
  9. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36.egg-info/PKG-INFO +1 -1
  10. {logger_36-2025.25 → logger_36-2025.26}/MANIFEST.in +0 -0
  11. {logger_36-2025.25 → logger_36-2025.26}/README-COPYRIGHT-utf8.txt +0 -0
  12. {logger_36-2025.25 → logger_36-2025.26}/README-LICENCE-utf8.txt +0 -0
  13. {logger_36-2025.25 → logger_36-2025.26}/README.rst +0 -0
  14. {logger_36-2025.25 → logger_36-2025.26}/documentation/wiki/description.asciidoc +0 -0
  15. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/__init__.py +0 -0
  16. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/api/chronos.py +0 -0
  17. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/api/logger.py +0 -0
  18. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/api/memory.py +0 -0
  19. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/api/message.py +0 -0
  20. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/api/storage.py +0 -0
  21. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/catalog/config/console_rich.py +0 -0
  22. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/catalog/config/optional.py +0 -0
  23. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/catalog/handler/console.py +0 -0
  24. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/catalog/handler/file.py +0 -0
  25. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/catalog/handler/memory.py +0 -0
  26. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/catalog/logger/chronos.py +0 -0
  27. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/catalog/logger/gpu.py +0 -0
  28. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/catalog/logger/memory.py +0 -0
  29. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/catalog/logger/system.py +0 -0
  30. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/config/issue.py +0 -0
  31. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/config/memory.py +0 -0
  32. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/config/message.py +0 -0
  33. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/config/rule.py +0 -0
  34. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/config/system.py +0 -0
  35. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/constant/chronos.py +0 -0
  36. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/constant/error.py +0 -0
  37. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/constant/html.py +0 -0
  38. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/constant/issue.py +0 -0
  39. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/constant/logger.py +0 -0
  40. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/constant/memory.py +0 -0
  41. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/constant/message.py +0 -0
  42. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/constant/path.py +0 -0
  43. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/constant/record.py +0 -0
  44. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/constant/rule.py +0 -0
  45. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/constant/system.py +0 -0
  46. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/extension/file.py +0 -0
  47. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/extension/inspection.py +0 -0
  48. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/extension/sentinel.py +0 -0
  49. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/instance/logger.py +0 -0
  50. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/instance/loggers.py +0 -0
  51. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/task/format/memory.py +0 -0
  52. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/task/format/message.py +0 -0
  53. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/task/measure/chronos.py +0 -0
  54. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/task/measure/memory.py +0 -0
  55. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/task/storage.py +0 -0
  56. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36/type/issue.py +0 -0
  57. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36.egg-info/SOURCES.txt +0 -0
  58. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36.egg-info/dependency_links.txt +0 -0
  59. {logger_36-2025.25 → logger_36-2025.26}/package/logger_36.egg-info/top_level.txt +0 -0
  60. {logger_36-2025.25 → logger_36-2025.26}/pyproject.toml +0 -0
  61. {logger_36-2025.25 → logger_36-2025.26}/setup.cfg +0 -0
  62. {logger_36-2025.25 → logger_36-2025.26}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: logger-36
3
- Version: 2025.25
3
+ Version: 2025.26
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
@@ -7,14 +7,6 @@ SEE COPYRIGHT NOTICE BELOW
7
7
  import logging as l
8
8
  import typing as h
9
9
 
10
- from rich.console import Console as console_t # noqa
11
- from rich.console import RenderableType as renderable_t # noqa
12
- from rich.markup import escape as EscapedVersion # noqa
13
- from rich.rule import Rule as rule_t # noqa
14
- from rich.style import Style as style_t # noqa
15
- from rich.text import Text as text_t # noqa
16
- from rich.traceback import install as InstallTracebackHandler # noqa
17
-
18
10
  from logger_36.catalog.config.console_rich import (
19
11
  ACTUAL_COLOR,
20
12
  ALTERNATIVE_BACKGROUND_FOR_DARK,
@@ -29,6 +21,13 @@ from logger_36.config.message import ACTUAL_PATTERNS, EXPECTED_PATTERNS
29
21
  from logger_36.constant.message import CONTEXT_LENGTH
30
22
  from logger_36.constant.record import HAS_ACTUAL_EXPECTED_ATTR
31
23
  from logger_36.type.handler import non_file_handler_t as base_t
24
+ from rich.console import Console as console_t # noqa
25
+ from rich.console import RenderableType as renderable_t # noqa
26
+ from rich.markup import escape as EscapedVersion # noqa
27
+ from rich.rule import Rule as rule_t # noqa
28
+ from rich.style import Style as style_t # noqa
29
+ from rich.text import Text as text_t # noqa
30
+ from rich.traceback import install as InstallTracebackHandler # noqa
32
31
 
33
32
  _COMMON_TRACEBACK_ARGUMENTS = ("theme", "width")
34
33
  _EXCLUSIVE_TRACEBACK_ARGUMENTS = (
@@ -105,7 +104,7 @@ class console_rich_handler_t(base_t):
105
104
 
106
105
  def Rule(self, /, *, text: str | None = None, color: str = "black") -> str | rule_t:
107
106
  """"""
108
- if text is None:
107
+ if text in (None, ""):
109
108
  return rule_t(style=color)
110
109
  return rule_t(title=text_t(text, style=f"bold {color}"), style=color)
111
110
 
@@ -94,7 +94,7 @@ class generic_handler_t(base_t):
94
94
  def Rule(self, /, *, text: str | None = None, color: str = "black") -> str | rule_t:
95
95
  """"""
96
96
  if self.is_rich:
97
- if text is None:
97
+ if text in (None, ""):
98
98
  return rule_t(style=color)
99
99
  return rule_t(title=text_t(text, style=f"bold {color}"), style=color)
100
100
 
@@ -11,9 +11,7 @@ def WrappedLines(lines: list[str], message_width: int, /) -> list[str]:
11
11
 
12
12
  for line in lines:
13
13
  while line.__len__() > message_width:
14
- if all(
15
- _ != " " for _ in line[(message_width - 1) : (message_width + 1)]
16
- ):
14
+ if all(_ != " " for _ in line[(message_width - 1) : (message_width + 1)]):
17
15
  if line[message_width - 2] == " ":
18
16
  piece, line = (
19
17
  line[: (message_width - 2)].rstrip(),
@@ -91,7 +91,7 @@ class extension_t:
91
91
  """
92
92
  Return type hint h.Any: For Rich, for example.
93
93
  """
94
- if text is None:
94
+ if text in (None, ""):
95
95
  if self.message_width > 0:
96
96
  return self.message_width * RULE_CHARACTER
97
97
  return DEFAULT_RULE
@@ -494,12 +494,14 @@ class logger_t(base_t):
494
494
  if indented:
495
495
  message = text.indent(message, LINE_INDENT)
496
496
 
497
+ emit_message_name = handler_extension_t.EmitMessage.__name__
498
+ FallbackEmitMessage = print
497
499
  for handler in self.handlers:
498
- EmitMessage = getattr(
499
- handler, handler_extension_t.EmitMessage.__name__, None
500
- )
500
+ EmitMessage = getattr(handler, emit_message_name, FallbackEmitMessage)
501
501
  if EmitMessage is not None:
502
502
  EmitMessage(message)
503
+ if EmitMessage is print:
504
+ FallbackEmitMessage = None
503
505
 
504
506
  info_raw = LogAsIs # To follow the convention of the logging methods info, error...
505
507
 
@@ -539,10 +541,22 @@ class logger_t(base_t):
539
541
  self, /, *, message: str | None = None, color: str = "white"
540
542
  ) -> None:
541
543
  """"""
542
- for handler in self.handlers:
543
- EmitRule = getattr(handler, handler_extension_t.EmitRule.__name__, None)
544
- if EmitRule is not None:
545
- EmitRule(text=message, color=color)
544
+ if message is None:
545
+ message = ""
546
+ record = l.makeLogRecord(
547
+ {
548
+ "name": self.name,
549
+ "levelno": l.INFO, # For management by logging.Logger.handle.
550
+ "msg": message,
551
+ SHOW_W_RULE_ATTR: True,
552
+ }
553
+ )
554
+ base_t.handle(self, record)
555
+ # emit_rule_name = handler_extension_t.EmitRule.__name__
556
+ # for handler in self.handlers:
557
+ # EmitRule = getattr(handler, emit_rule_name, None)
558
+ # if EmitRule is not None:
559
+ # EmitRule(text=message, color=color)
546
560
 
547
561
  def AddContextLevel(self, new_level: str, /) -> None:
548
562
  """"""
@@ -698,9 +712,9 @@ class logger_t(base_t):
698
712
 
699
713
  def __del__(self) -> None:
700
714
  """"""
701
- assert prll.current_process().name == MAIN_PROCESS_NAME
702
-
703
- if self.log_server is not None:
715
+ if (prll.current_process().name == MAIN_PROCESS_NAME) and (
716
+ self.log_server is not None
717
+ ):
704
718
  self.log_server.stop()
705
719
 
706
720
 
@@ -22,7 +22,6 @@ class loggers_t(dict[h.Hashable, logger_t]):
22
22
  *,
23
23
  name: str | None = None,
24
24
  level: int = l.NOTSET,
25
- should_record_messages: bool = False,
26
25
  exit_on_error: bool = False,
27
26
  exit_on_critical: bool = False,
28
27
  activate_wrn_interceptions: bool = True,
@@ -31,7 +30,6 @@ class loggers_t(dict[h.Hashable, logger_t]):
31
30
  ) -> None:
32
31
  """"""
33
32
  logger = logger_t(
34
- should_record_messages=should_record_messages,
35
33
  exit_on_error=exit_on_error,
36
34
  exit_on_critical=exit_on_critical,
37
35
  name_=name,
@@ -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__ = "2025.25"
7
+ __version__ = "2025.26"
8
8
 
9
9
  """
10
10
  COPYRIGHT NOTICE
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: logger-36
3
- Version: 2025.25
3
+ Version: 2025.26
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