Ë
    ¸2Úi}  ã                   óz   — d Z ddlmZmZ  edg d¢«      Z edg d¢«      Zd„ Zd„ Zd	„ Zd
„ Z	d„ Z
d„ Zd„ Zd„ Zd„ Zy)zý
Helper function for returning the field information that is associated
with a model class. This includes returning all the forward and reverse
relationships and their associated metadata.

Usage: `get_field_info(model)` returns a `FieldInfo` instance.
é    )ÚOrderedDictÚ
namedtupleÚFieldResult)ÚpkÚfieldsÚforward_relationsÚreverse_relationsÚfields_and_pkÚ	relationsÚRelationInfo©Úmodel_fieldÚrelated_modelÚto_manyÚto_fieldÚhas_through_modelÚreversec                 óê   — | j                   j                  j                   }t        |«      }t        |«      }t	        |«      }t        |«      }t        ||«      }t        ||«      }t        ||||||«      S )zÏ
    Given a model class, returns a `FieldInfo` instance, which is a
    `namedtuple`, containing metadata about the various field types on the model
    including information about their relationships.
    )	Ú_metaÚconcrete_modelÚ_get_pkÚ_get_fieldsÚ_get_forward_relationshipsÚ_get_reverse_relationshipsÚ_merge_fields_and_pkÚ_merge_relationshipsÚ	FieldInfo)ÚmodelÚoptsr   r   r   r	   r
   Úrelationshipss           úV/var/www/html/acx/venv/lib/python3.12/site-packages/rest_framework/utils/model_meta.pyÚget_field_infor"      sx   € ð �;‰;×%Ñ%×+Ñ+€Dä	�‹€BÜ˜Ó€FÜ2°4Ó8ÐÜ2°4Ó8ÐÜ(¨¨VÓ4€MÜ(Ð):Ð<MÓN€Mä�R˜Ð!2Ð4EØ" Mó3ð 3ó    c                 óÜ   — | j                   }|j                  }|rQ|j                  rE|j                  j                  j                  j                   }|j                  }|r|j                  rŒE|S ©N)r   Úremote_fieldÚparent_linkr   r   )r   r   Úrels      r!   r   r   0   sS   € Ø	�‰€BØ
