
    h                     |    S r SSKJr  SSKJr  SSKJrJr  SSKJ	r	   " S S\R                  5      r
\SS	.S
 jrS rg)z
A Python "serializer". Doesn't do much serializing per se -- just converts to
and from basic Python data types (lists, dicts, strings, etc.). Useful as a basis for
other serializers.
    )apps)base)DEFAULT_DB_ALIASmodels)is_protected_typec                   X    \ rS rSrSrSrS rS rS rS r	S r
S	 rS
 rS rS rS rSrg)
Serializer   z/
Serialize a QuerySet to basic Python objects.
Tc                      S U l         / U l        g N_currentobjectsselfs    P/var/www/html/env/lib/python3.13/site-packages/django/core/serializers/python.pystart_serializationSerializer.start_serialization   s        c                     g r    r   s    r   end_serializationSerializer.end_serialization   s    r   c                     0 U l         g r   )r   r   objs     r   start_objectSerializer.start_object   s	    r   c                 f    U R                   R                  U R                  U5      5        S U l        g r   )r   appendget_dump_objectr   r   s     r   
end_objectSerializer.end_object   s&    D0056r   c                     S[        UR                  5      0nU R                  (       a  [        US5      (       d(  U R	                  XR                  R
                  5      US'   U R                  US'   U$ )Nmodelnatural_keypkfields)str_metause_natural_primary_keyshasattr_value_from_fieldr'   r   )r   r   datas      r   r!   Serializer.get_dump_object"   sW    SYY(,,GC4O4O//YY\\BDJXr   c                 j    UR                  U5      n[        U5      (       a  U$ UR                  U5      $ r   )value_from_objectr   value_to_string)r   r   fieldvalues       r   r-   Serializer._value_from_field)   s4    '', *%00uPe6K6KC6PPr   c                 T    U R                  X5      U R                  UR                  '   g r   )r-   r   name)r   r   r3   s      r   handle_fieldSerializer.handle_field0   s    $($:$:3$Fejj!r   c                 "   U R                   (       aU  [        UR                  R                  S5      (       a0  [	        XR
                  5      nU(       a  UR                  5       nOS nOU R                  X5      nX@R                  UR
                  '   g )Nr&   )	use_natural_foreign_keysr,   remote_fieldr%   getattrr7   r&   r-   r   )r   r   r3   relatedr4   s        r   handle_fk_fieldSerializer.handle_fk_field3   sn    ((W$$m.
 .
 c::.G++-**36E$)ejj!r   c                   ^  UR                   R                  R                  R                  (       a  T R                  (       a,  [        UR                   R                  S5      (       a  S nS nO	U 4S jnS n[        US0 5      R                  UR                  U" X5      5      nU Vs/ s H
  oc" U5      PM     snT R                  UR                  '   g g s  snf )Nr&   c                 "    U R                  5       $ r   )r&   )r4   s    r   	m2m_value.Serializer.handle_m2m_field.<locals>.m2m_valueF   s     ,,..r   c                 H    [        XR                  5      R                  5       $ r   )r=   r7   iteratorr   r3   s     r   queryset_iterator6Serializer.handle_m2m_field.<locals>.queryset_iteratorI   s    "3

3<<>>r   c                 N   > TR                  X R                  R                  5      $ r   )r-   r*   r'   )r4   r   s    r   rC   rD   N   s    11%HHr   c                     [        XR                  5      R                  S 5      R                  S5      R	                  5       $ )Nr'   )r=   r7   select_relatedonlyrF   rG   s     r   rH   rI   Q   s-    ZZ0'-d!	r   _prefetched_objects_cache)r<   throughr*   auto_createdr;   r,   r%   r=   getr7   r   )r   r   r3   rC   rH   m2m_iterr>   s   `      r   handle_m2m_fieldSerializer.handle_m2m_field@   s    %%++88,,""((-2 2/?
I s$?DHH

!#-H LT(T87);8(TDMM%**%9 98 )Us   (Cc                     U R                   $ r   )r   r   s    r   getvalueSerializer.getvalue_   s    ||r   r   N)__name__
__module____qualname____firstlineno____doc__internal_use_onlyr   r   r   r"   r!   r-   r8   r?   rS   rV   __static_attributes__r   r   r   r	   r	      sD     QG*U>r   r	   F)usingignorenonexistentc          
   +     #    UR                  SS5      n0 nU  GHG  n [        US   5      n0 nSU;   aU   UR                  R
                  R                  UR                  S5      5      XR                  R
                  R                  '   0 n
0 nXu;  a6  UR                  R                  5        Vs1 s H  oR                  iM     snXW'   XW   nUS   R                  5        GHL  u  pU(       a  X;  a  M  UR                  R                  U5      nUR                  (       am  [!        UR                  ["        R$                  5      (       aD   [        R&                  " UXU5      nU[        R,                  :X  a  XU'   M  UU
UR                  '   M  UR                  (       ao  [!        UR                  ["        R.                  5      (       aF   [        R0                  " UXU5      nU[        R,                  :X  a  XU'   GM  UUUR                  '   GM-   UR                  U5      UUR                  '   GMO     [        R2                  " XxU5      n[        R4                  " UX5      v   GMJ     g! [        R                   a    U(       a   GMl  e f = f! [         a8  n	[        R                  R                  XS   UR                  S5      S5      eSn	A	ff = fs  snf ! [        R(                   aM  n	[        R                  R                  U	R*                  US   UR                  S5      U	R
                  5      eSn	A	ff = f! [         a8  n	[        R                  R                  XS   UR                  S5      U5      eSn	A	ff = f! [         a8  n	[        R                  R                  XS   UR                  S5      U5      eSn	A	ff = f7f)z
Deserialize simple Python objects back into Django ORM instances.

It's expected that you pass the Python objects themselves (instead of a
stream or a string) to the constructor
handle_forward_referencesFr%   r'   Nr(   )pop
_get_modelr   DeserializationErrorr*   r'   	to_pythonrQ   attname	ExceptionWithData
get_fieldsr7   items	get_fieldr<   
isinstancer   ManyToManyReldeserialize_m2m_valuesM2MDeserializationErrororiginal_excDEFER_FIELDManyToOneReldeserialize_fk_valuebuild_instanceDeserializedObject)object_listr_   r`   optionsrb   field_names_cachedModelr.   em2m_datadeferred_fieldsffield_names
field_namefield_valuer3   valuesr4   r   s                       r   Deserializerr   c   sA     !(,G O	qz*E 19/4{{~~/G/Gd/T[[^^++,
 )8=8N8N8P'Q8P18P'Q$'. (){'8'8':#J Z%BKK))*5E !!j""F$8$8' '!88{3LF T----8E*+1HUZZ(##
""F$7$7) ) 55{3LE D,,,-8E**/D'',{'CD$U (;` !!%u5%%c8EEU  (( 	 		  //88z155;  (R& 33 33<<'
AEE$K   ! 33<<W:quuT{K  ! 33<<W:quuT{K s   OI&OAJ
	%O.KBO	K!A%OL8-OM=+;O&JOJO

K3KKOL5(AL00L55O8
M:3M55M::O=
N?3N::N??Oc                      [         R                  " U 5      $ ! [        [        4 a    [        R
                  " SU -  5      ef = f)z6Look up a model from an "app_label.model_name" string.zInvalid model identifier: '%s')r   	get_modelLookupError	TypeErrorr   re   )model_identifiers    r   rd   rd      sG    
~~.//# 
'',/??
 	

s	    *AN)r\   django.appsr   django.core.serializersr   	django.dbr   r   django.utils.encodingr   r	   r   rd   r   r   r   <module>r      s?     ( . 3S Sn +eVFr
r   