Ë
    nûàg0}  ã                   óì   — d 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 ddlmZmZmZmZmZmZ dd	lmZ dd
lmZmZmZ ddlmZmZmZ  ej<                  d«      Zd„ Z  G d„ de«      Z!y)z¶distutils.command.build_ext

Implements the Distutils 'build_ext' command, for building extension
modules (currently limited to C extensions, should accommodate C++
extensions ASAP).é    N)Úlog)Ú	USER_BASEé   )Únewer_group)ÚCommand)ÚCCompilerErrorÚCompileErrorÚDistutilsErrorÚDistutilsOptionErrorÚDistutilsPlatformErrorÚDistutilsSetupError)Ú	Extension)Úcustomize_compilerÚget_config_h_filenameÚget_python_version)Úget_platformÚis_freethreadedÚis_mingwz3^[a-zA-Z_][a-zA-Z_0-9]*(\.[a-zA-Z_][a-zA-Z_0-9]*)*$c                  ó   — ddl m}   | «        y )Nr   ©Úshow_compilers)Ú	ccompilerr   r   s    úe/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/setuptools/_distutils/command/build_ext.pyr   r   !   s   € Ý*áÕó    c                   ó:  — e Zd ZdZdej
                  › d�Zddddd e«       › d	�fd
dddez   fddddddez   fddddddddddgZg d¢Z	dd d!e
fgZd"„ Zed#„ «       Zd$„ Zd%„ Zd&„ Zd'„ Zd(„ Zd)„ Zd*„ Zd+„ Zej0                  d,„ «       Zd-„ Zd.„ Zd/„ Zd0„ Zd1„ Zd2„ Zd3„ Z d4„ Z!y )5Ú	build_extz8build C/C++ extensions (compile/link to build directory)z (separated by 'z'))z
build-lib=Úbz(directory for compiled extension modules)zbuild-temp=Útz1directory for temporary files (build by-products)z
plat-name=Úpz;platform name to cross-compile for, if supported [default: ú])ÚinplaceÚiziignore build-lib and put compiled extensions into the source directory alongside your pure Python moduleszinclude-dirs=ÚIz.list of directories to search for header files)zdefine=ÚDzC preprocessor macros to define)zundef=ÚUz!C preprocessor macros to undefine)z
libraries=Úlz!external C libraries to link withzlibrary-dirs=ÚLz.directories to search for external C libraries)zrpath=ÚRz7directories to search for shared C libraries at runtime)zlink-objects=ÚOz2extra explicit link objects to include in the link)ÚdebugÚgz'compile/link with debugging information)ÚforceÚfz2forcibly build everything (ignore file timestamps))z	compiler=Úczspecify the compiler type)z	parallel=Újznumber of parallel build jobs)úswig-cppNz)make SWIG create C++ files (default is C))z
swig-opts=Nz!list of SWIG command line options)zswig=Nzpath to the SWIG executable)ÚuserNz#add user include, library and rpath)r!   r*   r,   r0   r1   zhelp-compilerNzlist available compilersc                 ó*  — d | _         d | _        d | _        d | _        d| _        d | _        d | _        d | _        d | _        d | _	        d | _
        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        y )NF)Ú
extensionsÚ	build_libÚ	plat_nameÚ
build_tempr!   ÚpackageÚinclude_dirsÚdefineÚundefÚ	librariesÚlibrary_dirsÚrpathÚlink_objectsr*   r,   ÚcompilerÚswigÚswig_cppÚ	swig_optsr1   Úparallel©Úselfs    r   Úinitialize_optionszbuild_ext.initialize_optionsk   s˜   € ØˆŒØˆŒØˆŒØˆŒØˆŒØˆŒà ˆÔØˆŒØˆŒ
ØˆŒØ ˆÔØˆŒ
Ø ˆÔØˆŒ
ØˆŒ
ØˆŒØˆŒ	ØˆŒØˆŒØˆŒ	Øˆ�r   c              #   ó(  K  — | j                  d«      sy| j                  rd–— yt        j                  dk(  rE| j                  d«      }| j                  d«      }t        j
                  j                  ||«      –— y| j                  d«      –— y­w)zµ
        Resolve Python's library directory for building extensions
        that rely on a shared Python library.

        See python/cpython#44264 and python/cpython#48686
        ÚPy_ENABLE_SHAREDNú.ÚzosÚbaseÚ
