Your IP : 216.73.216.196


Current Path : /opt/alt/python310/lib64/python3.10/tkinter/test/test_ttk/__pycache__/
Upload File :
Current File : //opt/alt/python310/lib64/python3.10/tkinter/test/test_ttk/__pycache__/test_widgets.cpython-310.pyc

o

0�i��@s8ddlZddlZddlmZmZddlmZmZddlZddlm	Z	ddl
mZmZm
Z
mZmZddlmZmZmZmZmZmZmZed�Gdd	�d	e�ZGd
d�deej�ZGdd
�d
ee�Zee�Gdd�deej��Zee�Gdd�deej��ZGdd�de�Zee�Gdd�deej��Zee�Gdd�deej��Z ee�Gdd�deej��Z!eee�Gdd�deej��Z"eee�Gdd�de"ej��Z#eee�Gdd�deej��Z$ee�Gd d!�d!eej��Z%Gd"d#�d#eej�Z&ee�Gd$d%�d%eej��Z'ee�Gd&d'�d'eej��Z(e�)ej*d(kd)�ee�Gd*d+�d+eej���Z+eee�Gd,d-�d-eej��Z,eee�Gd.d/�d/e"ej��Z-ee�Gd0d1�d1eej��Z.ee�Gd2d3�d3eej��Z/ee�Gd4d5�d5eej��Z0Gd6d7�d7eej�Z1e e!e#e"eeee&e,e$e(e%e'e+e/e0e-e.ee1fZ2e3d8k�r�e�4�dSdS)9�N)�ttk�TclError)�requires�
gc_collect)�
MockTclObj)�AbstractTkTest�tcl_version�get_tk_patchlevel�simulate_mouse_click�AbstractDefaultRootTest)�add_standard_options�noconv�AbstractWidgetTest�StandardOptionsTests�IntegerSizeTests�PixelSizeTests�setUpModuleZguic@s$eZdZdd�Zdd�Zdd�ZdS)�StandardTtkOptionsTestscCs\|��}|�|dd�d}t�dkrd}|j|dd|d�|jdd�}|�|dd�dS)	N�class��"attempt to change read-only option���rZbeta��"Attempt to change read-only option�Foo��errmsg�Zclass_)�create�assertEqualr	�checkInvalidParam��self�widgetrZwidget2�r&�I/opt/alt/python310/lib64/python3.10/tkinter/test/test_ttk/test_widgets.py�test_configure_classs
z,StandardTtkOptionsTests.test_configure_classcs����}t�dkr�fdd�}nd}�j|ddd|d��j|ddd	|d��j|dd
d
|d��j|ddd|d��j|ddd|d���|dd
��j|dddd�dS)N)rr�cs��|t�ttt|��S�N)�assertIsInstance�tuple�map�str)�value�r$r&r'�padding_conv szDStandardTtkOptionsTests.test_configure_padding.<locals>.padding_conv�paddingr)r)�expected�conv�)r5)r5r)r5r�)r5rr6r)Z5pZ6pZ7pZ8pr&r�r3)r r	�
checkParam)r$r%r1r&r0r'�test_configure_paddings"

�
�
�z.StandardTtkOptionsTests.test_configure_paddingcCsj|��}|�|dd�d}t|d�rdt|d���}|j|dd|d�|jdd�}|�|d	d�dS)
N�stylerzLayout Foo not found�default_orientzLayout %s.Foo not foundrrrr)r r!�hasattr�getattr�titler"r#r&r&r'�test_configure_style0s
�
�z,StandardTtkOptionsTests.test_configure_styleN)�__name__�
__module__�__qualname__r(r9r?r&r&r&r'rs
rcs0eZdZdZ�fdd�Zdd�Zdd�Z�ZS)�
WidgetTestz,Tests methods available in every ttk widget.cs,t���tj|jddd�|_|j��dS)NrZText)�width�text)�super�setUpr�Button�rootr%�packr0��	__class__r&r'rGBs
zWidgetTest.setUpcCs�|j��|�|j�t|j��d�t|j��d��d�|�|j�dd�d�|�tj	|jjdd�|�tj	|jjdd�|�tj	|jjdd�dS)N��label���rr5)
r%�updater!�identify�int�winfo_width�winfo_height�assertRaises�tkinterrr0r&r&r'�
test_identifyGs

