
    XhE                        d Z ddlmZ ddlZddlmZ ddlmZ ddlZddl	Z
ddlmZmZ ddl	mZmZmZmZmZmZ d Z G d	 d
e      ZdedededededdfdZg a ej8                         d        Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d  Z+d! Z,d" Z-d# Z.d$ Z/d% Z0d& Z1d' Z2d( Z3d) Z4d* Z5d+ Z6d, Z7d- Z8d. Z9d/ Z:d0 Z;d1 Z<d2 Z=d3 Z>d4 Z?d5 Z@d6 ZAd7 ZBd8 ZCd9 ZDd: ZEy);zTest interact and interactive.    )patchN)EnumOrderedDict)
TraitErrorFloat)interactinteract_manualinteractiveinteractionOutputWidgetc                       y N )kwargss    ]/var/www/html/myenv/lib/python3.12/site-packages/ipywidgets/widgets/tests/test_interaction.pyfr              c                       e Zd ZdZdZdZy)Colorr         N)__name__
__module____qualname__redgreenbluer   r   r   r   r      s    
CEDr   r   abcdereturnc                      y r   r   r!   r"   r#   r$   r%   s        r   gr)   !   r   r   c                      g a y r   )	displayedr   r   r   clear_displayr,   &   s	     Ir   c                  .    t         j                  |        y r   )r+   extend)argss    r   record_displayr0   +   s    Tr   c                    |j                         D ]  \  }}|dk(  r| j                  |u rJ t        | |      }||k(  s-J dj                  | j                  j                  |||             t        |t        t        f      sqt        |      }t        |      }||u rJ dj                  | j                  j                  |||              y)z$Check a single widget against a dictclsz{}.{} = {!r} != {!r}ztype({}.{}) = {!r} != {!r}N)	items	__class__getattrformatr   
isinstanceintfloattype)wr$   attrexpectedvaluetvtes          r   check_widgetrA   2   s    '') ih5=;;(***At$EH$p&<&C&CAKKDXDXZ^`ego&pp$ %#u.%[(^Rxh!=!D!DQ[[EYEY[_aceg!hhxir   c                     i }| j                   D ]"  }t        |t              r|||j                  <   $ |j	                         D ]  \  }}||v sJ t        ||   fi |  y)z*Check that widgets are created as expectedN)childrenr7   r   descriptionr3   rA   )	containerto_checkwidgetsr;   keyr$   s         r   check_widget_childrenrI   A   so     G '!V$%&GAMM"' .." (Qg~~WS\'Q'(r   c                      d} t        t        |       }|j                  d   }t        |t        j
                  d|        y Nhellor!   r   r!   r2   rD   r>   r   r   rC   rA   rG   Textr!   r#   r;   s      r   test_single_value_stringrR   N   s7    AAA	

1ALLr   c                      dD ]?  } t        t        |       }|j                  d   }t        |t        j
                  d|        A y )N)TFrM   r   r!   rN   )r   r   rC   rA   rG   CheckboxrQ   s      r   test_single_value_boolrU   X   sC     
QJJqMQ  	

r   c                      dD ]`  } | sd}d}n| dkD  r	|  }d| z  }nd| z  }|  }t        t        |       }|j                  d   }t        |t        j
                  d| ||dd	
       b y )N)g      @      ?g              rX   rW   r      rM   r!   皙?Tr2   rD   r>   minmaxstepreadout)r   r   rC   rA   rG   FloatSliderr!   expected_minexpected_maxr#   r;   s        r   test_single_value_floatrd   b   s    # 
LLU2LQ3LQ3L2LQJJqMQ##	

r   c                     dD ]z  } | sd}d}n| dkD  r	|  }d| z  }nd| z  }|  }t        t        |       }t        |j                        dk(  sJ |j                  d   }t	        |t
        j                  d| ||dd	       | y )
N)r      r   r   r   rY   rM   r   r!   Tr[   )r   r   lenrC   rA   rG   	IntSliderra   s        r   test_single_value_intrj   y   s     
LLU2LQ3LQ3L2LQ1::!###JJqMQ!!	

