o
    xiG                     @  s  d Z ddlm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 ddlmZ ddlmZmZ ddlmZ er^d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.    )annotationsN)TYPE_CHECKING
NamedTupleUnioncast)step_upload)
filesystemrunid)LogicalPath)stats)ArtifactManifest)SaveFn)internal_apic                   @  &   e Zd ZU ded< ded< ded< dS )RequestUploadstrpathr
   	save_nameboolcopyN__name__
__module____qualname____annotations__ r   r   P/home/ubuntu/.local/lib/python3.10/site-packages/wandb/filesync/step_checksum.pyr         
 r   c                   @  r   )RequestStoreManifestFilesr   manifestr   artifact_idr   save_fnNr   r   r   r   r   r       r   r   c                   @  s.   e Zd ZU ded< ded< ded< ded< d	S )
RequestCommitArtifactr   r    r   finalizezstep_upload.PreCommitFnbefore_commitzconcurrent.futures.Future[None]result_futureNr   r   r   r   r   r"   &   s
   
 r"   c                   @  s   e Zd ZU ded< dS )RequestFinishz$step_upload.OnRequestFinishFn | NonecallbackNr   r   r   r   r   r&   -   s   
 r&   c                   @  s>   e Zd ZdddZdddZdddZd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returnNonec                 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__7   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).r7   get
isinstancer   r   r   osjoinr6   namer	   generate_idr   r   mkdir_exists_okdirnameshutilcopy2OSError_USE_CP_SENDFILEr9   	init_filegetsizer8   putr   r   r   entriesvalues
local_pathr   intsizer    digest	functoolspartialr!   r"   r#   r$   r%   r&   	TypeErrorr'   )r?   reqr   entryr   r   r   r<   H   s~   





>zStepChecksum._thread_bodyc                 C  s   | j   d S N)r=   startr?   r   r   r   r^      s   zStepChecksum.startr   c                 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]   )r7   rQ   r&   r_   r   r   r   finish   s   zStepChecksum.finishN)r)   r*   r+   r,   r-   r.   r/   r0   r   r1   r2   r3   )r2   r3   )r2   r   )r   r   r   r@   r<   r^   r`   ra   r   r   r   r   r(   6   s    


A
r(   )$__doc__
__future__r   concurrent.futures
concurrentrX   rE   queuerK   r:   typingr   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>   s4    
