
    ϶vgM                        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             Z,e"j-        .                    d           G d de                      Z/ G d de/          Z0dS )    N)	sysconfig	build_ext)Distribution)CompileErrorDistutilsPlatformErrorDistutilsSetupErrorUnknownFileError)	Extension)missing_compiler_executable)TempdirManagercopy_xxmodule_cfixup_build_ext)StringIO)support   )py38c              #   t  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          _	        ||_	        d S )Nr   r   )
instancemkdtemptmp_dirpathPathtmp_pathdistutils.commandr   site	USER_BASE)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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_importr+   ;   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.
    WindowscygwinNdeleteme)prefix)platformsystemsysr%   r(   	importlibutil	find_specosr   basenameorigintempfiler   joinshutilcopy)modr   specfilename	trash_dirdests         r!   r'   r'   C   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                      e Zd Zd Z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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_extZ   s    $)&)))    c                    t                       t          | j                   t          j                            | j        d          }t          d|g          }t          d|gd          }| j        |_        | 	                    |          }t          |           | j        |_        | j        |_        t          j        }t          j        st#                      t          _        	 |                                 |                                 |t          _        n# |t          _        w xY wt)          d| j                  5  |                                  d d d            d S # 1 swxY w Y   d S )Nz
xxmodule.cxxr)   ext_modules)r   r   r   r7   r   r;   r   r   package_dirr   r   	build_lib
build_tempr3   stdoutr   verboser   ensure_finalizedrunr+   _test_xx)r   xx_cxx_extdistcmd
old_stdouts         r!   test_build_extzTestBuildExt.test_build_ext]   sw   #%%%%%%w||DL,774$((T6(CCDD<nnT""Z
 	$!CJ	$  """GGIII#CJJCJ####"466 	 	MMOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   %(D D( E""E&)E&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 d S )
Nr   )errorfoonewroj                  z/This is a template module just for instruction.)rJ   hasattrr]   r^   demor   HAVE_DOCSTRINGS__doc__
isinstanceNullStr)rJ   attrdocs      r!   rT   zTestBuildExt._test_xxv   s    			2 	% 	%D2t$$$$$$vva||q    vvb"~~####vvxx}}&&&" 	%CC:$$$$"''))RW-----"&&((BF+++++++rH   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)   rJ   sunosr   )_config_varsPy_ENABLE_SHAREDT)
r   r   r3   r1   distutils.sysconfigrq   getrR   lenlibrary_dirs)r   rW   rX   oldrq   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)   rJ   c                     g | ]\  }}}|	S  r|   ).0r)   shortlabels       r!   
<listcomp>z/TestBuildExt.test_user_site.<locals>.<listcomp>   s    CCC.D%4CCCrH   userTlibinclude)r   r   r   user_optionsr   r7   r   r;   r   mkdirrR   rv   rpathinclude_dirs)r   r   rW   rX   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'''''''rH   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 )Nr]   xxxFoptionalrJ   rK   T)	r   r   r   rR   pytestraisesr
   r   rS   r   modulesrW   rX   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 )Nr]   r   Fr   rJ   rK   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_incsplitr7   r   pathsepr   	librariesrv   r   link_objectsdefineundef	swig_opts)r   r   rW   rX   
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
******rH   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 )Nr]   )barr]   r   )zfoo-bar )foo.barr   r   r   r   )sourcesr   somer   r   )r   r   3)r   r   r   macros)r   r   )r   r   r   r   )r   r   r   r   r   r	   check_extensions_listrj   r   r   rf   undef_macrosdefine_macros)r   rW   rX   extsexts        r!   test_check_extensions_listz'TestBuildExt.test_check_extensions_list  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 )Nr]   r   Fr   rJ   rK   )r   r   r   rR   get_source_filesr   s       r!   test_get_source_filesz"TestBuildExt.test_get_source_filesL  sx    UUGe<<<=T'BBCCnnT""##%%%000000rH   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 )Nr]   aaaFr   u   fööuuurJ   rK   zfoo(_d)?\..*r   u   föö(_d)?\..*r   
PyInit_fooPyInitU_f_1gaa)	r   r   r   rR   researchget_ext_filenamer)   get_export_symbolsr   s       r!   test_unicode_module_namesz&TestBuildExt.test_unicode_module_namesS  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GrH   c                     t                      }|                     |          }d|_        |                                 |                                 |j        dk    sJ d S )Nunix)r   r   compilerrR   rS   )r   rW   rX   s      r!   test_compiler_optionz!TestBuildExt.test_compiler_option`  s]     ~~nnT""			|v%%%%%%rH   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) {}
r]   Fr   rJ   rK   r   buildtemptTr   
EXT_SUFFIXbuild_pyr   r   )r   r   r7   r   r;   
write_filer   r   r   r   rR   ru   get_outputsr   rN   rO   realpathgetcwdchdirinplacerS   existsr   get_config_varendswithdirnamer   get_finalized_commandrM   get_ext_fullpathr   )r   r   c_filer   rW   rX   other_tmp_dirold_wdso_file
ext_suffixso_dirr   r   lastdirs                 r!   test_get_outputszTestBuildExt.test_get_outputsk  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   distributionrM   packagesr7   r   r   r;   r   rN   r   )r   r   rW   rX   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~~~~~~rH   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7rH   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 r|   )int)r}   xs     r!   r   zATestBuildExt.test_deployment_target_higher_ok.<locals>.<listcomp>  s    >>>AQ>>>rH   .r   r   c              3   4   K   | ]}t          |          V  d S r$   )str)r}   is     r!   	<genexpr>z@TestBuildExt.test_deployment_target_higher_ok.<locals>.<genexpr>  s(       ; ;AQ ; ; ; ; ; ;rH   <)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?????	@ 	@rH   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	|z  }nt          |          dk    rd
|z  }nd|z  }t!          d| j        dz  gd| g          }t#          d|gd          }| j        |_        |                     |          }| j        |_        | j        |_        	 t.          j        }t2          j        st7                      t.          _        	 |                                 |                                 |t.          _        d S # |t.          _        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	%02d%01d0z
%02d%02d00z%02d0000r  z	-DTARGET=)extra_compile_argsrK   z*Wrong deployment target during compilation) r7   environrt   jaracor   r   textwrapdedentr   r   r   tuplemapr   r   ru   r   r   r   rM   r   rN   rO   r3   rP   r   rQ   r   rR   rS   r   fail)r   operatortargetdeptarget_extrW   rX   rY   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":   6)FF 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   rZ   staticmethodrT   ry   r   r   r   r   r   r   r   r   r   r   markskipifusefixturesr   r   r  r   r|   rH   r!   rD   rD   X   s       * * *  2 , , \,) ) ),( ( (8   F+ F+ F+P:5 :5 :5x1 1 1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rH   rD   c                        e Zd Z fdZ xZS )TestParallelBuildExtc                 H     t                      j        |i |}d|_        |S )NT)superr   parallel)r   rF   rG   r   	__class__s       r!   r   zTestParallelBuildExt.build_ext0  s,    %EGG%t6v66	!	rH   )r  r  r  r   __classcell__)r!  s   @r!   r  r  /  s8                rH   r  )1
contextlibr4   r7   r1   r   r<   r   r3   r:   r  	distutilsr   distutils.command.build_extr   distutils.corer   distutils.errorsr   r   r	   r
   distutils.extensionr   distutils.testsr   distutils.tests.supportr   r   r   ior   jaraco.pathr  r   r   testr   compatr   r%   fixturer"   contextmanagerr+   r'   r  r  rD   r  r|   rH   r!   <module>r1     su           				  				   



         1 1 1 1 1 1 ' ' ' ' ' '            * ) ) ) ) ) 7 7 7 7 7 7         
                   ) ) ) ) ) ) ) ) )*      ( ))SD SD SD SD SD> SD SD *)SDl    <     rH   