
(h                 @   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 Z d  d l m Z d  d l m Z d  d l Z e Z Gd d	   d	 e j e  Z Gd
 d   d  Z d S)    )convert_path)log)DistutilsErrorDistutilsOptionErrorN)six)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 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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-kmztzv_d/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 |  j  } t j t j j |  j |  j   } | | k r6t d |   t j | t j | t j j | j   d | j |  _ |  j |  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_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   abspathpkg_resourcesnormalize_pathr   DistributionPathMetadatadist_resolve_setup_pathr   )r   eitemplater   Zegg_link_fntargetr   r   r   r   r   0   s<    	


!zdevelop.finalize_optionsc             C   s   |  j  t j d  j d  } | t j k rD d | j d  d } t j t j j	 | | |   } | t j t j  k r t
 d | t j 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   Zpath_to_setupZresolvedr   r   r   r/   Z   s    zdevelop._resolve_setup_pathc             C   s  t  j r t |  j d d  r |  j d d d |  j d  |  j d  } t j | j	  } |  j d d | |  j d  |  j d d d |  j d  |  j d  } | |  _
 | |  j _ t j | | j  |  j _ n- |  j d  |  j d d d	 |  j d  t j r1|  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_extr4   zCreating %s (link to %s)w
)r   PY2getattrdistributionreinitialize_commandrun_commandr   r*   r+   	build_libr   r.   locationr-   r   	_provider
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   n   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   )r7   ).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   rG   r(   rI   closer   r   warnrH   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@   rT   r#   r$   r)   r   basenameiorI   readZinstall_script)r   r.   script_nameZscript_pathstrmscript_textr   r   r   rV      s    zdevelop.install_egg_scriptsc             C   s   t  |  } t j |  |  S)N)VersionlessRequirementr   rW   )r   r.   r   r   r   rW      s    zdevelop.install_wrapper_scripts)z	uninstallr   r   )r   Nr   )__name__
__module____qualname____doc__descriptionr   user_optionsboolean_optionsZcommand_consumes_argumentsr   r   r   staticmethodr/   r   r   rV   rW   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^   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)N)_VersionlessRequirement__dist)r   r.   r   r   r   __init__   s    zVersionlessRequirement.__init__c             C   s   t  |  j |  S)N)r?   rg   )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`   ra   rb   rh   rj   rk   r   r   r   r   r^      s   r^   )distutils.utilr   	distutilsr   Zdistutils.errorsr   r   r#   r"   rY   Zsetuptools.externr   r*   Zsetuptools.command.easy_installr   rF   r   typeZ__metaclass__ZDevelopInstallerr	   r^   r   r   r   r   <module>   s   