code: def full_path_exists(full_func):
      def get_parent_child_pairs(full_func):
          components = full_func.split(".")
          parents, children = [], []
          for i, _ in enumerate(components[:-1], 1):
              parent = ".".join(components[:i])
              child = components[i]
              parents.append(parent)
              children.append(child)
          return zip(parents, children)
  
      for parent, child in get_parent_child_pairs(full_func):
          module = wandb.util.get_module(parent)
          if (
              not module
              or not hasattr(module, child)
              or getattr(module, child) is None
          ):
              return False
      return True
  
file_path: wandb/wandb/integration/kfp/kfp_patch.py
imports: import inspect
  import itertools
  import textwrap
  from typing import Callable, List, Mapping, Optional
  from pkg_resources import parse_version
  import wandb
  from .wandb_logging import wandb_log
label_desc: Use image node_id 1 for calling a global function with example usage: full_path_exists(full_func) and returns: True, zip, False