
    BeP                       d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZmZmZ ddlmZ ddlmZ ddlmZ ddlmZmZmZmZmZmZmZmZmZ 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* ddl+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2 ddl3m4Z5 ddl6m7Z7m8Z8 ddl9m:Z: ddl;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZB ddlCmDZDmEZEmFZF ddlGmHZHmIZI ddlJmKZKmLZLmMZMmNZNm4Z4mOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZb ddlcmdZd erddlemfZf ddlgmhZh ddlimjZj d;dZkd;dZld<d!Zmed"             Zn G d# d$e7          Zo G d% d&e8          Zp ejq        e(j        jr        d'(          d)             Zs ejq        e(j        jt        d'(          d*             Zu G d+ d,ep          Zv G d- d.e7          Zw G d/ d0ejx                  Zyd1 ZzeIj{        |                    dez            G d2 d3ejx                  Z}d4 Z~ e'j        eDe5d56            e'j        eFe5d56            e'j        eEd7 8            e'j        d9e~           d:ZdS )=zT
Defines the Param pane which converts Parameterized classes into a
set of widgets.
    )annotationsN)OrderedDictdefaultdict
namedtuple)Callable)contextmanager)partial)	TYPE_CHECKINGAnyClassVar	GeneratorListMappingOptionalTupleType)	classlistdiscard_eventseval_function_with_depsget_method_owneriscoroutinefunction)rx   )config)state)ColumnHSpacerPanelRowSpacerTabs	WidgetBox)	DataFrame)PaneBaseReplacementPane)Reactive)abbreviated_reprflattenfull_groupbyfullpathis_parameterized
param_namerecursive_parameterized)is_dataframeis_mpl_axes	is_series)
LayoutableViewable)
ArrayInputButtonCheckboxColorPickerr#   
DatePickerDateRangeSliderDatetimeInputDatetimeRangeSliderDiscreteSlider	FileInputFileSelector
FloatInputFloatSliderIntInput	IntSliderLiteralInputMultiSelectRangeSliderSelect
StaticText	Tabulator	TextInputToggleWidget)_ButtonBase)Document)Model)Commpobjparam.ParameterreturnType[Widget]c                ,    | j         rt          S t          S )zQ
    Determines whether to use a TextInput or Select widget for FileSelector
    )pathrE   rH   rO   s    +lib/python3.11/site-packages/panel/param.pySingleFileSelectorrW   >   s     y     c                F   t          | t          j                  r+t          t	          d          t
          fdt          i          S t          | t          j                  r2t          t	          d          t
          fdt          t          fi          S t          | t          j
                  r+t          t	          d          t
          fdt          i          S t          | t          j                  r+t          t	          d          t
          fdt          i          S t
          S )N
TupleInputtypeNumberInput	DictInput	ListInput)
isinstanceparamr   r[   strrB   tupleNumberintfloatDictdictr   listrU   s    rV   LiteralInputTypedri   H   s    $$$ GC%%HHH	D%,	'	' GC&&&3,9OPPP	D%*	%	% GC$$|o~FFF	D%*	%	% GC$$|o~FFFrX   param.DataFramec                :    dt           j        v rt          S t          S )Nzpanel.models.tabulator)sysmodulesrG   r#   rU   s    rV   DataFrameWidgetrn   T   s    3;..rX   c               /    K   g }| D ]9fd|D             }|                     |f            j        j        di | :	 dV  |D ]\  } j        j        di | dS # |D ]\  } j        j        di | w xY w)a<  
    Temporarily sets parameter values to the specified values on all
    supplied Parameterized objects.

    Arguments
    ---------
    parameterizeds: tuple(param.Parameterized)
        Any number of parameterized objects.
    param_values: dict
        A dictionary of parameter names and temporary values.
    c                2    i | ]}|t          |          S  )getattr.0pparameterizeds     rV   
<dictcomp>zset_values.<locals>.<dictcomp>j   s%    IIIqa22IIIrX   Nrq   )appendr`   update)parameterizedsparam_valuesold
old_valuesrv   s       @rV   
set_valuesr~   [   s       C' 3 3IIIILIII


M:.///""22\22225), 	5 	5%M:&M&444444	5 	5 	5 	5%M:&M&444444	5s   A# #A?c                  F    e Zd ZU dZ ej        ddd          Z ej        ee	d          Z
 ej        ddd	          Z ej        dd
          Z ej        dd          Z ej        ed          Z ej        ddd          Z ej        dd          Z ej        dd          Z ej        dd          Z ej        ddd          Z ej        g dd          Z ej        dd          Z ej        dd          Z ej        deefd          Z ej        dddd           Z ej         d!"          Z!i ej"        e#ej$        e%ej        e&ej'        e(ej)        e*ej+        e,ej-        e.ej/        e0ej1        e2ej3        e4ej         e5ej6        e7ej8        e9ej:        e9ej        e;ej        e5ej<        e6ej=        e>ej        e?ej@        eAej        e5ejB        eCejD        eAej        e9iZEd#eFd$<    eGed%          r
e#eEejH        <   d&ZId'eFd(<   d)ZJd'eFd*<   g ZKd+eFd,<   dZLd-eFd.<   dQ fd/	ZMdRd0ZNeOd1             ZPd2 ZQd3 ZRd4 ZSeOd5             ZTd6 ZUd7 ZVd8 ZW	 	 dSdTdBZXdQdU fdEZYeZdVdI            Z[eZdJ             Z\	 	 dWdX fdOZ]dQ fdP	Z^ xZ_S )YParamz
    Param panes render a Parameterized class to a set of widgets which
    are linked to the parameter values on the class.
    r   izG
        Parameters with precedence below this value are not displayed.)default
precedencedocF)r   class_is_instanceg:0yE>a4  
        Precedence value to use for parameters with no declared
        precedence.  By default, zero predecence is available for
        forcing some parameters to the top of the list, and other
        values above the default_precedence values can be used to sort
        or group parameters arbitrarily.z]
        Whether parameterized subobjects are expanded or collapsed on
        instantiation.r   r   NzC
        Whether to add buttons to expand and collapse sub-objects.z+
        Layout to expand sub-objects into.)r   NzD
        Height of widgetbox the parameter widgets are displayed in.)r   boundsr   z8
        Whether to hide widgets of constant parameters.z
        User-supplied function that will be called on initialization,
        usually to update the default Parameter values of the
        underlying parameterized object. z
        Title of the pane.T
        The object being wrapped, which will be converted to a
        Bokeh model.r   
allow_refsr   Tzq
        If set this serves as a whitelist of parameters to display on
        the supplied Parameterized object.)r   
allow_Noner   z/
        Whether to show labels for each widgetz8
        Whether to show the parameterized object's namez
        If True the widgets will be sorted alphabetically by label.
        If a callable is provided it will be used to sort the Parameters,
        for example lambda x: x[1].label[::-1] will sort by the reversed
        label.)r   r   r   zC
        Width of widgetbox the parameter widgets are displayed in.)r   r   r   r   z]
        Dictionary of widget overrides, mapping from parameter name
        to widget class.)r   zPClassVar[Mapping[param.Parameter, Widget | Callable[[param.Parameter], Widget]]]mappingEventobjectzClassVar[Tuple[str, ...]]_ignored_refsrq   _linkable_propertieszClassVar[List[str]]_rerender_paramsClassVar[bool]_unpackc                *   t          |t          j                  rd|vrd|d<   |j        g|d<   |j        }t          |t          j        j                  r|j        |j        n|j        }d|vr|d |j        D             |d<   d| _	        n	|d u| _	        |rd|vrt          |j                  |d<    t                      j        |fi | g | _        d | j                                                                        D             } | j        d	i || _        | j        }t          |t&                    r|| _        | j        | _        nt          | j        |          r| j        x| _        | _        nit          |t,                    r0t/          |t&                    r || j        fi |x| _        | _        n$t1          dt-          |          j        z            | j                            | j        g d           |                                  d S )
N	show_nameF
parametersc                    g | ]
}|d k    |S namerq   rt   ru   s     rV   
<listcomp>z"Param.__init__.<locals>.<listcomp>   s    #K#K#K!qF{{A{{{rX   r   c                :    i | ]\  }}|t           j        v |||S Nr1   r`   )rt   ru   vs      rV   rw   z"Param.__init__.<locals>.<dictcomp>   s7     > > >41a****q} Q/<}}rX   zQexpand_layout expected to be a panel.layout.Paneltype or instance, found %s type.)r   r   r   display_thresholdexpand_buttonexpandexpand_layoutwidgetsshow_labelsr   hide_constantrq   )r_   r`   	Parameterr   ownerrv   
Parametersselfcls_explicit_parametersr,   super__init__	_updatingvaluesitemsdefault_layout_widget_boxr   r   _expand_layoutlayoutr[   
issubclass
ValueError__name__watch_update_widgets)r   r   paramskwargsr   	__class__s        rV   r   zParam.__init__   sb   feo.. 	"&((&+{#$*K=F< \Ffe1<== 	H#);#6VZZFKFv%%&*<#K#Kv|#K#K#KF< (-D%%(.d(:D% 	5fF**'44F6N**6***> >4:#4#4#6#6#<#<#>#> > > >.4.8888#fe$$ 
	4"(D*DKK(&11 	4040@@DK$--%% 	4*VU*C*C 	406t7G0R0R60R0RRDK$-- @!&\\23 4 4 4 	
