
    
_d                     v    d dl Z d dlmZ d dlZej                  j
                  Z G d d      Z G d de      Zy)    N)logc                   P    e Zd ZdZd Zd Zd ZdZ	 dZ	 d Z	d Z
d	 Zed
        Zy)	Installerz
-nspkg.pthc                    | j                         }|sy t        j                  j                  | j	                               \  }}|| j
                  z  }| j                  j                  |       t        j                  d|       t        | j                  |      }| j                  rt        |       y t        |d      5 }|j                  |       d d d        y # 1 sw Y   y xY w)NzInstalling %swt)_get_all_ns_packagesospathsplitext_get_target	nspkg_extoutputsappendr   infomap_gen_nspkg_linedry_runlistopen
writelines)selfnspfilenameextlinesfs         7/usr/lib/python3/dist-packages/setuptools/namespaces.pyinstall_namespaceszInstaller.install_namespaces   s    '')(()9)9);<#DNN"H%(+D((#.<<K(D! 	 QLL	  	  	 s   >CC"c                    t         j                  j                  | j                               \  }}|| j                  z  }t         j                  j                  |      sy t        j                  d|       t        j                  |       y )NzRemoving %s)	r	   r
   r   r   r   existsr   r   remove)r   r   r   s      r   uninstall_namespaceszInstaller.uninstall_namespaces   s^    (()9)9);<#DNN"ww~~h')
		(    c                     | j                   S N)targetr   s    r   r   zInstaller._get_target&   s    {{r#   )	zimport sys, types, osz#has_mfs = sys.version_info > (3, 5)z$p = os.path.join(%(root)s, *%(pth)r)z4importlib = has_mfs and __import__('importlib.util')z-has_mfs and __import__('importlib.machinery')zm = has_mfs and sys.modules.setdefault(%(pkg)r, importlib.util.module_from_spec(importlib.machinery.PathFinder.find_spec(%(pkg)r, [os.path.dirname(p)])))zCm = m or sys.modules.setdefault(%(pkg)r, types.ModuleType(%(pkg)r))z7mp = (m or []) and m.__dict__.setdefault('__path__',[])z(p not in mp) and mp.append(p))z4m and setattr(sys.modules[%(parent)r], %(child)r, m)c                      y)Nz$sys._getframe(1).f_locals['sitedir'] r'   s    r   	_get_rootzInstaller._get_root?   s    5r#   c                     t        |j                  d            }| j                         }| j                  }|j	                  d      \  }}}|r|| j
                  z  }dj                  |      t               z  dz   S )N.;
)tuplesplitr*   _nspkg_tmpl
rpartition_nspkg_tmpl_multijoinlocals)r   pkgpthroot
tmpl_linesparentsepchilds           r   r   zInstaller._gen_nspkg_lineB   sn    CIIcN#~~%%
 ^^C0U$000Jxx
#fh.55r#   c                     | j                   j                  xs g }t        t        t	        | j
                  |                  S )z,Return sorted list of all package namespaces)distributionnamespace_packagessortedflattenr   
_pkg_names)r   pkgss     r   r   zInstaller._get_all_ns_packagesK   s3      339rgc$//489::r#   c              #      K   | j                  d      }|r'dj                  |       |j                          |r&yyw)z
        Given a namespace package, yield the components of that
        package.

        >>> names = Installer._pkg_names('a.b.c')
        >>> set(names) == set(['a', 'a.b', 'a.b.c'])
        True
        r,   N)r0   r4   pop)r6   partss     r   rB   zInstaller._pkg_namesP   s4      		#((5/!IIK s   9>>N)__name__
__module____qualname__r   r   r"   r   r1   r3   r*   r   r   staticmethodrB   r)   r#   r   r   r   	   sN    I $K" (Q;66;
  r#   r   c                       e Zd Zd Zd Zy)DevelopInstallerc                 >    t        t        | j                              S r%   )reprstregg_pathr'   s    r   r*   zDevelopInstaller._get_roota   s    C&''r#   c                     | j                   S r%   )egg_linkr'   s    r   r   zDevelopInstaller._get_targetd   s    }}r#   N)rG   rH   rI   r*   r   r)   r#   r   rL   rL   `   s    (r#   rL   )	r	   	distutilsr   	itertoolschainfrom_iterablerA   r   rL   r)   r#   r   <module>rW      s8    	   //
'
'T Tny r#   