U
    9%es                     @   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   [/var/www/html/Darija-Ai-API/env/lib/python3.8/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 krN| d | S tdt |d D ](}|d | }|| d	 krq`q`|} qq`|d krd
d }d}|d || }|| d	 krqq|}qq|| 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   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 kr(| 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 k	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 k	stt| jg}| D ]\}}|| jk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   AssertionError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 ]R}d|krR|d\}}n tdd|}ttdd|}| jd | }|||< q6| jD ]}||kr| j| ||< q|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_vrE   r8   r   r   r   
parse_repr   s     


zTrialShortNamer.parse_repr)__name__
__module____qualname__r   r   r5   classmethodr   staticmethodr&   r3   r4   r   r2   rN   r   r   r   r   r      s"   

&



r   )r;   rH   r   r   r   r   r   <module>   s   