o ¯)»aÜ@ã@s"dZddlmZmZddlmZddlmZddlZddl Z ddl Z ddl Z ddl Z ddl mZmZmZddlmZddlmZdd lmZmZd d „Zd d „Zdd„Zdd„ZGdd„deƒZe d ¡¡Z dd„Z!dd„Z"dd„Z#dddœZ$dd„Z%d d!„Z&d"d#„Z'gd$¢Z( % &d)d'd(„Z)dS)*z6setuptools.command.bdist_egg Build .egg distributionsé)Ú remove_treeÚmkpath)Úlog)ÚCodeTypeN)Úget_build_platformÚ DistributionÚensure_directory)ÚLibrary)ÚCommand)Úget_pathÚget_python_versioncCstdƒS)NZpurelib)r ©r r úO/opt/alt/python310/lib/python3.10/site-packages/setuptools/command/bdist_egg.pyÚ _get_purelibórcCs2d|vr tj |¡d}| d¡r|dd…}|S)NÚ.rÚmoduleiúÿÿÿ)ÚosÚpathÚsplitextÚendswith)Úfilenamer r rÚ strip_modules   rccs8t |¡D]\}}}| ¡| ¡|||fVqdS)zbDo os.walk in a reproducible way, independent of indeterministic filesystem readdir order N)rÚwalkÚsort)ÚdirÚbaseÚdirsÚfilesr r rÚ sorted_walk!s €ýrcCsLt d¡ ¡}t|dƒ}| ||¡WdƒdS1swYdS)NaÛ def __bootstrap__(): global __bootstrap__, __loader__, __file__ import sys, pkg_resources, importlib.util __file__ = pkg_resources.resource_filename(__name__, %r) __loader__ = None; del __bootstrap__, __loader__ spec = importlib.util.spec_from_file_location(__name__,__file__) mod = importlib.util.module_from_spec(spec) spec.loader.exec_module(mod) __bootstrap__() Úw)ÚtextwrapÚdedentÚlstripÚopenÚwrite)ZresourceÚpyfileZ_stub_templateÚfr r rÚ write_stub+s  ö "ÿr(c@sŒeZdZdZddddeƒfdddd gZgd ¢Zd d „Zd d„Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd „Zd!S)"Ú bdist_eggzcreate an "egg" distribution)z bdist-dir=Úbz1temporary directory for creating the distributionz plat-name=Úpz;platform name to embed in generated filenames (default: %s))úexclude-source-filesNz+remove all .py files from the generated egg)ú keep-tempÚkzPkeep the pseudo-installation tree around after creating the distribution archive)z dist-dir=Údz-directory to put final built distributions in)ú skip-buildNz2skip rebuilding everything (for testing/debugging))r-r0r,cCs.d|_d|_d|_d|_d|_d|_d|_dS)Nr)Ú bdist_dirÚ plat_nameÚ keep_tempÚdist_dirÚ skip_buildÚ egg_outputÚexclude_source_files©Úselfr r rÚinitialize_optionsRs zbdist_egg.initialize_optionscCs¬| d¡}|_|j|_|jdur| d¡j}tj |d¡|_|jdur(t ƒ|_|  dd¡|j durTt dd|j |jtƒ|j ¡oC|jƒ  ¡}tj |j|d¡|_ dSdS)NÚegg_infoZbdistZegg)r4r4z.egg)Úget_finalized_commandÚei_cmdr;r1Ú bdist_baserrÚjoinr2rZset_undefined_optionsr6rZegg_nameZ egg_versionr Ú distributionÚhas_ext_modulesr4)r9r=r>Úbasenamer r rÚfinalize_options[s$      ýü÷zbdist_egg.finalize_optionscCsü|j| d¡_tj tj tƒ¡¡}|jj g}|j_ |D]D}t |t ƒrZt |ƒdkrZtj  |d¡rZtj |d¡}tj |¡}||ksL| |tj¡rZ|t |ƒdd…|df}|jj  |¡qzt d|j¡|jddddW||j_ dS||j_ w)NÚinstallérézinstalling package data to %sÚ install_data)ÚforceÚroot)r1r<Ú install_librrÚnormcaseÚrealpathrr@Ú data_filesÚ isinstanceÚtupleÚlenÚisabsÚ startswithÚsepÚappendrÚinfoÚ call_command)r9Z site_packagesÚoldÚitemrLZ normalizedr r rÚdo_install_datass"  ÿzbdist_egg.do_install_datacCs|jgS)N)r6r8r r rÚ get_outputsŒrzbdist_egg.get_outputscKsTtD] }| ||j¡q| d|j¡| d|j¡|j|fi|¤Ž}| |¡|S)z8Invoke reinitialized command `cmdname` with keyword argsr5Údry_run)ÚINSTALL_DIRECTORY_ATTRSÚ setdefaultr1r5r[Zreinitialize_commandÚ run_command)r9ZcmdnameÚkwÚdirnameÚcmdr r rrVs zbdist_egg.call_commandcCs”| d¡t d|j¡| d¡}|j}d|_|j ¡r$|js$| d¡|j ddd}||_|  ¡\}}g|_ g}t |ƒD]>\}}t j |¡\} } t j |jt| ƒd¡} |j  | ¡t d |¡|jsmtt j |¡| ƒ| | ¡| t jd ¡||<q=|rƒ| |¡|jjr‹| ¡|j} t j | d ¡} | | ¡|jjr³t j | d ¡}t d |¡|j d|dd| | ¡t j | d¡}|råt d|¡|jsät|ƒt|dƒ}|  d |¡¡|  d¡| !¡nt j "|¡rùt d|¡|jsùt  #|¡t$t j | d ¡| %¡ƒt j &t j |j'd¡¡rt (d¡|j)r| *¡t+|j,| |j-|j| .¡d|j/s9t0|j|jdt1|jdgƒ dt2ƒ|j,f¡dS)Nr;zinstalling library code to %srDZ build_clibrJr)Zwarn_dirú.pyzcreating stub loader for %sú/úEGG-INFOÚscriptszinstalling scripts to %sZinstall_scriptsrF)Ú install_dirZno_epznative_libs.txtz writing %sÚwtÚ z removing %sz depends.txtzxWARNING: 'depends.txt' will not be used by setuptools 0.6! Use the install_requires/extras_require setup() args instead.)Úverboser[Úmode©r[Z dist_filesr))3r^rrUr1r<rIr@Zhas_c_librariesr5rVÚget_ext_outputsÚstubsÚ enumeraterrrr?rrTr[r(rBÚreplacerSZ byte_compilerMrYrreÚcopy_metadata_torr$r%ÚcloseÚisfileÚunlinkÚwrite_safety_flagÚzip_safeÚexistsr;Úwarnr7Ú zap_pyfilesÚ make_zipfiler6riÚ gen_headerr3rÚgetattrr )r9ZinstcmdZold_rootraÚ all_outputsÚ ext_outputsZ to_compiler+Zext_namerÚextr&Z archive_rootr;Z script_dirZ native_libsZ libs_filer r rÚrun™sˆ    ÿ      ÿ    €   ÿÿ  ÿ ÿz bdist_egg.runc CsÖt d¡t|jƒD]^\}}}|D]V}tj ||¡}| d¡r*t d|¡t  |¡| d¡rg|}d}t   ||¡}tj |tj |  d¡d¡} t d|| f¡zt | ¡Wn ty`Ynwt || ¡qq dS) Nz+Removing .py files from temporary directoryrbz Deleting %sÚ __pycache__z#(?P.+)\.(?P[^.]+)\.pycÚnameú.pyczRenaming file from [%s] to [%s])rrUÚwalk_eggr1rrr?rÚdebugrsÚreÚmatchÚpardirÚgroupÚremoveÚOSErrorÚrename) r9rrrrrZpath_oldÚpatternÚmZpath_newr r rrxês8      ÿÿÿ ÿ €ëÿzbdist_egg.zap_pyfilescCs2t|jddƒ}|dur |St d¡t|j|jƒS)Nruz4zip_safe flag not set; analyzing archive contents...)r{r@rrwÚ analyze_eggr1rm)r9Úsafer r rrus  zbdist_egg.zip_safecCsdS)Nr r r8r r rrz szbdist_egg.gen_headercCshtj |j¡}tj |d¡}|jjjD]}| |¡r1tj ||t |ƒd…¡}t |ƒ|  ||¡qdS)z*Copy metadata (egg info) to the target_dirÚN) rrÚnormpathr;r?r=ZfilelistrrRrPrZ copy_file)r9Z target_dirZ norm_egg_infoÚprefixrÚtargetr r rrps  €üzbdist_egg.copy_metadata_toc Csg}g}|jdi}t|jƒD]3\}}}|D]}tj |¡d ¡tvr,| |||¡q|D]}|||d|tj ||¡<q/q|j   ¡r}|  d¡}|j D]-} t | tƒrWqO| | j¡} | | ¡}tj |¡ d¡s|tj tj |j|¡¡r|| |¡qO||fS)zAGet a list of relative paths to C extensions in the output distrorrFrcZ build_extzdl-)r1rrrrÚlowerÚNATIVE_EXTENSIONSrTr?r@rAr<Ú extensionsrNr Zget_ext_fullnamerZget_ext_filenamerBrRrv) r9r|r}ÚpathsrrrrZ build_cmdr~Úfullnamer r rrls6 €ÿÿÿ       €zbdist_egg.get_ext_outputsN)Ú__name__Ú __module__Ú __qualname__Ú descriptionrZ user_optionsZboolean_optionsr:rCrYrZrVrrxrurzrprlr r r rr);s.ÿô  Q r)z.dll .so .dylib .pydccsJt|ƒ}t|ƒ\}}}d|vr| d¡|||fV|D]}|VqdS)z@Walk an unpacked egg's contents, skipping the metadata directoryrdN)rÚnextr‰)Úegg_dirZwalkerrrrZbdfr r rrƒ:s€  ÿrƒc Csžt ¡D]\}}tj tj |d|¡¡r|SqtƒsdSd}t|ƒD](\}}}|D] }| d¡s7| d¡r8q+| d¡sB| d¡rKt ||||ƒoJ|}q+q$|S)NrdFTrbz.pywr‚z.pyo) Ú safety_flagsÚitemsrrrvr?Úcan_scanrƒrÚ scan_module) ržrmÚflagÚfnrrrrrr r rrŽEs ÿ€ûrŽcCs€t ¡D]9\}}tj ||¡}tj |¡r%|dust|ƒ|kr$t |¡q|dur=t|ƒ|kr=t|dƒ}|  d¡|  ¡qdS)Nrgrh) rŸr rrr?rvÚboolrsr$r%rq)ržrr£r¤r'r r rrtWs  €  €ørtzzip-safez not-zip-safe)TFc Cstj ||¡}|dd…|vrdS|t|ƒdd… tjd¡}||r%dp&dtj |¡d}tjdkr8d }nd }t |d ƒ}|  |¡t   |¡} |  ¡d} t t| ƒ¡} d D]} | | vrgt d || ¡d} qXd| vr~dD]} | | vr}t d|| ¡d} qn| S)z;Check whether module possibly uses unsafe-for-zipfile stuffNéÿÿÿÿTrFrrr)ééé éÚrb)Ú__file__Ú__path__z%s: module references %sFÚinspect) Z getsourceZ getabsfileZ getsourcefileZgetfilegetsourcelinesZ findsourceZ getcommentsZ getframeinfoZgetinnerframesZgetouterframesÚstackZtracez"%s: module MAY be using inspect.%s)rrr?rProrSrÚsysÚ version_infor$ÚreadÚmarshalÚloadrqÚdictÚfromkeysÚ iter_symbolsrrw) ržrrrmrZpkgrÚskipr'ÚcoderÚsymbolsZbadr r rr¢js4     €€r¢ccsT|jD]}|Vq|jD]}t|tƒr|Vq t|tƒr't|ƒD]}|Vq!q dS)zBYield names and strings used by `code` and its nested code objectsN)Úco_namesÚ co_constsrNÚstrrr·)r¹rÚconstr r rr·Œs€     €ûr·cCs2tj d¡s tjdkr dSt d¡t d¡dS)NÚjavaZcliTz1Unable to analyze compiled code on this platform.zfPlease ask the author to include a 'zip_safe' setting (either True or False) in the package's setup.py)r°ÚplatformrRrrwr r r rr¡˜s r¡)rJrfrGZ install_baseTr c s¬ddl}ttj |¡ˆdt d|ˆ¡‡‡fdd„}|r!|jn|j}ˆsD|j |||d} t ˆƒD] \} } } || | | ƒq2|   ¡|St ˆƒD] \} } } |d| | ƒqH|S)aqCreate a zip file from all the files under 'base_dir'. The output zip file will be named 'base_dir' + ".zip". Uses either the "zipfile" Python module (if available) or the InfoZIP "zip" utility (if installed and found on the default search path). If neither tool is available, raises DistutilsExecError. Returns the name of the output zip file. rNrkz#creating '%s' and adding '%s' to itcs`|D]+}tj tj ||¡¡}tj |¡r-|tˆƒdd…}ˆs'| ||¡t d|¡qdS)NrFz adding '%s') rrr‘r?rrrPr%rr„)Úzr`Únamesrrr+©Úbase_dirr[r rÚvisit¶s   €úzmake_zipfile..visit)Ú compression) Úzipfilerrrr`rrUZ ZIP_DEFLATEDZ ZIP_STOREDZZipFilerrq) Z zip_filenamerÄrir[ÚcompressrjrÇrÅrÆrÁr`rrr rÃrry©s þry)rrTr )*Ú__doc__Zdistutils.dir_utilrrZ distutilsrÚtypesrr°rr…r!r³Z pkg_resourcesrrrZsetuptools.extensionr Z setuptoolsr Z sysconfigr r rrrr(r)rµr¶Úsplitr•rƒrŽrtrŸr¢r·r¡r\ryr r r rÚsB     } þ"  ÿ