- 0 0 0 	 	 	 	rX   c                |   t          |           j        }t          | j                  j        }| j        g nt          | j        j                  }d |D             }g }t          | j                                                                                  D ]\  }}|| j        |         j        k    r|t          |t                    r|dk    r;|dk    s0|dk    r+|                    |          s|                    |          rr|dk    r||k    r	 |                    |dt          |                     # t          $ r |                    |dd           Y w xY w| j        dnd	t          | j                  j        z  }|rd
nd}	|	                    |d                    |          |          S )Nc                    g | ]
}|d k    |S r   rq   )rt   ks     rV   r   z"Param.__repr__.<locals>.<listcomp>  s    777A1;;a;;;rX   r   r   r   r   =z...Nonez%sz{cls}({obj}, {params})z{cls}({obj}), )r   r   obj)r[   r   r   rh   r`   sortedr   r   r   r_   ra   
startswithrx   r'   RuntimeErrorformatjoin)
r   depthr   obj_clsr   r   ru   r   r   templates
             rV   __repr__zParam.__repr__  s   4jj!t{##,{*T[5F0G0G77777
4:,,..446677 		4 		4DAqDJqM)))8HAs## ARh1;;ALL4I4I;Q\\Z]M^M^;bjl""qJ4,<Q,?,?,?@AAAA 4 4 4EE2333334+ffT[8I8I8R1R/5I++>3tyy/@/@cJJJs   'D>>$E%$E%c                <    g dfdt           j        D             S )N)r   loading
backgroundc                    g | ]}|v|	S rq   rq   )rt   ru   ignored_paramss     rV   r   z(Param._synced_params.<locals>.<listcomp>&  s#    GGGaq/F/F/F/F/FrX   r   )r   r   s    @rV   _synced_paramszParam._synced_params#  s+    DDDGGGG:+GGGGrX   c                D    g }t          |d           D ]}|j        dk    rt          |j        t          j        j                  r,|j        j        |j        j        n|j        j         _	         d S  j
        r j        }n |j        g }nd |j        j        D             }|j        t          |j        j                   _        |j        dk    rG|j        %d _
         j	        d  j	        j        D             }d _
        |j        g k    rg n|j        }|g k    r| j        k    r	| _        d S t           j                  D ]N}|j         j        j        v r9|j        j                            |            j                            |           O j	        i  _        n                                  _        d	d
i fd j                                        D             }| j        _         j        dk    r j        r                                  d S d S )Nc                    | j         S r   r   xs    rV   <lambda>z'Param._update_widgets.<locals>.<lambda>*  s    !& rX   keyr   c                    g | ]
}|d k    |S r   rq   r   s     rV   r   z)Param._update_widgets.<locals>.<listcomp>6  s    !L!L!LV!rX   r   Fc                    g | ]
}|d k    |S r   rq   r   s     rV   r   z)Param._update_widgets.<locals>.<listcomp>=  s    %R%R%RAa6kkakkkrX   T_titler   c                    g | ]f\  }}j         j                            ||                   j        4j         j                            ||                   j        j        k    d|gS r   )r   r`   getr   r   )rt   ru   widgetaliasr   s      rV   r   z)Param._update_widgets.<locals>.<listcomp>S  so     a a aia{(1a9DL{(1a9DH^^^ ^^^rX   )r   r   r_   newr`   rv   r   r   r   r   r   r   r,   rh   _internal_callbacksinstr   objectsunwatchremove_widgets_get_widgetsr   r   r   _link_subobjects)r   eventsr   eventcbr   r   s   `     @rV   r   zParam._update_widgets(  s[   
F(8(8999 	F 	FEzX%%ei)<)GHH 389>3I%)--uy~DKFF, M!%JJY&!#JJ!L!LUY_!L!L!LJ9( *59> : :DIz\))9$05D-{.%R%R1B%R%R%R
04D-',yBEIJ
do = =(DOFt/00 	4 	4Bw$*222%%b)))(//333 ;DMM --//DM6"a a a a a4=+>+>+@+@ a a a $+ "e++DK+!!##### ,+rX   c                     j                                         D ]&\  }t          |t                    r|gn|}t	          d |D                       s:t          |t
                    r-t          |d         t                    r|d         |d         c}n|d c}f fd	}f fd	}|j                            |d          g}r.|	                    j                            |d                      xj
        |z  c_
         j        r2 j        r	d_         | t          dd	          d                     (d S )
Nc           	   3     K   | ]J}t          t          |d d                    p't          d t          |dg           D                       V  KdS )valueNc              3  4   K   | ]}t          |          V  d S r   r+   rt   os     rV   	<genexpr>z3Param._link_subobjects.<locals>.<genexpr>.<genexpr>^  s+      RR1+A..RRRRRRrX   options)r+   rr   any)rt   ws     rV   r   z)Param._link_subobjects.<locals>.<genexpr>]  sv       ) ) (7D(A(ABB SRR9b8Q8QRRRRR) ) ) ) ) )rX   r   r   c                   t          j        |          fdj        j        D             | j        s$fdj        j        D             j        dd<   dS | j        rd j                                                                        D             }t          fdj	        i|}t          j        t                    rj        j                 j        }||f}j                            |           dS dS )$Adds or removes subpanel from layoutc                j    g | ]/}t          |t                    r|j        t                    v -|0S rq   )r_   r   r   r-   rs   s     rV   r   z?Param._link_subobjects.<locals>.toggle_pane.<locals>.<listcomp>i  sN     P P P!)!U33PH(?(N(NNN NNNrX   c                    g | ]}|v|	S rq   rq   )rt   eexistings     rV   r   z?Param._link_subobjects.<locals>.toggle_pane.<locals>.<listcomp>m  s.     . . .H,, ,,,rX   Nc                "    i | ]\  }}|d v	||S )r   r   r   rq   rt   r   r   s      rV   rw   z?Param._link_subobjects.<locals>.toggle_pane.<locals>.<dictcomp>r  6     L L Ltq!!"*J!J!J  !J!J!JrX   r   )rr   r   r   r   r   r`   r   r   r   r   r_   r!   labelrx   )	change	parameterr   panetitler   rv   pnamer   s	        @@rV   toggle_panez+Param._link_subobjects.<locals>.toggle_panef  s]    'Y ? ?P P P Pt':'B P P P z 5. . . .#'#6#>. . .D'*** Z 5L Ltz/@/@/B/B/H/H/J/J L L LF  + +]5G +#)+ +D!$"5t<< - $ 1% 8 > %t}'..t444445 5rX   c                    j         } fd|j        D             }rt           j                   _        |sdS t           j                  ru j        }d j                                                                        D             }t          |fd|j	        i|}|||j        
                    |d                   <   dS |                    |d                    dS )r   c                Z    g | ]'}t          |t                    r|j        j        u %|(S rq   )r_   r   r   r|   )rt   ru   r  s     rV   r   z?Param._link_subobjects.<locals>.update_pane.<locals>.<listcomp>~  sB     8 8 8!Au9M9M 8 !FJ 6 6  6 6 6rX   Nc                "    i | ]\  }}|d v	||S r  rq   r  s      rV   rw   z?Param._link_subobjects.<locals>.update_pane.<locals>.<dictcomp>  r  rX   r   r   )r   r   r+   r   disabledr`   r   r   r   r   indexr   )	r  r  r   r   rv   r   r  r   toggles	   `      rV   update_panez+Param._link_subobjects.<locals>.update_pane{  s   ,8 8 8 8v~ 8 8 8  G*:6:*F*F&FFO 
