o
    -wi@                     @   s  d Z ddlZddlZddlZddlZddlZddlZddlm	Z	m
Z
mZmZmZ ddlmZ ddlmZmZ ddlmZ e	rZddlZddlm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e
Z eeeee f Z!G dd dZ"dS )z*Batching file prepare requests to our API.    N)TYPE_CHECKING
NamedTupleOptionalUnioncast)step_upload)
filesystemrunid)LogicalPath)stats)ArtifactManifest)SaveFn)internal_apic                   @   s&   e Zd ZU eed< eed< eed< dS )RequestUploadpath	save_namecopyN)__name__
__module____qualname__str__annotations__r
   bool r   r   Y/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/wandb/filesync/step_checksum.pyr         
 r   c                   @   s&   e Zd ZU ded< eed< ded< dS )RequestStoreManifestFilesr   manifestartifact_idr   save_fnN)r   r   r   r   r   r   r   r   r   r      r   r   c                   @   s0   e Zd ZU eed< eed< ejed< ded< dS )RequestCommitArtifactr   finalizebefore_commitzconcurrent.futures.Future[None]result_futureN)r   r   r   r   r   r   r   PreCommitFnr   r   r   r   r    $   s
   
 
r    c                   @   s   e Zd ZU eej ed< dS )RequestFinishcallbackN)r   r   r   r   r   OnRequestFinishFnr   r   r   r   r   r%   +   s   
 r%   c                   @   sZ   e Zd Z											
		dddZdddZdddZdefddZdddZdS )StepChecksumapiinternal_api.Apitempdirtempfile.TemporaryDirectoryrequest_queuequeue.Queue[Event]output_queuequeue.Queue[step_upload.Event]r   stats.StatsreturnNc                 C   s:   || _ || _|| _|| _|| _tj| jd| _d| j_	d S )N)targetT)
_api_tempdir_request_queue_output_queue_stats	threadingThread_thread_body_threaddaemon)selfr)   r+   r-   r/   r   r   r   r   __init__5   s   zStepChecksum.__init__c                 C   s  	 | j  }t|trf|j}|jrHtj| jj	t
  d|j }ttj| z	t|j| W n tyG   dt_t|j| Y nw | j|jtj| | jt||jd d |jd d  nWt|tr|jj D ],}|jr| jj|jtt |j!dd | jt|j|j|j"|j#dt$%|j&||j# qqnt|t'r| jt'|j"|j(|j)|j* nt|t+rnt,q| jt+|j- d S )NT-F)is_artifact_file).r6   get
isinstancer   r   r   osjoinr5   namer	   generate_idr   r   mkdir_exists_okdirnameshutilcopy2OSError_USE_CP_SENDFILEr8   	init_filegetsizer7   putr   r   r   entriesvalues
local_pathr   intsizer   digest	functoolspartialr   r    r!   r"   r#   r%   	TypeErrorr&   )r>   reqr   entryr   r   r   r;   F   s~   





>zStepChecksum._thread_bodyc                 C   s   | j   d S N)r<   startr>   r   r   r   r]      s   zStepChecksum.startc                 C   s
   | j  S r\   )r<   is_aliver^   r   r   r   r_      s   
zStepChecksum.is_alivec                 C   s   | j td  d S r\   )r6   rP   r%   r^   r   r   r   finish   s   zStepChecksum.finish)r)   r*   r+   r,   r-   r.   r/   r0   r   r1   r2   N)r2   N)	r   r   r   r?   r;   r]   r   r_   r`   r   r   r   r   r(   4   s$    


Ar(   )#__doc__concurrent.futures
concurrentrW   rD   queuerJ   r9   typingr   r   r   r   r   wandb.filesyncr   wandb.sdk.libr   r	   wandb.sdk.lib.pathsr
   tempfiler   %wandb.sdk.artifacts.artifact_manifestr   "wandb.sdk.artifacts.artifact_saverr   wandb.sdk.internalr   r   r   r    r%   Eventr(   r   r   r   r   <module>   s2    
