+
     h  c                  s    R t ^ RIHt ^ RIt^ RIt^ RIHtHt ^ RI	H
t
Ht ^ RIHt ^RIHt ^RIHt ]! RR	R
7      t]! RR	R
7      tR tR R lt]3R R lltRR R llt]P0                  ! ]]R7      tR# )z2Timestamp comparison of files and groups of files.)annotationsN)CallableIterable)LiteralTypeVar)splat)
zip_strict)DistutilsFileError	_SourcesT3str | bytes | os.PathLike[str] | os.PathLike[bytes])Zbound	_TargetsTc                s    \         P                  P                  V4      '       * ;'       g@    \         P                  P                  V 4      \         P                  P                  V4      8  # N)ospathexistsZgetmtimesourcetarget   &&D/usr/lib/python3.14/site-packages/setuptools/_distutils/_modified.py_newerr      sJ    ww~~f%%  
 277#3#3F#;;    c               s$    V ^8  d   QhRRRRRR/# )   r   r	   r   returnbool Zformat   "r   __annotate__r      s&     " "?"?" 
"r   c                s    \         P                  P                  V 4      '       g.   \        R\         P                  P	                  V 4      : R24      h\        W4      # )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.
zfile z does not exist)r   r   r   r   Zabspathr   r   r   r   newerr      sD     77>>&!! 5)@(C?!STT&!!r   c               (    V ^8  d   QhRRRRRRRR/# )	r   sourceszIterable[_SourcesT]targetszIterable[_TargetsT]r   z&Callable[[_SourcesT, _TargetsT], bool]r   z'tuple[list[_SourcesT], list[_TargetsT]]r   r   r   r   r   r   /   s0     ; ; ; ; 2; -	;r   c           	     s    \        \        V4      \        W4      4      p\        \	        \
        \        V!  4      4      ;'       g    . . 3# )a  
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()'.
)filterr   r   ZtupleZmapZlistZzip)r   r    r   Znewer_pairss   &&& r   newer_pairwiser"   /   s<     uz''CDKT3,-.::2r(:r   c               r   )	r   r   z=Iterable[str | bytes | os.PathLike[str] | os.PathLike[bytes]]r   r	   missingz#Literal['error', 'ignore', 'newer']r   r   r   r   r   r   r   r   @   s0      J? 1 
	r   c                sN  aaa V3R loSR8X  d   \         P                  P                  MRp\         P                  P                  S4      '       * ;'       gO    \        ;QJ d)    VV3R l\	        W04       4       F  '       g   K   R# 	  R# ! VV3R l\	        W04       4       4      # )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.
c                sf   < SR 8H  ;'       d%    \         P                  P                  V 4      '       * # r   )r   r   r   )r   r#   s   &r   missing_as_newerZ%newer_group.<locals>.missing_as_newerU   s&    '!@@"''..*@&@@r   ZignoreNc              3  s\   <"   T F!  pS! V4      ;'       g    \        VS4      x  K#  	  R # 5ir   )r   )Z.0r   r%   r   s   & r   Z	<genexpr>Znewer_group.<locals>.<genexpr>Y   s/      -.F 	 ::F66$::.s   ,,TF)r   r   r   Zanyr!   )r   r   r#   Zignoredr%   s   &ff @r   newer_groupr&   @   s    *A !(8 3bggnnGww~~f%%   -W.-   -W.- * r   r$   )Zerror)Z__doc__Z
__future__r    Z	functoolsZos.pathr   Zcollections.abcr   r   Ztypingr   r   Zjaraco.functoolsr   Zcompat.py39r   Zerrorsr   r   r
   r   r   r"   r&   ZpartialZnewer_pairwise_groupr   r   r   <module>r'      sp    8 "   . # " # &L	 L	
"* 5:;"> !(({K r   