Creates a function_utils and pull a function_identifer method into
[python_utils.git] / logging_utils.py
index ddea102d4b7d4a94ea98d87a5877d922431d8225..c04d76d610708b5ff731c9ca4cd5a4f988c35867 100644 (file)
@@ -159,29 +159,6 @@ built_in_print = print
 logging_initialized = False
 
 
-def function_identifier(f: Callable) -> str:
-    """
-    Given a callable function, return a string that identifies it.
-    Usually that string is just __module__:__name__ but there's a
-    corner case: when __module__ is __main__ (i.e. the callable is
-    defined in the same module as __main__).  In this case,
-    f.__module__ returns "__main__" instead of the file that it is
-    defined in.  Work around this using pathlib.Path (see below).
-
-    >>> function_identifier(function_identifier)
-    'logging_utils:function_identifier'
-
-    """
-    if f.__module__ == '__main__':
-        from pathlib import Path
-        import __main__
-        module = __main__.__file__
-        module = Path(module).stem
-        return f'{module}:{f.__name__}'
-    else:
-        return f'{f.__module__}:{f.__name__}'
-
-
 # A map from logging_callsite_id -> count of logged messages.
 squelched_logging_counts: Mapping[str, int] = {}
 
@@ -200,7 +177,8 @@ def squelch_repeated_log_messages(squelch_after_n_repeats: int) -> Callable:
 
     """
     def squelch_logging_wrapper(f: Callable):
-        identifier = function_identifier(f)
+        import function_utils
+        identifier = function_utils.function_identifier(f)
         squelched_logging_counts[identifier] = squelch_after_n_repeats
         return f
     return squelch_logging_wrapper
@@ -334,7 +312,8 @@ def logging_is_probabilistic(probability_of_logging: float) -> Callable:
 
     """
     def probabilistic_logging_wrapper(f: Callable):
-        identifier = function_identifier(f)
+        import function_utils
+        identifier = function_utils.function_identifier(f)
         probabilistic_logging_levels[identifier] = probability_of_logging
         return f
     return probabilistic_logging_wrapper