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, ": ")