4H>dZddlmZddlZddlZddlmZmZddl m Z m Z ddl m Z ddlmZdd lmZe d d Ze d d ZdZd"dZefd#dZ d$d%d Zejee!ZdS)&z2Timestamp comparison of files and groups of files.) annotationsN)CallableIterable)LiteralTypeVar)splat) zip_strict)DistutilsFileError _SourcesT3str | bytes | os.PathLike[str] | os.PathLike[bytes])bound _TargetsTctj| p?tj|tj|kSN)ospathexistsgetmtimesourcetargets q/builddir/build/BUILD/cloudlinux-venv-1.0.10/venv/lib/python3.11/site-packages/setuptools/_distutils/_modified.py_newerrsHw~~f%% %    27#3#3F#;#;;rrreturnboolctj|s0tdtj|dt ||S)z Is source modified more recently than target. Returns True if 'source' is modified more recently than 'target' or if 'target' does not exist. Raises DistutilsFileError if 'source' does not exist. zfile z does not exist)rrrr abspathrrs rnewerr sS 7>>& ! !U !S)@)@!S!S!STTT && ! !!rsourcesIterable[_SourcesT]targetsIterable[_TargetsT]r &Callable[[_SourcesT, _TargetsT], bool]'tuple[list[_SourcesT], list[_TargetsT]]ctt|t||}tt t t |pggfS)a1 Filter filenames where sources are newer than targets. Walk two filename iterables in parallel, testing if each source is newer than its corresponding target. Returns a pair of lists (sources, targets) where source is newer than target, according to the semantics of 'newer()'. )filterrr tuplemaplistzip)r!r#r newer_pairss rnewer_pairwiser./sIuz'7'C'CDDK T3 ,-- . . :2r(:rerror=Iterable[str | bytes | os.PathLike[str] | os.PathLike[bytes]]missing#Literal['error', 'ignore', 'newer']cfddkrtjjnd}tj p)tfdt ||DS)a Is target out-of-date with respect to any file in sources. Return True if 'target' is out-of-date with respect to any file listed in 'sources'. In other words, if 'target' exists and is newer than every file in 'sources', return False; otherwise return True. ``missing`` controls how to handle a missing source file: - error (default): allow the ``stat()`` call to fail. - ignore: silently disregard any missing source files. - newer: treat missing source files as "target out of date". This mode is handy in "dry-run" mode: it will pretend to carry out commands that wouldn't work because inputs are missing, but that doesn't matter because dry-run won't run the commands. cPdkotj| S)Nr )rrr)rr1s rmissing_as_newerz%newer_group..missing_as_newerUs$'!@"'..*@*@&@@rignoreNc3NK|]}|pt|V dSr)r).0rr5rs r znewer_group..YsQ--    :F66$:$:------r)rrranyr()r!rr1ignoredr5s `` @r newer_groupr<@s*AAAAA!(8 3 3bgnnGw~~f%% % -----Wg..---**r)r )rr rr rr)r!r"r#r$r r%rr&)r/)r!r0rr r1r2rr)__doc__ __future__r functoolsos.pathrcollections.abcrrtypingrrjaraco.functoolsr compat.py39r errorsr r rrr r.r<partialnewer_pairwise_grouprrrIsQ88""""""........########""""""######&&&&&& GL     GL     """"*5:;;;;;(4;>)y({KKKr