def str_to_bool(val: str): if not val: return False val = val.lower() if val in ('y', 'yes', 't', 'true', 'on', '1'): return True elif val in ('', 'n', 'no', 'f', 'false', 'off', '0'): return False else: raise ValueError('invalid truth value %r' % (val,)) def trace_origin(initial_frame, stacklevel=0): frame = initial_frame.f_back for _ in range(stacklevel + 1): frame = frame.f_back file_name = frame.f_code.co_filename line_number = frame.f_lineno func_name = frame.f_code.co_name print(file_name, ":", line_number, ": ", func_name, ": ")