
    ^f                       U d Z ddlmZ ddl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mZmZ dZ	 ddlmZ eefz  Zn# e$ r Y nw xY w G d	 d
ej                  Zd)dZej        edfdZd*dZej        defdZeegef         xZZ ed          Z ed          Zd fd+d Zi Zd!ed"<   d# d$ d%Zd&ed'<   d( Z  e              dS ),zJSON Serialization Utilities.    )annotationsN)datedatetimetime)Decimal)AnyCallableTypeVar )Promisec                  "     e Zd ZdZ fdZ xZS )JSONEncoderzKombu custom json encoder.c                x   t          |dd           }|
 |            S t          |t                    rt          |          S t                                          D ]@\  }\  }}t          ||          r(| ||          nt          | ||                    c S At          |t                    ri	 t          d|                    d                    S # t          $ r8 t          dt          j        |                              d                    cY S w xY wt                                          |          S )N__json__bytesutf-8base64)getattr
isinstancetextual_typesstr	_encodersitems_asr   decodeUnicodeDecodeErrorr   	b64encodesuperdefault)selforeducertmarkerencoder	__class__s         B/var/www/html/env/lib/python3.11/site-packages/kombu/utils/json.pyr   zJSONEncoder.default   sN   !Z..799a'' 	q66M$-OO$5$5 	 	 A !Q "(.GGAJJJc&''!**6M6M   a 	JJ7AHHW$5$5666% J J J8V%5a%8%8%?%?%H%HIIIIIJ wwq!!!s   3"C ?DD)__name__
__module____qualname____doc__r   __classcell__)r&   s   @r'   r   r      s>        $$" " " " " " " " "    r   r#   r   vr   c                    | |dS )N)__type__	__value__r   )r#   r.   s     r'   r   r   2   s    ***r-   c           	     6    |pi } || fd|it          |fi |S )z Serialize object to json string.cls)dict)s_dumpsr3   default_kwargskwargss        r'   dumpsr9   6   s;     $)rN6!???^ > >v > >???r-   r!   r4   c                    |                                  ddhk    rIt                              | d                   }|r || d                   S t          dt          |           | S )z0Hook function to perform custom deserialization.r0   r1   zUnsupported type)keys	_decodersget
ValueErrortype)r!   decoders     r'   object_hookrA   B   sc    vvxxJ,,,--*.. 	:71[>***/q999r-   Tc                D   t          | t                    r(|                                                     d          } nWt          | t                    r|                     d          } n,|r*t          | t
                    r|                     d          }  || |          S )zDeserialize json from string.r   )rA   )r   
memoryviewtobytesr   	bytearrayr   )r5   _loadsdecode_bytesrA   s       r'   loadsrH   N   s     !Z   IIKKw''	Ay	!	! HHW	 *Q.. HHW6!----r-   TEncodedTc                    | S Nr   )ds    r'   <lambda>rN   i   s     r-   type[T]r$   
str | Noner%   Callable[[T], EncodedT]r@   Callable[[EncodedT], T]c                :    ||ft           | <   ||t          |<   dS dS )a  Add support for serializing/deserializing native python type.

    If marker is `None`, the encoding is a pure transformation and the result
    is not placed in an envelope, so `decoder` is unnecessary. Decoding must
    instead be handled outside this library.
    N)r   r<   )r#   r$   r%   r@   s       r'   register_typerT   e   s0     G$IaL#	& r-   z'dict[type, tuple[str | None, EncoderT]]r   c                ,    |                      d          S Nr   )encoder!   s    r'   rN   rN   x   s    qxx(( r-   c                P    t          j        |                     d                    S rV   )r   	b64decoderW   rX   s    r'   rN   rN   y   s    ('):):;; r-   )r   r   zdict[str, DecoderT]r<   c                 P   t          t          dt          j        t          j                   t          t          dd d            t          t
          dd t
          j                   t          t          dt          t                     t          t          j	        dd	 d
            d S )Nr   r   c                *    |                                  S rL   	isoformatrX   s    r'   rN   z)_register_default_types.<locals>.<lambda>   s    !++-- r-   c                N    t          j        |                                           S rL   )r   fromisoformatr   rX   s    r'   rN   z)_register_default_types.<locals>.<lambda>   s    ((++0022 r-   r   c                *    |                                  S rL   r]   rX   s    r'   rN   z)_register_default_types.<locals>.<lambda>   s    !++-- r-   decimaluuidc                    d| j         iS )Nhex)re   rX   s    r'   rN   z)_register_default_types.<locals>.<lambda>   s    5!%. r-   c                $    t          j        di | S )Nr   )rc   UUIDrX   s    r'   rN   z)_register_default_types.<locals>.<lambda>   s    $)..a.. r-   )
rT   r   r^   r`   r   r   r   r   rc   rg   r   r-   r'   _register_default_typesrh   }   s     (J(:(* * *22	   $ 7 79KLLL'9c7333	    	    r-   )r#   r   r.   r   )r!   r4   )r#   rO   r$   rP   r%   rQ   r@   rR   )!r+   
__future__r   r   jsonrc   r   r   r   rb   r   typingr   r	   r
   r   django.utils.functionalr   ImportErrorr   r   r9   rA   rH   DecoderTEncoderTrI   rJ   rT   r   __annotations__r<   rh   r   r-   r'   <module>rq      s$   # # # " " " " " "    ) ) ) ) ) ) ) ) ) )       ) ) ) ) ) ) ) ) ) )	//////gZMM 	 	 	D	" " " " "$" " " "8+ + + + :		@ 	@ 	@ 	@	 	 	 	 JT{ . . . .$ ucz* *8GCLL7: (3{	$ $ $ $ $" 68	 7 7 7 7((;;" "	      *       s   A   AA