
    g                         d Z ddlZddlZddlZddl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 ddlmZ  G d	 d
e      Z
d Z G d dej$                        Zy)z
Serialize data to/from JSON
    N)DeserializationError)Deserializer)
Serializer)duration_iso_string)Promise)is_awarec                   >     e Zd ZdZdZd Zd Zd Zd Z fdZ	 xZ
S )r   zConvert a queryset to JSON.Fc                    d | _         | j                  j                         | _        | j                  j	                  dd        | j                  j	                  dd        | j                  j                  d      rd| j                  d<   | j                  j                  dt               | j                  j                  dd       y )	Nstreamfieldsindent),z: 
separatorsclsensure_asciiF)_currentoptionscopyjson_kwargspopget
setdefaultDjangoJSONEncoderselfs    t/var/www/python.vincentserveurtest.ovh/public_html/venv/lib/python3.12/site-packages/django/core/serializers/json.py_init_optionszSerializer._init_options   s    <<,,.Xt,Xt,<<H%-8D\*##E+<=##NE:    c                 Z    | j                          | j                  j                  d       y )N[)r   r   writer   s    r   start_serializationzSerializer.start_serialization"   s     #r   c                    | j                   j                  d      r| j                  j                  d       | j                  j                  d       | j                   j                  d      r| j                  j                  d       y y )Nr   
])r   r   r   r!   r   s    r   end_serializationzSerializer.end_serialization&   sa    <<H%KKd##<<H%KKd# &r   c                 ~   | j                   j                  d      }| j                  s8| j                  j	                  d       |s| j                  j	                  d       |r| j                  j	                  d       t        j                  | j                  |      | j                  fi | j                   d | _	        y )Nr   r    r$   )
r   r   firstr   r!   jsondumpget_dump_objectr   r   )r   objr   s      r   
end_objectzSerializer.end_object-   s    !!(+zzKKc"!!#&KKd#		$&&s+T[[MD<L<LMr   c                 (    t         t        |          S )N)superPythonSerializergetvalue)r   	__class__s    r   r2   zSerializer.getvalue9   s    %t577r   )__name__
__module____qualname____doc__internal_use_onlyr   r"   r&   r.   r2   __classcell__r3   s   @r   r   r      s*    %	;$
8 8r   r   c              +   F  K   t        | t        t        f      s| j                         } t        | t              r| j	                         } 	 t        j                  |       }t        |fi |E d{    y7 # t        t        f$ r  t        $ r}t               |d}~ww xY ww)z,Deserialize a stream or string of JSON data.N)
isinstancebytesstrreaddecoder*   loadsPythonDeserializerGeneratorExitr   	Exception)stream_or_stringr   objectsexcs       r   r   r   >   s     &5+002"E*+224.**-.%g9999/0  ."$#-.s<   AB!
$A6 .A4/A6 3B!4A6 6BBBB!c                   "     e Zd ZdZ fdZ xZS )r   z`
    JSONEncoder subclass that knows how to encode date/time, decimal types, and
    UUIDs.
    c                    t        |t        j                        rN|j                         }|j                  r|d d |dd  z   }|j	                  d      r|j                  d      dz   }|S t        |t        j                        r|j                         S t        |t        j                        r9t        |      rt        d      |j                         }|j                  r|d d }|S t        |t        j                        rt        |      S t        |t        j                  t        j                  t         f      rt#        |      S t$        | M  |      S )N      z+00:00Zz*JSON can't represent timezone-aware times.   )r<   datetime	isoformatmicrosecondendswithremovesuffixdatetimer   
ValueError	timedeltar   decimalDecimaluuidUUIDr   r>   r0   default)r   orr3   s      r   r[   zDjangoJSONEncoder.defaultS   s   a**+A}}crFQrsVOzz(#NN8,s2H8==);;= 8==){ !MNNA}}crFH8--.&q))GOOTYY@Aq6M7?1%%r   )r4   r5   r6   r7   r[   r9   r:   s   @r   r   r   M   s    
& &r   r   )r7   rN   rW   r*   rY   django.core.serializers.baser   django.core.serializers.pythonr   rB   r   r1   django.utils.durationr   django.utils.functionalr   django.utils.timezoner   JSONEncoderr    r   r   <module>re      sO        = M I 5 + *)8! )8X.&(( &r   