logger-36 2024.5__py3-none-any.whl → 2024.7__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.
@@ -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
- rich_kwargs = {}
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
- **rich_kwargs,
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
 
@@ -33,6 +33,8 @@ import dataclasses as dtcl
33
33
  import logging as lggg
34
34
  import typing as h
35
35
 
36
+ from logger_36.catalog.config.console_rich import DATE_TIME_COLOR
37
+
36
38
  try:
37
39
  from rich.console import Console as console_t
38
40
  from rich.markup import escape as EscapedForRich
@@ -42,7 +44,7 @@ except ModuleNotFoundError:
42
44
 
43
45
  from logger_36.catalog.handler.console_rich import console_rich_handler_t
44
46
  from logger_36.constant.record import SHOW_W_RULE_ATTR
45
- from logger_36.task.format.rule import Rule
47
+ from logger_36.task.format.rule import Rule, RuleAsText
46
48
  from logger_36.type.extension import handler_extension_t
47
49
 
48
50
 
@@ -69,7 +71,7 @@ class generic_handler_t(lggg.Handler):
69
71
 
70
72
  supports_html: dtcl.InitVar[bool] = False
71
73
  rich_kwargs: dtcl.InitVar[dict[str, h.Any] | None] = None
72
- interface: dtcl.InitVar[interface_h | None] = None
74
+ interface: dtcl.InitVar[interface_h | None] = None # Cannot be None actually.
73
75
 
74
76
  def __post_init__(
75
77
  self,
@@ -105,8 +107,6 @@ class generic_handler_t(lggg.Handler):
105
107
 
106
108
  self.FormattedLines = self.extension.FormattedLines
107
109
 
108
- if interface is None:
109
- raise ValueError("Interface cannot be None.")
110
110
  self.ShowMessage = getattr(
111
111
  interface, can_show_message_p.ShowMessage.__name__, interface
112
112
  )
@@ -114,10 +114,13 @@ class generic_handler_t(lggg.Handler):
114
114
  def emit(self, record: lggg.LogRecord, /) -> None:
115
115
  """"""
116
116
  if self.console is None:
117
- message, _ = self.FormattedLines(record, should_join_lines=True)
117
+ if hasattr(record, SHOW_W_RULE_ATTR):
118
+ message = RuleAsText(record.msg)
119
+ else:
120
+ message, _ = self.FormattedLines(record, should_join_lines=True)
118
121
  else:
119
122
  if hasattr(record, SHOW_W_RULE_ATTR):
120
- richer = Rule(record.msg, console_rich_handler_t.DATE_TIME_COLOR)
123
+ richer = Rule(record.msg, DATE_TIME_COLOR)
121
124
  else:
122
125
  first, next_s = self.FormattedLines(record, PreProcessed=EscapedForRich)
123
126
  richer = console_rich_handler_t.HighlightedVersion(
logger_36/main.py CHANGED
@@ -121,6 +121,7 @@ def AddRichConsoleHandler(
121
121
  show_memory_usage: bool = False,
122
122
  formatter: lggg.Formatter | None = None,
123
123
  should_hold_messages: bool = False,
124
+ should_install_traceback: bool = False,
124
125
  **kwargs,
125
126
  ) -> None:
126
127
  """"""
@@ -138,6 +139,7 @@ def AddRichConsoleHandler(
138
139
  show_where=show_where,
139
140
  show_memory_usage=show_memory_usage,
140
141
  formatter=formatter,
142
+ should_install_traceback=should_install_traceback,
141
143
  rich_kwargs=kwargs,
142
144
  )
143
145
  logger.AddHandler(handler, should_hold_messages)
logger_36/type/logger.py CHANGED
@@ -216,9 +216,10 @@ class logger_t(lggg.Logger):
216
216
  date = dttm.now().strftime(DATE_FORMAT)
217
217
  if date != self.last_message_date:
218
218
  self.last_message_date = date
219
- # levelno is added for management by lggg.Logger.handle.
219
+ # levelno: Added for management by lggg.Logger.handle.
220
220
  date_record = lggg.makeLogRecord(
221
221
  {
222
+ "name": self.name,
222
223
  "levelno": lggg.INFO,
223
224
  "msg": f"DATE: {date}",
224
225
  SHOW_W_RULE_ATTR: True,
logger_36/version.py CHANGED
@@ -29,4 +29,4 @@
29
29
  # The fact that you are presently reading this means that you have had
30
30
  # knowledge of the CeCILL license and that you accept its terms.
31
31
 
32
- __version__ = "2024.5"
32
+ __version__ = "2024.7"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: logger-36
3
- Version: 2024.5
3
+ Version: 2024.7
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
@@ -1,12 +1,12 @@
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=tN2GD-tL5UcRwW1HuJHcIh8WlLBbXO-zF-6Sy700Uwo,6587
4
- logger_36/version.py,sha256=U3BX6By9kxj1MIlg-OiskCuwp9JDaGz-_Skvedwbjzo,1575
3
+ logger_36/main.py,sha256=kdv79ZTpapb9ltLoKfSfR89CdPxDlizUJs6IctSRTqE,6690
4
+ logger_36/version.py,sha256=SHjFKsAo5HXmWz3ywjHv2B73Nbgz9BAn0t-SnGZbTBQ,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=YqKyKwHoYCEVnW1S87NDu3ReTCIzSdYgC-20-813TFQ,5395
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
- logger_36/catalog/handler/generic.py,sha256=1pAmP5vOxBPWhpqoBRDNIc3q14dIDsj7JbX-VqcgUbM,5931
9
+ logger_36/catalog/handler/generic.py,sha256=wrFbA8oLb0wdAE4lnfbsAqRnAJOtaQV9TWTgTHGHhhM,6048
10
10
  logger_36/catalog/logging/chronos.py,sha256=5SWyRUhwwKeJg3NPf9jkCqtKc7b_4x58Slbq2iMA8kE,1814
11
11
  logger_36/catalog/logging/gpu.py,sha256=OpSQK0paA-xzxeWTKAx9QUqEytFyYvHgiVvWe97-rZ8,2465
12
12
  logger_36/catalog/logging/memory.py,sha256=50wX25rXnI8NLlr3gp6793hKUE988CACIXVLMQRUcMs,4038
@@ -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=t1pXc82F8wF-g-qyh7VxyoFBp0MKgtpOoyDznem9L6Q,12729
36
- logger_36-2024.5.dist-info/METADATA,sha256=fD1AEJe7mGRC55VHNLcGGJ2c51Igp_0hq0F1PvMveiQ,4246
37
- logger_36-2024.5.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
38
- logger_36-2024.5.dist-info/top_level.txt,sha256=sM95BTMWmslEEgR_1pzwZsOeSp8C_QBiu8ImbFr0XLc,10
39
- logger_36-2024.5.dist-info/RECORD,,
35
+ logger_36/type/logger.py,sha256=WIcFOiZkOzKJzxf-7-hd9NZ5GHbxoJBmckp4sqh4tD0,12766
36
+ logger_36-2024.7.dist-info/METADATA,sha256=53WJXqKt_mPtxz8yT7JvKcSzjT1ziS8GCloDwN0WITI,4246
37
+ logger_36-2024.7.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
38
+ logger_36-2024.7.dist-info/top_level.txt,sha256=sM95BTMWmslEEgR_1pzwZsOeSp8C_QBiu8ImbFr0XLc,10
39
+ logger_36-2024.7.dist-info/RECORD,,