
    Xh5	                        d Z ddlmZ ddl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   )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    K/var/www/html/myenv/lib/python3.12/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               f    t        |   |i | t        j                  |      | _        || _        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   str_to_objectr   r   )selfr   r   argskwargs	__class__s        r   r"   zOrjsonFormatter.__init__-   s5     	$)&) ..|<&r   c                    t         j                  }| j                  r|t         j                  z  }t        j                  || j
                  |      j                  d      S )z(Returns a json string of the log record.)defaultoptionutf8)r	   OPT_NON_STR_KEYSr   OPT_INDENT_2dumpsr   decode)r$   
log_recordopts      r   jsonify_log_recordz"OrjsonFormatter.jsonify_log_recordA   sK    %%6&&&C||J0A0A#NUUV\]]r   )r   zcore.OptionalCallableOrStrr   boolreturnNone)r0   zcore.LogRecordr4   str)__name__
__module____qualname____doc__r   r"   r2   __classcell__)r'   s   @r   r   r   *   s8    T
 4B!	 1 	 
(^r   r   )r   r   r4   r   )r:   
__future__r   typingr    r   r   r   utilsr   r	   r   BaseJsonFormatterr    r   r   <module>rB      sE    B
 # 
   ' X4 0 
""^d,, ^r   