o
    Ëý°jd  ã                   @   sŽ   d dl mZ d dlmZ d dlmZ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ZG dd„ dejeƒZG d	d
„ d
ƒZdS )é    )Úconvert_path)Úlog)ÚDistutilsErrorÚDistutilsOptionErrorN)Úeasy_install)Ú
namespacesc                   @   sv   e Zd ZdZdZejddg Zejdg ZdZdd„ Z	d	d
„ Z
dd„ Zedd„ ƒZdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚdevelopzSet up package for developmentz%install package in 'development mode')Ú	uninstallÚuzUninstall this source package)z	egg-path=Nz-Set the path to be used in the .egg-link filer	   Fc                 C   s2   | j rd| _|  ¡  |  ¡  n|  ¡  |  ¡  d S )NT)r	   Úmulti_versionÚuninstall_linkÚuninstall_namespacesÚinstall_for_developmentÚwarn_deprecated_options©Úself© r   ú�/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/setuptools/command/develop.pyÚrun   s   
zdevelop.runc                 C   s&   d | _ d | _t | ¡ d | _d| _d S )NÚ.)r	   Úegg_pathr   Úinitialize_optionsÚ
setup_pathÚalways_copy_fromr   r   r   r   r   %   s
   

zdevelop.initialize_optionsc                 C   s  |   d¡}|jrd}|j|jf}t|| ƒ‚|jg| _t | ¡ |  ¡  |  	¡  | j
 t d¡¡ |jd }tj | j|¡| _|j| _| jd u rPtj |j¡| _t | j¡}t tj | j| j¡¡}||krltd| ƒ‚tj|t |tj |j¡¡|jd�| _|  | j| j| j¡| _d S )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 ©Úproject_name)Úget_finalized_commandÚbroken_egg_infor   r   Úegg_nameÚargsr   Úfinalize_optionsÚexpand_basedirsÚexpand_dirsÚpackage_indexÚscanÚglobÚosÚpathÚjoinÚinstall_dirÚegg_linkÚegg_baser   ÚabspathÚpkg_resourcesÚnormalize_pathr   ÚDistributionÚPathMetadataÚdistÚ_resolve_setup_pathr   )r   ÚeiÚtemplater    Úegg_link_fnÚtargetr   r   r   r   r!   ,   sF   




ÿÿÿý
ýzdevelop.finalize_optionsc                 C   sn   |   tjd¡ d¡}|tjkrd| d¡d  }t tj 	|||¡¡}|t tj¡kr5t
d|t tj¡ƒ‚|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/   r(   r)   r   )r,   r*   r   Úpath_to_setupÚresolvedr   r   r   r3   W   s   
ÿ
üzdevelop._resolve_setup_pathc                 C   s´   |   d¡ | jddd� |   d¡ tjr|  tj¡ d t_|  ¡  t d| j| j	¡ | j
sNt| jdƒ�}| | jd | j ¡ W d   ƒ n1 sIw   Y  |  d | j| j ¡ d S )Nr   Ú	build_extr9   )ÚinplacezCreating %s (link to %s)ÚwÚ
)Úrun_commandÚreinitialize_commandÚ
setuptoolsÚbootstrap_install_fromr   Úinstall_namespacesr   Úinfor+   r,   Údry_runÚopenÚwriter   r   Úprocess_distributionr2   Úno_deps)r   Úfr   r   r   r   m   s   

ÿzdevelop.install_for_developmentc                 C   s¦   t j | j¡r=t d| j| j¡ t| jƒ}dd„ |D ƒ}| ¡  || j	g| j	| j
gfvr4t d|¡ d S | js=t  | j¡ | jsF|  | j¡ | jjrQt d¡ d S d S )NzRemoving %s (link to %s)c                 S   s   g | ]}|  ¡ ‘qS r   )r<   )Ú.0Úliner   r   r   Ú
<listcomp>‡   s    z*develop.uninstall_link.<locals>.<listcomp>z$Link points to %s: uninstall abortedz5Note: you must uninstall or replace scripts manually!)r'   r(   Úexistsr+   r   rJ   r,   rL   Úcloser   r   ÚwarnrK   ÚunlinkÚ
update_pthr2   ÚdistributionÚscripts)r   Úegg_link_fileÚcontentsr   r   r   r   ƒ   s   
þzdevelop.uninstall_linkc              	   C   s”   || j urt | |¡S |  |¡ | jjpg D ]1}tj t	|ƒ¡}tj 
|¡}t |¡�}| ¡ }W d   ƒ n1 s:w   Y  |  ||||¡ qd S ©N)r2   r   Úinstall_egg_scriptsÚinstall_wrapper_scriptsrY   rZ   r'   r(   r-   r   ÚbasenameÚiorL   ÚreadÚinstall_script)r   r2   Úscript_nameÚscript_pathÚstrmÚscript_textr   r   r   r^   ”   s   


ÿûzdevelop.install_egg_scriptsc                 C   s   t |ƒ}t | |¡S r]   )ÚVersionlessRequirementr   r_   ©r   r2   r   r   r   r_   ¦   s   zdevelop.install_wrapper_scriptsN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Údescriptionr   Úuser_optionsÚboolean_optionsÚcommand_consumes_argumentsr   r   r!   Ústaticmethodr3   r   r   r^   r_   r   r   r   r   r      s$    þ	+
r   c                   @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	rh   a©  
    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'
    c                 C   s
   || _ d S r]   )Ú_VersionlessRequirement__distri   r   r   r   Ú__init__º   s   
zVersionlessRequirement.__init__c                 C   s   t | j|ƒS r]   )Úgetattrrs   )r   Únamer   r   r   Ú__getattr__½   s   z"VersionlessRequirement.__getattr__c                 C   s   | j S r]   r   r   r   r   r   Úas_requirementÀ   s   z%VersionlessRequirement.as_requirementN)rj   rk   rl   rm   rt   rw   rx   r   r   r   r   rh   «   s
    rh   )Údistutils.utilr   Ú	distutilsr   Údistutils.errorsr   r   r'   r&   ra   r.   Úsetuptools.command.easy_installr   rG   r   ÚDevelopInstallerr   rh   r   r   r   r   Ú<module>   s     