Ë
    ûûàgæ  ã                   ó~   — d Z ddlmZ ddlmZ ddlmZ ddlmZm	Z	 ddl
mZ ddlmZ  G d„ d	«      Z G d
„ de«      Zy)aL  
The metadata API is used to allow customization of how `OPTIONS` requests
are handled. We currently provide a single default implementation that returns
some fairly ad-hoc information about the view.

Future implementations might use JSON schema or other definitions in order
to return this information in a more standardized way.
é    )ÚPermissionDenied)ÚHttp404)Ú	force_str)Ú
exceptionsÚserializers)Úclone_request)ÚClassLookupDictc                   ó   — e Zd Zd„ Zy)ÚBaseMetadatac                 ó   — t        d«      ‚)zx
        Return a dictionary of metadata about the view.
        Used to return responses for OPTIONS requests.
        z).determine_metadata() must be overridden.)ÚNotImplementedError)ÚselfÚrequestÚviews      úU/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/rest_framework/metadata.pyÚdetermine_metadatazBaseMetadata.determine_metadata   s   € ô
 "Ð"MÓNÐNó    N)Ú__name__Ú
__module__Ú__qualname__r   © r   r   r   r      s   „ óOr   r   c                   ón  — e Zd ZdZ ei ej                  d“ej                  d“ej                  d“ej                  d“ej                  d“ej                  d“ej                  d“ej                  d“ej                  d	“ej                  d
“ej                   d“ej"                  d“ej$                  d“ej&                  d“ej(                  d“ej*                  d“ej,                  d“ej.                  dej0                  dej2                  dej4                  dej6                  di¥«      Zd„ Zd„ Zd„ Zd„ Z y)ÚSimpleMetadatazÑ
    This is the default metadata implementation.
    It returns an ad-hoc set of information about the view.
    There are not any formalized standards for `OPTIONS` responses
    for us to base this on.
    ÚfieldÚbooleanÚstringÚurlÚemailÚregexÚslugÚintegerÚfloatÚdecimalÚdateÚdatetimeÚtimeÚdurationÚchoicezmultiple choicezfile uploadzimage uploadÚlistznested objectc                 ó2  — |j                  «       |j                  «       |j                  D �cg c]  }|j                  ‘Œ c}|j                  D �cg c]  }|j                  ‘Œ c}dœ}t        |d«      r| j                  ||«      }|r||d<   |S c c}w c c}w )N)ÚnameÚdescriptionÚrendersÚparsesÚget_serializerÚactions)Úget_view_nameÚget_view_descriptionÚrenderer_classesÚ
media_typeÚparser_classesÚhasattrÚdetermine_actions)r   r   r   ÚrendererÚparserÚmetadatar0   s          r   r   z!SimpleMetadata.determine_metadata;   s�   € à×&Ñ&Ó(Ø×4Ñ4Ó6Ø<@×<QÑ<QÖR°˜×+Ó+ÒRØ7;×7JÑ7JÖK¨V�v×(Ó(ÒKñ	
ˆô �4Ð)Ô*Ø×,Ñ,¨W°dÓ;ˆGÙØ&-�˜Ñ#Øˆùò SùÚKs   ­BÁB
c                 ó²  — i }ddht        |j                  «      z  D ]‡  }t        ||«      |_        	 t	        |d«      r|j                  |j                  «       |dk(  rt	        |d«      r|j                  «        |j                  «       }| j                  |«      ||<   ||_        Œ‰ |S # t        j                  t        t        f$ r Y Œ+w xY w# ||_        w xY w)zŽ
        For generic class based views we return information about
        the fields that are accepted for 'PUT' and 'POST' methods.
        ÚPUTÚPOSTÚcheck_permissionsÚ
get_object)ÚsetÚallowed_methodsr   r   r6   r>   r?   r/   Úget_serializer_infor   ÚAPIExceptionr   r   )r   r   r   r0   ÚmethodÚ
serializers         r   r7   z SimpleMetadata.determine_actionsH   sÔ   € ð
 ˆØ˜f�o¬¨D×,@Ñ,@Ó(AÑAò 	'ˆFÜ(¨°&Ó9ˆDŒLð'ä˜4Ð!4Ô5Ø×*Ñ*¨4¯<©<Ô8à˜U’?¤w¨t°\Ô'BØ—O‘OÔ%ð "×0Ñ0Ó2�
Ø"&×":Ñ":¸:Ó"F�˜‘à&�•ð#	'ð& ˆøô ×+Ñ+Ô-=¼wÐGò Ùðûð  '�•ús*   ²AB)Á:$CÂ)C
ÃCÃ	C
Ã
CÃ	Cc                 óì   — t        |d«      r|j                  }|j                  j                  «       D ��ci c]1  \  }}t	        |t
        j                  «      s|| j                  |«      “Œ3 c}}S c c}}w )zn
        Given an instance of a serializer, return a dictionary of metadata
        about its fields.
        Úchild)r6   rG   ÚfieldsÚitemsÚ
