
    Ih                       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 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         y# e$ r Y w xY w)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                   t        |dd       }| |       S t        |t              rt        |      S t        j                         D ]4  \  }\  }}t        ||      s|
 ||      c S t        | ||            c S  t        |t              r	 t        d|j                  d            S t        | 5  |      S # t        $ r1 t        dt        j                  |      j                  d            cY S w xY w)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         I/var/www/html/planif/env/lib/python3.12/site-packages/kombu/utils/json.pyr   zJSONEncoder.default   s    !Z.9a'q6M$-OO$5 	 A !Q"(.GAJ69&'!*6M	 aJ7AHHW$566 wq!! & J8V%5%5a%8%?%?%HIIJs   B9 97C32C3)__name__
__module____qualname____doc__r   __classcell__)r&   s   @r'   r   r      s    $" "    r   c                    | |dS )N)__type__	__value__r   )r#   vs     r'   r   r   2   s    **r-   c           	     8    |xs 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!??^ >v >??r-   c                    | j                         ddhk(  r6t        j                  | d         }|r || d         S t        dt        |       | S )z0Hook function to perform custom deserialization.r/   r0   zUnsupported type)keys	_decodersget
ValueErrortype)r!   decoders     r'   object_hookrA   B   sN    vvxJ,,--*.1[>**/q99r-   Tc                    t        | t              r | j                         j                  d      } nEt        | t              r| j                  d      } n#|r!t        | t
              r| j                  d      }  || |      S )zDeserialize json from string.r   )rA   )r   
memoryviewtobytesr   	bytearrayr   )r5   _loadsdecode_bytesrA   s       r'   loadsrH   N   sc     !Z IIKw'	Ay	!HHW	*Q.HHW!--r-   TEncodedTc                    | S Nr   )ds    r'   <lambda>rN   i   s     r-   c                2    ||ft         | <   |
|t        |<   yy)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_typerP   e   s'     G$IaL#	& r-   z'dict[type, tuple[str | None, EncoderT]]r   c                $    | j                  d      S Nr   )encoder!   s    r'   rN   rN   x   s    qxx( r-   c                J    t        j                  | j                  d            S rR   )r   	b64decoderS   rT   s    r'   rN   rN   y   s    (('):; r-   )r   r   zdict[str, DecoderT]r<   c                 :   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
        y )Nr   r   c                "    | j                         S rL   	isoformatrT   s    r'   rN   z)_register_default_types.<locals>.<lambda>   s    !++- r-   c                H    t        j                  |       j                         S rL   )r   fromisoformatr   rT   s    r'   rN   z)_register_default_types.<locals>.<lambda>   s    (((+002 r-   r   c                "    | j                         S rL   rY   rT   s    r'   rN   z)_register_default_types.<locals>.<lambda>   s    !++- r-   decimaluuidc                    d| j                   iS )Nhex)ra   rT   s    r'   rN   z)_register_default_types.<locals>.<lambda>   s    5!%%. r-   c                ,    t        j                  di | S )Nr   )r_   UUIDrT   s    r'   rN   z)_register_default_types.<locals>.<lambda>   s    $)).a. r-   )
rP   r   rZ   r\   r   r   r   r   r_   rc   r   r-   r'   _register_default_typesrd   }   sr     (J(:(:((*2	 $ 79K9KL'9c73		  	r-   )r#   r   r1   r   )r!   r4   )r#   ztype[T]r$   z
str | Noner%   zCallable[[T], EncodedT]r@   zCallable[[EncodedT], T])!r+   
__future__r   r   jsonr_   r   r   r   r^   r   typingr   r	   r
   r   django.utils.functionalr   ImportErrorr   r   r9   rA   rH   DecoderTEncoderTrI   rJ   rP   r   __annotations__r<   rd   r   r-   r'   <module>rm      s   # "    ) )  ) )	/gZM
"$"" "8+ ::		@	 JJT{ .$ ucz* *8CL: (3	$$$ %$ %	$" 68	2 7(;"	 *  A  		s   C CC