/F%fj11 /$*JML Ltz/@/@/B/B/H/H/J/J L L LF  + +]5G +#)+ +D@DF6>//<<===MM(1+.....rX   r   TChanger   )r   r   r_   rJ   r   r   rI   r`   r   rx   r   r   r   r   r   )	r   r   r   selectorr  r  watchersr
  r  s	   `      @@rV   r   zParam._link_subobjectsZ  s   !]0022 =	C =	CME6",VV"<"<Hvhh&G ) ) ') ) ) ) )  7C(( 2Z
F-K-K 2$+AJ
 &&$*D &.3 5 5 5 5 5 5 5* /4 / / / / / / /( !,,['BBCH J 2 2; H HIII$$0$${ C% C#'FLLK ;
8U ; ;D A ABBB{=	C =	CrX   c           
          j         j                 i }d} j        	 j        vrd}                               nt	           j                 t
                    r|t           j                           }d j                 v r|                    d          nJd j                 v r|                    d          n%d}                               n j                  j        st          t                    sd}nj
        }t          j        |          } j        rj         |d<   t           j                   j        pd}t	          t                    r)t          t                     r|j        j        j        z  }|r|d	<   t%          d
          ro                                }dj        v rFt	          j        d         t          j                  r!t+          |                                          }|sg}||d<   t%          d          rV                                }|d         |d         |d<   |d         |d         |d<   d|vsd|vrt	          t          j        t          j        f          sa|s_t	          t          j                  r)t6          t	          t          j                  rt:          nt          t<                    st<          t%          d          rt          dd          r
j        |d<   t%          d          r!t          dd          rj         d         |d<   t%          d          r!t          dd          rj         d         |d<   j!        r.tE          j#        j!                  $                                |d<   |                    dd          }	|                    dd          fd|D             }
|
r7 j        %                    dddd&                    |
           d           |'                    |           fd|(                                D             }t	          t                    r+t          tR                    r|                    d	d           t	          t                     r}n d7i |} |_*        |_+         j,        } fd}t%          t          d           r<t	          t          j-                  r" fd!}|j        .                    |d"          }nt	          t          j/                  r" fd#}|j        .                    |d"          }nw|	r,t%          |d$          r|j        .                    |d$          }nIr,t%          |d%          r|j        .                    |d%          }n|j        .                    |d	          }|0                    |           |gf fd&	}|0                     j         j        .                    |d'                     |0                     j         j        .                    |d(                     |0                     j         j        .                    |d)                     t%          d
          r4|0                     j         j        .                    |d*                     t%          d          r4|0                     j         j        .                    |d                     d|v r4|0                     j         j        .                    |d                     |0                     j         j        .                    |                     |1                    dg           }t	          |t
                    r|                                }te                    stg          d+ |D                       rq j4        s j4        c j5        s\tm          d,d-te                     d.d/d0dd12          }|j7        }|j        '                    d3d4d5           tq          |||d6          S |S )8zGet widget for param_nameTNFwidget_typer[   r   )r  r   visibler   	get_ranger   get_soft_boundsr   startr   endstepfixed_startr   	fixed_enddescriptiononkeyup	throttledc                @    g | ]}|j         vt          |          S rq   )r`   repr)rt   r   widget_classs     rV   r   z Param.widget.<locals>.<listcomp>  s,    QQQ1Ql>P5P5PtAww5P5P5PrX   z5Param pane was given unknown keyword argument(s) for z! parameter with a widget of type z8. The following keyword arguments could not be applied: r   .c                .    i | ]\  }}|j         v ||S rq   )r`   )rt   r   r   r%  s      rV   rw   z Param.widget.<locals>.<dictcomp>  s,    III41al6H1H1H!Q1H1H1HrX   c                   j         v rd S 	 j                                         j        j        j        di | j        i j                                        d S # j                                        w xY w)Nrq   )r   rx   r   r`   ry   r   r   r  p_namer   s    rV   link_widgetz!Param.widget.<locals>.link_widget  s    ''.%%f---(!(@@FFJ+?@@@%%f-----%%f----s   8A" "A>r   c                F    j         j                                       d S r   )r   r`   triggerr)  s    rV   r   zParam.widget.<locals>.event  s"    !))&11111rX   clicksc                (     j                    d S r   r   )r  r   r   s    rV   actionzParam.widget.<locals>.action
  s    dk"""""rX   value_inputvalue_throttledc                    i }j         vrd S j                  } j        dk    r j        |d<   j        r j         |d<   n j        dk    r j         j        u rd S  j                                         n] j        j        k     r)|j        j        v rj        	                    |           n$ j        j        k    r                                 d S  j        dk    rX
                                }d|j        v r4t          |j        d         t          j                  rt          |          }||d<   nŉ j        dk    rX                                \  }}t!          |d          }|||}n| }|r
||d<   ||d	<   |r                               d S nb j        d
k    rj        |d
<   nK j        dk    rj        |d<   n4j        v rd S t!          t          d          rt          t          j                  rd S t          t          j                  rr|d         }	|j                            |	            fd}
|j                            |
d          |d<   j                            |	          }|d         j        |<   d S r%t!          |d          r j        |d<    j        |d<   nEt          |t6                    r&t9          |          dk    r j        |d<   |d         }n
 j        |d<   	 j                                        j        dk    rIt?          |          5   |j        j         di | d d d            n# 1 swxY w Y    |j        j!        |  n |j        j         di | j        	                               d S # j        	                               w xY w)Nconstantr  r  r   r   r   r   r  r  r  r  r   r   r   c                <                         j                   d S r   )r   r   )r   r  r   s    rV   r0  z*Param.widget.<locals>.link.<locals>.actionG  s    JJt{+++++rX   r.  r2  r      	triggeredrq   )"r   whatr   r   r|   	_rerenderr   r   r   r   r  r`   r_   r   rh   r  hasattr_rerender_widgetr  r  r   r   Actionr   r   r   r  r   lenrx   r[   r   ry   r-  )r  r  updatesr   r   r  r  supports_boundsrerenderprev_watcherr0  idxr*  p_objr   r"  s   `           rV   linkzParam.widget.<locals>.link  so   GT]**]6*F{j((&,j
#% 8-3ZGI&,,:++FZ'NN$$$$j4#999 0 888$++F3333Z4#999NN$$$	))//++--v|I6
CC ."7mmG%,	""(("2244
s")&'":":=CK.HH#22H" )',GG$%(GEN ))&111F &&"'*''"'+4>))(( .Zu{-K-K .E5<00 .'{$$\222, , , , , ,$l00BB.44\BB08(- .wv/@AA .-3Z)*#):  FC(( .S[[A-=-=#): #): 	.%%f---;+--'// 7 7++66g6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7(FL('222'FL'22'222%%f-----%%f----s0   4N! 9MN! MN! M %N! !N=r4  r   r  r   c              3  4   K   | ]}t          |          V  d S r   r   r   s     rV   r   zParam.widget.<locals>.<genexpr>p  s+      +Q+QA,<Q,?,?+Q+Q+Q+Q+Q+QrX   u   ⋮primary      fit)r   r      
   )r   button_typer  
