code: def marshall(
      proto: GraphVizChartProto,
      figure_or_dot: FigureOrDot,
      use_container_width: bool,
      element_id: str,
  ) -> None:
      """Construct a GraphViz chart object.
  
      See DeltaGenerator.graphviz_chart for docs.
      """
  
      if type_util.is_graphviz_chart(figure_or_dot):
          dot = figure_or_dot.source
          engine = figure_or_dot.engine
      elif isinstance(figure_or_dot, str):
          dot = figure_or_dot
          engine = "dot"
      else:
          raise StreamlitAPIException(
              "Unhandled type for graphviz chart: %s"
              % type(figure_or_dot)
          )
  
      proto.spec = dot
      proto.engine = engine
      proto.use_container_width = use_container_width
      proto.element_id = element_id
  
file_path: streamlit/lib/streamlit/elements/graphviz_chart.py
imports: import hashlib
  from typing import TYPE_CHECKING, Union, cast
  from typing_extensions import Final, TypeAlias
  from streamlit import type_util
  from streamlit.errors import StreamlitAPIException
  from streamlit.logger import get_logger
  from streamlit.proto.GraphVizChart_pb2 import GraphVizChart
  from streamlit.runtime.metrics_util import gather_metrics
  from streamlit.util import HASHLIB_KWARGS
label_desc: Use image node_id 1 for calling a global function with example usage: marshall(proto, figure_or_dot, use_container_width, element_id) without return types