+
    VBi,#                     B   R t ^ RIt^ RIt^ RIt^ RIHt ^ RIHt ^ RIH	t	 ^ RI
Ht ^ RIHt  ^ RItR t]! ]P$                  R	8H  R
4      t ^ RIHt R]n        ]R 4       tRtRt]R,           tRtRt] ! R R]4      4       tR#   ] d    R t L[i ; i  ] d     LDi ; i)z&Tests for the Cython magics extension.N)contextmanager)skipIf)IpythonMagic)
CythonTest)AnnotationCCodeWriterc                     V # N )cs   &H/usr/lib/python3.14/site-packages/Cython/Build/Tests/TestIpythonMagic.pyskip_if_not_installedr      s        c                     R # r   r	   )_s   &r   r   r      s    r   win32zSkip on Windows)HistoryManagerFc               #      "   \         P                  \         P                  3p  \        P                  ! \        P
                  ! 4       \         P                  P                  R 7      \        P                  ! \        P
                  ! 4       \         P                  P                  R 7      .pVw  \         n        \         n        . pVx  V w  \         n        \         n        V FC  pVP                  ^ 4       VP                  VP                  4       4       VP                  4        KE  	  R#   T w  \         n        \         n        X FC  pTP                  ^ 4       XP                  TP                  4       4       TP                  4        KE  	  i ; i5i))encodingN)sysstdoutstderrioTextIOWrapperBytesIOr   seekappendreadclose)backupreplacementoutputwrappers       r   capture_outputr"   %   s     ZZ#FbjjlSZZ5H5HIbjjlSZZ5H5HI
 "-
CJ!'
CJ"GLLOMM',,.)MMO # "(
CJ"GLLOMM',,.)MMO #s   !FB#D) A"F)A"FFzdef f(x):
    return 2*x
zAdef f(int x):
    return 2 / x

def call(x):
    return f(*(x,))
z4def main():
    for _ in range(100): call(5)
main()
zUcdef extern from *:
    """
    xxx a=1;
    """
    int a;
def doit():
    return a
z{cdef extern from *:
    """
    #pragma message ( "CWarning" )
    int a = 42;
    """
    int a;
def doit():
    return a
c                      a  ] tR t^at o ]R 4       tR tR t]R 4       t	R t
R tR tR tR	 tR
 tR tR t]R 4       t]R 4       tR tR tR tR tR tR tRtV tR# )TestIPythonMagicc                    \         P                  ! 4        \        P                  P                  P                  4       V n        R # r   )r   
setUpClassIPythontestingglobalipappget_ipython_ip)clss   &r   r&   TestIPythonMagic.setUpClassd   s(    //--99;r   c                |    \         P                  ! V 4       V P                  P                  P	                  R 4       R# )cythonN)r   setUpr+   extension_managerload_extension)selfs   &r   r0   TestIPythonMagic.setUpi   s(    ""11(;r   c                    V P                   pVP                  R 4       VP                  RRR4      pV P                  V^4       R# )z
a=10; b=20cython_inline z
return a+bN)r+   exrun_cell_magicassertEqual)r3   ipresults   &  r   test_cython_inline#TestIPythonMagic.test_cython_inlinem   s;    XX
l""?BE$r   c                   V P                   pR pVP                  RV\        4       VP                  R4       V P	                  VP
                  R,          R4       VP                  RV\        4       VP                  R4       V P	                  VP
                  R,          R	4        \        P                  ! VR,           4       R#   \         d     R# i ; i)
_test_cython_pyximportcython_pyximport	g = f(10)g      4@z
h = f(-10)hz.pyxNg      4)	r+   r9   coder8   r:   user_nsosremoveOSError)r3   r;   module_names   &  r   test_cython_pyximport&TestIPythonMagic.test_cython_pyximports   s    XX.
,k4@
kC$/
,k4@
lC%0	IIkF*+ 		s   &C CCc                    V P                   pVP                  R R\        4       VP                  R4       V P	                  VP
                  R,          R4       R# )r/   r7   rB   rC   rD   Nr+   r9   rF   r8   r:   rG   r3   r;   s   & r   test_cythonTestIPythonMagic.test_cython   sA    XX