max_height	max_widthheight_policyalignmargin)rJ  r   rJ  rK  stretch_width)rQ  sizing_modewidth)rT  rQ  rq   )9r   r`   r   r  r_   rg   popr   r   rK   r  r4  r   rr   r   r[   rJ   r   r:  r  r   rh   r   r  DateCalendarDaterc   r>   Integerr@   rB   r  r   r   textwrapdedentstripwarningr   ry   r   r4   _param_pane_param_namer   r   r   r<  rx   r   r+   r   r   r   rI   rT  r   )r   r*  	kw_widgetwidget_class_overriddenr  kwr   r   r   r!  ignored_kwsr   r   r  r+  r   watcherr0  rD  r  rT  rC  r"  r   r%  s   ``                   @@@@rV   r   zParam.widget  s	   !&)	"&<6#=#=&+#++E22LLV,d33 
	0T\&122IV 444(}}];;4<///(}}V44*/'#//66</L 	 
<(M(M 	 EEKE5>666 	/ %.ByMV,,%.
lD)) 	>jv.N.N 	>,,2==J
BwK5+&& 		$oo''G \///|1)<ejII 0w~~//00 "u0 '#ByM5+,, 	2**,,Fay$$Qi7ay$"1I5	""e2oouuz53E&FGG '6 / 4!%66 4'1%eU];; 4+3L'lCC 4'3|V,, (1M1M ("Z6
|]33 4xQU8V8V 4$)LO=!|[11 2geXt6T6T 2"',q/;9 	C (	 : : @ @ B BB} --	511MM+u55	QQQQ	QQQ 	JU U U3?U U;?99[;Q;QU U U  
 			)IIII288::IIIlD)) 	&jv.N.N 	&JJw%%%lF++ 	,!FF!\++F++F!#+	. 	. 	. 	. 	. 	. 5'"" 	?z%'E'E 	?2 2 2 2 2 2l((99GGu|,, 		?# # # # # #l((::GG 	?77 	?l((mDDGG 	?76+<== 	?l((6GHHGGl((g>>G   #*) J	. J	. J	. J	. J	. J	. J	. J	. J	.Z 	)//fjIIJJJ)//flKKLLL)//fgFFGGG5+&& 	NOODK-33D&)LLMMM5+,, 	MOODK-33D&(KKLLLR<<OODK-33D&&IIJJJ)//f==>>>**Y++gt$$ 	'nn&&Ge$$ 	+Q+Q+Q+Q+Q(Q(Q 	#	(,(:(B4;(B9-e444E$	  F LEL$+     
 vvU1====MrX   c                     fd j         j                            d                                          D             } j        r@t           j                  r j        }nd }t          ||          } fd|D             }|S  fd}t          ||          }d |D             }t          j        ||          }d |D             } fd	|D             }|S )
Nc                <    g | ]\  }}|j         v s|d k    ||fS r   r   )rt   ru   rO   r   s      rV   r   z)Param._ordered_params.<locals>.<listcomp>  s=     : : :4$/))Q&[[ d)-8[[rX   r   c                    | d         j         S Nr   )r  r   s    rV   r   z'Param._ordered_params.<locals>.<lambda>  s    1Q4: rX   r   c                V    g | ]%}|d          dk    s|d          j         v |d          &S r   r   rf  )rt   elr   s     rV   r   z)Param._ordered_params.<locals>.<listcomp>  s>    lllrr!uRTUVRW[_[jRjRjRURjRjRjrX   c                F    | d         j         | d         j         nj        S rh  )r   default_precedence)r   r   s    rV   r   z'Param._ordered_params.<locals>.<lambda>  s    ado.I1Q4??tOf rX   c                    g | ]	\  }}||f
S rq   rq   )rt   r   ru   s      rV   r   z)Param._ordered_params.<locals>.<listcomp>  s     999tq!QF999rX   c                2    g | ]\  }}t          |          S rq   )rh   )rt   _grps      rV   r   z)Param._ordered_params.<locals>.<listcomp>  s"    ;;;C$s));;;rX   c                `    g | ]*}|D ]%}|d          dk    s|d          j         v |d          &+S rj  rf  )rt   grouprk  r   s      rV   r   z)Param._ordered_params.<locals>.<listcomp>  sY     L L LEe L L evooA$/1I1I Q%1I1I1I1IrX   )	r   r`   r   r   sortcallabler   	itertoolsgroupby)	r   r   key_fnsorted_paramssorted_precedencefilteredgroupsordered_groupsordered_paramss	   `        rV   _ordered_paramszParam._ordered_params  s8   : : : :4;+<+D+DZ+P+P+V+V+X+X : : :9 	!	"" .--"6v666Mllll]lllM  ffff"6v66699'8999"8888;;F;;;L L L L^ L L LrX   c                      fd} j         } j        r|                    dd           g }|D ]A} ||           ||           j        k    r |                     j        |                    B| j        _        d S )Nc                B    j         j        | dk    rdn|          j        S )Nr   r   )r   r`   r   )r   r   s    rV   r   z!Param._rerender.<locals>.<lambda>  s     t{01==aP[ rX   r   r   )r  r   insertr   rx   r   r   r   )r   r   r   r   r   s   `    rV   r9  zParam._rerender  s    [[[[
%> 	'MM!X&&& 	1 	1Az!}}$

