a „oe`Dã @sšddlZddlZddlZddlmZddlmZddlm Z m Z m Z m Z ddl mZddlmZddlmZddlmZmZdd lmZdd lmZdd lmZmZzddlmZe d ƒWne!yÒeZYn0ed ƒddlm"Z#dd„Z$dZ%dZ&dZ'ej(dkrdZ&n¸óz.build_ext.finalize_options..r/r0FT)r)Úfinalize_optionsrEZcheck_extensions_listrfÚsetup_shlib_compilerr1r2Ú _full_namerYr4Úlinks_to_dynamicrar\rrbrHr3Ú _file_namer6r7rOr5r9Ú library_dirsÚappendÚcurdirÚruntime_library_dirsr'r()r,r-r;ZltdÚnsr<Úlibdirrrrrl´s0       zbuild_ext.finalize_optionscCsæt|j|j|jd}|_t|ƒ|jdur8| |j¡|jdur^|jD]\}}|  ||¡qH|j dur~|j D]}|  |¡qn|j dur”|  |j ¡|jdurª| |j¡|jdurÀ| |j¡|jdurÖ| |j¡t |¡|_dS)N)rÚdry_runÚforce)r rrwrxr^rZ include_dirsZset_include_dirsZdefineZ define_macroZundefZundefine_macroÚ librariesZ set_librariesrqZset_library_dirsZrpathZset_runtime_library_dirsZ link_objectsZset_link_objectsÚlink_shared_objectÚ__get__)r,rr2ÚvalueZmacrorrrrmÓs* ÿ               zbuild_ext.setup_shlib_compilercCst|tƒr|jSt ||¡S©N)r\rÚexport_symbolsr)Úget_export_symbols©r,r-rrrrîs zbuild_ext.get_export_symbolscCsb| ¡|j}zFt|tƒr"|j|_t ||¡|jrL| d¡j }|  ||¡W||_n||_0dS)Nr:) Z_convert_pyx_sources_to_langrr\rr^r)Úbuild_extensionrHrDr9Ú write_stub)r,r-Z _compilerr9rrrrós   zbuild_ext.build_extensioncsPt dd„|jDƒ¡‰d |j d¡dd…dg¡‰t‡‡fdd„|jDƒƒS) z?Return true if 'ext' links to a dynamic lib in the same packagecSsg|] }|j‘qSr)rn)riÚlibrrrrjrkz.build_ext.links_to_dynamic..r/Nr0r!c3s|]}ˆ|ˆvVqdSr}r)riZlibname©ZlibnamesÚpkgrrÚ rkz-build_ext.links_to_dynamic..)ÚdictÚfromkeysrfr5rnr4Úanyryr€rr„rros zbuild_ext.links_to_dynamiccCsgt |¡¢| ¡¢Sr})r)Úget_source_filesÚ_get_internal_dependsrgrrrrŠ szbuild_ext.get_source_filesc csèt|jjptjƒ ¡}dd„|jDƒ}ttddœdd„}|D]¦}t|ƒ}| ¡r\||dƒq.N)Ú orig_pathÚreasonr.cSst d||¡dS)NzJdependency %s won't be automatically included in the manifest: the path %s)rÚinfo)rŽrrrrÚskips üz-build_ext._get_internal_depends..skipzmust be relativez..zcan't have `..` segmentsT)Ústrictz doesn't existzmust be inside the project root)r Z distributionZsrc_rootr6rsÚresolverEÚstrÚ is_absoluteÚpartsÚOSErrorÚ relative_toÚ ValueErrorÚas_posix)r,Z project_rootrŒr‘rr7Zresolvedrrrr‹ s,         zbuild_ext._get_internal_dependscCs,|jrt| ¡ ¡ƒStt |¡| ¡ƒSr})r(ÚlistÚget_output_mappingÚkeysÚsortedr)Ú get_outputsÚ_build_ext__get_stubs_outputsrgrrrrŸ2szbuild_ext.get_outputscCs| ¡}tt|dd„dƒS)z1See :class:`setuptools.commands.build.SubCommand`cSs|dS)Nrr)ÚxrrrÚ:rkz.build_ext.get_output_mapping..)Úkey)rWr‡rž)r,Úmappingrrrrœ7szbuild_ext.get_output_mappingcs6‡fdd„ˆjDƒ}t |ˆ ¡¡}tdd„|DƒƒS)Nc3s2|]*}|jrtjjˆjg|j d¡¢RŽVqdS)r/N)rHr6r7r5r9rnr4rhrgrrr†>sþz0build_ext.__get_stubs_outputs..css|]\}}||VqdSr}r)riÚbaseZfnextrrrr†Erk)rEÚ itertoolsÚproductÚ!_build_ext__get_output_extensionsr›)r,Z ns_ext_basesÚpairsrrgrZ__get_stubs_outputs<s  þzbuild_ext.__get_stubs_outputsccs"dVdV| d¡jrdVdS)NrNz.pycr:z.pyo)rDrTrgrrrZ__get_output_extensionsGs z!build_ext.__get_output_extensionscCs2tjj|g|j d¡¢RŽd}| |||¡dSrM)r6r7r5rnr4rJ)r,Ú output_dirr-rCÚ stub_filerrrr‚Ms zbuild_ext.write_stub)r«r-cCs²t d|j|¡|r,tj |¡r,t|dƒ‚|js t|dƒ}|  d  dddt dƒd tj  |j ¡d d d t d ƒdddt dƒdddddt dƒdddg¡¡| ¡|r®| |¡dS)Nz writing stub loader for %s to %sz already exists! Please delete.ÚwÚ zdef __bootstrap__():z- global __bootstrap__, __file__, __loader__z0 import sys, os, pkg_resources, importlib.utilz, dlz: __file__ = pkg_resources.resource_filename(__name__,%r)z del __bootstrap__z if '__loader__' in globals():z del __loader__z# old_flags = sys.getdlopenflags()z old_dir = os.getcwd()z try:z( os.chdir(os.path.dirname(__file__))z$ sys.setdlopenflags(dl.RTLD_NOW)z3 spec = importlib.util.spec_from_file_location(z# __name__, __file__)z0 mod = importlib.util.module_from_spec(spec)z! spec.loader.exec_module(mod)z finally:z" sys.setdlopenflags(old_flags)z os.chdir(old_dir)z__bootstrap__()r!)rrrnr6r7rFrrwÚopenÚwriter5r$r8rpÚcloseÚ_compile_and_remove_stub)r,r«r-rCÚfrrrrJQsL  ÿ ÿéÿÿzbuild_ext._write_stub_file)r«cCshddlm}||gdd|jd| d¡j}|dkrH||g|d|jdtj |¡rd|jsdt |¡dS)Nr)Ú byte_compileT)rTrxrwrR) Zdistutils.utilr³rwrDrTr6r7rFÚunlink)r,r«r³rTrrrr±xs   ÿz"build_ext._compile_and_remove_stubN)F)F)"Ú__name__Ú __module__Ú __qualname__r'ÚboolÚ__annotations__r(r*rrr”rAr+rIrrWr3rerlrmrrrorrŠr‹rŸrrœr r¨r‚rJr±rrrrr Qs.      &  'r c Cs(| |j||||||||| | | | ¡ dSr})ÚlinkZSHARED_LIBRARY) r,ÚobjectsÚoutput_libnamerªryrqrtr~ÚdebugÚ extra_preargsÚextra_postargsÚ build_tempÚ target_langrrrrzˆsórzZstaticc Cs^|dus J‚tj |¡\}} tj | ¡\}}| d¡ d¡rH|dd…}| ||||| ¡dS)Nr¡rƒé)r6r7r4r]r_Ú startswithZcreate_static_lib)r,r»r¼rªryrqrtr~r½r¾r¿rÀrÁr<r8r-rrrrz«s   ) NNNNNrNNNN) NNNNNrNNNN)/r6rr¦Úimportlib.machineryrÚimportlib.utilrrUÚtypingrrrrÚpathlibr Zdistutils.command.build_extr Z _du_build_extZdistutils.ccompilerr Zdistutils.sysconfigr r Z distutilsrZsetuptools.errorsrZsetuptools.extensionrrZCython.Distutils.build_extr)Ú __import__Ú ImportErrorrrrr"rar`rr2ZdlÚhasattrr$r&rzrrrrÚsx               6ó !ó