o
    Zhs                     @   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   K/var/www/auris/lib/python3.10/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 rtd| d|| d v r'| d | S tdt |d D ]}|d | }|| d	 v r?q0|} |d u r_d
d }d}	 |d || }|| d	 v r\qL|}	 || d |< || d	 |< |S )Nr    c                 s   s    | ]}|  V  qd S r   )isdigit).0charr   r   r   	<genexpr>#   s    z5TrialShortNamer.shortname_for_word.<locals>.<genexpr>z(Parameters should not contain numbers: 'z' contains a number
short_word   reverse_short_wordc                 S   s8   d}| dkrt td| d  | }| d } | dks|S )Nr   r   A
   )chrord)integersr   r   r   int_to_alphabetic1   s   z=TrialShortNamer.shortname_for_word.<locals>.int_to_alphabeticT#)lenany	Exceptionrange)infowordr   
prefix_lenr	   r   iZswordr   r   r   shortname_for_word   s2   z"TrialShortNamer.shortname_for_wordc                    sh   | d} fdd|D }ddg}|D ]}||}| d vr1| d |< | d |< |  S q|S )N_c                    s   g | ]}t  |qS r   )r   r&   )r   r#   r"   r   r   
<listcomp>I   s    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   r3   )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   keysr4   )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 ]E\}}|| jvr)td| d| || j| kr1q| jd | }t|trC|rAdnd}t|t	t
frLd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    r5   
isinstanceboolintfloatappendr-   )r   paramsnamer8   vkeyseper   r   r   r2   q   s   


zTrialShortNamer.shortnamec           	      C   s   |t | jd d  }|dkrg }n|d}i }|D ])}d|v r)|d\}}ntdd|}ttdd|}| jd | }|||< q| jD ]}||vrU| j| ||< qH|S )Nr   r   r'   r9   z[0-9.]z[^0-9.]r*   )r   r   r,   resubr?   r5   r   )	r   reprvalues
parametersvalueZp_kZp_vrD   r8   r   r   r   
parse_repr   s"   


zTrialShortNamer.parse_repr)__name__
__module____qualname__r   r   r5   classmethodr   staticmethodr&   r3   r4   r   r2   rM   r   r   r   r   r      s$    

&



r   )r:   rG   r   r   r   r   r   <module>   s   