Ë
    ûûàgbj  ã                   ó  — d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlm	Z	m
Z
mZmZmZmZmZmZ d dlmZ d dlmZ d dlmZmZmZmZ d d	lmZmZ d d
lmZmZ d dl m!Z! ddl"m#Z# ddl$m%Z% ddl&m'Z'm(Z(  G d„ de#«      Z) G d„ de%«      Z*y)é    N)ÚDecimal)Ú
attrgetter)Úurljoin)ÚDecimalValidatorÚEmailValidatorÚMaxLengthValidatorÚMaxValueValidatorÚMinLengthValidatorÚMinValueValidatorÚRegexValidatorÚURLValidator)Úmodels)Ú	force_str)ÚRemovedInDRF316WarningÚ
exceptionsÚ	renderersÚserializers)Ú
inflectionÚuritemplate)Ú_UnvalidatedFieldÚempty)Úapi_settingsé   )ÚBaseSchemaGenerator)ÚViewInspector)Úget_pk_descriptionÚis_list_viewc                   ó    — e Zd Zd„ Zd„ Zdd„Zy)ÚSchemaGeneratorc                 ó~   — | j                   xs d| j                  xs ddœ}| j                  �| j                  |d<   |S )NÚ )ÚtitleÚversionÚdescription)r"   r#   r$   )ÚselfÚinfos     ú\/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/rest_framework/schemas/openapi.pyÚget_infozSchemaGenerator.get_info   sF   € ð —Z‘ZÒ% 2Ø—|‘|Ò) rñ
ˆð
 ×ÑÐ'Ø"&×"2Ñ"2ˆD�Ñàˆó    c                 óØ   — i }|D ]c  }||   D ]Y  }d||   |   vrŒ||   |   d   }||v r5t        j                  dj                  ||   d   ||   d   |||¬«      «       ||dœ||<   Œ[ Œe y )NÚoperationIdzîYou have a duplicated operationId in your OpenAPI schema: {operation_id}
	Route: {route1}, Method: {method1}
	Route: {route2}, Method: {method2}
	An operationId has to be unique across your schema. Your schema may not work in other tools.ÚrouteÚmethod)Úroute1Úmethod1Úroute2Úmethod2Úoperation_id)r,   r-   )ÚwarningsÚwarnÚformat)r%   ÚpathsÚidsr,   r-   r2   s         r'   Úcheck_duplicate_operation_idz,SchemaGenerator.check_duplicate_operation_id(   s²   € ØˆØò 	ˆEØ ™,ò �Ø ¨¨e©°VÑ(<Ñ<ØØ$ U™|¨FÑ3°MÑB�Ø 3Ñ&Ü—M‘Mðy÷  ™Ø#& |Ñ#4°WÑ#=Ø$'¨Ñ$5°hÑ$?Ø#(Ø$*Ø)5ð  ó ôð #Ø$ñ%��LÒ!ñ%ñ	r)   Nc                 óê  — | j                  «        i }i }| j                  |rdn|«      \  }}|D �]  \  }}}	| j                  |||	«      sŒ|	j                  j	                  ||«      }
|	j                  j                  ||«      }|j                  «       D ]7  }||vrŒ||   ||   k(  rŒt        j                  dj                  |«      «       Œ9 |j                  |«       |j                  d«      r|dd }t        | j                  xs d|«      }|j                  |i «       |
||   |j                  «       <   �Œ	 | j!                  |«       d| j#                  «       |dœ}t%        |«      dkD  rd|i|d	<   |S )
z,
        Generate a OpenAPI schema.
        NzASchema component "{}" has been overridden with a different value.ú/r   z3.0.2)Úopenapir&   r6   r   ÚschemasÚ