19O(O(Ot}Q/000#*   rX   c                   g }| j         D ]K}|j        | j        |         u r |j        j                            |           6|                    |           L|                     |          | j        |<   |                                  d S r   )r   r   r   r`   r   rx   r   r9  )r   r*  r  r   s       rV   r;  zParam._rerender_widget  s    ) 	# 	#Avv...$$Q''''"""" $F 3 3frX   c                      j         t          u rg }n5 j        r,dt          d                     j                            fg}ng }| fd j        D             z  }t          |          S )zDReturn name,widget boxes for all parameters (i.e., a property sheet)r   z
<b>{0}</b>r   c                >    g | ]}|                     |          fS rq   )r   )rt   r
  r   s     rV   r   z&Param._get_widgets.<locals>.<listcomp>  s*    RRREUDKK../RRRrX   )r   r!   r   rF   r   r   r  r   )r   r   s   ` rV   r   zParam._get_widgets  s     %%GG^ 	 *<3F3Fty3Q3Q"R"R"RSTGGGRRRRT=QRRRR7###rX   r   rL   rootOptional[Model]parentcommOptional[Comm]rQ   rM   c                n    | j                             ||||          }||f| j        |j        d         <   |S Nid)r   
_get_model_modelsref)r   r   r  r  r  models         rV   r  zParam._get_model  s:     &&sD&$??(-vTXd^$rX   Model | Noner   c                ~    | j                             |           t                                          |           d S r   )r   _cleanupr   )r   r  r   s     rV   r  zParam._cleanup  s7    T"""rX   r   r   float | bool | Nonec                    t          |t          j        j                  rdS t	          |          s!t          |t          j                  r	|j        dS dS )Ng?g?F)r_   r`   rv   r   r+   r   r   r   r   s     rV   applieszParam.applies  sS    c5.9:: 	3s## 	
3(H(H 	SYMb3urX   c                    t          |          }t          |          d d d         D ]C}|| j        vr| j        |         }t          |t          j                  r ||          c S |c S d S N)r[   r   r   r_   typesFunctionType)r   rO   ptypetwtypes        rV   r  zParam.widget_type  s    T

5!!$$B$' 	 	A##KNE%!344 #uT{{"""LLL	 	rX   Optional[Document]Comm | None
preprocessboolc                    t                                          |||          }|j        d         }|d f| j        |<   |S r  )r   get_rootr  r  )r   r   r  r  r  r  r   s         rV   r  zParam.get_root  s@     wwT:66htn!4LSrX   c                |    t                                          |          | j                            |          z   S )a  
        Iterates over the Viewable and any potential children in the
        applying the Selector.

        Arguments
        ---------
        selector: type or callable or None
          The selector allows selecting a subset of Viewables by
          declaring a type or callable function to filter by.

        Returns
        -------
        viewables: list(Viewable)
        )r   selectr   )r   r  r   s     rV   r  zParam.select  s0     ww~~h''$+*<*<X*F*FFFrX   r   )r   NNN
r   rL   r  r  r  r  r  r  rQ   rM   )r  r  rQ   r   r   r   rQ   r  )NNT)r   r  r  r  r  r  rQ   rM   )`r   
__module____qualname____doc__r`   rc   r   ClassSelectorr   r   r   rm  Booleanr   r   r   r   rX  heightr   r   initializerStringr   r   r   r   r   r   r  rt  rT  rf   r   r<  r4   Arrayr3   r5   Bytesr<   rW  r7   Colorr6   rV  r9   	DateRanger:   CalendarDateRanger8   r#   rn   ri   r=   rW   FilenamerH   
FoldernamerA   MultiFileSelectorListSelectorrC   r?   ObjectSelectorrE   RangerD   Selectorr   __annotations__r:  r   r   r   r   r   r   r   propertyr   r   r   r   r  r9  r;  r   r  r  classmethodr  r  r  r  __classcell__r   s   @rV   r   r   t   s         
 %Q3 EJ K K K )U(5:< < <N &ds I, - - - U]5 /   F "EM$ 5F G G GM $EOF 9. / / /M U]4	 @G H H HF "EM% 6; < < <M !%. 4, - - -K
 5< )   D U_Te B   F B4 >. / / /J  %- 32 3 3 3K d 1; < < <I 5udH5E L   D EM$4	 PF G G GE ej    Gaaa 	a 		a
 	a 	a 	
a 	!4a 	a 	a 	
!2a 	!3a 	a 	a 	a  	
!2!a" 	#a$ 	!21a aG    6 wug &%.9M9999577777,....."G"""") ) ) ) ) )VK K K K0 H H XH0$ 0$ 0$d>C >C >C@f f fP   X4	+ 	+ 	+  
$ 
$ 
$ 6:?C              [   [ CG      G G G G G G G G G GrX   r   c                  X    e Zd ZdZ ej        dd          Z ej        dddgd          Z ej        d	d
          Z	 ej        e
j        d          Zd% fd	Z ej        dd          d             Zed             Zd Zd	ddZd Zd Z	 	 d&d' fd Zed(d$            Z xZS ))ParamMethoda  
    ParamMethod panes wrap methods on parameterized classes and
    rerenders the plot when any of the method's parameters change. By
    default ParamMethod will watch all parameters on the class owning
    the method or can be restricted to certain parameters by annotating
    the method using the param.depends decorator. The method may
    return any object which itself can be rendered as a Pane.
    Nz
        Whether to defer load until after the page is rendered.
        Can be set as parameter or by setting panel.config.defer_load.r   replacerx   zL
        Whether generators should 'append' to or 'replace' existing output.r   r   r   Fzn
        Whether to lazily evaluate the contents of the object
        only when it is required for rendering.z
        Whether to show a loading indicator while the pane is updating.
        Can be set as parameter or by setting panel.config.loading_indicator.c                *   d|vrt           j        |d<    t                      j        |fi | d | _        | j        p| j         | _        |                                  |1|                                  | j        s| 	                                 d S d S d S )N
defer_load)
r   r  r   r   _async_tasklazy_evaled_link_object_params_validate_object_replace_paner   r   r   r   s      rV   r   zParamMethod.__init__  s    v%%#)#4F< **6*** I89  """!!###? %""$$$$$ % %rX   r   Tr   c                    t          | j        dd           }|r|                    d          sd S t          |           t          u rdnd}| j                            d| d| d| d| d		           d S )
N_dinfor   methodfunctionzThe zT supplied for Panel to display was declared with `watch=True`, which will cause the z to be called twice for any change in a dependent Parameter. `watch` should be False when Panel is responsible for displaying the result of the z1 call, while `watch=True` should be reserved for zxs that work via side-effects, e.g. by modifying internal state of a class or global state in an application's namespace.)rr   r   r   r[   r  r`   r\  )r   dependenciesfn_types      rV   r  zParamMethod._validate_object!  s    t{Hd;; 	<#3#3G#<#< 	F"4jjK77((Z
C7 C C7>C C -4	C C
 4;C C C		
 		
 		
 		
 		
