a
    hs                     @   s"   d dl Z d dlZG dd dZdS )    Nc                   @   sl   e Zd ZdZi ZdZedd Zedd Z	edd Z
ed	d
 Zedd Zedd Zedd ZdS )TrialShortNamerhpNc                 C   s   || _ || _|   d S N)PREFIXDEFAULTSbuild_naming_info)clsprefixdefaults r   X/var/www/html/assistant/venv/lib/python3.9/site-packages/transformers/utils/hp_naming.pyset_defaults   s    zTrialShortNamer.set_defaultsc                 C   s   t |dkrdS d }tdd |D r6td| d|| d v rN| d | S tdt |d D ](}|d | }|| d	 v rq`q`|} qq`|d u rd
d }d}|d || }|| d	 v rqq|}qq|| d |< || d	 |< |S )Nr    c                 s   s   | ]}|  V  qd S r   )isdigit).0charr   r   r   	<genexpr>#       z5TrialShortNamer.shortname_for_word.<locals>.<genexpr>z(Parameters should not contain numbers: 'z' contains a number
short_word   reverse_short_wordc                 S   s2   d}| dkr.t td| d  | }| d } q|S )Nr   r   A
   )chrord)integersr   r   r   int_to_alphabetic1   s
    
z=TrialShortNamer.shortname_for_word.<locals>.int_to_alphabetic#)lenany	Exceptionrange)infowordr   
prefix_lenr	   r   iZswordr   r   r   shortname_for_word   s0    z"TrialShortNamer.shortname_for_wordc                    sh   | d} fdd|D }ddg}|D ]:}||}| d vr(| d |< | d |< |  S q(|S )N_c                    s   g | ]}t  |qS r   )r   r'   )r   r$   r#   r   r   
<listcomp>I   r   z5TrialShortNamer.shortname_for_key.<locals>.<listcomp>r   reverse_short_paramshort_param)splitjoin)r#   
param_namewordsZshortname_parts
separators	separator	shortnamer   r)   r   shortname_for_keyE   s    


z!TrialShortNamer.shortname_for_keyc                 C   s(   t | |}|| d |< || d |< d S )Nr,   r+   )r   r4   )r#   r/   Z
short_namer   r   r   add_new_param_nameX   s    z"TrialShortNamer.add_new_param_namec                 C   sJ   | j d urd S i i i i d}t| j }|D ]}| || q.|| _ d S )N)r   r   r,   r+   )NAMING_INFOlistr   keysr5   )r   r#   Z
field_keyskr   r   r   r   ^   s    
z!TrialShortNamer.build_naming_infoc                 C   s   |    | jd usJ t| jg}| D ]\}}|| jvrRtd| d| || j| krbq,| jd | }t|tr|rdnd}t|t	t
frdnd}| | | }|| q,d|S )	Nz6You should provide a default value for the param name z with value r,   r   r   r   -r(   )r   r   copyitemsr   r!   r6   
isinstanceboolintfloatappendr.   )r   paramsnamer9   vkeyseper   r   r   r3   q   s    

zTrialShortNamer.shortnamec           	      C   s   |t | jd d  }|dkr$g }n
|d}i }|D ]R}d|v rR|d\}}n tdd|}ttdd|}| jd | }|||< q6| jD ]}||vr| j| ||< q|S )Nr   r   r(   r:   z[0-9.]z[^0-9.]r+   )r   r   r-   resubr@   r6   r   )	r   reprvalues
parametersvalueZp_kZp_vrE   r9   r   r   r   
parse_repr   s     


zTrialShortNamer.parse_repr)__name__
__module____qualname__r   r   r6   classmethodr   staticmethodr'   r4   r5   r   r3   rN   r   r   r   r   r      s"   

&



r   )r;   rH   r   r   r   r   r   <module>   s   