components)Ú_initialise_endpointsÚ_get_paths_and_endpointsÚhas_view_permissionsÚschemaÚget_operationÚget_componentsÚkeysr3   r4   r5   ÚupdateÚ
startswithr   ÚurlÚ
setdefaultÚlowerr8   r(   Úlen)r%   ÚrequestÚpublicÚcomponents_schemasr6   Ú_Úview_endpointsÚpathr-   ÚviewÚ	operationr=   ÚkrA   s                 r'   Ú
get_schemazSchemaGenerator.get_schemaB   s�  € ð 	×"Ñ"Ô$ØÐð ˆØ ×9Ñ9Á&¹$ÈgÓVÑˆˆ>Ø"0ó 	4ÑˆD�&˜$Ø×,Ñ,¨T°6¸4Ô@ØàŸ™×1Ñ1°$¸Ó?ˆIØŸ™×3Ñ3°D¸&ÓAˆJØ—_‘_Ó&ò m�ØÐ.Ñ.ØØ% aÑ(¨J°q©MÒ9ØÜ—‘Ða×hÑhÐijÓkÕlðmð ×%Ñ% jÔ1ð �‰˜sÔ#Ø˜A˜B�x�Ü˜4Ÿ8™8š? s¨DÓ1ˆDà×Ñ˜T 2Ô&Ø*3ˆE�$‰K˜Ÿ™›Ó'ð+	4ð. 	×)Ñ)¨%Ô0ð Ø—M‘M“OØñ
ˆô Ð!Ó" QÒ&àÐ-ð$ˆF�<Ñ ð ˆr)   )NF)Ú__name__Ú
__module__Ú__qualname__r(   r8   rT   © r)   r'   r   r      s   „ ò
òô4/r)   r   c                   óÚ   ‡ — e Zd Zd#ˆ fd„	Zg Zg ZddddddœZd„ Zd	„ Zd
„ Z	d„ Z
d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd „ Zd!„ Z d"„ Z!ˆ xZ"S )$Ú
AutoSchemac                 óŠ   •— |rt        d„ |D «       «      st        d«      ‚|| _        || _        || _        t
        ‰| �  «        y)a  
        :param operation_id_base: user-defined name in operationId. If empty, it will be deducted from the Model/Serializer/View name.
        :param component_name: user-defined component's name. If empty, it will be deducted from the Serializer's class name.
        c              3   ó<   K  — | ]  }t        |t        «      –— Œ y ­w©N©Ú
isinstanceÚstr)Ú.0Útags     r'   ú	<genexpr>z&AutoSchema.__init__.<locals>.<genexpr>}   s   è ø€ ÒA°SœJ s¬C×0ÑAùó   ‚z'tags must be a list or tuple of string.N)ÚallÚ
ValueErrorÚ_tagsÚoperation_id_baseÚcomponent_nameÚsuperÚ__init__)r%   Útagsrh   ri   Ú	__class__s       €r'   rk   zAutoSchema.__init__x   sC   ø€ ñ
 œÑA¸DÔAÔAÜÐFÓGÐGØˆŒ
Ø!2ˆÔØ,ˆÔÜ‰ÑÕr)   ÚretrieveÚcreaterE   ÚpartialUpdateÚdestroy)ÚgetÚpostÚputÚpatchÚdeletec                 óp  — i }| j                  ||«      |d<   | j                  ||«      |d<   g }|| j                  ||«      z  }|| j                  ||«      z  }|| j	                  ||«      z  }||d<   | j                  ||«      }|r||d<   | j                  ||«      |d<   | j                  ||«      |d<   |S )Nr+   r$   Ú
parametersÚrequestBodyÚ	responsesrl   )Úget_operation_idÚget_descriptionÚget_path_parametersÚget_pagination_parametersÚget_filter_parametersÚget_request_bodyÚget_responsesÚget_tags)r%   rP   r-   rR   rx   Úrequest_bodys         r'   rB   zAutoSchema.get_operation�   sÚ   € Øˆ	à#'×#8Ñ#8¸¸vÓ#Fˆ	�-Ñ Ø#'×#7Ñ#7¸¸fÓ#Eˆ	�-Ñ àˆ
Ø�d×.Ñ.¨t°VÓ<Ñ<ˆ
Ø�d×4Ñ4°T¸6ÓBÑBˆ
Ø�d×0Ñ0°°vÓ>Ñ>ˆ
Ø",ˆ	�,Ñà×,Ñ,¨T°6Ó:ˆÙØ'3ˆI�mÑ$Ø!%×!3Ñ!3°D¸&Ó!Aˆ	�+ÑØ ŸM™M¨$°Ó7ˆ	�&ÑàÐr)   c                 ó4  — | j                   �| j                   S |j                  j                  }t        j                  dt        j
                  «      }|j                  d|«      }|dk(  r.t        dj                  |j                  j                  «      «      ‚|S )z¡
        Compute the component's name from the serializer.
        Raise an exception if the serializer's class name is "Serializer" (case-insensitive).
        Ú
