3 ‰K]ã@sBddlZddlZddlmZmZddljjZGdd„dejƒZdS)éN)ÚproductÚstarmapc@sZeZdZdZdd„Zdd„Zdd„Zedd „ƒZd d „Z ed d „ƒZ ddd„Z dd„Z dS)Ú install_libz9Don't add compiled flags to filenames of non-Python filescCs&|jƒ|jƒ}|dk r"|j|ƒdS)N)ZbuildÚinstallZ byte_compile)ÚselfÚoutfiles©rú!/usr/lib/python3.6/install_lib.pyÚrun szinstall_lib.runcs4‡fdd„ˆjƒDƒ}t|ˆjƒƒ}ttˆj|ƒƒS)z— Return a collections.Sized collections.Container of paths to be excluded for single_version_externally_managed installations. c3s"|]}ˆj|ƒD] }|VqqdS)N)Ú _all_packages)Ú.0Zns_pkgÚpkg)rrr ú sz-install_lib.get_exclusions..)Ú_get_SVEM_NSPsrÚ_gen_exclusion_pathsÚsetrÚ_exclude_pkg_path)rZ all_packagesZ excl_specsr)rr Úget_exclusionss  zinstall_lib.get_exclusionscCs$|jdƒ|g}tjj|jf|žŽS)zw Given a package name and exclusion path within that package, compute the full exclusion path. Ú.)ÚsplitÚosÚpathÚjoinZ install_dir)rr Zexclusion_pathÚpartsrrr rszinstall_lib._exclude_pkg_pathccs$x|r|V|jdƒ\}}}qWdS)zn >>> list(install_lib._all_packages('foo.bar.baz')) ['foo.bar.baz', 'foo.bar', 'foo'] rN)Ú rpartition)Zpkg_nameÚsepZchildrrr r 'szinstall_lib._all_packagescCs,|jjs gS|jdƒ}|j}|r(|jjSgS)z‰ Get namespace packages (list) but only for single_version_externally_managed installations and empty otherwise. r)Z distributionZnamespace_packagesZget_finalized_commandZ!single_version_externally_managed)rZ install_cmdZsvemrrr r1s  zinstall_lib._get_SVEM_NSPsccsbdVdVdVttdƒs dStjjddtjƒƒ}|dV|d V|d V|d VdS) 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Úimprrrr)Úbaserrr rAs    z install_lib._gen_exclusion_pathsérc sX|jƒ‰ˆstjj|||ƒSddlm}ddlm‰g‰‡‡‡fdd„}||||ƒˆS)Nr)Úunpack_directory)Úlogcs<|ˆkrˆjd|ƒdSˆjd|tjj|ƒƒˆj|ƒ|S)Nz/Skipping installation of %s (namespace package)Fzcopying %s -> %s)ÚwarnÚinforrÚdirnameÚappend)ÚsrcÚdst)Úexcluder#rrr Úpfgs z!install_lib.copy_tree..pf)rÚorigrÚ copy_treeZsetuptools.archive_utilr"Z distutilsr#) rZinfileZoutfileZ preserve_modeZpreserve_timesZpreserve_symlinksÚlevelr"r+r)r*r#rr r-Vs   zinstall_lib.copy_treecs.tjj|ƒ}|jƒ‰ˆr*‡fdd„|DƒS|S)Ncsg|]}|ˆkr|‘qSrr)r Úf)r*rr ú xsz+install_lib.get_outputs..)r,rÚ get_outputsr)rZoutputsr)r*r r1ts  zinstall_lib.get_outputsN)r!r!rr!) Ú__name__Ú __module__Ú __qualname__Ú__doc__r rrÚ staticmethodr rrr-r1rrrr rs   r) rrÚ itertoolsrrZdistutils.command.install_libZcommandrr,rrrr Ús