Source code for pypint.utilities.tracing

# coding=utf-8
"""Collection of utility functions related to the callstack and traceback.

.. moduleauthor:: Torbjörn Klatt <[email protected]>
"""
import inspect


[docs]def func_name(obj=None, *args, **kwargs): """Formats the calling functions name. Formats the calling functions name in the format ``'ClassName.FunctionName(): '``. Parameters ---------- obj : :py:class:`object` Instance of an object the calling function is a member of. Returns ------- formatted_function_name : :py:class:`str` Formatted function name of calling function. Examples -------- >>> from pypint.utilities import func_name >>> class MyClass(object): ... def my_func(self): ... print(func_name(self) + "Hello World!") >>> my_obj = MyClass() >>> #my_obj.my_func() """ _params = '' if len(args) > 0: _params += ', '.join(args) if len(kwargs) > 0: _params += ', ' if len(kwargs) > 0: _c = 0 for _k in kwargs: if _c > 0: _params += ', ' _params += str(_k) + '=' + str(kwargs[_k]) _c += 1 if obj: return "%s<0x%x>.%s(%s): " % (checking_obj_name(obj), id(obj), inspect.stack()[1][3], _params) else: return "%s(%s): " % (inspect.stack()[1][3], _params)
def class_name(obj): return obj.__class__.__name__ def checking_obj_name(obj=None): return class_name(obj) if obj else "unknown" __all__ = ['func_name', 'class_name']