
    +d"                     `   d dl Z d dlmZ d dlZdZe j                            e j                            e	                    Z
e j                            e
dd          e j                            e
dd          dZdd	Zdd
Z G d de          Z G d de          Z G d de          ZdS )    N)OrderedDicti  iconszlogo.pngzbaseline-error-24px.svg)logoerrorTc                     | | _         dS )zSet disabled on widgetN)disabled)widgetenables     5lib/python3.11/site-packages/intake/interface/base.pyenable_widgetr      s     jFOOO    c                 t    t          | t                    s| g} |rt          t          ||                     } | S )zQGiven an instance or list, coerce to list.

    With optional preprocessing.
    )
isinstancelistmap)items
preprocesss     r   coerce_to_listr      sA    
 eT""  -SU++,,Lr   c                   F   e Zd ZdZdZdZdZdZ ej	        ej
                            ed         d          dd          Zd	ZddZed             Zej        d             Zd Zd Zd Zd Zd Zed             Zej        d             Zd Zd Zd Zed             ZdS )Basea  
    Base class for composable panel objects that make up the GUI.

    Parameters
    ----------
    children: list of panel objects
        children that will be used to populate the panel when visible
    panel: panel layout object
        instance of a panel layout (row or column) that contains children
        when visible
    watchers: list of param watchers
        watchers that are set on children - cleaned up when visible
        is set to false.
    visible: bool
        whether or not the instance should be visible. When not visible
        ``panel`` is empty.
    logo : bool, opt
        whether to show the intake logo in a panel to the left of the main
        panel. Default is False
    Nr   center)align)   r   r   r   2   )marginwidthFTc                 0    || _         || _        || _        d S N)visiblevisible_callbackr   )selfr   r    r   s       r   __init__zBase.__init__C   s     0			r   c                 `    | j         s| j        S t          j        | j        | j        d          S )Nr   )r   )r   _panelpnRow
logo_panelr!   s    r   panelz
Base.panelH   s/    y 	;vdot{1====r   c                     || _         d S r   )r$   )r!   r)   s     r   r)   z
Base.panelN   s    r   c                 &     | j         j        |i |S r   )r)   servabler!   argskwargss      r   r,   zBase.servableR   s    "tz"D3F333r   c                 &     | j         j        |i |S r   )r)   showr-   s      r   r1   z	Base.showU   s    tz////r   c                 4    | j                                         S )zPrint output)r)   __repr__r(   s    r   r3   zBase.__repr__X   s    z""$$$r   c                 b    	  | j         j        |i |S # t          $ r t          d          w xY w)z!Display in a notebook or a serverz)Panel does not seem to be set up properly)r)   _repr_mimebundle_	ExceptionNotImplementedErrorr-   s      r   r5   zBase._repr_mimebundle_\   sP    	V/4:/@@@@ 	V 	V 	V%&TUUU	Vs    .c                     t           )z>Should instantiate widgets, set ``children``, and set watchers)r7   r(   s    r   setupz
Base.setupc   s    !!r   c                     | j         S )z.Whether or not the instance should be visible.)_visibler(   s    r   r   zBase.visibleg   s     }r   c                    || _         t          | j        d| j                  }|rLt          |j                  dk    r4|                                  | j                            | j                   nB|s@t          |j                  dk    r(|                                  |	                                 | j
        r| 
                    |           dS dS )zCWhen visible changed, do setup or unwatch and call visible_callback_layoutr   N)r;   getattrr$   lenobjectsr9   extendchildrenunwatchclearr    )r!   r   pans      r   r   zBase.visiblel   s      dk9dk:: 	s3;''1, 	JJLLLKt}---- 	S--1 	LLNNNIIKKK  	+!!'*****	+ 	+r   c                     | j         Zg | j         D ]6}|j        j                            |                               |           7fd| j         D             | _         dS dS )z6Get rid of any lingering watchers and remove from listNc                     g | ]}|v|	S  rH   ).0w	unwatcheds     r   
<listcomp>z Base.unwatch.<locals>.<listcomp>   s#    LLL1)9KLQLLLr   )watchersinstparamrC   append)r!   watcherrK   s     @r   rC   zBase.unwatchz   s    = 	MI= * *"**7333  ))))LLLLLLLDMMM	M 	Mr   c                     d| j         iS )z)Serialize the current state of the objectr   )r   r(   s    r   __getstate__zBase.__getstate__   s    4<((r   c                 <    |                     dd          | _        | S )Set the current state of the object from the serialized version.
        Works inplace. See ``__getstate__`` to get serialized version and
        ``from_state`` to create a new object.r   T)getr   r!   states     r   __setstate__zBase.__setstate__   s     yyD11r   c                 <     |                                  |          S )zCreate a new object from a serialized exising object.

        Example
        -------
        original = cls()
        copy = cls.from_state(original.__getstate__())
        )rY   )clsrX   s     r   
from_statezBase.from_state   s     suu!!%(((r   )TNF)__name__
__module____qualname____doc__rB   r)   rM   r    r%   ColumnpanePNGICONSr'   r   r"   propertysetterr,   r1   r3   r5   r9   r   rC   rS   rY   classmethodr\   rH   r   r   r   r   &   s        * HEH27;;uV}H;EEmcefffJD   
 > > X>
 \  \4 4 40 0 0% % %V V V" " "   X ^+ + ^+M M M) ) )   ) ) [) ) )r   r   c                       e Zd ZdZdZdZed             Zed             Zej	        d             Zd Z
ed             Zej	        d             Zd	 Zd
 Zed             Zej	        d             ZdS )BaseSelectora  Base class for capturing selector logic.

    Parameters
    ----------
    preprocess: function
        run on every input value when creating options
    widget: panel widget
        selector widget which this class keeps uptodate with class properties
    Nc                     | j         j        S )zLabels of items in widget)r	   labelsr(   s    r   rk   zBaseSelector.labels        {!!r   c                     | j         j        S )zAvailable items to select from)r	   valuesr(   s    r   r   zBaseSelector.items   rl   r   c                     |	|| _         dS dS )z8When setting items make sure widget options are uptodateN)optionsr!   r   s     r   r   zBaseSelector.items   s!      	! DLLL	! 	!r   c           	      d    t          t          d t          || j                                      S )zHelper method to create options from list, or instance.

        Applies preprocess method if available to create a uniform
        output
        c                     | j         | fS r   )name)xs    r   <lambda>z.BaseSelector._create_options.<locals>.<lambda>   s    !&! r   )r   r   r   r   rq   s     r   _create_optionszBaseSelector._create_options   s,     344nUDO6\6\]]^^^r   c                     | j         j        S )zOptions available on the widget)r	   rp   r(   s    r   rp   zBaseSelector.options   s     {""r   c                 P   |                      |          }| j        j        rE| j                            |t	          |                                          dd                    dS || j        _        t	          |                                          dd         | j        _        dS )zZSet options from list, or instance of named item

        Over-writes old options
        N   )rp   value)rw   r	   r{   	set_paramr   rn   rp   )r!   newrp   s      r   rp   zBaseSelector.options   s     &&s++; 	;K!!'gnn>N>N9O9OPRQRPR9S!TTTTT")DK $W^^%5%5 6 6rr :DKr   c                    |                      |          }|                                D ]Y\  }}|| j        v rK|| j        vrB|                    |           d}| d| | j        v r|dz  }| d| | j        v ||| d| <   Z| j        j                            |           | j        j                            d           t          |
                                          dd         | j        _        dS )zAdd items to optionsr   _rz   rp   N)rw   r   rk   popr	   rp   updaterO   triggerr   rn   r{   )r!   r   rp   kvcounts         r   addzBaseSelector.add   s   &&u--MMOO 	, 	,DAqDK ,ATZ$7 ,AnnUnn3 QJE nnUnn3 *+1u'""7+++!!),,, !1!1222A26r   c                     t                    fd| j                                        D             }|| j        _        | j        j                            d           dS )zRemove items from optionsc                 $    i | ]\  }}|v	||S rH   rH   )rI   r   r   r   s      r   
<dictcomp>z'BaseSelector.remove.<locals>.<dictcomp>   s(    OOO1Oq!OOOr   rp   N)r   rp   r   r	   rO   r   )r!   r   new_optionss    ` r   removezBaseSelector.remove   s`    u%%OOOO(:(:(<(<OOO)!!),,,,,r   c                     | j         j        S )zValue selected on the widget)r	   r{   r(   s    r   selectedzBaseSelector.selected   s     {  r   c                 J      fd}t          ||          }| j        _        dS )zfSet selected from list or instance of object or name.

        Over-writes existing selection
        c                 L    t          | t                    rj        |          S | S r   )r   strrp   )itemr!   s    r   r   z)BaseSelector.selected.<locals>.preprocess   s'    $$$ *|D))Kr   N)r   r	   r{   )r!   r}   r   r   s   `   r   r   zBaseSelector.selected   s=    	 	 	 	 	
 sJ//!r   )r]   r^   r_   r`   r   r	   re   rk   r   rf   rw   rp   r   r   r   rH   r   r   ri   ri      s         JF" " X" " " X" \! ! \!
