a i5h@sHddlZddlZddlmZmZddlmmZGdddejZdS)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 filescCstj|d|_d|_dSN)origrinitialize_options multiarchinstall_layoutselfr @/usr/lib/python3/dist-packages/setuptools/command/install_lib.pyr s zinstall_lib.initialize_optionscCsLtj||dd|jdkrHtjdddkrHddl}|d|_ dS)Ninstall)r r Zdeb)rrZ MULTIARCH) rrfinalize_optionsZset_undefined_optionsr sys version_info sysconfigget_config_varr)r rr r r rs   zinstall_lib.finalize_optionscCs&||}|dur"||dSr)ZbuildrZ byte_compile)r outfilesr r r runszinstall_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] }|VqqdSr) _all_packages).0Zns_pkgpkgr 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&|d|g}tjj|jg|RS)zw Given a package name and exclusion path within that package, compute the full exclusion path. .)splitospathjoinZ install_dir)r rZexclusion_pathpartsr r r r+szinstall_lib._exclude_pkg_pathccs |r|V|d\}}}qdS)zn >>> list(install_lib._all_packages('foo.bar.baz')) ['foo.bar.baz', 'foo.bar', 'foo'] r!N) rpartition)pkg_namesepchildr r r r3szinstall_lib._all_packagescCs,|jjs gS|d}|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)r Z install_cmdZsvemr r r r=s  zinstall_lib._get_SVEM_NSPsccsbdVdVdVttds dStjddtjj}|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 rMs     z install_lib._gen_exclusion_pathsrc s|r |r |rJs>ddl}j|j_tj||Sddlm }ddl m gjrddl } | djddrdn dddjddffdd} |||| S) Nr)unpack_directory)logZ EXT_SUFFIXz%s-%s%scsz|vrd|dSjrVrV|rV|sV|}dtj|d|tj| ||S)Nz/Skipping installation of %s (namespace package)Fzrenaming extension to %szcopying %s -> %s) warnrendswithreplaceinfor#r$basenamedirnameappend)srcZdstexcludeZ ext_suffixr2Z new_suffixrr r r pf~s  z!install_lib.copy_tree..pf)r Zdistutils.dir_utilrZdir_util _multiarchrr copy_treeZsetuptools.archive_utilr1 distutilsr2rrr5) r ZinfileZoutfileZ preserve_modeZpreserve_timesZpreserve_symlinkslevelrAr1rr>r r<r r@cs$      zinstall_lib.copy_treecs.tj|}|r*fdd|DS|S)Ncsg|]}|vr|qSr r )rfr=r r z+install_lib.get_outputs..)rr get_outputsr )r Zoutputsr rDr rGs  zinstall_lib.get_outputsN)r0r0rr0)__name__ __module__ __qualname____doc__rrrr r staticmethodrrrr@rGr r r r rs   ,r) r#r itertoolsrrZdistutils.command.install_libZcommandrrr r r r s