logger-36 2024.27__py3-none-any.whl → 2024.29__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/type/logger.py CHANGED
@@ -10,36 +10,47 @@ import sys as sstm
10
10
  import traceback as tcbk
11
11
  import types as t
12
12
  import typing as h
13
- from datetime import datetime as dttm
13
+ from datetime import date as date_t
14
+ from datetime import datetime as date_time_t
15
+ from os import sep as FOLDER_SEPARATOR
14
16
  from pathlib import Path as path_t
15
17
  from traceback import TracebackException as traceback_t
16
18
 
17
19
  from logger_36.config.issue import ISSUE_CONTEXT_END, ISSUE_CONTEXT_SEPARATOR
18
- from logger_36.config.message import DATE_FORMAT
20
+ from logger_36.config.message import (
21
+ DATE_FORMAT,
22
+ ELAPSED_TIME_SEPARATOR,
23
+ LONG_ENOUGH,
24
+ TIME_FORMAT,
25
+ )
19
26
  from logger_36.constant.generic import NOT_PASSED
20
27
  from logger_36.constant.issue import ISSUE_LEVEL_SEPARATOR, ORDER, order_h
21
28
  from logger_36.constant.logger import (
22
- HIDE_WHERE_KWARG,
23
29
  LOGGER_NAME,
24
30
  WARNING_LOGGER_NAME,
25
31
  WARNING_TYPE_COMPILED_PATTERN,
26
32
  logger_handle_h,
27
33
  )
28
34
  from logger_36.constant.memory import UNKNOWN_MEMORY_USAGE
29
- from logger_36.constant.message import expected_op_h
30
- from logger_36.constant.record import SHOW_MEMORY_ATTR, SHOW_W_RULE_ATTR
31
- from logger_36.task.format.memory import (
32
- FormattedUsageWithAutoUnit as FormattedMemoryUsage,
35
+ from logger_36.constant.message import TIME_LENGTH_m_1, expected_op_h
36
+ from logger_36.constant.record import (
37
+ HIDE_WHERE_ATTR,
38
+ SHOW_W_RULE_ATTR,
39
+ STORE_MEMORY_ATTR,
33
40
  )
34
- from logger_36.task.format.message import FormattedMessage
35
- from logger_36.task.format.rule import Rule
41
+ from logger_36.task.format.message import MessageWithActualExpected
36
42
  from logger_36.task.measure.chronos import ElapsedTime
37
43
  from logger_36.task.measure.memory import CurrentUsage as CurrentMemoryUsage
38
44
  from logger_36.type.issue import NewIssue, issue_t
39
45
 
46
+ logger_base_t = lggg.Logger
47
+
48
+ _DATE_TIME_ORIGIN = date_time_t.fromtimestamp(1970, None)
49
+ _DATE_ORIGIN = _DATE_TIME_ORIGIN.date()
50
+
40
51
 
41
52
  @d.dataclass(slots=True, repr=False, eq=False)
42
- class logger_t(lggg.Logger):
53
+ class logger_t(logger_base_t):
43
54
  name_: d.InitVar[str] = LOGGER_NAME
44
55
  level_: d.InitVar[int] = lggg.NOTSET
45
56
  activate_wrn_interceptions: d.InitVar[bool] = True
@@ -51,8 +62,9 @@ class logger_t(lggg.Logger):
51
62
 
52
63
  on_hold: list[lggg.LogRecord] = d.field(init=False, default_factory=list)
53
64
  events: dict[int, int] = d.field(init=False, default_factory=dict)
54
- last_message_date: str = d.field(init=False, default="")
55
- any_handler_shows_memory: bool = d.field(init=False, default=False)
65
+ last_message_now: date_time_t = d.field(init=False, default=_DATE_TIME_ORIGIN)
66
+ last_message_date: date_t = d.field(init=False, default=_DATE_ORIGIN)
67
+ any_handler_stores_memory: bool = d.field(init=False, default=False)
56
68
  memory_usages: list[tuple[str, int]] = d.field(init=False, default_factory=list)
57
69
  context_levels: list[str] = d.field(init=False, default_factory=list)
58
70
  staged_issues: list[issue_t] = d.field(init=False, default_factory=list)
@@ -65,9 +77,9 @@ class logger_t(lggg.Logger):
65
77
  self, name_: str, level_: int, activate_wrn_interceptions: bool
66
78
  ) -> None:
67
79
  """"""
68
- lggg.Logger.__init__(self, name_)
80
+ logger_base_t.__init__(self, name_)
69
81
  self.setLevel(level_)
70
- self.propagate = False # Part of lggg.Logger.
82
+ self.propagate = False # Part of logger_base_t.
71
83
 
72
84
  for level in lggg.getLevelNamesMapping().values():
73
85
  self.events[level] = 0
@@ -93,7 +105,7 @@ class logger_t(lggg.Logger):
93
105
  logger.handle = t.MethodType(_HandleForWarnings(self), logger)
94
106
 
95
107
  lggg.captureWarnings(True)
96
- self.info("Warning Interception: ON", **HIDE_WHERE_KWARG)
108
+ self.info("Warning Interception: ON")
97
109
 
98
110
  def _DeactivateWarningInterceptions(self) -> None:
99
111
  """"""
@@ -103,7 +115,7 @@ class logger_t(lggg.Logger):
103
115
  self.intercepted_wrn_handle = None
104
116
 
105
117
  lggg.captureWarnings(False)
106
- self.info("Warning Interception: OFF", **HIDE_WHERE_KWARG)
118
+ self.info("Warning Interception: OFF")
107
119
 
108
120
  def ToggleWarningInterceptions(self, state: bool, /) -> None:
109
121
  """"""
@@ -131,16 +143,13 @@ class logger_t(lggg.Logger):
131
143
  intercepted = sorted(self.intercepted_log_handles.keys())
132
144
  if intercepted.__len__() > 0:
133
145
  as_str = ", ".join(intercepted)
134
- self.info(
135
- f"Now Intercepting LOGs from: {as_str}",
136
- **HIDE_WHERE_KWARG,
137
- )
146
+ self.info(f"Now Intercepting LOGs from: {as_str}")
138
147
  elif self.intercepted_log_handles.__len__() > 0:
139
148
  for name, handle in self.intercepted_log_handles.items():
140
149
  logger = lggg.getLogger(name)
141
150
  logger.handle = handle
142
151
  self.intercepted_log_handles.clear()
143
- self.info("Log Interception: OFF", **HIDE_WHERE_KWARG)
152
+ self.info("Log Interception: OFF")
144
153
 
145
154
  @property
146
155
  def max_memory_usage(self) -> int:
@@ -163,15 +172,15 @@ class logger_t(lggg.Logger):
163
172
  def AddHandler(self, handler: lggg.Handler, should_hold_messages: bool, /) -> None:
164
173
  """"""
165
174
  self.should_hold_messages = should_hold_messages
166
- lggg.Logger.addHandler(self, handler)
175
+ logger_base_t.addHandler(self, handler)
167
176
 
168
177
  extension = getattr(handler, "extension", None)
169
178
  if extension is None:
170
- show_memory_usage = False
179
+ should_store_memory_usage = False
171
180
  else:
172
- show_memory_usage = getattr(extension, SHOW_MEMORY_ATTR, False)
173
- if show_memory_usage:
174
- self.any_handler_shows_memory = True
181
+ should_store_memory_usage = getattr(extension, STORE_MEMORY_ATTR, False)
182
+ if should_store_memory_usage:
183
+ self.any_handler_stores_memory = True
175
184
 
176
185
  extension = getattr(handler, "extension", handler.name)
177
186
  if isinstance(extension, str):
@@ -181,51 +190,75 @@ class logger_t(lggg.Logger):
181
190
  self.info(
182
191
  f'New handler "{name}" with class "{type(handler).__name__}" and '
183
192
  f"level {lggg.getLevelName(handler.level)}",
184
- **HIDE_WHERE_KWARG,
185
193
  )
186
194
 
187
195
  def handle(self, record: lggg.LogRecord, /) -> None:
188
196
  """"""
189
- if (not self.should_hold_messages) and (self.on_hold.__len__() > 0):
190
- for hold in self.on_hold:
191
- lggg.Logger.handle(self, hold)
192
- self.on_hold.clear()
193
-
194
- record.elapsed_time = ElapsedTime()
197
+ elapsed_time, now = ElapsedTime(should_return_now=True)
195
198
 