rX   c                     t          |          S r   )r   )r   r  s     rV   evalzParamMethod.eval6  s    &x000rX   c                  K   | j         r| j                                          t          j                    x| _         t          j        }|rt          |j                  nd}|r|                    fd           	 t          |t          j                  ri| j        dk    }|rg | j        d d <   |2 3 d {V }|r-| j                            |           | j        d         | _        6|                     |           L6 n|                     | d {V            n$# t"          $ r}|r	|r	|j        r|Y d }~nd }~ww xY wd | _         d| j        _        d S # d | _         d| j        _        w xY w)NFc                ,                                     S r   )cancel)contexttasks    rV   r   z)ParamMethod._eval_async.<locals>.<lambda>A  s     rX   rx   r  )r  r  asynciocurrent_taskr   curdocr  session_contexton_session_destroyedr_   r  AsyncGeneratorTypegenerator_mode_inner_layoutrx   _pane_update_inner	Exceptionr   )r   	awaitabler  has_contextappend_modenew_objr   r  s          @rV   _eval_asynczParamMethod._eval_async:  s      	&##%%%")"6"8"8846<Gd61222% 	G''(E(E(E(EFFF	/)U%=>> 4"1X= /,.D&qqq)%. 4 4 4 4 4 4 4'" 4*11':::%)%7%;

**73333 &/Y ""??????333 	 	 	 k f.D 	  $D).D&&&  $D).D&....s=   =5D 2C>8A#D E 
D=&D83E 8D==E E*forcec               `   | j         ot          j         }| j        j        s t          | j        p|          | j        _        | xj        |p	| j        p| z  c_        | j        sd S 	 | j	        t                      }n|                     | j	                  }t          j        |          st          |t          j                  rAt"          j                            t)          | j        |                     	 d| j        _        d S t          |t,                    rc| j        dk    }|rg | j        d d <   |D ]F}|r-| j                            |           | j        d         | _        1|                     |           Gn|                     |           d| j        _        d S # d| j        _        w xY w)NFrx   r  )r  r   loadedr  r   r  loading_indicatorr  r  r   r    r  inspectisawaitabler_   r  r  r`   rv   async_executorr	   r  r   r  rx   r  r  )r   r  argsdeferred
new_objectr  r  s          rV   r  zParamMethod._replace_paneV  s   ?75<'7!) 	R)-d.D.P)Q)QD&<di&;8!<<| 	F	/{"#XX

!YYt{33
":.. /*ZIa2b2b /#2274;KZ3X3XYYY */D&&& J	22 /"1X= /,.D&qqq)) 4 4G" 4*11':::%)%7%;

**733334 "":...).D&&&D&....s   %BF BF F-c                   g }| j         D ]K}|j        |j        n|j        }|| u r|                    |           1|j                            |           L|| _         |                                  |                                  d S r   )r   r   r   rx   r`   r   r  r  )r   r   	callbacksrc  r   s        rV   _update_panezParamMethod._update_panet  s    	/ 	' 	'G"),"6',,GKCd{{  )))Ig&&&&#,   """rX   c                   	
 t           j                  j                             j        j                  }| 
fd
t          |d           D ]\  }}|d         }|j        p|j        	d |D             }t          	t                    r* j
        r#	fd|D             }|r 	j         j        fi | 	j                            
||j                  } j                            |           d S )Nc                 X   t          d | D                       rzj                            j        j                  }t                    D ]}||v rj        }t          |          D ]p}|j        |j        u r`|j        |j        u rR|j	        |j
        v rD|j        |j        n|j        }|j                            |           |                    |           q                    |           fd|D             }t          |d           D ]\  }}|d         }|j        |j        n|j        }d |D             }	|j                            |	|j                  }
j                            |
           |D ]}                    |                                            d S )Nc              3  >   K   | ]}t          |j                  V  d S r   )r+   r   )rt   r   s     rV   r   zGParamMethod._link_object_params.<locals>.update_pane.<locals>.<genexpr>  s-      CC5#EI..CCCCCCrX   c                    g | ]}|v|	S rq   rq   )rt   depdepss     rV   r   zHParamMethod._link_object_params.<locals>.update_pane.<locals>.<listcomp>  s    GGGCs$CrX   c                ,    | j         p| j        | j        fS r   r   r   r8  r   s    rV   r   zFParamMethod._link_object_params.<locals>.update_pane.<locals>.<lambda>  s    16?QUTUTZB[ rX   r   c                    g | ]	}|j         
