o
    ni@                      @   s   d dl Z d dlZd dlZd dlmZ d dlmZmZmZm	Z	m
Z
mZ d dlZd dlmZ d dlZd dlmZ ddlmZ ddlmZmZ eejZed	ZG d
d dZG dd dZdS )    N)defaultdict)AnyDictIterableListOptionalTuple)Version)Artifact   )internal)	Namespacefor_eachimport_loggerc                   @   sP  e Zd Zdd ZdefddZdefddZdefdd	Zdeee	f fd
dZ
deeef fddZdeeeef  fddZdee fddZdee fddZdefddZdee fddZdeee  fddZdeee  fddZdeee  fddZdee fddZdee fd d!Zdee fd"d#Zdee fd$d%Zdee fd&d'Zdee fd(d)Zdee fd*d+Zdee fd,d-Z dee! fd.d/Z"dee! fd0d1Z#dee! fd2d3Z$dee! fd4d5Z%dee fd6d7Z&dee fd8d9Z'deee(eef   fd:d;Z)deee  fd<d=Z*e+d>edefd?d@Z,dAS )B	MlflowRunc                 C   s   || _ || _d S N)runmlflow_client)selfr   r    r   Y/home/ubuntu/SoloSpeech/.venv/lib/python3.10/site-packages/wandb/apis/importers/mlflow.py__init__   s   
zMlflowRun.__init__returnc                 C   
   | j jjS r   )r   inforun_idr   r   r   r   r         
zMlflowRun.run_idc                 C   r   r   r   r   user_idr   r   r   r   entity   r   zMlflowRun.entityc                 C   s   dS )Nzimported-from-mlflowr   r   r   r   r   project       zMlflowRun.projectc                 C   s2   | j jj}dd | j jj D }i |d|iS )Nc                 S   s    i | ]\}}| d s||qS )zmlflow.)
startswith).0kvr   r   r   
<dictcomp>'   s
    z$MlflowRun.config.<locals>.<dictcomp>imported_mlflow_tags)r   dataparamstagsitems)r   confr+   r   r   r   config#   s
   
zMlflowRun.configc                 C   r   r   )r   r)   metricsr   r   r   r   summary,   r   zMlflowRun.summaryc                 c   sr    t t}| jjj D ]}| j| jjj	|}|D ]}|j
||j |j< qq| D ]\}}d|i|V  q+d S )N_step)r   dictr   r)   r/   keysr   get_metric_historyr   r   valuestepkeyr,   )r   dr%   metricitemr&   r   r   r   r/   /   s   zMlflowRun.metricsc                 C      d| j jj S )NzExperiment )r   r   experiment_idr   r   r   r   	run_group9      zMlflowRun.run_groupc                 C   r;   )NzUser r   r   r   r   r   job_type=   r>   zMlflowRun.job_typec                 C   s$   t tdk r| jjjd S | jjjS )Nz1.30.0zmlflow.runName)mlflow_versionr	   r   r)   r+   r   run_namer   r   r   r   display_nameA   s   
zMlflowRun.display_namec                 C   s   | j jjdS )Nzmlflow.note.content)r   r)   r+   getr   r   r   r   notesF   s   zMlflowRun.notesc                 C      d S r   r   r   r   r   r   r+   I   r"   zMlflowRun.tagsc                 C   sb   t tdk r| jj| jjjdd}n
tjj| jjjd}| 	| 
 }t|d}|| |gS )Nz2.0.0 )r   path)r   zimported-artifacts)r@   r	   r   download_artifactsr   r   r   mlflow	artifacts_handle_incompatible_stringsrB   wandbr
   add_dir)r   dir_pathartifact_nameartr   r   r   rJ   O   s   
