Ë
    úmxiì#  ã                  ó  — d dl mZ d dl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 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 d dlmZ d dl m!Z!m"Z" erd dl#m$Z$ d dl%m&Z&  G d„ de«      Z' G d„ de«      Z(y)é    )ÚannotationsN)ÚTYPE_CHECKINGÚAny)ÚBaseCustomComponent)Úis_dataframe_like)Úget_dg_singleton_instance)Úcurrent_form_id)Úcheck_cache_replay_rules)Úcompute_and_register_element_id)ÚStreamlitAPIException)Ú
ArrowTable)Ú
SpecialArg)ÚElement)Úgather_metrics)Úget_script_run_ctx)Úregister_widget)Úis_bytes_likeÚto_bytes)ÚDeltaGenerator)ÚWidgetCallbackc                  ó   — e Zd ZdZy)ÚMarshallComponentExceptionzCClass for exceptions generated during custom component marshalling.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© ó    ú_/home/htdocs/ttos/venv/lib/python3.12/site-packages/streamlit/components/v1/custom_component.pyr   r   (   s   „ ÙMàr   r   c                  ó²   — e Zd ZdZdddddœ	 	 	 	 	 	 	 	 	 	 	 	 	 d
d„Z ed«      dddddœ	 	 	 	 	 	 	 	 	 	 	 	 	 d
d„«       Zdd„Zej                  Z	dd„Z
dd	„Zy)ÚCustomComponentzA Custom Component declaration.N©ÚdefaultÚkeyÚ	on_changeÚ	tab_indexc               ó0   —  | j                   |||||dœ|¤ŽS )zAn alias for create_instance.r"   )Úcreate_instance)Úselfr#   r$   r%   r&   ÚargsÚkwargss          r   Ú__call__zCustomComponent.__call__1   s2   € ð $ˆt×#Ñ#ØØØØØñ
ð ñ
ð 	
r   r(   c          	     óœ  ‡ ‡‡‡‡‡‡‡— t        |«      dkD  rt        d|d   › d�«      ‚‰�0t        ‰t        «      rt        ‰t        «      s‰dk\  st        d«      ‚	 ddl}ddlmŠ t        «        t        |‰‰¬	«      }i }	g Š|j                  «       D ]œ  \  }
}t        |«      r3t        «       }|
|_        t!        |«      |_        ‰j%                  |«       ŒDt'        |«      rIt        «       }|
|_        ‰j)                  |j*                  j,                  |«       ‰j%                  |«       Œ˜||	|
<   Œž 	 t/        j0                  |	«      Šdˆˆˆˆˆ ˆˆˆfd„}t5        «       j6                  }t9        «       } |||«      }|j;                  d|j<                  «       |S # t        $ r t        d«      ‚w xY w# t2        $ r}t        d
|«      ‚d}~ww xY w)a  Create a new instance of the component.

        Parameters
        ----------
        *args
            Must be empty; all args must be named. (This parameter exists to
            enforce correct use of the function.)
        default: any or None
            The default return value for the component. This is returned when
            the component's frontend hasn't yet specified a value with
            `setComponentValue`.
        key: str or None
            If not None, this is the user key we use to generate the
            component's "widget ID".
        on_change: WidgetCallback or None
            An optional callback invoked when the widget's value changes. No arguments are passed to it.
        tab_index : int, optional
            Specifies the tab order of the iframe containing the component.
            Possible values are:
            - ``None`` (default): Browser default behavior.
            - ``-1``: Removes the iframe from the natural tab order, but it can still be focused programmatically.
            - ``0`` or positive integer: Includes the iframe in the natural tab order.
        **kwargs
            Keyword args to pass to the component.

        Returns
        -------
        any or None
            The component's widget value.

        r   z
Argument 'z' needs a labelNéÿÿÿÿz6tab_index must be None, -1, or a non-negative integer.)Úcomponent_arrowzºTo use Custom Components in Streamlit, you need to install
PyArrow. To do so locally:

`pip install pyarrow`

And if you're using Streamlit Cloud, add "pyarrow" to your requirements.txt.)r#   r$   z(Could not convert component args to JSONc           
     ó�  •— ‰
j                   |j                  _        t        | «      |j                  _        ‰
j
                  �‰
j
                  |j                  _        ‰�‰|j                  _        ‰|j                  _        |j                  j                  j                  ‰«       t        d‰ddh| ‰
j                   ‰
j
                  ‰‰¬«      }||j                  _        d	d„}t        |j                  j                  |d„ t        «       ‰	d¬«      }|j                  }|€‰}|S t        |t         «      r‰j#                  |«      }|S )
NÚcomponent_instanceÚnameÚurl)Úuser_keyÚkey_as_main_identityÚdgr2   r3   Ú	json_argsÚspecial_argsc                ó   — | S ©Nr   )Úui_values    r   Údeserialize_componentzZCustomComponent.create_instance.<locals>.marshall_component.<locals>.deserialize_component¿   s   € à�r   c                ó   — | S r:   r   )Úxs    r   ú<lambda>zMCustomComponent.create_instance.<locals>.marshall_component.<locals>.<lambda>Æ   s   €  Q€ r   Ú
json_value)ÚdeserializerÚ
serializerÚctxÚon_change_handlerÚ
value_type)r;   r   Úreturnr   )r2   r1   Úcomponent_namer	   Úform_idr3   r&   r7   r8   Úextendr   Úidr   r   ÚvalueÚ
isinstanceÚArrowTableProtoÚarrow_proto_to_dataframe)r6   ÚelementÚcomputed_idr<   Úcomponent_stateÚwidget_valuer/   r#   r$   r%   r)   Úserialized_json_argsr8   r&   s         €€€€€€€€r   Úmarshall_componentz;CustomComponent.create_instance.<locals>.marshall_component¥   s4  ø€ Ø8<¿	¹	ˆG×&Ñ&Ô5Ü1@ÀÓ1DˆG×&Ñ&Ô.Ø�x‰xÐ#Ø15·±�×*Ñ*Ô.ØÐ$Ø7@�×*Ñ*Ô4à3GˆG×&Ñ&Ô0Ø×&Ñ&×3Ñ3×:Ñ:¸<ÔHä9Ø$Øð '-¨e _ØØ—Y‘YØ—H‘HØ.Ø)ôˆKð -8ˆG×&Ñ&Ô)ó ô .Ø×*Ñ*×-Ñ-Ø2Ù&Ü&Ó(Ø"+Ø'ôˆOð +×0Ñ0ˆLàÐ#Ø&�ð  Ðô ˜L¬/Ô:Ø.×GÑGÈÓU�ØÐr   r1   )r6   r   rO   r   rF   r   )Úlenr   rL   ÚintÚboolr   ÚpyarrowÚstreamlit.components.v1r/   ÚImportErrorr
   ÚdictÚitemsr   r   r$   r   ÚbytesÚappendr   ÚmarshallÚarrow_dataframeÚdataÚjsonÚdumpsÚ	Exceptionr   Úmain_dgr   Ú_enqueuer1   )r)   r#   r$   r%   r&   r*   r+   rX   Úall_argsr7   Úarg_nameÚarg_valÚ	bytes_argÚdataframe_argÚexrT   r6   rO   Úreturn_valuer/   rS   r8   s   `````              @@@r   r(   zCustomComponent.create_instanceD   sÅ  ÿ€ ôR ˆt‹9�qŠ=Ü,¨z¸$¸q¹'¸À/Ð-RÓSÐSð Ð Ü�y¤#Ô&Ü˜y¬$Ô/Ø˜R’ä'ØHóð ð	Ûå?ô 	!Ô"ô ˜¨°SÔ9ˆàˆ	ØˆØ!)§¡Ó!1ò 	.ÑˆH�gÜ˜WÔ%Ü&›L�	Ø (�	”Ü"*¨7Ó"3�	”Ø×#Ñ# IÕ.Ü" 7Ô+Ü *£�Ø$,�Ô!Ø×(Ñ(¨×)FÑ)F×)KÑ)KÈWÔUØ×#Ñ# MÕ2à&-�	˜(Ò#ð	.ð	Ü#'§:¡:¨iÓ#8Ð ÷,	 ô ,	 ô` 'Ó(×0Ñ0ˆä“)ˆÙ)¨"¨gÓ6ˆà
