
    ;ȋhX                        d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlZd dlmZ d dlmZ d dlmZ d dlmZmZmZmZ d dl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%Z%d dl&Z&d d
l'm(Z( ddl)m*Z+  e&j,                    d             Z-e j.        d             Z/e j.        d             Z0e&j1        2                    d           G d de                      Z3 G d de3          Z4dS )    N)	sysconfig	build_ext)Distribution)CompileErrorDistutilsPlatformErrorDistutilsSetupErrorUnknownFileError)	Extension)missing_compiler_executable)TempdirManagercopy_xxmodule_cfixup_build_ext)StringIO)support   )py39c              #     K   | j         }|                                |_        t          j        |j                  |_        ddlm} t          j	        }|                                t          _	        t          j	        |_	        |j        5  d V  d d d            n# 1 swxY w Y   |t          _	        ||_	        t          j        dk    rt          j        d           d S d S )Nr   r   cygwinr   )instancemkdtemptmp_dirpathPathtmp_pathdistutils.commandr   site	USER_BASEsysplatformtimesleep)requestselfr   orig_user_bases       g/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/setuptools/_distutils/tests/test_build_ext.pyuser_site_dirr'   $   s     D<<>>DLIdl++DM++++++^N\\^^DN.I
 
                 $DN(I
|x
1  s   	BB!Bc              #     K   t          j        |           5  t          | |          5 }t          j        |          5  d V  d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S N)import_helperCleanImportextension_redirectDirsOnSysPath)namer   new_paths      r&   safe_extension_importr0   =   sL     		"4	(	(  d++ 	x,X66                	 	 	 	 	 	 	 	 	 	 	 	 	 	 	                 sW   A=A%AA%AA%AA%A=%A)	)A=,A)	-A==BBc              #   "  K   t          j                    dk    rt          j         dk    r|V  dS t          j        |          5  t
          j                            |           }ddd           n# 1 swxY w Y   t          j	        
                    |j                  }t          j        d          }t          j	                            |t          j	        
                    |                    }t          j        |j        |           |V  dS )z
    Tests will fail to tear down an extension module if it's been imported.

    Before importing, copy the file to a temporary directory that won't
    be cleaned up. Yield the new path.
    Windowsr   Ndeleteme)prefix)r    systemr   r*   r-   	importlibutil	find_specosr   basenameorigintempfiler   joinshutilcopy)modr   specfilename	trash_dirdests         r&   r,   r,   E   s       I%%#,(*B*B


		$T	*	* - -~'',,- - - - - - - - - - - - - - -w,,H 
333I7<<	27#3#3H#=#=>>D
KT"""
OOOOOs    A00A47A4r'   c                   N   e Zd Zd Zej                            ddg          d             Ze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                            d          ej                            d          d                         Zej                            d          ej                            d          d                         Zej                            d          ej                            d          d                         Zd ZdS )TestBuildExtc                     t          |i |S r)   r   )r$   argskwargss      r&   r   zTestBuildExt.build_ext\   s    $)&)))    copy_soFc                 n   t                       t          | j                   t          j                            | j        d          }t          d|g          }t          j        dk    r|st          d|gdgdgdg          }nst          j        dk    rcd t          j
        d	          D             }t          |d
           }t          j        |d         d           t          d|gdgdgdg          }t          d|gd          }| j        |_        |                     |          }t#          |           | j        |_        | j        |_        t          j        }t*          j        st/                      t          _        	 |                                 |                                 |t          _        n# |t          _        w xY wt5          d| j                  5  |                     |           d d d            n# 1 swxY w Y   t          j        dk    r|rt          j        d           d S d S d S )Nz
xxmodule.cxxwin32/usr/libz)library_dirs	librariesruntime_library_dirslinuxc                 L    h | ]!}t           j                            |          "S  )r9   r   realpath).0r.   s     r&   	<setcomp>z.TestBuildExt.test_build_ext.<locals>.<setcomp>o   s5       /3BG$$T**  rJ   z/usr/lib*/libz.so*c                      t          |           S r)   )len)lib_paths    r&   <lambda>z-TestBuildExt.test_build_ext.<locals>.<lambda>r   s    s8}} rJ   )keyz/tmp/libxx_z.so/tmpxx_zr.   ext_modules)r   r   r   r9   r   r=   r   r   r    globiglobsortedr>   copyfiler   package_dirr   r   	build_lib
build_tempstdoutr   verboser   ensure_finalizedrunr0   _test_xxunlink)r$   rK   xx_cxx_extlibz_sodistcmd
old_stdouts           r&   test_build_extzTestBuildExt.test_build_ext_   s|   #%%%%%%w||DL,774$((<7"" "F","e*4   (( 7;zBV7W7W   !.L.LMMM->???"F"(%h*0   T6(CCDD<nnT""Z
 	$!CJ	$  """GGIII#CJJCJ####"466 	# 	#MM'"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# <7""w"I'((((( #"""s   (F8 8GH  HHc                    dd l }dD ]}t          ||          sJ |                    dd          dk    sJ |                    dd          dk    sJ |                                                                J t
          j        rd	}|j        |k    sJ t          |	                                |j	                  sJ t          |
                                |j
                  sJ t          j        d
