about summary refs log tree commit diff
path: root/gn_libs/debug.py
diff options
context:
space:
mode:
Diffstat (limited to 'gn_libs/debug.py')
-rw-r--r--gn_libs/debug.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/gn_libs/debug.py b/gn_libs/debug.py
new file mode 100644
index 0000000..7ad10e0
--- /dev/null
+++ b/gn_libs/debug.py
@@ -0,0 +1,41 @@
+"""Debug utilities"""
+import logging
+import importlib.util
+from typing import Callable
+
+__this_module_name__ = __name__
+
+
+# pylint: disable=invalid-name
+def getLogger(name: str):
+    """Return a logger"""
+    flask_spec = importlib.util.find_spec("flask")
+    if bool(flask_spec):
+        current_app = importlib.import_module("flask").current_app
+        return (
+            logging.getLogger(name)
+            if not bool(current_app)
+            else current_app.logger)
+
+    return logging.getLogger(name)
+
+
+def __pk__(*args):
+    """Format log entry"""
+    value = args[-1]
+    title_vals = " => ".join(args[0:-1])
+    logger = getLogger(__this_module_name__)
+    logger.debug("%s: %s", title_vals, value)
+    return value
+
+
+def make_peeker(logger: logging.Logger) -> Callable:
+    """Make a peeker function that's very much like __pk__ but that uses the
+    given logger."""
+    def peeker(*args):
+        value = args[-1]
+        title_vals = " => ".join(args[0:-1])
+        logger.debug("%s: %s", title_vals, value)
+        return value
+
+    return peeker