o
    niq$                     @  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m	Z	m
Z
mZ ddlZddlZddlmZ ddlmZ ddlmZmZmZ ddlmZ e	rvdd	lm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Z#dS )zArtifact saver.    )annotationsN)TYPE_CHECKING	AwaitableSequence)util)ArtifactManifest)B64MD5b64_to_hex_idmd5_file_b64)URIStr)Protocol)ArtifactManifestEntry)
FilePusher)Api)
ProgressFnc                   @     e Zd Zd
ddZd	S )SaveFnentryr   progress_callbackr   returnboolc                 C     d S N selfr   r   r   r   `/home/ubuntu/SoloSpeech/.venv/lib/python3.10/site-packages/wandb/sdk/artifacts/artifact_saver.py__call__      zSaveFn.__call__N)r   r   r   r   r   r   __name__
__module____qualname__r   r   r   r   r   r          r   c                   @  r   )SaveFnAsyncr   r   r   r   r   Awaitable[bool]c                 C  r   r   r   r   r   r   r   r   !   r   zSaveFnAsync.__call__N)r   r   r   r   r   r%   r   r   r   r   r   r$       r#   r$   c                   @  sr   e Zd ZU ded< 	d,d-ddZ											d.d/d&d'Z											d.d/d(d)Zd0d*d+ZdS )1ArtifactSaverdict | None_server_artifactFapiInternalApidigeststrmanifest_jsondictfile_pusherr   is_user_createdr   r   Nonec                 C  s4   || _ || _|| _tj|| j d| _|| _d | _d S )N)r)   )_api_file_pusher_digestr   from_manifest_json	_manifest_is_user_createdr(   )r   r)   r+   r-   r/   r0   r   r   r   __init__*   s   
zArtifactSaver.__init__NTtypename	client_idsequence_client_iddistributed_id
str | Nonefinalizemetadatattl_duration_seconds
int | NonedescriptionaliasesSequence[str] | Nonetagsuse_after_commitincrementalhistory_stepbase_idc                 C  s&   |  |||||||||	|
|||||S r   )_save_internal)r   r9   r:   r;   r<   r=   r?   r@   rA   rC   rD   rF   rG   rH   rI   rJ   r   r   r   save<   s"   zArtifactSaver.savec                   s  g }|
pg D ]
}| ||d qdd |pg D }	 jj||j|||||	j|||d\_}jd us:J jd  d u rI|rI|d jd dkr[|rXj  jS jd dkrsjd d	krstd
jd d}dr~d}dnrd}djj	d d|d\}t
jjjddd  jj  fdd d fdd}tj }jj |||d z
|  W   n  w |r|rj  jS )N)artifactCollectionNamealiasc                 S  s   g | ]}d |iqS )tagNamer   ).0tagr   r   r   
<listcomp>v   s    z0ArtifactSaver._save_internal.<locals>.<listcomp>)
r@   rA   rD   rF   rC   r0   r=   r;   r<   rI   idstate	COMMITTEDPENDINGDELETEDzUnknown artifact state "{}"FULLzwandb_manifest.jsonINCREMENTALzwandb_manifest.incremental.jsonPATCHzwandb_manifest.patch.json F)base_artifact_idinclude_uploadr9   g?g{Gz?i  c                   s   j jj | |dS )N)r   )r6   storage_policy
store_file)r   r   )artifact_idartifact_manifest_idr   step_preparer   r   <lambda>   s    z.ArtifactSaver._save_internal.<locals>.<lambda>r   r1   c                    s     tjdddd} tj| j}tjj	
 | dd W d    n1 s)w   Y  t|}s6rAjj|d\}}njj| d\}}|d	 }|d
 }i }|D ]}|dd\}	}
|
||	< qYt|d}jj|||d W d    d S 1 sw   Y  d S )Nzw+z.jsonF)suffixdelete   )indent)r+   )r\   	uploadUrluploadHeaders:   rb)extra_headers)&_resolve_client_id_manifest_referencestempfileNamedTemporaryFileospathabspathr:   jsondumpr6   to_manifest_jsonr
   r2   update_artifact_manifestcreate_artifact_manifestsplitopenupload_file_retry)fprr   r+   _resp
upload_urlupload_headersrm   upload_headerkeyvalfp2)r`   ra   rJ   r=   rH   manifest_filenamer   r   r   before_commit   s<   


"z3ArtifactSaver._save_internal.<locals>.before_commit)r?   r   result_futurer   r1   )appendr2   create_artifactr4   r7   r(   use_artifact	Exceptionformatrx   wandbfilesyncrb   StepPreparestartr3   store_manifest_filesr6   
concurrentfuturesFuturecommit_artifactresultshutdown)r   r9   r:   r;   r<   r=   r?   r@   rA   rC   rD   rF   rG   rH   rI   rJ   alias_specsrN   	tag_specslatestmanifest_typer}   r   commit_resultr   )r`   ra   rJ   r=   rH   r   r   rb   r   rK   `   s   

	

(	
zArtifactSaver._save_internalc                 C  s   | j jD ]=}| j j| }|jd urA|jdrAt|j}t|j}| j|}|d u r4t	d| t
dtt|||_qd S )Nzwandb-client-artifact:zCould not resolve client id zwandb-artifact://{}/{})r6   entriesref
startswithr   host_from_pathuri_from_pathr2   _resolve_client_idRuntimeErrorr   r   r	   r   )r   
entry_pathr   r;   artifact_file_pathr`   r   r   r   rn      s    
z4ArtifactSaver._resolve_client_id_manifest_references)F)r)   r*   r+   r,   r-   r.   r/   r   r0   r   r   r1   )NTNNNNNFFNN) r9   r,   r:   r,   r;   r,   r<   r,   r=   r>   r?   r   r@   r'   rA   rB   rC   r>   rD   rE   rF   rE   rG   r   rH   r   rI   rB   rJ   r>   r   r'   r   )r    r!   r"   __annotations__r8   rL   rK   rn   r   r   r   r   r&   '   s<   
 * r&   )$__doc__
__future__r   concurrent.futuresr   rt   rq   ro   typingr   r   r   r   wandb.filesync.step_preparer   %wandb.sdk.artifacts.artifact_manifestr   wandb.sdk.lib.hashutilr   r	   r
   wandb.sdk.lib.pathsr   r   +wandb.sdk.artifacts.artifact_manifest_entryr   wandb.sdk.internal.file_pusherr   wandb.sdk.internal.internal_apir   r*   wandb.sdk.internal.progressr   r   r$   r&   r   r   r   r   <module>   s,    