serializerr!   z�"{}" is an invalid class name for schema generation. Serializer's class name should be unique and explicit. e.g. "ItemSerializer")	ri   rm   rU   ÚreÚcompileÚ
IGNORECASEÚsubÚ	Exceptionr5   )r%   r…   ri   Úpatterns       r'   Úget_component_namezAutoSchema.get_component_name£   sŒ   € ð
 ×ÑÐ*Ø×&Ñ&Ð&ð $×-Ñ-×6Ñ6ˆä—*‘*˜\¬2¯=©=Ó9ˆØ Ÿ™ R¨Ó8ˆà˜RÒÜð`ç‘˜
×,Ñ,×5Ñ5Ó6óð ð Ðr)   c                 ó´  — |j                  «       dk(  ri S | j                  ||«      }| j                  ||«      }i }t        |t        j
                  «      r4| j                  |«      }| j                  |«      }|j                  ||«       t        |t        j
                  «      r4| j                  |«      }| j                  |«      }|j                  ||«       |S )zN
        Return components with their properties from the serializer.
        rv   )	rI   Úget_request_serializerÚget_response_serializerr_   r   Ú
SerializerrŒ   Úmap_serializerrH   )r%   rP   r-   Úrequest_serializerÚresponse_serializerr=   ri   Úcontents           r'   rC   zAutoSchema.get_componentsº   sÎ   € ð
 �<‰<‹>˜XÒ%ØˆIà!×8Ñ8¸¸vÓFÐØ"×:Ñ:¸4ÀÓHÐàˆ
äÐ(¬+×*@Ñ*@ÔAØ!×4Ñ4Ð5GÓHˆNØ×)Ñ)Ð*<Ó=ˆGØ×!Ñ! .°'Ô:äÐ)¬;×+AÑ+AÔBØ!×4Ñ4Ð5HÓIˆNØ×)Ñ)Ð*=Ó>ˆGØ×!Ñ! .°'Ô:àÐr)   c                 óf   — |j                  d«      }|d   dj                  d„ |dd  D «       «      z   S )NrN   r   r!   c              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wr]   )r"   )ra   Úxs     r'   rc   z,AutoSchema._to_camel_case.<locals>.<genexpr>×   s   è ø€ Ò&I°Q q§w¡w§yÑ&Iùrd   r   )ÚsplitÚjoin)r%   Ú	snake_strr=   s      r'   Ú_to_camel_casezAutoSchema._to_camel_caseÓ   s6   € Ø—_‘_ SÓ)ˆ
ð ˜!‰}˜rŸw™wÑ&I¸*ÀQÀR¸.Ô&IÓIÑIÐIr)   c                 ó|  — t        t        | j                  dd«      dd«      }| j                  �| j                  }nÙ|�|j                  }nÊ| j	                  ||«      �=| j	                  ||«      j
                  j                  }|j                  d«      r�|dd }n{| j                  j
                  j                  }|j                  d«      r|dd }n|j                  d«      r|dd	 }|j                  |j                  «       «      r|dt        |«        }|d
k(  r"t        sJ d«       ‚t        j                  |«      }|S )za
        Compute the base part for operation ID from the model, serializer or view name.
        ÚquerysetNÚmodelr�   iöÿÿÿÚAPIViewiùÿÿÿÚViewéüÿÿÿÚlistz:`inflection` must be installed for OpenAPI schema support.)ÚgetattrrQ   rh   rU   Úget_serializerrm   Úendswithr"   rJ   r   Ú	pluralize)r%   rP   r-   Úactionrž   Únames         r'   Úget_operation_id_basez AutoSchema.get_operation_id_baseÙ   s'  € ô œ §	¡	¨:°tÓ<¸gÀtÓLˆà×!Ñ!Ð-Ø×)Ñ)‰Dð ÐØ—>‘>‰Dð × Ñ   vÓ.Ð:Ø×&Ñ& t¨VÓ4×>Ñ>×GÑGˆDØ�}‰}˜\Ô*Ø˜D˜S�z‘ð —9‘9×&Ñ&×/Ñ/ˆDØ�}‰}˜YÔ'Ø˜C˜R�y‘Ø—‘˜vÔ&Ø˜C˜R�y�ð �}‰}˜VŸ\™\›^Ô,Ø˜Mœc &›k˜\Ð*�à�VÒÝÐ[Ð[Ó[�:Ü×'Ñ'¨Ó-ˆDàˆr)   c                 ó*  — t        | j                  d|j                  «       «      }t        ||| j                  «      rd}n=|| j                  vr| j                  |«      }n| j                  |j                  «          }| j                  |||«      }||z   S )z^
        Compute an operation ID from the view type and get_operation_id_base method.
        r§   r¢   )r£   rQ   rI   r   Úmethod_mappingr›   r©   )r%   rP   r-   Úmethod_namer§   r¨   s         r'   r{   zAutoSchema.get_operation_idÿ   sƒ   € ô ˜dŸi™i¨°6·<±<³>ÓBˆÜ˜˜f d§i¡iÔ0Ø‰FØ × 3Ñ 3Ñ3Ø×(Ñ(¨Ó5‰Fà×(Ñ(¨¯©«Ñ8ˆFà×)Ñ)¨$°¸Ó?ˆà˜‰}Ðr)   c                 ó°  — t         sJ d«       ‚t        t        | j                  dd«      dd«      }g }t        j                  |«      D ]{  }d}|�Z	 |j                  j                  |«      }|�"|j                  rt        |j                  «      }n|�|j                  rt        ||«      }|dd|dd	id
œ}|j                  |«       Œ} |S # t        $ r d}Y Œjw xY w)zL
        Return a list of parameters from templated path variables.
        z;`uritemplate` must be installed for OpenAPI schema support.r�   Nrž   r!   rP   TÚtypeÚstring)r¨   ÚinÚrequiredr$   rA   )r   r£   rQ   Ú	variablesÚ_metaÚ	get_fieldrŠ   Ú	help_textr   Úprimary_keyr   Úappend)	r%   rP   r-   rž   rx   Úvariabler$   Úmodel_fieldÚ	parameters	            r'   r}   zAutoSchema.get_path_parameters  s÷   € õ ÐYÐYÓYˆ{äœ §	¡	¨:°tÓ<¸gÀtÓLˆØˆ
ä#×-Ñ-¨dÓ3ò 	)ˆHØˆKØÐ ð'Ø"'§+¡+×"7Ñ"7¸Ó"A�Kð Ð*¨{×/DÒ/DÜ"+¨K×,AÑ,AÓ"B‘KØ Ð,°×1HÒ1HÜ"4°U¸KÓ"H�Kð !ØØ Ø*à˜HðñˆIð ×Ñ˜iÕ(ð/	)ð2 Ðøô' !ò 'Ø"&’Kð'ús   ÁCÃCÃCc                 ó®   — | j                  ||«      sg S g }| j                  j                  D ]%  }| |«       j                  | j                  «      z  }Œ' |S r]   )Úallows_filtersrQ   Úfilter_backendsÚget_schema_operation_parameters)r%   rP   r-   rx   Úfilter_backends        r'   r   z AutoSchema.get_filter_parameters3  sY   € Ø×"Ñ" 4¨Ô0ØˆIØˆ
Ø"Ÿi™i×7Ñ7ò 	VˆNØ™.Ó*×JÑJÈ4Ï9É9ÓUÑU‰Jð	VàÐr)   c                 ó²   — t        | j                  dd«      €yt        | j                  d«      r| j                  j                  dv S |j	                  «       dv S )zÜ
        Determine whether to include filter Fields in schema.

        Default implementation looks for ModelViewSet or GenericAPIView
        actions/methods that cause filtering on the default implementation.
        r½   NFr§   )r¢   rn   rE   Úpartial_updaterq   )rr   rt   ru   rv   )r£   rQ   Úhasattrr§   rI   ©r%   rP   r-   s      r'   r¼   zAutoSchema.allows_filters;  sQ   € ô �4—9‘9Ð/°Ó6Ð>ØÜ�4—9‘9˜hÔ'Ø—9‘9×#Ñ#Ð'bÐbÐbØ�|‰|‹~Ð!BÐBÐBr)   c                 ó‚   — | j                   }t        |||«      sg S | j                  «       }|sg S |j                  |«      S r]   )rQ   r   Úget_paginatorr¾   )r%   rP   r-   rQ   Ú	paginators        r'   r~   z$AutoSchema.get_pagination_parametersH  sC   € Ø�y‰yˆä˜D &¨$Ô/ØˆIà×&Ñ&Ó(ˆ	ÙØˆIà×8Ñ8¸Ó>Ð>r)   c                 ó  — t        t        j                  |j                  «      «      }t	        d„ |D «       «      rd}nAt	        d„ |D «       «      rd}n,t	        d„ |D «       «      rd}nt	        d„ |D «       «      rd}nd }d	|i}|r||d
<   |S )Nc              3   ó<   K  — | ]  }t        |t        «      –— Œ y ­wr]   )r_   Úbool©ra   Úchoices     r'   rc   z-AutoSchema.map_choicefield.<locals>.<genexpr>V  s   è ø€ Ò>¨FŒz˜&¤$×'Ñ>ùrd   Úbooleanc              3   ó<   K  — | ]  }t        |t        «      –— Œ y ­wr]   )r_   ÚintrÊ   s     r'   rc   z-AutoSchema.map_choicefield.<locals>.<genexpr>X  ó   è ø€ Ò?¨V”˜F¤C×(Ñ?ùrd   Úintegerc              3   óR   K  — | ]  }t        |t        t        t        f«      –— Œ! y ­wr]   )r_   rÎ   Úfloatr   rÊ   s     r'   rc   z-AutoSchema.map_choicefield.<locals>.<genexpr>Z  s   è ø€ ÒQ¸v”˜F¤S¬%´Ð$9×:ÑQùs   ‚%'Únumberc              3   ó<   K  — | ]  }t        |t        «      –— Œ y ­wr]   r^   rÊ   s     r'   rc   z-AutoSchema.map_choicefield.<locals>.<genexpr>]  rÏ   rd   r¯   Úenumr®   )r¢   ÚdictÚfromkeysÚchoicesre   )r%   ÚfieldrØ   r®   Úmappings        r'   Úmap_choicefieldzAutoSchema.map_choicefieldT  s‹   € Ü”t—}‘} U§]¡]Ó3Ó4ˆÜÑ>°gÔ>Ô>Ø‰DÜÑ?°wÔ?Ô?Ø‰DÜÑQÈÔQÔQà‰DÜÑ?°wÔ?Ô?Ø‰DàˆDð
 �Gð
ˆñ Ø"ˆG�F‰OØˆr)   c                 ó0	  — t        |t        j                  «      rd| j                  |j                  «      dœS t        |t        j
                  «      r| j                  |«      }d|d<   |S t        |t        j                  «      rd| j                  |j                  «      dœS t        |t        j                  «      rvt        |dd«      r| j                  |j                  ¬«      S t        |j                  dd «      }|�4|j                  j                  }t        |t        j                   «      rdd	iS t        |t        j"                  «      rd| j%                  |«      dœS t        |t        j&                  «      r| j%                  |«      S t        |t        j(                  «      r?di dœ}t        |j                  t*        «      s| j                  |j                  «      |d
<   |S t        |t        j,                  «      rdddœS t        |t        j.                  «      rdddœS t        |t        j0                  «      rdddœS t        |t        j2                  «      rdddœS t        |t        j4                  «      rdddœS t        |t        j6                  «      r$ddi}|j8                  dk7  r|j8                  |d<   |S t        |t        j:                  «      rœt        |dt<        j>                  «      rdddœ}nddi}|j@                  r$tC        d|j@                  dz
  dz  z   dz   «      |d<   |jD                  r'tG        |jD                  dz  «      dz   |d<   |d    |d<   | jI                  ||«       |S t        |t        jJ                  «      rddi}| jI                  ||«       |S t        |t        jL                  «      rYdd	i}| jI                  ||«       tG        |jO                  dd«      «      d kD  stG        |jO                  dd«      «      d kD  rd!|d<   |S t        |t        jP                  «      rdd"dœS t        jR                  d#t        jT                  dt        jV                  dt        jX                  di}d|jO                  |jZ                  d«      iS )$NÚarray©r®   ÚitemsÚobjectr®   Úpk_fieldF)rÙ   rž   rÐ   rß   r¯   Údate)r®   r5   z	date-timeÚemailÚuriÚuuidÚbothr5   Úcoerce_to_stringÚdecimalrÓ   ú.r   Ú0Ú1Ú
multipleOfÚ9ÚmaximumÚminimumr   iÿÿÿÚint64ÚbinaryrÌ   ).r_   r   ÚListSerializerr‘   Úchildr�   ÚManyRelatedFieldÚ	map_fieldÚchild_relationÚPrimaryKeyRelatedFieldr£   rá   r�   r³   Úpkr   Ú	AutoFieldÚMultipleChoiceFieldrÛ   ÚChoiceFieldÚ	ListFieldr   Ú	DateFieldÚDateTimeFieldÚ
EmailFieldÚURLFieldÚ	UUIDFieldÚIPAddressFieldÚprotocolÚDecimalFieldr   ÚCOERCE_DECIMAL_TO_STRINGÚdecimal_placesrÒ   Úmax_whole_digitsrÎ   Ú_map_min_maxÚ
FloatFieldÚIntegerFieldrr   Ú	FileFieldÚBooleanFieldÚ	JSONFieldÚ	DictFieldÚHStoreFieldrm   )r%   rÙ   Údatarž   r¹   rÚ   r”   ÚFIELD_CLASS_SCHEMA_TYPEs           r'   rõ   zAutoSchema.map_fieldp  se  € ô �eœ[×7Ñ7Ô8àØ×,Ñ,¨U¯[©[Ó9ñð ô �eœ[×3Ñ3Ô4Ø×&Ñ& uÓ-ˆDØ#ˆD�‰LØˆKô �eœ[×9Ñ9Ô:àØŸ™¨×(<Ñ(<Ó=ñð ô �eœ[×?Ñ?Ô@Ü�u˜j¨%Ô0Ø—~‘~¨E¯N©N�~Ó;Ð;Ü˜EŸN™N¨G°TÓ:ˆEØÐ Ø#Ÿk™kŸn™n�Ü˜k¬6×+;Ñ+;Ô<Ø" IÐ.Ð.ô �eœ[×<Ñ<Ô=àØ×-Ñ-¨eÓ4ñð ô
 �eœ[×4Ñ4Ô5Ø×'Ñ'¨Ó.Ð.ô �eœ[×2Ñ2Ô3àØñˆGô ˜eŸk™kÔ+<Ô=Ø#'§>¡>°%·+±+Ó#>�˜Ñ ØˆNô �eœ[×2Ñ2Ô3à Ø ñð ô
 �eœ[×6Ñ6Ô7à Ø%ñð ô �eœ[×3Ñ3Ô4à Ø!ñð ô
 �eœ[×1Ñ1Ô2à Øñð ô
 �eœ[×2Ñ2Ô3à Ø ñð ô
 �eœ[×7Ñ7Ô8à˜ðˆGð �~‰~ Ò'Ø$)§N¡N�˜Ñ!ØˆNä�eœ[×5Ñ5Ô6Ü�uÐ0´,×2WÑ2WÔXà$Ø'ñ‘ð ˜Hð�ð ×#Ò#Ü(-¨c°U×5IÑ5IÈAÑ5MÐQTÑ4TÑ.TÐWZÑ.ZÓ([�˜Ñ%Ø×%Ò%Ü%(¨×)?Ñ)?À#Ñ)EÓ%FÈÑ%J�˜	Ñ"Ø&-¨iÑ&8Ð%8�˜	Ñ"Ø×Ñ˜e WÔ-ØˆNä�eœ[×3Ñ3Ô4à˜ðˆGð ×Ñ˜e WÔ-ØˆNä�eœ[×5Ñ5Ô6à˜	ðˆGð ×Ñ˜e WÔ-ä�7—;‘;˜y¨!Ó,Ó-°
Ò:¼cÀ'Ç+Á+ÈiÐYZÓB[Ó>\Ð_iÒ>iØ$+�˜Ñ!ØˆNä�eœ[×2Ñ2Ô3à Ø"ñð ô ×$Ñ$ iÜ×!Ñ! 8Ü×!Ñ! 8Ü×#Ñ# Xð	#
Ðð Ð/×3Ñ3°E·O±OÀXÓNÐOÐOr)   c                 ór   — |j                   r|j                   |d<   |j                  r|j                  |d<   y y )Nrî   rï   )Ú	max_valueÚ	min_value)r%   rÙ   r”   s      r'   r  zAutoSchema._map_min_max   s1   € Ø�?Š?Ø!&§¡ˆG�IÑØ�?Š?Ø!&§¡ˆG�IÒð r)   c                 ó°  — g }i }|j                   j                  «       D �]'  }t        |t        j                  «      rŒ|j
                  r,|j                  s |j                  | j                  |«      «       | j                  |«      }|j                  rd|d<   |j                  rd|d<   |j                  rd|d<   |j                  �7|j                  t        k7  r$t        |j                  «      s|j                  |d<   |j                   rt#        |j                   «      |d<   | j%                  ||«       ||| j                  |«      <   �Œ* d|dœ}|r||d	<   |S )
NTÚreadOnlyÚ	writeOnlyÚnullableÚdefaultr$   rà   )r®   Ú
propertiesr±   )ÚfieldsÚvaluesr_   r   ÚHiddenFieldr±   Úpartialr·   Úget_field_namerõ   Ú	read_onlyÚ
write_onlyÚ
allow_nullr  r   Úcallablerµ   r`   Úmap_field_validators)r%   r…   r±   r  rÙ   rA   Úresults          r'   r‘   zAutoSchema.map_serializer  s;  € àˆØˆ
à×&Ñ&×-Ñ-Ó/ó 	<ˆEÜ˜%¤×!8Ñ!8Ô9Øà�~Š~ j×&8Ò&8Ø—‘ × 3Ñ 3°EÓ :Ô;à—^‘^ EÓ*ˆFØ�ŠØ%)��zÑ"Ø×ÒØ&*��{Ñ#Ø×ÒØ%)��zÑ"Ø�}‰}Ð(¨U¯]©]¼eÒ-CÌHÐUZ×UbÑUbÔLcØ$)§M¡M��yÑ!Ø�ŠÜ(+¨E¯O©OÓ(<��}Ñ%Ø×%Ñ% e¨VÔ4à5;ˆJ�t×*Ñ*¨5Ó1Ó2ð)	<ð. Ø$ñ
ˆñ Ø!)ˆF�:Ñàˆr)   c                 óî  — |j                   D �]å  }t        |t        «      rd|d<   t        |t        «      rd|d<   t        |t        «      r*|j
                  j                  j                  dd«      |d<   Œht        |t        «      r.d}t        |t        j                  «      rd}|j                  ||<   Œ¦t        |t        «      r.d	}t        |t        j                  «      rd
}|j                  ||<   Œät        |t        «      r|j                  |d<   �Œt        |t        «      r|j                  |d<   �Œ&t        |t        «      s�Œ8t!        |dt"        j$                  «      r�ŒU|j&                  r$t)        d|j&                  dz
  dz  z   dz   «      |d<   |j*                  s�Œ“|j*                  }|j&                  �|j&                  dkD  r||j&                  z  }t-        |dz  «      dz   |d<   |d    |d<   �Œè y)z&
        map field validators
        rã   r5   rä   z\Zz\zr‹   Ú	maxLengthÚmaxItemsÚ	minLengthÚminItemsrî   rï   rç   ré   r   rê   rë   rì   Nr   rí   )Ú
