
    &e                         d dl Z d dlmZmZmZmZmZ d dlmZ	 d dl
mZ d dlmZmZ d dlmZ erd dlmZ ded	eeee         f         fd
Z G d d          ZdS )    N)TYPE_CHECKINGAnyListUnioncast)Json)gather_metrics)QueryParamsProxySessionStateProxy)UserInfoProxy)DeltaGeneratororeturnc                 h    t          | t                    rt          |           S t          |           S )zRA repr function for json.dumps default arg, which tries to serialize sets as lists)
isinstancesetlistrepr)r   s    7lib/python3.11/site-packages/streamlit/elements/json.py_ensure_serializationr      s*    !S Aww77N    c                   b    e Zd Z ed          dddededdfd            Zedd	            Zd
S )	JsonMixinjsonT)expandedbodyr   r   r   c                   ddl }t          |t          t          t          f          r|                                }t          |t                    si	 t          j        |t                    }nL# t          $ r?}|                    d| d           t          j        |dt                    }Y d}~nd}~ww xY wt                      }||_        ||_        | j                            d|          S )	a  Display object or string as a pretty-printed JSON string.

        Parameters
        ----------
        body : object or str
            The object to print as JSON. All referenced objects should be
            serializable to JSON as well. If object is a string, we assume it
            contains serialized JSON.

        expanded : bool
            An optional boolean that allows the user to set whether the initial
            state of this json element should be expanded. Defaults to True.

        Example
        -------
        >>> import streamlit as st
        >>>
        >>> st.json({
        ...     'foo': 'bar',
        ...     'baz': 'boz',
        ...     'stuff': [
        ...         'stuff 1',
        ...         'stuff 2',
        ...         'stuff 3',
        ...         'stuff 5',
        ...     ],
        ... })

        .. output::
           https://doc-json.streamlit.app/
           height: 385px

        r   N)defaultzqWarning: this data structure was not fully serializable as JSON due to one or more unexpected keys.  (Error was: )T)skipkeysr   r   )	streamlitr   r   r   r
   to_dictstrr   dumpsr   	TypeErrorwarning	JsonProtor   r   dg_enqueue)selfr   r   sterr
json_protos         r   r   zJsonMixin.json#   s   P 	d.?OPQQ 	"<<>>D$$$ 		VVz$0EFFF V V V

TMPT T T   z$?TUUUV [[

&
w
333s   A- -
B675B11B6c                 "    t          d|           S )zGet our DeltaGenerator.r   )r   )r*   s    r   r(   zJsonMixin.dg`   s     $d+++r   N)r   r   )	__name__
__module____qualname__r	   objectboolr   propertyr(    r   r   r   r   "   s        ^F
 	:4 :4 :4:4 	:4
 
:4 :4 :4 :4x , , , X, , ,r   r   )r   typingr   r   r   r   r   streamlit.proto.Json_pb2r   r'   streamlit.runtime.metrics_utilr	   streamlit.runtime.stater
   r   streamlit.user_infor   streamlit.delta_generatorr   r2   r#   r   r   r5   r   r   <module>r<      s    8 8 8 8 8 8 8 8 8 8 8 8 8 8 6 6 6 6 6 6 9 9 9 9 9 9 G G G G G G G G - - - - - - 9888888V c49n(=    A, A, A, A, A, A, A, A, A, A,r   