(B-
kC$/r   c                    V P                   pVP                  R R\        4       VP                  R4       V P	                  VP
                  R,          R4       R# )r/   z--name=mymodulez#import mymodule; g = mymodule.f(10)rC   rD   NrO   rP   s   & r   test_cython_name!TestIPythonMagic.test_cython_name   sC    XX
($5t<
34C$/r   c                    V P                   pVP                  R R\        4       VP                  R4       V P	                  VP
                  R,          R4       V P	                  VP
                  R,          R4       R# )r/   r7   g = f(10); h = call(10)rC   rE   N皙?r+   r9   cython3_coder8   r:   rG   rP   s   & r   test_cython_language_level+TestIPythonMagic.test_cython_language_level   sZ    XX
(B5
'(C*5C*5r   c                    V P                   pVP                  R R\        4       VP                  R4       V P	                  VP
                  R,          R4       V P	                  VP
                  R,          R4       R# )r/   -3rW   rC   rE   NrX   rY   rP   s   & r   test_cython3TestIPythonMagic.test_cython3   sZ    XX
(D,7
'(C*5C*5r   c                    V P                   pVP                  R R\        4       VP                  R4       V P	                  VP
                  R,          ^ 4       V P	                  VP
                  R,          ^ 4       R# )r/   z-2rW   rC   rE   NrY   rP   s   & r   test_cython2TestIPythonMagic.test_cython2   sZ    XX
(D,7
'(C'2C'2r   c                
   V P                   p\        4       ;_uu_ 4       pVP                  R R\        4       RRR4       Xw  r4VR,           V,           pV P	                  RV9   RV,           R7       R#   + '       g   i     LC; i)r/   r^   N
error	error in msg)r+   r"   r9   compile_error_code
assertTruer3   r;   outcaptured_outcaptured_errcaptured_alls   &     r   test_cython_compile_error_shown0TestIPythonMagic.test_cython_compile_error_shown   sj    XXh.@A %(" $d*\9</[<5OP    A22B	c                
   V P                   p\        4       ;_uu_ 4       pVP                  R R\        4       RRR4       Xw  r4VR,           V,           pV P	                  RV9   RV,           R7       R#   + '       g   i     LC; i)r/   z-3 -l=xxxxxxxxNz
!rf   rg   rh   )r+   r"   r9   rF   rk   rl   s   &     r   test_cython_link_error_shown-TestIPythonMagic.test_cython_link_error_shown   sj    XXh(8$? %(" $e+l:</[<5OP rs   c                    V P                   p\        4       ;_uu_ 4       pVP                  R R\        4       RRR4       Xw  r4V P	                  RV9   4       R#   + '       g   i     L*; i)r/   z-3 -fNCWarning)r+   r"   r9   compile_warning_coderk   )r3   r;   rm   rn   ro   s   &    r   test_cython_warning_shown*TestIPythonMagic.test_cython_warning_shown   sV    XX h1EF  &)" 	
l23 s   AA)	c                    V P                   pVP                  R R\        4       VP                  R4       V P	                  VP
                  R,          R4       V P	                  VP
                  R,          R4       R# )r/   z-3 --pgozg = f(10); h = call(10); main()rC   rE   NrX   )r+   r9   pgo_cython3_coder8   r:   rG   rP   s   & r   test_cython3_pgo!TestIPythonMagic.test_cython3_pgo   s]     XX
(J0@A
/0C*5C*5r   c                    V P                   pR p^VP                  R&   VP                  RRV4       V P                  VP                  R,          ^ 4       R# )z1
from libc.math cimport sin
x = sin(0.0)
        xr/   z-l mN)r+   rG   r9   r:   )r3   r;   rF   s   &  r   test_extlibsTestIPythonMagic.test_extlibs   sK    XX 

3
(FD1C!,r   c                    V P                   pVP                  R R\        4       VP                  R4       V P	                  VP
                  R,          R4       R# )r/   	--verboserB   rC   rD   NrO   rP   s   & r   test_cython_verbose$TestIPythonMagic.test_cython_verbose   sA    XX
(K6
kC$/r   c                   \         R  4       pV P                  pV! 4       ;_uu_ 4       pVP                  RR\        4       VP	                  R4       RRR4       V P                  VP                  R,          R4       V P                  XP                  VP                  VP                  .VP                  4       V! 4       ;_uu_ 4       pVP                  RR\        4       VP	                  R4       RRR4       V P                  VP                  R,          R4       V P                  XP                  .VP                  4       R#   + '       g   i     L; i  + '       g   i     Lo; i)c               3      "    ! R  R4      p V ! 4       p\         P                  P                  p V\         P                  n        Vx  V\         P                  n        R#   T\         P                  n        i ; i5i)c                   4   a  ] tR t^t o ^t^t].tR tRtV t	R# )XTestIPythonMagic.test_cython_verbose_thresholds.<locals>.mock_distutils.<locals>.MockLogc                ^    V P                   P                  V4       V P                   R,          # )   )
thresholdsr   )r3   vals   &&r   set_thresholdfTestIPythonMagic.test_cython_verbose_thresholds.<locals>.mock_distutils.<locals>.MockLog.set_threshold   s#    OO**3/??2..r   r	   N)
__name__
__module____qualname____firstlineno__DEBUGINFOr   r   __static_attributes____classdictcell____classdict__s   @r   MockLogr      s      "V
/ /r   r   N)r   	distutilslog)r   new_logold_logs      r   mock_distutilsGTestIPythonMagic.test_cython_verbose_thresholds.<locals>.mock_distutils   s]     / / iG",,00G5-4&&*-4&&*W&&*s   ,A9A A9A66A9r/   r   rB   NrC   rD   r7   )
r   r+   r9   rF   r8   r:   rG   r   r   r   )r3   r   r;   verbose_log
normal_logs   &    r   test_cython_verbose_thresholds/TestIPythonMagic.test_cython_verbose_thresholds   s   		5 
	5& XXhT:EE+  	C$/+**K,=,={?O?OP%00	2 hD1EE+  	C$/*//*J,A,AB  s   )E)EE	E(	c                r    V P                   pVP                  R R\        4      pV P                  VRJ 4       R# )r/   r7   N)r+   r9   rF   rk   r3   r;   htmls   &  r   test_cython_no_annotate(TestIPythonMagic.test_cython_no_annotate  s/    XX  2t4%r   c                    V P                   pVP                  R R\        4      pV P                  \        P
                  VP                  9  4       R# )r/   z
--annotateNr+   r9   rF   rk   r   COMPLETE_CODE_TITLEdatar   s   &  r   test_cython_annotate%TestIPythonMagic.test_cython_annotate  s=    XX  <> 	-AARSr   c                    V P                   pVP                  R R\        4      pV P                  \        P
                  VP                  9  4       R# )r/   z-aNr   r   s   &  r   test_cython_annotate_default-TestIPythonMagic.test_cython_annotate_default  s=    XX  46 	-AARSr   c                    V P                   pVP                  R R\        4      pV P                  \        P
                  VP                  9   4       R# )r/   z--annotate-fullcNr   r   s   &  r   $test_cython_annotate_complete_c_code5TestIPythonMagic.test_cython_annotate_complete_c_code  s>    XX  +=tD 	-AATYYNOr   r	   N)r   r   r   r   classmethodr&   r0   r=   
skip_win32rL   rQ   rT   r[   r_   rb   rq   ru   rz   r~   r   r   r   r   r   r   r   r   r   r   s   @r   r$   r$   a   s      < <<%  00663	Q	Q	4 6 6 - -0!CF&
TTP Pr   r$   )__doc__rH   r   r   
contextlibr   unittestr   Cython.Buildr   Cython.TestUtilsr   Cython.Compiler.Annotater   IPython.testing.globalipappr'   r   ImportErrorplatformr   IPython.core.historyr   enabledr"   rF   rZ   r}   rj   ry   r$   r	   r   r   <module>r      s    - 
 	 
 %  % ' :& CLLG+->?
	3"N
  $
   #   	  }Pz }P }Pa    		s#   B B 
BBBB