Ë
    Æ[;jï  ã                   ó¼   — d dl Z d dlZd dlZd dlmZ d dlmZmZ d dlm	Z	 	 d dl
Z
dZ edd¬«      ZdZ G d	„ d
e	«      Z G d„ dej                   «      Zy#  dZY Œ3xY w)é    N)Úinline)Ú	safe_typeÚcymeit)Ú
CythonTestTF)ÚforceÚquietéd   c                   óˆ   — 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 ej                   e d«      d„ «       Zy)Ú
TestInlinec                 ó   — t        j                  | «       t        t        «      | _        t
        j                  j                  d«      r!t
        j                  j                  dd«      }nt        j                  d¬«      }|| j                  d<   y )NÚTEST_TMPr   Úcython_inline_)ÚprefixÚlib_dir)r   ÚsetUpÚdictÚ	test_kwdsÚ
_call_kwdsÚosÚpathÚisdirÚjoinÚtempfileÚmkdtemp)Úselfr   s     úfG:\00. PROJECTS\API\Inventory\templateJSON\kerjaOCR\Lib\site-packages\Cython/Build/Tests/TestInline.pyr   zTestInline.setUp   s^   € Ü×Ñ˜ÔÜœy›/ˆŒÜ�7‰7�=‰=˜Ô$Ü—g‘g—l‘l :¨hÓ7‰Gä×&Ñ&Ð.>Ô?ˆGØ%,ˆ�‰˜	Ò"ó    c                 óN   — | j                  t        di | j                  ¤Žd«       y )Né   )z
return 1+2©ÚassertEqualr   r   ©r   s    r   Útest_simplezTestInline.test_simple   s   € Ø×ÑœÑ@°·±Ñ@À!ÕDr   c                 óT   — | j                  t        ddg dœ| j                  ¤Žd«       y )Ng      ð?)ÚaÚb)Údoublezlist object)zZ
            cimport cython
            return cython.typeof(a), cython.typeof(b)
        r    r"   s    r   Ú
test_typeszTestInline.test_types   s8   € Ø×Ñœð -ð �bñ-ð !ŸO™Oñ-ð /Hõ	Ir   c                 óV   — d}d}| j                  t        di | j                  ¤Žd«       y )Né   é   r   )z
return a+br    )r   r%   r&   s      r   Útest_localszTestInline.test_locals%   s(   € ØˆØˆØ×ÑœÑ@°·±Ñ@À!ÕDr   c                 ó\   — | j                  t        di | j                  ¤Žt        dz   «       y )Nr*   )zreturn global_value + 1)r!   r   r   Úglobal_valuer"   s    r   Útest_globalszTestInline.test_globals*   s$   € Ø×ÑœÑM¸T¿_¹_ÑMÌ|Ð^_ÑO_Õ`r   c                 óf   — | j                  t        di | j                  ¤Žt        ddg ¬«      «       y )Nr*   g       @)r%   r&   Úc)zQ
            a = 1
            cdef double b = 2
            cdef c = []
        )r!   r   r   r   r"   s    r   Útest_no_returnzTestInline.test_no_return-   s3   € Ø×Ñœñ  ð �‰ñ	 ô "&¨¨S°BÔ!7õ		9r   c                 ód   — t        di | j                  ¤Žd   }| j                   |d«      d«       y )NÚfooé   é1   )zdef foo(x): return x * x)r   r   r!   )r   r4   s     r   Útest_def_nodezTestInline.test_def_node4   s,   € ÜÑC°4·?±?ÑCÀEÑJˆØ×Ñ™˜Q› Õ$r   c                 óX   —  G d„ d«      }t        d«      d   }| j                  ||«       y )Nc                   ó   — e Zd Zy)ú'TestInline.test_class_ref.<locals>.TypeN)Ú__name__Ú
