
    "<i                        U d Z ddlZddlZddlmZmZmZ ddlmZ ddl	m
Z
 ddlmZ ddlZdedej        fd	Z	 	 	 dded         ez  dej        dz  dedz  deddf
dZej        	 	 ddedz  dej        dz  dedz  defd            Zej        ej        ej        ej        ej        ddZeed         dz  edz  f         ed<    G d dej                  Z	 	 ddej        ded         dz  ded         dz  ddfdZ dej        ddfdZ!dS )zLogging utilities for FastMCP.    N)AnyLiteralcast)Console)RichHandler)overridenamereturnc                     |                      d          rt          j        |           S t          j        d|            S )zGet a logger nested under FastMCP namespace.

    Args:
        name: the name of the logger, which will be prefixed with 'FastMCP.'

    Returns:
        a configured logger instance
    zfastmcp.r	   )
startswithlogging	getLoggerr   s    /Users/kimhansen/Desktop/03 Workspace/ceo-agents/chl-effectiveness/mcp-servers/whoop/.venv/lib/python3.11/site-packages/fastmcp/utilities/logging.py
get_loggerr      sI     z"" , d++++"3T"3"34444    INFOlevelDEBUGr   WARNINGERRORCRITICALloggerenable_rich_tracebacksrich_kwargsc                    t           j        j        sdS |t           j        j        }|t	          j        d          }t	          j        d          }d|_        |                    |            t          ddt          d          i|}|                    |           |                    d            d	dl}d	dl}t          d          dd|d
t           ||gd}|                    |           t          di |}	|	                    |           |	                    d            |j        dd         D ]}
|                    |
           |                    |           |                    |	           dS )z
    Configure logging for FastMCP.

    Args:
        logger: the logger to configure
        level: the log level to use
        rich_kwargs: the parameters to use for creating RichHandler
    Nfastmcpz%(message)sFconsoleT)stderrc                     | j         d u S Nexc_inforecords    r   <lambda>z#configure_logging.<locals>.<lambda>D   s    V_%< r   r      )r   	show_path
show_levelrich_tracebackstracebacks_max_framestracebacks_suppressc                     | j         d uS r"   r#   r%   s    r   r'   z#configure_logging.<locals>.<lambda>\   s    vd/J r    )r   settingslog_enabledr   r   r   	Formatter	propagatesetLevelr   r   setFormatter	addFiltermcppydanticupdatehandlersremoveHandler
addHandler)r   r   r   r   	formatterhandlerr7   r8   traceback_kwargstraceback_handlerhdlrs              r   configure_loggingrB      s    '  %!(!1!H~"9--!-00I F
OOE   t$$$
 G ### <<=== JJJOOO $'''1!" 'h7  K(((#77&677""9--- J JKKK " # #T""""
g
'(((((r   c           	   +   
  K   | rzt           j        j        }t          t          d         |                                           }t          d|||d| 	 dV  t          d|||d| dS # t          d|||d| w xY wdV  dS )a  Context manager to temporarily set log level and restore it afterwards.

    Args:
        level: The temporary log level to set (e.g., "DEBUG", "INFO")
        logger: Optional logger to configure (defaults to FastMCP logger)
        enable_rich_tracebacks: Whether to enable rich tracebacks
        **rich_kwargs: Additional parameters for RichHandler

    Usage:
        with temporary_log_level("DEBUG"):
            # Code that runs with DEBUG logging
            pass
        # Original log level is restored here
    r   )r   r   r   Nr/   )r   r0   	log_levelr   r   upperrB   )r   r   r   r   original_levellog_level_literals         r   temporary_log_levelrH   f   s     *   )3 !CDKKMM
 
 	 	
##9	
 	
 		
 	
 	

	EEE  $'=  	     $'=  	    	s   A* *A<)r   r   r   r   r   N_level_to_noc                        e Zd ZU eeef         dz  ed<   eeef         dz  ed<   	 	 d	ded         dz  ded         dz  f fdZe	de
j        defd            Z xZS )
_ClampedLogFilterN	min_level	max_levelr   c                 ,   d | _         d | _        t                              |          x}r|t	          |          f| _         t                              |          x}r|t	          |          f| _        t                                                       d S r"   )rL   rM   rI   getstrsuper__init__)selfrL   rM   min_level_nomax_level_no	__class__s        r   rR   z_ClampedLogFilter.__init__   s     '++I666< 	<*C	NN;DN'++I666< 	<*C	NN;DNr   r&   r
   c                     | j         r%| j         \  }}|j        |k    r||_        ||_        dS | j        r%| j        \  }}|j        |k     r||_        ||_        dS dS )NT)rM   levelno	levelnamerL   )rS   r&   rU   max_level_namerT   min_level_names         r   filterz_ClampedLogFilter.filter   su    > 	+/>(L.~,,!-#1 t> 	+/>(L.~,,!-#1 ttr   NN)__name__
__module____qualname__tupleintrP   __annotations__r   rR   r   r   	LogRecordboolr\   __classcell__)rV   s   @r   rK   rK      s         S#X%%%%S#X%%%%
  JK
 JK
	     " W. 4    X    r   rK   rL   rM   c                 p    t          |            |                     t          ||                     dS )a  Clamp the logger to a minimum and maximum level.

    If min_level is provided, messages logged at a lower level than `min_level` will have their level increased to `min_level`.
    If max_level is provided, messages logged at a higher level than `max_level` will have their level decreased to `max_level`.

    Args:
        min_level: The lower bound of the clamp
        max_level: The upper bound of the clamp
    )r   )rL   rM   )r\   N)_unclamp_loggerr6   rK   )r   rL   rM   s      r   _clamp_loggerri      s@     6""""
-	YWWWXXXXXr   c                 ~    | j         dd         D ],}t          |t                    r|                     |           -dS )z/Remove all clamped log filters from the logger.N)filters
isinstancerK   removeFilter)r   r\   s     r   rh   rh      sN    .# ( (f/00 	('''( (r   )r   NNr]   )"__doc__
contextlibr   typingr   r   r   rich.consoler   rich.loggingr   typing_extensionsr   r   rP   Loggerr   rb   re   rB   contextmanagerrH   r   r   r   r   r   rI   dictrc   FilterrK   ri   rh   r/   r   r   <module>rx      s   $ $ $      % % % % % % % % % %             $ $ $ $ $ $ & & & & & & 5S 5W^ 5 5 5 5  MS$(*.F) F)BCcIF)NT!F) !4KF) 	F)
 
F) F) F) F)R  %)*.0 0:0NT!0 !4K0 	0 0 0 0l ]L] 
  d;<tCS4ZO 	 	 	& & & & & & & &V RVQUY YNYFG$NY FG$NY 
	Y Y Y Y&(GN (t ( ( ( ( ( (r   