�/‰/€Cá
�#—/’/à�_‰_×"Ñ"×(Ñ(×+Ñ+ˆØ�o‰oˆñ �#—/“/ð
 €Ir#   c                 ó´   — t        «       }| j                  D �cg c]  }|j                  sŒ|j                  rŒ|‘Œ  c}D ]  }|||j                  <   Œ |S c c}w r%   )r   r   Ú	serializer&   Úname)r   r   Úfields      r!   r   r   <   sP   € Ü‹]€FØ%)§[¡[Ö_˜E°E·O³OÈE×L^ÓL^’%Ò_ò #ˆØ"ˆˆu�z‰zÒð#ð €Mùò `s   ™A«A¸Ac                 ó>   — t        | dd «      xr | j                  d   S )NÚ	to_fieldsr   )Úgetattrr.   )r,   s    r!   Ú_get_to_fieldr0   D   s   € Ü�5˜+ tÓ,ÒC°·±ÀÑ1CÐCr#   c           	      ó$  — t        «       }| j                  D �cg c]  }|j                  sŒ|j                  sŒ|‘Œ  c}D ]=  }t	        ||j                  j
                  dt        |«      dd¬«      ||j                  <   Œ? | j                  D �cg c]  }|j                  sŒ|‘Œ c}D ]]  }t	        ||j                  j
                  dd|j                  j                  j                  j                   d¬«      ||j                  <   Œ_ |S c c}w c c}w )úD
    Returns an `OrderedDict` of field names to `RelationInfo`.
    Fr   TN)r   r   r*   r&   r   r   r0   r+   Úmany_to_manyÚthroughr   Úauto_created)r   r   r,   s      r!   r   r   H   sø   € ô $›ÐØ%)§[¡[Ö[˜E°E·O³OÈ×HZÓHZ’%Ò[ò 
ˆÜ(4ØØ×,Ñ,×2Ñ2ØÜ" 5Ó)Ø#Øô)
Ð˜%Ÿ*™*Ò%ð
ð &*×%6Ñ%6ÖJ˜E¸%¿/»/’%ÒJò 
ˆÜ(4ØØ×,Ñ,×2Ñ2Øàà×&Ñ&×.Ñ.×4Ñ4×AÑAÐAàô
)
Ð˜%Ÿ*™*Ò%ð
ð Ðùò1 \ùò Ks   ™D«D¸DÂDÂDc                 óÔ  — t        «       }| j                  D �cg c]  }|j                  j                  rŒ|‘Œ }}|D ]a  }|j	                  «       }t        d|j                  |j                  j                  j                  t        |j                  «      dd¬«      ||<   Œc | j                  D �cg c]  }|j                  j                  sŒ|‘Œ }}|D ]ˆ  }|j	                  «       }t        d|j                  ddt        |j                  j                  dd«      duxr5 |j                  j                  j                  j                  j                   d¬«      ||<   ŒŠ |S c c}w c c}w )r2   NFTr   r4   )r   Úrelated_objectsr,   r3   Úget_accessor_namer   r   r&   Úmultipler0   r/   r4   r   r5   )r   r	   ÚrÚall_related_objectsÚrelationÚaccessor_nameÚ all_related_many_to_many_objectss          r!   r   r   h   sQ  € ô $›ÐØ&*×&:Ñ&:ÖW À!Ç'Á'×BVÓBVš1ÐWÐÐWØ'ò 	
ˆØ ×2Ñ2Ó4ˆÜ+7ØØ"×0Ñ0Ø—N‘N×/Ñ/×8Ñ8Ü" 8§>¡>Ó2Ø#Øô,
Ð˜-Ò(ð	
ð 48×3GÑ3GÖ'`¨aÈ1Ï7É7×K_ÓK_ªÐ'`Ð$Ð'`Ø4ò 
ˆØ ×2Ñ2Ó4ˆÜ+7ØØ"×0Ñ0Øàä˜Ÿ™×4Ñ4°iÀÓFÈdÐRò KØ—N‘N×/Ñ/×7Ñ7×=Ñ=×JÑJÐJàô,
Ð˜-Ò(ð
ð Ðùò; Xùò (as   ™E µE Â/E%ÃE%c                 ód   — t        «       }| |d<   | || j                  <   |j                  |«       |S )Nr   )r   r+   Úupdate)r   r   r
   s      r!   r   r   �   s5   € Ü“M€MØ€M�$ÑØ€M�"—'‘'ÑØ×Ñ˜Ô àÐr#   c                 óz   — t        t        | j                  «       «      t        |j                  «       «      z   «      S r%   )r   ÚlistÚitems)r   r	   s     r!   r   r   –   s8   € ÜÜÐ×$Ñ$Ó&Ó'ÜÐ×$Ñ$Ó&Ó'ñ	(óð r#   c                 óz   — t        | d«      xr. t        | j                  d«      xr | j                  j                  S )z_
    Given a model class, returns a boolean True if it is abstract and False if it is not.
    r   Úabstract)Úhasattrr   rE   )r   s    r!   Úis_abstract_modelrG   �   s0   € ô �5˜'Ó"Ò`¤w¨u¯{©{¸JÓ'GÒ`ÈEÏKÉK×L`ÑL`Ð`r#   N)Ú__doc__Úcollectionsr   r   r   r   r"   r   r   r0   r   r   r   r   rG   © r#   r!   ú<module>rK      sd   ðñ÷ 0á�}ò 'ó €	ñ ˜.ò +ó €ò3ò&	òòDòò@"òJòóar#   