platlibdirÚLIBDIR)Úget_config_varÚpython_buildÚsysÚplatformÚosÚpathÚjoin)Ú	sysconfigÚinstalled_dirÚlib_dirs      r   Ú_python_lib_dirzbuild_ext._python_lib_dirƒ   s�   è ø€ ð ×'Ñ'Ð(:Ô;Øà×!Ò!ØŠIØä�<‰<˜5Ò ð &×4Ñ4°VÓ<ˆMØ×.Ñ.¨|Ó<ˆGÜ—'‘'—,‘,˜}¨gÓ6Ó6ð ×*Ñ*¨8Ó4Ó4ùs   ‚BBc           
      ó&  — ddl m} | j                  ddddddd	d
«       | j                  €| j                  j
                  | _        | j                  j                  | _        |j                  «       }|j                  d¬«      }| j                  €| j                  j                  xs g | _	        t        | j                  t        «      r.| j                  j                  t        j                  «      | _	        t        j                   t        j"                  k7  rG| j                  j%                  t        j&                  j)                  t        j                   d«      «       | j                  j+                  |j                  t        j&                  j                  «      «       ||k7  rB| j                  j+                  |j                  t        j&                  j                  «      «       | j-                  d«       | j-                  d«       | j.                  €g | _        | j0                  €g | _        nHt        | j0                  t        «      r.| j0                  j                  t        j                  «      | _        | j2                  €g | _        nHt        | j2                  t        «      r.| j2                  j                  t        j                  «      | _        t        j4                  dk(  �rt7        «       �s| j0                  j%                  t        j&                  j)                  t        j                   d«      «       t        j"                  t        j8                  k7  rG| j0                  j%                  t        j&                  j)                  t        j"                  d«      «       | j:                  r0t        j&                  j)                  | j<                  d«      | _        n/t        j&                  j)                  | j<                  d«      | _        | j                  j%                  t        j&                  j?                  tA        «       «      «       | j0                  j%                  t        j"                  «       | jB                  dk(  rd}n| jB                  dd  }t        j&                  j)                  t        j                   d«      }|r t        j&                  j)                  ||«      }| j0                  j%                  |«       t        jD                  d d dk(  r||jF                  sU| j0                  j%                  t        j&                  j)                  t        j8                  ddtI        «       z   d«      «       n| j0                  j%                  d«       | j0                  j+                  | jK                  |«      «       | jL                  r2| jL                  j                  d«      }|D �cg c]  }|df‘Œ c}| _&        | jN                  r | jN                  j                  d«      | _'        | jP                  €g | _(        n | jP                  j                  d«      | _(        | jR                  r×t        j&                  j)                  tT        d«      }t        j&                  j)                  tT        d«      }	t        j&                  jW                  |«      r| j                  j%                  |«       t        j&                  jW                  |	«      r6| j0                  j%                  |	«       | j2                  j%                  |	«       t        | jX                  t        «      r	 t[        | jX                  «      | _,        y y c c}w # t\        $ r t_        d «      ‚w xY w)!Nr   )rU   Úbuild)r4   r4   )r6   r6   )r?   r?   )r*   r*   )r,   r,   )rC   rC   )r5   r5   T)Úplat_specificÚincluder;   r>   ÚntÚlibsÚDebugÚReleaseÚwin32é   ÚPCbuildé   ÚcygwinÚlibÚpythonÚconfigrI   ú,Ú1ú zparallel should be an integer)0Ú	distutilsrU   Úset_undefined_optionsr7   ÚdistributionÚext_packageÚext_modulesr3   Úget_python_incr8   Ú
isinstanceÚstrÚsplitrR   ÚpathseprP   Úexec_prefixÚbase_exec_prefixÚappendrS   rT   ÚextendÚensure_string_listr;   r<   r=   Únamer   Úprefixr*   r6   Údirnamer   r5   rQ   rO   r   rX   r9   r:   rB   r1   r   ÚisdirrC   ÚintÚ
ValueErrorr   )
rE   rU   Ú
py_includeÚplat_py_includeÚsuffixÚnew_libÚdefinesÚsymbolÚuser_includeÚuser_libs
             r   Úfinalize_optionszbuild_ext.finalize_optionsœ   sF  € Ý'à×"Ñ"ØØ&Ø(Ø$ØØØ$Ø&ô		
