
    PiB              
       .   d dl Z d dlZd dlmZmZ d dlmZmZmZ d dl	m
Z  ede          Zddee         de j        fd	Z ed          e j        fd
e j        dededdfd            Zddedeegef         fdZe j        fd
e j        dededdfdZdS )    N)	lru_cachewraps)CallableOptionalTypeVar)distributedT)boundlevelreturnc                 (   t          j        t                    }|                                s&|                    t          j                               | <t          t           |                                           } |                    |            |S )a{  
    Get a logger with a stream handler.

    Args:
        level (Optional[str]): The logging level. See https://docs.python.org/3/library/logging.html#levels for list of levels.

    Example:
        >>> logger = get_logger("INFO")
        >>> logger.info("Hello world!")
        INFO:torchtune.utils._logging:Hello world!

    Returns:
        logging.Logger: The logger.
    )	logging	getLogger__name__hasHandlers
addHandlerStreamHandlergetattruppersetLevel)r   loggers     l/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/torchtune/utils/_logging.py
get_loggerr      sy     x((F 3'/11222//M    r   msgc                 *    t          | ||           dS )a  
    Logs a message only once. LRU cache is used to ensure a specific message is
    logged only once, similar to how :func:`~warnings.warn` works when the ``once``
    rule is set via command-line or environment variable.

    Args:
        logger (logging.Logger): The logger.
        msg (str): The warning message.
        level (int): The logging level. See https://docs.python.org/3/library/logging.html#levels for values.
            Defaults to ``logging.INFO``.
    r   r   r   N)log_rank_zeror   s      r   log_oncer   )   s     S666666r    c                 J     t          d           fd            fd}|S )z
    Decorator to mark an object as deprecated and print additional message.

    Args:
        msg (str): additional information to print after warning.

    Returns:
        Callable[[T], T]: the decorated object.
       )maxsizec                     t          j                    r&t          j                    rt          j                    nd}|dk    rd S t	          j        | j         dz   t          d           d S )Nr   z7 is deprecated and will be removed in future versions.    )category
stacklevel)distis_availableis_initializedget_rankwarningswarnr   FutureWarning)objrankr   s     r   r-   zdeprecated.<locals>.warnD   s|    "&"3"5"5V$:M:O:OVt}UV199F|TTT"		
 	
 	
 	
 	
 	
r   c                 @     t                      fd            }|S )Nc                  *                 | i |S N )argskwargsr/   r-   s     r   wrapperz.deprecated.<locals>.decorator.<locals>.wrapperQ   s%    DIII3''''r   )r   )r/   r7   r-   s   ` r   	decoratorzdeprecated.<locals>.decoratorP   s9    	s	( 	( 	( 	( 	( 
	( r   )r   )r   r8   r-   s   ` @r   
deprecatedr9   9   sV     q	
 	
 	
 	
 	
     r   c                     t          j                    r&t          j                    rt          j                    nd}|dk    rdS |                     ||d           dS )a#  
    Logs a message only on rank zero.

    Args:
        logger (logging.Logger): The logger.
        msg (str): The warning message.
        level (int): The logging level. See https://docs.python.org/3/library/logging.html#levels for values.
            Defaults to ``logging.INFO``.
    r   N   )r'   )r(   r)   r*   r+   log)r   r   r   r0   s       r   r   r   [   s\     #/11Rd6I6K6KR4=???QRDqyy
JJucaJ(((((r   r3   )r    )r   r,   	functoolsr   r   typingr   r   r   torchr   r(   typer	   strLoggerr   INFOintr   r9   r   r4   r   r   <module>rE      sp     & & & & & & & & . . . . . . . . . . % % % % % %GCt hsm w~    0 4<CL 7 7W^ 7# 7c 7T 7 7 7 7 C 1#q&!1    D BI ) )'. )s )3 )RV ) ) ) ) ) )r   