
(°h#  ã               @   s]   d  d l  Z  d  d l Z d  d l m Z m Z d  d l j j Z Gd d „  d e j ƒ Z d S)é    N)ÚproductÚstarmapc               @   sŽ   e  Z d  Z d Z d d „  Z d d „  Z d d „  Z e d d	 „  ƒ Z d
 d „  Z	 e d d „  ƒ Z
 d d d d d d „ Z d d „  Z d S)Úinstall_libz9Don't add compiled flags to filenames of non-Python filesc             C   s3   |  j  ƒ  |  j ƒ  } | d  k	 r/ |  j | ƒ d  S)N)ÚbuildÚinstallÚbyte_compile)ÚselfÚoutfiles© r
   úD/tmp/pip-build-kmztzv_d/setuptools/setuptools/command/install_lib.pyÚrun
   s    
zinstall_lib.runc                sJ   ‡  f d d †  ˆ  j  ƒ  Dƒ } t | ˆ  j ƒ  ƒ } t t ˆ  j | ƒ ƒ S)z—
        Return a collections.Sized collections.Container of paths to be
        excluded for single_version_externally_managed installations.
        c             3   s+   |  ]! } ˆ  j  | ƒ D] } | Vq q d  S)N)Ú_all_packages)Ú.0Zns_pkgÚpkg)r   r
   r   ú	<genexpr>   s   z-install_lib.get_exclusions.<locals>.<genexpr>)Ú_get_SVEM_NSPsr   Ú_gen_exclusion_pathsÚsetr   Ú_exclude_pkg_path)r   Zall_packagesZ
excl_specsr
   )r   r   Úget_exclusions   s    zinstall_lib.get_exclusionsc             C   s,   | j  d ƒ | g } t j j |  j | Œ S)zw
        Given a package name and exclusion path within that package,
        compute the full exclusion path.
        Ú.)ÚsplitÚosÚpathÚjoinÚinstall_dir)r   r   Zexclusion_pathÚpartsr
   r
   r   r      s    zinstall_lib._exclude_pkg_pathc             c   s.   x' |  r) |  V|  j  d ƒ \ }  } } q Wd S)zn
        >>> list(install_lib._all_packages('foo.bar.baz'))
        ['foo.bar.baz', 'foo.bar', 'foo']
        r   N)Ú
rpartition)Úpkg_nameÚsepÚchildr
   r
   r   r   '   s    	zinstall_lib._all_packagesc             C   s<   |  j  j s g  S|  j d ƒ } | j } | r8 |  j  j Sg  S)z‰
        Get namespace packages (list) but only for
        single_version_externally_managed installations and empty otherwise.
        r   )ÚdistributionZnamespace_packagesÚget_finalized_commandZ!single_version_externally_managed)r   Zinstall_cmdZsvemr
   r
   r   r   1   s
    	zinstall_lib._get_SVEM_NSPsc              c   si   d Vd Vd Vt  t d ƒ s" d St j j d d t j j ƒ }  |  d V|  d	 V|  d
 V|  d Vd S)zk
        Generate file paths to be excluded for namespace packages (bytecode
        cache files).
        z__init__.pyz__init__.pycz__init__.pyoÚimplementationNÚ__pycache__z	__init__.z.pycz.pyoz
.opt-1.pycz
.opt-2.pyc)ÚhasattrÚsysr   r   r   r#   Ú	cache_tag)Úbaser
   r
   r   r   A   s    				z install_lib._gen_exclusion_pathsé   r   c       	         s“   | r | r | s t  ‚ |  j ƒ  ‰  ˆ  sA t j j |  | | ƒ Sd d l m } d d l m ‰ g  ‰ ‡  ‡ ‡ f d d †  } | | | | ƒ ˆ S)Nr   )Úunpack_directory)Úlogc                sP   | ˆ  k r  ˆ j  d | ƒ d Sˆ j d |  t j j | ƒ ƒ ˆ j | ƒ | S)Nz/Skipping installation of %s (namespace package)Fzcopying %s -> %s)ÚwarnÚinfor   r   ÚdirnameÚappend)ÚsrcÚdst)Úexcluder+   r	   r
   r   Úpfh   s    	z!install_lib.copy_tree.<locals>.pf)	ÚAssertionErrorr   Úorigr   Ú	copy_treeZsetuptools.archive_utilr*   Ú	distutilsr+   )	r   ÚinfileÚoutfileÚpreserve_modeÚpreserve_timesÚpreserve_symlinksÚlevelr*   r3   r
   )r2   r+   r	   r   r6   W   s    
zinstall_lib.copy_treec                s?   t  j j |  ƒ } |  j ƒ  ‰  ˆ  r; ‡  f d d †  | Dƒ S| S)Nc                s"   g  |  ] } | ˆ  k r | ‘ q Sr
   r
   )r   Úf)r2   r
   r   ú
<listcomp>y   s   	 z+install_lib.get_outputs.<locals>.<listcomp>)r5   r   Úget_outputsr   )r   Úoutputsr
   )r2   r   r@   u   s
    zinstall_lib.get_outputsN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   Ústaticmethodr   r   r   r6   r@   r
   r
   r
   r   r      s   
r   )	r   r&   Ú	itertoolsr   r   Zdistutils.command.install_libÚcommandr   r5   r
   r
   r
   r   Ú<module>   s   