ð �<‰<ÐØ×,Ñ,×8Ñ8ˆDŒLà×+Ñ+×7Ñ7ˆŒð ×-Ñ-Ó/ˆ
Ø#×2Ñ2ÀÐ2ÓFˆØ×ÑÐ$Ø $× 1Ñ 1× >Ñ >Ò DÀ"ˆDÔÜ�d×'Ñ'¬Ô-Ø $× 1Ñ 1× 7Ñ 7¼¿
¹
Ó CˆDÔô �?‰?œc×2Ñ2Ò2Ø×Ñ×$Ñ$¤R§W¡W§\¡\´#·/±/À9Ó%MÔNð 	×Ñ× Ñ  ×!1Ñ!1´"·'±'·/±/Ó!BÔCØ˜jÒ(Ø×Ñ×$Ñ$ _×%:Ñ%:¼2¿7¹7¿?¹?Ó%KÔLà×Ñ Ô,Ø×Ñ Ô/ð �>‰>Ð!ØˆDŒNØ×ÑÐ$Ø "ˆDÕÜ˜×)Ñ)¬3Ô/Ø $× 1Ñ 1× 7Ñ 7¼¿
¹
Ó CˆDÔà�:‰:ÐØˆD�JÜ˜Ÿ
™
¤CÔ(ØŸ™×)Ñ)¬"¯*©*Ó5ˆDŒJô
 �7‰7�d‹?¤8¥:ð ×Ñ×$Ñ$¤R§W¡W§\¡\´#·/±/À6Ó%JÔKÜ×#Ñ#¤s§z¡zÒ1Ø×!Ñ!×(Ñ(¬¯©¯©´c×6JÑ6JÈFÓ)SÔTØ�zŠzÜ"$§'¡'§,¡,¨t¯©ÀÓ"H�•ä"$§'¡'§,¡,¨t¯©À	Ó"J�”ð ×Ñ×$Ñ$¤R§W¡W§_¡_Ô5JÓ5LÓ%MÔNØ×Ñ×$Ñ$¤S×%9Ñ%9Ô:ð �~‰~ Ò(Ø ‘ð Ÿ™¨¨Ð+�Ü—g‘g—l‘l¤3§?¡?°IÓ>ˆGÙÜŸ'™'Ÿ,™, w°Ó7�Ø×Ñ×$Ñ$ WÔ-ô �<‰<˜˜Ð˜xÒ'Ø×)Ò)à×!Ñ!×(Ñ(Ü—G‘G—L‘LÜŸ
™
 E¨8Ô6HÓ6JÑ+JÈHóõð ×!Ñ!×(Ñ(¨Ô-à×Ñ× Ñ  ×!5Ñ!5°iÓ!@ÔAð �;Š;Ø—k‘k×'Ñ'¨Ó,ˆGØ7>Ö?¨V˜F Cš=Ò?ˆDŒKð
 �:Š:ØŸ™×)Ñ)¨#Ó.ˆDŒJà�>‰>Ð!ØˆD�Nà!Ÿ^™^×1Ñ1°#Ó6ˆDŒNð �9Š9ÜŸ7™7Ÿ<™<¬	°9Ó=ˆLÜ—w‘w—|‘|¤I¨uÓ5ˆHÜ�w‰w�}‰}˜\Ô*Ø×!Ñ!×(Ñ(¨Ô6Ü�w‰w�}‰}˜XÔ&Ø×!Ñ!×(Ñ(¨Ô2Ø—
‘
×!Ñ! (Ô+ä�d—m‘m¤SÔ)ðLÜ # D§M¡MÓ 2�•ð *ùò/ @øô4 ò LÜ*Ð+JÓKÐKðLús   ×)]6Ý]; Ý;^c                 óÂ  — ddl m} | j                  sy | j                  j	                  «       rc| j                  d«      }| j                  j                  |j                  «       xs g «       | j                  j                  |j                  «        || j                  | j                  | j                  | j                  ¬«      | _        t!        | j                  «       t"        j$                  dk(  r<| j&                  t)        «       k7  r%| j                  j+                  | j&                  «       t"        j$                  dk(  r&t-        «       r| j                  j/                  dd«       | j0                  �%| j                  j3                  | j0                  «       | j4                  �0| j4                  D ]!  \  }}| j                  j/                  ||«       Œ# | j6                  �,| j6                  D ]  }| j                  j9                  |«       Œ | j                  �%| j                  j;                  | j                  «       | j                  �%| j                  j=                  | j                  «       | j>                  �%| j                  jA                  | j>                  «       | jB                  �%| j                  jE                  | jB                  «       | jG                  «        y )Nr   )Únew_compilerÚ
build_clib)r?   ÚverboseÚdry_runr,   r]   ÚPy_GIL_DISABLEDrj   )$r   r‹   r3   rn   Úhas_c_librariesÚget_finalized_commandr;   ry   Úget_library_namesr<   rx   rŒ   r?   r�   rŽ   r,   r   rR   r{   r5   r   Ú
initializer   Údefine_macror8   Úset_include_dirsr9   r:   Úundefine_macroÚset_librariesÚset_library_dirsr=   Úset_runtime_library_dirsr>   Úset_link_objectsÚbuild_extensions)rE   r‹   rŒ   r{   ÚvalueÚmacros         r   Úrunzbuild_ext.run'  s  € Ý,ð �ŠØð
 ×Ñ×,Ñ,Ô.Ø×3Ñ3°LÓAˆJØ�N‰N×!Ñ! *×">Ñ">Ó"@Ò"FÀBÔGØ×Ñ×$Ñ$ Z×%:Ñ%:Ô;ñ %Ø—]‘]Ø—L‘LØ—L‘LØ—*‘*ô	
