Ë
    ¨Õ°jû†  ã                  ó  — d Z ddlm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 dd
lmZmZ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jP                  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).é    )ÚannotationsN)ÚCallable)Úlog)Ú	USER_BASE)ÚClassVaré   )Únewer_group)Ú	CCompilerÚnew_compilerÚshow_compilers)Ú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                  óv  — e Zd ZU 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de	d<   g d ¢Z
d!e	d"<   d#d$d%efgZd&e	d'<   d<d(„Zed)„ «       Zd<d*„Zd<d+„Zd<d,„Zd-„ Zd.„ Zd<d/„Zd0„ Zd1„ Zej2                  d2„ «       Zd<d3„Zd4„ Zd5„ Zd=d6„Zd=d7„Zd=d8„Z d>d9„Z!d:„ Z"d>d;„Z#y$)?Ú	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 rpathzHClassVar[list[tuple[str, str, str]] | list[tuple[str, str | None, str]]]Úuser_options)r!   r*   r,   r0   r1   zClassVar[list[str]]Úboolean_optionszhelp-compilerNzlist available compilerszAClassVar[list[tuple[str, str | None, str, Callable[[], object]]]]Úhelp_optionsc                ó*  — 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    ú]/var/www/mission/venv/lib/python3.12/site-packages/setuptools/_distutils/command/build_ext.pyÚinitialize_optionszbuild_ext.initialize_optionsv   sœ   € Ø26ˆŒØ"ˆŒØ"ˆŒØ#ˆŒØˆŒØ#'ˆŒà'+ˆÔØˆŒØˆŒ
Ø$(ˆŒØ'+ˆÔØ $ˆŒ
Ø ˆÔØˆŒ
ð #'ˆŒ
ð 15ˆŒØˆŒ	ØˆŒØ$(ˆŒØˆŒ	Ø$(ˆ�ó    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      rI   Ú_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   )rZ   Úbuild)r7   r7   )r9   r9   )rB   rB   )r*   r*   )r,   r,   )rF   rF   )r8   r8   T)Úplat_specificÚincluder>   rA   ÚntÚlibsÚDebugÚReleaseÚwin32é   ÚPCbuildé   ÚcygwinÚlibÚpythonÚconfigrN   ú,Ú1ú zparallel should be an integer)0Ú	distutilsrZ   Úset_undefined_optionsr:   ÚdistributionÚext_packageÚext_modulesr6   Úget_python_incr;   Ú
isinstanceÚstrÚsplitrW   ÚpathseprU   Úexec_prefixÚbase_exec_prefixÚappendrX   rY   ÚextendÚensure_string_listr>   r?   r@   Únamer   Úprefixr*   r9   Údirnamer   r8   rV   rT   r   r]   r<   r=   rE   r1   r   ÚisdirrF   ÚintÚ
ValueErrorr   )
rH   rZ   Ú
py_includeÚplat_py_includeÚsuffixÚnew_libÚdefinesÚsymbolÚuser_includeÚuser_libs
             rI   Ú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                ó€  — | j                   sy | j                  j                  «       rc| j                  d«      }| j                  j                  |j                  «       xs g «       | j                  j                  |j                  «       t        | j                  | j                  | j                  ¬«      | _        t        | j                  «       | j                  t!        «       k7  r%| j                  j#                  | j                  «       t$        j&                  dk(  r&t)        «       r| j                  j+                  dd«       | j,                  �%| j                  j/                  | j,                  «       | j0                  �0| j0                  D ]!  \  }}| j                  j+                  ||«       Œ# | j2                  �,| j2                  D ]  }| j                  j5                  |«       Œ | j                  �%| j                  j7                  | j                  «       | j                  �%| j                  j9                  | j                  «       | j:                  �%| j                  j=                  | j:                  «       | j>                  �%| j                  jA                  | j>                  «       | jC                  «        y )NÚ
