o
    ni4                     @   sZ  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 d dlmZ d dl	m
Z
mZmZmZ d dlZd dlmZ d dlmZmZmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dl m!Z! d dl"m#Z# d dl$m%Z% d dl&m'Z' d dl(m)Z)m*Z* ddl+m,Z, dZ-e.e/Z0e01ej2 e3drd dl4m5Z5 e06e5ddd ne7 Z8e81ej2 e9dZ:e8;e: e06e8 eedddeddZ<G dd de%Z=eddG d d! d!Z>eG d"d# d#Z?	d1d$e@d%eee@e
f  d&e'fd'd(ZAdddddd)d*e,d+eee  d,eee  d-ee> d.eee@e
f  d%eee@e
f  d&dfd/d0ZBdS )2    N)	dataclass)Path)AnyDictIterableOptional)	ParseDict)retrystop_after_attemptwait_random_exponential)Artifact)wandb_internal_pb2)wandb_settings_pb2)wandb_telemetry_pb2)file_policy_to_enum)InterfaceQueue)context)SendManager)SettingsStatic)coalescerecursive_cast_dictlike_to_dict   )ImporterRunz./wandb-importer"WANDB_IMPORTER_ENABLE_RICH_LOGGING)RichHandlerT)rich_tracebackstracebacks_show_localsz)%(asctime)s - %(levelname)s - %(message)s
   )
multipliermax   )waitstopc                       s   e Zd Z fddZ  ZS )AlternateSendManagerc                    s"   t  j|i | t| j| _d S N)super__init__	exp_retry_send_artifact)selfargskwargs	__class__ e/home/ubuntu/SoloSpeech/.venv/lib/python3.10/site-packages/wandb/apis/importers/internals/internal.pyr&   5   s   zAlternateSendManager.__init__)__name__
__module____qualname__r&   __classcell__r.   r.   r,   r/   r#   4   s    r#   )frozenc                   @   s~   e Zd ZU dZdZeed< dZeed< dZeed< dZ	eed< dZ
eed< dZeed< dZeed	< dZeed
< dZeed< dS )SendManagerConfigz4Configure which parts of SendManager tooling to use.Fuse_artifactslog_artifactsmetadatafilesmediacodehistorysummaryterminal_outputN)r0   r1   r2   __doc__r6   bool__annotations__r7   r8   r9   r:   r;   r<   r=   r>   r.   r.   r.   r/   r5   :   s   
 r5   c                
   @   s  e Zd ZU eed< e Zeed< edefddZ			d#de
ee  de
ee  deej fd	d
Zdedeej fddZdejfddZdejfddZdejfddZdeej fddZdededededejf
ddZ	d$dedejfddZdejfdd Zdefd!d"ZdS )%RecordMakerrun	interfacereturnc                 C   s<   t t d| j  d}|jddd t d| j  S )N/z/wandbT)parentsexist_ok)r   ROOT_DIRrC   run_idmkdir)r)   pr.   r.   r/   run_dirN   s   zRecordMaker.run_dirN	artifactsused_artifactsc                 c   sL    |   V  |r|D ]
}| j|ddV  q
|r"|D ]
}| |V  qdS dS )zsOnly make records required to upload artifacts.

        Escape hatch for adding extra artifacts to a run.
        Tuse_artifactN)_make_run_record_make_artifact_record)r)   rN   rO   artr.   r.   r/   make_artifacts_only_recordsT   s   
	z'RecordMaker.make_artifacts_only_recordsconfigc                 c   s    |   V  |  V  |jp|j}| ||j|j|jV  |jr6| j	  }dur6|D ]
}| j
|ddV  q+|jrM| j  }durM|D ]}| 
|V  qD|jrW|  E dH  |jr_|  V  |jrv| j  }durx|D ]}| |V  qmdS dS dS )z+Make all the records that constitute a run.NTrP   )rR   _make_telem_recordr7   r6   _make_files_recordr9   r:   r;   rC   rO   rS   rN   r<   _make_history_recordsr=   _make_summary_recordr>   logs_make_output_record)r)   rV   include_artifactsrO   artifactrN   linesliner.   r.   r/   make_recordsg   s4   


