
    ڏDjP                         d dl mZmZmZ d dlmZ d dlmZmZm	Z	 d dl
mZ d dlZd dlmZ  G d de      Z G d	 d
e      Zy)    )create_args_parserparse_args_raw
parse_args)Options)backup_Optionsrestore_Optionscheck_global_options)TestCaseN)StringIOc                      e 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 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% Z'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-d, Z.d- Z/d. Z0d/ Z1d0 Z2d1 Z3d2 Z4d3 Z5d4 Z6d5 Z7d6 Z8d7 Z9d8 Z:d9 Z;d: Z<d; Z=d< Z>d= Z?d> Z@y?)@TestCythonizeArgsParserc                 R    t        j                  |        t               fd| _        y )Nc                     t        ||       S N)r   )xparsers     nC:\Crop_Prediction\Backend\crop-ai-system\venv\Lib\site-packages\Cython/Build/Tests/TestCythonizeArgsParser.py<lambda>z/TestCythonizeArgsParser.setUp.<locals>.<lambda>   s    .QWYZB[     )r
   setUpr   r   selfs    r   r   zTestCythonizeArgsParser.setUp   s    t+=+?[r   c                     g d}g d}|D ]8  }t        t        ||            dk7  s||vs!| j                  |dd|z           y |D ],  }t        ||      ||vs| j                  |dd|z           y y)	N)
directivescompile_time_envoptionsexcludes)
language_levelannotatebuildbuild_inplaceforcequietlenient
keep_goingno_docstringsparallelr    zFor option msgFT)lengetattrassertEqual)r   r   skipempty_containersare_noneopt_names         r   are_defaultz#TestCythonizeArgsParser.are_default   s    T
 ) 	H77H-.1xt7K  "-2H I	 ! 	H*6XT=Q  "-2H I	 r   c                     | j                  ddg      \  }}| j                  |       | j                  | j                  |dg             | j	                  |j
                  d   d       y )N-Xcdivision=Truer   	cdivisionTr   assertFalse
assertTruer2   r-   r   r   r   argss      r   test_directive_shortz,TestCythonizeArgsParser.test_directive_short&   s^    $0@)AB((<.AB++K8$?r   c                     | j                  ddg      \  }}| j                  |       | j                  | j                  |dg             | j	                  |j
                  d   d       y )Nz--directiver5   r   r6   Tr7   r:   s      r   test_directive_longz+TestCythonizeArgsParser.test_directive_long,   s^    -9I)JK((<.AB++K8$?r   c                    | j                  g d      \  }}| j                  |       | j                  | j                  |dg             | j	                  |j
                  d   d       | j	                  |j
                  d   d       y )N)r4   r5   r4   zc_string_type=bytesr   r6   Tc_string_typebytesr7   r:   s      r   test_directive_multiplez/TestCythonizeArgsParser.test_directive_multiple2   st    )^_((<.AB++K8$?++O<gFr   c                    | j                  ddg      \  }}| j                  |       | j                  | j                  |dg             | j	                  |j
                  d   d       | j	                  |j
                  d   d       y )Nr4   z"cdivision=True,c_string_type=bytesr   r6   Tr@   rA   r7   r:   s      r   test_directive_multiple_v2z2TestCythonizeArgsParser.test_directive_multiple_v29   sy    $0T)UV((<.AB++K8$?++O<gFr   c                     | j                  ddg      \  }}| j                  |       | j                  | j                  |dg             | j	                  |j
                  d   d       y )Nr4   zcdivision=YeSr   r6   Tr7   r:   s      r   test_directive_value_yesz0TestCythonizeArgsParser.test_directive_value_yes@   s]    $)@A((<.AB++K8$?r   c                     | j                  ddg      \  }}| j                  |       | j                  | j                  |dg             | j	                  |j
                  d   d       y )Nr4   zcdivision=nor   r6   Fr7   r:   s      r   test_directive_value_noz/TestCythonizeArgsParser.test_directive_value_noF   s]    $)?@((<.AB++K8%@r   c                     | j                  t              5 }| j                  ddg      \  }}d d d        y # 1 sw Y   y xY w)Nr4   zcdivision=sadfasdassertRaises