r   c            	          g d} | d   }t        t        |       }t        |j                        dk(  sJ t	        t
        j                  |t        |       t        |       t        |             }t        ||       y )N)rL   thereguyr   lisr   r2   r>   options_options_labels_options_values	r   r   rh   rC   dictrG   DropdowntuplerI   valuesfirstr#   r$   s       r   test_list_strr{      si    &F1IEA6"Aqzz?afff	A !#r   c            	         g d} | d   }t        t        |       }t        |j                        dk(  sJ t	        t
        j                  |t        |       t        d | D              t        |             }t        ||       y )NrY   r   r   r   rn   r   c              3   2   K   | ]  }t        |        y wr   )str).0vs     r   	<genexpr>z test_list_int.<locals>.<genexpr>   s     5c!f5s   rp   rt   rx   s       r   test_list_intr      sp    F1IEA6"Aqzz?af5f55f	A !#r   c                      g d} | d   d   }t        t        |       }t        |j                        dk(  sJ t	        t
        j                  |t        |       dd      }t        ||       y 	N)rY   ,  )r   d   )r      r   r   rn   r   312r   r   r   rp   rt   rx   s       r   test_list_tupler      se    +F1IaLEA6"Aqzz?af''	A !#r   c                      dD ]@  } t        j                  t              5  t        |        t	        t
        |       }d d d        B y # 1 sw Y   MxY w)N)r   )tup)pytestraises
ValueErrorprintr   r   )badr#   s     r   test_list_tuple_invalidr      sN     ( ]]:& 	(#JA3'A	( 	((	( 	(s   AA	c                  |   t        d      t        ddt               fD ]  } t        t        |       }|j                  d   }t        t        j
                  dt        t        | j                                     | t        | j                               t        | j                                     }t        |fi |  y )	Nrf   rM   r"   )r!   r"   r#   )r$   r   r$   )r2   rD   r>   rq   rr   rs   )ru   r   r   rC   rG   rv   nextiterry   rw   keysrA   )r$   r#   r;   checks       r   	test_dictr      s    q	qC4  ! QJJqM  tAHHJ'(!!&&(O!!((*-
 	Q % !r   c                      ddl m}  g d}|d   d   } | |      }t        t        |      }t	        |j
                        dk(  sJ t        t        j                  ||dd	      }t        ||       y )
