U âQabøã@sžddlmZddlmZddlmZmZddlZddlZddl Z ddl m Z ddl Z ddl mZddlmZddlZeZGdd „d ejeƒZGd d „d ƒZdS) é)Ú convert_path)Úlog)ÚDistutilsErrorÚDistutilsOptionErrorN)Úsix)Ú easy_install)Ú 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ú>/usr/lib/python3.8/site-packages/setuptools/command/develop.pyÚrun s  z develop.runcCs&d|_d|_t |¡d|_d|_dS)NÚ.)r Úegg_pathrÚinitialize_optionsÚ setup_pathZalways_copy_fromrrrrr)s  zdevelop.initialize_optionscCs| d¡}|jr,d}|j|jf}t||ƒ‚|jg|_t |¡| ¡|  ¡|j   t   d¡¡|jd}t j |j|¡|_|j|_|jdkr t j |j¡|_t |j¡}t t j |j|j¡¡}||krØtd|ƒ‚tj|t |t j |j¡¡|jd|_| |j|j|j¡|_dS)NÚegg_infoz-Please rename %r to %r before using 'develop'z*.eggz .egg-linkzA--egg-path must be a relative path from the install directory to ©Z project_name)Úget_finalized_commandZbroken_egg_inforrZegg_nameÚargsrÚfinalize_optionsZexpand_basedirsZ expand_dirsZ package_indexÚscanÚglobÚosÚpathÚjoinÚ install_dirÚegg_linkÚegg_baserÚabspathÚ pkg_resourcesÚnormalize_pathrZ DistributionÚ PathMetadataÚdistÚ_resolve_setup_pathr)rZeiÚtemplaterZ egg_link_fnÚtargetrrrrr0sF        ÿÿÿýýzdevelop.finalize_optionscCsn| tjd¡ d¡}|tjkr0d| d¡d}t tj  |||¡¡}|t tj¡krjt d|t tj¡ƒ‚|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Úcountr%r&rr r)r#r!rZ path_to_setupZresolvedrrrr)Zs ÿ ýzdevelop._resolve_setup_pathc CsHtjržt|jddƒrž|jddd| d¡| d¡}t |j ¡}|jd|d| d¡|jddd| d¡| d¡}||_ ||j _ t  ||j¡|j _n"| d¡|jdd d| d¡| ¡tjrà| tj¡dt_| ¡t d |j|j¡|js0t|jd ƒ}| |j d |j¡W5QRX| d|j |j ¡dS) NZuse_2to3FZbuild_pyr)Zinplacer)r#Z build_extr-zCreating %s (link to %s)ÚwÚ )rZPY3ÚgetattrÚ distributionZreinitialize_commandZ run_commandrr%r&Z build_librr(Úlocationr'rZ _providerZinstall_site_pyÚ setuptoolsZbootstrap_install_fromrZinstall_namespacesrÚinfor"r#Údry_runÚopenÚwriterZprocess_distributionZno_deps)rZbpy_cmdZ build_pathZei_cmdÚfrrrr ns:      ÿ     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)r0)Ú.0ÚlinerrrÚ ¢sz*develop.uninstall_link..z$Link points to %s: uninstall abortedz5Note: you must uninstall or replace scripts manually!)rrÚexistsr"rr9r#r;ÚcloserrÚwarnr:ÚunlinkZ update_pthr(r6Úscripts)rZ egg_link_fileÚcontentsrrrr žs   ÿ   zdevelop.uninstall_linkc Cs€||jk rt ||¡S| |¡|jjp*gD]N}tj t |ƒ¡}tj  |¡}t   |¡}|  ¡}W5QRX| ||||¡q,dS©N)r(rÚinstall_egg_scriptsÚinstall_wrapper_scriptsr6rErrr$rÚbasenameÚior;ÚreadZinstall_script)rr(Z script_nameZ script_pathZstrmZ script_textrrrrH°s     zdevelop.install_egg_scriptscCst|ƒ}t ||¡SrG)ÚVersionlessRequirementrrI©rr(rrrrIÂszdevelop.install_wrapper_scriptsN)Ú__name__Ú __module__Ú __qualname__Ú__doc__Ú descriptionrZ user_optionsZboolean_optionsZcommand_consumes_argumentsrrrÚ staticmethodr)r r rHrIrrrrr s"þ  * 0r c@s(eZdZdZdd„Zdd„Zdd„ZdS) rMa© 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 ||_dSrG)Ú_VersionlessRequirement__distrNrrrÚ__init__ÖszVersionlessRequirement.__init__cCs t|j|ƒSrG)r5rU)rÚnamerrrÚ __getattr__Ùsz"VersionlessRequirement.__getattr__cCs|jSrGrrrrrÚas_requirementÜsz%VersionlessRequirement.as_requirementN)rOrPrQrRrVrXrYrrrrrMÇsrM)Zdistutils.utilrZ distutilsrZdistutils.errorsrrrrrKZsetuptools.externrr%Zsetuptools.command.easy_installrr8rÚtypeZ __metaclass__ZDevelopInstallerr rMrrrrÚs     6