Re|% @sddlmZddlmZddljjZddlZddlZddl Z ddl Z ddl Z ddl Z ddlmZddlmZmZmZyddlmZWn%ek rGdddZYnXGd d d ejeZdd d Zd dZdS))glob) convert_pathN)six)mapfilter filterfalse) Mixin2to3c@seZdZdddZdS)rTcCsdS)z do nothingN)selffilesZdoctestsr r /builddir/build/BUILDROOT/alt-python35-setuptools-36.3.0-4.el8.x86_64/opt/alt/python35/lib/python3.5/site-packages/setuptools/command/build_py.pyrun_2to3szMixin2to3.run_2to3N)__name__ __module__ __qualname__r r r r r rs rc@seZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ ddZddZddZddZeddZd S)!build_pyaXEnhanced 'build_py' command that includes data files with packages The data files are specified via a 'package_data' argument to 'setup()'. See 'setuptools.dist.Distribution' for more details. Also, this version of the 'build_py' command allows you to specify both 'py_modules' and 'packages' in the same setup operation. cCsctjj||jj|_|jjp.i|_d|jkrM|jd=g|_g|_dS)N data_files) origrfinalize_options distribution package_dataexclude_package_data__dict___build_py__updated_files_build_py__doctests_2to3)r r r r r!s    zbuild_py.finalize_optionscCs|j r|j rdS|jr+|j|jrH|j|j|j|jd|j|jd|j|jd|jt j j |dddS)z?Build modules, packages, and copy data files to build directoryNFTZinclude_bytecoder) py_modulespackagesZ build_modulesZbuild_packagesbuild_package_datar rr byte_compilerr get_outputs)r r r r run+s     z build_py.runcCs5|dkr"|j|_|jStjj||S)zlazily compute data filesr)_get_data_filesrrr __getattr__)r attrr r r r"?s zbuild_py.__getattr__cCsktjr*t|tjr*|jd}tjj||||\}}|ra|jj |||fS)N.) rPY2 isinstance string_typessplitrr build_modulerappend)r moduleZ module_filepackageoutfilecopiedr r r r)Fszbuild_py.build_modulecCs)|jtt|j|jp"fS)z?Generate list of '(package,src_dir,build_dir,filenames)' tuples)analyze_manifestlistr_get_pkg_data_filesr)r r r r r!Ps zbuild_py._get_data_filescsi|j|tjj|jg|jd}fdd|j|D}|||fS)Nr$cs%g|]}tjj|qSr )ospathrelpath).0file)src_dirr r ^s z0build_py._get_pkg_data_files..)get_package_dirr2r3join build_libr(find_data_files)r r, build_dir filenamesr )r7r r1Us %zbuild_py._get_pkg_data_filescCs|j|j||}tt|}tjj|}ttj j |}tj|j j |g|}|j |||S)z6Return filenames for package's data files in 'src_dir')_get_platform_patternsrrr itertoolschain from_iterablerr2r3isfilemanifest_filesgetexclude_data_files)r r,r7patternsZglobs_expandedZ globs_matchesZ glob_filesr r r r r<cs  zbuild_py.find_data_filesc Csx|jD]\}}}}x|D]}tjj||}|jtjj|tjj||}|j||\}} tjj|}| r#||jj kr#|j j |q#Wq WdS)z$Copy data files into build directoryN) rr2r3r:mkpathdirname copy_fileabspathrZconvert_2to3_doctestsrr*) r r,r7r=r>filenametargetsrcfileoutfr.r r r rts zbuild_py.build_package_datac CsVi|_}|jjsdSi}x0|jp2fD]}||t|j|sz.build_py.exclude_data_files..c3s!|]}|kr|VqdS)Nr )r5fn)badr r rns)r0r?rr@rArBset_unique_everseen)r r,r7r rGZ match_groupsmatchesZkeepersr )rpr r rFs     zbuild_py.exclude_data_filescsAtj|jdg|j|g}fdd|DS)z yield platform-specific path patterns (suitable for glob or fn_match) from a glob-based spec (such as self.package_data or self.exclude_package_data) matching package in src_dir. c3s*|] }tjjt|VqdS)N)r2r3r:r)r5rm)r7r r rnsz2build_py._get_platform_patterns..)r@rArE)specr,r7Z raw_patternsr )r7r r?s zbuild_py._get_platform_patternsN)rrr__doc__rr r"r)r!r1r<rr/r[r_rjr9rF staticmethodr?r r r r rs            rccst}|j}|dkrMxdt|j|D]}|||Vq1Wn8x5|D]-}||}||krT|||VqTWdS)zHList unique elements, preserving order. Remember all elements ever seen.N)rqaddr __contains__)iterablekeyseenZseen_addelementkr r r rrs         rrcCsOtjj|s|Sddlm}tjdj|}||dS)Nr)DistutilsSetupErrorz Error: setup script specifies an absolute path: %s setup() arguments must *always* be /-separated paths relative to the setup.py directory, *never* absolute paths. )r2r3isabsdistutils.errorsrtextwrapdedentlstrip)r3rmsgr r r rQs rQ)rdistutils.utilrZdistutils.command.build_pycommandrrr2rlrrarrdr@Zsetuptools.externrZsetuptools.extern.six.movesrrrZsetuptools.lib2to3_exr ImportErrorrrrQr r r r s"