o
    wi                     @   s   d dl Z d dlZd dlZd dlZd dlZeeZeej	 dej
dej
defddZdefddZd	d
 Zdd Zdd ZdS )    Nsrc_artdst_artreturnc                 C   s   g }t |tjrdgS | j|jkr|d| jd|j | jj D ]>\}}|jj|}|d u r?|d|d| q$dD ] }t	||t	||kra|d|dt	||d	t	|| qAq$|S )
N	commErrorzdigest mismatch src_art.digest=z, dst_art.digest=zmissing manifest entry name=z, src_entry=)pathdigestsizezmanifest entry mismatch attr=z, getattr(src_entry, attr)=z, getattr(dst_entry, attr)=)

isinstancewandb	CommErrorr   appendmanifestentriesitemsgetgetattr)r   r   problemsname	src_entry	dst_entryattr r   S/home/ubuntu/.local/lib/python3.10/site-packages/wandb/apis/importers/validation.py_compare_artifact_manifests   s$    r   c                    s    fdd  | |S )Nc                    s   t | |}|j|j|ji d}|jD ]#}tj| |}tj||} ||}|r6t	|
 r6||d |< qtdd |
 D rDd S |S )N)	left_only
right_only
diff_filessubdir_differencesr   c                 s   s    | ]}| V  qd S Nr   ).0diffr   r   r   	<genexpr>9   s    z:_compare_artifact_dirs.<locals>.compare.<locals>.<genexpr>)filecmpdircmpr   r   r   subdirsosr   joinanyvaluesall)src_dirdst_dir
comparisondifferencessubdir
subdir_src
subdir_dstr   comparer   r   r2   '   s    

z'_compare_artifact_dirs.<locals>.comparer   )r*   r+   r   r1   r   _compare_artifact_dirs&   s   
r3   c                 C   s   t | }tdd |D S )Nc                 s   s    | ]}t |V  qd S r   )_check_entry_is_downloable)r   entryr   r   r   r!   C   s    z2_check_entries_are_downloadable.<locals>.<genexpr>)_collect_entriesr)   )artr   r   r   r   _check_entries_are_downloadableA   s   r8   c                 C   sv   d}d }g }|r9|  |}|d d }|d d }|d D ]}|d d }| |}|d d |_|| q|s|S )	NTpageInfohasNextPage	endCursoredgesnoder   	directUrl)_fetch_file_urls	get_entry_download_urlr   )r7   has_next_pagecursorr   attrsedger   r5   r   r   r   r6   F   s   

	r6   c                 C   sp   | j }| j}z	tj|dd}W n ty!   td|  Y dS w |jdkr)dS |j	dd}t
|}||kS )NT)allow_redirectszProblem validating entry=F   zcontent-length)rA   r   requestshead	Exceptionlogger	exceptionstatus_codeheadersr   int)r5   urlexpected_sizerespactual_sizer   r   r   r4   V   s   
r4   )r"   loggingr%   rI   r
   	getLogger__name__rL   setLevelINFOArtifactlistr   r3   r8   r6   r4   r   r   r   r   <module>   s$    

