o
    ۷i'                     @   sD  U d Z ddlZddlZddlZddl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 ddlmZ e ZdaejdB ed< ejej	ejejejdZejZd	adaG d
d dejZdejddfddZdefddZ de!fddZ"dejfddZ#dIddZ$dIddZ%de&e!ef fddZ'dJde!dB dejfddZ(defdd Z)d!eddfd"d#Z*dId$d%Z+dId&d'Z,dId(d)Z-dId*d+Z.dId,d-Z/dId.d/Z0d0ejddfd1d2Z1d0ejddfd3d4Z2dId5d6Z3dId7d8Z4dId9d:Z5dId;d<Z6dId=d>Z7e7ej_7G d?d@ d@Z8G dAdB dBZ9e9 Zde:fdCdDZ;dIdEdFZ<dIdGdHZ=dS )KzLogging utilities.    N)CRITICALDEBUGERRORFATALINFONOTSETWARNWARNING)auto   )is_torch_dist_rank_zero_default_handler)debuginfowarningerrorcriticalTc                   @   s   e Zd Zdd ZdS )_RankZeroFilterc                 C   s   t  p|jtjkS N)r   levelnologgingr   )selfrecord r   M/home/ubuntu/vllm_env/lib/python3.10/site-packages/diffusers/utils/logging.pyfilter7   s   z_RankZeroFilter.filterN)__name__
__module____qualname__r   r   r   r   r   r   6   s    r   loggerreturnc                 C   s4   t d u rt a tdd | jD s| t  d S d S )Nc                 s   s    | ]}t |tV  qd S r   )
isinstancer   ).0fr   r   r   	<genexpr>B   s    z+_ensure_rank_zero_filter.<locals>.<genexpr>)_rank_zero_filterr   anyfilters	addFilter)r   r   r   r   _ensure_rank_zero_filter<   s
   r)   c               	   C   sH   t dd} | r"| tv rt|  S t d|  ddt   tS )z
    If DIFFUSERS_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`
    DIFFUSERS_VERBOSITYNz#Unknown option DIFFUSERS_VERBOSITY=z, has to be one of: z, )	osgetenv
log_levelsr   	getLoggerr   joinkeys_default_log_level)env_level_strr   r   r   _get_default_logging_levelF   s   r3   c                   C   s   t dd S )N.r   )r   splitr   r   r   r   _get_library_nameV   s   r6   c                   C   s   t t S r   )r   r.   r6   r   r   r   r   _get_library_root_loggerZ   s   r7   c                  C   s   t 5 tr	 W d    d S t atjrtjjt_t } | t | 	t
  d| _t|  W d    d S 1 s:w   Y  d S )NF)_lockr   r   StreamHandlersysstderrflushr7   
addHandlersetLevelr3   	propagater)   library_root_loggerr   r   r   _configure_library_root_logger^   s   


"rB   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   )r8   r   r7   removeHandlerr>   r   r   r@   r   r   r   _reset_library_root_loggerr   s   
"rD   c                   C   s   t S r   )r-   r   r   r   r   get_log_levels_dict      rE   namec                 C   s*   | du rt  } 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 diffusers module.
    N)r6   rB   r   r.   r)   )rG   r   r   r   r   
get_logger   s   
rH   c                   C   s   t   t  S )u  
    Return the current level for the 🤗 Diffusers' root logger as an `int`.

    Returns:
        `int`:
            Logging level integers which can be one of:

            - `50`: `diffusers.logging.CRITICAL` or `diffusers.logging.FATAL`
            - `40`: `diffusers.logging.ERROR`
            - `30`: `diffusers.logging.WARNING` or `diffusers.logging.WARN`
            - `20`: `diffusers.logging.INFO`
            - `10`: `diffusers.logging.DEBUG`

    )rB   r7   getEffectiveLevelr   r   r   r   get_verbosity   s   
rJ   	verbosityc                 C   s   t   t |  dS )u  
    Set the verbosity level for the 🤗 Diffusers' root logger.

    Args:
        verbosity (`int`):
            Logging level which can be one of:

            - `diffusers.logging.CRITICAL` or `diffusers.logging.FATAL`
            - `diffusers.logging.ERROR`
            - `diffusers.logging.WARNING` or `diffusers.logging.WARN`
            - `diffusers.logging.INFO`
            - `diffusers.logging.DEBUG`
    N)rB   r7   r>   )rK   r   r   r   set_verbosity   s   rL   c                   C      t tS )z&Set the verbosity to the `INFO` level.)rL   r   r   r   r   r   set_verbosity_info      rN   c                   C   rM   )z)Set the verbosity to the `WARNING` level.)rL   r	   r   r   r   r   set_verbosity_warning   rO   rP   c                   C   rM   )z'Set the verbosity to the `DEBUG` level.)rL   r   r   r   r   r   set_verbosity_debug   rO   rQ   c                   C   rM   )z'Set the verbosity to the `ERROR` level.)rL   r   r   r   r   r   set_verbosity_error   rO   rR   c                   C   "   t   tdus	J t t dS )u?   Disable the default handler of the 🤗 Diffusers' root logger.N)rB   r   r7   rC   r   r   r   r   disable_default_handler      rT   c                   C   rS   )u>   Enable the default handler of the 🤗 Diffusers' root logger.N)rB   r   r7   r=   r   r   r   r   enable_default_handler   rU   rV   handlerc                 C   s"   t   | dus	J t |  dS )z9adds a handler to the HuggingFace Diffusers' root logger.N)rB   r7   r=   rW   r   r   r   add_handler   rU   rY   c                 C   s.   t   | dur| t jv sJ t |  dS )zBremoves given handler from the HuggingFace Diffusers' root logger.N)rB   r7   handlersrC   rX   r   r   r   remove_handler   s   r[   c                   C      t   dt _dS )zk
    Disable propagation of the library log outputs. Note that log propagation is disabled by default.
    FNrB   r7   r?   r   r   r   r   disable_propagation   s   r^   c                   C   r\   )z
    Enable propagation of the library log outputs. Please disable the HuggingFace Diffusers' default handler to prevent
    double logging if the root logger has been configured.
    TNr]   r   r   r   r   enable_propagation   s   r_   c                  C   s*   t  j} | D ]}td}|| qdS )u  
    Enable explicit formatting for every 🤗 Diffusers' 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)r7   rZ   r   	FormattersetFormatter)rZ   rW   	formatterr   r   r   enable_explicit_format  s
   
rc   c                  C   s    t  j} | D ]}|d qdS )u   
    Resets the formatting for 🤗 Diffusers' loggers.

    All handlers currently bound to the root logger are affected by this method.
    N)r7   rZ   ra   )rZ   rW   r   r   r   reset_format  s   rd   c                 O   s(   t dd}|r
dS | j|i | dS )z
    This method is identical to `logger.warning()`, but if env var DIFFUSERS_NO_ADVISORY_WARNINGS=1 is set, this
    warning will not be printed
    DIFFUSERS_NO_ADVISORY_WARNINGSFN)r+   r,   r   )r   argskwargsno_advisory_warningsr   r   r   warning_advice   s   ri   c                   @   s8   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d ZdS )	EmptyTqdmz%Dummy tqdm which doesn't do anything.c                 O   s   |r	|d | _ d S d | _ d S )Nr   )	_iteratorr   rf   rg   r   r   r   __init__1  s   zEmptyTqdm.__init__c                 C   s
   t | jS r   )iterrk   r   r   r   r   __iter__4  s   
zEmptyTqdm.__iter__c                 C   s   dd }|S )zReturn empty function.c                  _      d S r   r   )rf   rg   r   r   r   empty_fn:  rF   z'EmptyTqdm.__getattr__.<locals>.empty_fnr   )r   _rr   r   r   r   __getattr__7  s   zEmptyTqdm.__getattr__c                 C   s   | S r   r   ro   r   r   r   	__enter__?  rF   zEmptyTqdm.__enter__c                 C   rq   r   r   )r   type_value	tracebackr   r   r   __exit__B  rF   zEmptyTqdm.__exit__N)	r   r   r   __doc__rm   rp   rt   ru   ry   r   r   r   r   rj   .  s    rj   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )	_tqdm_clsc                 O   s"   t r
tj|i |S t|i |S r   )_tqdm_activetqdm_libtqdmrj   rl   r   r   r   __call__G  s   z_tqdm_cls.__call__c                 O   s    d | _ trtjj|i |S d S r   )r8   r|   r}   r~   set_lockrl   r   r   r   r   M  s   z_tqdm_cls.set_lockc                 C   s   t rtj S d S r   )r|   r}   r~   get_lockro   r   r   r   r   R  s   
z_tqdm_cls.get_lockN)r   r   r   r   r   r   r   r   r   r   r{   F  s    r{   c                   C   rM   )zCReturn a boolean indicating whether tqdm progress bars are enabled.)boolr|   r   r   r   r   is_progress_bar_enabledZ     r   c                   C      da dS )zEnable tqdm progress bar.TNr|   r   r   r   r   enable_progress_bar`  r   r   c                   C   r   )zDisable tqdm progress bar.FNr   r   r   r   r   disable_progress_barf  r   r   )r    Nr   )>rz   r   r+   r:   	threadingr   r   r   r   r   r   r   r	   r~   r
   r}   distributed_utilsr   Lockr8   r   Handler__annotations__r-   r1   r|   r%   Filterr   Loggerr)   intr3   strr6   r7   rB   rD   dictrE   rH   rJ   rL   rN   rP   rQ   rR   rT   rV   rY   r[   r^   r_   rc   rd   ri   rj   r{   r   r   r   r   r   r   r   r   <module>   sd   (








			
	
	