__module__Ú__qualname__© r   r   ÚTyper:   9   s   „ Ør   r?   )r   r!   )r   r?   Útps      r   Útest_class_refzTestInline.test_class_ref8   s*   € ÷	ñ 	ä�F‹^˜FÑ#ˆØ×Ñ˜˜TÕ"r   c                 óx   — dd l }t        dddi| j                  ¤Ž}| j                  t	        |«      t
        «       y )Nr   r%   r   )zl
        b = cy.declare(float, a)
        c = cy.declare(cy.pointer(cy.float), &b)
        return b
        )Úcythonr   r   r!   ÚtypeÚfloat)r   Úcyr&   s      r   Ú	test_purezTestInline.test_pure>   s=   € ÛÜñ %ð ð	%ð —O‘Oñ	%ˆð
 	×Ñœ˜a›¤%Õ(r   c                 óH   — | j                  t        dg d¢ddi¬«      d«       y )Nzreturn sum(x))r*   r+   r   ÚboundscheckF)ÚxÚcython_compiler_directivesé   ©r!   r   r"   s    r   Útest_compiler_directivesz#TestInline.test_compiler_directivesG   s+   € Ø×ÑÜ�?ÚØ/<¸eÐ.DôFð õ		
r   c                 óò   — d}| j                   t        |d¬«      d   dd«      d«       | j                   t        |d¬«      d   dd«      d«       | j                   t        |d¬«      d   dd«      d«       y )Nzdef f(int a, int b): return a/br+   )Úlanguage_levelÚfé   r   g      @rM   )r   Úinline_divcodes     r   Útest_lang_versionzTestInline.test_lang_versionO   s†   € à:ˆØ×ÑØ9ŒF�>°!Ô4°SÑ9¸!¸AÓ>Øô	
ð 	×ÑØ9ŒF�>°!Ô4°SÑ9¸!¸AÓ>Øô	
ð 	×ÑØ9ŒF�>°!Ô4°SÑ9¸!¸AÓ>Øõ	
r   c                 ó°  — d}| j                   t        |«      d   dd«      d«       | j                   t        |«      d   dd«      d«       | j                   t        |«      d   dd«      d	«       | j                   t        |«      d   dd«      d«       t        |«      d   }| j                   |dd«      d«       | j                   |dd«      d«       y )
Nz!def f(int a, int b): return a * brQ   rR   r+   é
   r   é   rL   é   rM   )r   Úinline_mulcoderQ   s      r   Útest_repeated_usezTestInline.test_repeated_use_   sÒ   € Ø<ˆØ×ÑÐ4œ Ó/°Ñ4°Q¸Ó:¸BÔ?Ø×ÑÐ4œ Ó/°Ñ4°Q¸Ó:¸BÔ?Ø×ÑÐ4œ Ó/°Ñ4°Q¸Ó:¸BÔ?Ø×ÑÐ4œ Ó/°Ñ4°Q¸Ó:¸BÔ?ä�>Ó" 3Ñ'ˆØ×Ñ™˜1˜a› "Ô%Ø×Ñ™˜1˜a› "Õ%r   zNumPy is not availablec                 ó¾   — dd l } |j                  d«      }d|d<   | j                  t        |«      d«       | j                  t	        dd|i| j
                  ¤Žd«       y )	Nr   )rV   é   rV   )r   r   z&numpy.ndarray[numpy.float64_t, ndim=2]r%   g      $@)zreturn a[0,0])ÚnumpyÚndarrayr!   r   r   r   )r   r]   r%   s      r   Ú
test_numpyzTestInline.test_numpyj   sT   € ãØˆE�M‰M˜(Ó#ˆØˆˆ#‰Ø×Ñœ 1›Ð'OÔPØ×ÑœÑH°1ÐH¸¿¹ÑHÈ$ÕOr   N)r;   r<   r=   r   r#   r(   r,   r/   r2   r7   rA   rG   rN   rT   rZ   ÚunittestÚskipIfÚ	has_numpyr_   r>   r   r   r   r      sh   „ ò-òEòIòEò
aò9ò%ò#ò)ò
ò
ò 	&ð €X‡_�_˜�]Ð$<Ó=ñPó >ñPr   r   c                   ó8   — e Zd Zd	d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)
Ú
TestCymeitNc                 ó  ‡— t        |fd|i|¤Ž\  }Š| j                  t        |«      d«       t        ˆfd„|D «       «      }t	        |t
        «      r| j                  |d«       n| j                  |d«       | j                  ‰d«       |S )NÚ