��zWidgetTest.test_identifycCsB|�|j��d�|�|j�dg�d�|�|j�dg�d�|�|j�dg�d�|�|j�ddg�d�|�|j�ddg�d�|�|j�ddg�d�dd	�}|�|jjdg|d
fiddi��d
ddif�|j��}|�tj|jjd
g�|�tj|jjdd
g�|�||j���|j�ddg�|�|j��d�dS)Nr&�	!disabledT�disabled)rX�active)z!activerYc[s||fSr*r&)Zarg1�kwr&r&r'�test_cbcsz-WidgetTest.test_widget_state.<locals>.test_cb�hi�msgZthereZbadstate)rZ)r!r%�stateZinstaterUrVr)r$r\Z	currstater&r&r'�test_widget_stateSs6���
�
��zWidgetTest.test_widget_state)r@rArB�__doc__rGrWr`�
__classcell__r&r&rKr'rC?s
rCc@seZdZeZdS)�AbstractToplevelTestN)r@rArBr
�_conv_pixelsr&r&r&r'rcwsrcc@�eZdZdZdd�ZdS)�	FrameTest)	�borderwidthr�cursor�heightr2�reliefr:�	takefocusrDcK�tj|jfi|��Sr*)r�FramerI�r$�kwargsr&r&r'r ��zFrameTest.createN�r@rArB�OPTIONSr r&r&r&r'rf{srfc@�(eZdZdZdd�Zdd�Zdd�ZdS)	�LabelFrameTest)
rgrrhri�labelanchor�labelwidgetr2rjr:rkrE�	underlinerDcKrlr*)rZ
LabelFramerIrnr&r&r'r �rpzLabelFrameTest.createcCsB|��}|j|ddddddddd	d
ddd
dd�|�|dd�dS)Nru�eZenZes�n�neZnw�sZse�sw�wZwnZwsz!Bad label anchor specification {}r�center)r �checkEnumParamr"�r$r%r&r&r'�test_configure_labelanchor�s�z)LabelFrameTest.test_configure_labelanchorcCs8|��}tj|jddd�}|j|d|dd�|��dS)NZMuppZfoo)rE�namervz.foor7)r r�LabelrIr8�destroy)r$r%rNr&r&r'�test_configure_labelwidget�sz)LabelFrameTest.test_configure_labelwidgetN)r@rArBrrr r�r�r&r&r&r'rt�s
rtc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�AbstractLabelTestcCs�tj|jdd�}tj|jdd�}|j|||dd�|j||ddd�|j|||fdd�|j|||d|fdd�|j||ddd�|j||d	d
d�dS)N�image1)�masterr��image2)r�r7rZ)r�rZr�zimage1 active image2�spamzimage "spam" doesn't existr)rVZ
PhotoImagerIr8r")r$r%r��imager�r&r&r'�checkImageParam�s�
�

�z!AbstractLabelTest.checkImageParamcCsPd��}dd�|dd���d|d��}|��}|j|dg|�Rd|i�dS)Nz,none text image center top bottom left rightzbad compound "{}": must be z, rOz, or �compoundr)�split�joinr r)r$Zoptionsrr%r&r&r'�test_configure_compound�s���z)AbstractLabelTest.test_configure_compoundcC�|��}|�|dddd�dS)Nr_rZrY�normal�r ZcheckParamsr�r&r&r'�test_configure_state��z&AbstractLabelTest.test_configure_statecCr�)NrDi�in���rr�r�r&r&r'�test_configure_width�r�z&AbstractLabelTest.test_configure_widthN)r@rArBr�r�r�r�r&r&r&r'r��s

	r�c@s$eZdZdZeZdd�Zdd�ZdS)�	LabelTest)�anchor�
backgroundrgrr�rh�font�
foregroundr��justifyr2rjr_r:rkrE�textvariablerwrDZ
wraplengthcKrlr*)rr�rIrnr&r&r'r �rpzLabelTest.createcCs|��}|�|dd�dS)Nr�z3-Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-*�r r8r�r&r&r'�test_configure_font�s�zLabelTest.test_configure_fontN)r@rArBrrr
rdr r�r&r&r&r'r��s
r�c@rs)	�
ButtonTest)r�commandr�rh�defaultr�r2r_r:rkrEr�rwrDcKrlr*)rrHrIrnr&r&r'r �rpzButtonTest.createcCr�)Nr�r�rZrY�r rr�r&r&r'�test_configure_default�r�z!ButtonTest.test_configure_defaultcs2g�tj|j�fdd�d�}|��|���dS)Nc�
��d�S�N���appendr&��successr&r'�<lambda>��
z(ButtonTest.test_invoke.<locals>.<lambda>�r�)rrHrI�invoke�
assertTrue)r$Zbtnr&r�r'�test_invoke�szButtonTest.test_invokeN)r@rArBrrr r�r�r&r&r&r'r��s
r�c@s8eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�CheckbuttonTest)rr�r�rhr��offvalue�onvaluer2r_r:rkrEr�rw�variablerDcKrlr*)r�CheckbuttonrIrnr&r&r'r �rpzCheckbuttonTest.createcC� |��}|�|ddddd�dS)Nr�r��ffffff@r�
any stringr�r�r&r&r'�test_configure_offvalue��z'CheckbuttonTest.test_configure_offvaluecCr�)Nr�r�r�rr�r�r�r&r&r'�test_configure_onvalue�r�z&CheckbuttonTest.test_configure_onvaluecs�g��fdd�}tj|j|d�}|�|��d�|�tj|jj	|d�|�
�}|�|d�|�|d|j�	|d��|���d|d	<|�
�}|�t
|��|�t��d
�|�|d|j�	|d��dS)Nc���d�dS�Nr��cb test calledr�r&r�r&r'�cb_test�
z,CheckbuttonTest.test_invoke.<locals>.cb_testr�)Z	alternater�r�r�rr�r�r�)rr�rIr!r_rUrVr�tk�globalgetvarr�r��assertFalser.�assertLessEqual�len)r$r��cbtn�resr&r�r'r�s(�
�

�zCheckbuttonTest.test_invokecCs�g}g}td�D]&}t�|j�}|��|�|�dD]}tj||d�}|��|�|�qqdd�|D�}t|�|�t	t
|��d|�dS)NrMZAB�rEcSsg|]}t|d��qS)r�)r.)�.0�br&r&r'�
<listcomp>(sz9CheckbuttonTest.test_unique_variables.<locals>.<listcomp>�)�rangerrmrIrJr�r��printr!r��set)r$ZframesZbuttons�i�f�jr�Z	variablesr&r&r'�test_unique_variabless
�z%CheckbuttonTest.test_unique_variablesN)	r@rArBrrr r�r�r�r�r&r&r&r'r��s	r�cs�eZdZdZejdkr
dndZ�fdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Z�ZS)�	EntryTest)r�rrh�exportselectionr�r��invalidcommandr��showr_r:rkr��validate�validatecommandrD�xscrollcommand�darwinzEntry.field�textareac�t���|��|_dSr*)rFrGr �entryr0rKr&r'rG8�
zEntryTest.setUpcKrlr*)rZEntryrIrnr&r&r'r <rpzEntryTest.createcC�|��}|�|d�dS)Nr��r ZcheckCommandParamr�r&r&r'�test_configure_invalidcommand?�z'EntryTest.test_configure_invalidcommandcCs6|��}|�|dd�|�|dd�|�|dd�dS)Nr��*r� r�r�r&r&r'�test_configure_showCszEntryTest.test_configure_showcCr�)Nr_rYr��readonlyr�r�r&r&r'r�I��zEntryTest.test_configure_statec
C�$|��}|�|ddddddd�dS)Nr��all�key�focusZfocusinZfocusout�noner�r�r&r&r'�test_configure_validateNs�z!EntryTest.test_configure_validatecCr�)Nr�r�r�r&r&r'�test_configure_validatecommandSr�z(EntryTest.test_configure_validatecommandcCs>|�|j�d��|�tj|jjd�|�tj|jjd�dS)NrZnoindex)�assertIsBoundingBoxr��bboxrUrVrr0r&r&r'�	test_bboxWszEntryTest.test_bboxcCs�|j��|j��|�|j�dd�|j�|�|j�dd�d�|�tj|jjdd�|�tj|jjdd�|�tj|jjdd�dS)Nr5rOr)	r�rJrPr!rQ�IDENTIFY_ASrUrVrr0r&r&r'rW\s

zEntryTest.test_identifycs�g��fdd�}d|jd<dd�|jd<||jd<|j��|���d|jd<|j��|�t��d	�||jd<d
d�|jd<|j��|�t��d	�d|jd<|j��|�t��d	�d|jd<|�tj|jj�dS)Ncr��NTr�r&r�r&r'r�jr�z3EntryTest.test_validation_options.<locals>.<lambda>r�r�cS�dS)NFr&r&r&r&r'r�m�r�r�rr�cSr�r�r&r&r&r&r'r�xr�T)r�r�r�r!r�rUrVr)r$Ztest_invalidr&r�r'�test_validation_optionshs&










z!EntryTest.test_validation_optionscsrg��fdd�}d|jd<|j�|�df|jd<|j�dd�|j�dd	�|��d
dg�|�|j��d	�dS)Ncs6d|��krdksn��d�dS��d�dS�N�a�zFT)�lowerr�)Z	to_insert�Z
validationr&r'r��s


z+EntryTest.test_validation.<locals>.validater�r�z%Sr��endr�r�FT)r��register�insertr!�get�r$r�r&r�r'�test_validation�s
zEntryTest.test_validationcCs�dd�}|j�|�df|jd<|j�dd�|�|j��d�|�|j��d�|j�d	d�|�|j��d
�|j�dd�|�|j��d�|�|j��d
�|j�d�|�|j��d�|�|j��d�dS)NcSs2|D]}d|��krdksdSdSqdSr�)r�)ZcontentZletterr&r&r'r��s��z-EntryTest.test_revalidation.<locals>.validatez%Pr�r�ZavocadoTr&rrZa1bF)�invalidr�)r�r�rr!r�r_�deleterrr&r&r'�test_revalidation�szEntryTest.test_revalidation)r@rArBrr�sys�platformr�rGr r�r�r�r�r�r�rWr�rrrbr&r&rKr'r�-sr�csbeZdZdZejdkr
dndZ�fdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
�ZS)�ComboboxTest)r�rrhr�r�r�rir�r��postcommandr�r_r:rkr�r�r��valuesrDr�r�zCombobox.buttonr�cr�r*)rFrGr �combor0rKr&r'rG�r�zComboboxTest.setUpcKrlr*)r�ComboboxrIrnr&r&r'r �rpzComboboxTest.createc
Cr�)Nri�d������LY@�fffff�Y@���rZ1ir�r�r&r&r'�test_configure_height��z"ComboboxTest.test_configure_heightcCsj|j��}|dd}}tjdkr|�|j�||�d�|jjd||d�|jjd||d�|j��dS)Nr5r��
.*downarrow\Z�<ButtonPress-1>��x�y�<ButtonRelease-1>)rrSrr�assertRegexrQ�event_generate�update_idletasks)r$rDrrr&r&r'�_show_drop_down_listbox�s

z$ComboboxTest._show_drop_down_listboxcszg�dg|jd<|j�d�fdd��|j��|j��|j��}|��|j��|j�d�|j��|���dS)Nr�rz<<ComboboxSelected>>cr�r�r���evtr�r&r'r��r�z1ComboboxTest.test_virtual_event.<locals>.<lambda>z<Return>)r�bindrJrPrTrrr�)r$rir&r�r'�test_virtual_event�s
�




zComboboxTest.test_virtual_eventcsbg��fdd�|jd<|j��|j��|��|���d|jd<|��|�t��d�dS)Ncr�r�r�r&r�r&r'r��r�z9ComboboxTest.test_configure_postcommand.<locals>.<lambda>r
rr�)rrJrPrr�r!r�r0r&r�r'�test_configure_postcommand�s



z'ComboboxTest.test_configure_postcommandcs��fdd�}���jdtdkrdnd�|dd��j�jddd	d
����jdd	����jdd����jdd�gd��jd<�j�d
�|d
d��j�d�|dd��j�d�|dd��j�d�d�jd<|dd��jjgd�d����jd�jr�dnd�gd��jd<���jd�jr�dnd�gd��jd<���jd�jr�dnd���t	j
�jjt�jd����t	j
�jjd�tj
�jgd�d�}��|d�jr�dnd�|��dS)Ncs(���j��|����j��|�dSr*)r!rr�current)ZgetvalZcurrvalr0r&r'�check_get_current�sz=ComboboxTest.test_configure_values.<locals>.check_get_currentr�rr5r&rrO�mon tue wed thur�ZmonZtueZwedZthurr7��*g��Q�	@rr��r�r��cr+rMrr��d)r�rMrr�r�rrM�r��1r�2�1 {} 2�za bza	bza
b�{a b} {a	b} {a
b}�za\tbz"a"z} {�a\\tb {"a"} \}\ \{�r�rMr�r0r1r�1 2 {})r!rrr8r�r#�	configure�wantobjectsrUrVrr�rr
rIr�)r$r$Zcombo2r&r0r'�test_configure_values�sZ�
�





�
�
��
�z"ComboboxTest.test_configure_values)r@rArBrrrrr�rGr rrr!r"r<rbr&r&rKr'r	�s	r	csXeZdZdZ�fdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Z�ZS)�PanedWindowTest)rrhri�orientr:rkrDcr�r*)rFrGr �panedr0rKr&r'rG2r�zPanedWindowTest.setUpcKrlr*)rZPanedWindowrIrnr&r&r'r 6rpzPanedWindowTest.createcCsd|��}|�t|d�d�d}t�dkrd}|j|dd|d�|jdd�}|�t|d�d�dS)	Nr>�verticalrrr�
horizontalr)r>)r r!r.r	r"r#r&r&r'�test_configure_orient9s

�z%PanedWindowTest.test_configure_orientcCst�|j�}t�|�}|�tj|jj|�|��|��t�|j�}t�|�}|�tj|jj|�|��|��t�|j�}|j�|�|�tj|jj|�t�|j�}|j�|�|�	|j�
d�|j�
d��|�tj|jj
d�|��|��|�tj|jj
d�dS)Nrr�rM)rr�r?rUrVr�addr�rIr!�pane)r$rN�childZ
good_childZother_childr&r&r'�test_addDs(

zPanedWindowTest.test_addcCs`|�tj|jjd�|�tj|jjd�|j�t�|j��|j�d�|�tj|jjd�dS)Nr)	rUrVrr?�forgetrCrr�rIr0r&r&r'�test_forget_s
zPanedWindowTest.test_forgetcCst|�tj|jjdd�|�tj|jjdd�|�tj|jjdd�t�|j�}t�|j�}t�|j�}|�tj|jjd|�|j�d|�|j�d|�|�|j�	�t
|�t
|�f�|j�d|�|�|j�	�t
|�t
|�f�|j�d|�|�|j�	�t
|�t
|�t
|�f�|j�	�}|j�d|�|�||j�	��|j�||�|�|j�	�t
|�t
|�t
|�f�dS)Nrr�)rUrVrr?rrr�rIr!�panesr.)r$rE�child2�child3rIr&r&r'�test_insertgs.�
�zPanedWindowTest.test_insertcCs�|�tj|jjd�t�|j�}|j�|�|�	|j�d�t
�|�|jjddd�|jr.dnd�|�|j�dd�|jr>dnd�|�|j�d�|j�t
|���|jtj|jjddd�dS)Nr��weight�0rNZ	somevalue)Z	badoption)rUrVrr?rDrr�rIrCr+�dictr!r;r.)r$rEr&r&r'�	test_pane�s�� 
�zPanedWindowTest.test_panecCs�|�tj|jjd�|�tj|jjd�|�tj|jjd�tj|jdd�}|jj|dd�|�tj|jjd�tj|jdd�}|j�|�|�tj|jjd�|jjdd	d
�|j�d�}|j�dd�|�	||j�d��|�
|j�d�t�dS)Nrrr�r�r�rMr�TZboth)�expandZfilli�)rUrVrr?Zsashposrr�rCrJ�assertNotEqualr+rR)r$rErJZcurr_posr&r&r'�test_sashpos�szPanedWindowTest.test_sashpos)
r@rArBrrrGr rBrFrHrLrQrTrbr&r&rKr'r=+s"r=c@rs)	�RadiobuttonTest)rr�r�rhr�r2r_r:rkrEr�rwr/r�rDcKrlr*)r�RadiobuttonrIrnr&r&r'r �rpzRadiobuttonTest.createcCr�)Nr/r�r�rr�r�r�r&r&r'�test_configure_value�r�z$RadiobuttonTest.test_configure_valuecs6g��fdd�}t�|j�}tj|j||dd�}tj|j||dd�}|jr*dd�}nt}|��}|�|d�|�||d	�|�	��|�|�	�||j
�|d
���|���d|d<|��}|�t
|�d�|�t��d�|�||d	�|�	��|�|�	�||j
�|d
���|�t
|d
�t
|d
��dS)
Ncr�r�r�r&r�r&r'r��r�z6RadiobuttonTest.test_configure_invoke.<locals>.cb_testr)r�r�r/r�cS�|Sr*r&�rr&r&r'r��r�z7RadiobuttonTest.test_configure_invoke.<locals>.<lambda>r�r/r�rr�)rVZIntVarrIrrVr;rRr�r!rr�r�r�r.r�r�)r$r�Zmyvarr�Zcbtn2r4r�r&r�r'�test_configure_invoke�s8
�
�

�

� z%RadiobuttonTest.test_configure_invokeN)r@rArBrrr rWrZr&r&r&r'rU�s
rUc@rs)	�MenubuttonTest)rr�rh�	directionr��menur2r_r:rkrEr�rwrDcKrlr*)rZ
MenubuttonrIrnr&r&r'r �rpzMenubuttonTest.createc	Cs"|��}|�|dddddd�dS)Nr\ZaboveZbelow�left�right�flushr�r�r&r&r'�test_direction�s
�zMenubuttonTest.test_directioncCs4|��}tj|dd�}|j|d|td�|��dS)Nr])r��r4)r rVZMenur8r.r�)r$r%r]r&r&r'�test_configure_menu�sz"MenubuttonTest.test_configure_menuN)r@rArBrrr rarcr&r&r&r'r[�s
r[csheZdZdZeZdZ�fdd�Zdd�Zdd�Z	d	d
�Z
dd�Zd
d�Zdd�Z
dd�Zdd�Z�ZS)�	ScaleTest)rr�rh�from�lengthr>r:rk�tor/r�rAcs,t���|��|_|j��|j��dSr*)rFrGr �scalerJrPr0rKr&r'rGs


zScaleTest.setUpcKrlr*)rZScalerIrnr&r&r'r rpzScaleTest.createcCs"|��}|j|dddddd�dS)Nrer�������-@�333333.@Frb�r ZcheckFloatParamr�r&r&r'�test_configure_from
szScaleTest.test_configure_fromcCr�)Nrf�gffffff`@g33333�`@Z5i�r �checkPixelsParamr�r&r&r'�test_configure_lengthr�zScaleTest.test_configure_lengthc	C�$|��}|j|ddddddd�dS)Nrg�,rirj���Frbrkr�r&r&r'�test_configure_torzScaleTest.test_configure_toc	Crq)Nr/rrrirjrsFrbrkr�r&r&r'rWrzScaleTest.test_configure_valuecs�gd��|j�d�fdd��}d|jd<d|jd<d|jd	<|���gd��|jjd
dd�|jjd
dd�|jjdd�|���dS)N)r�r�r�z<<RangeChanged>>cs���Sr*)�popr�Zfailurer&r'r�sz-ScaleTest.test_custom_event.<locals>.<lambda>�
re�from_rrgrMr5)rxrgr���)rg)rhr r�r:)r$Zfuncidr&rvr'�test_custom_events