196
- if self.any_handler_shows_memory or not self.hasHandlers():
197
- # Memory usage is also added if there are no handlers yet, just in case.
198
- usage = CurrentMemoryUsage()
199
- self.memory_usages.append(
200
- (f"{record.module}.{record.funcName}.{record.lineno}", usage)
201
- )
202
-
203
- value, unit = FormattedMemoryUsage(usage, 1)
204
- record.memory_usage = f"{value}{unit}"
199
+ if (self.on_hold.__len__() > 0) and not self.should_hold_messages:
200
+ for held in self.on_hold:
201
+ logger_base_t.handle(self, held)
202
+ self.on_hold.clear()
205
203
 
206
- date = dttm.now().strftime(DATE_FORMAT)
207
- if date != self.last_message_date:
204
+ if (date := now.date()) != self.last_message_date:
208
205
  self.last_message_date = date
209
206
  # levelno: Added for management by logging.Logger.handle.
210
207
  date_record = lggg.makeLogRecord(
211
208
  {
212
209
  "name": self.name,
213
210
  "levelno": lggg.INFO,
214
- "msg": f"DATE: {date}",
211
+ "msg": f"DATE: {date.strftime(DATE_FORMAT)}",
215
212
  SHOW_W_RULE_ATTR: True,
216
213
  }
217
214
  )
218
215
  if self.should_hold_messages:
219
216
  self.on_hold.append(date_record)
220
217
  else:
221
- lggg.Logger.handle(self, date_record)
218
+ logger_base_t.handle(self, date_record)
219
+
220
+ # When.
221
+ if now - self.last_message_now > LONG_ENOUGH:
222
+ record.when_or_elapsed = now.strftime(TIME_FORMAT)
223
+ else:
224
+ record.when_or_elapsed = (
225
+ f"{ELAPSED_TIME_SEPARATOR}{elapsed_time:.<{TIME_LENGTH_m_1}}"
226
+ )
227
+ self.last_message_now = now
228
+
229
+ # Where.
230
+ # Memory usage is also stored if there are no handlers yet, just in case.
231
+ should_store_where = self.any_handler_stores_memory or not self.hasHandlers()
232
+ should_show_where = (record.levelno != lggg.INFO) and not hasattr(
233
+ record, HIDE_WHERE_ATTR
234
+ )
235
+ if should_store_where or should_show_where:
236
+ module = path_t(record.pathname)
237
+ for path in sstm.path:
238
+ if module.is_relative_to(path):
239
+ module = module.relative_to(path).with_suffix("")
240
+ module = str(module).replace(FOLDER_SEPARATOR, ".")
241
+ break
242
+ else:
243
+ module = record.module
244
+ where = f"{module}:{record.funcName}:{record.lineno}"
245
+ if should_show_where:
246
+ record.where = where
247
+ else:
248
+ where = None
249
+
250
+ # How.
251
+ record.level_first_letter = record.levelname[0]
252
+
253
+ # What.
254
+ if not isinstance(record.msg, str):
255
+ record.msg = str(record.msg)
222
256
 
223
257
  if self.should_hold_messages:
224
258
  self.on_hold.append(record)
225
259
  else:
226
- lggg.Logger.handle(self, record)
260
+ logger_base_t.handle(self, record)
227
261
 
228
- self.events[record.levelno] += 1
229
262
  if (self.exit_on_critical and (record.levelno is lggg.CRITICAL)) or (
230
263
  self.exit_on_error and (record.levelno is lggg.ERROR)
231
264
  ):
@@ -233,6 +266,11 @@ class logger_t(lggg.Logger):
233
266
  # __post_init__ set self.exit_on_critical if self.exit_on_error.
234
267
  sstm.exit(1)
235
268
 