validatorsr_   r   r   r   Úregexr‹   Úreplacer   r   rü   Úlimit_valuer
   r	   r   r   r£   r   r  r  rÒ   Ú
max_digitsrÎ   )r%   rÙ   rA   ÚvÚ	attr_nameÚdigitss         r'   r$  zAutoSchema.map_field_validators*  s¼  € ð ×!Ñ!ó "	;ˆAô ˜!œ^Ô,Ø#*��xÑ Ü˜!œ\Ô*Ø#(��xÑ Ü˜!œ^Ô,ð %&§G¡G§O¡O×$;Ñ$;¸EÀ5Ó$I��yÒ!Ü˜AÔ1Ô2Ø'�	Ü˜e¤[×%:Ñ%:Ô;Ø *�IØ$%§M¡M��yÒ!Ü˜AÔ1Ô2Ø'�	Ü˜e¤[×%:Ñ%:Ô;Ø *�IØ$%§M¡M��yÒ!Ü˜AÔ0Ô1Ø$%§M¡M��yÓ!Ü˜AÔ0Ô1Ø$%§M¡M��yÓ!Ü˜AÔ/Ö0Ü Ð'9¼<×;`Ñ;`ÖaØ×#Ò#Ü+0°¸×8HÑ8HÈ1Ñ8LÐPSÑ7SÑ1SÐVYÑ1YÓ+Z�F˜<Ñ(Ø—<”<ØŸ\™\�FØ×'Ñ'Ð3¸×8HÑ8HÈ1Ò8LØ !×"2Ñ"2Ñ2˜Ü(+¨F°S©LÓ(9¸AÑ(=�F˜9Ñ%Ø)/°	Ñ):Ð(:�F˜9Ó%ñE"	;r)   c                 ó   — |j                   S )z�
        Override this method if you want to change schema field name.
        For example, convert snake_case field name to camelCase.
        )Ú
