
    	e                       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ej                  Z	 dddZd dZ G d dej                   Z!dS )!    )annotations)IterableMapping)	Parameter)IntegralNumberReal)AnyOptionalTupleN   )Widget)Checkbox	TextInput)Select)DiscreteSliderFloatSlider	IntSliderc                  n     e Zd ZdZ ej        d          Z ej        d          Zd fd	Z	d
 Z
 xZS )fixedzN
    A pseudo-widget whose value is fixed and never synced to the client.
     )defaultzAny Python object)docvaluer
   kwargsc                >     t                      j        dd|i| d S )Nr    )super__init__)selfr   r   	__class__s      4lib/python3.11/site-packages/panel/widgets/widget.pyr   zfixed.__init__   s+    //u//////    c                    | 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    s    r"   get_interact_valuezfixed.get_interact_value   s     zr#   )r   r
   r   r
   )__name__
__module____qualname____doc__paramStringdescriptionr   r   r   r&   __classcell__)r!   s   @r"   r   r      s          %,r***KEO 3444E0 0 0 0 0 0      r#   r   minr   maxr   Optional[Number]stepreturnTuple[Number, Number, Number]c                *   |[| |$t          d                    | ||                    || z
  }| |dz  z   }t          |t          |                    s| |dz  z   }n`t          |t                    st          d|z            |dk    r||dz   f}n|dk    r	| d|z  f}nd|z  | f}| |d         } ||d         }|t          || z
  |z            }| ||z  z   }| |cx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/   r0   r   r2   diffvrangeticks          r"   _get_min_max_valuerA   '   st   
 };#+QXXY\^achiijjjSytax %d,, 	&419%E%&& 	G=EFFFA::UQY'FFQYYfag&FFgv&F;)C;)CECK4'((dTk!%3ZaabeglnqrrsssU?r#   ostrpatternboolc                    t          |           t          |          k    sdS t          | |          }t          d |D                       S )z'Match a pattern of types in a sequence.Fc              3  <   K   | ]\  }}t          ||          V  d S N)r:   ).0objkinds      r"   	<genexpr>z_matches.<locals>.<genexpr>Q   s0      ::Dz#d##::::::r#   )lenzipall)rB   rD   compss      r"   _matchesrQ   L   sH    q66S\\!!u'NNE::E::::::r#   c                  d    e Zd ZdZefddZed             Zeefd            Ze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   r
   namerC   c                   t          |t                    r|}nt          |t                    r:|                     |||          }|t          ur	 ||_        nv# t          $ r Y njw xY wne|                     ||          }|Mt          |t                    r8| 	                    ||          }|t          ur	 ||_        n# t          $ r Y nw xY w|t          |          }|r |j        j        di | |S )z=Build a ValueWidget instance given an abbreviation or Widget.Nr   )r:   r   tuplewidget_from_tupleemptyr   	Exceptionwidget_from_single_valuer   widget_from_iterabler   r+   update)r    r   rT   r   paramsrS   s         r"   __call__zwidget.__call__h   s6   eV$$ 	FFu%% 	++E4AAFe###*FLL    D $ 225$??F ~*UH"="=~225$??%'''.$    >5\\F 	*FL))&)))s$   A 
A$#A$5B= =
C
	C
c                   t          | t                    rt          t          |           |          S t          | t                    rt	          | |          S t          | t
                    r(t          dd|           \  }}}t          | |||          S t          | t                    r(t          dd|           \  }}}t          | |||          S dS )zIMake widgets from single values, which can be used as parameter defaults.)r   rT   Nr   startendrT   )
r:   rC   r   rE   r   r   rA   r   r	   r   )rB   rT   r/   r0   r   s        r"   rZ   zwidget.widget_from_single_value   s     a 	3q6655554   		!$////8$$ 	0tQ??OCe1CStDDDD4   	0tQ??OCeQcsFFFF4r#   c                   |t           u pt          |t                    }t          | t          t          f          rYt          | d         | d                   \  }}}t          d | D                       r
|rt          }nt          } |||||          S t          | t          t          t          f          r|| d         }|dk    rt          d|z            t          | d         | d         |          \  }}}t          d | D                       r
|rt          }nt          } ||||||	          S t          | t          t          t          t          f          r| d         }|dk    rt          d|z            t          | d         | d         | d
         |          \  }}}t          d | D                       rt          }nt          } ||||||	          S t          |           dk    rtt          | d         | d         | d
                   \  }}}t          d | d         | d         | d
         fD                       rt          }nt          } |||||          S dS )z'Make widgets from a tuple abbreviation.r   r   c              3  @   K   | ]}t          |t                    V  d S rH   r:   r   rI   _s     r"   rL   z+widget.widget_from_tuple.<locals>.<genexpr>   ,      66q:a**666666r#   r`   r6   zstep must be >= 0, not %r)r2   c              3  @   K   | ]}t          |t                    V  d S rH   re   rf   s     r"   rL   z+widget.widget_from_tuple.<locals>.<genexpr>   rh   r#   )r   ra   rb   r2   rT   r7   )r   r2   c              3  @   K   | ]}t          |t                    V  d S rH   re   rf   s     r"   rL   z+widget.widget_from_tuple.<locals>.<genexpr>   rh   r#      r%   c              3  @   K   | ]}t          |t                    V  d S rH   re   rf   s     r"   rL   z+widget.widget_from_tuple.<locals>.<genexpr>   s,      GGq:a**GGGGGGr#   N)rX   r:   r=   rQ   r	   rA   rO   r   r   r8   rM   )	rB   rT   r   int_defaultr/   r0   r   clsr2   s	            r"   rW   zwidget.widget_from_tuple   s    %'C:gs+C+CAd|$$ !	C01qt<<OCe66A66666 "; "!3U#3TBBBBa$d+,, 	CQ4Dqyy !<t!CDDD01qt$GGGOCe66A66666 "; "!3U#3TMMMMa$dD122 	CQ4Dqyy !<t!CDDD01qt1Q4dSSSOCe66A66666 "!3U#3TMMMMVVq[[01qt1Q4HHHOCeGGQqT1Q414FGGGGG "!3U#3TBBBB [r#   c                   t          | t                    r!t          |                                           nt          |           }t	          d |D                       rt
          nt          }t          | t          t          f          r || |          S t          | t                    r, |t          |                                           |          S  |t          |           |          S )zUMake widgets from an iterable. This should not be done for
        a string or tuple.c              3  >   K   | ]}t          j        |          V  d S rH   )r+   
