U ç:âe²ã@s’ddlmZddlmZddlmZddlZddlZddlm Z ddl m Z ddl m Z ddl m Z ddl Z Gd d „d e je ƒZGd d „d ƒZdS) é)Ú convert_path)Úlog)ÚDistutilsOptionErrorN)Ú easy_install)Ú_normalization)Ú_path)Ú namespacesc@sveZdZdZdZejddgZejdgZdZdd„Z d d „Z d d „Z e d d„ƒZ dd„Zdd„Zdd„Zdd„ZdS)ÚdevelopzSet up package for developmentz%install package in 'development mode')Ú uninstallÚuzUninstall this source package)z egg-path=Nz-Set the path to be used in the .egg-link filer FcCs2|jrd|_| ¡| ¡n| ¡| ¡dS)NT)r Z multi_versionÚuninstall_linkZuninstall_namespacesÚinstall_for_developmentZwarn_deprecated_options©Úself©rúM/usr/local/python38/lib/python3.8/site-packages/setuptools/command/develop.pyÚruns  z develop.runcCs&d|_d|_t |¡d|_d|_dS)NÚ.)r Úegg_pathrÚinitialize_optionsÚ setup_pathZalways_copy_fromrrrrr%s  zdevelop.initialize_optionscCsddl}| d¡}|jg|_t |¡| ¡| ¡|j  t   d¡¡t   |j¡d}t j |j|¡|_|j|_|jdkrŒt j |j¡|_t |j¡}t t j |j|j¡¡}||krÄtd|ƒ‚|j|| |t j |j¡¡|jd|_| |j|j|j¡|_dS)NrÚegg_infoz*.eggz .egg-linkzA--egg-path must be a relative path from the install directory to ©Ú project_name)Ú pkg_resourcesÚget_finalized_commandÚegg_nameÚargsrÚfinalize_optionsÚexpand_basedirsÚ expand_dirsZ package_indexÚscanÚglobrZfilename_component_brokenÚosÚpathÚjoinÚ install_dirÚegg_linkÚegg_baserÚabspathrÚnormpathrÚ DistributionÚ PathMetadatarÚdistÚ_resolve_setup_pathr)rrÚeiZ egg_link_fnÚtargetrrrrr,s>   ÿ  ÿÿýýzdevelop.finalize_optionscCsj| tjd¡ d¡}|tjkr0d| d¡d}t tj  |||¡¡}t tj¡}||krft d||ƒ‚|S)zµ Generate a path from egg_base back to '.' where the setup script resides and ensure that path points to the setup path from $install_dir/$egg_path. ú/z../ézGCan't get a consistent path to setup script from installation directory) Úreplacer#ÚsepÚrstripÚcurdirÚcountrr*r$r%r)r(r&rZ path_to_setupÚresolvedr6rrrr.Us  üzdevelop._resolve_setup_pathc Cs | d¡|jddd| d¡tjr:| tj¡dt_| ¡t d|j|j ¡|j sˆt |jdƒ}|  |j d|j¡W5QRX| d|j|j ¡dS)NrÚ build_extr2)ZinplacezCreating %s (link to %s)ÚwÚ )Ú run_commandÚreinitialize_commandÚ setuptoolsZbootstrap_install_fromrZinstall_namespacesrÚinfor'r(Údry_runÚopenÚwriterrZprocess_distributionr-Úno_deps)rÚfrrrr js    zdevelop.install_for_developmentcCs¢tj |j¡rzt d|j|j¡t|jƒ}dd„|Dƒ}| ¡||j g|j |j gfkrht  d|¡dS|j szt  |j¡|j sŒ| |j¡|jjržt  d¡dS)NzRemoving %s (link to %s)cSsg|] }| ¡‘qSr)r5)Ú.0ÚlinerrrÚ „sz*develop.uninstall_link..z$Link points to %s: uninstall abortedz5Note: you must uninstall or replace scripts manually!)r#r$Úexistsr'rr?r(rAÚcloserrÚwarnr@ÚunlinkZ update_pthr-Ú distributionÚscripts)rZ egg_link_fileÚcontentsrrrr €s    zdevelop.uninstall_linkc Cs~||jk rt ||¡S| |¡|jjp*gD]L}tj t |ƒ¡}tj  |¡}t |ƒ}|  ¡}W5QRX|  ||||¡q,dS©N)r-rÚinstall_egg_scriptsÚinstall_wrapper_scriptsrLrMr#r$r)rÚbasenamerAÚreadZinstall_script)rr-Ú script_nameZ script_pathÚstrmÚ script_textrrrrP‘s     zdevelop.install_egg_scriptscCst|ƒ}t ||¡SrO)ÚVersionlessRequirementrrQ©rr-rrrrQ¥szdevelop.install_wrapper_scriptsN)Ú__name__Ú __module__Ú __qualname__Ú__doc__Ú descriptionrÚ user_optionsÚboolean_optionsZcommand_consumes_argumentsrrrÚ staticmethodr.r r rPrQrrrrr s"þ  ) r c@s(eZdZdZdd„Zdd„Zdd„ZdS) rWa© Adapt a pkg_resources.Distribution to simply return the project name as the 'requirement' so that scripts will work across multiple versions. >>> from pkg_resources import Distribution >>> dist = Distribution(project_name='foo', version='1.0') >>> str(dist.as_requirement()) 'foo==1.0' >>> adapted_dist = VersionlessRequirement(dist) >>> str(adapted_dist.as_requirement()) 'foo' cCs ||_dSrO)Ú_VersionlessRequirement__distrXrrrÚ__init__¹szVersionlessRequirement.__init__cCs t|j|ƒSrO)Úgetattrra)rÚnamerrrÚ __getattr__¼sz"VersionlessRequirement.__getattr__cCs|jSrOrrrrrÚas_requirement¿sz%VersionlessRequirement.as_requirementN)rYrZr[r\rbrerfrrrrrWªsrW)Údistutils.utilrÚ distutilsrÚdistutils.errorsrr#r"Zsetuptools.command.easy_installrr>rrrZDevelopInstallerr rWrrrrÚs