S rq   r   rt   _ps     rV   r   zHParamMethod._link_object_params.<locals>.update_pane.<locals>.<listcomp>  s    333b"'333rX   )r   r`   method_dependenciesr   r   rh   r   r   r   r   parameter_namesr   r   r)   r   r8  rx   r  )r   new_depsru   r  r   r   rp  r   rO   psrc  r  rv   r   r  s              rV   r  z4ParamMethod._link_object_params.<locals>.update_pane  s   CCFCCCCC '(.BB4;CWXXd 	# 	#AH}}h#7H!(^^ / /Faf,,!%Fa&777+,6>!%%qvCI--a000$OOA...KKNNNNGGGG8GGG!-h8[8[!\!\ ' 'IAvq	A$%FN155D33F333B"j..{BGGG,33G<<<# ' 'A'     rX   c                ,    | j         p| j        | j        fS r   r  r   s    rV   r   z1ParamMethod._link_object_params.<locals>.<lambda>  s    15!&8Q rX   r   c                    g | ]	}|j         
S rq   r   r  s     rV   r   z3ParamMethod._link_object_params.<locals>.<listcomp>  s    +++b"'+++rX   c                (    i | ]}|j         v |d S r   )_linkable_params)rt   ru   rO   s     rV   rw   z3ParamMethod._link_object_params.<locals>.<dictcomp>  s(    PPP!Q$:O5O5OI5O5O5OrX   )r   r   r`   r
  r   r)   r   r   r_   r&   r  jslinkr  r   r8  r   rx   )r   r   rp  ru   r  propsrc  r  rv   rO   r  s   `      @@@@rV   r  zParamMethod._link_object_params  sC   (55$889MNN	! 	! 	! 	! 	! 	! 	! 	!4 &f.Q.QRR 		5 		5IAvq	AFOaeD++F+++B$)) =d.D =PPPPrPPP =DK 2<<e<<<j&&{B??G$++G4444		5 		5rX   r   rL   r  r  r  r  r  rQ   rM   c                   | j         sU| j        ot          j         }|r(t          j        t          | j        d                     |                     |            t                                          ||||          S )NTr  )	r  r  r   r  onloadr	   r  r   r  )r   r   r  r  r  r  r   s         rV   r  zParamMethod._get_model  s     | 	3;u|+;H FWT%7tDDDEEE\222ww!!#tVT:::rX   r   r   r  c                x    t          j        |          o&t          t          |          t          j                  S r   )r  ismethodr_   r   r`   Parameterizedr  s     rV   r  zParamMethod.applies  s.    $$_4DS4I4I5K^)_)__rX   r   r  r  r  )r   r  r  r  r`   r  r  r  r  r  r   r  r   dependsr  r  r  r  r  r  r  r  r  r  r  s   @rV   r  r    s         t 2J K K KJ $U^I)?T [O P P PN 5= -3 4 4 4D &f.F MQ R R R
% 
% 
% 
% 
% 
% U]84(((
 
 )(
( 1 1 [1/ / /8 */ / / / / /<
 
 
(5 (5 (5V 6:?C	; 	; 	; 	; 	; 	; 	; ` ` ` [` ` ` ` `rX   r  Tr  c                2    | t           j        j        _        d S r   )r  r`   r  r   default_values    rV   _update_defer_load_defaultr    s    +8K (((rX   c                2    | t           j        j        _        d S r   )r  r`   r  r   r  s    rV   !_update_loading_indicator_defaultr     s    2?K'///rX   c                  N    e Zd ZU dZdZded<   dZded<   d Zedd            Z	dS )ParamFunctiona?  
    ParamFunction panes wrap functions decorated with the param.depends
    decorator and rerenders the output when any of the function's
    dependencies change. This allows building reactive components into
    a Panel which depend on other parameters, e.g. tying the value of
    a widget to some other output.
    g333333?ClassVar[float | bool | None]priorityTr   _applies_kwc                  
 t          | j        di           }t          |                    dg                     t          |                    di                                                     z   }|s~| j        sw| j        spt          | j                  s\t          | j        d| j                  }t          |dt          | j                            }| j	        
                    d|d           t          t                    }|D ]/}|t          |j                                               |           0|                                D ]}|d         j        

j	                            | j        d	 |D                       }t#          
t$                    r*| j        r#
fd
|D             }	|	r 
j        | j        fi |	 | j                            |           d S )Nr  r  ra  __bound_function__r   zThe function a   does not have any dependencies and will never update. Are you sure you did not intend to depend on or bind a parameter or widget to this function? If not simply call the function before passing it to Panel. Otherwise, when passing a parameter as an argument, ensure you pass at least one parameter and reference the actual parameter object not the current value, i.e. use object.param.parameter not object.parameter.r   c                    g | ]	}|j         
S rq   r   )rt   r  s     rV   r   z5ParamFunction._link_object_params.<locals>.<listcomp>  s    ;V;V;VCH;V;V;VrX   c                <    i | ]}|j         j        v |j         d S r  )r   r  )rt   r  rO   s     rV   rw   z5ParamFunction._link_object_params.<locals>.<dictcomp>  s6     ? ? ?H(=== 9===rX   )rr   r   rh   r   r   r  r  r   r$  r`   r\  r   r  r   rx   r   r  r_   r&   r  r  r  r   )r   r  
dep_paramsfnfn_namegroupedr  rs  rc  r  rO   s             @rV   r  z!ParamFunction._link_object_params  s   t{Hb11$((>26677$txxb?Q?Q?X?X?Z?Z:[:[[
 	$) 	DO 	L_`d`kLlLl 	&:DKHHBb*d4;.?.?@@GJ? ? ? ?	 	 	 d## 	/ 	/CBsyMM"))#....^^%% 	5 	5E8>Dj&&t'9;V;VPU;V;V;VWWG$)) =d.D =? ? ? ? ? ? ? =DK 2<<e<<<$++G4444	5 	5rX   r   r   rQ   r  c                
   t          |t          j                  rht          |d          rdS |                    d          s=| j        j        j        s,| j        j        j        t          j        st          |          rdS d S dS )Nr  Tr  F)
r_   r  r  r:  r   r`   r  r   r   r   )r   r   r   s      rV   r  zParamFunction.applies  s    c5-.. 		sH%% t

<((,/I,@,H%-5&:K5#C(( 6 t4urX   Nr  )
r   r  r  r  r$  r  r%  r  r  r  rq   rX   rV   r"  r"    st           /2H1111"&K&&&&5 5 5B    [  rX   r"  c                      e Zd ZU dZ ej        dd          Z ej        ddd          Z ej        dd	          Z	 ej
        eeegded
          Z ej
        dg dd          ZdZded<   eddfeddfeddfeddfeddfeddfeddfeddfeddfeddfeddfeddfdZdZded<   d) fd	Z ej        dd d!d"d#          d$             Zed%             Zed&             Zed'             Zd( Z xZS )*ReactiveExprzd
    ReactiveExpr generates a UI for param.rx objects by rendering the
    widgets and outputs.
    Fz&
        Whether to center the output.r   Nr   r   Tz.
        Whether to display the widget inputs.z5
        The layout object to display the widgets in.)r   r4  r   r   left_top)leftrighttopbottomtop_left	top_rightbottom_leftbottom_rightr1  	right_topright_bottomz_
        The location of the widgets relative to the output
        of the reactive expression.r  r   r#  r$  )r  center)r  r<  )r<  r  )r<  r  r  )r  r  )r  r  r  )r2  r3  r4  r5  r6  r7  r8  r9  r1  left_bottomr:  r;  r   r   c                f     t                      j        dd|i| |                                  d S )Nr   rq   )r   r   _update_layoutr  s      rV   r   zReactiveExpr.__init__0  s=    111&111rX   r<  r   widget_layoutwidget_locationr  c                n    | j         g | j        d d <   d S |                                 g| j        d d <   d S r   )r   r   _generate_layout)r   r   s     rV   r?  zReactiveExpr._update_layout4  s?    ;DKNNN"33556DKNNNrX   c                6    t          |t          j                  S r   )r_   r`   r   )r   r   s     rV   r  zReactiveExpr.applies;  s    &%(+++rX   c                j   g }t          |d                   t          |d                                                   z   }t          |          }|D ]}t          |t                    r||vr|                    |           2dt          j        v r0ddlm} t          ||          r||vr|                    |           pt          |t          j
                  r>t          |j        t                    r$|j        |vr|                    |j                   t          |d          rF|j        }t          |                    dg                     }|                    di           }||d	}	nt          |t                    r|j        |j        |j        gi d	}	ndt          |t           t&          f          r|i d	}	nBt          |t(                    rd
|d	}	n't          |t          j                  r|j        i d	}	n|                     |	          D ]}
|
|vr|                    |
           |S )Nr  r   