field_name)r%   rÙ   s     r'   r  zAutoSchema.get_field_nameR  s   € ð
 ×ÑÐr)   c                 óD   — t        | j                  dd «      }|r |«       S y )NÚpagination_class)r£   rQ   )r%   r6  s     r'   rÅ   zAutoSchema.get_paginatorY  s%   € Ü" 4§9¡9Ð.@À$ÓGÐÙÙ#Ó%Ð%Ør)   c                 óf   — t        t        t        d«      | j                  j                  «      «      S )NÚ
media_type)r¢   Úmapr   rQ   Úparser_classesrÃ   s      r'   Úmap_parserszAutoSchema.map_parsers_  s#   € Ü”Cœ
 <Ó0°$·)±)×2JÑ2JÓKÓLÐLr)   c                 ó¬   — g }| j                   j                  D ]8  }t        |t        j                  «      rŒ|j                  |j                  «       Œ: |S r]   )rQ   Úrenderer_classesÚ
issubclassr   ÚBrowsableAPIRendererr·   r8  )r%   rP   r-   Úmedia_typesÚrenderers        r'   Úmap_rendererszAutoSchema.map_renderersb  sO   € ØˆØŸ	™	×2Ñ2ò 	4ˆHä˜(¤I×$BÑ$BÔCØØ×Ñ˜x×2Ñ2Õ3ð		4ð
 Ðr)   c                 óü   — | j                   }t        |d«      sy 	 |j                  «       S # t        j                  $ r= t        j                  dj                  |j                  j                  ||«      «       Y y w xY w)Nr¤   zt{}.get_serializer() raised an exception during schema generation. Serializer fields will not be generated for {} {}.)