setup_coder   c              3   ó(   •K  — | ]	  }|‰z  –— Œ y ­w©Nr>   )Ú.0ÚtimingÚnumbers     €r   Ú	<genexpr>z"TestCymeit._run.<locals>.<genexpr>{   s   øè ø€ Ð=±W¨6�v •±Wùs   ƒi † g-Cëâ6?é   )r   ÚassertGreaterÚminÚmaxÚ
isinstanceÚintÚassertGreaterEqual)r   Úcoderf   ÚkwargsÚtimingsÚmax_timerk   s         @r   Ú_runzTestCymeit._runt   s€   ø€ Ü  ÑG°*ÐGÀÑG‰ˆ�à×Ñœ3˜w›<¨Ô+ô Ó=±WÓ=Ó=ˆÜ�h¤Ô$Ø×#Ñ# H¨gÕ6à×#Ñ# H¨fÔ5Ø×Ñ˜6 1Ô%àˆr   c                 ó0   — d}| j                  d|d¬«       y )Nú!numbers = list(range(0, 1000, 3))úsum([num for num in numbers])r   ©Úrepeat©rx   ©r   rf   s     r   Útest_benchmark_simplez TestCymeit.test_benchmark_simple„   s   € Ø8ˆ
Ø�	‰	Ð1°:Àaˆ	ÕHr   c                 óˆ   — dd l }d}| j                  d||j                  d¬«      }|D ]  }| j                  |t        «       Œ y ©Nr   rz   r{   r   )Útimerr}   )Útimerx   Úperf_counterÚassertIsInstancerE   ©r   r„   rf   rv   rj   s        r   Útest_benchmark_timerzTestCymeit.test_benchmark_timerˆ   sB   € ÛØ8ˆ
Ø—)‘)Ð;¸ZÈt×O`ÑO`Ðij�)ÓkˆãˆFØ×!Ñ! &¬%Õ0ñ r   c                 óˆ   — dd l }d}| j                  d||j                  d¬«      }|D ]  }| j                  |t        «       Œ y r‚   )r„   rx   Úperf_counter_nsr†   rr   r‡   s        r   Útest_benchmark_timer_nsz"TestCymeit.test_benchmark_timer_ns�   sB   € ÛØ8ˆ
Ø—)‘)Ð;¸ZÈt×OcÑOcÐlm�)ÓnˆãˆFØ×!Ñ! &¬#Õ.ñ r   c                 ó,   — d}| j                  d|«       y )NzÃ
        numbers = list(range(0, 100, 3))

        def csum(numbers):
            result = 0
            for number in numbers:
                result += number
            return result
        zcsum(numbers)r~   r   s     r   Útest_benchmark_multiline_setupz)TestCymeit.test_benchmark_multiline_setup˜   s   € ðˆ
ð 	�	‰	�/ :Õ.r   c                 ó0   — d}| j                  d|d¬«       y )Nz numbers = list(range(0, 100, 3))zm
            sum([
                num
                    for num in numbers
                ])
            r   r|   r~   r   s     r   Útest_benchmark_multiline_codez(TestCymeit.test_benchmark_multiline_code¤   s%   € Ø7ˆ
Ø�	‰	ð ð Øð 	õ 	
r   c                 ó,   — | j                  ddd¬«       y )Nzfsum(range(100))Úmathr+   )Úimport_moduler}   r~   r"   s    r   Útest_benchmark_in_modulez#TestCymeit.test_benchmark_in_module°   s   € Ø�	‰	Ð$°FÀ1ˆ	ÕEr   rh   )
r;   r<   r=   rx   r€   rˆ   r‹   r�   r�   r“   r>   r   r   rd   rd   s   s'   „ óò Iò1ò/ò
/ò

óFr   rd   )r   r   r`   ÚCython.Shadowr   ÚCython.Build.Inliner   r   ÚCython.TestUtilsr   r]   rb   r   r   r.   r   ÚTestCaserd   r>   r   r   Ú<module>r˜      si   ðÛ 	Û Û Ý  ß 1Ý 'ðÛØ€Iñ �t 4Ô(€	à€ô^P�ô ^PôB>F�×"Ñ"õ >FøðQØ‚Iús   ¢A ÁA