o
    di                     @   s  U d Z ddlZddlZddlZddlZddlmZ ddlmZmZm	Z	m
Z
mZmZmZmZ ddlmZmZ er=ddlmZ e Zdaeej ed< ejejejej	ejdZejZd	d
 ZdefddZdejfddZd<ddZd<ddZdd Z d=dee dejfddZ!de"fddZ#de"ddfddZ$dd Z%d d! Z&d"d# Z'd$d% Z(d<d&d'Z)d<d(d)Z*d*ejddfd+d,Z+d*ejddfd-d.Z,d<d/d0Z-d<d1d2Z.d<d3d4Z/d<d5d6Z0edd7d8d9efd:d;Z1dS )>z Logging utilities.     N)	lru_cache)CRITICALDEBUGERRORFATALINFONOTSETWARNWARNING)TYPE_CHECKINGOptional)Logger_default_handler)debuginfowarningerrorcriticalc               	   C   sH   t dd} | r"| tv rt|  S t d|  ddt   tS )z
    If TRANSFORMERS_VERBOSITY env var is set to one of the valid choices return that as the new default level. If it is
    not - fall back to ``_default_log_level``
    TRANSFORMERS_VERBOSITYNz&Unknown option TRANSFORMERS_VERBOSITY=z, has to be one of: z, )	osgetenv
log_levelslogging	getLoggerr   joinkeys_default_log_level)env_level_str r   c/lsinfo/ai/hellotax_ai/llm_service/venv_embed/lib/python3.10/site-packages/optimum/utils/logging.py_get_default_logging_level6   s   r    returnc                   C   s   t dd S )N.r   )__name__splitr   r   r   r   _get_library_nameG   s   r%   c                   C   s   t t S N)r   r   r%   r   r   r   r   _get_library_root_loggerK   s   r'   c                  C   st   t . tr	 W d    d S t atjjt_t } | t | 	t
  d| _W d    d S 1 s3w   Y  d S )NF)_lockr   r   StreamHandlersysstderrflushr'   
addHandlersetLevelr    	propagatelibrary_root_loggerr   r   r   _configure_library_root_loggerO   s   

"r2   c                  C   s`   t $ ts	 W d    d S t } | t | tj d aW d    d S 1 s)w   Y  d S r&   )r(   r   r'   removeHandlerr.   r   r   r0   r   r   r   _reset_library_root_logger`   s   
"r4   c                   C   s   t S r&   )r   r   r   r   r   get_log_levels_dictm   s   r5   namec                 C   s   | du rt  } t  t| S )z
    Return a logger with the specified name.

    This function is not supposed to be directly accessed unless you are writing a custom transformers module.
    N)r%   r2   r   r   )r6   r   r   r   
get_loggerq   s   
r7   c                   C   s   t   t  S )u  
    Return the current level for the 🤗 Transformers's root logger as an int.

    Returns:
        :obj:`int`: The logging level.

    .. note::

        🤗 Transformers has following logging levels:

        - 50: ``transformers.logging.CRITICAL`` or ``transformers.logging.FATAL``
        - 40: ``transformers.logging.ERROR``
        - 30: ``transformers.logging.WARNING`` or ``transformers.logging.WARN``
        - 20: ``transformers.logging.INFO``
        - 10: ``transformers.logging.DEBUG``
    )r2   r'   getEffectiveLevelr   r   r   r   get_verbosity   s   
r9   	verbosityc                 C   s   t   t |  dS )u  
    Set the verbosity level for the 🤗 Transformers's root logger.

    Args:
        verbosity (:obj:`int`):
            Logging level, e.g., one of:

            - ``transformers.logging.CRITICAL`` or ``transformers.logging.FATAL``
            - ``transformers.logging.ERROR``
            - ``transformers.logging.WARNING`` or ``transformers.logging.WARN``
            - ``transformers.logging.INFO``
            - ``transformers.logging.DEBUG``
    N)r2   r'   r.   )r:   r   r   r   set_verbosity   s   r;   c                   C      t tS )z+Set the verbosity to the :obj:`INFO` level.)r;   r   r   r   r   r   set_verbosity_info      r=   c                   C   r<   )z.Set the verbosity to the :obj:`WARNING` level.)r;   r
   r   r   r   r   set_verbosity_warning   r>   r?   c                   C   r<   )z,Set the verbosity to the :obj:`DEBUG` level.)r;   r   r   r   r   r   set_verbosity_debug   r>   r@   c                   C   r<   )z,Set the verbosity to the :obj:`ERROR` level.)r;   r   r   r   r   r   set_verbosity_error   r>   rA   c                   C   "   t   tdus	J t t dS )zJDisable the default handler of the HuggingFace Transformers's root logger.N)r2   r   r'   r3   r   r   r   r   disable_default_handler      rC   c                   C   rB   )zIEnable the default handler of the HuggingFace Transformers's root logger.N)r2   r   r'   r-   r   r   r   r   enable_default_handler   rD   rE   handlerc                 C   s"   t   | dus	J t |  dS )z=adds a handler to the HuggingFace Transformers's root logger.N)r2   r'   r-   rF   r   r   r   add_handler   rD   rH   c                 C   s.   t   | dur| t jvsJ t |  dS )zFremoves given handler from the HuggingFace Transformers's root logger.N)r2   r'   handlersr3   rG   r   r   r   remove_handler   s   rJ   c                   C      t   dt _dS )zk
    Disable propagation of the library log outputs. Note that log propagation is disabled by default.
    FNr2   r'   r/   r   r   r   r   disable_propagation   s   rM   c                   C   rK   )z
    Enable propagation of the library log outputs. Please disable the HuggingFace Transformers's default handler to
    prevent double logging if the root logger has been configured.
    TNrL   r   r   r   r   enable_propagation   s   rN   c                  C   s*   t  j} | D ]}td}|| qdS )a  
    Enable explicit formatting for every HuggingFace Transformers's logger. The explicit formatter is as follows:

    ::

        [LEVELNAME|FILENAME|LINE NUMBER] TIME >> MESSAGE

    All handlers currently bound to the root logger are affected by this method.
    zB[%(levelname)s|%(filename)s:%(lineno)s] %(asctime)s >> %(message)sN)r'   rI   r   	FormattersetFormatter)rI   rF   	formatterr   r   r   enable_explicit_format   s
   

rR   c                  C   s    t  j} | D ]}|d qdS )z
    Resets the formatting for HuggingFace Transformers's loggers.

    All handlers currently bound to the root logger are affected by this method.
    N)r'   rI   rP   )rI   rF   r   r   r   reset_format  s   rS   loggerr   msgc                 C   s   |  | d S r&   )r   )rT   rU   r   r   r   	warn_once  s   rV   )r!   Nr&   )2__doc__r   r   r*   	threading	functoolsr   r   r   r   r   r   r   r	   r
   typingr   r   r   Lockr(   r   Handler__annotations__r   r   r    strr%   r'   r2   r4   r5   r7   intr9   r;   r=   r?   r@   rA   rC   rE   rH   rJ   rM   rN   rR   rS   rV   r   r   r   r   <module>   sT   (




			
	
	


