o
    Eek	                     @   sp   d Z ddlZddlZddlmZ ddlmZ ddlm	Z	 dd Z
d	d
 ZefddZdddZejeedZdS )z2Timestamp comparison of files and groups of files.    N   )DistutilsFileError)
zip_strict)splatc                 C   s&   t j| pt j| t j|kS N)ospathexistsgetmtimesourcetarget r   `/var/www/bmteknikk.ddns.net/venv/lib/python3.10/site-packages/setuptools/_distutils/_modified.py_newer   s   r   c                 C   s*   t j| stdt j|  t| |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.
    zfile '%s' does not exist)r   r   r	   r   abspathr   r   r   r   r   newer   s   	
r   c                 C   s.   t t|t| |}tttt| pg g fS )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()'.
    )filterr   r   tuplemaplistzip)sourcestargetsr   newer_pairsr   r   r   newer_pairwise    s   	r   errorc                    s>    fdd dkrt jjnd}tfddt|| D S )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                    s    dko
t j|  S )Nr   )r   r   r	   )r   )missingr   r   missing_as_newer>   s   z%newer_group.<locals>.missing_as_newerignoreNc                 3   s"    | ]} |pt |V  qd S r   )r   ).0r   )r   r   r   r   	<genexpr>B   s
    
znewer_group.<locals>.<genexpr>)r   r   r	   anyr   )r   r   r   ignoredr   )r   r   r   r   newer_group-   s
   r$   )r   )r   )__doc__	functoolsos.pathr   errorsr   
py39compatr   
_functoolsr   r   r   r   r$   partialnewer_pairwise_groupr   r   r   r   <module>   s    
