
|_                 @   si   d  d l  Z  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 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   s&   t  j j |   d  |  _ d  |  _ d  S)N)origr   initialize_options	multiarchinstall_layout)self r
   D/tmp/pip-build-3_sjtvrs/setuptools/setuptools/command/install_lib.pyr      s    	zinstall_lib.initialize_optionsc             C   sj   t  j j |   |  j d d  |  j d k rf t j d  d  d	 k rf d d  l } | j d  |  _	 d  S)
Ninstallr   deb      r   	MULTIARCH)r   r   )r   r   )
r   r   finalize_optionsset_undefined_optionsr   sysversion_info	sysconfigget_config_varr   )r	   r   r
   r
   r   r      s
    (zinstall_lib.finalize_optionsc             C   s3   |  j    |  j   } | d  k	 r/ |  j |  d  S)N)buildr   byte_compile)r	   outfilesr
   r
   r   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   4   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   >   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    }  |  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get_tagN__pycache__z	__init__.z.pycz.pyoz
.opt-1.pycz
.opt-2.pyc)hasattrimpr&   r'   r(   r1   )baser
   r
   r   r    N   s    			z install_lib._gen_exclusion_paths   r   c                s.  | r | r | s t    j       s\ d d  l }  j | j _ t j j  | |  Sd d l	 m
 } d d l m  g    j r d d  l }	 |	 j d    j  j  d	 d    r d   n* d  d  d
   j  d d   f         f d d   }
 | | | |
   S)Nr   )unpack_directory)log
EXT_SUFFIXr   z%s-%s%sc                s   |   k r   j  d |  d S j r|  r| | j   r| | j   r| | j    }  j d t j j |    j d |  t j j |    j	 |  | S)Nz/Skipping installation of %s (namespace package)Fzrenaming extension to %szcopying %s -> %s)
warnr   endswithreplaceinfor&   r'   basenamedirnameappend)srcdst)exclude
ext_suffixr8   
new_suffixr   r	   r
   r   pf~   s    	.z!install_lib.copy_tree.<locals>.pfrG   rG   )AssertionErrorr#   distutils.dir_utilr   dir_util
_multiarchr   r   	copy_treeZsetuptools.archive_utilr7   	distutilsr8   r   r   r;   )r	   infileoutfilepreserve_modepreserve_timespreserve_symlinkslevelrM   r7   r   rF   r
   )rC   rD   r8   rE   r   r	   r   rL   c   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)rC   r
   r   
<listcomp>   s   	 z+install_lib.get_outputs.<locals>.<listcomp>)r   r   get_outputsr#   )r	   outputsr
   )rC   r   rV      s
    zinstall_lib.get_outputsN)__name__
__module____qualname____doc__r   r   r   r#   r"   staticmethodr   r   r    rL   rV   r
   r
   r
   r   r      s   
*r   )
r&   r   r4   	itertoolsr   r   Zdistutils.command.install_libcommandr   r   r
   r
   r
   r   <module>   s
   