a
    Df                     @  s   d dl mZ d dlmZmZ d dlmZ d dlmZm	Z	m
Z
 d dlmZmZmZ ejZd dlZddlmZ dd	lmZmZ dd
lmZ ddlmZmZmZ G dd dejZdddddddddZddddddZG dd dej Z!dS )    )annotations)IterableMapping)	Parameter)IntegralNumberReal)AnyOptionalTupleN   )Widget)Checkbox	TextInput)Select)DiscreteSliderFloatSlider	IntSliderc                      sH   e Zd ZdZejddZejddZddd fdd	Z	d
d Z
  ZS )fixedzN
    A pseudo-widget whose value is fixed and never synced to the client.
     )defaultzAny Python object)docr	   )valuekwargsc                   s   t  jf d|i| d S )Nr   )super__init__)selfr   r   	__class__ a/nfs/NAS7/SABIOD/METHODE/ermites/ermites_venv/lib/python3.9/site-packages/panel/widgets/widget.pyr      s    zfixed.__init__c                 C  s   | j S )z
        Return the value for this widget which should be passed to
        interactive functions. Custom widgets can change this method
        to process the raw value ``self.value``.
        r   )r   r   r   r    get_interact_value   s    zfixed.get_interact_value)__name__
__module____qualname____doc__paramStringdescriptionr   r   r   r"   __classcell__r   r   r   r    r      s
   r   r   zOptional[Number]zTuple[Number, Number, Number])minmaxr   stepreturnc                 C  s&  |du rZ| du s|du r*t d| ||||  }| |d  }t|t|s| |d  }nrt|tsptd| |dkr||d f}n&|dkr| d| f}nd| | f}| du r|d } |du r|d }|durt||  | }| ||  }| |  kr|ksn t d| ||| ||fS )	z=Return min, max, value given input values with possible None.Nz2unable to infer range, value from: ({0}, {1}, {2})   zexpected a real number, got: %rr   r      z?value must be between min and max (min={0}, value={1}, max={2}))
ValueErrorformat
isinstancetyper   	TypeErrorint)r+   r,   r   r-   diffZvrangeZtickr   r   r    _get_min_max_value'   s0    
r8   strbool)opatternr.   c                 C  s0   t | t |ksdS t| |}tdd |D S )z'Match a pattern of types in a sequence.Fc                 s  s   | ]\}}t ||V  qd S N)r3   ).0objkindr   r   r    	<genexpr>Q       z_matches.<locals>.<genexpr>)lenzipall)r;   r<   compsr   r   r    _matchesL   s    
rG   c                   @  sL   e Zd ZdZefdddddZedd Zeefd	d
Zedd Z	dS )widgeta  
    Attempts to find a widget appropriate for a given value.

    Arguments
    ---------
    name: str
        The name of the resulting widget.
    value: Any
        The value to deduce a widget from.
    default: Any
        The default value for the resulting widget.
    **params: Any
        Additional keyword arguments to pass to the widget.

    Returns
    -------
    Widget
    r	   r9   r   namec                 K  s   t |tr|}nt |trP| |||}|turz
||_W q tyL   Y q0 nP| ||}|du rt |tr| 	||}|turz
||_W n ty   Y n0 |du rt
|}|r|jjf i | |S )z=Build a ValueWidget instance given an abbreviation or Widget.N)r3   r   tuplewidget_from_tupleemptyr   	Exceptionwidget_from_single_valuer   widget_from_iterabler   r'   update)r   r   rJ   r   paramsrH   r   r   r    __call__h   s,    



zwidget.__call__c                 C  s   t | trtt| |dS t | tr0t| |dS t | tr\tdd| \}}}t| |||dS t | trtdd| \}}}t	| |||dS dS dS )zIMake widgets from single values, which can be used as parameter defaults.rI   Nr   startendrJ   )
r3   r9   r   r:   r   r   r8   r   r   r   )r;   rJ   r+   r,   r   r   r   r    rO      s    



zwidget.widget_from_single_valuec           	      C  s  |t u pt|t}t| ttfrht| d | d \}}}tdd | D rT|rTt}nt}|||||dS t| tttfr| d }|dkrt	d| t| d | d |d\}}}td	d | D r|rt}nt}||||||d
S t| ttttfrf| d }|dkrt	d| t| d | d | d |d\}}}tdd | D rPt}nt}||||||d
S t
| dkrt| d | d | d d\}}}tdd | d | d | d fD rt}nt}|||||dS dS )z'Make widgets from a tuple abbreviation.r   r   c                 s  s   | ]}t |tV  qd S r=   r3   r   r>   _r   r   r    rA      rB   z+widget.widget_from_tuple.<locals>.<genexpr>rT   r/   zstep must be >= 0, not %r)r-   c                 s  s   | ]}t |tV  qd S r=   rW   rX   r   r   r    rA      rB   )r   rU   rV   r-   rJ   r0   )r   r-   c                 s  s   | ]}t |tV  qd S r=   rW   rX   r   r   r    rA      rB      r!   c                 s  s   | ]}t |tV  qd S r=   rW   rX   r   r   r    rA      rB   N)rM   r3   r6   rG   r   r8   rE   r   r   r1   rC   )	r;   rJ   r   Zint_defaultr+   r,   r   clsr-   r   r   r    rL      s>    
" &zwidget.widget_from_tuplec                 C  s   t | trt|  nt| }tdd |D r4tnt}t | ttfrR|| |dS t | trp|t|  |dS |t| |dS dS )zUMake widgets from an iterable. This should not be done for
        a string or tuple.c                 s  s   | ]}t |V  qd S r=   )r'   Z
_is_number)r>   vr   r   r    rA      rB   z.widget.widget_from_iterable.<locals>.<genexpr>)optionsrJ   N)	r3   r   listvaluesrE   r   r   dictitems)r;   rJ   r_   Zwidget_typer   r   r    rP      s    
zwidget.widget_from_iterableN)
r#   r$   r%   r&   rM   rS   staticmethodrO   rL   rP   r   r   r   r    rH   T   s    
&rH   )NN)"
__future__r   collections.abcr   r   inspectr   Znumbersr   r   r   typingr	   r
   r   rM   r'   baser   inputr   r   selectr   Zsliderr   r   r   ZParameterizedr   r8   rG   ZParameterizedFunctionrH   r   r   r   r    <module>   s    %