JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr3 vh@sBddlZddlZddlmZmZddljjZGdddejZdS)N)productstarmapc@sZeZdZdZddZddZddZedd Zd d Z ed d Z dddZ ddZ dS) install_libz9Don't add compiled flags to filenames of non-Python filescCs&|j|j}|dk r"|j|dS)N)ZbuildinstallZ byte_compile)selfoutfilesr!/usr/lib/python3.6/install_lib.pyrun szinstall_lib.runcs4fddjD}t|j}ttj|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_pkgpkg)rrr sz-install_lib.get_exclusions..)_get_SVEM_NSPsr_gen_exclusion_pathssetr_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. .)splitospathjoinZ install_dir)rr Zexclusion_pathpartsrrr 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_namesepZchildrrr 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_NSPsccsbdVdVdVttds 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__.pyoget_tagN __pycache__z __init__.z.pycz.pyoz .opt-1.pycz .opt-2.pyc)hasattrimprrrr)baserrr rAs    z install_lib._gen_exclusion_pathsrc sj|r|r| st|js.tjj|||Sddlm}ddlmgfdd}||||S)Nr)unpack_directory)logcs<|krjd|dSjd|tjj|j||S)Nz/Skipping installation of %s (namespace package)Fzcopying %s -> %s)warninforrdirnameappend)srcdst)excluder#rrr pfgs z!install_lib.copy_tree..pf) AssertionErrorrorigr copy_treeZsetuptools.archive_utilr"Z distutilsr#) rZinfileZoutfileZ preserve_modeZpreserve_timesZpreserve_symlinkslevelr"r+r)r*r#rr r.Vs   zinstall_lib.copy_treecs.tjj|}|jr*fdd|DS|S)Ncsg|]}|kr|qSrr)r f)r*rr xsz+install_lib.get_outputs..)r-r get_outputsr)rZoutputsr)r*r r2ts  zinstall_lib.get_outputsN)r!r!rr!) __name__ __module__ __qualname____doc__r rr staticmethodr rrr.r2rrrr rs   r) rr itertoolsrrZdistutils.command.install_libZcommandrr-rrrr s