o
    h                     @  s   U d dl mZ d dlZd dlmZ d dlmZmZmZm	Z	 er%d dl
mZ G dd dZe Zded< 	 ddddZdddZdS )    )annotationsN)contextmanager)TYPE_CHECKINGAnyCallableClassVar)Iteratorc                   @  sh   e Zd ZU ejZded< i Zded< dd	d
ZdddZ	e
dddZeddddZedddZdS )Loggerr   _default_loggerzClassVar[dict[str, Logger]]
_instancesnamestrreturnNonec                 C  s   | j || _d S N)	__class__r
   _loggerselfr    r   X/var/www/html/openai_agents/venv/lib/python3.10/site-packages/griffe/_internal/logger.py__init__   s   zLogger.__init__c                 C  s   t | j|S r   )getattrr   r   r   r   r   __getattr__   s   zLogger.__getattr__Iterator[None]c              	   c  s>    | j j}| j d zdV  W | j | dS | j | w )zTemporarily disable logging.d   N)r   levelsetLevel)r   	old_levelr   r   r   disable    s   zLogger.disablegriffec                 C  s"   || j vr| || j |< | j | S r   )r   )clsr   r   r   r   _get*   s   

zLogger._getget_logger_funcr   c                 C  s(   | j  D ]	\}}|||_q|| _d S r   )r   itemsr   r
   )r!   r#   r   instancer   r   r   _patch_loggers0   s   
zLogger._patch_loggersN)r   r   r   r   )r   r   r   r   )r   r   r    r   r   r   r	   )r#   r   r   r   )__name__
__module____qualname__logging	getLoggerr
   __annotations__r   r   r   r   r   classmethodr"   r&   r   r   r   r   r	      s   
 

	r	   loggerr    r   r   r   c                 C  s
   t | S )zCreate and return a new logger instance.

    Parameters:
        name: The logger name.

    Returns:
        The logger.
    )r	   r"   )r   r   r   r   
get_logger]   s   
	r1   r#   Callable[[str], Any]r   c                 C  s   t |  dS )zPatch Griffe logger and Griffe extensions' loggers.

    Parameters:
        get_logger_func: A function accepting a name as parameter and returning a logger.
    N)r	   r&   )r#   r   r   r   patch_loggersi   s   r3   r'   r(   )r#   r2   r   r   )
__future__r   r,   
contextlibr   typingr   r   r   r   collections.abcr   r	   r"   r0   r.   r1   r3   r   r   r   r   <module>   s   	&"