ipywidgetsr   )rJ   r  r  ra  )r  r   rq   )rh   r   r(   r_   rJ   rx   rl   rm   rF  r`   r   r   r:  r  r   slicer  stopr  rb   rg   r   _params_find_widgets)r   opr   op_argsop_arg	IPyWidgetdinfor  r   	nested_opr   s              rV   rJ  zReactiveExpr._find_widgets?  s^   r&z""T"X,*=*=*?*?%@%@@'"" &	+ &	+F&&)) fG.C.Cv&&& s{**::::::fi00 V75J5JNN6*** 65?33 6<00G++v|,,, vx(( EIInb99::4,,%)V<<		FE** 	&,lFK%MY[\\		FT5M22 %+r::		FD)) %'6::		FEH-- %+^rBB		++I66 + +((NN6***+ rX   c                   g }| j         g S | j         j        D ]?}t          |j        t                    r#|j        |vr|                    |j                   @g }| j         }|*|j        r|                    |j                   |j        }|*|d d d         D ]3}|                     |          D ]}||vr|                    |           4 | j	        | S r  )
r   
_fn_paramsr_   r   rJ   rx   
_operation_prevrJ  r@  )r   r   ru   
operationsprevrK  r   s          rV   r   zReactiveExpr.widgetsm  s   ;I' 	( 	(A17F++ (w&&qw'''
{ 3!!$/222:D 
 TTrT" 	& 	&B''++ & &G##NN1%%%& "t!7++rX   c                   t          | j        j                  }| j        s|S | j        }| j        }| j        |         \  }}}||_        t          |          s1| j	        rt                      |t                      g}n|g}t          | S |r||fn||f}| j	        s(|t          u rt          |          }n ||d| j        ig}n|t          u r)t                       ||d| j        it                      g}nR|                    d          r|t                      |t                      g}nt                      |t                      |g}t          | S )NrS  r2  )r"  r   	_callbackshow_widgetsr   rA  _layoutsrP  r=  r<  r   r   rh   rS  r   r   )	r   panel
widget_boxlocr   rP  widget_first
componentsr   s	            rV   rC  zReactiveExpr._generate_layout  sh   dk344  	L\
"&*mC&8#| 
: 	${ %%ii		:

#W

##'3LU##%9L{ 
	C}}!%[[

$feJ9IJJK

v!))VVU%Q@P%Q%QSZS\S\]JJ^^F## 	C$gii		BJJ!))UGIIzBJJrX   r   )r   r  r  r  r`   r  r<  r   r   rY  r  r"   r   r   r@  rA  r$  r  rZ  r   r   r  r?  r  r  rJ  r  r   rC  r  r  s   @rV   r0  r0    s[         
 U]5 /) * * *F U_Te B   F !5= 41 2 2 2L #ENC(4 Q89 9 9M %enZ B1 B1 B17'( ( (O /0H//// )40(%0+T2,e4Wd+.5 0%8.'4(-t4+U3eU+ H $G####      U]8X8IQUVVV7 7 WV7 , , [, + + [+Z , , X,,             rX   r0  c                      e Zd ZdZ ej        dd          Z ej        dd          Z ej        dd          Zd Z	dS )	JSONInita  
    Callable that can be passed to Widgets.initializer to set Parameter
    values using JSON. There are three approaches that may be used:
    1. If the json_file argument is specified, this takes precedence.
    2. The JSON file path can be specified via an environment variable.
    3. The JSON can be read directly from an environment variable.
    Here is an easy example of setting such an environment variable on
    the commandline:
    PARAM_JSON_INIT='{"p1":5}' jupyter notebook
    This addresses any JSONInit instances that are inspecting the
    default environment variable called PARAM_JSON_INIT, instructing it to set
    the 'p1' parameter to 5.
    PARAM_JSON_INITzX
        The name of the environment variable containing the JSON
        specification.r   Nzk
        Optional key in the JSON specification dictionary containing the
        desired parameter values.zH
        Optional path to a JSON file containing the parameter settings.c                   t          |t                    rt          j        j        n|j        }t          |t                    r|n|j        }| j        | j        n|j        }t          j        	                    | j
        d           }|	| j        d S | j        s|                    d          r	 | j        r| j        n|}t          t          |          d          5 }t          j        |          }d d d            n# 1 swxY w Y   n<# t"          $ r |                    d|z             Y nw xY wt          j        |          }t          |t(                    s|                    d           d S ||v r	||         }	n|}	|	                                D ]S\  }
}	  |j        j        di |
|i # t.          $ r,}|                    t1          |                     Y d }~Ld }~ww xY wd S )Nz.jsonrzCould not load JSON file %rz2JSON parameter specification must be a dictionary.rq   )r_   r[   r`   mainr   targetr   osenvironr   varname	json_fileendswithopenr*   jsonloadr  r\  loadsrg   r   ry   r   ra   )r   rv   warnobjparam_classrf  env_varfnamefspecr   r   r   r   s                rV   __call__zJSONInit.__call__  sS   &0&E&E^%*""=K^(2=$(G(G 4}})3 	 !% 7[=Q*..t44?t~5vv> 	'W--g66 	'F*..Eg(5//3// (19Q<<D( ( ( ( ( ( ( ( ( ( ( ( ( ( ( F F F = DEEEEEF :g&&D$%% 	OOPQQQFT>>&\FFF!<<>> 	( 	(KD%(*#*::d5\:::: ( ( (A''''''''(	( 	(sN   .-D C<0D <D  D D D "D-,D-F..
G$8"GG$)
r   r  r  r  r`   r  ri  rf  rj  rv  rq   rX   rV   ra  ra    s          el#4 ;   G U\$ -% & & &F T 0K L L LI!( !( !( !( !(rX   ra  c                p   |                      d           }|                      d           }|D ]}|D ]}|j        D ]w}|j        |j        n|j        }|j        j        |u rR|j        |j        v rDt          |t                    r|j
        }n|}d|j        v r|                    |j        d           xdS )z
    This preprocessor jslinks ParamMethod loading parameters to any
    widgets generated from those parameters ensuring that the loading
    indicator is enabled client side.
    c                :    t          | t                    o| j        S r   )r_   r  r  )ru   s    rV   r   z#link_param_method.<locals>.<lambda>  s    A{)C)C)[H[ rX   c                R    t          | t                    ot          | dd           d uS )Nr]  )r_   rJ   rr   )r   s    rV   r   z#link_param_method.<locals>.<lambda>  s(    Av)>)>)n71m]aCbCbjnCn rX   Nr   r   r  )r  r   r   r   r]  r   r^  r  r_   r;   _sliderr  r  r  )		root_view
root_modelmethodsr   r   r  r   rO   r   s	            rV   link_param_methodr~    s     [[\\GnnooG 
H 
H 		H 		HF0 H H!#rvvbg%,449KrOa9a9a!&.99 #"N"!"444!5YGGGH		H
H 
HrX   c                  D    e Zd Z ej                    Zd Zg g fdZd ZdS )FigureWrapperc                z    ddl m} ddlm}  |            x| _        } ||           |                                S )Nr   )FigureCanvas)Figure)matplotlib.backends.backend_aggr  matplotlib.pyplotr  figuresubplots)r   r  r  figs       rV   get_axzFigureWrapper.get_ax  sV    @@@@@@,,,,,,"FHH$cS||~~rX   c                N    |                                                                  S r   )r   _repr_mimebundle_)r   includeexcludes      rV   r  zFigureWrapper._repr_mimebundle_  s    {{}}..000rX   c                *    |                                  S r   )r   )r   s    rV   	__panel__zFigureWrapper.__panel__  s    {{}}rX   N)	r   r  r  r`   r   r  r  r  r  rq   rX   rV   r  r    s\        U_F   )+B 1 1 1 1    rX   r  c                .    t                      fd}|S )Nc                b    d|vr                                 |d<    | j        |i | j        S )Nax)r  plotr  )r   r  r   fig_wrappers      rV   r  z_plot_handler.<locals>.plot  sC    v&--//F4L$!&!!!!!rX   )r  )reactiver  r  s     @rV   _plot_handlerr    s,    //K" " " " "
 KrX   d   )handlermax_rowsc                *    |                                  S r   )
get_figure)r  s    rV   r   r     s    BMMOO rX   )r  r  )r   r"  r  r0  r~   )rO   rP   rQ   rR   )rO   rj   rQ   rR   )r  
__future__r   r  r  rv  rm  rg  rl   rY  r  collectionsr   r   r   collections.abcr   
contextlibr   	functoolsr	   typingr
   r   r   r   r   r   r   r   r   r`   param.parameterizedr   r   r   r   r   param.reactiver   r   ior   r   r   r   r   r   r    r!   r"   r  r#   DataFramePane	pane.baser$   r%   r  r&   utilr'   r(   r)   r*   r+   r,   r-   util.checksr.   r/   r0   viewabler1   r2   r   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   widgets.buttonrK   bokeh.documentrL   bokeh.modelrM   pyviz_commsrN   rW   ri   rn   r~   r   r  r  r  r  r  r   r"  r0  r  ra  r~  _preprocessing_hooksr  r  r  register_display_handlerregister_method_handler__all__rq   rX   rV   <module>r     s    # " " " " "        				 



   < < < < < < < < < < $ $ $ $ $ $ % % % % % %                           
                                                  - , , , , , 0 0 0 0 0 0 0 0                        > = = = = = = = = = * * * * * * * *                                                      ( ' ' ' ' ' !''''''!!!!!!         	 	 	 	    5 5 50E
G E
G E
G E
G E
GH E
G E
G E
GP` ` ` ` `/ ` ` `B v|&d3339 9 439 v|-T:::@ @ ;:@: : : : :K : : :z]  ]  ]  ]  ] 8 ]  ]  ] B;( ;( ;( ;( ;(u" ;( ;( ;(|H H H, 	  $ $Q(9 : : :    E'   $    L-# N N N N  I}s K K K K  K1K1K L L L L  6= 1 1 1
rX   