269
+ self.events[record.levelno] += 1
270
+
271
+ if should_store_where:
272
+ self.memory_usages.append((where, CurrentMemoryUsage()))
273
+
236
274
  def Log(
237
275
  self,
238
276
  message: str,
@@ -248,7 +286,7 @@ class logger_t(lggg.Logger):
248
286
  """"""
249
287
  if isinstance(level, str):
250
288
  level = lggg.getLevelNamesMapping()[level.upper()]
251
- message = FormattedMessage(
289
+ message = MessageWithActualExpected(
252
290
  message,
253
291
  actual=actual,
254
292
  expected=expected,
@@ -292,7 +330,10 @@ class logger_t(lggg.Logger):
292
330
 
293
331
  def DisplayRule(self, /, *, text: str | None = None, color: str = "white") -> None:
294
332
  """"""
295
- self.ShowMessage(Rule(text, color))
333
+ for handler in self.handlers:
334
+ DisplayRule = getattr(handler, "DisplayRule", None)
335
+ if DisplayRule is not None:
336
+ DisplayRule(text=text, color=color)
296
337
 
297
338
  def AddContextLevel(self, new_level: str, /) -> None:
298
339
  """"""
@@ -355,7 +396,7 @@ class logger_t(lggg.Logger):
355
396
 
356
397
  if order not in ORDER:
357
398
  raise ValueError(
358
- FormattedMessage(
399
+ MessageWithActualExpected(
359
400
  "Invalid commit order",
360
401
  actual=order,
361
402
  expected=f"One of {str(ORDER)[1:-1]}",
@@ -377,17 +418,18 @@ class logger_t(lggg.Logger):
377
418
  formatted = "\n".join(lines)
378
419
  """
379
420
 
421
+ hide_where = {HIDE_WHERE_ATTR: None}
380
422
  if unified:
381
423
  level, _ = issues[0].split(ISSUE_LEVEL_SEPARATOR, maxsplit=1)
382
424
  wo_level = []
383
425
  for issue in issues:
384
426
  _, issue = issue.split(ISSUE_LEVEL_SEPARATOR, maxsplit=1)
385
427
  wo_level.append(issue)
386
- self.log(int(level), "\n".join(wo_level), stacklevel=2)
428
+ self.log(int(level), "\n".join(wo_level), stacklevel=2, extra=hide_where)
387
429
  else:
388
430
  for issue in issues:
389
431
  level, issue = issue.split(ISSUE_LEVEL_SEPARATOR, maxsplit=1)
390
- self.log(int(level), issue, stacklevel=2)
432
+ self.log(int(level), issue, stacklevel=2, extra=hide_where)
391
433
  self.staged_issues.clear()
392
434
 
393
435
  def __enter__(self) -> None:
@@ -406,10 +448,10 @@ class logger_t(lggg.Logger):
406
448
  return False
407
449
 
408
450
 
409
- def _HandleForWarnings(interceptor: lggg.Logger, /) -> logger_handle_h:
451
+ def _HandleForWarnings(interceptor: logger_base_t, /) -> logger_handle_h:
410
452
  """"""
411
453
 
412
- def handle_p(_: lggg.Logger, record: lggg.LogRecord, /) -> None:
454
+ def handle_p(_: logger_base_t, record: lggg.LogRecord, /) -> None:
413
455
  pieces = WARNING_TYPE_COMPILED_PATTERN.match(record.msg)
414
456
  if pieces is None:
415
457
  # The warning message does not follow the default format.
@@ -435,11 +477,11 @@ def _HandleForWarnings(interceptor: lggg.Logger, /) -> logger_handle_h:
435
477
 
436
478
 
437
479
  def _HandleForInterceptions(
438
- intercepted: lggg.Logger, interceptor: lggg.Logger, /
480
+ intercepted: logger_base_t, interceptor: logger_base_t, /
439
481
  ) -> logger_handle_h:
440
482
  """"""
441
483
 
442
- def handle_p(_: lggg.Logger, record: lggg.LogRecord, /) -> None:
484
+ def handle_p(_: logger_base_t, record: lggg.LogRecord, /) -> None:
443
485
  duplicate = lggg.makeLogRecord(record.__dict__)
444
486
  duplicate.msg = f"{record.msg} :{intercepted.name}:"
445
487
  interceptor.handle(duplicate)
logger_36/version.py CHANGED
@@ -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.27"
7
+ __version__ = "2024.29"
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.27
3
+ Version: 2024.29
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
@@ -0,0 +1,52 @@
1
+ logger_36/__init__.py,sha256=NtDTs3eMKaXTJeujmgj1um3cBVLti0tYuOsdtVk9o9Q,2269
2
+ logger_36/content.py,sha256=ni9gdYYNZoDa91KNianWBluOBe9KxZMZtzalcBS6vhE,2357
3
+ logger_36/exception.py,sha256=UsFcsAvd1L4aLj6h7T-DilDm6yO501HDYnGekibiMAU,3260
4
+ logger_36/gpu.py,sha256=YYFk6aYQrBDJfxQaDm-ar16T6SlOSL6jJWTOgvpF4EU,2244
5
+ logger_36/handler.py,sha256=vg8LOD0YzGQxyoKB7qr7c4rueRwp-sDF1svDHwffumg,6565
6
+ logger_36/memory.py,sha256=FTc3qCeMqnCNvHJ4Yds73noPENQx_U1MYB-R4LLUjVQ,2682
7
+ logger_36/storage.py,sha256=TNfIXEfHcjixv75wocUyqwX62iDYsor4srRqC3FNzbc,2231
8
+ logger_36/system.py,sha256=xzm6cMeTaCX9VX9ZRXUXgfqoT9oUtv3W2o_H2W0P-4Q,2243
9
+ logger_36/time.py,sha256=_CtpQeUZdsUNGNfwzhoWUiUvawRgmonqwZPHouzWf5M,2308
10
+ logger_36/version.py,sha256=FPamC8R6aakwwSJ4-41eIPnI5eDVF1QjdoZc8H7gmdA,2206
11
+ logger_36/api/logger.py,sha256=Wg2nzQeuRVZ4v-oy3Q2KdYsHSzF9v7a0Fk6BzLnbkYw,2225
12
+ logger_36/api/storage.py,sha256=evKVqIsslA5X82LaZ2HQDxp7ltyNOn8Tr-3-Pic3eUo,2231
13
+ logger_36/catalog/config/console_rich.py,sha256=iyPFozVpw18qkRTBovhb2X2WM93MW5QqgwGQDSzUijI,2866
14
+ logger_36/catalog/handler/console.py,sha256=KL8oGdtQUUE8I5Pc_5wmD1MdDSw8E7dpybkzmFWKRUY,4247
15
+ logger_36/catalog/handler/console_rich.py,sha256=of4C26UZcA10-dBrdRGWVk4u9NycX_9VIgINGevEB14,8330
16
+ logger_36/catalog/handler/file.py,sha256=JgtfBQfgQldxqogzAVYOquX3pLE-qOqnbhZbu9H3tXo,4699
17
+ logger_36/catalog/handler/generic.py,sha256=U1X2B7ptLWtdtiDh_Lri55JmygTPnY9wXwmFsPZcZuE,9002
18
+ logger_36/catalog/logger/chronos.py,sha256=7_Y_HxRHwwHyjOb2v4Y3CxMGCaJBWm7q8wlw05jZGvs,2447
19
+ logger_36/catalog/logger/gpu.py,sha256=QPESzp3V-Qhx2A99A5N3IsM9tA6ikqSPos0MKJyu-ls,3407
20
+ logger_36/catalog/logger/memory.py,sha256=Wv6thZ4ydM_x3mZkpz6XnOm7jaWjXWb3mEQuk4EKXb0,4693
21
+ logger_36/catalog/logger/system.py,sha256=WRDlh0tr8NYp6AeVjLkmzuBMwtJxSokl4_mMJRH9OBU,3076
22
+ logger_36/config/issue.py,sha256=G-i5p6lhZCLAOa-VTMyL9ZonvGCvhdoQ5KZdSWgP-FU,2267
23
+ logger_36/config/logger.py,sha256=9vQ8m1sJsK8tjnh5SZEKzofqeVJbsULTm-ev2rk0x7M,3760
24
+ logger_36/config/memory.py,sha256=yCX5phsB_KJMr5xHpVUeOHFhAA7p_8yahP3X28VndOY,2217
25
+ logger_36/config/message.py,sha256=yfbMO_Jk1IbWvT6Lp6hVpID2Tr99cuiJ-ZaMBesIFXw,2527
26
+ logger_36/config/system.py,sha256=HD8ZuwsXhEAExeZrww8YoDkQGMs4T5RDqQMb1W4qVgc,2477
27
+ logger_36/constant/error.py,sha256=1gdnCwUu3d3ThL4AKxzjn7ijSTBWlr2g-8cAKbubl4A,2825
28
+ logger_36/constant/generic.py,sha256=t6aRb66_NHwMhR1p7BZ4QXTU2jpLz-H5YAL4PuMtKx8,2244
29
+ logger_36/constant/handler.py,sha256=HM8qCSEMGNMCzddjUUNBPGL-3d0qU-EmG5eW4ZQHW6A,2311
30
+ logger_36/constant/issue.py,sha256=01l8itRPWGS5F6gXtsXUJgGR-4lS1Eu3_YeKC-khKLw,2315
31
+ logger_36/constant/logger.py,sha256=QkaFk3I9JF83nkzrk8c1Jl0j_eSTEzGyeJbNgQdoSlE,2670
32
+ logger_36/constant/memory.py,sha256=ZL1MwbdtNsrCrOwzEyfTsfOoOsRBTJtbbf3otHGnxXo,2343
33
+ logger_36/constant/message.py,sha256=Ys_CAyhENlT8Z3rr-AxO4hjdl1jLsKzVSPQ8wqLOCPQ,2838
34
+ logger_36/constant/record.py,sha256=9Q28lVH_s0og4v74delgwIPAJ9G28I5rBM-brXcoY80,2308
35
+ logger_36/constant/system.py,sha256=G2mzBTxRXoJMxb53TnmBaceMJC_q3WonoCG7y6nC_R8,2430
36
+ logger_36/instance/logger.py,sha256=ttKjl9MD7FUjqCWjv5w2hmmpDYxgaORcYf9NaaE9W_M,2246
37
+ logger_36/instance/loggers.py,sha256=RCWpC1NPAf6vXnFc9NqsSALv-x-FEzcH6k_OlxTxeQk,2251
38
+ logger_36/task/inspection.py,sha256=f9VkVrwMJ_ixV9rFu3XUNpmCbEgoo1tssqd2nMeGYLI,5028
39
+ logger_36/task/storage.py,sha256=XaSeu-iBCa0N8HNpwCV7cLprj-lbOJocpTIKUgSOvsc,5668
40
+ logger_36/task/format/memory.py,sha256=WDwRwuZbYwNxXIe_xo-r0XJtFZ0gRnE6wgTaXx_fEbc,4259
41
+ logger_36/task/format/message.py,sha256=T2V2gUlUQqSojyRrz4I4uAHwNe6eBEsuAe6V-LTyx0k,3867
42
+ logger_36/task/format/rule.py,sha256=M4a8uW7FEvMI9f4s32A9-DoP0WVlLkyXamGnqbzZ65A,2797
43
+ logger_36/task/measure/chronos.py,sha256=OhQHPFKJvTEizpj7Uvysu8r9dTpzPgKz1SoTztlEcnI,3066
44
+ logger_36/task/measure/memory.py,sha256=eVw5WOYLyn8o4O4mMArdX2MzsVuhhNDovjYEkk-MIaU,2504
45
+ logger_36/type/handler.py,sha256=HJ547swaN1bdxnxoU4cIinWUkww3YAQ1vYgtugWk5X4,6474
46
+ logger_36/type/issue.py,sha256=p2upR8vAXPkrnSwPuM3R1hmTkRwJwL1e658L6WwSWfQ,3220
47
+ logger_36/type/logger.py,sha256=kYPiUOR_qs9DWBaHH4damx7xsh-OlFbYLHY1enyzn3w,18884
48
+ logger_36/type/loggers.py,sha256=znqxWBnfQxvkg3VUfbTUvt3S6Kq0DAzWWepxQDt9suI,2871
49
+ logger_36-2024.29.dist-info/METADATA,sha256=vV3RAljMWV9CptX6oIUtgz6sqQflABEhCCymI6-hBGw,6276
50
+ logger_36-2024.29.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
51
+ logger_36-2024.29.dist-info/top_level.txt,sha256=sM95BTMWmslEEgR_1pzwZsOeSp8C_QBiu8ImbFr0XLc,10
52
+ logger_36-2024.29.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.1.0)
2
+ Generator: setuptools (75.2.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,52 +0,0 @@
1
- logger_36/__init__.py,sha256=NtDTs3eMKaXTJeujmgj1um3cBVLti0tYuOsdtVk9o9Q,2269
2
- logger_36/content.py,sha256=jobWhMw249uLfi8d8RFpKQRyyMXD7YQg-DxPMqvj2xs,2348
3
- logger_36/exception.py,sha256=UsFcsAvd1L4aLj6h7T-DilDm6yO501HDYnGekibiMAU,3260
4
- logger_36/gpu.py,sha256=YYFk6aYQrBDJfxQaDm-ar16T6SlOSL6jJWTOgvpF4EU,2244
5
- logger_36/handler.py,sha256=9KUu02RpKGKBR358gqS5G1Zut5C6MyBgGzRsQYFBAtY,6721
6
- logger_36/memory.py,sha256=FTc3qCeMqnCNvHJ4Yds73noPENQx_U1MYB-R4LLUjVQ,2682
7
- logger_36/storage.py,sha256=TNfIXEfHcjixv75wocUyqwX62iDYsor4srRqC3FNzbc,2231
8
- logger_36/system.py,sha256=xzm6cMeTaCX9VX9ZRXUXgfqoT9oUtv3W2o_H2W0P-4Q,2243
9
- logger_36/time.py,sha256=_CtpQeUZdsUNGNfwzhoWUiUvawRgmonqwZPHouzWf5M,2308
10
- logger_36/version.py,sha256=BHE8FGk7UVmYkZxuzPzeyQAKQ3Sf9l6PQlGieBCQ9-w,2206
11
- logger_36/api/logger.py,sha256=Wg2nzQeuRVZ4v-oy3Q2KdYsHSzF9v7a0Fk6BzLnbkYw,2225
12
- logger_36/api/storage.py,sha256=evKVqIsslA5X82LaZ2HQDxp7ltyNOn8Tr-3-Pic3eUo,2231
13
- logger_36/catalog/config/console_rich.py,sha256=FphhhrwYZ3BbdOjmmFa0xYSGag5Vi9t3eoU405NRNOY,2890
14
- logger_36/catalog/handler/console.py,sha256=gSNFCoKfTFg7ID8lJjlbZuVi-4C5j-eQX1q_vllXL9s,4183
15
- logger_36/catalog/handler/console_rich.py,sha256=L1sxLTbf2So88s1Y8tVygGJO71iIpDlYr9lbMJ5lHk0,8817
16
- logger_36/catalog/handler/file.py,sha256=YBl0-1jBn4W0fm_WYg9zMHwFU9DRaDKOBQsLGle_BSs,4635
17
- logger_36/catalog/handler/generic.py,sha256=wG6Z1-lHj_9o6cPurEVpPctFlec3BFeqx2mZU_krJt8,8379
18
- logger_36/catalog/logger/chronos.py,sha256=eLqQw8N9vaGO23OCf5RrYDPbUeu7epUvDt9rH-dN7i0,2522
19
- logger_36/catalog/logger/gpu.py,sha256=vUFSP17e7U4nenMi5IMlDiP3cZvXe6nqEDpoqzTavdg,3490
20
- logger_36/catalog/logger/memory.py,sha256=Zel_UCnHqGAqf_YuKpvjt0OIOo9vwKYpFM9g_2bjir0,4790
21
- logger_36/catalog/logger/system.py,sha256=FQ3w1zIN1ab6y8QYtcYDULhyJYy4iwTwHoDs8Mi2IdQ,3159
22
- logger_36/config/issue.py,sha256=G-i5p6lhZCLAOa-VTMyL9ZonvGCvhdoQ5KZdSWgP-FU,2267
23
- logger_36/config/logger.py,sha256=1uzuguWShCU13LtPBPs7tgP_iSnl3SE5hF-iqieaBYQ,3742
24
- logger_36/config/memory.py,sha256=yCX5phsB_KJMr5xHpVUeOHFhAA7p_8yahP3X28VndOY,2217
25
- logger_36/config/message.py,sha256=SP5hq83WU2gr1G4drne-HLRwArH_ciLzE8ffUGLutc0,2649
26
- logger_36/config/system.py,sha256=HD8ZuwsXhEAExeZrww8YoDkQGMs4T5RDqQMb1W4qVgc,2477
27
- logger_36/constant/error.py,sha256=1gdnCwUu3d3ThL4AKxzjn7ijSTBWlr2g-8cAKbubl4A,2825
28
- logger_36/constant/generic.py,sha256=t6aRb66_NHwMhR1p7BZ4QXTU2jpLz-H5YAL4PuMtKx8,2244
29
- logger_36/constant/handler.py,sha256=HM8qCSEMGNMCzddjUUNBPGL-3d0qU-EmG5eW4ZQHW6A,2311
30
- logger_36/constant/issue.py,sha256=01l8itRPWGS5F6gXtsXUJgGR-4lS1Eu3_YeKC-khKLw,2315
31
- logger_36/constant/logger.py,sha256=0GhemAQ_YBiRO5WQBuNTczuejyVu2IYCsgqPRIbL8es,2780
32
- logger_36/constant/memory.py,sha256=ZL1MwbdtNsrCrOwzEyfTsfOoOsRBTJtbbf3otHGnxXo,2343
33
- logger_36/constant/message.py,sha256=u7VH3mj_oW0W33UBIVVzZN1L7iQf4XW0BBr72w6y7bw,2745
34
- logger_36/constant/record.py,sha256=zebZYR4buX1lGfc7IyuvEh8zOpk7hx0aS4pJ12H0flI,2311
35
- logger_36/constant/system.py,sha256=G2mzBTxRXoJMxb53TnmBaceMJC_q3WonoCG7y6nC_R8,2430
36
- logger_36/instance/logger.py,sha256=ttKjl9MD7FUjqCWjv5w2hmmpDYxgaORcYf9NaaE9W_M,2246
37
- logger_36/instance/loggers.py,sha256=RCWpC1NPAf6vXnFc9NqsSALv-x-FEzcH6k_OlxTxeQk,2251
38
- logger_36/task/inspection.py,sha256=f9VkVrwMJ_ixV9rFu3XUNpmCbEgoo1tssqd2nMeGYLI,5028
39
- logger_36/task/storage.py,sha256=XaSeu-iBCa0N8HNpwCV7cLprj-lbOJocpTIKUgSOvsc,5668
40
- logger_36/task/format/memory.py,sha256=ECOdHjdxIqXivOwtcmwpLDMYUrutIeOTCn1L4d3-U8k,4241
41
- logger_36/task/format/message.py,sha256=HuV8we1mqh7Xcd4vbwoC0mJ8f_PjtP4sX3WFM6W7Oew,4420
42
- logger_36/task/format/rule.py,sha256=M4a8uW7FEvMI9f4s32A9-DoP0WVlLkyXamGnqbzZ65A,2797
43
- logger_36/task/measure/chronos.py,sha256=PX7dESj0znstwAWW2tTQ5gcQuIlexzt1ZKcccyp-Ap0,2870
44
- logger_36/task/measure/memory.py,sha256=eVw5WOYLyn8o4O4mMArdX2MzsVuhhNDovjYEkk-MIaU,2504
45
- logger_36/type/handler.py,sha256=BXpevZhLq5V_IdUfi_LZA4czzlH2SGLpgvbqUBe5X10,8311
46
- logger_36/type/issue.py,sha256=Y7OCLCzVt6Yvkecwj8HXLdZjg33oMxexc9XkYHzUhh4,3202
47
- logger_36/type/logger.py,sha256=J08I5sw7Lr2bEDJo2aJc5b4LgTvU_5O4RCDoBnqsSEw,17432
48
- logger_36/type/loggers.py,sha256=znqxWBnfQxvkg3VUfbTUvt3S6Kq0DAzWWepxQDt9suI,2871
49
- logger_36-2024.27.dist-info/METADATA,sha256=4o_ByIvupgiMzQ6UUQBa-HN6bWoYPZgJ2D-DZgLgdoM,6276
50
- logger_36-2024.27.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
51
- logger_36-2024.27.dist-info/top_level.txt,sha256=sM95BTMWmslEEgR_1pzwZsOeSp8C_QBiu8ImbFr0XLc,10
52
- logger_36-2024.27.dist-info/RECORD,,