ˆŒô 	˜4Ÿ=™=Ô)ô �7‰7�dŠ?˜tŸ~™~´³Ò?Ø�M‰M×$Ñ$ T§^¡^Ô4ô
 �7‰7�dŠ?œÔ0Ø�M‰M×&Ñ&Ð'8¸#Ô>ð ×ÑÐ(Ø�M‰M×*Ñ*¨4×+<Ñ+<Ô=Ø�;‰;Ð"à#Ÿ{™{ò 8‘��eØ—‘×*Ñ*¨4°Õ7ð8à�:‰:Ð!ØŸ™ò 4�Ø—‘×,Ñ,¨UÕ3ð4à�>‰>Ð%Ø�M‰M×'Ñ'¨¯©Ô7Ø×ÑÐ(Ø�M‰M×*Ñ*¨4×+<Ñ+<Ô=Ø�:‰:Ð!Ø�M‰M×2Ñ2°4·:±:Ô>Ø×ÑÐ(Ø�M‰M×*Ñ*¨4×+<Ñ+<Ô=ð 	×ÑÕr   c                 óÈ  — t        |t        «      st        d«      ‚t        |«      D �]¸  \  }}t        |t        «      rŒt        |t
        «      rt        |«      dk7  rt        d«      ‚|\  }}t        j                  d|«       t        |t        «      rt        j                  |«      st        d«      ‚t        |t        «      st        d«      ‚t	        ||d   «      }dD ]#  }|j                  |«      }|€Œt        |||«       Œ% |j                  d
«      |_        d|v rt        j                  d«       |j                  d«      }|r”g |_        g |_        |D ]�  }	t        |	t
        «      rt        |	«      dv st        d«      ‚t        |	«      dk(  r|j"                  j%                  |	d   «       ŒXt        |	«      dk(  sŒg|j                   j%                  |	«       Œƒ |||<   �Œ» y	)a¬  Ensure that the list of extensions (presumably provided as a
        command option 'extensions') is valid, i.e. it is a list of
        Extension objects.  We also support the old-style list of 2-tuples,
        where the tuples are (ext_name, build_info), which are converted to
        Extension instances here.

        Raise DistutilsSetupError if the structure is invalid anywhere;
        just returns otherwise.
        z:'ext_modules' option must be a list of Extension instancesr   zMeach element of 'ext_modules' option must be an Extension instance or 2-tuplezvold-style (ext_name, build_info) tuple found in ext_modules for extension '%s' -- please convert to Extension instancezRfirst element of each tuple in 'ext_modules' must be the extension name (a string)zOsecond element of each tuple in 'ext_modules' must be a dictionary (build info)Úsources)r8   r<   r;   Úextra_objectsÚextra_compile_argsÚextra_link_argsNr=   Údef_filez9'def_file' element of build info dict no longer supportedÚmacros)é   r   z9'macros' element of build info dict must be 1- or 2-tupler¦   r   )rr   Úlistr   Ú	enumerater   ÚtupleÚlenr   Úwarningrs   Úextension_name_reÚmatchÚdictÚgetÚsetattrÚruntime_library_dirsÚdefine_macrosÚundef_macrosrx   )
rE   r3   r"   ÚextÚext_nameÚ
build_infoÚkeyÚvalr¥   r�   s
             r   Úcheck_extensions_listzbuild_ext.check_extensions_listo  sï  € ô ˜*¤dÔ+Ü%ØLóð ô   
Ó+ó G	 ‰FˆAˆsÜ˜#œyÔ)Øô ˜c¤5Ô)¬S°«X¸ª]Ü)ð4óð ð
 $'Ñ ˆH�jä�K‰Kð:ð ô	ô ˜x¬Ô-Ô2C×2IÑ2IÈ(Ô2SÜ)ð<óð ô
 ˜j¬$Ô/Ü)ð8óð ô ˜H j°Ñ&;Ó<ˆCðò 
