_d vddlZddlmZddlZejj ZGddZGddeZy)N)logcPeZdZdZdZdZdZdZ dZ dZ dZ d Z e d Z y ) Installerz -nspkg.pthc|j}|sytjj|j \}}||j z }|j j|tjd|t|j|}|jr t|yt|d5}|j|dddy#1swYyxYw)Nz Installing %swt)_get_all_ns_packagesospathsplitext _get_target nspkg_extoutputsappendrinfomap_gen_nspkg_linedry_runlistopen writelines)selfnspfilenameextlinesfs 7/usr/lib/python3/dist-packages/setuptools/namespaces.pyinstall_namespaceszInstaller.install_namespaces s'') (()9)9);< #DNN" H% (+D((#. << K  (D ! Q LL    s >CC"ctjj|j\}}||jz }tjj |syt jd|tj|y)Nz Removing %s) r r r r r existsrrremove)rrrs runinstall_namespaceszInstaller.uninstall_namespacess^(()9)9);< #DNN"ww~~h'  ) (c|jSN)targetrs rr zInstaller._get_target&s {{r#) zimport 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)cy)Nz$sys._getframe(1).f_locals['sitedir']r's r _get_rootzInstaller._get_root?s5r#ct|jd}|j}|j}|j d\}}}|r||j z }dj |tzdzS)N.; )tuplesplitr* _nspkg_tmpl rpartition_nspkg_tmpl_multijoinlocals)rpkgpthroot tmpl_linesparentsepchilds rrzInstaller._gen_nspkg_lineBsnCIIcN#~~%%  ^^C0U  $00 0Jxx #fh.55r#c|jjxsg}ttt |j |S)z,Return sorted list of all package namespaces) distributionnamespace_packagessortedflattenr _pkg_names)rpkgss rrzInstaller._get_all_ns_packagesKs3  339rgc$//489::r#c#K|jd}|r'dj||j|r&yyw)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)r0r4pop)r6partss rrBzInstaller._pkg_namesPs4 #((5/ ! IIKs9>>N)__name__ __module__ __qualname__r rr"r r1r3r*rr staticmethodrBr)r#rrr sNI $K"(Q;66;   r#rceZdZdZdZy)DevelopInstallerc>tt|jSr%)reprstregg_pathr's rr*zDevelopInstaller._get_rootasC &''r#c|jSr%)egg_linkr's rr zDevelopInstaller._get_targetds }}r#N)rGrHrIr*r r)r#rrLrL`s (r#rL) r distutilsr itertoolschain from_iterablerArrLr)r#rrWs8  // ' 'TTnyr#