
    &e              
          U d Z ddlZddlmZmZmZ ddlmZmZ ddl	m
Z
 ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ er
ddlZddlmZ  ee          Zeed<   eddef         Zeed<    G d d          Zdededededdf
dZ dS )z&Streamlit support for GraphViz charts.    N)TYPE_CHECKINGUnioncast)Final	TypeAlias)	type_util)StreamlitAPIException)
get_logger)GraphVizChart)gather_metrics)HASHLIB_KWARGS)DeltaGeneratorLOGGERzgraphviz.Graphzgraphviz.DigraphFigureOrDotc                   `    e Zd Z ed          	 d
dededdfd            Zedd            Zd	S )GraphvizMixingraphviz_chartFfigure_or_dotuse_container_widthreturnr   c                     | j                                         }t          j        |                                fi t
                                          }t                      }t          ||||           | j         	                    d|          S )a:  Display a graph using the dagre-d3 library.

        Parameters
        ----------
        figure_or_dot : graphviz.dot.Graph, graphviz.dot.Digraph, str
            The Graphlib graph object or dot string to display

        use_container_width : bool
            If True, set the chart width to the column width. This takes
            precedence over the figure's native `width` value.

        Example
        -------
        >>> import streamlit as st
        >>> import graphviz
        >>>
        >>> # Create a graphlib graph object
        >>> graph = graphviz.Digraph()
        >>> graph.edge('run', 'intr')
        >>> graph.edge('intr', 'runbl')
        >>> graph.edge('runbl', 'run')
        >>> graph.edge('run', 'kernel')
        >>> graph.edge('kernel', 'zombie')
        >>> graph.edge('kernel', 'sleep')
        >>> graph.edge('kernel', 'runmem')
        >>> graph.edge('sleep', 'swap')
        >>> graph.edge('swap', 'runswap')
        >>> graph.edge('runswap', 'new')
        >>> graph.edge('runswap', 'runmem')
        >>> graph.edge('new', 'runmem')
        >>> graph.edge('sleep', 'runmem')
        >>>
        >>> st.graphviz_chart(graph)

        Or you can render the chart from the graph using GraphViz's Dot
        language:

        >>> st.graphviz_chart('''
            digraph {
                run -> intr
                intr -> runbl
                runbl -> run
                run -> kernel
                kernel -> zombie
                kernel -> sleep
                kernel -> runmem
                sleep -> swap
                swap -> runswap
                runswap -> new
                runswap -> runmem
                new -> runmem
                sleep -> runmem
            }
        ''')

        .. output::
           https://doc-graphviz-chart.streamlit.app/
           height: 600px

        r   )
dg_get_delta_path_strhashlibmd5encoder   	hexdigestGraphVizChartProtomarshall_enqueue)selfr   r   
delta_path
element_idgraphviz_chart_protos         Alib/python3.11/site-packages/streamlit/elements/graphviz_chart.pyr   zGraphvizMixin.graphviz_chart(   s    F W0022
[!2!2!4!4GGGGQQSS
133%}6I:VVVw 02FGGG    c                 "    t          d|           S )zGet our DeltaGenerator.r   )r   )r!   s    r%   r   zGraphvizMixin.dgs   s     $d+++r&   N)F)r   r   )	__name__
__module____qualname__r   r   boolr   propertyr    r&   r%   r   r   '   s        ^$%% %*HH HH"HH "HH 
	HH HH HH &%HHT , , , X, , ,r&   r   protor   r   r#   r   c                     t          j        |          r|j        }|j        }n9t	          |t
                    r|}d}nt          dt          |          z            || _        || _        || _	        || _
        dS )zXConstruct a GraphViz chart object.

    See DeltaGenerator.graphviz_chart for docs.
    dotz%Unhandled type for graphviz chart: %sN)r   is_graphviz_chartsourceengine
isinstancestrr	   typespecr   r#   )r.   r   r   r#   r0   r3   s         r%   r   r   y   s     "=11 	
"%	M3	'	' 
#3d=6I6II
 
 	
 EJEL 3E!Er&   )!__doc__r   typingr   r   r   typing_extensionsr   r   	streamlitr   streamlit.errorsr	   streamlit.loggerr
   !streamlit.proto.GraphVizChart_pb2r   r   streamlit.runtime.metrics_utilr   streamlit.utilr   graphvizstreamlit.delta_generatorr   r(   r   __annotations__r5   r   r   r+   r   r-   r&   r%   <module>rD      s   - , ,  - - - - - - - - - - . . . . . . . .       2 2 2 2 2 2 ' ' ' ' ' ' Q Q Q Q Q Q 9 9 9 9 9 9 ) ) ) ) ) ) 9OOO888888
8$$ $ $ $/1CSHIY I I IO, O, O, O, O, O, O, O,d""" " 	"
 
" " " " " "r&   