
    g                        U d Z ddlmZ ddlmZmZmZmZ ddl	m
Z
mZmZmZmZ ddlZddlmZmZmZmZmZ ddlmZ  eg d	      Zd
ed<   e
rddlmZ  G d de      ZddZy)z5Integration with the standard library logging module.    )annotations)NOTSETHandler	LogRecordStreamHandler)TYPE_CHECKINGAnyClassVarMappingcastN   )ATTRIBUTES_LOGGING_ARGS_KEYATTRIBUTES_LOGGING_NAMEATTRIBUTES_MESSAGE_KEYATTRIBUTES_MESSAGE_TEMPLATE_KEYLOGGING_TO_OTEL_LEVEL_NUMBERS)is_instrumentation_suppressed)argsasctimecreatedexc_infoexc_textfilenamefuncName	levelnamelevelnolinenomodulemsecsmessagemsgnamepathnameprocessprocessNamerelativeCreated
stack_infothread
threadNametaskNamezfrozenset[str]RESERVED_ATTRS)Logfirec                  d     e Zd ZU dZdZded<   e e       df	 	 	 	 	 	 	 d	 fdZd
dZ	ddZ
 xZS )LogfireLoggingHandlerzRA [logging](../../integrations/logging.md) handler that sends logs to **Logfire**.zstdlib.loggingzClassVar[str]custom_scope_suffixNc                    t         |   |       || _        |xs t        j                  j                  | j                        | _        y )N)level)r/   )super__init__fallbacklogfireDEFAULT_LOGFIRE_INSTANCEwith_settingsr/   logfire_instance)selfr1   r4   r8   	__class__s       Q/var/www/openai/venv/lib/python3.12/site-packages/logfire/integrations/logging.pyr3   zLogfireLoggingHandler.__init__:   sI     	u% !1!UW5U5U d d $ 8 8 !e !
    c                P   t               r| j                  j                  |       y| j                  |      }| j                  j                  |j                  t        |j                        t        j                  |j                  |j                        ||j                         y)z\Send the log to Logfire.

        Args:
            record: The log record to send.
        N)msg_templater1   
attributesr   )r   r4   handlefill_attributesr8   logpopr   r!   r   getr   r   )r9   recordr?   s      r;   emitzLogfireLoggingHandler.emitF   s}     )*MM  ())&1
!!#(GT/33FNNFNNS!__	 	" 	
r<   c                J   |j                   j                         D ci c]  \  }}|t        vs|| }}}|j                  |d<   |j                  |d<   |j
                  |d<   |j                  |t        <   t        |      \  |t        <   }|j                  |       |S c c}}w )zFill the attributes to send to Logfire.

        This method can be overridden to add more attributes.

        Args:
            record: The log record.

        Returns:
            The attributes for the log record.
        zcode.filepathzcode.linenozcode.function)__dict__itemsr+   r#   r   r   r"   r   _format_messager   update)r9   rE   kvr?   r   s         r;   rA   z%LogfireLoggingHandler.fill_attributesY   s     (.'<'<'>Z'>tq!!>BYad'>
Z&,oo
?#$*MM
=!&,oo
?#.4kk
*+3B63J0
)*D$ [s
   BB)r1   z	int | strr4   LoggingHandlerr8   zLogfire | NonereturnNone)rE   r   rO   rP   )rE   r   rO   zdict[str, Any])__name__
__module____qualname____doc__r/   __annotations__r   r   r3   rF   rA   __classcell__)r:   s   @r;   r.   r.   5   sS    \)99 "#0?+/	



 !

 )	


 



&r<   r.   c                    | j                   }| j                  }|s|i fS t        |      t        u r||z  t        |ifS 	 ||fz  }|t        |fifS # t
        $ r ||z  t        d|      fcY S w xY w)NzMapping[str, Any])r   r!   typetupler   	TypeErrorr   )rE   r   r!   	formatteds       r;   rJ   rJ   p   s    ;;D
**CBwDzUTz7>>>A 4'M	 6@@@  ; Tz4 3T:::	;s   A A,+A,)rE   r   rO   ztuple[str, Mapping[str, Any]])rT   
__future__r   loggingr   r   rN   r   r   typingr   r	   r
   r   r   r5   _internal.constantsr   r   r   r   r   _internal.utilsr   	frozensetr+   rU    r,   r.   rJ    r<   r;   <module>rd      s\    ; " O O > >   < "+" 8 8N 8vAr<   