zScaleTest.test_custom_eventcCs�|jrdd�}nt}|j��}|�|j�|d�|jd�|�||j�dd��||jd��|�|j��|jd�d|jd<|�|j��|jd�|�tj|jjdd�|�tj|jjdd�dS)	NcSrXr*r&rYr&r&r'r�.r�z$ScaleTest.test_get.<locals>.<lambda>rrgrer/�r)	r;�floatrhrSr!rrUrVr)r$r4Zscale_widthr&r&r'�test_get,s

$
zScaleTest.test_getcCsz|jrdd�}nt}||jd�}|d}|j�|�|�||j���|�||jd�}|j�|d�|�||j���|�t�|j�}||jd<|�|d�|�||j���|���|�||j���|d�~t	�|d|jd	<|�||j���|d�|�||j���||jd	��|�||j�d
d
��|�|�||j�|j�
�d
��|�|�tj|jjd�dS)NcSrXr*r&rYr&r&r'r�?r�z$ScaleTest.test_set.<locals>.<lambda>rgrwrer�r�r5r/r)
r;r|rhr�r!rrVZ	DoubleVarrIrrSrUr)r$r4�maxZnew_max�min�varr&r&r'�test_set=s.

  zScaleTest.test_set)r@rArBrrr
rdr;rGr rlrprtrWrzr}r�rbr&r&rKr'rd�srdc@sHeZdZdZeZdZdd�Zdd�Zdd�Z	d	d
�Z
dd�Zd
d�ZdS)�ProgressbarTest)rrhr>rf�mode�maximumZphaser:rkr/r�rAcKrlr*)rZProgressbarrIrnr&r&r'r lrpzProgressbarTest.createcCr�)NrfgfffffY@g�����YL@Z2irnr�r&r&r'rpor�z%ProgressbarTest.test_configure_lengthc	Crq)Nr��fffff�b@������lS@rrsFrbrkr�r&r&r'�test_configure_maximumsrz&ProgressbarTest.test_configure_maximumcCs|��}|�|ddd�dS)Nr�ZdeterminateZ
indeterminater�r�r&r&r'�test_configure_modewsz#ProgressbarTest.test_configure_modecCsdSr*r&r0r&r&r'�test_configure_phase{sz$ProgressbarTest.test_configure_phasec	Crq)Nr/r�r�rrsFrbrkr�r&r&r'rWs
�z$ProgressbarTest.test_configure_valueN)
r@rArBrrr
rdr;r rpr�r�r�rWr&r&r&r'r�bsr�r�z"ttk.Scrollbar is special on MacOSXc@�eZdZdZdZdd�ZdS)�
ScrollbarTest)rr�rhr>r:rkr@cKrlr*)rZ	ScrollbarrIrnr&r&r'r �rpzScrollbarTest.createN�r@rArBrrr;r r&r&r&r'r��sr�cspeZdZdZ�fdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Z�ZS)�NotebookTest)rrhrir2r:rkrDcs\t���|jdd�|_t�|j�|_t�|j�|_|jj	|jdd�|jj	|jdd�dS)Nr�r2r�r�r�)
rFrGr �nbrr�rI�child1rJrCr0rKr&r'rG�s
zNotebookTest.setUpcKrlr*)rZNotebookrIrnr&r&r'r �rpzNotebookTest.createc	Cs4|j�d�|j�|j�|�tj|jj|j�|�	|j�
d�d�|j�|j�|�	|j�
d�d�|j�|j�|�
|j�d��|jj|jdd�|j��|j��tjdkr^d}nd	}|�	|j�|�|j�d��td
dd
�D]}z|jjd|dd�dkr�WdSWqttjy�Yqtw|�d
�dS)Nrr�r�r#r�r�r�z@20,5z@5,5r5rz@%d, 5zTab with text 'a' not found)r�rG�hiderJrUrVr�tabr�r!�indexrC�selectr�rJrPrrr��fail)r$Ztb_idxr�r&r&r'�test_tab_identifiers�s0


