3 ]@sJddlZddlZddlZddlmZmZddljjZ Gddde jZdS)N)productstarmapc@sjeZdZdZddZddZddZdd Zd d Ze d d Z ddZ e ddZ dddZ ddZdS) install_libz9Don't add compiled flags to filenames of non-Python filescCstjj|d|_d|_dS)N)origrinitialize_options multiarchinstall_layout)selfr D/tmp/pip-build-8jg9gmni/setuptools/setuptools/command/install_lib.pyr s zinstall_lib.initialize_optionscCsLtjj||jdd|jdkrHtjddd krHddl}|jd|_ dS) Ninstallrdebr MULTIARCH)rr)rr) rrfinalize_optionsset_undefined_optionsrsys version_info sysconfigget_config_varr)r rr r r rs   zinstall_lib.finalize_optionscCs&|j|j}|dk r"|j|dS)N)buildr byte_compile)r outfilesr r r runszinstall_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)r r r $sz-install_lib.get_exclusions..)_get_SVEM_NSPsr_gen_exclusion_pathssetr_exclude_pkg_path)r Z all_packagesZ excl_specsr )r r 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. .)splitospathjoin install_dir)r rZexclusion_pathpartsr r r r",szinstall_lib._exclude_pkg_pathccs$x|r|V|jd\}}}qWdS)zn >>> list(install_lib._all_packages('foo.bar.baz')) ['foo.bar.baz', 'foo.bar', 'foo'] r$N) rpartition)pkg_namesepchildr r r r4szinstall_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 ) distributionZnamespace_packagesget_finalized_commandZ!single_version_externally_managed)r Z install_cmdZsvemr r r r>s  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)hasattrimpr&r'r(r1)baser r r r Ns    z install_lib._gen_exclusion_pathsrc s|r|r| stjs@ddl}j|j_tjj||Sddl m }ddl m gjrddl } | jdjjd drdn ddd jd dffdd} |||| S) Nr)unpack_directory)log EXT_SUFFIXrz%s-%s%scs||krjd|dSjrXrX|jrX|j rX|j}jdtjj|jd|tjj|j ||S)Nz/Skipping installation of %s (namespace package)Fzrenaming extension to %szcopying %s -> %s) warnrendswithreplaceinfor&r'basenamedirnameappend)srcdst)exclude ext_suffixr8 new_suffixrr r r pf~s   z!install_lib.copy_tree..pfrGrG)AssertionErrorr#distutils.dir_utilrdir_util _multiarchrr copy_treeZsetuptools.archive_utilr7 distutilsr8rrr;) r infileoutfile preserve_modepreserve_timespreserve_symlinkslevelrMr7rrFr )rCrDr8rErr r rLcs$      zinstall_lib.copy_treecs.tjj|}|jr*fdd|DS|S)Ncsg|]}|kr|qSr r )rf)rCr r sz+install_lib.get_outputs..)rr get_outputsr#)r outputsr )rCr rVs  zinstall_lib.get_outputsN)r6r6rr6)__name__ __module__ __qualname____doc__rrrr#r" staticmethodrrr rLrVr r r r rs   *r) r&rr4 itertoolsrrZdistutils.command.install_libcommandrrr r r r s