rQ   rÂ   r¤   r   ÚAPIExceptionr3   r4   r5   rm   rU   )r%   rP   r-   rQ   s       r'   r¤   zAutoSchema.get_serializerk  ss   € Ø�y‰yˆä�tÐ-Ô.Øð	Ø×&Ñ&Ó(Ð(øÜ×&Ñ&ò 	Ü�M‰Mð 1÷ "™6 $§.¡.×"9Ñ"9¸6À4ÓHôJñ ð	ús   ›+ «AA;Á:A;c                 ó&   — | j                  ||«      S )zr
        Override this method if your view uses a different serializer for
        handling request body.
        ©r¤   rÃ   s      r'   rŽ   z!AutoSchema.get_request_serializerz  ó   € ð
 ×"Ñ" 4¨Ó0Ð0r)   c                 ó&   — | j                  ||«      S )zu
        Override this method if your view uses a different serializer for
        populating response data.
        rF  rÃ   s      r'   r�   z"AutoSchema.get_response_serializer�  rG  r)   c                 óF   — ddj                  | j                  |«      «      iS )Nz$refz#/components/schemas/{})r5   rŒ   ©r%   r…   s     r'   Úget_referencezAutoSchema.get_referenceˆ  s%   € ØÐ1×8Ñ8¸×9PÑ9PÐQ[Ó9\Ó]Ð^Ð^r)   c                 ó  — |dvri S | j                  ||«      | _        | j                  ||«      }t        |t        j
                  «      si }n| j                  |«      }d| j                  D �ci c]  }|d|i“Œ	 c}iS c c}w )N)ÚPUTÚPATCHÚPOSTr”   rA   )r;  Úrequest_media_typesrŽ   r_   r   r�   rK  )r%   rP   r-   r…   Úitem_schemaÚcts         r'   r€   zAutoSchema.get_request_body‹  s–   € ØÐ1Ñ1ØˆIà#'×#3Ñ#3°D¸&Ó#AˆÔ à×0Ñ0°°vÓ>ˆ
