o
    rri                     @   s   d dl m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
 ddlmZmZ daed Zdd	 Zd
d Zdd Zdd Zdd Zdd ZdS )    )PathN   )
hydra_main)assign_cloneget_new_cloneenter_cloneto_absolute_path)get_xpXP.c                 C   s>   t  }|jddi |atdttksJ tdtfd S )Nloss皙?r   )r	   linkpush_metrics_retr   strcurrent_path)cfgxp r   I/home/ubuntu/.local/lib/python3.10/site-packages/dora/tests/test_hydra.py_main   s   $r   c                 C   s(   t t| } tdddt}| |j_|S )Nz./test_conf	test_conf)config_pathconfig_name)r   r   r   r   doradir)tmpdir	dora_mainr   r   r   get_main   s   r   c                 C   s4   t tj}z|tjdd < |   W |t_tS |t_w )N   )listsysargvr   )mainr#   old_argvr   r   r   call$   s   
r&   c                 C   sz   t t_t| }dg}||}|| d|j_t|}t	|| t
| t|| W d    d S 1 s6w   Y  d S )Nzoptim.loss=git_saveT)__name__r   
__module__r   r	   init_xpr   git_saver   r   r   r&   )r   r$   r#   r   cloner   r   r   test_hydra_git_save.   s   



"r,   c           	      C   s  t t_t| }t|g }t|tsJ t|jdksJ |	 j
dks%J dg}t||}|j|jks5J |jjdks=J |ddi}t|dksLJ t||}|j|jksYJ |jjjdksbJ ddg}||}||ksqJ t||}|j|jks~J |||jksJ ||j}|j|jksJ |j|jksJ |j|jksJ |j|jksJ ||}|d	 d
 dksJ ||}|dksJ dg}t||}|jjdksJ tt |d W d    n1 sw   Y  dg}t||}|jjjdksJ t|jdrJ dg}t||}|jjjdksJ t|jdr(J ddg}tt t||}W d    d S 1 sCw   Y  d S )Nr      znum_workers=40(   z	useless.a   zuseless.b=falsezoptim.loss=l1r   r   zopt.loss=l1z+k=youpiyoupig      ?zplop.b=5lapinzgroup=lapinplop) r'   r   r(   r   r&   
isinstancer
   lensigget_slurm_configcpus_per_taskr   num_workersvalue_to_argvuselessaget_argv_from_sigget_xp_from_sigr#   deltar   get_xp_historyget_namekpytestraises
ValueErrorr3   bhasattrr2   	Exception)	r   r$   r   r#   xp2prexp3metricsnamer   r   r   
test_hydra<   s`   









$rN   c                 C   s   t t_t| }t|g }t|jj |jjjg dksJ t|dg}|jjjdgks-J t|dg}|jjj	dddks?J t|dg}|jjj	d	ddksQJ |
d
d	ddi}t||}|jjj	d	ddkslJ d S )N)r    r   r/   zcomplex.a=[0]r   zcomplex.b.a=502   r   )r<   rF   zcomplex.b={a:21}   z	complex.b4   )r'   r   r(   r   r&   printr   complexr<   rF   r:   )r   r$   r   r#   r   r   r   test_complex_typesz   s   

rT   )pathlibr   r"   rC   hydrar   r*   r   r   r   r   r   r	   r
   r   resolver   r   r   r&   r,   rN   rT   r   r   r   r   <module>   s   
>