zRecordMaker.make_recordsc                 C   s0  t  }| j |_| j |_| j |_t| j |_t| j d|_|j	
t| j	 g  |j| j  | j }|d urH||_| j }|d urT||_| j }|d ur`||_| j }d|vrmi |d< | j |d d< | j |d d< | j |d d< | jj||jd | jj|dS )N _wandb	code_pathpython_versioncli_version)dataobj)rC   )pb	RunRecordrC   rJ   entityprojectr   display_namenotestagsextend
start_timeFromMillisecondshostruntime	run_grouprV   rd   re   rf   rD   _make_config_make_record)r)   rC   rs   rt   ru   rV   r.   r.   r/   rR      s8   



zRecordMaker._make_run_recordc                 C   s(   t  }t jjj|_||_| jj|dS )N)
output_raw)ri   OutputRawRecord
OutputTypeSTDOUToutput_typer`   rD   rw   )r)   r`   rx   r.   r.   r/   r\      s   zRecordMaker._make_output_recordc                 C   s>   i | j  d| j  i}t|}| j|}| jj|dS )N_runtime)r=   )rC   r=   rt   r   rD   _make_summary_from_dictrw   )r)   dr=   r.   r.   r/   rZ      s   
z RecordMaker._make_summary_recordc                 c   s    | j  D ]E}t }| D ]0\}}|j }||_t|t	r&t
|s*|dkr-tj}t|tr8|d}nt|}||_q| jj|d}|V  qd S )NNaNzutf-8)r<   )rC   metricsri   HistoryRecorditemsitemaddkey
isinstancefloatmathisnannpr   bytesdecodejsondumps
value_jsonrD   rw   )r)   r   r<   kvr   recr.   r.   r/   rY      s   


z!RecordMaker._make_history_recordsr9   r:   r;   c                 C   s   | j  }| j d}|r|d u r|  }|dfg}t }|D ]<\}}	|s,|dr,q |s4|dr4q |s<|dr<q d|v rOt|}
t|
	| j d}|j
 }||_t|	|_q | jj|dS )	Nz/files/wandb-metadata.jsonendz	artifact/zmedia/zcode/r:   /files)r9   )rC   r9   rM   _make_metadata_fileri   FilesRecord
startswithr   strrelative_tor   pathr   policyrD   rw   )r)   rN   r9   r:   r;   	run_filesmetadata_fnamefiles_recordr   r   rL   fr.   r.   r/   rX      s(   


zRecordMaker._make_files_recordFr^   c                 C   s   | j |}t| j |_t| j |_t| j |_||_||_d|_	|j
}|ddg7 }|D ]}|j| q2| j j|dS )NTlatestimported)r^   )rD   _make_artifactr   rC   rJ   rl   rk   user_createduse_after_commitfinalize_aliasesaliasesappendrw   )r)   r^   rQ   protor   aliasr.   r.   r/   rS      s   z!RecordMaker._make_artifact_recordc                 C   sX   t  }t  }d|_|j| | j }|r||_| j }|r%||_| j	j
|dS )NT)	telemetry)telem_pbTelemetryRecordFeatureimporter_mlflowfeatureCopyFromrC   rf   re   rD   rw   )r)   telemr   rf   re   r.   r.   r/   rW     s   

zRecordMaker._make_telem_recordc           	      C   sz  d}| j  d}tj|dd i }t| j ||d< t| j ||d< t| j ||d< t| j ||d< t| j	 ||d	< t| j
 ||d
< t| j ||d< | j }|d urpt||d< tt||d< | j }|d urt| j |d< | j }|d urtd| j i|d< | d}t|d}|t| W d    |S 1 sw   Y  |S )NzThis data was not capturedr   T)rH   ospythonprogramcudars   username
executablegpu_devices	gpu_count	cpu_counttotalmemoryz/wandb-metadata.jsonw)rM   r   makedirsr   rC   
os_versionre   r   cuda_versionrs   r   r   	gpus_usedr   r   len	cpus_usedmemory_usedopenwrite)	r)   missing_text	files_dirr   r   r   mem_usedfnamer   r.   r.   r/   r     s8   




zRecordMaker._make_metadata_file)NN)F)r0   r1   r2   r   rA   r   rD   propertyr   rM   r   r   r   ri   RecordrU   r5   ra   rR   r\   rZ   rY   r@   rX   rS   rW   r   r.   r.   r.   r/   rB   I   sT   
 



"%


rB   root_dirsettings_overriderE   c                 C   sd   t |i }tj| d| tj| ddd g ddd ddddd	}i ||}t }t|| t|S )
Nr9   ztxlog.wandbfalseTr      iX  <   )x_files_dirr   	sync_fileresumer   ignore_globsdisable_job_creationx_start_time_offlinex_syncx_live_policy_rate_limitx_live_policy_wait_timex_file_stream_timeout_seconds)r   r   r   joinr   Settingsr   r   )r   r   _settings_overridedefault_settingscombined_settingssettings_messager.   r.   r/   _make_settings4  s&   

r   )
extra_artsextra_used_artsrV   	overridesr   rC   r   r   rV   r   c                C   s   |d u rt  }|r| D ]\}}t| ||fdd qt| }|j}	t|	|}
t }t }t|d}t	
 }t|
||||}|sE|rL|||}n||}|D ]}td| || qS|  d S )Nc                 S   s   | S r$   r.   )r   r.   r.   r/   <lambda>a  s    zsend_run.<locals>.<lambda>)record_qz
Sending r=)r5   r   setattrrB   rM   r   queueQueuer   r   ContextKeeperr#   rU   ra   loggerdebugsendfinish)rC   r   r   rV   r   r   r   r   rmr   settingssm_record_qresult_qrD   context_keepersmrecordsrr.   r.   r/   send_runP  s,   	



r   r$   )Cr   loggingr   r   r   dataclassesr   pathlibr   typingr   r   r   r   numpyr   google.protobuf.json_formatr   tenacityr	   r
   r   wandbr   wandb.protor   ri   r   r   r   wandb.sdk.interface.interfacer   #wandb.sdk.interface.interface_queuer   wandb.sdk.internalr   wandb.sdk.internal.senderr   "wandb.sdk.internal.settings_staticr   
wandb.utilr   r   	protocolsr   rI   	getLoggerr0   r   setLevelINFOgetenvrich.loggingr   
addHandlerStreamHandlerconsole_handler	Formatter	formattersetFormatterr'   r#   r5   rB   r   r   r   r.   r.   r.   r/   <module>   s    




 l


