h<SSKJr SSKrSSKrSSKrSSKrSSKrSSKJrJ r SSK J r SSK J r SSK Jr SSKJr SS KJrJr SS KJr SS KJr SSKJs Jr SSKrSS KJr S r SSjr!"SS\R45rSr""SS5r#g)) annotationsN)IterableIterator)partial)glob)Path)unique_everseen)StrPathStrPathT) Distribution)SetuptoolsDeprecationWarning) convert_path)z*.pyizpy.typedc[R"U[R"U5R[R-5 gN)oschmodstatst_modeS_IWRITE)targets =/usr/lib/python3/dist-packages/setuptools/command/build_py.py make_writablers'HHVRWWV_,,t}}<=cB^\rSrSr%SrS\S'SrS\S'SrS \S 'S rS!S"U4S jjjr S#S jr S$Sjr Sr Sr SrSrS%S&U4SjjjrS'SjrS(SjrS(SjrS#SjrS#SjrS)SjrS#SjrSrSrSrSr\S*Sj5rS rU=r$)+build_pyaDEnhanced '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_dirc[RRU5 URRUlURR =(d 0UlSUR ;aUR S gg)N data_files)origrfinalize_optionsr package_dataexclude_package_data__dict__selfs rr%build_py.finalize_options,s^ &&t, --::$($5$5$J$J$Pb! 4== ( l+ )rc>U(aD[[U5R55n[[U5R55n[TU]XX4XV5$r)strrresolvesuper copy_file)r*infileoutfile preserve_modepreserve_timeslinklevel __class__s rr0build_py.copy_file3sO f--/0F$w-//12Gw ]D  rcjUR(dUR(aUR(agUR(aUR5 UR(a UR 5 UR 5 UR [RRUSS95 g)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 rrun build_py.runDsp4==T5G5G  ??    ==    !  # # % $--33D53QRrcUS:Xa!UR5UlUR$[RR X5$)zlazily compute data filesr#)_get_data_filesr#r$r __getattr__)r*attrs rrFbuild_py.__getattr__Ts9 < "224DO?? "}}((44rcUR5 [[URUR=(d S55$)z?Generate list of '(package,src_dir,build_dir,filenames)' tuples)analyze_manifestlistmap_get_pkg_data_filesr<r)s rrEbuild_py._get_data_files[s/ C00$--2E2FGGrcURRS05 [[URUR =(d S55$)z Generate list of ``(package,src_dir,build_dir,filenames)`` tuples, but without triggering any attempt to analyze or build the manifest. manifest_filesrJ)r( setdefaultrLrMrNr<r)s rget_data_files_without_manifest(build_py.get_data_files_without_manifest`s:   !126C00$--2E2FGGrc&URU5n[RR"UR/UR S5-6nUR X5Vs/sH"n[RRXB5PM$ nnXX54$s snfN.)get_package_dirrpathjoin build_libsplitfind_data_filesrelpath)r*packagesrc_dir build_dirfile filenamess rrNbuild_py._get_pkg_data_filesjs&&w/GGLLDNN#3gmmC6H#HJ ,,W> > GGOOD *>  55  s)Bc~URURUU[S9n[[ [ SS9U5n[ RRU5n[[RRU5n[ R"URRU/5U5nURXU5$)z6Return filenames for package's data files in 'src_dir')extra_patternsT) recursive)_get_platform_patternsr&_IMPLICIT_DATA_FILESrMrr itertoolschain from_iterablefilterrrYisfilerQgetexclude_data_files)r*r_r`patternsglobs_expanded globs_matches glob_filesfiless rr]build_py.find_data_filesxs..     / /  WTT:HE!55nE BGGNNM:     # #GR 0  &&w??rc>UR(a'[UR5R55$[TU]U5$)1See :class:`setuptools.commands.build.SubCommand`)r rLget_output_mappingkeysr/rA)r*r:r7s rrAbuild_py.get_outputss:   //16689 9w"#344rc[R"UR5UR55n[ [ USS95$)rxc US$)NrrJ)xs r-build_py.get_output_mapping..s!A$r)key)rjrk _get_package_data_output_mapping_get_module_mappingdictsorted)r*mappings rrybuild_py.get_output_mappings<//  1 1 3  $ $ & F7788rc## UR5H8upnURS5nURURX5nXC4v M: g7f)z5Iterate over all modules producing (dest, src) pairs.rWN)find_all_modulesr\get_module_outfiler[)r*r_module module_filefilenames rrbuild_py._get_module_mappingsK,0,A,A,C (G[mmC(G..t~~wOH) )-DsAAc## URHRupp4UHFn[RRX55n[RRX%5nXg4v MH MT g7f)z6Iterate over package data producing (dest, src) pairs.N)r#rrYrZ)r*r_r`rarcrrsrcfiles rr)build_py._get_package_data_output_mappingsP6:oo 2Gi%i:'',,w9''&7FsA$A&cUR5HQupUR[RR U55 UR X!5up4[ U5 MS g)z$Copy data files into build directoryN)rmkpathrrYdirnamer0r)r*rr_outf_copieds rr?build_py.build_package_datasI#DDFOF KK/ 0!^^G# UH oT;v M g7frrJ).0r norm_paths r /build_py._filter_build_files..s-T)Qy.@)sN) rr[ build_temp build_baserrYnormpathisabsall) r*rurr build_dirsp norm_dirsrbrs @rrbuild_py._filter_build_filess**730@0@%BRBRS 2<B*Q(RWW%%a(* BD((.I77==&&#-T)-T*T*T Cs9C! C #C-A"C!C!cgrrJr)s rget_data_filesbuild_py.get_data_filess rc(URU$![a Of=f[RR XU5nX0RU'U(aUR R (dU$UR R H#nXA:XdURUS-5(dM# O U$[US5nUR5nSSS5 O!,(df  O=fSW;a#[RRSUS35eU$)z8Check namespace packages' __init__ for declare_namespacerWrbNsdeclare_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*r_ package_dirinit_pypkgrcontentss rrbuild_py.check_packages ((1 1   ----d[I)0g&d//BBN$$77C~# !>!>8N '4 AvvxH! x /""11-gY788  s >C C&cl0Ul[RRU5 SUlSUlg)NF)rr$rinitialize_optionsr r!r)s rrbuild_py.initialize_options s, " ((."%)"rc[RRX5nURRb4[ R RURRU5$U$r)r$rrXrsrc_rootrrYrZ)r*r_ress rrXbuild_py.get_package_dirsNmm++D:    % % 177<< 1 1 : :C@ @ rc^^[T5mURURUU5nU4SjU5n[RR U5n[ U5mU4SjT5n[[U55$)z6Filter filenames for package's data files in 'src_dir'c3R># UHn[R"TU5v M g7fr)fnmatchrm)rpatternrus rr.build_py.exclude_data_files..!sOh7ug66hs$'c36># UHoT;dM Uv M g7frrJ)rfnbads rrr%s7"322s  )rLrhr'rjrkrlsetr ) r*r_r`rurq match_groupsmatcheskeepersrs ` @rrpbuild_py.exclude_data_filessoU ..  % %    PhO //// ='l77OG,--rc^[R"UURS/5URU/55nU4SjU5$)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. c3v># UH.n[RRT[U55v M0 g7fr)rrYrZr)rrr`s rr2build_py._get_platform_patterns..6s1 ( GGLL,w"7 8 8's69)rjrkro)specr_r`rf raw_patternss ` rrhbuild_py._get_platform_patterns)sF!  HHR  HHWb !  (  r)r#r r'r!rQr&r)TTN)r1r r2r r3rr4rr5z str | Noner6objectreturnztuple[StrPathT | str, bool]rNone)rGr-)T)r:rrz list[str])rzdict[str, str])rzIterator[tuple[str, str]])ruz Iterable[str]rr rz Iterator[str])rJ) __name__ __module__ __qualname____firstlineno____doc____annotations__r r!r%r0rBrFrErSrNr]rAryrrr?rKrrrrrXrp staticmethodrh__static_attributes__ __classcell__)r7s@rrrsM4,0>0,##           %  "S 5H H 6@$55 9*("'MR".5 * <*  .   rrc[RRU5(dU$SSKJn [ R "S5R5U-nU"U5e)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. )rrYrdistutils.errorsrtextwrapdedentlstrip)rYrmsgs rrr=sS 77==   4    &(   c ""rcF\rSrSrSr"SS\5rSrSrSr Sr S r g ) riRz>Inform users that package or module is included as 'data file'c\rSrSrSrSrSrg)!_IncludePackageDataAbuse._WarningiUzU 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. rJN)rrrr_SUMMARY_DETAILSrrJrr_Warningr Us " rrc"[5Ulgr)r_already_warnedr)s r__init__!_IncludePackageDataAbuse.__init__s "urclURS5=(a US[S5*R5$)Nz.py)endswithlen isidentifier)r*rbs rr"_IncludePackageDataAbuse.is_modules,}}U#J]E {(;(H(H(JJrc[U5Rn[[R"[ R UR55nU(aSRU/UQ5$grV) rparentrLrj takewhiler-rpartsrZ)r*rrbrrs rr._IncludePackageDataAbuse.importable_subpackagesO4jY(()9)9399EF 88V,e,- -rcXR;a5URRUS9 URRU5 gg)N)r)rremitadd)r*rs rr_IncludePackageDataAbuse.warns< 11 1 MM  *  5  $ $Z 0 2r)rN) rrrrrrrrrrrrrJrrrrRs(H' /' V%K1rrr)$ __future__rrrjrrrcollections.abcrr functoolsrrpathlibrmore_itertoolsr _pathr r distr warningsrdistutils.command.build_pycommandrr$rrdistutils.utilrrirrrrJrrr,sh" .*%3))',>\ t}}\ ~#*>1>1r