ä˜*¤k×&<Ñ&<Ô=Ø‰Kà×,Ñ,¨ZÓ8ˆKð à×2Ñ2öàð �X˜{Ð+Ñ+òð
ð 	
ùòs   Á-A=c                 óª  — |dk(  rdddiiS | j                  ||«      | _        | j                  ||«      }t        |t        j
                  «      si }n| j                  |«      }t        ||| j                  «      r)d|dœ}| j                  «       }|r|j                  |«      }n|}|dk(  rdnd	}|| j                  D �ci c]  }|d
|i“Œ	 c}ddœiS c c}w )NÚDELETEÚ204r$   r!   rÝ   rÞ   rO  Ú201Ú200rA   )r”   r$   )rB  Úresponse_media_typesr�   r_   r   r�   rK  r   rQ   rÅ   Úget_paginated_response_schema)	r%   rP   r-   r…   rQ  Úresponse_schemarÆ   Ústatus_coderR  s	            r'   r�   zAutoSchema.get_responsesŸ  s  € Ø�XÒàØ! 2ððð ð %)×$6Ñ$6°t¸VÓ$DˆÔ!à×1Ñ1°$¸Ó?ˆ
ä˜*¤k×&<Ñ&<Ô=Ø‰Kà×,Ñ,¨ZÓ8ˆKä˜˜f d§i¡iÔ0àØ$ñˆOð ×*Ñ*Ó,ˆIÙØ"+×"IÑ"IÈ/Ó"Z‘à)ˆOØ%¨Ò/‘e°Uˆàð #×7Ñ7öàð ˜ ?Ð3Ñ3òð  "ñ	ð
ð 	
ùòs   Â=Cc                 ó¨   — | j                   r| j                   S |j                  d«      r|dd  }|j                  d«      d   j                  dd«      gS )Nr:   r   r   rN   ú-)rg   rF   r˜   r-  rÃ   s      r'   r‚   zAutoSchema.get_tagsÈ  sO   € à�:Š:Ø—:‘:Ðð
 �?‰?˜3ÔØ˜˜�8ˆDà—
