code: def _get_human_readable_value(value):
      if isinstance(value, Secrets):
          # Don't want to read secrets.toml because that will show a warning if there's no
          # secrets.toml file.
          return None
  
      if (
          inspect.isclass(value)
          or inspect.ismodule(value)
          or callable(value)
      ):
          return None
  
      value_str = repr(value)
  
      if isinstance(value, str):
          # Special-case strings as human-readable because they're allowed to look like
          # "<foo blarg at 0x15ee6f9a0>".
          return _shorten(value_str)
  
      if is_mem_address_str(value_str):
          # If value_str looks like "<foo blarg at 0x15ee6f9a0>" it's not human readable.
          return None
  
      return _shorten(value_str)
  
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 16 for calling a global function with example usage: _get_human_readable_value(value) and returns: _shorten, None, None, _shorten, None