+�ð !—n‘n SÓ)�Ø‘?Ü˜C  cÕ*ð
+ð (2§~¡~°gÓ'>ˆCÔ$Ø˜ZÑ'Ü—‘ÐWÔXð  —^‘^ HÓ-ˆFÙØ$&�Ô!Ø#%�Ô Ø#ò 8�EÜ& u¬eÔ4¼¸U»ÀvÑ9MÜ1ØWóð ô ˜5“z Q’Ø×(Ñ(×/Ñ/°°a±Õ9Ü˜U› q›Ø×)Ñ)×0Ñ0°Õ7ð8ð  ˆJ�q‹MñOG	 r   c                 ó˜   — | j                  | j                  «       g }| j                  D ]  }|j                  |j                  «       Œ |S ©N)r¹   r3   ry   r    )rE   Ú	filenamesr´   s      r   Úget_source_fileszbuild_ext.get_source_filesÇ  sF   € Ø×"Ñ" 4§?¡?Ô3Øˆ	ð —?‘?ò 	*ˆCØ×Ñ˜SŸ[™[Õ)ð	*àÐr   c                 ó¨   — | j                  | j                  «       | j                  D �cg c]  }| j                  |j                  «      ‘Œ c}S c c}w r»   )r¹   r3   Úget_ext_fullpathr{   ©rE   r´   s     r   Úget_outputszbuild_ext.get_outputsÐ  s@   € ð 	×"Ñ" 4§?¡?Ô3ð
 <@¿?¹?ÖK°C�×%Ñ% c§h¡hÕ/ÒKÐKùÒKs   ª"Ac                 ó”   — | j                  | j                  «       | j                  r| j                  «        y | j	                  «        y r»   )r¹   r3   rC   Ú_build_extensions_parallelÚ_build_extensions_serialrD   s    r   r›   zbuild_ext.build_extensionsÛ  s3   € à×"Ñ" 4§?¡?Ô3Ø�=Š=Ø×+Ñ+Õ-à×)Ñ)Õ+r   c                 ó  — | j                   }| j                   du rt        j                  «       }	 ddlm} |€| j                  «        y  |¬«      5 }| j                  D �cg c]  }|j                  | j                  |«      ‘Œ  }}t        | j                  |«      D ]/  \  }}| j                  |«      5  |j                  «        d d d «       Œ1 	 d d d «       y # t
        $ r d }Y Œ¯w xY wc c}w # 1 sw Y   Œ[xY w# 1 sw Y   y xY w)NTr   )ÚThreadPoolExecutor)Úmax_workers)rC   rR   Ú	cpu_countÚconcurrent.futuresrÆ   ÚImportErrorrÄ   r3   ÚsubmitÚbuild_extensionÚzipÚ_filter_build_errorsÚresult)rE   ÚworkersrÆ   Úexecutorr´   ÚfuturesÚfuts          r   rÃ   z$build_ext._build_extensions_parallelã  sþ   € Ø—-‘-ˆØ�=‰=˜DÑ Ü—l‘l“nˆGð	Ý=ð ˆ?Ø×)Ñ)Ô+Øá¨GÔ4ð 	!¸àFJÇoÁoöØ?B�—‘ × 4Ñ 4°cÕ:ðˆGð ô   §¡°Ó9ò !‘��SØ×.Ñ.¨sÓ3ñ !Ø—J‘J”L÷!ð !ñ!÷		!ð 	!øô ò 	ØŠGð	üò÷!ð !ú÷	!ð 	!úsG   °C ÁC:Á!#C)Â/C:Â3C.Ã
C:ÃC&Ã%C&Ã)C:Ã.C7Ã3C:Ã:Dc                 ó”   — | j                   D ]-  }| j                  |«      5  | j                  |«       d d d «       Œ/ y # 1 sw Y   Œ:xY wr»   )r3   rÎ   rÌ   rÀ   s     r   rÄ   z"build_ext._build_extensions_serialø  sK   € Ø—?‘?ò 	*ˆCØ×*Ñ*¨3Ó/ñ *Ø×$Ñ$ SÔ)÷*ð *ñ	*÷*ð *ús	   ¡>¾A	c              #   ó´   K  — 	 d –— y # t         t        t        f$ r8}|j                  s‚ | j	                  d|j
                  › d|› �«       Y d }~y d }~ww xY w­w)Nzbuilding extension "z
