code: def __new__(cls, orig_func, sub_func, cond_func):
      self = super(CondFunc, cls).__new__(cls)
      if isinstance(orig_func, str):
          func_path = orig_func.split(".")
          for i in range(len(func_path) - 1, -1, -1):
              try:
                  resolved_obj = importlib.import_module(
                      ".".join(func_path[:i])
                  )
                  break
              except ImportError:
                  pass
          for attr_name in func_path[i:-1]:
              resolved_obj = getattr(resolved_obj, attr_name)
          orig_func = getattr(resolved_obj, func_path[-1])
          setattr(
              resolved_obj,
              func_path[-1],
              lambda *args, **kwargs: self(*args, **kwargs),
          )
      self.__init__(orig_func, sub_func, cond_func)
      return lambda *args, **kwargs: self(*args, **kwargs)
  
imports: import importlib
label_desc: Use image node_id 1 for calling the CondFunc obj's underlying member method code with example usage: obj.__new__(cls, orig_func, sub_func, cond_func) and returns: function