zMlflowRun.artifactsc                 C   rE   r   r   r   r   r   r   used_artifacts`   r"   zMlflowRun.used_artifactsc                 C   rE   r   r   r   r   r   r   
os_versionc       zMlflowRun.os_versionc                 C   rE   r   r   r   r   r   r   python_versione   rS   zMlflowRun.python_versionc                 C   rE   r   r   r   r   r   r   cuda_versiong   rS   zMlflowRun.cuda_versionc                 C   rE   r   r   r   r   r   r   programi   rS   zMlflowRun.programc                 C   rE   r   r   r   r   r   r   hostk   rS   zMlflowRun.hostc                 C   rE   r   r   r   r   r   r   usernamem   rS   zMlflowRun.usernamec                 C   rE   r   r   r   r   r   r   
executableo   rS   zMlflowRun.executablec                 C   rE   r   r   r   r   r   r   	gpus_usedq   rS   zMlflowRun.gpus_usedc                 C   rE   r   r   r   r   r   r   	cpus_useds   r"   zMlflowRun.cpus_usedc                 C   rE   r   r   r   r   r   r   memory_usedv   rS   zMlflowRun.memory_usedc                 C   s0   | j jjd ur| j jjd n|  }||   S Ni  )r   r   end_time
start_time)r   r^   r   r   r   runtimex   s
   zMlflowRun.runtimec                 C   s   | j jjd S r]   )r   r   r_   r   r   r   r   r_         zMlflowRun.start_timec                 C   rE   r   r   r   r   r   r   	code_path   rS   zMlflowRun.code_pathc                 C   rE   r   r   r   r   r   r   cli_version   rS   zMlflowRun.cli_versionc                 C   rE   r   r   r   r   r   r   files   rS   zMlflowRun.filesc                 C   rE   r   r   r   r   r   r   logs   rS   zMlflowRun.logssc                 C   s   d}d}t ||| S )Nz[^a-zA-Z0-9_\-\.]__)resub)rf   valid_charsreplacementr   r   r   rK      s   z&MlflowRun._handle_incompatible_stringsN)-__name__
__module____qualname__r   strr   r    r!   r   r   r.   floatr0   r   r/   r   r=   r?   rB   rD   r   r+   r
   rJ   rQ   rR   rT   rU   rV   rW   rX   rY   rZ   intr[   r\   r`   r_   rb   rc   r   rd   re   staticmethodrK   r   r   r   r   r      sB    	
r   c                   @   s   e Zd Z	ddddedededee deeeef  ddfd	d
Zdd Zdddee	 de
e fddZdddddededee deej ddf
ddZdddddde
e dedee dedee	 ddfddZdS ) MlflowImporterN)custom_api_kwargsdst_base_urldst_api_keymlflow_tracking_urimlflow_registry_urirt   r   c                C   sj   || _ || _|d u rddi}tjd|d|id|| _|| _t| j |r,t| tj	
|| _d S )NtimeoutiX  base_url)api_key	overridesr   )ru   rv   rL   Apidst_apirw   rI   set_tracking_uriset_registry_uritrackingMlflowClientr   )r   ru   rv   rw   rx   rt   r   r   r   r      s   	
zMlflowImporter.__init__c                 C   s   d| j  dS )Nz<MlflowImporter src=>)rw   r   r   r   r   __repr__   ra   zMlflowImporter.__repr__)limitr   c                #   sN    t tdk rj  nj   fdd}t| |}|E d H  d S )Nz1.28.0c                  3   s2     D ]} j | jD ]	}t|j V  qqd S r   )r   search_runsr<   r   )expr   experimentsr   r   r   _runs   s   z*MlflowImporter.collect_runs.<locals>._runs)r@   r	   r   list_experimentssearch_experiments	itertoolsislice)r   r   r   runsr   r   r   collect_runs   s   
zMlflowImporter.collect_runsT)rJ   	namespacer.   r   rJ   r   r.   c             	   C   s   |d u rt | | }|d u rtjdddddddd}| j| jddd}t| j	 tj
||j||d |rWt| }td| tj
|||j|tjddd d S d S )	NT)metadatard   mediacodehistoryr0   terminal_outputtrue)r{   rz   resumeresumed)r|   settings_overrider.   z!Importing history artifacts, run=)log_artifacts)
extra_artsr|   r   r.   )r   r    r!   r   SendManagerConfigrv   ru   rI   r   rw   send_runsend_manager_overrideslistrJ   loggerdebug)r   r   rJ   r   r.   r   artsr   r   r   _import_run   sF   

zMlflowImporter._import_run)rJ   r   parallelmax_workersr   r   r   c                   s$    fdd}t ||||d d S )Nc                    s   j |  d d S )N)r   rJ   )r   )r   rJ   r   r   r   r   _import_run_wrapped   s   z7MlflowImporter.import_runs.<locals>._import_run_wrapped)r   r   )r   )r   r   rJ   r   r   r   r   r   r   r   import_runs   s   	zMlflowImporter.import_runsr   )rl   rm   rn   ro   r   r   r   r   r   rq   r   r   r   boolr   r   r   r   r   r   r   r   r   rs      sd    
 
5rs   )r   loggingrh   collectionsr   typingr   r   r   r   r   r   rI   packaging.versionr	   rL   r
   	internalsr   internals.utilr   r   __version__r@   	getLoggerr   r   rs   r   r   r   r   <module>   s     

~