23 from __future__
import absolute_import, division, print_function
26 __all__ = [
"get_caller_name"]
30 """Get the name of the caller method. 32 Any item that cannot be determined (or is not relevant, e.g. a free 33 function has no class) is silently omitted, along with an 39 How many levels of stack to skip while getting caller name; 40 1 means "who calls me", 2 means "who calls my caller", etc. 45 Name of the caller as a string in the form ``module.class.method``. 46 An empty string is returned if ``skip`` exceeds the stack height. 50 Adapted from from http://stackoverflow.com/a/9812105 51 by adding support to get the class from ``parentframe.f_locals['cls']`` 53 stack = inspect.stack()
55 if len(stack) < start + 1:
57 parentframe = stack[start][0]
60 module = inspect.getmodule(parentframe)
62 name.append(module.__name__)
64 if 'self' in parentframe.f_locals:
65 name.append(type(parentframe.f_locals[
'self']).__name__)
66 elif 'cls' in parentframe.f_locals:
67 name.append(parentframe.f_locals[
'cls'].__name__)
68 codename = parentframe.f_code.co_name
69 if codename !=
'<module>':
def get_caller_name(skip=2)