
    0A7h                     `    d dl Z d dlZd dlmZmZ d dlmc mZ  G d dej                        Zy)    N)productstarmapc                   j    e Zd ZdZd Zd Zd Zd Zd Ze	d        Z
d Ze	d	        Z	 	 	 	 dd
Zd Zy)install_libz9Don't add compiled flags to filenames of non-Python filesc                 ^    t         j                  j                  |        d | _        d | _        y N)origr   initialize_options	multiarchinstall_layout)selfs    @/usr/lib/python3/dist-packages/setuptools/command/install_lib.pyr
   zinstall_lib.initialize_options
   s%    ++D1"    c                     t         j                  j                  |        | j                  dd       | j                  dk(  r2t
        j                  d d dk\  rdd l}|j                  d      | _	        y y y )Ninstall)r   r   deb   )   r   r   	MULTIARCH)
r	   r   finalize_optionsset_undefined_optionsr   sysversion_info	sysconfigget_config_varr   )r   r   s     r   r   zinstall_lib.finalize_options   sg    ))$/""9-PQ%'C,<,<Ra,@F,J&55kBDN -K'r   c                 l    | j                          | j                         }|| j                  |       y y r   )buildr   byte_compile)r   outfiless     r   runzinstall_lib.run   s/    

<<>h'  r   c                       f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   N   K   | ]  }j                  |      D ]  }|   y wr   )_all_packages).0ns_pkgpkgr   s      r   	<genexpr>z-install_lib.get_exclusions.<locals>.<genexpr>"   s9      
))&1
  

s   "%)_get_SVEM_NSPsr   _gen_exclusion_pathssetr   _exclude_pkg_path)r   all_packages
excl_specss   `  r   get_exclusionszinstall_lib.get_exclusions   sJ    

--/
 \4+D+D+FG
7411:>??r   c                     |j                  d      |gz   }t        j                  j                  | j                  g| 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&   exclusion_pathpartss       r   r+   zinstall_lib._exclude_pkg_path+   s7    
 		#.!11ww||D,,5u55r   c              #   J   K   | r|  | j                  d      \  } }}| ryyw)zn
        >>> list(install_lib._all_packages('foo.bar.baz'))
        ['foo.bar.baz', 'foo.bar', 'foo']
        r0   N)
rpartition)pkg_namesepchilds      r   r#   zinstall_lib._all_packages3   s,      N#+#6#6s#; Hc5 s   ##c                     | j                   j                  sg S | j                  d      }|j                  }|r| j                   j                  S g S )z
        Get namespace packages (list) but only for
        single_version_externally_managed installations and empty otherwise.
        r   )distributionnamespace_packagesget_finalized_command!single_version_externally_managed)r   install_cmdsvems      r   r(   zinstall_lib._get_SVEM_NSPs=   sL       33I00;<<7;t  33CCr   c               #      K   d d d t        t        d      syt        j                  j	                  ddt        j
                  j                  z         } | dz    | d	z    | d
z    | dz    yw)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)hasattrr   r2   r3   r4   rE   	cache_tag)bases    r   r)   z install_lib._gen_exclusion_pathsM   sw      s,-ww||M;9K9K9U9U+UVVmVm\!!\!!s   A6A8c                     |r|r|rJ  j                         s@dd l} j                  |j                  _        t
        j                  j                   ||      S ddlm	} ddl
m g  j                  rRdd l}	|	j                  d      j                   j                  dd  z         rd nd d d j                  dd   fd}
 ||||
       S )Nr   )unpack_directory)log
EXT_SUFFIX-c                    |v rj                  d|       yj                  rerc|j                        rR|j                        sA|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infor2   r3   basenamedirnameappend)srcdstexclude
ext_suffixrL   
new_suffixr   r   s     r   pfz!install_lib.copy_tree.<locals>.pf   s    g~JCP~~*j1IRUR^R^_iRjkk*j93RWW5E5Ec5JKHH'bggooc.BCOOC Jr   )r.   distutils.dir_utilr   dir_util
_multiarchr	   r   	copy_treesetuptools.archive_utilrK   	distutilsrL   r   r   rR   )r   infileoutfilepreserve_modepreserve_timespreserve_symlinkslevelrc   rK   r   r]   rZ   r[   rL   r\   r   s   `          @@@@@r   ra   zinstall_lib.copy_treeb   s     8III%%'%,0NNI)##--dFGDD 	=!>>"11<@J""4>>JrsO#CD!
*4Sb/4>>:VXVY?[
	 	 	"-r   c                     t         j                  j                  |       }| j                         }|r|D cg c]	  }||vs| c}S |S c c}w r   )r	   r   get_outputsr.   )r   outputsrZ   fs       r   rk   zinstall_lib.get_outputs   sK    ""..t4%%'&;!!7*:A;; <s   	A	 A	N)   rn   r   rn   )__name__
__module____qualname____doc__r
   r   r    r.   r+   staticmethodr#   r(   r)   ra   rk    r   r   r   r      sg    C#
C(@6 < <D  " "0 .`r   r   )	r2   r   	itertoolsr   r   distutils.command.install_libcommandr   r	   rt   r   r   <module>rx      s(    	 
 & , ,P$"" Pr   