�‰Ð(¨'×*DÑ*DÔEØÐøô{ ò 	Ü'ðPóð ð	ûôD ò 	Ü,Ø:¸Bóð ûð	ús$   Á
F Ä2F1 ÆF.Æ1	GÆ:GÇGc                óú   — t        |t        «      xrj | j                  |j                  k(  xrO | j                  |j                  k(  xr4 | j                  |j                  k(  xr | j
                  |j
                  k(  S )zEquality operator.)rL   r!   r2   Úpathr3   Úmodule_name©r)   Úothers     r   Ú__eq__zCustomComponent.__eq__Ý   so   € ô �uœoÓ.ò 6Ø—	‘	˜UŸZ™ZÑ'ò6à—	‘	˜UŸZ™ZÑ'ò6ð —‘˜EŸI™IÑ%ò6ð × Ñ  E×$5Ñ$5Ñ5ð	
r   c                ó   — | |k(   S )zInequality operator.r   rq   s     r   Ú__ne__zCustomComponent.__ne__é   s   € ð
 ˜5‘=Ð Ð r   c                ón   — d| j                   › d| j                  �| j                  › �S | j                  › �S )Nú'z': )r2   ro   r3   )r)   s    r   Ú__str__zCustomComponent.__str__ð   s6   € Ø�4—9‘9�+˜S¨d¯i©iÐ.C §¡Ð RÐSÐSÈÏÉÐ RÐSÐSr   )r*   r   r#   r   r$   z
str | Noner%   zWidgetCallback | Noner&   z
int | Noner+   r   rF   r   )rr   ÚobjectrF   rW   )rF   Ústr)r   r   r   r   r,   r   r(   rs   r   Ú__hash__ru   rx   r   r   r   r!   r!   .   sï   „ Ù)ð
 ØØ+/Ø $ñ
àð
ð ð
ð ð	
ð
 )ð
ð ð
ð ð
ð 
ó
ñ& Ð%Ó&ð ØØ+/Ø $ñVàðVð ðVð ð	Vð
 )ðVð ðVð ðVð 
òVó 'ðVóp
ð #×+Ñ+€Hó!ôTr   r!   ))Ú
__future__r   rb   Útypingr   r   Ú0streamlit.components.types.base_custom_componentr   Ústreamlit.dataframe_utilr   Ú$streamlit.delta_generator_singletonsr   Ú!streamlit.elements.lib.form_utilsr	   Ústreamlit.elements.lib.policiesr
   Ústreamlit.elements.lib.utilsr   Ústreamlit.errorsr   Ústreamlit.proto.Components_pb2r   rM   r   Ústreamlit.proto.Element_pb2r   Ústreamlit.runtime.metrics_utilr   Ú7streamlit.runtime.scriptrunner_utils.script_run_contextr   Ústreamlit.runtime.stater   Ústreamlit.type_utilr   r   Ústreamlit.delta_generatorr   Ústreamlit.runtime.state.commonr   r   r!   r   r   r   ú<module>r�      sa   ðõ #ã ß %å PÝ 6Ý JÝ =Ý DÝ HÝ 2Ý HÝ 5Ý /Ý 9Ý VÝ 3ß 7áÝ8Ý=ô	Ð!6ô 	ôCTÐ)õ CTr   