Ë
    åï7iýh  ã                   ó  — 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 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)Ú
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     úq/home/cursorai/projects/telegram-earn/backend/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,   r1   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 ],  }||vrŒ||   ||   k(  rŒt        j                  d|› d�«       Œ. |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.
        NzSchema component "z-" has been overridden with a different value.Ú/r   z3.0.2)Úopenapir%   r5   r   ÚschemasÚ
components)Ú_initialise_endpointsÚ_get_paths_and_endpointsÚhas_view_permissionsÚschemaÚget_operationÚget_componentsÚkeysr2   r3   ÚupdateÚ
startswithr   ÚurlÚ
setdefaultÚlowerr7   r'   Úlen)r$   ÚrequestÚpublicÚcomponents_schemasr5   Ú_Úview_endpointsÚpathr,   ÚviewÚ	operationr<   Úkr@   s                 r&   Ú
get_schemazSchemaGenerator.get_schema@   s‚  € ð 	×"Ñ"Ô$ØÐð ˆØ ×9Ñ9Á&¹$ÈgÓVÑˆˆ>Û"0ÑˆD�&˜$Ø×,Ñ,¨T°6¸4Ô@ØàŸ™×1Ñ1°$¸Ó?ˆIØŸ™×3Ñ3°D¸&ÓAˆJØ—_‘_Ö&�ØÐ.Ñ.ØØ% aÑ(¨J°q©MÒ9ØÜ—‘Ð 2°1°#Ð5bÐcÕdð 'ð ×%Ñ% jÔ1ð �‰˜sÔ#Ø˜A˜B�x�Ü˜4Ÿ8™8š? s¨DÓ1ˆDà×Ñ˜T 2Ô&Ø*3ˆE�$‰K˜Ÿ™›Ò'ð+ #1ð. 	×)Ñ)¨%Ô0ð Ø—M‘M“OØñ
ˆô Ð!Ó" QÒ&àÐ-ð$ˆF�<Ñ ð ˆr(   )NF)Ú__name__Ú
__module__Ú__qualname__r'   r7   rS   © 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 ˆ 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¹D°SœJ s¬C×0¹Dùó   ‚z'tags must be a list or tuple of string.N)ÚallÚ
ValueErrorÚ_tagsÚoperation_id_baseÚcomponent_nameÚsuperÚ__init__)r$   Útagsrg   rh   Ú	__class__s       €r&   rj   zAutoSchema.__init__v   sC   ø€ ñ
 œÑA¹DÓAÔAÜÐFÓGÐGØˆŒ
Ø!2ˆÔØ,ˆÔÜ‰ÑÕr(   ÚretrieveÚcreaterD   Ú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Ú	responsesrk   )Úget_operation_idÚget_descriptionÚget_path_parametersÚget_pagination_parametersÚget_filter_parametersÚget_request_bodyÚget_responsesÚget_tags)r$   rO   r,   rQ   rw   Úrequest_bodys         r&   rA   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")	rh   rl   rT   ÚreÚcompileÚ
IGNORECASEÚsubÚ	Exceptionr4   )r$   r„   rh   Ú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.
        ru   )	rH   Úget_request_serializerÚget_response_serializerr^   r   Ú
Serializerr‹   Úmap_serializerrG   )r$   rO   r,   Úrequest_serializerÚresponse_serializerr<   rh   Úcontents           r&   rB   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 )NrM   r   r    c              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wr\   )r!   )r`   Úxs     r&   rb   z,AutoSchema._to_camel_case.<locals>.<genexpr>Õ   s   è ø€ Ð&I¹.°Q q§w¡w§y¹.ùrc   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.)ÚgetattrrP   rg   rT   Úget_serializerrl   Úendswithr!   rI   r   Ú	pluralize)r$   rO   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¢   rP   rH   r   Úmethod_mappingrš   r¨   )r$   rO   r,   Úmethod_namer¦   r§   s         r&   rz   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    rO   TÚtypeÚstring)r§   ÚinÚrequiredr#   r@   )r   r¢   rP   Ú	variablesÚ_metaÚ	get_fieldr‰   Ú	help_textr   Úprimary_keyr   Úappend)	r$   rO   r,   r�   rw   Ú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Õ(ð/ 4ð2 Ðøô' !ò 'Ø"&’Kð'ús   ÁCÃCÃCc                 ó®   — | j                  ||«      sg S g }| j                  j                  D ]%  }| |«       j                  | j                  «      z  }Œ' |S r\   )Úallows_filtersrP   Úfilter_backendsÚget_schema_operation_parameters)r$   rO   r,   rw   Úfilter_backends        r&   r~   z AutoSchema.get_filter_parameters1  sR   € Ø×"Ñ" 4¨Ô0ØˆIØˆ
Ø"Ÿi™i×7Ô7ˆNØ™.Ó*×JÑJÈ4Ï9É9ÓUÑU‰Jð 8àÐ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¡   rm   rD   Úpartial_updaterp   )rq   rs   rt   ru   )r¢   rP   Úhasattrr¦   rH   ©r$   rO   r,   s      r&   r»   zAutoSchema.allows_filters9  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\   )rP   r   Úget_paginatorr½   )r$   rO   r,   rP   Ú	paginators        r&   r}   z$AutoSchema.get_pagination_parametersF  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©r`   Úchoices     r&   rb   z-AutoSchema.map_choicefield.<locals>.<genexpr>T  s   è ø€ Ð>±g¨FŒz˜&¤$×'±gùrc   Úbooleanc              3   ó<   K  — | ]  }t        |t        «      –— Œ y ­wr\   )r^   ÚintrÉ   s     r&   rb   z-AutoSchema.map_choicefield.<locals>.<genexpr>V  ó   è ø€ Ð?±w¨V”˜F¤C×(±wùrc   Úintegerc              3   óR   K  — | ]  }t        |t        t        t        f«      –— Œ! y ­wr\   )r^   rÍ   Úfloatr   rÉ   s     r&   rb   z-AutoSchema.map_choicefield.<locals>.<genexpr>X  s   è ø€ ÐQÉ¸v”˜F¤S¬%´Ð$9×:Éùs   ‚%'Únumberc              3   ó<   K  — | ]  }t        |t        «      –— Œ y ­wr\   r]   rÉ   s     r&   rb   z-AutoSchema.map_choicefield.<locals>.<genexpr>[  rÎ   rc   r®   Úenumr­   )r¡   ÚdictÚfromkeysÚchoicesrd   )r$   Úfieldr×   r­   Úmappings        r&   Úmap_choicefieldzAutoSchema.map_choicefieldR  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­   r4   z	date-timeÚemailÚuriÚuuidÚbothr4   Ú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ÚIntegerFieldrq   Ú	FileFieldÚBooleanFieldÚ	JSONFieldÚ	DictFieldÚHStoreFieldrl   )r$   rØ   Údatar�   r¸   rÙ   r“   ÚFIELD_CLASS_SCHEMA_TYPEs           r&   rô   zAutoSchema.map_fieldn  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Ø   r@   Úresults          r&   r�   zAutoSchema.map_serializer  s6  € àˆØˆ
à×&Ñ&×-Ñ-×/ˆ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ð) 0ð. Ø$ñ
ˆñ Ø!)ˆ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â   r4   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Ø   r@   Ú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_nameP  s   € ð
 ×ÑÐr(   c                 óD   — t        | j                  dd «      }|r |«       S y )NÚpagination_class)r¢   rP   )r$   r5  s     r&   rÄ   zAutoSchema.get_paginatorW  s%   € Ü" 4§9¡9Ð.@À$ÓGÐÙÙ#Ó%Ð%Ør(   c                 óf   — t        t        t        d«      | j                  j                  «      «      S )NÚ
