
    #ia                        d Z ddlm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  edd	
       ddlZddZ G d dej                         Zy)zCJSON Formatter using [`msgspec`](https://github.com/jcrist/msgspec)    )annotations)AnyOptionalCallable   )core)defaults)package_is_availablemsgspecT)throw_errorNc                |   t        j                  |       rt        j                  |       S t        j                  |       rt        j                  |       S t        j
                  |       rt        j                  |       S t        j                  |       rt        j                  |       S t        j                  |       S )z7msgspec default encoder function for non-standard types)
duse_exception_defaultexception_defaultuse_traceback_defaulttraceback_defaultuse_enum_defaultenum_defaultuse_type_defaulttype_defaultunknown_default)objs    GC:\Projects\mas-dev\.venv\Lib\site-packages\pythonjsonlogger/msgspec.pymsgspec_defaultr      s    s#""3''s#""3''#~~c""#~~c""S!!    c                  8     e Zd ZdZed	 	 	 d fdZddZ xZS )MsgspecFormatterzzJSON formatter using [`msgspec.json.Encoder`](https://jcristharif.com/msgspec/api.html#msgspec.json.Encoder) for encoding.)json_defaultc                   t        |   |i | || _        t        j                  j                  | j                        | _        y)a  
        Args:
            args: see [BaseJsonFormatter][pythonjsonlogger.core.BaseJsonFormatter]
            json_default: a function for encoding non-standard objects
            kwargs: see [BaseJsonFormatter][pythonjsonlogger.core.BaseJsonFormatter]
        )enc_hookN)super__init__r   r   jsonEncoder_encoder)selfr   argskwargs	__class__s       r   r"   zMsgspecFormatter.__init__+   sA     	$)&)(,,d6G6G,Hr   c                V    | j                   j                  |      j                  d      S )z&Returns a json string of the log data.utf8)r%   encodedecode)r&   log_datas     r   jsonify_log_recordz#MsgspecFormatter.jsonify_log_record=   s"    }}##H-44V<<r   )r   zOptional[Callable]returnNone)r.   zcore.LogDatar0   str)__name__
__module____qualname____doc__r   r"   r/   __classcell__)r)   s   @r   r   r   (   s,     E
 ,; )
 
$=r   r   )r   r   r0   r   )r6   
__future__r   typingr   r   r    r   r	   r   utilsr
   msgspec.jsonr   r   BaseJsonFormatterr    r   r   <module>r?      sF    I
 # + *
   ' YD 1 

"=t-- =r   