_is_number)rI   vs     r"   rL   z.widget.widget_from_iterable.<locals>.<genexpr>   s-      +P+PAE,<Q,?,?+P+P+P+P+P+Pr#   )optionsrT   )	r:   r   listvaluesrO   r   r   dictitems)rB   rT   ru   widget_types       r"   r[   zwidget.widget_from_iterable   s     &07%;%;Hahhjj!!!a(++P+P+P+P+P(P(P\nnV\a$&& 	;;qt44447## 	;;tAGGIITBBBB;tAwwT::::r#   N)r   r
   rT   rC   )
r'   r(   r)   r*   rX   r^   staticmethodrZ   rW   r[   r   r#   r"   rS   rS   T   s         & 7<     @   \ +0 $C $C $C \$CL ; ; \; ; ;r#   rS   )NN)
r/   r   r0   r   r   r1   r2   r1   r3   r4   )rB   rC   rD   rC   r3   rE   )"
__future__r   collections.abcr   r   inspectr   numbersr   r   r	   typingr
   r   r   rX   r+   baser   inputr   r   selectr   sliderr   r   r   Parameterizedr   rA   rQ   ParameterizedFunctionrS   r   r#   r"   <module>r      s   " " " " " " - - - - - - - -       * * * * * * * * * * ' ' ' ' ' ' ' ' ' '        & & & & & & & &       : : : : : : : : : :    E   , X\" " " " "J; ; ; ;x; x; x; x; x;U( x; x; x; x; x;r#   