media_type)r¡   Úmapr   rP   Ú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\   )rP   Úrenderer_classesÚ
issubclassr   ÚBrowsableAPIRendererr¶   r7  )r$   rO   r,   Úmedia_typesÚrenderers        r&   Úmap_rendererszAutoSchema.map_renderers`  sJ   € ØˆØŸ	™	×2Ô2ˆHä˜(¤I×$BÑ$BÔCØØ×Ñ˜x×2Ñ2Õ3ð	 3ð
 Ð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 {} {}.)
rP   rÁ   r£   r   ÚAPIExceptionr2   r3   r4   rl   rT   )r$   rO   r,   rP   s       r&   r£   zAutoSchema.get_serializeri  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_serializerx  ó   € ð
 ×"Ñ" 4¨Ó0Ð0r(   c                 ó&   — | j                  ||«      S )zu
        Override this method if your view uses a different serializer for
        populating response data.
        rE  rÂ   s      r&   rŽ   z"AutoSchema.get_response_serializer  rF  r(   c                 ó.   — dd| j                  |«      › �iS )Nz$refz#/components/schemas/)r‹   )r$   r„   s     r&   Úget_referencezAutoSchema.get_reference†  s!   € ØÐ/°×0GÑ0GÈ
Ó0SÐ/TÐUÐVÐVr(   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“   r@   )r:  Úrequest_media_typesr�   r^   r   r�   rI  )r$   rO   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óá2�Bð �X˜{Ð+Ñ+Ø2ñð
ð 	
ùò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Ý   rM  Ú201Ú200r@   )r“   r#   )rA  Úresponse_media_typesrŽ   r^   r   r�   rI  r   rP   rÄ   Úget_paginated_response_schema)	r$   rO   r,   r„   rO  Úresponse_schemarÅ   Ústatus_coderP  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óá7˜ð ˜ ?Ð3Ñ3Ø7ñð  "ñ	ð
ð 	
ùòs   Â=Cc                 ó¨   — | j                   r| j                   S |j                  d«      r|dd  }|j                  d«      d   j                  dd«      gS )Nr9   r   r   rM   Ú-)rf   rE   r—   r,  rÂ   s      r&   r�   zAutoSchema.get_tagsÆ  sO   € à�:Š:Ø—:‘:Ðð
 �?‰?˜3ÔØ˜˜�8ˆDà—
‘
˜3“ Ñ"×*Ñ*¨3°Ó4Ð5Ð5r(   )NNN)"rT   rU   rV   rj   rN  rV  rª   rA   r‹   rB   rš   r¨   rz   r|   r~   r»   r}   rÚ   rô   r  r�   r#  r  rÄ   r:  rA  r£   r�   rŽ   rI  r   r€   r�   Ú__classcell__)rl   s   @r&   rY   rY   t   s¼   ø„ õ
ð ÐØÐð ØØØ Øñ€Nòò(ò.ò2Jò$òLò "òHòCò
?òò8NPò`1ò"òH&;òP òòMòòò1ò1òWò
ò('
öR6r(   rY   )*r…   r2   rç   r   Úoperatorr   Úurllib.parser   Údjango.core.validatorsr   r   r   r	   r
   r   r   r   Ú	django.dbr   Údjango.utils.encodingr   Úrest_frameworkr   r   r   Úrest_framework.compatr   r   Úrest_framework.fieldsr   r   Úrest_framework.settingsr   Ú
generatorsr   Ú
inspectorsr   Úutilsr   r   r   rY   rW   r(   r&   Ú<module>ri     sa   ðÛ 	Û Ý Ý Ý  ÷÷ ó õ Ý +ç =Ñ =ß 9ß :Ý 0å +Ý %ß 3ôWÐ)ô Wôx]	6�õ ]	6r(   