‘
˜3“ Ñ"×*Ñ*¨3°Ó4Ð5Ð5r)   c                 ó\   — t        j                  dt        d¬«       | j                  |«      S )NzkMethod `_get_reference()` has been renamed to `get_reference()`. The old name will be removed in DRF v3.16.é   )Ú
stacklevel)r3   r4   r   rK  rJ  s     r'   Ú_get_referencezAutoSchema._get_referenceÕ  s+   € Ü�‰ð9ä"¨qõ	
ð
 ×!Ñ! *Ó-Ð-r)   )NNN)#rU   rV   rW   rk   rP  rX  r«   rB   rŒ   rC   r›   r©   r{   r}   r   r¼   r~   rÛ   rõ   r  r‘   r$  r  rÅ   r;  rB  r¤   rŽ   r�   rK  r€   r�   r‚   ra  Ú__classcell__)rm   s   @r'   rZ   rZ   v   sÁ   ø„ õ
ð ÐØÐð ØØØ Øñ€Nòò(ò.ò2Jò$òLò "òHòCò
?òò8NPò`1ò"òH&;òP òòMòòò1ò1ò_ò
ò('
òR6ö.r)   rZ   )+r†   r3   rè   r   Úoperatorr   Úurllib.parser   Údjango.core.validatorsr   r   r   r	   r
   r   r   r   Ú	django.dbr   Údjango.utils.encodingr   Úrest_frameworkr   r   r   r   Úrest_framework.compatr   r   Úrest_framework.fieldsr   r   Úrest_framework.settingsr   Ú
generatorsr   Ú
inspectorsr   Úutilsr   r   r   rZ   rX   r)   r'   ú<module>ro     sg   ðÛ 	Û Ý Ý Ý  ÷÷ ó õ Ý +÷ó ÷ :ß :Ý 0å +Ý %ß 3ôWÐ)ô Wôxe	.�õ e	.r)   