o
    -wio                     @   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   \/home/ubuntu/sommelier/.venv/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   r1   '   s    

z'_compare_artifact_dirs.<locals>.comparer   )r)   r*   r   r0   r   _compare_artifact_dirs&   s   
r2   c                 C   s$   t | }|D ]	}t|s dS qdS )NFT)_collect_entries_check_entry_is_downloable)artr   entryr   r   r   _check_entries_are_downloadableA   s   r7   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   )r5   has_next_pagecursorr   attrsedger   r6   r   r   r   r3   I   s   

	r3   c                 C   sx   | 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r:dS dS )NT)allow_redirectszProblem validating entry=F   zcontent-length)r@   r   requestshead	Exceptionlogger	exceptionstatus_codeheadersr   int)r6   urlexpected_sizerespactual_sizer   r   r   r4   Y   s   
r4   )r!   loggingr$   rH   r
   	getLogger__name__rK   setLevelINFOArtifactlistr   r2   r7   r3   r4   r   r   r   r   <module>   s$    