k    rt          j        dd|j        gd          }dd l}|                    |           d |                    d          D             }| s!|                    |           d|vrd|vsJ d S d|v sJ d S d S )Nr   )errorfoonewroj                  z/This is a template module just for instruction.rT   readelfz-dT)universal_newlinesc                     g | ]D}d |v sd|v 
|                                 d         dd                              d          D ]}|ES )RPATHRUNPATHr}   r   r_   :)split)rX   linerpaths      r&   
<listcomp>z)TestBuildExt._test_xx.<locals>.<listcomp>   si       d??i4&7&7!ZZ\\!_QrT288== '8&7 &7&7&7&7rJ   
rO   z
/usr/lib64r`   )rM   hasattrrz   r{   demor   HAVE_DOCSTRINGS__doc__
isinstanceNullStrr   r    
subprocesscheck_output__file__pprintr   )rK   rM   attrdoc
so_headersr   rpathss          r&   ro   zTestBuildExt._test_xx   s   			2 	% 	%D2t$$$$$$vva||q    vvb"~~####vvxx}}&&&" 	%CC:$$$$"''))RW-----"&&((BF+++++<7""#0D"+.4  J MMMMM*%%% &,,T22  F  (f%%%!//L4N4N4N4N4N4N ''''' #"& ('rJ   c                    t          ddi          }|                     |          }t          j        }dt          _        ddlm} |                    d          }d|d<   	 |                                 |t          _        ||d= n"||d<   n# |t          _        ||d= n||d<   w xY wt          |j	                  dk    sJ d S )Nr.   rM   sunosr   )_config_varsPy_ENABLE_SHAREDT)
r   r   r   r    distutils.sysconfigr   getrm   r[   rQ   )r$   rt   ru   oldr   old_vars         r&   test_solaris_enable_sharedz'TestBuildExt.test_solaris_enable_shared   s    VTN++nnT""l444444""#566+/'(	;  """CL !3443:/00	 CL !3443:/0:::: 3#$$q((((((s    B B%c                    dd l }t          ddi          }|                     |          }d |j        D             }d|v sJ d|_        t
          j                            |j        d          }t
          j                            |j        d          }t          j	        |           t          j	        |           |
                                 ||j        v sJ ||j        v sJ ||j        v sJ d S )	Nr   r.   rM   c                     g | ]\  }}}|	S rV   rV   )rX   r.   shortlabels       r&   r   z/TestBuildExt.test_user_site.<locals>.<listcomp>   s    CCC.D%4CCCrJ   userTlibinclude)r   r   r   user_optionsr   r9   r   r=   r   mkdirrm   rQ   r   include_dirs)r$   r   rt   ru   optionsr   incls          r&   test_user_sitezTestBuildExt.test_user_site   s   VTN++nnT"" DC#2BCCC      gll4>511w||DNI66

 	 c&&&&&cis'''''''rJ   c                    t          ddgd          g}t          d|d          }|                     |          }|                                 t	          j        t          t          f          5  |                                 d d d            n# 1 swxY w Y   t          ddgd          g}t          d|d          }|                     |          }|                                 |                                 d S )Nrz   xxxFoptionalrM   rb   T)	r   r   r   rm   pytestraisesr
   r   rn   r$   modulesrt   ru   s       r&   test_optional_extensionz$TestBuildExt.test_optional_extension   s1    UUGe<<<=T'BBCCnnT""],l;<< 	 	GGIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 UUGd;;;<T'BBCCnnT""					s   0BBBc                    t          ddgd          g}t          d|d          }|                     |          }|                                 t	          j                    }|                    t          j        j	                  D ]}||j
        v sJ t	          j        d          }|                    t          j        j	                  D ]}||j
        v sJ |                     |          }d	|_        |                                 |j        g d
k    sJ |                     |          }dt          j	         d|_        |                                 d|j        v sJ d|j        v sJ |                     |          }dt          j	         d|_        |                                 |j        ddgk    sJ t          |          }d|_        |                                 |j        g dk    sJ |                     |          }d|_        |                                 |j        ddgk    sJ |                     |          }d|_        |                                 |j        ddgk    sJ |                     |          }d |_        |                                 |j        g k    sJ |                     |          }d|_        |                                 |j        ddgk    sJ d S )Nrz   r   Fr   rM   rb   T)plat_specificzmy_lib, other_lib lastlib)my_lib	other_liblastlib
my_lib_dirother_lib_dironetwozone two,three)r   r   threezone,two)r   1)r   r   z1 2r   2)r   r   r   finalize_optionsr   get_python_incr   r9   r   pathsepr   rR   rQ   r   link_objectsdefineundef	swig_opts)r$   r   rt   ru   
py_includepplat_py_includes          r&   test_finalize_optionsz"TestBuildExt.test_finalize_options   s-    UUGe<<<=T'BBCCnnT""-//
!!"'/22 	) 	)A((((((#2FFF &&rw77 	) 	)A(((((( nnT""3} B B BBBBB nnT""A
AAAs/////#"22222 nnT"")"*)))	yUEN**** oo*#:#:#::::: nnT""
zlL99999 nnT""	yUEN**** nnT""}""""nnT""}c
******rJ   c                    t                      }|                     |          }|                                 t          j        t
                    5  |                    d           d d d            n# 1 swxY w Y   ddg}t          j        t
                    5  |                    |           d d d            n# 1 swxY w Y   dg}t          j        t
                    5  |                    |           d d d            n# 1 swxY w Y   dg}t          j        t
                    5  |                    |           d d d            n# 1 swxY w Y   ddgdddfg}|                    |           |d	         }t          |t                    sJ |j	        dk    sJ t          |d
          rJ ddgddddgdfg}t          j        t
                    5  |                    |           d d d            n# 1 swxY w Y   ddg|d	         d         d<   |                    |           |d	         j        dgk    sJ |d	         j        dgk    sJ d S )Nrz   )barrz   r   )zfoo-bar )foo.barr   r   r   r   )sourcesrR   somer   r   )r   r   3)r   rR   r   macros)r   r   )r   r   r   r   )r   r   r   r   r   r	   check_extensions_listr   r   rR   r   undef_macrosdefine_macros)r$   rt   ru   extsexts        r&   test_check_extensions_listz'TestBuildExt.test_check_extensions_listC  s   ~~nnT"" ].// 	- 	-%%e,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-
 &u-].// 	, 	,%%d+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,   ].// 	, 	,%%d+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,
   ].// 	, 	,%%d+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 5%PPQR!!$'''1g#y)))))
 }%%%%3'''''
  "t!&!.6	 

 ].// 	, 	,%%d+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, !+F3Q
8!!$'''Aw#u,,,,Aw$444444sZ   A33A7:A7B==CC$DD
D
-EEEG??HHc                     t          ddgd          g}t          d|d          }|                     |          }|                                 |                                dgk    sJ d S )Nrz   r   Fr   rM   rb   )r   r   r   rm   get_source_filesr   s       r&   test_get_source_filesz"TestBuildExt.test_get_source_files  sx    UUGe<<<=T'BBCCnnT""##%%%000000rJ   c                 $   t          ddgd          t          ddgd          g}t          d|d          }|                     |          }|                                 t	          j        d	|                    |d
         j                            sJ t	          j        d|                    |d         j                            sJ |                    |d
                   dgk    sJ |                    |d                   dgk    sJ d S )Nrz   aaaFr   u   fööuuurM   rb   zfoo(_d)?\..*r   u   föö(_d)?\..*r   
PyInit_fooPyInitU_f_1gaa)	r   r   r   rm   researchget_ext_filenamer.   get_export_symbolsr   s       r&   test_unicode_module_namesz&TestBuildExt.test_unicode_module_names  s   eeWu555gw777
 T'BBCCnnT""y#*>*>wqz*O*OPPPPPy*C,@,@,Q,QRRRRR%%gaj11l^CCCC%%gaj116F5GGGGGGGrJ   c                 H   t          ddg          t          ddg          g}t          d|d          }|                     |          }|                                 |                    |d                   dgk    sJ |                    |d	                   d
gk    sJ d S )Nzfoo.__init__r   u   föö.__init__r   rM   rb   r   r   r   r   )r   r   r   rm   r   r   s       r&   test_export_symbols__init__z(TestBuildExt.test_export_symbols__init__  s     nug..&00
 T'BBCCnnT""%%gaj11l^CCCC%%gaj116F5GGGGGGGrJ   c                     t                      }|                     |          }d|_        |                                 |                                 |j        dk    sJ d S )Nunix)r   r   compilerrm   rn   )r$   rt   ru   s      r&   test_compiler_optionz!TestBuildExt.test_compiler_option  s]     ~~nnT""			|v%%%%%%rJ   c                    t                       |                                 }t          j                            |d          }|                     |d           t          d|gd          }t          d|gd          }|                     |          }t          |           |
                                 t          |                                          dk    sJ t          j                            | j        d	          |_        t          j                            | j        d
          |_        t          j                            |                                           }t          j                    }t          j        |           	 d|_        |                                 |                                d         }t          j        |           n# t          j        |           w xY wt          j                            |          sJ t-          j        d          }	|                    |	          sJ t          j                            |          }
|
|k    sJ d|_        d |_        |                                 |                                d         }t          j                            |          sJ |                    |	          sJ t          j                            |          }
|
|j        k    sJ |                    d          }ddi|_        |                    d          }t          j                            |          d         }||j        k    sJ d|_        t          j                            |                                           }t          j                    }t          j        |           	 |                    d          }t          j        |           n# t          j        |           w xY wt          j                            |          d         }t          j                            |          d         }|dk    sJ d S )Nzfoo.czvoid PyInit_foo(void) {}
rz   Fr   rM   rb   r   buildtemptTr   
EXT_SUFFIXbuild_pyr   r   r_   )r   r   r9   r   r=   
write_filer   r   r   r   rm   r[   get_outputsr   ri   rj   rW   getcwdchdirinplacern   existsr   get_config_varendswithdirnamer   get_finalized_commandrh   get_ext_fullpathr   )r$   r   c_filer   rt   ru   other_tmp_dirold_wdso_file
ext_suffixso_dirr   r   lastdirs                 r&   test_get_outputszTestBuildExt.test_get_outputs  s   #%%%,,..gw// <===x%888T3%@@AAnnT""3??$$%%****T\7;;dlG<< ((88
	CKGGIIIoo''*GHVBHVw~~g&&&&&-l;;

+++++))&&&&			//##A&w~~g&&&&&
+++++))&&&& ,,Z88 "E{##E**w}}T""1%s}$$$$ ((88
	''..DHVBHVw}}T""1%'--%%b)%s   5G G+O0 0Pc                    t          j        d          }t                      }|                     |          }d|_        ddi|j        _        ddg|j        _        t          j	                    }t          j
                            |ddd|z             }|                    d          }||k    sJ d	|_        t          j
                            |d
          |_        t          j
                            |d
dd|z             }|                    d          }||k    sJ |                    d          }i |_        ddg|j        _        |                    d          }t          j
                            |d
ddd|z             }||k    sJ d|_        |                    d          }t          j
                            |ddd|z             }||k    sJ d S )Nr   Tr   srclxmlz	lxml.htmletreez
lxml.etreeFtmpdirr   twistedztwisted.runner.portmaprunnerportmap)r   r   r   r   r   distributionrh   packagesr9   r   r   r=   r  ri   r  )r$   r   rt   ru   curdirwantedr   r   s           r&   test_ext_fullpathzTestBuildExt.test_ext_fullpath  s   &|44
 ~~nnT""(*E{$%+[$9!feVWs]CC##L11~~~~ VX66fh#FF##L11~~~~ ,,Z88!%.0H$I!##$<==fh	8YQT_UU~~~~ ##$<==fi9s?KK~~~~~~rJ   zplatform.system() != "Darwin"save_envc                 2    |                      dd            d S )Nz==)_try_compile_deployment_targetr$   s    r&   test_deployment_target_defaultz+TestBuildExt.test_deployment_target_default  s      	++D$77777rJ   c                     t          j        t                    5  |                     dd           d d d            d S # 1 swxY w Y   d S )N>z10.1)r   r   r   r  r  s    r&   test_deployment_target_too_lowz+TestBuildExt.test_deployment_target_too_low  s    
 ]122 	= 	=//V<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=s   >AAc                     t          j        d          }|rfd |                    d          D             }|dxx         dz  cc<   d                    d |D                       }|                     d|           d S d S )NMACOSX_DEPLOYMENT_TARGETc                 ,    g | ]}t          |          S rV   )int)rX   xs     r&   r   zATestBuildExt.test_deployment_target_higher_ok.<locals>.<listcomp>(  s    >>>AQ>>>rJ   .r_   r   c              3   4   K   | ]}t          |          V  d S r)   )str)rX   is     r&   	<genexpr>z@TestBuildExt.test_deployment_target_higher_ok.<locals>.<genexpr>*  s(       ; ;AQ ; ; ; ; ; ;rJ   <)r   r   r   r=   r  )r$   	deptargets     r&    test_deployment_target_higher_okz-TestBuildExt.test_deployment_target_higher_ok  s     ,-GHH	 	@>>)=)=>>>IbMMMQMMM ; ; ; ; ;;;I//Y?????	@ 	@rJ   c                    |-t           j                            d          rt           j        d= n|t           j        d<   t          j                            dt          j        d| d          i| j                   t          j
        d          }t          t          t          |                    d          dd                             }|d d         dk     rd	}nt          |          dk    rd
}nd} |j        | }t#          d| j        dz  gd| g          }t%          d|gd          }| j        |_        |                     |          }| j        |_        | j        |_        	 t0          j        }t4          j        st9                      t0          _        	 |                                 |                                 |t0          _        d S # |t0          _        w xY w# t>          $ r |                      d           Y d S w xY w)Nr"  zdeptargetmodule.czt                    #include <AvailabilityMacros.h>

                    int dummy;

                    #if TARGET z MAC_OS_X_VERSION_MIN_REQUIRED
                    #else
                    #error "Unexpected target"
                    #endif

                    r&  r   r}   )
   r/  z{:02}{:01}0z{:02}{:02}00z	{:02}0000r,  z	-DTARGET=)extra_compile_argsrb   z*Wrong deployment target during compilation)!r9   environr   jaracor   r   textwrapdedentr   r   r   tuplemapr$  r   r[   formatr   r   r   rh   r   ri   rj   r   rk   r   rl   r   rm   rn   r   fail)r$   operatortargettmpldeptarget_extrt   ru   rv   s           r&   r  z+TestBuildExt._try_compile_deployment_target-  s)   >z~~899 ;J9:5;BJ12#X_ 
6
 !)
6 
6 
6 
& 
& M	
 	
 	
$ )*DEEs3S 1 1!A# 67788 "1":   DD 6{{a% #f%!]001 4F 4 45
 
 

 [-QQRR<nnT""	DJ? (%ZZ
($$&&&			'


Z
'''' 	D 	D 	DIIBCCCCCC	Ds*   ,0G$ (G G$ G!!G$ $HHN)__name__
__module____qualname__r   r   markparametrizerw   staticmethodro   r   r   r   r   r   r   r   r   r   r  r  skipifusefixturesr  r   r-  r  rV   rJ   r&   rF   rF   Z   s       * * * [Y001) 1) 101)f "( "( \"(J) ) ),( ( (8   F+ F+ F+P:5 :5 :5x1 1 1H H HH H H	& 	& 	&=  =  = ~# # #J [788[Z((8 8 )( 988 [788[Z((= = )( 98= [788[Z((
@ 
@ )( 98
@@D @D @D @D @DrJ   rF   c                        e Zd Z fdZ xZS )TestParallelBuildExtc                 H     t                      j        |i |}d|_        |S )NT)superr   parallel)r$   rH   rI   r   	__class__s       r&   r   zTestParallelBuildExt.build_extq  s,    %EGG%t6v66	!	rJ   )r=  r>  r?  r   __classcell__)rJ  s   @r&   rF  rF  p  s8                rJ   rF  )5
contextlibrd   r6   os.pathr9   r    r   r>   r   r   r   r<   r3  r!   	distutilsr   distutils.command.build_extr   distutils.corer   distutils.errorsr   r   r	   r
   distutils.extensionr   distutils.testsr   distutils.tests.supportr   r   r   ior   jaraco.pathr2  r   r   testr   compatr   r*   fixturer'   contextmanagerr0   r,   r@  rD  rF   rF  rV   rJ   r&   <module>r[     s}              				       



          1 1 1 1 1 1 ' ' ' ' ' '            * ) ) ) ) ) 7 7 7 7 7 7 T T T T T T T T T T                   ) ) ) ) ) )   0      ( ))RD RD RD RD RD> RD RD *)RDj    <     rJ   