" failed: )r   r
   r	   ÚoptionalÚwarnr{   )rE   r´   Úes      r   rÎ   zbuild_ext._filter_build_errorsý  sR   è ø€ ð	FÜøÜ¤´Ð=ò 	FØ—<’<ØØ�I‰IÐ,¨S¯X©X¨J°jÀÀÐD×EÑEûð	Füs*   ‚A„	 ˆA‰A�.AÁAÁAÁAc                 ó‚  — |j                   }|�t        |t        t        f«      st	        d|j
                  › d�«      ‚t        |«      }| j                  |j
                  «      }||j                  z   }| j                  s.t        ||d«      s!t        j                  d|j
                  «       y t        j                  d|j
                  «       | j                  ||«      }|j                  xs g }|j                   d d  }|j"                  D ]  }|j%                  |f«       Œ | j&                  j)                  || j*                  ||j,                  | j                  ||j                  ¬«      }|d d  | _        |j0                  r|j3                  |j0                  «       |j4                  xs g }|j6                  xs | j&                  j9                  |«      }	| j&                  j;                  ||| j=                  |«      |j>                  |j@                  || jC                  |«      | j                  | j*                  |	¬«
       y )Nz$in 'ext_modules' option (extension 'zD'), 'sources' must be present and must be a list of source filenamesÚnewerz$skipping '%s' extension (up-to-date)zbuilding '%s' extension)Ú
output_dirr¥   r8   r*   Úextra_postargsÚdepends)r;   r<   r±   rÜ   Úexport_symbolsr*   r6   Útarget_lang)"r    rr   r§   r©   r   r{   Úsortedr¿   rÝ   r,   r   r   r*   ÚinfoÚswig_sourcesr¢   r²   r³   rx   r?   Úcompiler6   r8   Ú_built_objectsr¡   ry   r£   ÚlanguageÚdetect_languageÚlink_shared_objectÚget_librariesr<   r±   Úget_export_symbols)
rE   r´   r    Úext_pathrÝ   Ú
extra_argsr¥   r:   Úobjectsrå   s
             r   rÌ   zbuild_ext.build_extension  sü  € Ø—+‘+ˆØˆ?¤*¨W´t¼U°mÔ"DÜ%Ø6°s·x±x°jð A-ð -óð ô ˜“/ˆà×(Ñ(¨¯©Ó2ˆØ˜CŸK™KÑ'ˆØ—
’
œk¨'°8¸WÔEÜ�I‰IÐ<¸c¿h¹hÔGØä�H‰HÐ.°·±Ô9ð
 ×#Ñ# G¨SÓ1ˆð  ×+Ñ+Ò1¨rˆ
à×"Ñ"¡1Ð%ˆØ×%Ñ%ò 	$ˆEØ�M‰M˜5˜(Õ#ð	$ð —-‘-×'Ñ'ØØ—‘ØØ×)Ñ)Ø—*‘*Ø%Ø—K‘Kð (ó 
ˆð &¡a˜jˆÔð
 ×ÒØ�N‰N˜3×,Ñ,Ô-Ø×(Ñ(Ò.¨Bˆ
ð —<‘<ÒI 4§=¡=×#@Ñ#@ÀÓ#Iˆà�‰×(Ñ(ØØØ×(Ñ(¨Ó-Ø×)Ñ)Ø!$×!9Ñ!9Ø%Ø×2Ñ2°3Ó7Ø—*‘*Ø—‘Ø ð 	)õ 	
r   c                 ó  — g }g }i }| j                   rt        j                  d«       | j                   sd| j                  v sd|j                  v rd}nd}|D ]k  }t        j
                  j                  |«      \  }}	|	dk(  r1|j                  |dz   |z   «       |j                  |«       |d   ||<   Œ[|j                  |«       Œm |s|S | j                  xs | j                  «       }
|
dg}|j                  | j                  «       | j                   r|j                  d«       | j                  s|j                  |j                  «       |D ]5  }||   }t        j                  d	||«       | j                  |d
||gz   «       Œ7 |S )züWalk the list of source files in 'sources', looking for SWIG
        interface (.i) files.  Run SWIG on all that are found, and
        return a modified 'sources' list with SWIG source files replaced
        by the generated C (or C++) files.
        z/--swig-cpp is deprecated - use --swig-opts=-c++z-c++z.cppz.cz.iÚ_wrapéÿÿÿÿz-pythonzswigging %s to %sz-o)rA   r   r«   rB   rR   rS   Úsplitextrx   r@   Ú	find_swigry   rá   Úspawn)rE   r    Ú	extensionÚnew_sourcesrâ   Úswig_targetsÚ
target_extÚsourcerK   r´   r@   Úswig_cmdÚtargets                r   râ   zbuild_ext.swig_sourcesW  sw  € ð ˆØˆØˆð �=Š=Ü�K‰KÐIÔJð �MŠMØ˜$Ÿ.™.Ñ(Ø˜)×-Ñ-Ñ-à‰JàˆJàò 	+ˆFÜŸ'™'×*Ñ*¨6Ó2‰KˆT�3Ø�dŠ{Ø×"Ñ" 4¨'¡>°JÑ#>Ô?Ø×#Ñ# FÔ+Ø'2°2¡�˜VÒ$à×"Ñ" 6Õ*ð	+ñ ØÐà�y‰yÒ,˜DŸN™NÓ,ˆØ˜)Ð$ˆØ�‰˜Ÿ™Ô'Ø�=Š=Ø�O‰O˜FÔ#ð �~Š~Ø�O‰O˜I×/Ñ/Ô0à"ò 	:ˆFØ! &Ñ)ˆFÜ�H‰HÐ(¨&°&Ô9Ø�J‰J�x 4¨°Ð"8Ñ8Õ9ð	:ð
 Ðr   c                 ó&  — t         j                  dk(  ryt         j                  dk(  rNdD ]H  }t         j                  j                  d|› �d«      }t         j                  j	                  |«      sŒF|c S  yt        dt         j                  › d�«      ‚)	z›Return the name of the SWIG executable.  On Unix, this is
        just "swig" -- it should be in the PATH.  Tries a bit harder on
        Windows.
        Úposixr@   r]   )z1.3z1.2z1.1zc:\swigzswig.exez;I don't know how to find (much less run) SWIG on platform 'ú')rR   r{   rS   rT   Úisfiler   )rE   ÚversÚfns      r   rñ   zbuild_ext.find_swig�  s‚   € ô
 �7‰7�gÒØÜ�W‰W˜Š_ð .ò "�Ü—W‘W—\‘\ H¨T¨FÐ"3°ZÓ@�Ü—7‘7—>‘> "Õ%Ø’Ið"ð
 "ä(ØMÌbÏgÉgÈYÐVWÐXóð r   c                 ó  — | j                  |«      }|j                  d«      }| j                  |d   «      }| j                  sMt	        j
                  j                  |dd |gz   Ž }t        j
                  j                  | j                  |«      S dj                  |dd «      }| j                  d«      }t        j
                  j                  |j                  |«      «      }t        j
                  j                  ||«      S )z¡Returns the path of the filename for a given extension.

        The file is located in `build_lib` or directly in the package
        (inplace option).
        rI   rï   Nr   Úbuild_py)Úget_ext_fullnamert   Úget_ext_filenamer!   rR   rS   rT   r4   r‘   ÚabspathÚget_package_dir)rE   rµ   ÚfullnameÚmodpathÚfilenamer7   r  Úpackage_dirs           r   r¿   zbuild_ext.get_ext_fullpath§  sÑ   € ð ×(Ñ(¨Ó2ˆØ—.‘. Ó%ˆØ×(Ñ(¨°©Ó5ˆà�|Š|ô —w‘w—|‘| W¨S¨b \°X°JÑ%>Ð?ˆHÜ—7‘7—<‘< §¡°Ó9Ð9ð —(‘(˜7 1 R˜=Ó)ˆØ×-Ñ-¨jÓ9ˆÜ—g‘g—o‘o h×&>Ñ&>¸wÓ&GÓHˆô �w‰w�|‰|˜K¨Ó2Ð2r   c                 óB   — | j                   €|S | j                   dz   |z   S )zSReturns the fullname of a given extension name.

        Adds the `package.` prefixrI   )r7   )rE   rµ   s     r   r  zbuild_ext.get_ext_fullnameÂ  s'   € ð �<‰<ÐØˆOà—<‘< #Ñ%¨Ñ0Ð0r   c                 ó~   — ddl m} |j                  d«      } |d«      }t        j                  j
                  |Ž |z   S )z¦Convert the name of an extension (eg. "foo.bar") into the name
        of the file from which it will be loaded (eg. "foo/bar.so", or
        "foo\bar.pyd").
        r   ©rN   rI   Ú
EXT_SUFFIX)rU   rN   rt   rR   rS   rT   )rE   rµ   rN   rê   Ú
ext_suffixs        r   r  zbuild_ext.get_ext_filenameË  s7   € õ
 	/à—>‘> #Ó&ˆÙ# LÓ1ˆ