ValueErrorr   r   contextr   r;   s       r   test_directive_value_invalidz4TestCythonizeArgsParser.test_directive_value_invalidL   sC    z* 	Jg!__d4G-HIMGT	J 	J 	J   6?c                     | j                  t              5 }| j                  ddg      \  }}d d d        y # 1 sw Y   y xY w)Nr4   abracadabrarJ   rM   s       r   test_directive_key_invalidz2TestCythonizeArgsParser.test_directive_key_invalidP   sB    z* 	Dg!__dM-BCMGT	D 	D 	DrP   c                     | j                  t              5 }| j                  ddg      \  }}d d d        y # 1 sw Y   y xY w)Nr4   r6   rJ   rM   s       r   test_directive_no_valuez/TestCythonizeArgsParser.test_directive_no_valueT   sB    z* 	Bg!__dK-@AMGT	B 	B 	BrP   c                 J   g d}|D ]  \  }}dj                  |t        |            }| j                  d|g      \  }}| j                  |       | j	                  | j                  |dg      d|z          |dk(  rd	}| j                  |j                  |   |d|z           y )
N)
)auto_pickleTr@   	bytearray)r@   rA   )r@   strrX   )r@   unicode)c_string_encodingascii)r   2)r   3)set_initial_pathmy_initial_path{key}={value}keyvaluer4   r   Error for option: r)   r[   rZ   )formatrZ   r   r8   r9   r2   r-   r   )r   r   rd   re   cmdr   r;   s          r   test_directives_typesz-TestCythonizeArgsParser.test_directives_typesX   s    

 % 	]JC!((SE
(CC!__dC[9MGTT"OOD,,W|nEMabeMeOf	!W//4eCWX[C[\	]r   c                     g d}|D ]Z  \  }}dj                  |t        |            }| j                  t        d|z         5 }| j	                  d|g      \  }}d d d        \ y # 1 sw Y   gxY w)N))rW   *   )rW   NONONO)r@   bitesrb   rc   rf   r)   r4   )rg   rZ   rK   rL   r   )r   r   rd   re   rh   rN   r   r;   s           r   test_directives_wrongz-TestCythonizeArgsParser.test_directives_wrongo   s    

 % 	>JC!((SE
(CC"":5I#5M"N >RY!%$!=> >	>> >s   A%%A.	c                     | j                  ddg      \  }}| j                  |       | j                  | j                  |dg             | j	                  |j
                  d   d       y )N-E	MYSIZE=10r   MYSIZE
   r   r8   r9   r2   r-   r   r:   s      r   test_compile_time_env_shortz3TestCythonizeArgsParser.test_compile_time_env_short|   s_    $)<=((3E2FGH11(;R@r   c                     | j                  ddg      \  }}| j                  |       | j                  | j                  |dg             | j	                  |j
                  d   d       y )Nz--compile-time-envrq   r   rr   rs   rt   r:   s      r   test_compile_time_env_longz2TestCythonizeArgsParser.test_compile_time_env_long   s`    *>)LM((3E2FGH11(;R@r   c                    | j                  g d      \  }}| j                  |       | j                  | j                  |dg             | j	                  |j
                  d   d       | j	                  |j
                  d   d       y )N)rp   rq   rp   z
ARRSIZE=11r   rr   rs   ARRSIZE   rt   r:   s      r   test_compile_time_env_multiplez6TestCythonizeArgsParser.test_compile_time_env_multiple   sv    )PQ((3E2FGH11(;R@11)<bAr   c                    | j                  ddg      \  }}| j                  |       | j                  | j                  |dg             | j	                  |j
                  d   d       | j	                  |j
                  d   d       y )Nrp   zMYSIZE=10,ARRSIZE=11r   rr   rs   ry   rz   rt   r:   s      r   !test_compile_time_env_multiple_v2z9TestCythonizeArgsParser.test_compile_time_env_multiple_v2   s{    $0F)GH((3E2FGH11(;R@11)<bAr   c                     | j                  ddg      \  }}| j                  |       | j                  | j                  |dg             | j	                  |j
                  d   d       y )N-sdocstrings=Truer   
docstringsTr   r8   r9   r2   r-   r   r:   s      r   test_option_shortz)TestCythonizeArgsParser.test_option_short   \    $0A)BC((9+>?6=r   c                     | j                  ddg      \  }}| j                  |       | j                  | j                  |dg             | j	                  |j
                  d   d       y )Nz--optionr   r   r   Tr   r:   s      r   test_option_longz(TestCythonizeArgsParser.test_option_long   s\    *6G)HI((9+>?6=r   c                    | j                  g d      \  }}| j                  |       | j                  | j                  |dg             | j	                  |j
                  d   d       | j	                  |j
                  d   d       y )N)r   r   r   zbuffer_max_dims=8r   r   Tbuffer_max_dimsr   r:   s      r   test_option_multiplez,TestCythonizeArgsParser.test_option_multiple   sq    )]^((9+>?6=):;TBr   c                    | j                  ddg      \  }}| j                  |       | j                  | j                  |dg             | j	                  |j
                  d   d       | j	                  |j
                  d   d       y )Nr   z!docstrings=True,buffer_max_dims=8r   r   Tr   r   r:   s      r   test_option_multiple_v2z/TestCythonizeArgsParser.test_option_multiple_v2   sv    $0S)TU((9+>?6=):;TBr   c                     | j                  ddg      \  }}| j                  |       | j                  | j                  |dg             | j	                  |j
                  d   d       y )Nr   zdocstrings=YeSr   r   Tr   r:   s      r   test_option_value_yesz-TestCythonizeArgsParser.test_option_value_yes   s\    $0@)AB((9+>?6=r   c                     | j                  ddg      \  }}| j                  |       | j                  | j                  |dg             | j	                  |j
                  d   d       y )Nr   zdocstrings=4242r   r   Tr   r:   s      r   test_option_value_4242z.TestCythonizeArgsParser.test_option_value_4242   r   r   c                     | j                  ddg      \  }}| j                  |       | j                  | j                  |dg             | j	                  |j
                  d   d       y )Nr   zdocstrings=0r   r   Fr   r:   s      r   test_option_value_0z+TestCythonizeArgsParser.test_option_value_0   s[    $)?@((9+>?6>r   c                     | j                  ddg      \  }}| j                  |       | j                  | j                  |dg             | j	                  |j
                  d   d       y )Nr   zdocstrings=r   r   Tr   r:   s      r   test_option_value_emptystrz2TestCythonizeArgsParser.test_option_value_emptystr   s[    $)>?((9+>?6=r   c                     | j                  ddg      \  }}| j                  |       | j                  | j                  |dg             | j	                  |j
                  d   d       y )Nr   zdocstrings=BBr   r   Tr   r:   s      r   test_option_value_a_strz/TestCythonizeArgsParser.test_option_value_a_str   s[    $)@A((9+>?6=r   c                     | j                  ddg      \  }}| j                  |       | j                  | j                  |dg             | j	                  |j
                  d   d       y )Nr   zdocstrings=nOr   r   Fr   r:   s      r   test_option_value_noz,TestCythonizeArgsParser.test_option_value_no   s[    $)@A((9+>?6>r   c                     | j                  ddg      \  }}| j                  |       | j                  | j                  |dg             | j	                  |j
                  d   d       y )Nr   r   r   Tr   r:   s      r   test_option_no_valuez,TestCythonizeArgsParser.test_option_no_value   s[    $)=>((9+>?6=r   c                     | j                  ddg      \  }}| j                  |       | j                  | j                  |dg             | j	                  |j
                  d   d       y )Nr   rR   r   Tr   r:   s      r   test_option_any_keyz+TestCythonizeArgsParser.test_option_any_key   s[    $)>?((9+>?7>r   c                     | j                  dg      \  }}| j                  |       | j                  | j                  |dg             | j	                  |j
                  d       y )Nz-2r      r   r8   r9   r2   r-   r   r:   s      r   test_language_level_2z-TestCythonizeArgsParser.test_language_level_2   W    $0((3C2DEF//3r   c                     | j                  dg      \  }}| j                  |       | j                  | j                  |dg             | j	                  |j
                  d       y )Nz-3r      r   r:   s      r   test_language_level_3z-TestCythonizeArgsParser.test_language_level_3   r   r   c                     | j                  dg      \  }}| j                  |       | j                  | j                  |dg             | j	                  |j
                  d       y )N--3strr   r   r   r:   s      r   test_language_level_3strz0TestCythonizeArgsParser.test_language_level_3str   sW    (4((3C2DEF//3r   c                     | j                  dg      \  }}| j                  |       | j                  | j                  |dg             | j	                  |j
                  d       y )N-ar   defaultr   r8   r9   r2   r-   r   r:   s      r   test_annotate_shortz+TestCythonizeArgsParser.test_annotate_short   sU    $0((:,?@))95r   c                     | j                  dg      \  }}| j                  |       | j                  | j                  |dg             | j	                  |j
                  d       y )N
--annotater   r   r   r:   s      r   test_annotate_longz*TestCythonizeArgsParser.test_annotate_long   sU    ,8((:,?@))95r   c                     | j                  dg      \  }}| j                  |       | j                  | j                  |dg             | j	                  |j
                  d       y )N--annotate-fullcr   fullcr   r:   s      r   test_annotate_fullcz+TestCythonizeArgsParser.test_annotate_fullc   sW    *<)=>((:,?@))73r   c                     | j                  ddg      \  }}| j                  |dg       | j                  | j                  |dg             | j                  |j                  d       y )Nr   foo.pyxr   r   )r   r-   r9   r2   r   r:   s      r   test_annotate_and_positionalz4TestCythonizeArgsParser.test_annotate_and_positional  s\    $	):;	{+((:,?@))95r   c                    | j                  ddg      \  }}| j                  |       | j                  | j                  |ddg             | j	                  |j
                  d       | j	                  |j                  d       y )Nr   r   r   r   r   r   )r   r8   r9   r2   r-   r   r   r:   s      r   test_annotate_and_optionalz2TestCythonizeArgsParser.test_annotate_and_optional  sr    $)9:((:?O2PQR))95//3r   c                     | j                  ddg      \  }}| j                  |       | j                  | j                  |dg             | j                  d|j                  v        y )Nz-x*.pyxr   r   r8   r9   r2   r   r:   s      r   test_exclude_shortz*TestCythonizeArgsParser.test_exclude_short  sX    $9((:,?@7#3#334r   c                     | j                  ddg      \  }}| j                  |       | j                  | j                  |dg             | j                  d|j                  v        y )N	--excluder   r   r   r:   s      r   test_exclude_longz)TestCythonizeArgsParser.test_exclude_long  sY    +w)?@((:,?@7#3#334r   c                     | j                  g d      \  }}| j                  |       | j                  | j                  |dg             | j	                  |j
                  ddg       y )N)r   r   r   *.pyr   r   r   )r   r8   r9   r2   r-   r   r:   s      r   test_exclude_multiplez-TestCythonizeArgsParser.test_exclude_multiple  sY    )VW((:,?@))GV+<=r   c                     | j                  dg      \  }}| j                  |       | j                  | j                  |dg             | j	                  |j
                  d       y )Nz-br    Tr   r8   r9   r2   r-   r    r:   s      r   test_build_shortz(TestCythonizeArgsParser.test_build_short$  S    $0((7)<=-r   c                     | j                  dg      \  }}| j                  |       | j                  | j                  |dg             | j	                  |j
                  d       y )Nz--buildr    Tr   r:   s      r   test_build_longz'TestCythonizeArgsParser.test_build_long*  S    )5((7)<=-r   c                     | j                  dg      \  }}| j                  |       | j                  | j                  |dg             | j	                  |j
                  d       y )N-ir!   Tr   r8   r9   r2   r-   r!   r:   s      r   test_inplace_shortz*TestCythonizeArgsParser.test_inplace_short0  sV    $0((?2CDE..5r   c                     | j                  dg      \  }}| j                  |       | j                  | j                  |dg             | j	                  |j
                  d       y )Nz	--inplacer!   Tr   r:   s      r   test_inplace_longz)TestCythonizeArgsParser.test_inplace_long6  sV    +7((?2CDE..5r   c                     | j                  ddg      \  }}| j                  |       | j                  | j                  |dg             | j	                  |j
                  d       y )Nz-j42r'   rk   r   r8   r9   r2   r-   r'   r:   s      r   test_parallel_shortz+TestCythonizeArgsParser.test_parallel_short<  sW    $6((:,?@))2.r   c                     | j                  ddg      \  }}| j                  |       | j                  | j                  |dg             | j	                  |j
                  d       y )Nz
--parallelr   r'   rk   r   r:   s      r   test_parallel_longz*TestCythonizeArgsParser.test_parallel_longB  sX    ,)=>((:,?@))2.r   c                     | j                  dg      \  }}| j                  |       | j                  | j                  |dg             | j	                  |j
                  d       y )N-fr"   Tr   r8   r9   r2   r-   r"   r:   s      r   test_force_shortz(TestCythonizeArgsParser.test_force_shortH  r   r   c                     | j                  dg      \  }}| j                  |       | j                  | j                  |dg             | j	                  |j
                  d       y )Nz--forcer"   Tr   r:   s      r   test_force_longz'TestCythonizeArgsParser.test_force_longN  r   r   c                     | j                  dg      \  }}| j                  |       | j                  | j                  |dg             | j	                  |j
                  d       y )Nz-qr#   Tr   r8   r9   r2   r-   r#   r:   s      r   test_quite_shortz(TestCythonizeArgsParser.test_quite_shortT  r   r   c                     | j                  dg      \  }}| j                  |       | j                  | j                  |dg             | j	                  |j
                  d       y )Nz--quietr#   Tr   r:   s      r   test_quite_longz'TestCythonizeArgsParser.test_quite_longZ  r   r   c                     | j                  dg      \  }}| j                  | j                  |dg             | j                  |       | j	                  |j
                  d       y )N	--lenientr$   T)r   r9   r2   r8   r-   r$   r:   s      r   test_lenient_longz)TestCythonizeArgsParser.test_lenient_long`  sS    +7((9+>?$/r   c                     | j                  dg      \  }}| j                  |       | j                  | j                  |dg             | j	                  |j
                  d       y )Nz-kr%   Tr   r8   r9   r2   r-   r%   r:   s      r   test_keep_going_shortz-TestCythonizeArgsParser.test_keep_going_shortf  sU    $0((<.AB++T2r   c                     | j                  dg      \  }}| j                  |       | j                  | j                  |dg             | j	                  |j
                  d       y )Nz--keep-goingr%   Tr   r:   s      r   test_keep_going_longz,TestCythonizeArgsParser.test_keep_going_longl  sV    .)9:((<.AB++T2r   c                     | j                  dg      \  }}| j                  |       | j                  | j                  |dg             | j	                  |j
                  d       y )N--no-docstringsr&   T)r   r8   r9   r2   r-   r&   r:   s      r   test_no_docstrings_longz/TestCythonizeArgsParser.test_no_docstrings_longr  sX    *;)<=((?2CDE..5r   c                     | j                  ddg      \  }}| j                  t        |      d       | j                  |d   d       | j                  |d   d       | j                  | j	                  |g              y )N	file1.pyx	file2.pyxr   r      )r   r-   r+   r9   r2   r:   s      r   test_file_namez&TestCythonizeArgsParser.test_file_namex  sn    +{)CDTA&a+.a+.(("56r   c                     | j                  ddg      \  }}| j                  |dg       | j                  |j                  d       | j                  | j	                  |dg             y )Nr   file.pyxTr!   r   r-   r!   r9   r2   r:   s      r   test_option_firstz)TestCythonizeArgsParser.test_option_first  s]    $
);<
|,..5((?2CDEr   c                    | j                  g d      \  }}| j                  |dg       | j                  |j                  d       | j                  |j                  d       | j	                  | j                  |ddg             y )N)r   r   r   r   Tr   r!   r   )r   r-   r!   r   r9   r2   r:   s      r   test_file_inbetweenz+TestCythonizeArgsParser.test_file_inbetween  sq    )AB
|,..5))95((?J2OPQr   c                     | j                  ddg      \  }}| j                  |dg       | j                  |j                  d       | j                  | j	                  |dg             y )Nr   r   Tr!   r   r:   s      r   test_option_trailingz,TestCythonizeArgsParser.test_option_trailing  s]    *d);<
|,..5((?2CDEr   c                     | j                  g d      \  }}| j                  |ddg       | j                  |j                  d       | j                  | j	                  |dg             y )N)r   r   r   r   r   r   r   r   r-   r   r9   r2   r   r   sourcess      r   test_interspersed_positionalz4TestCythonizeArgsParser.test_interspersed_positional  sb    ?? ,
  	;"<=))95((:,?@r   c                     | j                  g d      \  }}| j                  |g d       | j                  |j                  d       | j                  | j	                  |dg             y )N)r   r   r   r   	file3.pyx)r   r   r   r   r   r   r   s      r   test_interspersed_positional2z5TestCythonizeArgsParser.test_interspersed_positional2  s^    ?? ,
  	"IJ))95((:,?@r   c                    | j                  g d      \  }}| j                  |g d       | j                  |j                  d       | j                  |j                  d       | j	                  | j                  |ddg             y )N)r   f1f2r   f3f4r   f5)r  r  r  r  r  r   Tr   r"   )r   r-   r   r"   r9   r2   r   s      r   test_interspersed_positional3z5TestCythonizeArgsParser.test_interspersed_positional3  su    ?? ,
  	"@A))95-((:w2GHIr   c                    t         j                  }t               x}t         _        	 | j                  t        | j
                  dg       |t         _        | j                  |j                                y # |t         _        w xY w)Nz--unknown-option)sysstderrr   rK   