��z!NotebookTest.test_tab_identifierscCsd|�tj|jjd�|�tj|jjd�|�tj|jjd�|�tj|jjd�|jtj|jjt�|j�dd�|j�	�}|j�|j
�|j�|j
�|�|j�	�|�t�|j�}|jj|dd�|j�	�}|j�d�}|j�|j
�}|j�|j
�|j�|j
�|�|j�	�|�|�|j�|j
�|�|�t|j
�|j�	�|�|�|j�d�|d�dS)	NrOr]Zoption)�unknownr+r�r#r�)rUrVrr�r�rCrr�rI�tabsr�r!r�rJr.)r$r�rEZcurrZchild2_indexr&r&r'�test_add_and_hidden�s,�

z NotebookTest.test_add_and_hiddencCs�|�tj|jjd�|�tj|jjd�|�tj|jjd�|j��}|j�|j�}|j�|j�|�t	|j�|j���|�
t|�dt|j����|j�|j�|�
|j�|j�d�|�
||j�|j��dS)NrOr]r�)rUrVrr�rGr�r�r�ZassertNotInr.r!r�rCrS)r$r�Zchild1_indexr&r&r'rH�s
zNotebookTest.test_forgetcCs�|�tj|jjd�|�tj|jjd�|�|j�d�t�|�|j�|j�d�|�|j�|j	�d�|�|j�d�d�dS)NrOr�rr�rM)
rUrVrr�r�r+rRr!r�rJr0r&r&r'�
test_index�szNotebookTest.test_indexcCs�|j��}|j�d|d�|�|j��|d|df�|j�|j|j�|�|j��|�|j�d|j�|�|j��|d|df�|j�dd�|�|j��|�|�tj|jjd|d�|�tj|jjd|d�t	�
|j�}|j�d|�|�|j��|dt|�|df�|j�
|�|�|j��|�|j�|j|�|�|j��t|�f|�|j�
|�|�tj|jjd|�|�tj|jjd|�|�tj|jjdd�|�tj|jjdd�|�tj|jjdd�dS)Nr�rr�rMrO)r�r�rr!r�rJrUrVrrr�rIr.rG)r$r�rKr&r&r'rL�s0
$zNotebookTest.test_insertcs�|j��|j��g�g�|j�d�fdd��|j�d�fdd��|�|j��t|j��|j�|j�|�	��|�|j��t|j��|j��|�	��dS)Nz<Unmap>cr�r�r�rr�r&r'r�r�z*NotebookTest.test_select.<locals>.<lambda>z<<NotebookTabChanged>>cr�r�r�r)�tab_changedr&r'r�r�)
r�rJrPr�r r!r�r.rJr�r0r&)r�r�r'�test_selects


�

zNotebookTest.test_selectcCs�|�tj|jjd�|�tj|jjd�|�tj|jjd�|�|j�|j�t�|�|jj|jdd�d�|�|j�|jd�d�|jj|jdd�|�|jj|jdd�d�|�|j�|jd�d�dS)NrOZnotabr�r�rE�abc)	rUrVrr�r�r+r�rPr!r0r&r&r'�test_tab(szNotebookTest.test_tabcCsH|�t|j���d�|j�|j�|j�|j�|�|j��d�dS)NrMr&)r!r�r�r�rGr�rJr0r&r&r'�test_configure_tabs5sz NotebookTest.test_configure_tabscCs�|j��|j��|j�d�tjdkrdnd}|�|j�dd�|�t|jdd�|j�	�|j�
d�|�|j��t|j��|j�	�|j�
d�|�|j��t|j
��|j�	�|j�
d�|�|j��t|j��|jj|j
ddd	�|jj|jd
dd	�|j��|j�	�|�|j�dd�|�t|jdd�tjdkr�d}d}nd
}d}|j�
|�|�|j��t|j
��|j�
|�|�|j��t|j��dS)Nrr�r�rr5z
<Control-Tab>z<Shift-Control-Tab>r�)rErwrxz<Left>z<Right>z<Alt-a>z<Alt-e>)r�rJrPr�rrr!rQr
Zfocus_forcerr.rJr�r�Zenable_traversal)r$Zfocus_identify_asZbeginr�r&r&r'�test_traversal=s<







zNotebookTest.test_traversal)r@rArBrrrGr r�r�rHr�rLr�r�r�r�rbr&r&rKr'r��s	 
r�cs�eZdZdZejdkr
dndZ�fdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Z�ZS)�SpinboxTest)r�rr�rhr�r�r��formatre�	incrementr�r�r�r_r:rkr�rgr�r�rrD�wrapr�r�z
Spinbox.fieldr�cs"t���|��|_|j��dSr*)rFrGr �spinrJr0rKr&r'rGos

zSpinboxTest.setUpcKrlr*)r�SpinboxrIrnr&r&r'r trpzSpinboxTest.createcCsp|j��}|j��}|d}|dd}|�|j�||�d�|jjd||d�|jjd||d�|j��dS)Nr5rMz.*uparrow\Zrrr�r�rSrTrrQrr�r$rDrirrr&r&r'�_click_increment_arroww�

z"SpinboxTest._click_increment_arrowcCsp|j��}|j��}|d}|dd}|�|j�||�d�|jjd||d�|jjd||d�|j��dS)Nr5rMr�rrrrr�r�r&r&r'�_click_decrement_arrow�r�z"SpinboxTest._click_decrement_arrowcs�g��fdd�|jd<|j��|��|j��|���|��|�t��d�d|jd<|j��|��|��|j��|�t��d�dS)Ncr�r�r�r&r�r&r'r��r�z4SpinboxTest.test_configure_command.<locals>.<lambda>r�rMr)r�rPr�r�r�r!r�rr0r&r�r'�test_configure_command�s





z"SpinboxTest.test_configure_commandcC�bd|jd<d|jd<|j�d�|j��|��|�|j��d�|��|�|j��d�dS)Nrrer5rgr��5)r�r�rPr�r!rr0r&r&r'rt�s


zSpinboxTest.test_configure_tocCr�)Nr�rerwrgrMr0)r�r�rPr�r!rr0r&r&r'rl�s


zSpinboxTest.test_configure_fromcCs�d|jd<d|jd<d|jd<|j�d�|j��|��|�|j��d�d	|jd<|j��|��|�|j��d
�dS)Nrrerwrgr�r�r�r�rM�3)r�r�rPr�r!rr�r0r&r&r'�test_configure_increment�s





z$SpinboxTest.test_configure_incrementcCs�|j�d�d|jd<|j��|��|j��}|�t|�d�|�|�d�d�d|jd<|j��|��|j��}|�d|v�|�t|�d�dS)Nr�z%10.3fr�rw�.rr)	r�r�rPr�rr!r�r�r�)r$r/r&r&r'�test_configure_format�s





z!SpinboxTest.test_configure_formatcCs�d|jd<d|jd<|j�d�d|jd<|j��|��|�|j��d�|��|�|j��d�d	|jd<|j��|��|�|j��d�dS)
Nrwrgr�reTr��10r0F)r�r�rPr�r!rr�r0r&r&r'�test_configure_wrap�s





zSpinboxTest.test_configure_wrapcCsv|�|jdtdkrdnd�|j|jdddd�|�|jdd�|�|jdd�|�|jdd�gd	�|jd<|j�d
�|j��|��|�|j��d�|��|�|j��d
�|jj	gd�d
�|�|jd|j
rqdnd�gd�|jd<|�|jd|j
r�dnd�gd�|jd<|�|jd|j
r�dnd�tj|j
gd�d
�}|�|d|j
r�dnd�|��dS)Nrr%r&rr&r'r7r(r*r�r0r-r.r/r2r3r4r5r6r7r8r9)r!r�rr8r�rPr�rr�r:r;rr�rIr�)r$Zspin2r&r&r'r<�sH��

�
�
�
�z!SpinboxTest.test_configure_values)r@rArBrrrrr�rGr r�r�r�rtrlr�r�r�r<rbr&r&rKr'r�ds


r�cs�eZdZdZ�fdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Z�ZS)0�TreeviewTest)r�columnsrh�displaycolumnsrir2�
selectmoder�r:rkr�Zyscrollcommandcst���|jdd�|_dS)Nrr�)rFrGr �tvr0rKr&r'rGs
zTreeviewTest.setUpcKrlr*)rZTreeviewrIrnr&r&r'r  rpzTreeviewTest.createcCs:|��}|j|dddd�|�|dd�|�|dd�dS)Nr��a b c�r�r�r+r7rr�r�r&r&r'�test_configure_columns#s
�z#TreeviewTest.test_configure_columnscCs�|��}d|d<|j|dddd�|�|dd�|j|dddd�|�|dd	�|j|dd
dd�|j|dd
dd�|j|dddd�dS)Nr�r�r�zb a c)r�r�r+r7�#all)r�)rMr�r)r�r�r,zInvalid column index dr)r�rMrzColumn index 3 out of bounds)r�ryzColumn index -2 out of bounds)r r8r"r�r&r&r'�test_configure_displaycolumns*s&
�
�
�
�

�z*TreeviewTest.test_configure_displaycolumnsc	Cs8|��}|j|ddddddd�|j|ddd	td�dS)
NrirrrZ3cFrbrr)r ror
r�r&r&r'r:sz"TreeviewTest.test_configure_heightcCr�)Nr�r�ZbrowseZextendedr�r�r&r&r'�test_configure_selectmode?r�z&TreeviewTest.test_configure_selectmodecCs^|��}|j|dddd�|�|dd�|�|dd�|j|dddd�|j|ddd	d�dS)
Nr�z
tree headings)�tree�headingsr7)r�r�r�)r�r�)r�r�r�r&r&r'r�Ds
�z TreeviewTest.test_configure_showcCs�|j��|�|j�d�d�|j��|j�dd�}|j��}|�|�|j�|d�}|�|�dg|jd<|jj	ddd�|j�|dd�}|jj	ddd�}|j
sXt|�}|�|d|d|�|j�|d�}|�|j�|�d�dS)	Nrr�r�testr��2�rD�#0)r�rJr!r�rPr�get_childrenr�r��columnr;rR)r$�item_id�childrenr�Zbbox_column0Z
root_widthr�r&r&r'r�Ms"




zTreeviewTest.test_bboxcCs�|�|j��d�|j�dd�}|�|j��t�|�|j��d|�|j�dd�}|j�dd�}|j�|||�|�|j�|�||f�|�tj	|jj||�|j�|�|�|j�|�d�|j�d�|�|j��d�dS)Nr&rr�r)
r!r�r�rr+r,Zset_childrenrUrVr)r$r�rJrKr&r&r'�
test_childrenfs
�zTreeviewTest.test_childrencCs�|�|j�d�t�|jr|�|jjddd�t�|jjddd�|�|j�dd�|jr.dnd�|�|jjddd�|jr?dnd�|jtj	|jjddd�|�tj	|jjd�d	d
iddid
diddiddig}|D]}|jtj	|jjdfi|��qkdS)Nr�r�rwrDr��X��idrZunknown_optionz
some valueZstretchZwrongr�Zminwidth)
r+r�r�rPr;rRr!rUrVr)r$Zinvalid_kwsr[r&r&r'�test_column�s(�����zTreeviewTest.test_columncCs�|�tj|jjd�|j�dd�}|j�|d�}|�|j��|f�|�|j�|�|f�|j�|�|�|j���|�tj|jj	|dd�|j�dd�}|j�dd�}|�|j��||f�|j�||�|�|j���dS)Nr�rr�)
rUrVrr�rrr!r�r��reattach)r$r��item2�item1r&r&r'�test_delete�s�zTreeviewTest.test_deletecCs�|j�dd�}|j�|d�}|j��}|j��|�||j���|�|j��|f�|�|j�|�|f�|j�|�|�|j���|j�|dd�|�|j��|f�|�|j�|�|f�|j�|dd�|�|j��||f�|�|j�|�d�|�t	j
|jjddd�|�t	j
|jjd�|�t	j
|jj|dd�|�t	j
|jj|dd�|j�||�|�|j��d�|�|j�|�d�dS)Nrr�r&ZnonexistentZotherparentr)r�rr��detachr!r�r��moverUrVr)r$r�r��prevr&r&r'�test_detach_reattach�s<