Nr   r   r   r   rn   r   r   r   rp   )
collectionsr   r   r   rh   rC   ru   rG   rv   rI   )r   r3   rz   ry   r#   r$   s         r   test_ordereddictr      sn    '*E!HQKEFA6"Aqzz?a''	A !#r   c                      d } t         |              }t        t         |              }t        |j                        dk(  sJ t        t        j                  |ddd      }t        ||       y )Nc               3   $   K   d d d y w)NrY   r   r   r   r   r   r   yield_valuesz#test_iterable.<locals>.yield_values   s     s   rn   r   r}   r   rp   )	r   r   r   rh   rC   ru   rG   rv   rI   )r   rz   r#   r$   s       r   test_iterabler      sd      EA<>*Aqzz?a'!	A !#r   c                      g d} | d   d   }t        t        t        |             }t        |j                        dk(  sJ t        t        j                  |t        |       dd      }t        ||       y r   )
r   r   r   rh   rC   ru   rG   rv   rw   rI   rx   s       r   test_iterable_tupler      si    +F1IaLEA4<(Aqzz?af''	A !#r   c                     ddl m}  ddlm}  G d d|       }g d}|d   d   } ||      }t	        t
        |      }t        |j                        d	k(  sJ t        t        j                  |t        |      d
d      }t        ||       y )Nr   )Mappingr   c                   *    e Zd Zd Zd Zd Zd Zd Zy)!test_mapping.<locals>.TestMappingc                     || _         y r   ry   )selfry   s     r   __init__z*test_mapping.<locals>.TestMapping.__init__  s	     DKr   c                     t         r   NotImplementedErrorr   s    r   __getitem__z-test_mapping.<locals>.TestMapping.__getitem__	      %%r   c                     t         r   r   r   s    r   __len__z)test_mapping.<locals>.TestMapping.__len__  r   r   c                     t         r   r   r   s    r   __iter__z*test_mapping.<locals>.TestMapping.__iter__  r   r   c                     | j                   S r   r   r   s    r   r3   z'test_mapping.<locals>.TestMapping.items  s    ;;r   N)r   r   r   r   r   r   r   r3   r   r   r   TestMappingr     s    	!	&	&	&	r   r   r   r   rn   r   r   r   rp   )collections.abcr   r   r   r   r   rh   rC   ru   rG   rv   rw   rI   )r   r   r   r3   rz   ry   r#   r$   s           r   test_mappingr     s    ''
g 
 +E!HQKEFA6"Aqzz?ae''	A !#r   c                    t        j                  t        dt              5  t	        d      d        }d d d        t        t              dk(  sJ t        d   j                  d   }t        |t        j                  d       y # 1 sw Y   PxY w)Ndisplayrf   rM   c                      y r   r   rM   s    r   fooz!test_decorator_kwarg.<locals>.foo"      r   r   r   r2   r>   r   objectr   r0   r	   rh   r+   rC   rA   rG   ri   r,   r   r;   s      r   test_decorator_kwargr      s{    	k9n	= 	A	 
	 y>Q!a A s   BBc                 H    G d d      } |       }t        j                  t        dt              5  t	        |j
                  d      }d d d        t        t              dk(  sJ t        d   j                  d   }t        |t        j                  d	       y # 1 sw Y   PxY w)
Nc                       e Zd Zd Zy))test_interact_instancemethod.<locals>.Fooc                     t        |       y r   )r   )r   xs     r   showz.test_interact_instancemethod.<locals>.Foo.show.  s	    !Hr   N)r   r   r   r   r   r   r   Foor   -  s    	r   r   r   )r   
   r   r   r   rf   r   )r   r   r   r0   r	   r   rh   r+   rC   rA   rG   ri   )r,   r   r   r)   r;   s        r   test_interact_instancemethodr   ,  s      	A	k9n	= 'QVVv&'y>Q!a A	' 's   BB!c                    t        j                  t        dt              5  t        dd       }d d d        t        t              dk(  sJ t        d   j                  d   }t        |t        j                  d       y # 1 sw Y   PxY w)Nr   defaultc                      y r   r   rM   s    r   r   z#test_decorator_no_call.<locals>.foo>  r   r   r   r   r   r   r   r   r   r0   r	   rh   r+   rC   rA   rG   rP   r   s      r   test_decorator_no_callr   <  su    	k9n	= 		 
	 y>Q!a ALL s   A==Bc                    dd}t        j                  t        dt              5  t	        |      }d d d        t        t              dk(  sJ t        d   j                  d   }t        |t        j                  d       y # 1 sw Y   PxY w)Nr   c                      y r   r   rM   s    r   r   ztest_call_interact.<locals>.fooI      r   r   r   r   r   r   r   r,   r   ifoor;   s       r   test_call_interactr   H  so    	k9n	= }y>Q!a ALL	 s   A??Bc                    dd}t        j                  t        dt              5  t	        |      }d d d        t        t              dk(  sJ t        d   j                  d   }t        |t        j                  d       t        j                  t        dt              5  d|_        d d d        t        t              dk(  sJ y # 1 sw Y   xY w# 1 sw Y   *xY w)	Nr   c                      y r   r   rM   s    r   r   z<test_call_interact_on_trait_changed_none_return.<locals>.fooU  r   r   r   r   r   r   calledr   r   r   r   r0   r	   rh   r+   rC   rA   rG   rP   r>   r   s       r   /test_call_interact_on_trait_changed_none_returnr   T  s    	k9n	= }y>Q!a ALL 