build_clib)rB   Úverboser,   rb   ÚPy_GIL_DISABLEDro   )"r6   rs   Úhas_c_librariesÚget_finalized_commandr>   r~   Úget_library_namesr?   r}   r�   r   rB   r‘   r,   r   r8   r   Ú
initializerW   r€   r   Údefine_macror;   Úset_include_dirsr<   r=   Úundefine_macroÚset_librariesÚset_library_dirsr@   Úset_runtime_library_dirsrA   Úset_link_objectsÚbuild_extensions)rH   r�   r€   ÚvalueÚmacros        rI   Úrunzbuild_ext.run9  s
  € ð �ŠØð
 ×Ñ×,Ñ,Ô.Ø×3Ñ3°LÓAˆJØ�N‰N×!Ñ! *×">Ñ">Ó"@Ò"FÀBÔGØ×Ñ×$Ñ$ Z×%:Ñ%:Ô;ô %Ø—]‘]Ø—L‘LØ—*‘*ô
ˆŒô
 	˜4Ÿ=™=Ô)ð �>‰>œ\›^Ò+Ø�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×+<Ñ+<Ô=ð 	×ÑÕrK   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
«      xs g |_        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)r;   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   )rw   Úlistr   Ú	enumerater   ÚtupleÚlenr   Úwarningrx   Úextension_name_reÚmatchÚdictÚgetÚsetattrÚruntime_library_dirsÚdefine_macrosÚundef_macrosr}   )
rH   r6   r"   ÚextÚext_nameÚ
build_infoÚkeyÚvalr¨   r    s
             rI   Úcheck_extensions_listzbuild_ext.check_extensions_list€  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Ó'>Ò'DÀ"ˆ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	 rK   c                ó˜   — | j                  | j                  «       g }| j                  D ]  }|j                  |j                  «       Œ |S ©N)r¼   r6   r~   r£   )rH   Ú	filenamesr·   s      rI   Úget_source_fileszbuild_ext.get_source_filesØ  sF   € Ø×"Ñ" 4§?¡?Ô3Øˆ	ð —?‘?ò 	*ˆCØ×Ñ˜SŸ[™[Õ)ð	*àÐrK   c                ó¨   — | j                  | j                  «       | j                  D �cg c]  }| j                  |j                  «      ‘Œ c}S c c}w r¾   )r¼   r6   Úget_ext_fullpathr€   ©rH   r·   s     rI   Ú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¼   r6   rF   Ú_build_extensions_parallelÚ_build_extensions_serialrG   s    rI   rž   zbuild_ext.build_extensionsì  s3   € à×"Ñ" 4§?¡?Ô3Ø�=Š=Ø×+Ñ+Õ-à×)Ñ)Õ+rK   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¬«      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_workersF)Ústrict)rF   rW   Ú	cpu_countÚconcurrent.futuresrÉ   ÚImportErrorrÇ   r6   ÚsubmitÚbuild_extensionÚzipÚ_filter_build_errorsÚresult)rH   ÚworkersrÉ   Úexecutorr·   ÚfuturesÚfuts          rI   rÆ   z$build_ext._build_extensions_parallelô  s   € Ø—-‘-ˆØ�=‰=˜DÑ Ü—l‘l“nˆGð	Ý=ð ˆ?Ø×)Ñ)Ô+Øá¨GÔ4ð 	!¸àFJÇoÁoöØ?B�—‘ × 4Ñ 4°cÕ:ðˆGð ô   §¡°ÀÔGò !‘��SØ×.Ñ.¨sÓ3ñ !Ø—J‘J”L÷!ð !ñ!÷		!ð 	!øô ò 	ØŠGð	üò÷!ð !ú÷	!ð 	!úsG   °C ÁC<Á!#C+Â1C<Â5C0Ã