����z!TreeviewTest.test_detach_reattachcCsT|�|j�d�d�|�|j�d�d�|�|j�i�d�|�tj|jjd�dS)NZ	somethingFrT)r!r��existsrUrVrr0r&r&r'�test_exists�szTreeviewTest.test_existscCst|�|j��d�|j�dd�}|j�|�|�|j��|�|j�|�|�|j��d�|�tj|jjd�dS)Nrr�r])r!r�r�rrrUrVr)r$r�r&r&r'�
test_focus�szTreeviewTest.test_focuscCs�|�|j�d�t�|jjddd�|�|j�dd�d�|�|jjddd�d�|jtj|jjddd�|jtj|jjddd�dS)Nr�r]r�rE)r�r�)r�)r+r��headingrPr!rUrVrr0r&r&r'�test_heading�s�
�zTreeviewTest.test_headingcs��fdd�}g��j���jjd�fdd�d��jjddd��j��|d	d	��s2��d
�g��jjj}�jjdt�jjddd��d���	|�jjj�|d	d	��s`��d
�dSdS)NcsNtdkr���j�|�d����j�||�d�t�j||��j��dS)N)rrr�r�)rr!r�Zidentify_columnZidentify_regionr
rPrr0r&r'�simulate_heading_clicks
zBTreeviewTest.test_heading_callback.<locals>.simulate_heading_clickr�cr�r�r�r&r�r&r'r�
r�z4TreeviewTest.test_heading_callback.<locals>.<lambda>r�rr�r5z>The command associated to the treeview heading wasn't invoked.)
r�rJr�r�rPr�r�Z_tclCommandsr.r!)r$r�Zcommandsr&)r$r�r'�test_heading_callbacks"




 
�z"TreeviewTest.test_heading_callbackcCsL|�tj|jjd�|�|j�d�d�|j�dd�}|j�dd�}|j�|d�}|j�|d�}|�|j�|�d�|�|j�|�d�|�|j�|�d�|�|j�|�d�|j�|dd�|�|j�|�d�|�|j�|�d�|j�|�|�|j�|�d�|j�|�|�|j�|�d�|j�	|�|�tj|jj|�dS)NZwhatrrr�r�)
rUrVrr�r�r!rr�r�r)r$r�r��c1�c2r&r&r'r�%s&zTreeviewTest.test_indexc	Cs~|�tj|jjdd�|jtj|jjdddd�|jtj|jjdddd�|�|j�|jjdddd���|�|j�|jjdddd���|�tj|jjdd�|j�ddd	�}|�|d	�|�tj|jjddd	�|�tj|jjddtd	��d
}|jjdd|fd�}|�|j�	|d�|j
r�|fn|�|�|jj	|dd�|j
r�|fn|�|jj	||j�|jj	|dd��d�|�|jj	|dd�|j
r�|fn|�|�
|j�	|�t�|jj	|dd�|�|jj	|dd��|jjddd
d|gd�}|�|jj	|dd�|j
�rdd|fnd|�|jj	|gd�|�|jj	|dd��|jj	|dd�|�|jj	|dd�|j
�r5dnd�|jjdddd||ffd�}|�|jj	|dd�|j
�r\dd||ffnd||f�|�|jj	|jjdddd�dd�d�|�|jj	|jjdd|d�dd�|�|j�ddd�}|�|d�|j�ddd�}|�|d�|�tj|jjddd�|�tj|jjddd�dS)Nr�r�r)�openZpleaseTFZmiddlez
first-itemuábar.rr�rM��tagsr0r1z1 2 %s�r�rM)r0r1z1 2r�z%s %sz{a b c} {%s %s}z
Label herer�rrOgz0.0)rUrVrr�rr�rr!r�itemr;rIZ	splitlistr+rP)r$Zitemidr/r�r&r&r'�test_insert_itemCs���  ����$���
�
�
��
��zTreeviewTest.test_insert_itemcCs�|�t|jjd�|�tj|jjd�|�tj|jjd�|�tj|jjd�|�tj|jj	d�|j�
dd�}|j�
dd�}|j�
|d�}|j�
|d�}|j�
|d�}|�|j��d�|j�||�|�|j��||f�|j�|�|�|j��|f�|j�||�|�|j��|||f�|j�|�|�|j��||||f�|j��|�|j��||||f�|j�||�|�|j��|||f�|j�|�|�|j��||f�|j��|�|j��||f�|j�	||�|�|j��||f�|j�	|�|�|j��|f�|j�	�|�|j��|f�|jj
dddd�|j�d�|�|j��d�|jj
ddd	d�|j�d	�|�|j��d
�|jj
dddd�|j�d�|�|j��d�|jj
ddd
d�|j�d
�|�|j��d�|j��|�|j��d�|j�||f�|�|j��||f�|j�||f�|�|j��|||f�|j�||f�|�|j��||f�|j�	||f�|�|j��||f�dS)Nr�r�rr�r&�with spacesr�)r��{brace)r��
unicode€)r�sbytes€)ubytes€)rU�	TypeErrorr�Z	selectionrVrZ
selection_setZ
selection_addZselection_removeZselection_togglerr!)r$r�r�r�r�Zc3r&r&r'�test_selection�sn



zTreeviewTest.test_selectioncCs�ddg|jd<|jjddddgd�}|�|j�|�ddd	��|j�|dd�|�|jj|dd�|jr5d
nd�dg|jd<|�|j�|�ddi�|j�|dd�|�|jj|dd�d�|�|jj|dd�|jrld
nd�|j�|dd�|�|j�|d�|jr�dnd�|�|jj|dd�|jr�dnd�|�|j�|�|jr�ddinddi�|�tj|jj|d�|�tj|jj|dd�|�tj|jjd�dS)N�A�Br�rr�r�r�r.)r�r�)r�r�za a)r�)r�r�zb a�{Z123)r�r�z123 aZnotme)	r�rr!r�r�r;rUrVr)r$r�r&r&r'r��s6�����zTreeviewTest.test_setc	s6g�|jjdddgd�}|jjdddgd�}|j�dd�fdd��|j�dd�fd	d��|j��|j��t�}t�}td
dd�D] }t|�d
krNn|j�|�}|rd||vrd|�	|�|�	|�qD|�
t|�d
�|D]	}t|jd
|�qo|�
t��d�t�ddd
��ddd
��D]}|�
|d�q�dS)Nrr�Zcallr�rcr�r�r�r�Zeventsr&r'r��r�z,TreeviewTest.test_tag_bind.<locals>.<lambda>rcr�)NrMr�rr�r&r'r��r�rrrwrMr�r�r�)
r�rZtag_bindrJrPr�r�r�Zidentify_rowrCr!r
�zip)	r$r�r�Zpos_y�foundr�r�rrr&r�r'�
test_tag_bind�s8

�

�



�"�zTreeviewTest.test_tag_bindcCs�|�t|jj�|jtj|jjddd�|jjddd�|�t|j�dd��d�|�t|jjddd��d�|�|j�d�t	�dS)Nr�Zblue)Zsky)r�r�)
rUr�r�Z
tag_configurerVrr!r.r+rPr0r&r&r'�test_tag_configures���zTreeviewTest.test_tag_configurecCs|jjddddgd�}|jjddddgd�}|�t|jj�|�t|jjdd�|�|j�d|��|�|j�d|��|�|j�d|��|�|j�d|��|�|j�d	|��|�|j�d	|��|�|j�d�|f�|�|j�d�|f�|�|j�d	�d
�dS)Nrr�zItem 1Ztag1)rEr�zItem 2Ztag2znon-existingZtag3r&)	r�rrUr�Ztag_hasrr�r�r!)r$r�r�r&r&r'�test_tag_has!szTreeviewTest.test_tag_has)r@rArBrrrGr r�r�rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rbr&r&rKr'r�s2	)
#LF  r�c@r�)�
SeparatorTest)rrhr>r:rkrAcKrlr*)rZ	SeparatorrIrnr&r&r'r 9rpzSeparatorTest.createNr�r&r&r&r'r�1sr�c@re)�SizegripTest)rrhr:rkcKrlr*)rZSizegriprIrnr&r&r'r DrpzSizegripTest.createNrqr&r&r&r'r�=sr�c@seZdZdd�Zdd�ZdS)�DefaultRootTestcC�|�tj�dSr*)�_test_widgetrrmr0r&r&r'�
test_frameJ�zDefaultRootTest.test_framecCr�r*)r�rr�r0r&r&r'�
test_labelMr�zDefaultRootTest.test_labelN)r@rArBr�r�r&r&r&r'r�Hsr��__main__)5ZunittestrVrrZtest.supportrrrZtest.test_ttk_textonlyrZtkinter.test.supportrrr	r
rZtkinter.test.widget_testsrr
rrrrrrZTestCaserCrcrfrtr�r�r�r�r�r	r=rUr[rdr�ZskipIfrr�r�r�r�r�r�r�Z	tests_guir@�mainr&r&r&r'�<module>s�$.8!?}3i"�
R0 


�
