code: def _get_value(obj, var_name):
      obj_value = _get_human_readable_value(obj)
  
      if obj_value is not None:
          return obj_value
  
      # If there's no human-readable value, it's some complex object.
      # So let's provide other info about it.
      name = _get_name(obj)
  
      if name:
          name_obj = obj
      else:
          # If the object itself doesn't have a name, then it's probably an instance
          # of some class Foo. So let's show info about Foo in the value slot.
          name_obj = type(obj)
          name = _get_name(name_obj)
  
      module = _get_module(name_obj)
      sig = _get_signature(name_obj) or ""
  
      if name:
          if module:
              obj_value = f"{module}.{name}{sig}"
          else:
              obj_value = f"{name}{sig}"
  
      if obj_value == var_name:
          # No need to repeat the same info.
          # For example: st.help(re) shouldn't show "re module re", just "re module".
          obj_value = None
  
      return obj_value
  
imports: import ast
  import contextlib
  import inspect
  import re
  import types
  from typing import TYPE_CHECKING, Any, cast
  from typing_extensions import Final
  import streamlit
  from streamlit.logger import get_logger
  from streamlit.proto.DocString_pb2 import DocString
  from streamlit.proto.DocString_pb2 import Member
  from streamlit.runtime.metrics_util import gather_metrics
  from streamlit.runtime.scriptrunner.script_runner import __file__
  from streamlit.runtime.secrets import Secrets
  from streamlit.string_util import is_mem_address_str
label_desc: Use image node_id 15 for calling a global function with example usage: _get_value(obj, var_name) and returns: obj_value, obj_value