C<ÃC(Ã'C(Ã+C<Ã0C9Ã5C<Ã<Dc                ó”   — | j                   D ]-  }| j                  |«      5  | j                  |«       d d d «       Œ/ y # 1 sw Y   Œ:xY wr¾   )r6   rÒ   rÐ   rÃ   s     rI   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€   )rH   r·   Úes      rI   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«       Œ t        | j&                  t(        «      sJ d«       ‚| j&                  j+                  || j,                  ||j.                  | j                  ||j                  ¬«      }|d d  | _        |j2                  r|j5                  |j2                  «       |j6                  xs g }|j8                  xs | j&                  j;                  |«      }	| j&                  j=                  ||| j?                  |«      |j@                  |jB                  || jE                  |«      | 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' extensionz$run() must precede build_extension())Ú
output_dirr¨   r;   r*   Úextra_postargsÚdepends)r>   r?   r´   rà   Úexport_symbolsr*   r9   Útarget_lang)#r£   rw   rª   r¬   r   r€   ÚsortedrÂ   rá   r,   r	   r   r*   ÚinfoÚswig_sourcesr¥   rµ   r¶   r}   rB   r
   Úcompiler9   r;   Ú_built_objectsr¤   r~   r¦   ÚlanguageÚdetect_languageÚlink_shared_objectÚget_librariesr?   r´   Úget_export_symbols)
rH   r·   r£   Úext_pathrá   Ú
extra_argsr¨   r=   Úobjectsré   s
             rI   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˜(Õ#ð	$ô ˜$Ÿ-™-¬Ô3ð 	
Ø2ó	
Ð3ð —-‘-×'Ñ'ØØ—‘ØØ×)Ñ)Ø—*‘*Ø%Ø—K‘Kð (ó 
ˆð &¡a˜jˆÔð
 ×ÒØ�N‰N˜3×,Ñ,Ô-Ø×(Ñ(Ò.¨Bˆ
ð —<‘<ÒI 4§=¡=×#@Ñ#@ÀÓ#Iˆà�‰×(Ñ(ØØØ×(Ñ(¨Ó-Ø×)Ñ)Ø!$×!9Ñ!9Ø%Ø×2Ñ2°3Ó7Ø—*‘*Ø—‘Ø ð 	)õ 	
rK   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)rD   r   r®   rE   rW   rX   Úsplitextr}   rC   Ú	find_swigr~   rå   Úspawn)rH   r£   Ú	extensionÚnew_sourcesræ   Úswig_targetsÚ
target_extÚsourcerP   r·   rC   Úswig_cmdÚtargets                rI   ræ   zbuild_ext.swig_sourcesn  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ð	:ð
 ÐrK   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.
        ÚposixrC   rb   )z1.3z1.2z1.1zc:\swigzswig.exez;I don't know how to find (much less run) SWIG on platform 'ú')rW   r€   rX   rY   Úisfiler   )rH   ÚversÚfns      rI   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óð rK   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).
        rN   ró   Nr   Úbuild_py)Úget_ext_fullnamery   Úget_ext_filenamer!   rW   rX   rY   r7   r”   ÚabspathÚget_package_dir)rH   r¸   ÚfullnameÚmodpathÚfilenamer:   r  Úpackage_dirs           rI   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Ð2rK   c                óB   — | j                   €|S | j                   dz   |z   S )zSReturns the fullname of a given extension name.

        Adds the `package.` prefixrN   )r:   )rH   r¸   s     rI   r  zbuild_ext.get_ext_fullnameØ  s'   € ð �<‰<ÐØˆOà—<‘< #Ñ%¨Ñ0Ð0rK   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   ©rS   rN   Ú
EXT_SUFFIX)rZ   rS   ry   rW   rX   rY   )rH   r¸   rS   rî   Ú
ext_suffixs        rI   r  zbuild_ext.get_ext_filenameá  s7   € õ
 	/à—>‘> #Ó&ˆÙ# LÓ1ˆ
Ü�w‰w�|‰|˜XÐ&¨Ñ3Ð3rK   c                óJ  — | j                  |«      }	 |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.
        ÚasciiÚ_ÚU_Úpunycodeó   -ó   _ÚPyInit)Ú_get_module_name_for_symbolÚencodeÚUnicodeEncodeErrorÚreplaceÚdecoderâ   r}   )rH   r·   r€   rˆ   Úinitfunc_names        rI   rí   zbuild_ext.get_export_symbolsì  s¨   € ð ×/Ñ/°Ó4ˆð	 ð �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   “A# Á#<B"Â!B"c                óx   — |j                   j                  d«      }|d   dk(  rt        |«      dk\  r|d   S |d   S )NrN   ró   Ú__init__r   éþÿÿÿ)r€   ry   r­   )rH   r·   Úpartss      rI   r  z%build_ext._get_module_name_for_symbol  s@   € ð —‘—‘˜sÓ#ˆØ�‰9˜
