
    ۏDj                         d dl Z d dlZd dlmZ d dlmZmZmZmZm	Z	m
Z
mZmZmZ dZ ee      ZeefZ G d d      Z G d dej$                        Zy)	    N)StringIO)	_CACHE_NAME_PATTERN_build_cache_name_find_cache_attributesbuild_hex_versioncached_methodclear_method_cachestry_finally_contextmanagerprint_versionnormalise_float_reprcached_nextc                       e Zd Zed        Zy)Cachedc                     t        |      S N)next)selfxs     `C:\Crop_Prediction\Backend\crop-ai-system\venv\Lib\site-packages\Cython/Tests/TestCythonUtils.pyr   zCached.cached_next   s    Aw    N)__name__
__module____qualname__r   r    r   r   r   r      s     r   r   c                   T    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y)TestCythonUtilsc                     | j                  dt        d             | j                  dt        d             | j                  dt        d             | j                  dt        d             y )	N
0x001D00A1z0.29a1
0x001D03C4z	0.29.3rc4
0x001D00F0z0.29
0x040000F0z4.0)assertEqualr   )r   s    r   test_build_hex_versionz&TestCythonUtils.test_build_hex_version   sZ    '8'BC'8'EF'8'@A'8'?@r   c                     d}t        |      }t        j                  |      }| j                  |d        | j	                  |j                  d      |       y )Nfoo   )r   r   matchassertIsNotr"   group)r   method_name
cache_namer'   s       r   test_cache_method_namez&TestCythonUtils.test_cache_method_name   sI    &{3
#))*5%Q5r   c                     t               }| j                  t        |t                     | j	                  t        |t
                     | j                  |t                      y r   )r   assertFalsehasattr
CACHE_NAME
assertTrueMETHOD_NAMEset_of_names_equalset)r   objs     r   test_requirements_for_Cachedz,TestCythonUtils.test_requirements_for_Cached&   sC    hj12[12SU+r   c                 L    | j                  t        t        |            |       y r   )r"   r4   r   )r   r5   values      r   r3   z"TestCythonUtils.set_of_names_equal-   s    3C895Ar   c                     t               }d}t        |      }t        |t        i        t        ||i        | j	                  t        ||             | j                  |t        ||fh       y Nbar)r   r   setattrr0   r.   r/   r3   NAMES)r   r5   r*   r+   s       r   test_find_cache_attributesz*TestCythonUtils.test_find_cache_attributes0   s_    h&{3
Z$Z$k23ej+-F%GHr   c                    t               }t        t        d            }|fdi}| j                  |j	                  |      d       | j                  |t        h       | j                  t        |t              |       | j                  |j	                  |      d       | j                  |t        h       | j                  t        |t              |       y )N   r   )	r   iterranger"   r   r3   r=   getattrr0   r   r5   r8   caches       r   test_cached_methodz"TestCythonUtils.test_cached_method;   s    hU1X1 	/3eW-j159 	/3eW-j159r   c                 f   t               }t        t        d            }|fdi}|j                  |       t	        |       | j                  |t                      | j                  |j                  |      d       | j                  |t        h       | j                  t        |t              |       y )Nr@   r&   )r   rA   rB   r   r	   r3   r4   r"   r=   rC   r0   rD   s       r   test_clear_method_cachesz(TestCythonUtils.test_clear_method_cachesJ   s    hU1X1C SU+/3eW-j159r   c                     t               }d}t        |      }||f}t        ||t                      | j	                  t        ||             | j                  ||h       t        |       | j                  ||h       y r:   )r   r   r<   objectr.   r/   r3   r	   )r   r5   r*   r+   namess        r   ,test_clear_method_caches_with_missing_methodz<TestCythonUtils.test_clear_method_caches_with_missing_methodX   sq    h&{3
K'Z*k23eW-C eW-r   c                    g t         fd       } |dddd      5 }dgk(  sJ | j                  |dd	dif       d d d        dd
gk(  sJ  G d dt              }d d = | j                  |      5   |ddd      5 }dgk(  sJ | j                  |dddif        |d      # 1 sw Y   jxY w# 1 sw Y   nxY wdd
gk(  sJ 	 d d d        n# 1 sw Y   nxY wd d = | j                  t              5   |ddd      5 }dgk(  sJ | j                  |dddif       t	        d      # 1 sw Y   nxY wdd
gk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nc               ?   ^   K   j                  d       | |f j                  d       y w)Nenterexit)append)argskwargsstatess     r   genz<TestCythonUtils.test_try_finally_contextmanager.<locals>.genh   s)     MM'". MM&!s   *-r&      r@      )r   rO   )r&   rV   r@   r   rP   c                       e Zd Zy)DTestCythonUtils.test_try_finally_contextmanager.<locals>.MyExceptionN)r   r   r   r   r   r   MyExceptionrY   s   s    r   rZ   )y)r&   rV   r[   zFAIL INSIDESTOP)r
   r"   RuntimeErrorassertRaisesStopIteration)r   rU   	call_argsrZ   rT   s       @r   test_try_finally_contextmanagerz/TestCythonUtils.test_try_finally_contextmanagerf   s   	#	" 
$	"
 AqA 	?)gY&&YS!H(=>	? '6***	, 	 1I{+ 	/QQ 19'**  Vc1X,>?!-00	? 	?1 1 gv....	/ 	/ 	/ 1I}- 	/QQ ,9'**  Vc1X,>?#F++, , gv....	/ 	/ 	/sG   B&3C?'B2&B/2B;	7CC7E*D--D6	2EEc                    t         j                  }t         j                  }t               x}t         _        t               x}t         _        	 t	                |t         _        |t         _        |j                         }|j                         }ddlm} | j                  ||       |r| j                  ||       y y # |t         _        |t         _        w xY w)NrV   __version__)	sysstderrstdoutr   r   getvalue rd   assertIn)r   orig_stderrorig_stdoutrf   rg   versions         r   test_print_versionz"TestCythonUtils.test_print_version   s    jjjj&j(&j(	%O$CJ$CJ""-gv&MM'6*  %CJ$CJs   
B: :Cc                    t         j                  }t         j                  }t               x}xt         _        t         _        	 t	                |t         _        |t         _        |j                         }ddlm} | j                  ||       | j                  |j                  |      d       y # |t         _        |t         _        w xY w)NrV   rc   r&   )re   rf   rg   r   r   rh   ri   rd   rj   r"   count)r   rk   rl   rg   rm   s        r   test_print_version_stdouterrz,TestCythonUtils.test_print_version_stdouterr   s    jjjj+3:55cj	%O$CJ$CJ"-gv&g.2 %CJ$CJs   
B, ,Cc                    g d}|D ]{  \  }}| j                  t        |      t        |             t        |      }| j                  t        |      t        |             | j                  ||d|||t        |      fz         } y )N)).0rs   )z.000000rs   ).1rt   )1.ru   )z1.0ru   )z1.000000000000000000000ru   )z-00000000000000000000001.000000000000000000000ru   )
12345.0025rv   )1E5z100000.)z.1E-5z.000001)z1.1E-5z.000011)z12.3E-5z.000123)z.1E10z1000000000.)z1.1E10z11000000000.)z123.4E10z1234000000000.)z	123.456E0z123.456)z
123.456E-1z12.3456)z
123.456E-2z1.23456)z	123.456E1z1234.56)z	123.456E2z12345.6)z2.1E80zR210000000000000000000000000000000000000000000000000000000000000000000000000000000.z.normalise_float_repr(%r) == %r != %r  (%.330f))r"   floatr   )r   examples	float_strnorm_strresults        r   test_normalise_float_reprz)TestCythonUtils.test_normalise_float_repr   s    
0 $, 	IxU9-uX?))4FU9-uV}=@IvW_afgpaqCrr	r   N)r   r   r   r#   r,   r6   r3   r>   rF   rH   rL   ra   rn   rq   r}   r   r   r   r   r      sB    A6,B	I::./@+&3 !r   r   )re   unittestior   Cython.Utilsr   r   r   r   r   r	   r
   r   r   r2   r0   r=   r   TestCaser   r   r   r   <module>r      sV    
     {+
K uh'' ur   