Ü�w‰w�|‰|˜XÐ&¨Ñ3Ð3r   c                 ód  — |j                   j                  d«      d   }	 |j                  d«       d|z   }d	|z   }||j                  vr|j                  j                  |«       |j                  S # t        $ r6 d|j                  d«      j	                  dd«      j                  d«      z   }Y Œxw xY w)
a  Return the list of symbols that a shared extension has to
        export.  This either uses 'ext.export_symbols' or, if it's not
        provided, "PyInit_" + module_name.  Only relevant on Windows, where
        the .pyd file (DLL) must export the module "PyInit_" function.
        rI   rï   ÚasciiÚ_ÚU_Úpunycodeó   -ó   _ÚPyInit)r{   rt   ÚencodeÚUnicodeEncodeErrorÚreplaceÚdecoderÞ   rx   )rE   r´   r{   rƒ   Úinitfunc_names        r   ré   zbuild_ext.get_export_symbolsÖ  s¯   € ð �x‰x�~‰~˜cÓ" 2Ñ&ˆð	 ð �K‰K˜Ô ð ˜4‘ZˆFà  6Ñ)ˆØ × 2Ñ 2Ñ2Ø×Ñ×%Ñ% mÔ4Ø×!Ñ!Ð!øô "ò 	XØ˜DŸK™K¨
Ó3×;Ñ;¸DÀ$ÓG×NÑNÈwÓWÑWŠFð	Xús    A0 Á0<B/Â.B/c                 ó\  — t         j                  dk(  r�t        «       swddlm} t        | j                  |«      sOd}| j                  r|dz   }|t         j                  dz	  t         j                  dz	  dz  fz  }|j                  |gz   S |j                  S dd	l
m} d
} |d«      r`t        t         d«      rd}nMt         j                  dk(  s
t        «       rd}n-dt        j                  v r |d«      dk7  rd}n |d«      dk(  rd}|r |d«      }|j                  d|z   gz   S |j                  S )zÓReturn the list of libraries to link against when building a
        shared extension.  On most platforms, this is just 'ext.libraries';
        on Windows, we add the Python library (eg. python20.dll).
        ra   r   )ÚMSVCCompilerz
python%d%dÚ_dé   é   éÿ   r  FrH   ÚgetandroidapilevelTre   Ú_PYTHON_HOST_PLATFORMÚANDROID_API_LEVELr   ÚMACHDEPÚ	LDVERSIONrg   )rP   rQ   r   Ú_msvccompilerr  rr   r?   r*   Ú
hexversionr;   rU   rN   ÚhasattrrR   Úenviron)rE   r´   r  ÚtemplateÚ	pythonlibrN   Úlink_libpythonÚ	ldversions           r   rè   zbuild_ext.get_librariesë  s  € ô �<‰<˜7Ò"¬8¬:Ý4ä˜dŸm™m¨\Ô:Ø'�Ø—:’:Ø'¨$™�HØ$Ü—N‘N bÑ(Ü—^‘^ rÑ)¨TÑ1ð(ñ �	ð —}‘}¨	 {Ñ2Ð2ð< �}‰}Ðõ) 3à"ˆNÙÐ0Ô1äœ3Ð 4Ô5Ø%)‘NÜ—\‘\ XÒ-´´Ø%)‘NØ,´·
±
Ñ:á%Ð&9Ó:¸aÒ?Ø)-™Ù'¨	Ó2°hÒ>Ø)-˜áÙ*¨;Ó7�	Ø—}‘}¨°9Ñ(<Ð'=Ñ=Ð=à�}‰}Ðr   )"Ú__name__Ú
__module__Ú__qualname__ÚdescriptionrR   ru   Úsep_byr   Úuser_optionsÚboolean_optionsr   Úhelp_optionsrF   ÚstaticmethodrX   r‰   rž   r¹   r½   rÁ   r›   rÃ   rÄ   Ú
contextlibÚcontextmanagerrÎ   rÌ   râ   rñ   r¿   r  r  ré   rè   © r   r   r   r   '   sP  „ ØL€Kð(   §
¡
˜|¨2Ð.€FàGØQàØðÙ%›Ð(¨ð+ð	
ð	
ð ØØ<¸vÑEð	
ð
 	<Ø<Ø@àØØ<¸vÑEð	
ð
 	SØTØAØLØ7Ø;ØGØAØ6Ø=ðK&€LòP H€Oð 
˜$Ð :¸NÐKð€Lòð0 ñ5ó ð5ò0ILòVF òPV òpò	Lò,ò!ò**ð
 ×ÑñFó ðFòO
òb6òpò03ò61ò	4ò"ó*5r   r   )"Ú__doc__r8  rR   ÚrerP   Údistutils._logr   Úsiter   Ú	_modifiedr   Úcorer   Úerrorsr   r	   r
   r   r   r   ró   r   rU   r   r   r   Úutilr   r   r   rã   r¬   r   r   r:  r   r   ú<module>rC     sf   ðñó Û 	Û 	Û 
Ý Ý å #Ý ÷÷ õ "ß UÑ Uß :Ñ :ð �B—J‘JÐUÓVÐ òôy�õ yr   