Ë
    º2ÚiÞ  ã                   óJ   — d dl mZmZ d dlmZ d dlmZmZmZ  G d„ de«      Z	y)é    )ÚerrorÚwarn)ÚOpenApiSerializerExtension)Úforce_instanceÚis_list_serializerÚis_serializerc                   ó>   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zy
)Ú#PolymorphicProxySerializerExtensionz0drf_spectacular.utils.PolymorphicProxySerializeréÿÿÿÿc                 ó.   — | j                   j                  S ©N)ÚtargetÚcomponent_name©Úselfs    úR/var/www/html/acx/venv/lib/python3.12/site-packages/drf_spectacular/serializers.pyÚget_namez,PolymorphicProxySerializerExtension.get_name
   s   € Ø�{‰{×)Ñ)Ð)ó    c           	      ó’  — t        | j                  j                  t        «      r| j	                  ||«      }n| j                  ||«      }| j                  «       sd|D ��cg c]  \  }}|‘Œ	 c}}iS |D ��cg c]  \  }}|‘Œ	 c}}| j                  j                  |D ��ci c]  \  }}||d   “Œ c}}dœdœS c c}}w c c}}w c c}}w )zN custom handling for @extend_schema's injection of PolymorphicProxySerializer ÚoneOfz$ref)ÚpropertyNameÚmapping)r   Údiscriminator)Ú
isinstancer   ÚserializersÚdictÚ_get_explicit_sub_componentsÚ_get_implicit_sub_componentsÚ_has_discriminatorÚresource_type_field_name)r   Úauto_schemaÚ	directionÚsub_componentsÚ_ÚschemaÚresource_types          r   Úmap_serializerz2PolymorphicProxySerializerExtension.map_serializer   sÀ   € ä�d—k‘k×-Ñ-¬tÔ4Ø!×>Ñ>¸{ÈIÓV‰Nà!×>Ñ>¸{ÈIÓVˆNà×&Ñ&Ô(Ø°n×E©¨¨FšfÓEÐFÐFð 3A×A¡Y Q¨š&ÓAà$(§K¡K×$HÑ$HØ[i×jÑBWÀ-ÐQW ¨v°f©~Ñ =Ójñ"ñð ùó Fùó Bùó  ks   Á B7Á6B=ÂC
c                 óø  — g }| j                   j                  D ]˜  }| j                  |«      }| j                  |||«      \  }}|sŒ-| j	                  «       s|j                  d |f«       ŒQ	 |j                  | j                   j                     }|j                  d «      }|j                  ||f«       Œš |S #  t        d|› d| j                   j                  › d| j                   j                  › d�«       |}Y ŒZxY w)Nzsub-serializer z of z' must contain the discriminator field "zO". defaulting to sub-serializer name, but schema will likely not match the API.)r   r   Ú_prep_serializerÚ_process_serializerr   ÚappendÚfieldsr    Úto_representationr   r   )	r   r!   r"   r#   Úsub_serializerÚresolved_nameÚresolved_schemaÚdiscriminator_fieldr&   s	            r   r   z@PolymorphicProxySerializerExtension._get_implicit_sub_components   s  € ØˆØ"Ÿk™k×5Ñ5ò 	HˆNØ!×2Ñ2°>ÓBˆNØ/3×/GÑ/GÈÐUcÐenÓ/oÑ,ˆ]˜OÙ"Øà×*Ñ*Ô,Ø×%Ñ% t¨_Ð&=Õ>ð	2Ø*8×*?Ñ*?ÀÇÁ×@dÑ@dÑ*eÐ'Ø$7×$IÑ$IÈ$Ó$O�Mð ×%Ñ% }°oÐ&FÕGð'	Hð* Ðøð2ÜØ)¨-¨¸¸T¿[¹[×=WÑ=WÐ<Xð YAØAEÇÁ×AeÑAeÐ@fð ggðhôð
 %2’Mús   Á+4B6Â6AC9c                 óÜ   — g }| j                   j                  j                  «       D ]B  \  }}| j                  |«      }| j	                  |||«      \  }}|sŒ0|j                  ||f«       ŒD |S r   )r   r   Úitemsr)   r*   r+   )r   r!   r"   r#   r&   r.   r$   r0   s           r   r   z@PolymorphicProxySerializerExtension._get_explicit_sub_components8   sx   € ØˆØ-1¯[©[×-DÑ-D×-JÑ-JÓ-Lò 	HÑ)ˆM˜>Ø!×2Ñ2°>ÓBˆNØ#'×#;Ñ#;¸KÈÐYbÓ#cÑ ˆQ�ÚØ×%Ñ% }°oÐ&FÕGð		Hð Ðr   c                 ó2   — | j                   j                  d uS r   )r   r    r   s    r   r   z6PolymorphicProxySerializerExtension._has_discriminatorB   s   € Ø�{‰{×3Ñ3¸4Ð?Ð?r   c                 óR   — t        |«      }| j                  j                  |_        |S r   )r   r   Úpartial)r   Ú
serializers     r   r)   z4PolymorphicProxySerializerExtension._prep_serializerE   s$   € Ü# JÓ/ˆ
Ø!Ÿ[™[×0Ñ0ˆ
ÔØÐr   c                 ó6  — t        |«      rJ| j                  «       s| j                  j                  durt	        d«       y|j                  ||«      }d |fS t        |«      r.|j                  ||«      }|r|j                  |j                  fS dS t        d«       y)NFzñTo control sub-serializer's "many" attribute, following usage pattern is necessary: PolymorphicProxySerializer(serializers=[...], resource_type_field_name=None, many=False). Ignoring serializer as it is not processable in this configuration.)NNzKPolymorphicProxySerializer's serializer argument contained unknown objects.)r   r   r   Ú_manyr   Ú_unwrap_list_serializerr   Úresolve_serializerÚnameÚrefr   )r   r!   r7   r"   r%   Úresolveds         r   r*   z7PolymorphicProxySerializerExtension._process_serializerJ   s–   € Ü˜jÔ)Ø×&Ñ&Ô(¨D¯K©K×,=Ñ,=ÀUÑ,JÜðgôð
 "Ø ×8Ñ8¸ÀYÓOˆFØ˜�<ÐÜ˜:Ô&Ø"×5Ñ5°jÀ)ÓLˆHÙ4<�H—M‘M 8§<¡<Ð0ÐNÀ,ÐNäÐ_Ô`Ør   N)Ú__name__Ú
__module__Ú__qualname__Útarget_classÚpriorityr   r'   r   r   r   r)   r*   © r   r   r
   r
      s0   „ ØE€LØ€Hò*òò$ò2ò@òó
r   r
   N)
Údrf_spectacular.drainager   r   Údrf_spectacular.extensionsr   Údrf_spectacular.plumbingr   r   r   r
   rD   r   r   ú<module>rH      s    ðß 0Ý Aß VÑ VôTÐ*Dõ Tr   