SystemExitr   r9   getvalue)r   
old_stderrr	  s      r   test_wrong_optionz)TestCythonizeArgsParser.test_wrong_option  sa    ZZ
&j(	$j$//12  $CJ)* $CJs   "A4 4BN)A__name__
__module____qualname__r   r2   r<   r>   rB   rD   rF   rH   rO   rS   rU   ri   rn   ru   rw   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   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r      sO   \
"@@GG@AJDB].>AABB>>CC>>?>>?>?4446646455>..66//....03367FRFAAJ	+r   r   c                   @    e Zd Zd Zd Zg fdZd Zd Zd Zd Z	d Z
y	)
TestParseArgsc                 "    t               | _        y r   )r   _options_backupr   s    r   r   zTestParseArgs.setUp  s    -/r   c                 .    t        | j                         y r   )r   r  r   s    r   tearDownzTestParseArgs.tearDown  s    ,,-r   c                 P    | j                  t        | j                  |      d       y )Nr(   )r-   r	   r  )r   
white_lists     r   check_default_global_optionsz*TestParseArgs.check_default_global_options  s!    -d.B.BJOQSTr   c                 |    t        ddg      \  }}| j                  |j                  d       | j                          y )Nr   r   T)r   r-   r    r  r:   s      r   test_build_set_for_inplacez(TestParseArgs.test_build_set_for_inplace  s5    "It#45-))+r   c                     t        ddg      \  }}| j                  |dg       | j                  t        j                  d       | j                  t        j                  d       | j                  ddg       y )Nr   r   Ferror_on_unknown_nameserror_on_uninitialized)r   r-   r   r  r  r  r   s      r   test_lenientzTestParseArgs.test_lenient  si    %y+&>?9+.77?77?))+CE]*^_r   c                     t        ddg      \  }}| j                  |dg       | j                  t        j                  d       | j	                  dg       y )Nr   r   r   r   r   r-   r   r   r  r   s      r   test_annotatezTestParseArgs.test_annotate  sN    %y,&?@9+.))95)):,7r   c                     t        ddg      \  }}| j                  |dg       | j                  t        j                  d       | j	                  dg       y )Nr   r   r   r   r"  r   s      r   r   z!TestParseArgs.test_annotate_fullc  sO    %y2D&EF9+.))73)):,7r   c                     t        ddg      \  }}| j                  |dg       | j                  t        j                  d       | j	                  dg       y )Nr   r   Fr   )r   r-   r   r   r  r   s      r   test_no_docstringsz TestParseArgs.test_no_docstrings  sO    %y2C&DE9+.++U3))<.9r   N)r  r  r  r   r  r  r  r   r#  r   r&  r  r   r   r  r    s1    0. 79 U,
`88:r   r  )Cython.Build.Cythonizer   r   r   Cython.Compilerr   Cython.Compiler.Tests.Utilsr   r   r	   unittestr
   r  ior   r   r  r  r   r   <module>r,     s>     $ ] ]  
 i+h i+X&:H &:r   