o
    ॵiu                     @   s4   d dl Z d dlZdd ZG dd deZdd ZdS )    Nc                 C   s*   |   dv rdS |   dv rdS td)N)yestruety1T)nofalsefn0FzUnsupported value encountered.)lowerargparseArgumentTypeError)v r   S/home/ubuntu/.local/lib/python3.10/site-packages/modelscope/utils/nlp/space/args.pystr2bool   s
   
r   c                   @   s0   e Zd ZdZdd Zdd Zdd Zdd	 Zd
S )HParamsz[ Hyper-parameters class

    Store hyper-parameters in training / infer / ... scripts.
    c                 C   sP   ||   v r
| | S |  D ]}t|tr||v r||   S qtd| d)Nz#'HParams' object has no attribute '')keysvalues
isinstancer   AttributeError)selfnamer   r   r   r   __getattr__   s   
zHParams.__getattr__c                 C   s   || |< d S )Nr   )r   r   valuer   r   r   __setattr__    s   zHParams.__setattr__c                 C   sH   t |ddd}tj| |dddd W d    d S 1 sw   Y  d S )Nwutf-8encodingF   )ensure_asciiindent	sort_keys)openjsondump)r   filenamefpr   r   r   save#   s   "zHParams.savec                 C   st   t |ddd}t|}W d    n1 sw   Y  | D ]\}}t|tr3| | t| q || |< q d S )Nrr   r    )r&   r'   loaditemsr   dictupdater   )r   r)   r*   params_dictkr   r   r   r   r-   '   s   

zHParams.loadN)__name__
__module____qualname____doc__r   r   r+   r-   r   r   r   r   r      s    	r   c                 C   s   |   }t }| jd }|jdd D ]}|j}t||||< q| jdd D ] }t }|jD ]}|j}t||||< q/t|dkrG|||j< q'|S )z& Parse hyper-parameters from cmdline.    N   r   )
parse_argsr   _action_groups_group_actionsdestgetattrlentitle)parserparsedargsoptional_argsactionarg_namegroup
group_argsr   r   r   r9   1   s   


r9   )r   r'   r   r/   r   r9   r   r   r   r   <module>   s
   	 