
    #i%	                        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)z<JSON Formatter using [orjson](https://github.com/ijl/orjson)    )annotations)AnyOptionalCallable   )core)defaults)package_is_availableorjsonT)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                  |       rt        j                  |       S t        j                  |       S )z6orjson default encoder function for non-standard types)duse_exception_defaultexception_defaultuse_traceback_defaulttraceback_defaultuse_bytes_defaultbytes_defaultuse_enum_defaultenum_defaultuse_type_defaulttype_defaultunknown_default)objs    FC:\Projects\mas-dev\.venv\Lib\site-packages\pythonjsonlogger/orjson.pyorjson_defaultr      s    s#""3''s#""3''3s###~~c""#~~c""S!!    c                  >     e Zd ZdZedd	 	 	 	 	 d fdZddZ xZS )OrjsonFormatterzJJSON formatter using [orjson](https://github.com/ijl/orjson) for encoding.F)json_defaultjson_indentc               @    t        |   |i | || _        || _        y)a<  
        Args:
            args: see [BaseJsonFormatter][pythonjsonlogger.core.BaseJsonFormatter]
            json_default: a function for encoding non-standard objects
            json_indent: indent output with 2 spaces.
            kwargs: see [BaseJsonFormatter][pythonjsonlogger.core.BaseJsonFormatter]
        N)super__init__r    r!   )selfr    r!   argskwargs	__class__s        r   r$   zOrjsonFormatter.__init__-   s*     	$)&)(&r   c                    t         j                  }| j                  r|t         j                  z  }t        j                  || j
                  |      j                  d      S )z&Returns a json string of the log data.)defaultoptionutf8)r   OPT_NON_STR_KEYSr!   OPT_INDENT_2dumpsr    decode)r%   log_dataopts      r   jsonify_log_recordz"OrjsonFormatter.jsonify_log_recordA   sK    %%6&&&C||Hd.?.?LSSTZ[[r   )r    zOptional[Callable]r!   boolreturnNone)r1   zcore.LogDatar5   str)__name__
__module____qualname____doc__r   r$   r3   __classcell__)r(   s   @r   r   r   *   s7    T
 ,:!	 ) 	 
(\r   r   )r   r   r5   r   )r;   
__future__r   typingr   r   r    r   r	   r   utilsr
   r   r   BaseJsonFormatterr    r   r   <module>rC      sH    B
 # + *
   ' X4 0 
""\d,, \r   