k9n	= y>Q  s   CCCCc                    dd}t        j                  t        dt              5  t	        |d      }d d d        t        t              dk(  sJ t        d   j                  d   }t        |t        j                  d       y # 1 sw Y   PxY w)	Nc                      y r   r   rM   s    r   r   z&test_call_interact_kwargs.<locals>.food  r   r   r   r   rM   r   r   r   r   r   r   s       r   test_call_interact_kwargsr   c  st    	k9n	= #r"#y>Q!a A	# #s   BB
c                 0   i t        j                  t        dt              5  t        dfd	       }ddd       t        t              dk(  sJ t        d   j                  d   }t        |t        j                  d        d	      }|d	k(  sJ d
   d	k(  sJ t        j                  t        dt              5  d|_        ddd       d
   dk(  sJ t        t              dk(  sJ |j                  t        d   k(  sJ y# 1 sw Y   xY w# 1 sw Y   LxY w)z*test calling @interact decorated functionsr   r   c                     | d<   | S Nr!   r   r!   r$   s    r   r   z0test_call_decorated_on_trait_change.<locals>.foos      AcFHr   Nr   r   r   r   rL   r!   r   rY   r   r   r,   r   r;   r!   r$   s       @r   #test_call_decorated_on_trait_changer   o  s   
A	k9n	= 		 
	
 y>Q!a ALL
 	GA<<S6W 
k9n	= S6Xy>Q77im###+ " s   D 9D D	Dc                 <   i t        j                  t        dt              5  t	        d      dfd	       }ddd       t        t              dk(  sJ t        d   j                  d   }t        |t        j                  d	        d
      }|d
k(  sJ d   d
k(  sJ t        j                  t        dt              5  d|_        ddd       d   dk(  sJ t        t              dk(  sJ |j                  t        d   k(  sJ y# 1 sw Y   xY w# 1 sw Y   LxY w)z3test calling @interact(foo=bar) decorated functionsr   kwargrM   c                     | d<   | S r   r   r   s    r   r   z7test_call_decorated_kwargs_on_trait_change.<locals>.foo  r   r   Nr   r   r   r   rL   r!   r   rY   r   r   r   r   s       @r   *test_call_decorated_kwargs_on_trait_changer     s   
A	k9n	= 	G		 
	
 y>Q!a ALL
 	GA<<S6W 
k9n	= S6Xy>Q77im###+ " s   D?DDDc                      t        t        t        j                  d      d      } t	        | j
                        dk(  sJ | j
                  d   }t        |t        j                  dd       y )Nrf   text)r!   r"   r   r   r"   r2   r>   rD   )r   r   rG   fixedrh   rC   rA   rP   r#   r;   s     r   
test_fixedr     sS    Aq)V4Aqzz?a	

1ALLr   c                  ~    t        t        d      } | j                  d   }t        |t        j
                  dd       y )Nr   r"   r   r"   r   rO   r   s     r   test_default_descriptionr     s2    A A	

1ALLr   c                      i fd} t        | t        j                  dd            }|j                  d   }t	        |t        j                  dd       d|_        d	dik(  sJ y )
Nc                  H    j                          j                  |        y r   )clearupdate)r   r$   s    r   record_kwargsz.test_custom_description.<locals>.record_kwargs  s    			r   r   r   )r>   rD   r   r   r   zdifferent textr"   )r   rG   rP   rC   rA   r>   )r   r#   r;   r$   s      @r   test_custom_descriptionr     sg    
A 	MW\\E%RSA	

