\bg<ddlmZddlZddlZddlZddlZddlZddlmZm Z ddl m Z ddl m Z ddl mZddlmZdd lmZmZdd lmZdd lmZddlmcmZddlZdd lmZd Z ddZ!GddejZdZ"GddZ#dS)) annotationsN)IterableIterator)partial)glob)Path)unique_everseen)StrPathStrPathT) Distribution)SetuptoolsDeprecationWarning) convert_path)z*.pyizpy.typedreturnNonecxtj|tj|jtjzdSN)oschmodstatst_modeS_IWRITE)targets l/builddir/build/BUILD/cloudlinux-venv-1.0.7/venv/lib/python3.11/site-packages/setuptools/command/build_py.py make_writablers,HVRWV__,t}<=====ceZdZUdZded<dZded<dZded <d Z d9d:fd Zd;dZ dfd% Zd?d'Zd@d)Zd@d*Zd;d+Zd;d,ZdAd1Zd;d2Zd3Zd4Zd5Zd6ZedBd8ZxZS)Cbuild_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. r distributionFbool editable_modeNzStrPath | Noneexisting_egg_info_dirctj||jj|_|jjpi|_d|jvr |jd=dSdS)N data_files)origrfinalize_optionsr package_dataexclude_package_data__dict__selfs rr&zbuild_py.finalize_options,s^ &&t,,, -:$($5$J$Pb! 4= ( ( l+++ ) (rTinfiler outfiler preserve_modepreserve_timeslink str | Nonelevelobjectrtuple[StrPathT | str, bool]c |r\tt|}tt|}t||||||Sr)strrresolvesuper copy_file)r+r-r.r/r0r1r3 __class__s rr:zbuild_py.copy_file3st  3f--//00F$w--//1122Gww  G]ND%   rrc0|js|jr|jrdS|jr||jr(|||tj |ddS)z?Build modules, packages, and copy data files to build directoryNF)include_bytecode) py_modulespackagesr! build_modulesbuild_packagesbuild_package_data byte_compiler%r get_outputsr*s rrunz build_py.runDs 4= T5G  F ? !    = &    ! ! !  # # % % % $-33D53QQRRRRRrattrr7c|dkr ||_|jStj||S)zlazily compute data filesr$)_get_data_filesr$r%r __getattr__)r+rFs rrIzbuild_py.__getattr__Ts@ <  "2244DO? "}((t444rc||tt|j|jpdS)z?Generate list of '(package,src_dir,build_dir,filenames)' tuples)analyze_manifestlistmap_get_pkg_data_filesr?r*s rrHzbuild_py._get_data_files[s6 C0$-2E2FFGGGrc|jditt|j|jpdS)z Generate list of ``(package,src_dir,build_dir,filenames)`` tuples, but without triggering any attempt to analyze or build the manifest. manifest_filesrK)r) setdefaultrMrNrOr?r*s rget_data_files_without_manifestz(build_py.get_data_files_without_manifest`s?   !12666C0$-2E2FFGGGrc||tjj|jg|dz}fd||D}|||fS)N.cPg|]"}tj|#SrK)rpathrelpath).0filesrc_dirs r z0build_py._get_pkg_data_files..rs9    GOOD' * *   r)get_package_dirrrWjoin build_libsplitfind_data_files)r+package build_dir filenamesr[s @rrOzbuild_py._get_pkg_data_filesjs&&w//GLDN#3gmmC6H6H#HJ     ,,Wg>>   I55rc||j||t}tt t d|}t j|}ttj j |}t j|j |g|}||||S)z6Return filenames for package's data files in 'src_dir')extra_patternsT) recursive)_get_platform_patternsr'_IMPLICIT_DATA_FILESrNrr itertoolschain from_iterablefilterrrWisfilerQgetexclude_data_files)r+rbr[patternsglobs_expanded globs_matches glob_filesfiless rrazbuild_py.find_data_filesxs..    / /   WTT:::HEE!55nEE BGNM::    # #GR 0 0   &&w???rr= list[str]c|jr3t|St |S)1See :class:`setuptools.commands.build.SubCommand`)r!rMget_output_mappingkeysr9rD)r+r=r;s rrDzbuild_py.get_outputssM   ://11668899 9ww""#3444rdict[str, str]ctj||}t t |dS)rxc|dS)NrrK)xs rz-build_py.get_output_mapping..s !A$r)key)rjrk _get_package_data_output_mapping_get_module_mappingdictsorted)r+mappings rryzbuild_py.get_output_mappingsP/  1 1 3 3  $ $ & &  F7777888rIterator[tuple[str, str]]c#K|D]=\}}}|d}||j||}||fV>dS)z5Iterate over all modules producing (dest, src) pairs.rUN)find_all_modulesr`get_module_outfiler_)r+rbmodule module_filefilenames rrzbuild_py._get_module_mappingsp,0,A,A,C,C * * (GV[mmC((G..t~wOOH[) ) ) ) ) * *rc#K|jD]R\}}}}|D]H}tj||}tj||}||fVISdS)z6Iterate over package data producing (dest, src) pairs.N)r$rrWr^)r+rbr[rcrdrrsrcfiles rrz)build_py._get_package_data_output_mappings|6:o ( ( 2GWi% ( (i::',,w99w''''' ( ( (rc|D]_\}}|tj||||\}}t |`dS)z$Copy data files into build directoryN)rmkpathrrWdirnamer:r)r+rr_outf_copieds rrBzbuild_py.build_package_datass#DDFF " "OFG KK// 0 0 0!^^GV<.s-BBBQBRW%%a((BBBrc3 K|]}|vV dSrrK)rYr norm_paths r z/build_py._filter_build_files..s(-T-TQay.@-T-T-T-T-T-TrN) rr_ build_temp build_baserrWrisabsall)r+rurr build_dirs norm_dirsrZrs @rrzbuild_py._filter_build_filess**7330@%BRS BB*BBB   D((..I7==&& #-T-T-T-T)-T-T-T*T*T    rcdSrrKr*s rget_data_fileszbuild_py.get_data_filess rc |j|S#t$rYnwxYwtj|||}||j|<|r |jjs|S|jjD]"}||ks||dzrn#|St|d5}| }dddn #1swxYwYd|vr#tj d|d|S)z8Check namespace packages' __init__ for declare_namespacerUrbNsdeclare_namespacezNamespace package problem: z is a namespace package, but its __init__.py does not call declare_namespace()! Please fix it. (See the setuptools manual under "Namespace Packages" for details.) ") packages_checkedKeyErrorr%r check_packagernamespace_packages startswithopenread distutilserrorsDistutilsError)r+rb package_dirinit_pypkgrcontentss rrzbuild_py.check_packagesi (1 1    D ---dG[II)0g& d/B N$7  Cg~~# !>!>~N '4  AvvxxH               x / /"111.!s/OO7ug66OOOOOOrc3$K|] }|v|V dSrrK)rYfnbads rrz.build_py.exclude_data_files..%s'77"3277r)rMrhr(rjrkrlsetr ) r+rbr[rurq match_groupsmatcheskeepersrs ` @rrpzbuild_py.exclude_data_filessU ..  %     POOOhOOO /// =='ll7777777OG,,---rrKctj||dg||g}fd|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. c3rK|]1}tjt|V2dSr)rrWr^r)rYrr[s rrz2build_py._get_platform_patterns..6sQ   GLL,w"7"7 8 8      r)rjrkro)specrbr[rf raw_patternss ` rrhzbuild_py._get_platform_patterns)sh!  HHR   HHWb ! !      (    r)TTNr,)r-r r.r r/r r0r r1r2r3r4rr5rr)rFr7)T)r=r rrv)rr{)rr)rurrr rr)rK)__name__ __module__ __qualname____doc____annotations__r!r"r&r:rErIrHrSrOrarDryrrrBrLrrrrr]rp staticmethodrh __classcell__)r;s@rrrsM,00000,,,##       "SSSS 5555HHH HHH 6 6 6@@@$5555555 9999****((((""""'M'M'M'MR*    <***  ...    \     rrctj|s|Sddlm}t jd|z}||)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. )rrWrdistutils.errorsrtextwrapdedentlstrip)rWrmsgs rrr=sp 7==   444444    &((    c " ""rcFeZdZdZGddeZdZdZdZdZ dS) rz>Inform users that package or module is included as 'data file'ceZdZdZdZdS)!_IncludePackageDataAbuse._WarningzU Package {importable!r} is absent from the `packages` configuration. a| ############################ # Package would be ignored # ############################ Python recognizes {importable!r} as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that {importable!r} is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want {importable!r} to be distributed and are already explicitly excluding {importable!r} via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. N)rrr_SUMMARY_DETAILSrKrr_WarningrUs " rrc,t|_dSr)r_already_warnedr*s r__init__z!_IncludePackageDataAbuse.__init__s"uurc|do)|dtd S)Nz.py)endswithlen isidentifier)r+rZs rrz"_IncludePackageDataAbuse.is_modules6}}U##J]E {](;(H(H(J(JJrct|j}ttjt j|j}|rd|g|SdS)NrU) rparentrMrj takewhiler7rpartsr^)r+rrZrrs rrz._IncludePackageDataAbuse.importable_subpackagesV4jjY()939EEFF  .88V,e,-- -trc||jvr7|j||j|dSdS)N)r)rremitadd)r+rs rrz_IncludePackageDataAbuse.warnsN T1 1 1 M  *  5 5 5  $ $Z 0 0 0 0 0 2 1rN) rrrrrrrrrrrKrrrrRsHH' ' ' ' ' /' ' ' V%%%KKK11111rrr)$ __future__rrrjrrrcollections.abcrr functoolsrrpathlibrmore_itertoolsr _pathr r distr warningsrdistutils.command.build_pycommandrr%rrdistutils.utilrrirrrrKrrrs"""""" ........******%%%%%%%%333333)))))))))'''''',>>>>\ \ \ \ \ t}\ \ \ ~###*>1>1>1>1>1>1>1>1>1>1r