From 36af470927677e73c2569e48a31a9890770eafe9 Mon Sep 17 00:00:00 2001
From: DEBREUVE Eric <eric.debreuve@cnrs.fr>
Date: Mon, 13 Jan 2025 14:46:58 +0100
Subject: [PATCH] now beartyped when run from source folder (as opposed to
 installation folder), which allowed to correct some type hints

---
 package/logger_36/__init__.py                     | 12 ++++++++++++
 package/logger_36/catalog/handler/console_rich.py |  6 +++---
 package/logger_36/catalog/handler/file.py         |  2 +-
 package/logger_36/catalog/logger/memory.py        |  2 +-
 package/logger_36/task/format/memory.py           |  2 +-
 package/logger_36/task/measure/chronos.py         |  2 +-
 package/logger_36/task/storage.py                 |  4 ++--
 package/logger_36/version.py                      |  2 +-
 8 files changed, 22 insertions(+), 10 deletions(-)

diff --git a/package/logger_36/__init__.py b/package/logger_36/__init__.py
index 7dbf1ab..d3242c6 100644
--- a/package/logger_36/__init__.py
+++ b/package/logger_36/__init__.py
@@ -4,6 +4,18 @@ Contributor(s): Eric Debreuve (eric.debreuve@cnrs.fr) since 2023
 SEE COPYRIGHT NOTICE BELOW
 """
 
+try:
+    from beartype.claw import beartype_this_package  # noqa
+except ModuleNotFoundError:
+    pass
+else:
+    import site
+    from pathlib import Path as path_t
+    paths = site.getsitepackages() + [site.getusersitepackages()]
+    folder = path_t(__file__).parent
+    if folder not in paths:
+        beartype_this_package()
+
 from logger_36.instance.logger import LOGGER
 from logger_36.version import __version__
 
diff --git a/package/logger_36/catalog/handler/console_rich.py b/package/logger_36/catalog/handler/console_rich.py
index 6c3c712..2f9585a 100644
--- a/package/logger_36/catalog/handler/console_rich.py
+++ b/package/logger_36/catalog/handler/console_rich.py
@@ -22,7 +22,7 @@ from logger_36.catalog.config.console_rich import (
 from logger_36.config.message import ACTUAL_PATTERNS, EXPECTED_PATTERNS, WHERE_SEPARATOR
 from logger_36.constant.message import CONTEXT_LENGTH, LINE_INDENT
 from logger_36.constant.record import SHOW_W_RULE_ATTR
-from logger_36.task.format.rule import Rule
+from logger_36.task.format.rule import Rule, rule_t
 from logger_36.type.handler import handler_extension_t
 from rich.console import Console as console_t
 from rich.console import RenderableType as renderable_t
@@ -145,12 +145,12 @@ class console_rich_handler_t(lggg.Handler):
             )
         self.console.print(richer, crop=False, overflow="ignore")
 
-    def ShowMessage(self, message: str, /, *, indented: bool = False) -> None:
+    def ShowMessage(self, message: str | rule_t, /, *, indented: bool = False) -> None:
         """
         See documentation of
         logger_36.catalog.handler.generic.generic_handler_t.ShowMessage.
         """
-        if indented:
+        if isinstance(message, str) and indented:
             message = txt_.indent(message, LINE_INDENT)
         self.console.print(message, crop=False, overflow="ignore")
 
diff --git a/package/logger_36/catalog/handler/file.py b/package/logger_36/catalog/handler/file.py
index 4ddc305..4b24539 100644
--- a/package/logger_36/catalog/handler/file.py
+++ b/package/logger_36/catalog/handler/file.py
@@ -40,7 +40,7 @@ class file_handler_t(lggg.FileHandler):
         message_width: int,
         formatter: lggg.Formatter | None,
         path: path_t | None,
-        handler_args: tuple[h.Any],
+        handler_args: tuple[h.Any, ...] | None,
         handler_kwargs: dict[str, h.Any] | None,
     ) -> None:
         """"""
diff --git a/package/logger_36/catalog/logger/memory.py b/package/logger_36/catalog/logger/memory.py
index 7c31de4..2d9129c 100644
--- a/package/logger_36/catalog/logger/memory.py
+++ b/package/logger_36/catalog/logger/memory.py
@@ -70,7 +70,7 @@ def LogMemoryUsages(
 def LogMaximumMemoryUsage(
     *,
     unit: storage_units_h | None = "a",
-    decimals: int = None,
+    decimals: int | None = None,
     logger: logger_t = LOGGER,
 ) -> None:
     """
diff --git a/package/logger_36/task/format/memory.py b/package/logger_36/task/format/memory.py
index 5c4a433..82d9606 100644
--- a/package/logger_36/task/format/memory.py
+++ b/package/logger_36/task/format/memory.py
@@ -20,7 +20,7 @@ def FormattedUsage(
     /,
     *,
     unit: storage_units_h | None = "a",
-    decimals: int = None,
+    decimals: int | None = None,
 ) -> tuple[int | float, str]:
     """
     unit: b or None=bytes, k=kilo, m=mega, g=giga, a=auto
diff --git a/package/logger_36/task/measure/chronos.py b/package/logger_36/task/measure/chronos.py
index 8c3117b..dc75c94 100644
--- a/package/logger_36/task/measure/chronos.py
+++ b/package/logger_36/task/measure/chronos.py
@@ -24,7 +24,7 @@ def TimeStamp(*, precision: str = "microseconds") -> str:
 
 def ElapsedTime(
     *, should_return_now: bool = False
-) -> str | tuple[str, date_time_t.date]:
+) -> str | tuple[str, date_time_t]:
     """"""
     now = date_time_t.now()
     elapsed_seconds = (now - _START_DATE_AND_TIME).total_seconds()
diff --git a/package/logger_36/task/storage.py b/package/logger_36/task/storage.py
index b4e00d1..8644891 100644
--- a/package/logger_36/task/storage.py
+++ b/package/logger_36/task/storage.py
@@ -7,8 +7,8 @@ SEE COPYRIGHT NOTICE BELOW
 import dataclasses as d
 import logging as lggg
 import re as regx
-import typing as h
 from html.parser import HTMLParser as html_parser_t
+from io import IOBase as io_base_t
 from pathlib import Path as path_t
 
 try:
@@ -70,7 +70,7 @@ class html_reader_t(html_parser_t):
         return "".join(self.pieces).strip()
 
 
-def SaveLOGasHTML(path: str | path_t | h.TextIO = None) -> None:
+def SaveLOGasHTML(path: str | path_t | io_base_t | None = None) -> None:
     """
     From first console handler found.
     """
diff --git a/package/logger_36/version.py b/package/logger_36/version.py
index 3c58504..f5216c9 100644
--- a/package/logger_36/version.py
+++ b/package/logger_36/version.py
@@ -4,7 +4,7 @@ Contributor(s): Eric Debreuve (eric.debreuve@cnrs.fr) since 2023
 SEE COPYRIGHT NOTICE BELOW
 """
 
-__version__ = "2025.1"
+__version__ = "2025.2"
 
 """
 COPYRIGHT NOTICE
-- 
GitLab