o
    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   p/var/www/html/construction_image-detection-poc/venv/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   i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words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   r5   )r"   r/   
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   keysr7   )r   r"   
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    r8   
isinstanceboolintfloatappendr.   )r   paramsnamer<   vkeyseper   r   r   r4   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(   r=   z[0-9.]z[^0-9.]r+   )r   r   r-   resubrC   r8   r   )	r   reprvalues
parametersvaluep_kp_vrH   r<   r   r   r   
parse_repr   s"   


zTrialShortNamer.parse_repr)__name__
__module____qualname__r   r   r8   classmethodr   staticmethodr'   r5   r7   r   r4   rS   r   r   r   r   r      s$    

&



r   )r>   rK   r   r   r   r   r   <module>   s   