o
    à¥µi«  ã                   @   sH   d dl mZ d dlmZ G dd„ deƒZdeeeef defdd„Zd	S )
é    )ÚEnum)ÚUnionc                   @   s4   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdS )ÚPriorityaå  Hook priority levels.

    +--------------+------------+
    | Level        | Value      |
    +==============+============+
    | HIGHEST      | 0          |
    +--------------+------------+
    | VERY_HIGH    | 10         |
    +--------------+------------+
    | HIGH         | 30         |
    +--------------+------------+
    | ABOVE_NORMAL | 40         |
    +--------------+------------+
    | NORMAL       | 50         |
    +--------------+------------+
    | BELOW_NORMAL | 60         |
    +--------------+------------+
    | LOW          | 70         |
    +--------------+------------+
    | VERY_LOW     | 90         |
    +--------------+------------+
    | LOWEST       | 100        |
    +--------------+------------+
    r   é
   é   é(   é2   é<   éF   éZ   éd   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚHIGHESTÚ	VERY_HIGHÚHIGHÚABOVE_NORMALÚNORMALÚBELOW_NORMALÚLOWÚVERY_LOWÚLOWEST© r   r   úV/home/ubuntu/.local/lib/python3.10/site-packages/modelscope/trainers/hooks/priority.pyr      s    r   ÚpriorityÚreturnc                 C   sV   t | tƒr| dk s| dkrtdƒ‚| S t | tƒr| jS t | tƒr't|  ¡  jS tdƒ‚)zŽGet priority value.

    Args:
        priority (int or str or :obj:`Priority`): Priority.

    Returns:
        int: The priority value.
    r   r   z"priority must be between 0 and 100z2priority must be an integer or Priority enum value)Ú
isinstanceÚintÚ
ValueErrorr   ÚvalueÚstrÚupperÚ	TypeError)r   r   r   r   Úget_priority,   s   
	

r%   N)Úenumr   Útypingr   r   r   r"   r%   r   r   r   r   Ú<module>   s    %