1ALL
 AG&''''r   c                       G d dt               } t        j                  t        d      5  t	        t
         |               ddd       y# 1 sw Y   yxY w)z9 Test that passing in a non-value widget raises an error c                       e Zd ZdZ e       Zy)2test_raises_on_non_value_widget.<locals>.BadWidgetz+ A widget that contains a `value` traitlet N)r   r   r   __doc__r   r>   r   r   r   	BadWidgetr    s    9r   r  z.* not a ValueWidget.*)matchr   N)r   r   r   	TypeErrorr   r   )r  s    r   test_raises_on_non_value_widgetr    s@    F  
y(@	A &A%& & &s   AAc                      t        j                  d      j                  t              } | j                  d   }t        |t        j                         y )NTmanualr   )r2   )r	   rq   widgetr   rC   rA   rG   Buttonr   s     r   test_interact_manual_buttonr    s8    %,,Q/A	

1A'r   c                      d} d } t        j                  d      |d      j                  }d|j                  d   _        | dk(  sJ y )Nr   c                     dz  }y )Nr   r   )testarg	callcounts     r   calltestz-test_interact_manual_nocall.<locals>.calltest  s    Q	r   Tr	  rf   )r  r   )r	   rq   r  rC   r>   )r  r  r#   s      r   test_interact_manual_nocallr    sG    I%%h:AAAAJJqM>>r   c                      t        j                  t              } | j                          t	        j                  t              } | j                          y r   )r	   r  r   r   r
   )r;   s    r   test_interact_callr    s2    AHHJq!AHHJr   c                     d }  t        j                  d      j                  d      | d      j                  }|j                  dk(  sJ  t	        j                  d      j                         d      j                  |       }|j                  dk(  sJ   t        d             j                  d      |       j                  }|j                  dk(  sJ y )Nc                     | S r   r   r   s    r   r   z test_interact_options.<locals>.f  s    r   Fr	  T   r   )r	   rq   r  r
  r
   )r   r;   s     r   test_interact_optionsr    s    ;&..d.;ADKKA88t7u-557"=DDQGA88u-2   -a077A88tr   c                      t        j                  t              5  t        j                  d       d d d        y # 1 sw Y   y xY w)Nr   )r   )r   r   r   r	   rq   r   r   r   test_interact_options_badr    s1    	z	" $U#$ $ $s	   :Ac                      t         j                  }  | ddd      }t        || ddd       d|_        d|_        t        || ddd       d|_        d|_        d|_        d	|_        t        || ddd       d
|_        t        || d
dd       d|_        t        || ddd       d|_        t        || ddd       t        j                  t              5  d|_        d d d        t        j                  t              5  d|_        d d d         | ddd      }t        |ddd        | ddd      }t        |d       t        j                  t              5   | dd       d d d        y # 1 sw Y   xY w# 1 sw Y   txY w# 1 sw Y   y xY w)N)r      r      r>   r\   r]   r2   r>   r\   r]   rY   )r   rY   r   r  )r   r   )rf   r  )r   r     r   r\   r]   r>   r   r   )}      r>   r   r\   r]   )rG   IntRangeSliderrA   upperr]   r\   lowerr>   r   r   r   )irswr;   s     r   test_int_range_logicr+    sp   !!D6qa(AFq9AGAEFq9AEAEAGAGFq9AGFq9AGFq9AGFq9	z	" 	z	"  	(Aq/#Z0A*%	z	"     s$   E,=E8F,E58FFc                     t         j                  }  | ddd      }t        || ddd       d|_        d|_        d|_        d|_        t        || ddd       d|_        t        || ddd       d	|_        t        || d	dd       d|_        t        || d
dd       t        j                  t              5  d|_        d d d        t        j                  t              5  d|_        d d d         | ddd      }t        |dd       t        j                  t              5   | dd       d d d        y # 1 sw Y   xxY w# 1 sw Y   [xY w# 1 sw Y   y xY w)N)皙?皙?rX   333333?r  r   r-  r.  )rX   rZ   )g      ?r/  )r-  r/  gffffff?gr   rY   )g@g      @r"  g       @g      @r&  rZ   )rG   FloatRangeSliderrA   r\   r]   r)  r(  r>   r   r   r   )frswr;   s     r   test_float_range_logicr2    s8   ##D8,AH""=AEAEAGAGH""=AGH""=AGH""=AGH""=	z	" 	z	"  	,A#	z	"     s$   6D5E!E5D>E
Ec                     t         j                  }  |        }t        |t                      t	        j
                  t              5  d|_        d d d        t        |t                       | dgdg      }t        || dd       t	        j
                  t              5  |j                  dz   |_        d d d        t        |d       |j                  d	z   |_        t        |d
d       d|_        t        |d       ddi|_        t        |ddi       d|_        t	        j
                  t              5  d|_        d d d        t        |d       y # 1 sw Y   	xY w# 1 sw Y   xY w# 1 sw Y   0xY w)Nr%  )r   r   r   r   )rq   r>   )r   )r4  )r2   r>   rq   )r   r   )r4  r5  r   )r   r   )rq   )	rG   SelectMultiplerA   rw   r   r   r   r>   rq   )smwr;   s     r   test_multiple_selectionr8  5  s;   

 
 C 	A%'" 
z	" %'" 	VHQC(A4; 
z	" !''D.!$ 		I%AIO26 AG&! AAIQqE" AI	z	" D"; ! !$ s$   EE"7E.E"E+.E7c                      d} t        t        |       }|j                  d   }t        |t        j
                  d|        y rK   )r   ru   rC   rA   rG   rP   rQ   s      r   test_interact_noinspectr:  \  s7    ADAA	

1ALLr   c                      ddl m}  ddlm  G fdd|       } |       }t	        d |      }|j                          |j                  dk(  sJ y )	Nr   )ValueWidgetUnicodec                   6    e Zd Z W  d      Z W         Zd Zy)*test_get_interact_value.<locals>.TheAnswer	TheAnswerc                      y)N*   r   r   s    r   get_interact_valuez=test_get_interact_value.<locals>.TheAnswer.get_interact_valuem  s    r   N)r   r   r   _model_namerD   rD  r=  s   r   rA  r@  j  s    k*i	r   rA  c                     | S r   r   r   s    r   <lambda>z)test_get_interact_value.<locals>.<lambda>p  s    a r   rG  rC  )ipywidgets.widgetsr<  	traitletsr>  r   r   result)r<  rA  r;   r#   r>  s       @r   test_get_interact_valuerL  g  sC    .!K 
 	AK1%AHHJ88r>>r   c            	         ddl m} m} dd l}dd l} |        } |j
                  d      }t        t        j                  j                  t        j                  j                  t        j                  j                  t                    dd            5 }|j                  |      }d d d        |j                  |       y # 1 sw Y   xY w)Nr   )ri   r   T)drop_defaultsz../../zstate.schema.json)rI  ri   r   json
jsonschemaget_manager_stateopenospathjoindirnamerealpath__file__loadvalidate)ri   r   rO  rP  sstater   schemas           r   test_state_schemar^  t  s    4A$F$$48E	bggll277??277+;+;H+EFRef	g kl1v& s   C  C	c                     t        t              } t        | j                        dk(  sJ t	        | dt
        j                  idt
        j                  idt
        j                  idt
        j                  it
        j                  t        j                  t        j                  t        j                  ddt        j                  t        j                  t        j                  fd       y )Nr  r2   )r   r   r    )r2   rq   rr   rs   r(   )r   r)   rh   rC   rI   rG   rP   rT   IntText	FloatTextrv   r   r   r   r    )r#   s    r   test_type_hintsrb  ~  s    AAqzz?a	',,
'""
#'//
"'##
$##yy


  8 %		5;;

C	
r   )Fr  unittest.mockr   rS  enumr   r   r   r   
ipywidgetsrG   rJ  r   r   r	   r
   r   r   r   r   r   r   r   boolr8   r9   r)   r+   fixturer,   r0   rA   rI   rR   rU   rd   rj   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r+  r2  r8  r:  rL  r^  rb  r   r   r   <module>rh     sV   %  	  #   '5 5	D 	 	 	# 	% 	E 	d 	 	 i
(

.
0$$$(!"$ $"$$:
 


$4$8( &(

$D:%#N'r   