o Cf@sHddlZddlZddlmZmZddlmmZGdddejZdS)N)productstarmapc@sleZdZdZddZddZddZdd Zd d Ze d d Z ddZ e ddZ dddZ ddZdS) install_libz9Don't add compiled flags to filenames of non-Python filescCstj|d|_d|_dSN)origrinitialize_options multiarchinstall_layoutselfr @/usr/lib/python3/dist-packages/setuptools/command/install_lib.pyr s  zinstall_lib.initialize_optionscCsTtj||dd|jdkr&tjdddkr(ddl}|d|_ dSdSdS)Ninstall)r r deb)rr MULTIARCH) rrfinalize_optionsset_undefined_optionsr sys version_info sysconfigget_config_varr)r rr r r rs  zinstall_lib.finalize_optionscCs*||}|dur||dSdSr)buildr byte_compile)r outfilesr r r runs zinstall_lib.runcs4fddD}t|}ttj|S)z Return a collections.Sized collections.Container of paths to be excluded for single_version_externally_managed installations. c3s$|] }|D]}|Vq qdSr) _all_packages).0ns_pkgpkgr r r "s z-install_lib.get_exclusions..)_get_SVEM_NSPsr_gen_exclusion_pathssetr_exclude_pkg_path)r all_packages excl_specsr r r get_exclusionss zinstall_lib.get_exclusionscCs&|d|g}tjj|jg|RS)zw Given a package name and exclusion path within that package, compute the full exclusion path. .)splitospathjoin install_dir)r r exclusion_pathpartsr r r r%+szinstall_lib._exclude_pkg_pathccs(|r|V|d\}}}|sdSdS)zn >>> list(install_lib._all_packages('foo.bar.baz')) ['foo.bar.baz', 'foo.bar', 'foo'] r)N) rpartition)pkg_namesepchildr r r r3s  zinstall_lib._all_packagescCs,|jjsgS|d}|j}|r|jjSgS)z Get namespace packages (list) but only for single_version_externally_managed installations and empty otherwise. r) distributionnamespace_packagesget_finalized_command!single_version_externally_managed)r install_cmdsvemr r r r"=s  zinstall_lib._get_SVEM_NSPsccsddVdVdVttdsdStjddtjj}|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__.pyoimplementationN __pycache__z __init__.z.pycz.pyoz .opt-1.pycz .opt-2.pyc)hasattrrr+r,r-r; cache_tag)baser r r r#Ms     z install_lib._gen_exclusion_pathsrc s|r|r|rJsddl}j|j_tj||Sddlm }ddl m gjrXddl } | djddrHdndddjddffdd} |||| S) Nr)unpack_directory)log EXT_SUFFIXz%s-%s%scsz|vr d|dSjr+r+|r+|s+|}dtj|d|tj| ||S)Nz/Skipping installation of %s (namespace package)Fzrenaming extension to %szcopying %s -> %s) warnrendswithreplaceinfor+r,basenamedirnameappend)srcdstexclude ext_suffixrB new_suffixrr r r pf~s  z!install_lib.copy_tree..pf)r(distutils.dir_utilrdir_util _multiarchrr copy_treesetuptools.archive_utilrA distutilsrBrrrF) r infileoutfile preserve_modepreserve_timespreserve_symlinkslevelrXrArrRr rNr rVcs$      zinstall_lib.copy_treecs.tj|}|rfdd|DS|S)Ncsg|]}|vr|qSr r )rfrOr r sz+install_lib.get_outputs..)rr get_outputsr()r outputsr r`r rbs zinstall_lib.get_outputsN)r@r@rr@)__name__ __module__ __qualname____doc__rrrr(r% staticmethodrr"r#rVrbr r r r rs    ,r) r+r itertoolsrrdistutils.command.install_libcommandrrr r r r s