Ë
    ¢S9ih  ã                   ó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    ún/home/cursorai/projects/telegram-earn/backend/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 g }|D ]  \  }}||vsŒ|j                  |«       Œ || j                  j                  |D ��ci c]  \  }}||d   “Œ c}}dœdœS 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ÚappendÚresource_type_field_name)r   Úauto_schemaÚ	directionÚsub_componentsÚ_ÚschemaÚone_of_listÚresource_types           r   Úmap_serializerz2PolymorphicProxySerializerExtension.map_serializer   sÝ   € ä�d—k‘k×-Ñ-¬tÔ4Ø!×>Ñ>¸{ÈIÓV‰Nà!×>Ñ>¸{ÈIÓVˆNà×&Ñ&Ô(Ø±nÔE±n©¨¨Fšf°nÒEÐFÐFàˆKÛ+‘	��6Ø Ò,Ø×&Ñ& vÕ.ð ,ð %à$(§K¡K×$HÑ$HÙ[iÔjÑ[iÑBWÀ-ÐQW ¨v°f©~Ñ =Ð[iÒjñ"ñð ùó Fùó  ks   Á CÂ.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   r    Ú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ˆ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ð' 6ð* Ðøð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%   r1   s           r   r   z@PolymorphicProxySerializerExtension._get_explicit_sub_components<   sr   € ØˆØ-1¯[©[×-DÑ-D×-JÑ-JÖ-LÑ)ˆM˜>Ø!×2Ñ2°>ÓBˆNØ#'×#;Ñ#;¸KÈÐYbÓ#cÑ ˆQ�ÚØ×%Ñ% }°oÐ&FÕGð	 .Mð Ðr   c                 ó2   — | j                   j                  d uS r   )r   r!   r   s    r   r   z6PolymorphicProxySerializerExtension._has_discriminatorF   s   € Ø�{‰{×3Ñ3¸4Ð?Ð?r   c                 óR   — t        |«      }| j                  j                  |_        |S r   )r   r   Úpartial)r   Ú
serializers     r   r+   z4PolymorphicProxySerializerExtension._prep_serializerI   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"   r8   r#   r&   Úresolveds         r   r,   z7PolymorphicProxySerializerExtension._process_serializerN   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
   rE   r   r   Ú<module>rI      s    ðß 0Ý Aß VÑ VôXÐ*Dõ Xr   