
    h                         S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	J
r
  S SKrS SKrS SKJs  Jr  S SKJr  \ R*                  R-                  \ R*                  R/                  \5      5      r\ R*                  R5                  \S5      r\ R*                  R5                  \S5      r\" \5       r\" \S5       V Vs0 s H  u  pURA                  5       U _M     snn r!SSS5        Sq"S r# " S S	\RH                  5      r% " S
 S\%5      r& " S S\&5      r'\(S:X  a  \RR                  " 5         ggs  snn f ! , (       d  f       N]= f)    N)	ccompiler)Cygdbcodefilecfuncs.c   c            
         [         b  [         $ Sq  [        R                  " / SQ[        R                  S9n U R	                  5       u  pSn[
        R                  " X1R                  SS5      5      nU(       a  [        [        [        UR                  5       5      5      nUSS/:  a  S	q [        R                  " S
S9 nUR                  S5        UR!                  5         [        R                  " SSSUR"                  /[        R                  S9n U R	                  5       u  p [        [        [        UR                  SS5      R%                  5       5      5      nUSS/:  a  Sq S S S 5        [         (       d  [(        R*                  " S5        [         $ ! [         a    S n GN1f = f! [&         a    Sq  NPf = f! , (       d  f       NZ= f)NF)gdbz-nxz	--version)stdoutzGNU gdb [^\d]*(\d+)\.(\d+)asciiignore      Tzw+)modez8python import sys; print("%s %s" % sys.version_info[:2])r	   -batch-xz6Skipping gdb tests, need gdb >= 7.2 with Python >= 2.7)have_gdb
subprocessPopenPIPEcommunicaterematchdecodeOSErrorlistmapintgroupstempfileNamedTemporaryFilewriteflushnamesplit
ValueErrorwarningswarn)pr
   _regexgdb_versiongdb_version_numberpython_version_scriptinternal_python_versions           ]/var/www/fran/franai/venv/lib/python3.13/site-packages/Cython/Debugger/Tests/TestLibCython.pytest_gdbr0      s   H	H8Q
 MMO	-hhummGX&FG!#c;+=+=+?"@A!Q'H,,$7;P%++NP%++-$$eXt=R=W=W%X,6OO=MMO	%.23sFMM'S[<\<b<b<d3e.f+.!Q7#( 8 8NOO=  0 " %$H% 87s=   %F <A%F7"AF%F"!F"%F41F73F44F77
Gc                        \ rS rSrS rS rSrg)DebuggerTestCaseE   c           	      L   [        5       (       d  g[        R                  " 5       U l        [        R
                  R                  U R                  S5      U l        [        R
                  R                  U R                  SS5      U l        [        R
                  R                  U R                  S5      U l	        [        R                  " 5       U l         [        R                  " U R                  5        [        R                  " [        U R                  5        [        R                  " [         U R                  S-   5        [        R                  " [         R#                  SS5      U R                  S-   5        [$        R&                  " 5       nUR)                  S/S	S
/S9  [+        U R                  SU R                  S9n[,        R.                  " 5       n[0        R2                  " SU R                  S[0        R4                  " [        5      S.UD6n[7        [        R8                  S5      n[:        R<                  nU[:        l        UR?                  5          UR@                  " SU R                  SSS	U R                  S.S.UD6  URC                  US   US   US   SSS/0S9  URE                  5         U[:        l        URG                  5         g! URE                  5         U[:        l        URG                  5         f = f!   [        R                  " U R                  5        e = f)zu
Run gdb and have cygdb import the debug information from the code
defined in TestParseTreeTransforms's setUp method
Nzcodefile.pyxcython_debugcython_debug_info_codefilecfuncsz.cz.hr   Tz-fPIC)debugextra_postargsr   )test_directorymodulemodule_pathF)workdircleanup_workdirtagsw)	gdb_debug
output_dir)	targetdirincdirannotateextra_compile_optionsr:   r;   extra_objectszcfuncs.o)r:   r;   r=   rD   extra_extension_args )$r0   r   mkdtemptempdirospathjoindestfile
debug_destcfuncs_destfilegetcwdcwdchdirshutilcopyr   cfuncs_filereplacer   new_compilercompiledict	build_extOptimizationruntestsCythonCompileTestCase
parse_tagsopendevnullsysstderrdisable_optimization
run_cythonrun_distutilsrestore_stateclose)selfcompileroptsoptimization_disablercython_compile_testcase
new_stderrrd   s          r/   setUpDebuggerTestCase.setUpG   s~   
 zz'')T\\>B'',,t||&4&BD  "ww||DLL(C99;H	HHT\\"KK$--0KKT%9%9D%@AKK++D$7,,t35 !--/Hj\wiP#||! MMD %.$:$:$<!&.&D&D ' %((2	'
 '# bjj#.JZZF#CJ!668#'22 	"ll"$(%)\\+		 	 (55#'(8#9> !12*9:,)G 6  &335#
  " &335#
  "	HHTXXs&   FL  AK $+L  -K==L   #L#c                     [        5       (       d  g [        R                  " U R                  5        [        R
                  " U R                  5        g N)r0   rL   rT   rS   rU   rmtreerK   )rj   s    r/   tearDownDebuggerTestCase.tearDown   s,    zz
dll#    )rQ   rS   rP   rO   rK   N)__name__
__module____qualname____firstlineno__rp   ru   __static_attributes__rI   rw   r/   r2   r2   E   s    Xt$rw   r2   c                   4   ^  \ rS rSrU 4S jrU 4S jrSrU =r$ )GdbDebuggerTestCase   c           	        > [        5       (       d  g [        TU ]	  5         [        R                  " S5      n[        R                  " S[
        R                  S S < S35      n[        R                  " U R                  U5      U l
        [        U R                  S5       nUR                  U5        S S S 5        SSSU R                  S	S
[
        R                  SS/	n/ n[        R                  R!                  S5      nU(       a  UR#                  U5        UR#                  [        R$                  R'                  [        R$                  R'                  [        R$                  R)                  [*        R,                  5      5      5      5        [/        [        R                  [        R0                  R3                  U5      S9n[4        R6                  " U[4        R8                  [4        R8                  US9U l        g ! , (       d  f       GNO= f)Na              python

            import os
            import sys
            import traceback

            def excepthook(type, value, tb):
                traceback.print_exception(type, value, tb)
                sys.stderr.flush()
                sys.stdout.flush()
                os._exit(1)

            sys.excepthook = excepthook

            # Have tracebacks end up on sys.stderr (gdb replaces sys.stderr
            # with an object that calls gdb.write())
            sys.stderr = sys.__stderr__

            end
            z            python

            from Cython.Debugger.Tests import test_libcython_in_gdb
            test_libcython_in_gdb.main(version=r   z)

            end
            ar	   r   r   z-nz--argsz-czimport codefile
PYTHONPATH)r   )r
   rd   env)r0   superrp   textwrapdedentrc   version_infocygdbmake_command_filerK   gdb_command_filera   r!   
executablerL   environgetappendrM   dirnameabspathCython__file__r[   pathseprN   r   r   r   r(   )	rj   prefix_codecodefargspathsrM   r   	__class__s	           r/   rp   GdbDebuggerTestCase.setUp   sm   zzoo ' ,  ##BQ' * + !& 7 78C!E $''-GGDM . xt'<'<dH&79 zz~~l+LLRWW__RWW__GGOOFOO,&. / 	02::"**//%*@A!!????	 .-s   G88
Hc                   > [        5       (       d  g  [        TU ]	  5         U R                  (       ab  U R                  R                  R                  5         U R                  R                  R                  5         U R                  R                  5         [        R                  " U R                  5        g !    Nc= f!    NF= f! [        R                  " U R                  5        f = frs   )r0   r   ru   r(   r
   ri   rd   waitrL   remover   )rj   r   s    r/   ru   GdbDebuggerTestCase.tearDown   s    zz		-GvvVV]]((*VV]]((*IId++,  IId++,s4   C $B5 $B< :C 5B97C <C >C "C%)r   r(   )rx   ry   rz   r{   rp   ru   r|   __classcell__)r   s   @r/   r~   r~      s    :x- -rw   r~   c                       \ rS rSrS rSrg)TestAll   c                    [        5       (       d  g U R                  R                  5       u  pUR                  S5      nUR                  S5      nU R                  R                  nUS:X  a?  [
        R                  R                  U5        [
        R                  R                  U5        g US:  aQ  SnU< SU< 3nU< SU< 3nU< SU< 3nSU< SU< U< SU< U< 3n[
        R                  R                  U5        g g )	NzUTF-8r   r   z******************************z   v INSIDE GDB v   z   v STDERR v   z   ^ INSIDE GDB ^   
)r0   r(   r   r   
returncoderc   rd   r!   )	rj   outerrexit_statusborderstartrd   enderrmsgs	            r/   test_allTestAll.test_all   s    zz66%%'jj!jj!ff''!JJS!JJS!AF396BE/5v>F396BC+0#vsCHFJJV$ rw   rI   N)rx   ry   rz   r{   r   r|   rI   rw   r/   r   r      s    %rw   r   __main__)*rL   r   rc   rU   r&   r   unittestr   r   	distutilsr   r^   Cython.Distutils.extensionr   Cython.Distutils.old_build_ext	Distutilsold_build_extr\   Cython.Debuggerr   r   rM   r   r   r   rootrN   r   rW   ra   r   	enumeratestripsource_to_linenor   r0   TestCaser2   r~   r   rx   main)ilines   00r/   <module>r      s   	 	 
          ! 2 2 *	wwrwwx0177<<j)ggll4,	(^q7@AGGA

aG  &R`$x(( `$FK-* K-\%! %8 zMMO u H ^s   6D;D5 D;5D;;
E	