_ _ _ # # X# ^
; 
; ^
;7 7 7- - - ! ! X! _" " _" " "r   ri   c                   R    e Zd ZddZd Zed             Zej        d             ZdS )BaseViewTc                 p    |r,| j         | j        j        | j                                        dS d| j         iS )zSerialize the current state of the object. Set include_source
        to False when using with another panel that will include source.)r   labelsourcer   )r   r   _namerS   )r!   include_sources     r   rS   zBaseView.__getstate__   sH      	-<*+2244   t|,,r   c                 ^    d|v r|d         | _         |                    dd          | _        dS )rU   r   r   TN)r   rV   r   rW   s     r   rY   zBaseView.__setstate__	  s5     u 	*/DKyyD11r   c                     | j         S r   )_sourcer(   s    r   r   zBaseView.source  s
    |r   c                 x    t          |t                    rt          |          dk    r|d         nd}|| _        dS )z6When the source gets updated, update the select widgetr   N)r   r   r?   r   )r!   r   s     r   r   zBaseView.source  s=     fd## 	<"%f++/;VAYYtFr   NT)r]   r^   r_   rS   rY   re   r   rf   rH   r   r   r   r      so        
- 
- 
- 
-2 2 2   X ]  ]  r   r   r   r   )oscollectionsr   r)   r%   	MAX_WIDTHpathabspathdirname__file__herejoinrd   r   r   objectr   ri   r   rH   r   r   <module>r      sM   
			 # # # # # #    		wrwx0011GLLw
33W\\$)BCC	 	! ! ! !
	 	 	 	q) q) q) q) q)6 q) q) q)h_" _" _" _" _"4 _" _" _"D    t     r   