
|_b                 @   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
 m Z d  d l m Z m Z m Z d  d l m Z d  d l m Z d  d l Z Gd	 d
   d
 e j e  Z Gd d   d e  Z d S)    )convert_path)log)DistutilsErrorDistutilsOptionErrorN)six)DistributionPathMetadatanormalize_path)easy_install)
namespacesc               @   s   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 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uUninstall this source package	egg-path=N-Set the path to be used in the .egg-link fileFc             C   sA   |  j  r) d |  _ |  j   |  j   n
 |  j   |  j   d  S)NT)r   Zmulti_versionuninstall_linkZuninstall_namespacesinstall_for_developmentZwarn_deprecated_options)self r   @/tmp/pip-build-3_sjtvrs/setuptools/setuptools/command/develop.pyrun   s    		

zdevelop.runc             C   s5   d  |  _  d  |  _ t j |   d  |  _ d |  _ d  S)N.)r   egg_pathr
   initialize_options
setup_pathZalways_copy_from)r   r   r   r   r   '   s
    			zdevelop.initialize_optionsc             C   s  |  j  d  } | j r@ d } | j | j f } t | |   | j g |  _ t j |   |  j   |  j	   |  j
 j t j d   | j d } t j j |  j |  |  _ | j |  _ |  j d  k r t j j | j  |  _ t |  j  } t t j j |  j |  j   } | | k r0t d |   t | t | t j j | j   d | j |  _ |  j j t j d  } | t j k rd | j d  d	 } | |  _ t t j j |  j |  j |   } | t t j  k rt d
 | t t 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/z../   zGCan't get a consistent path to setup script from installation directory)get_finalized_commandZbroken_egg_infor   r   egg_nameargsr
   finalize_optionsexpand_basedirsexpand_dirsZpackage_indexscanglobospathjoininstall_diregg_linkegg_baser   abspathr	   r   r   r   distreplacesepcurdircountr   )r   eitemplater"   Zegg_link_fntargetr   pr   r   r   r#   .   sF    	


	$zdevelop.finalize_optionsc             C   s  t  j r t |  j d d  r |  j d d d |  j d  |  j d  } t | j  } |  j d d | |  j d  |  j d d d |  j d  |  j d  } | |  _	 | |  j
 _ t | | j  |  j
 _ n- |  j d  |  j d d d	 |  j d  |  j   t j r4|  j t j  d  t _ |  j   t j d
 |  j |  j  |  j st |  j d  " } | j |  j	 d |  j  Wd  QRX|  j d  |  j
 |  j  d  S)NZuse_2to3Fbuild_pyZinplacer   r   r-   	build_extr   zCreating %s (link to %s)w
)r   PY3getattrdistributionreinitialize_commandrun_commandr    r	   	build_libr   r/   locationr   r   	_providerZinstall_site_py
setuptoolsZbootstrap_install_fromr
   Zinstall_namespacesr   infor,   r-   dry_runopenwriter   Zprocess_distributionno_deps)r   Zbpy_cmdZ
build_pathZei_cmdfr   r   r   r   \   s4    	
		
	"zdevelop.install_for_developmentc             C   s   t  j j |  j  r t j d |  j |  j  t |  j  } d d   | D } | j   | |  j	 g |  j	 |  j
 g f k r t j d |  d  S|  j s t  j |  j  |  j s |  j |  j  |  j j r t j d  d  S)NzRemoving %s (link to %s)c             S   s   g  |  ] } | j     q Sr   )rstrip).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   rE   r-   rG   closer   r   warnrF   unlinkZ
update_pthr/   r>   scripts)r   Zegg_link_filecontentsr   r   r   r      s    
		zdevelop.uninstall_linkc             C   s   | |  j  k	 r t j |  |  S|  j |  x |  j j p> g  D]k } t j j t	 |   } t j j
 |  } t j |   } | j   } Wd  QRX|  j | | | |  q? Wd  S)N)r/   r
   install_egg_scriptsinstall_wrapper_scriptsr>   rS   r(   r)   r.   r   basenameiorG   readZinstall_script)r   r/   script_nameZscript_pathstrmscript_textr   r   r   rU      s    zdevelop.install_egg_scriptsc             C   s   t  |  } t j |  |  S)N)VersionlessRequirementr
   rV   )r   r/   r   r   r   rV      s    zdevelop.install_wrapper_scripts)r   r   r   )r   Nr   )__name__
__module____qualname____doc__descriptionr
   user_optionsboolean_optionsZcommand_consumes_argumentsr   r   r#   r   r   rU   rV   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)	r]   az  
    Adapt a pkg_resources.Distribution to simply return the project
    name as the 'requirement' so that scripts will work across
    multiple versions.

    >>> 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)N)_VersionlessRequirement__dist)r   r/   r   r   r   __init__   s    zVersionlessRequirement.__init__c             C   s   t  |  j |  S)N)r=   re   )r   namer   r   r   __getattr__   s    z"VersionlessRequirement.__getattr__c             C   s   |  j  S)N)r   )r   r   r   r   as_requirement   s    z%VersionlessRequirement.as_requirementN)r^   r_   r`   ra   rf   rh   ri   r   r   r   r   r]      s   r]   )distutils.utilr   	distutilsr   Zdistutils.errorsr   r   r(   r'   rX   Zsetuptools.externr   pkg_resourcesr   r   r	   Zsetuptools.command.easy_installr
   rD   r   ZDevelopInstallerr   objectr]   r   r   r   r   <module>   s   