From edf6d11d7de9fbf673ed8a31fba209111f2c5b63 Mon Sep 17 00:00:00 2001 From: roman mac Date: Sun, 29 Oct 2023 18:39:28 +0300 Subject: [PATCH 1/3] add logging_function --- devtools/debug.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/devtools/debug.py b/devtools/debug.py index 89cda24..4ac0f72 100644 --- a/devtools/debug.py +++ b/devtools/debug.py @@ -10,7 +10,7 @@ MYPY = False if MYPY: from types import FrameType - from typing import Any, Generator, List, Optional, Union + from typing import Any, Generator, List, Optional, Union, Callable pformat = PrettyFormat( indent_step=int(os.getenv('PY_DEVTOOLS_INDENT', 4)), @@ -108,9 +108,10 @@ def __repr__(self) -> StrType: class Debug: output_class = DebugOutput - def __init__(self, *, warnings: 'Optional[bool]' = None, highlight: 'Optional[bool]' = None): + def __init__(self, *, warnings: 'Optional[bool]' = None, highlight: 'Optional[bool]' = None, logger_function: 'Callable[[str], None]' = None): self._show_warnings = env_bool(warnings, 'PY_DEVTOOLS_WARNINGS', True) self._highlight = highlight + self._logger_function = logger_function def __call__( self, @@ -122,7 +123,10 @@ def __call__( ) -> 'Any': d_out = self._process(args, kwargs, frame_depth_) s = d_out.str(use_highlight(self._highlight, file_)) - print(s, file=file_, flush=flush_) + if self._logger_function: + self._logger_function(s) + else: + print(s, file=file_, flush=flush_) if kwargs: return (*args, kwargs) elif len(args) == 1: From a66914989b32ea80a9d6cbc87a3d5976763e756a Mon Sep 17 00:00:00 2001 From: roman mac Date: Sun, 29 Oct 2023 19:43:51 +0300 Subject: [PATCH 2/3] Optional cuz of mypy --- devtools/debug.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/devtools/debug.py b/devtools/debug.py index 4ac0f72..b7f1022 100644 --- a/devtools/debug.py +++ b/devtools/debug.py @@ -108,7 +108,7 @@ def __repr__(self) -> StrType: class Debug: output_class = DebugOutput - def __init__(self, *, warnings: 'Optional[bool]' = None, highlight: 'Optional[bool]' = None, logger_function: 'Callable[[str], None]' = None): + def __init__(self, *, warnings: 'Optional[bool]' = None, highlight: 'Optional[bool]' = None, logger_function: 'Optional[Callable[[str], None]]' = None): self._show_warnings = env_bool(warnings, 'PY_DEVTOOLS_WARNINGS', True) self._highlight = highlight self._logger_function = logger_function From fb8c5060e55de6dfdd1080751e46c0471760c130 Mon Sep 17 00:00:00 2001 From: roman mac Date: Sun, 29 Oct 2023 19:48:13 +0300 Subject: [PATCH 3/3] lint checker please accept my code (reordered imports and rewritten args) --- devtools/debug.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/devtools/debug.py b/devtools/debug.py index b7f1022..492a5da 100644 --- a/devtools/debug.py +++ b/devtools/debug.py @@ -10,7 +10,7 @@ MYPY = False if MYPY: from types import FrameType - from typing import Any, Generator, List, Optional, Union, Callable + from typing import Any, Callable, Generator, List, Optional, Union pformat = PrettyFormat( indent_step=int(os.getenv('PY_DEVTOOLS_INDENT', 4)), @@ -108,7 +108,13 @@ def __repr__(self) -> StrType: class Debug: output_class = DebugOutput - def __init__(self, *, warnings: 'Optional[bool]' = None, highlight: 'Optional[bool]' = None, logger_function: 'Optional[Callable[[str], None]]' = None): + def __init__( + self, + *, + warnings: 'Optional[bool]' = None, + highlight: 'Optional[bool]' = None, + logger_function: 'Optional[Callable[[str], None]]' = None, + ): self._show_warnings = env_bool(warnings, 'PY_DEVTOOLS_WARNINGS', True) self._highlight = highlight self._logger_function = logger_function