Ò"¤s¨5£z°Q¢Ø˜‘9ÐØ�R‰yÐrK   c                óx  — t         j                  dk(  r•t        «       s‹ddlm} t        | j                  |«      scdt         j                  dz	  › t         j                  dz	  dz  › �dt        «       z  z   d	t        | j                  «      z  z   }|j                  |gz   S |j                  S dd
lm} d} |d«      rZt        t         d«      st         j                  dk(  s
t        «       rd}n*dt        j                   v r |d«      dk7  s |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).
        rf   r   )ÚMSVCCompilerrl   é   é   éÿ   r   Ú_dr  FrM   Úgetandroidapilevelrj   TÚ_PYTHON_HOST_PLATFORMÚANDROID_API_LEVELr   ÚMACHDEPÚ	LDVERSION)rU   rV   r   Ú_msvccompilerr&  rw   rB   Ú
hexversionr   Úboolr*   r>   rZ   rS   ÚhasattrrW   Úenviron)rH   r·   r&  Ú	pythonlibrS   Úlink_libpythonÚ	ldversions          rI   rì   zbuild_ext.get_libraries
  s)  € ô �<‰<˜7Ò"¬8¬:Ý4ä˜dŸm™m¨\Ô:àœSŸ^™^¨rÑ1Ð2´C·N±NÀbÑ4HÈDÑ3PÐ2QÐRØœOÓ-Ñ-ñ.àœT $§*¡*Ó-Ñ-ñ.ð ð —}‘}¨	 {Ñ2Ð2ðB �}‰}Ðõ/ 3à"ˆNÙÐ0Ô1ô œCÐ!5Ô6Ü—|‘| xÒ/Ü”zà%)‘NØ,´·
±
Ñ:ñ 'Ð':Ó;¸qÒ@Ù)¨)Ó4¸Ò@à)-˜áÙ*¨;Ó7�	Ø—}‘}¨°9Ñ(<Ð'=Ñ=Ð=à�}‰}ÐrK   )ÚreturnÚNone)r¸   rx   r8  rx   )r·   r   r8  z	list[str])$Ú__name__Ú
__module__Ú__qualname__ÚdescriptionrW   rz   Úsep_byr   r2   Ú__annotations__r3   r   r4   rJ   Ústaticmethodr]   rŽ   r¡   r¼   rÀ   rÄ   rž   rÆ   rÇ   Ú
contextlibÚcontextmanagerrÒ   rÐ   ræ   rõ   rÂ   r  r  rí   r  rì   © rK   rI   r   r   &   su  … ØL€Kð(   §
¡
˜|¨2Ð.€Fð 	HØQàØðÙ)›^Ð,¨Að/ð		
ð	
ð ØØ<¸vÑEð	
ð
 	<Ø<Ø@àØØ<¸vÑEð	
ð
 	SØTØAØLØ7Ø;ØGØAØ6Ø=ðS*	ð ð ó ,ò\,€OÐ(ó ð 
˜$Ð :¸NÐKðW€LÐSó ó)ð> ñ5ó ð5ó0ILóVE óNV òpò	Ló,ò!ò**ð
 ×ÑñFó ðFóU
òn6òpó.3ó61ó	4ó"ò*ô6rK   r   )+Ú__doc__Ú
__future__r   rA  rW   ÚrerU   Úcollections.abcr   Údistutils._logr   Úsiter   Útypingr   Ú	_modifiedr	   Ú	ccompilerr
   r   r   Úcorer   Úerrorsr   r   r   r   r   r   r÷   r   rZ   r   r   r   Úutilr   r   r   rç   r¯   r   rC  rK   rI   ú<module>rP     sp   ðñõ #ã Û 	Û 	Û 
Ý $Ý Ý Ý å #ß ?Ñ ?Ý ÷÷ õ "ß UÑ Uß :Ñ :ð �B—J‘JÐUÓVÐ ôZ�õ ZrK   