code: def _marshall(doc_string_proto: DocStringProto, obj: Any) -> None:
      """Construct a DocString object.
  
      See DeltaGenerator.help for docs.
      """
      var_name = _get_variable_name()
      if var_name is not None:
          doc_string_proto.name = var_name
  
      obj_type = _get_type_as_str(obj)
      doc_string_proto.type = obj_type
  
      obj_docs = _get_docstring(obj)
      if obj_docs is not None:
          doc_string_proto.doc_string = obj_docs
  
      obj_value = _get_value(obj, var_name)
      if obj_value is not None:
          doc_string_proto.value = obj_value
  
      doc_string_proto.members.extend(_get_members(obj))
  
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 1 for calling a global function with example usage: _marshall(doc_string_proto, obj) without return types