isinstancer   ÚHiddenFieldÚget_field_info)r   rE   Ú
field_namer   s       r   rB   z"SimpleMetadata.get_serializer_infoc   sp   € ô
 �:˜wÔ'ð $×)Ñ)ˆJð &0×%6Ñ%6×%<Ñ%<Ó%>÷
á!�
˜EÜ˜e¤[×%<Ñ%<Ô=ð ˜×+Ñ+¨EÓ2Ñ2ó
ð 	
ùó 
s   ¶6A0c           	      óR  — | j                   |   t        |dd«      dœ}g d¢}|D ](  }t        ||d«      }|€Œ|dk7  sŒt        |d¬«      ||<   Œ* t        |d	d«      r| j                  |j                  «      |d	<   n!t        |d
d«      r| j                  |«      |d<   |j                  d«      stt        |t        j                  t        j                  f«      sJt        |d«      r>|j                  j                  «       D ��cg c]  \  }}|t        |d¬«      dœ‘Œ c}}|d<   |S c c}}w )zl
        Given an instance of a serializer field, return a dictionary
        of metadata about it.
        ÚrequiredF)ÚtyperO   )	Ú	read_onlyÚlabelÚ	help_textÚ
min_lengthÚ
max_lengthÚ	min_valueÚ	max_valueÚ
max_digitsÚdecimal_placesNÚ T)Ústrings_onlyrG   rH   ÚchildrenrQ   Úchoices)ÚvalueÚdisplay_name)Úlabel_lookupÚgetattrr   rL   rG   rB   ÚgetrJ   r   ÚRelatedFieldÚManyRelatedFieldr6   r]   rI   )r   r   Ú
field_infoÚattrsÚattrr^   Úchoice_valueÚchoice_names           r   rL   zSimpleMetadata.get_field_infor   s1  € ð ×%Ñ% eÑ,Ü  z°5Ó9ñ
ˆ
ò

ˆð ò 	GˆDÜ˜E 4¨Ó.ˆEØÑ  U¨b£[Ü#,¨UÀÔ#F�
˜4Ò ð	Gô
 �5˜' 4Ô(Ø"&×"5Ñ"5°e·k±kÓ"BˆJ�wÒÜ�U˜H dÔ+Ø%)×%=Ñ%=¸eÓ%DˆJ�zÑ"à—‘˜{Ô+Ü˜5¤;×#;Ñ#;¼[×=YÑ=YÐ"ZÔ[Ü˜˜yÔ)ð 27·±×1DÑ1DÓ1F÷%ñ
 .�L +ð *Ü$-¨kÈÔ$Móó%ˆJ�yÑ!ð Ðùó%s   Ä D#N)!r   r   r   Ú__doc__r	   r   ÚFieldÚBooleanFieldÚ	CharFieldÚ	UUIDFieldÚURLFieldÚ
EmailFieldÚ
RegexFieldÚ	SlugFieldÚIntegerFieldÚ
FloatFieldÚDecimalFieldÚ	DateFieldÚDateTimeFieldÚ	TimeFieldÚDurationFieldÚChoiceFieldÚMultipleChoiceFieldÚ	FileFieldÚ
ImageFieldÚ	ListFieldÚ	DictFieldÚ
Serializerr`   r   r7   rB   rL   r   r   r   r   r      s™  „ ññ #ð $Ø×Ñ˜7ð$à× Ñ  )ð$ð 	×Ñ˜xð$ð 	×Ñ˜xð	$ð
 	×Ñ˜eð$ð 	×Ñ ð$ð 	×Ñ ð$ð 	×Ñ˜vð$ð 	× Ñ  )ð$ð 	×Ñ ð$ð 	× Ñ  )ð$ð 	×Ñ˜vð$ð 	×!Ñ! :ð$ð 	×Ñ˜vð$ð 	×!Ñ! :ð$ð  	×Ñ ð!$ð" 	×'Ñ'Ð):ð#$ð$ 	×Ñ˜}Ø×Ñ Ø×Ñ˜vØ×Ñ˜Ø×Ñ ñ-$ó €Lò2òò6
ó&r   r   N)rj   Údjango.core.exceptionsr   Údjango.httpr   Údjango.utils.encodingr   Úrest_frameworkr   r   Úrest_framework.requestr   Ú"rest_framework.utils.field_mappingr	   r   r   r   r   r   ú<module>r‡      s8   ðñõ 4Ý Ý +ç 2Ý 0Ý >÷Oñ Oô}�\õ }r   