o
    xi                     @   sn   d dl Z d dlmZ d dlmZ d dlmZ G dd deZG dd deZG d	d
 d
eZ	G dd dZ
dS )    N)MutableMapping)
NamedTuple)	filenamesc                   @   s6   e Zd ZU eed< eed< eed< eed< eed< dS )	FileStatsdedupedtotaluploadedfailedartifact_fileN)__name__
__module____qualname__bool__annotations__int r   r   H/home/ubuntu/.local/lib/python3.10/site-packages/wandb/filesync/stats.pyr      s   
 r   c                   @   s&   e Zd ZU eed< eed< eed< dS )Summaryuploaded_bytestotal_bytesdeduped_bytesNr   r   r   r   r   r   r   r   r   r      s   
 r   c                   @   s.   e Zd ZU eed< eed< eed< eed< dS )FileCountsByCategoryartifactwandbmediaotherNr   r   r   r   r   r      s
   
 r   c                	   @   s   e Zd ZdddZ	ddedededdfd	d
ZdeddfddZdededdfddZ	deddfddZ
defddZdefddZdS )StatsreturnNc                 C   s   i | _ t | _d S N)_stats	threadingLock_lock)selfr   r   r   __init__   s   zStats.__init__F	save_namesizeis_artifact_filec                 C   sD   | j  td|dd|d| j|< W d    d S 1 sw   Y  d S )NFr   )r   r   r   r	   r
   )r#   r   r    )r$   r&   r'   r(   r   r   r   	init_file"   s   "zStats.init_filec                 C   sL   | j  | j| }|jd|jd| j|< W d    d S 1 sw   Y  d S )NT)r   r   )r#   r    _replacer   )r$   r&   origr   r   r   set_file_deduped.   s   
"zStats.set_file_dedupedtotal_uploadedc                 C   sD   | j  | j| j|d| j|< W d    d S 1 sw   Y  d S )Nr   r#   r    r*   )r$   r&   r-   r   r   r   update_uploaded_file6   s
   
"zStats.update_uploaded_filec                 C   sF   | j  | j| jddd| j|< W d    d S 1 sw   Y  d S )Nr   T)r   r	   r/   )r$   r&   r   r   r   update_failed_file<   s   
"zStats.update_failed_filec                 C   sl   | j  t| j }W d    n1 sw   Y  ttdd |D tdd |D tdd |D dS )Nc                 s       | ]}|j V  qd S r   r.   .0fr   r   r   	<genexpr>I       z Stats.summary.<locals>.<genexpr>c                 s   r2   r   )r   r3   r   r   r   r6   J   r7   c                 s   s    | ]	}|j r|jV  qd S r   )r   r   r3   r   r   r   r6   K   s    )r   r   r   )r#   listr    valuesr   sum)r$   statsr   r   r   summaryC   s   zStats.summaryc                 C   s   d}d}d}d}| j  t| j }W d    n1 sw   Y  |D ]$\}}|jr0|d7 }q$t|r:|d7 }q$|drD|d7 }q$|d7 }q$t||||dS )Nr      r   )r   r   r   r   )	r#   r8   r    itemsr
   r   is_wandb_file
startswithr   )r$   artifact_fileswandb_filesmedia_filesother_files
file_statsr&   r;   r   r   r   file_counts_by_categoryN   s*   





zStats.file_counts_by_category)r   N)F)r   r   r   r%   strr   r   r)   r,   r0   r1   r   r<   r   rF   r   r   r   r   r      s"    

r   )r!   collections.abcr   typingr   wandb.sdk.libr   r   r   r   r   r   r   r   r   <module>   s    