
    W}bgW#                    Z   d dl Z d dlZd dlZd dlZd dlmZ d dlmZmZm	Z	m
Z
m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 d dlmZmZmZ d d	lmZmZ d d
lmZmZm Z  d dl!m"Z" d dl#m$Z$ d dl%m&Z& d dl'm(Z( d dl)m*Z* d dl+m,Z, d dl-Z.d dl/Z.d dl0T d dl1m2Z2m3Z3m4Z4m5Z5m6Z6 d dl7m8Z8m9Z9m:Z:m;Z; d dl<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZe d dlfmgZg d dlhmiZi d dljmkZkmlZlmmZmmnZnmoZompZpmqZqmrZr  G d de$          ZsdS )    N)defaultdict)AnyDictListOptionalUnion)
exceptions)
validators)models)gettext_lazy)permissions	renderersserializers)_UnvalidatedFieldempty)CreateAPIViewGenericAPIViewListCreateAPIView)ListModelMixin)ViewInspector)get_pk_description)api_settings)get_field_info)APIView)*)add_trace_messageerrorget_overridehas_overridewarn)OpenApiAuthenticationExtensionOpenApiFilterExtensionOpenApiSerializerExtensionOpenApiSerializerFieldExtension))ComponentRegistryResolvedComponentUnableToProceedErrorappend_metaassert_basic_serializerbuild_array_typebuild_basic_typebuild_choice_fieldbuild_examples_listbuild_generic_typebuild_listed_example_valuebuild_media_type_objectbuild_mocked_viewbuild_object_typebuild_parameter_typebuild_serializer_contextfilter_supported_argumentsfollow_field_sourcefollow_model_field_lookupforce_instanceget_docget_list_serializerget_managerget_type_hintsget_view_modelis_basic_serializeris_basic_typeis_fieldis_higher_order_type_hintis_list_serializeris_list_serializer_customizedis_patched_serializeris_serializeris_trivial_string_variation!modify_media_types_for_versioningresolve_django_path_parameterresolve_regex_path_parameterresolve_type_hintsafe_ref!sanitize_specification_extensionswhitelisted)spectacular_settings)OpenApiTypes)	DirectionOpenApiCallbackOpenApiExampleOpenApiParameterOpenApiRequestOpenApiResponse_SchemaType_SerializerTypec                      e Zd ZddddddZdeded	ed
ededee         fdZde	fdZ
dJdee         de	fdZde	fdZdeeeef                  fdZdKdZdee         fdZdee         fdZdefdZdee         fdZdeeeef                  fdZdeeeeef         ef                  fdZdee         fdZdee         fdZdee         fdZdee         fdZdefd Zd! Zdee          fd"Z!defd#Z"de	fd$Z#dee         fd%Z$d& Z%dee&         fd'Z'd( Z(d) Z)d* Z*dLd,Z+d-e&d.eddfd/Z,dLd0Z-d1 Z.d2 Z/d3 Z0d4 Z1d5 Z2d6 Z3d7edefd8Z4dee&         fd9Z5d:edee&         fd;Z6d< Z7dee8         fd=Z9dMd>Z:dKd?Z;dKd@Z<dNdBe=defdCZ>dBe=dee         fdDZ?dOdEZ@dNdefdFZAdeBjC        dBe=defdGZDdLdefdHZE	 dLdedBe=deFfdIZGdS )P
AutoSchemaretrievecreateupdatepartial_updatedestroy)getpostputpatchdeletepath
path_regexpath_prefixmethodregistryreturnc                 L   || _         || _        || _        || _        |                                | _        |                                 rd S d|                                 i}|                                 }|r||d<   | 	                                }|r||d<   | 
                                }	|	r|	|d<   |                                 }
|
r|
|d<   |                                 }|r||d<   |                                 }|r||d<   |                                 }|r||d<   |                                 }|r||d	<   |                                 |d
<   |                                 }|r"|                    t'          |                     |                                 }|r||d<   |S )NoperationIddescriptionsummaryexternalDocs
parameterstagsrequestBodysecurity
deprecated	responses	callbacks)rh   rd   re   rf   upperrg   is_excludedget_operation_idget_descriptionget_summary_get_external_docs_get_parametersget_tags_get_request_bodyget_authis_deprecated_get_response_bodiesget_extensionsr\   rL   _get_callbacks)selfrd   re   rf   rg   rh   	operationrl   rm   external_docsro   rp   request_bodyauthrs   
extensionsru   s                    j/home/e360mart.nyusoft.in/public_html/e360mart_env/lib/python3.11/site-packages/drf_spectacular/openapi.pyget_operationzAutoSchema.get_operation=   s    !	$&llnn 	4"/1F1F1H1H!I	**,, 	3'2Im$""$$ 	+#*Ii //11 	6(5In%))++
 	1&0Il#}} 	% $If--// 	4'3Im$}} 	)$(Ij!''))
 	1&0Il#!%!:!:!<!<	+((**
 	L>zJJKKK''))	 	/%.Ik"    c                     dS $ override this for custom behaviour F r   s    r   rw   zAutoSchema.is_excluded|       ur   N
serializerc                 D   ||                                  }t          |t                    r5|r3d |                                D             }|t	          |                   }t          |          rdS t          |          rdS t          | j        d          r| j        j	        dk    S | j
        dk    rdS t          | j        t                    rdS t          | j        t                    r5| j        j        p| j        j        }|t          j        | j                  v rdS dS )z
        partially heuristic approach to determine if a view yields an object or a
        list of objects. used for operationId naming, array building and pagination.
        defaults to False if all introspection fail.
        Nc                 4    i | ]\  }}t          |          |S r   str).0codess      r   
<dictcomp>z,AutoSchema._is_list_view.<locals>.<dictcomp>   s$    III74#d))QIIIr   TFactionlistGET)get_response_serializers
isinstancedictitemsminrB   r?   hasattrviewr   rg   r   r   lookup_url_kwarglookup_fielduritemplate	variablesrd   )r   r   r   s      r   _is_list_viewzAutoSchema._is_list_view   s'    6688Jj$'' 	5J 	5IIj6F6F6H6HIIIJ#C
OO4Jj)) 	4$$ 	549h'' 	.9#v--;%5di00 	4di00 	#y9STY=S;#8#C#CCCuur   c                     | j         dk    rdS t          | j        dd           dk    rdS t          | j        t          t
          f          rdS dS )NPOSTFr   r[   T)rg   getattrr   r   r   r   r   s    r   _is_create_operationzAutoSchema._is_create_operation   sV    ;&  549h--994di"3]!CDD 	4ur   c                     g S r   r   r   s    r   get_override_parametersz"AutoSchema.get_override_parameters       	r   requestc                    i }|                                  D ]l}t          |t                    rz|j        r!t	          |j                  rt          |j                  }npt          |j                  r!|                     |j        |          j	        }n;t          |j        t                    r|j        }nt          d|j         d           |j        r<t	          |j                  rt          |          }nt          d|j         d           |j        rd ||j        |j        f<   t#          |j        ||j        |j        |j        |j        |j        |j        |j        |j        |j        |j        t7          |j                  |j                  ||j        |j        f<   t          |          rt=          |          }|                     |d          }|d                                          D ]u\  }}|j!        "                    |          }t#          |||#                    dd           t          j$        tK          |d	d
          |j                  ||t          j$        f<   vYt          d| d           n|S )Nz unsupported type for parameter "z". Skipping.zparameter "z^" has many=True and is not a basic type. many=True only makes sense for basic types. Ignoring.nameschemalocationrequiredrl   enumpatternrs   styleexplodedefaultallow_blankexamplesr   r   
propertiesrl   r   T)r   r   rl   r   r   r   z'could not resolve parameter annotation z. Skipping.)&r   r   rS   responser?   typer+   r>   resolve_serializerrefr   r    r   manyr*   excluder   r3   r   rl   r   r   rs   r   r   r   r   r-   r   r   r8   _map_serializerr   fieldsr_   popQUERYr   )	r   	directionresult	parameterr   mappedproperty_nameproperty_schemafields	            r   _process_override_parametersz'AutoSchema._process_override_parameters   s   5577 :	W :	WI)%566 9W%  00 -in==FF(88 !44Y^YOOSFF	55 &^FFXINXXXYYY> $Y^44 !1&!9!9U). U U U  
 $ AEF9>9+==>>AU&^%!*!3!*!3$-$9&^ ) 1#,#7'o ) 1 ) 1$-$9!4Y5G!H!H#,#7B B BF9>9+==>>  %Y// W*955	--iCC6<\6J6P6P6R6R 	 	2M?%,00??EDX*.$3$7$7t$L$L!1!7$+E=$$G$G!&E E EF=*:*@@AA	 UyUUUVVVVr   c                    g }|                      d          }t          j        rdt          |          dk    rQ|                    t          t          j        t          t          j                  t          j
        |                     |S )Nformat   )r   r   r   r   )map_renderersr   URL_FORMAT_OVERRIDElenappendr3   r+   rO   STRrS   r   )r   ro   formatss      r   _get_format_parametersz!AutoSchema._get_format_parameters   s    
$$X..+ 	Gq0@0@2!5'(899)/	      r   c                 ^  	 d }|                                  		fdt          j        | j                  D             }i  ||                     |                     ||                                            ||                                            ||                                           }	                                D ]\  }}|||v r||= |||<   t          t                    }|                                 D ])}|j        r ||j                                     |           *|                                D ]S\  }}||v rJ||                             di            ||         d                             t!          |                     Tt#          t$          j                  r-t)          |                                t$          j                  S t$          j        r$t)          |                                d           S t          |                                          S )Nc                     d | D             S )Nc                 0    i | ]}|d          |d         f|S )r   inr   r   ps     r   r   zCAutoSchema._get_parameters.<locals>.dict_helper.<locals>.<dictcomp>   s'    @@@QvY$(!@@@r   r   )ro   s    r   dict_helperz/AutoSchema._get_parameters.<locals>.dict_helper   s    @@Z@@@@r   c                      g | ]
}|d fv|S )rd   r   )r   voverride_parameterss     r   
<listcomp>z.AutoSchema._get_parameters.<locals>.<listcomp>   s/     
 
 
Av;Na;a;aA;a;a;ar   r   )keyc                     | d         S )Nr   r   )r   s    r   <lambda>z,AutoSchema._get_parameters.<locals>.<lambda>  s
    QvY r   )r   r   r   rd   _resolve_path_parameters_get_filter_parameters_get_pagination_parametersr   r   r   r   get_examplesparameter_onlyr   
setdefaultr\   r-   callablerN   SORT_OPERATION_PARAMETERSsortedvalues)
r   r   path_variablesro   r   r   examples_by_keyexampler   r   s
            @r   r|   zAutoSchema._get_parameters   si   	A 	A 	A #??AA
 
 
 
",TY77
 
 

k$77GGHH
k$557788
 k$99;;<<
 k$557788	

 27799 	, 	,NC *$$"3"+
3 &d++((** 	H 	HG% H 67>>wGGG,2244 	R 	RMCj  3**:r:::3
+223Fx3P3PQQQ(BCC 	-*++--3G3abbbb!; 	-*++--3F3FGGGG
))++,,,r   c           	          t          | j        t          | j        d| j                                                  d          }t	          | j        j                  }t	          |          }|p|S )r   r   N)r   r   rg   lowerr9   	__class__)r   action_or_methodview_doc
action_docs       r   ry   zAutoSchema.get_description#  s^    "49gdi4;K\K\K^K^._._aeff49.//-..
%X%r   c                     dS r   Nr   r   s    r   rz   zAutoSchema.get_summary*      tr   c                 `    |                                  }t          |t                    rd|iS |S )Nurl)get_external_docsr   r   )r   r   s     r   r{   zAutoSchema._get_external_docs.  s6    ..00mS)) 	!=))  r   c                     dS r   r   r   s    r   r  zAutoSchema.get_external_docs5  r  r   c           
      $   g }| j                                         D ]J}t          |t          j        d          st          j        |          }|st          d|j         d           N|	                    |           }|@t          |t                    r|                    |           n|                    |           t          |j        t                    r|j        g|                    |           g}}n|j        |                    |           }}t#          ||          D ]?\  }}| j                            t)          |t(          j        |j        |                     @Lt          j        r|                    t          j                   d | j                                         D             }	t0          j        |	v r|                    i            n6t0          j        |	v r(| j        t0          j        v r|                    i            |S )a#  
        Obtains authentication classes and permissions from view. If authentication
        is known, resolve security requirement for endpoint and security definition for
        the component section.
        For custom authentication subclass ``OpenApiAuthenticationExtension``.
        Tz could not resolve authenticator z~. There was no OpenApiAuthenticationExtension registered for that class. Try creating one by subclassing it. Ignoring for now.N)r   r   objectr   c                     g | ]	}|j         
S r   )r   r   s     r   r   z'AutoSchema.get_auth.<locals>.<listcomp>h  s    BBBBBBr   )r   get_authenticatorsrM   rN   AUTHENTICATION_WHITELISTr!   	get_matchr    r   get_security_requirementr   r   r   extendr   r   get_security_definitionziprh   register_on_missingr&   SECURITY_SCHEMASECURITYget_permissionsr   AllowAnyIsAuthenticatedOrReadOnlyrg   SAFE_METHODS)
r   authsauthenticatorschemesecurity_requirementsnamesdefinitionsr   
definitionpermss
             r   r   zAutoSchema.get_auth9  s5    !Y99;; !	 !	M}.B.[]abb 3=mLLF M}7N M M M  
 $*$C$CD$I$I!$03T:: 8LL!67777LL!6777&+s++ W&,k]V5S5STX5Y5Y4Z{%+[&2P2PQU2V2V{$'{$;$;   j11%!.>,6)	       ( 	8LL-6777BBdi&?&?&A&ABBB5((LL2e;;{Og@g@gLLr   c                 *    |                                  S r   _get_serializerr   s    r   get_request_serializerz!AutoSchema.get_request_serializero      ##%%%r   c                 *    |                                  S r   r   r   s    r   r   z#AutoSchema.get_response_serializerss  r#  r   c                 >    |                                  }|dd         S )r   Nr   )_tokenize_path)r   tokenized_paths     r   r}   zAutoSchema.get_tagsw  s"    ,,..bqb!!r   c                     i S Nr   r   s    r   r   zAutoSchema.get_extensions}  s    	r   c                 l   i }|                                  D ]}t          |j        t                    r|j        }n	d|j        i}i }|                                D ]D\  }}t          |t                    r|||                                <   3t          ||j        || j                  }i }|j	        
                                }	|	r|	|d<   |j	                                        }
|
r|
|d<   |j	                            d          }|r||d<   |j	                                        }|r||d<   |j	                            d          |d	<   |j	                                        }|r"|                    t#          |                     |||                                <   F|j        |i||j        <   |S )
a  
        Creates a mocked view for every callback. The given extend_schema decorator then
        specifies the expectations on the receiving end of the callback. Effectively
        simulates a sub-schema from the opposing perspective via a virtual view definition.
        r`   )rg   rd   extend_schema_decoratorrh   rl   rm   r   rq   rs   r   rt   )get_callbacksr   	decoratorr   r   r   r1   rd   rh   r   ry   rz   r~   r   r   r   r\   rL   r   )r   r   callbackmethods
path_itemsrg   r-  mocked_viewr   rl   rm   r   rs   r   s                 r   r   zAutoSchema._get_callbacks  s    **,, .	@ .	@H(,d33 7",!8#56J%,]]__ $7 $7!	i.. 1:Jv||~~./!!,5!]	   	)0@@BB ;/:Im,%,88:: 3+2Ii(*1CCJOO </;Im,(/==??
 9.8Il+)4);)P)PQZ)[)[	+&(/>>@@
 T$$%Fz%R%RSSS-6
6<<>>**%-]J$?F8=!!r   c                     g S r   r   r   s    r   r,  zAutoSchema.get_callbacks  r   r   c                    |                                  }d |D             }| j        dk    r|                                 rd}n$| j        | j                                                 }|s|                    d           t          j        d| j                  r|                    d           d	                    ||gz             S )r   c                 :    g | ]}|                     d d          S )-_)replacer   ts     r   r   z/AutoSchema.get_operation_id.<locals>.<listcomp>  s&    FFF!!))C--FFFr   r   r   rootz<drf_format_suffix\w*:\w+>	formattedr6  )
r&  rg   r   method_mappingr   r   researchre   join)r   r'  r   s      r   rx   zAutoSchema.get_operation_id  s    ,,..FF~FFF;%D$6$6$8$8FF():):)<)<=F 	*!!&)))92DODD 	/!!+...xx&1222r   c                     dS r   r   r   s    r   r   zAutoSchema.is_deprecated  r   r   c                    t          j        | j        d| j        t           j                  }t          j        dd|          }|                    d                              d                              d          }d |D             S )N )r   replstringflagsz\{[\w\-]+\})r   rC  rD  /c                     g | ]}||S r   r   r8  s     r   r   z-AutoSchema._tokenize_path.<locals>.<listcomp>  s    ///aQ////r   )r=  subrf   rd   
IGNORECASErstriplstripsplit)r   rd   r'  s      r   r&  zAutoSchema._tokenize_path  s    v$9-	
 
 
 vn2dCCCS))0055;;C@@//>////r   c                 F   t          | j        d          }g }|D ]}t          t          j                  }d}t          | j        ||                     d                    }|st          | j        |          }|r	|d         }n|t          d| d| d           n	 t          | j        d	d           |k    rt          | j        d
|          }n%|                    d          r|d d          d}n|}t          ||          }	|                     |	d           }d|vr|	j        rt          ||	          }n8# t           j        $ r& t          d| d|j         d|j         d           Y nw xY w|                    t+          |t,          j        ||                     |S )NF)emit_warningsrB  r   r   z)could not derive type of path parameter "zv" because it is untyped and obtaining queryset from the viewset failed. Consider adding a type to the path (e.g. <int:zP>) or annotating the parameter type with @extend_schema. Defaulting to "string".r   r   _pk_idr   rl   z" because model ".ze" contained no such field. Consider annotating parameter with @extend_schema. Defaulting to "string".)r   r   rl   r   )r=   r   r+   rO   r   rH   re   r   rI   r    r   endswithr7   _map_model_fieldprimary_keyr   django_exceptions
FieldError
__module____name__r   r3   rS   PATH)
r   r   modelro   variabler   rl   resolved_parametermodel_field_namemodel_fields
             r   r   z#AutoSchema._resolve_path_parameters  sS   ty>>>
! ,	 ,	H%l&677FK!>4+=+=h+G+G" " & ]%A$/S[%\%\"! +H5W W WEMW W W   ty*<dCCxOO+249nh+W+W((!**511 4.6ssm+@+@+@((+3(";ECS"T"TK!22;$2OOF$F22{7N2&8&L&L(3   ]H ] ]!,] ]/4~] ] ]     2).'	       s   BD772E,+E,c                 Z    |                                  sg S t          | j        dg           S )r   filter_backends)r   r   r   r   s    r   get_filter_backendszAutoSchema.get_filter_backends  s0    !!## 	Ity"3R888r   c                     g }|                                  D ]^}t          j         |                      }|r||                    |           z  }9| |                                | j                  z  }_|S r)  )rc  r"   r  get_schema_operation_parametersr   )r   ro   filter_backendfilter_extensions       r   r   z!AutoSchema._get_filter_parameters  s    
"6688 	Z 	ZN5?@P@PQQ Z.NNtTTT

nn..NNtyYYY

r   c                     |                                  sg S |                                 }|sg S t          j        |          }|r|                    |           S |                    | j                  S r)  )r   _get_paginatorr"   r  re  r   )r   	paginatorrg  s      r   r   z%AutoSchema._get_pagination_parameters'  s}    !!## 	I''))	 	I1;IFF 	H#CCDIII<<TYGGGr   c                 ~   t          |t          j                  sJ 	 t          j                                        |j        t          |j                  |j        d          \  }} |di |}|j        |_	        n	#  d }Y nxY w|rbt          |t          j
                  rH|j        s+t          |j                                                  |_        |                     ||          S t          |t          j                  rR|j        j        s0t          |j                                                  |j        _        |                     ||          S |r<t          |t          j        t          j        f          s|                     ||          S t          |t          j                  r|                     |j        |          S t/          t          d          r3t          |t          j                  rt3          t4          j                  S t          |t          j                  rt3          t4          j                  S t/          t          |                                          rt?          t          |                                          }t          j        j         !                    |          }|s>tE          d|                                 d           t3          t4          j#                  S |                      |            |          S tI          d| d           t3          t4          j#                  S )	Nr   )
field_nameinfomodel_classnested_depth	JSONFieldzmodel field "zY" has no mapping in ModelSerializer. It may be a deprecated field. Defaulting to "string"zcould not resolve model field "z}". Failed to resolve through serializer_field_mapping, get_internal_type(), or any override mechanism. Defaulting to "string"r   )%r   r   Fieldr   ModelSerializerbuild_fieldr   r   r\  rl  PrimaryKeyRelatedFieldquerysetr;   related_modelnone_map_serializer_fieldManyRelatedFieldchild_relationReadOnlyField
ModelField
ForeignKeyrU  target_fieldr   rp  r+   rO   ANYBinaryFieldBYTEget_internal_typer   serializer_field_mappingr_   r    r   r   )r   r`  r   	field_clsfield_kwargsr   internal_types          r   rU  zAutoSchema._map_model_field5  s   +v|44444
	&1&A&C&C&O&O&+#K$566'-	 'P ' '#I| I----E*/E	EEE  &	6Z{'IJJ &	6 > O!,[-F!G!G!L!L!N!N--eY???{;<<  	6 '0 ^0;K<U0V0V0[0[0]0]$---eY??? 	6:ek.GI_-`aa 	6--eY???V%677 	6(()A9MMMV[)) 	6jfFV.W.W 	6#L$4555V%788 	6#L$5666V[::<<== 	6#FK,I,I,K,KLLM#3LPPQ^__I :]K$A$A$C$C ] ] ]   ((8999--iikk9EEE*+ * * *  
 $L$4555s   AA< <BFc                 !   |                      ||          }t          |d          rt          |d          }t          |          rt	          |          }|d S nZt          |          rt          |          }n;t          |t                    r|}n#| 	                    t          |          |          }t          |d          }|rLt          |t          j        ||          }| j                            |           t          |j        |          S t          ||          S t#          j        |          }	|	r|s|	                    | |          }|d S |	                                r^t          |	                                t          j        ||          }| j                            |           t          |j        |          S t          ||          S t+          |          r*|                     ||          }|rt          ||          nd S t/          |          r/|                     ||          }|rt          |j        |          nd S t          |t2          j                  r| 	                    |j        |          }|                    dd            |                    d          |                    d          k    r|                    dd            t          t=          |          |          S t          |t2          j        t2          j         f          r.t          |t2          j                   }
tC          |dd           S|
r9|j"        j#        }|j$        g}tK          ||tM          j'                              }n9|j"        j#        j(        j)        }n!t          |j*        t2          j                  r6|j*        j*        j+        j#        }|j*        j,        -                    d          }nt]          |j*        d	          r,|j*        j+        j#        }|j,        -                    d          }nLt_          d
|j0        j1         d|j2         d           t          t	          tf          j4                  |          S |
r|5                    |j$                   tK          ||tM          j'                              }tm          |          r| 7                    |          }nDt          |tL          j8                  r| 9                    ||          }nJ d|j2         d            |                    dd            t          ||          S t          |t2          j:                  r't          t	          tf          j4                  |          S t          |t2          j;                  r't          t	          tf          j<                  |          S t          |t2          j=                  r't          t	          tf          j<                  |          S t          |t2          j>                  r*t          t=          t          |                    |          S t          |t2          j@                  rKt          |          }d|v r(d|v r$|d         dz   |                    d          z   |d<   t          ||          S t          |t2          jA                  r4t          |jB        t                    r4t          t=          t	          tf          jD                            |          S t          |jB                  rA|                     |jB        |          }|r"t          t=          |j                  |          nd S | 	                    |jB        |          }| F                    |jB        |           t          |j2        |                    d                    r|                    dd            t          t=          |          |          S t          |t2          jH                  r't          t	          tf          jI                  |          S t          |t2          jJ                  r't          t	          tf          jK                  |          S t          |t2          jL                  r't          t	          tf          jM                  |          S t          |t2          jN                  r't          t	          tf          jO                  |          S t          |t2          jP                  r't          t	          tf          j<                  |          S t          |t2          jQ                  r't          t	          tf          jR                  |          S t          |t2          jS                  r't          t	          tf          j4                  |          S t          |t2          jT                  rd|jU        V                                k    rt	          tf          jW                  }nPd|jU        V                                k    rt	          tf          jX                  }nt	          tf          j4                  }t          ||          S t          |t2          jY                  rtC          |dt          j[                  r=i t	          tf          j4                  ddi|j\        rd|j\         d|j]         dd<   n[t	          tf          j^                  |j\        r%d|j\        z  }_                    || ddd           | `                    |           t          |          S t          |t2          ja                  r?t	          tf          jb                  | `                    |           t          |          S t          |t2          jc                  r_t	          tf          jd                  | `                    |           t          fddD                       sd d<   t          |          S t          |t2          jf                  r~t          jh        r |d!k    rt	          tf          ji                  nBtC          |d"t          jj                  }t	          |rtf          j<        ntf          j4                  t          |          S t          |t2          jk                  rtC          |j*        |jl        d           }|Gt          d#|j2         d$|jl         d%           t          t	          tf          j4                  |          S t          | 7                    |          |          S t]          t2          d&          rt2          jn        t2          jo        f}nt2          jn        f}t          ||          r't          t	          tf          jp                  |          S t          |t2          jq                  r't          t	          tf          jD                  |          S t          |t2          jr        t2          js        f          rt	          tf          jt                  t          |jB        t                    s?| 	                    |jB        |          d'<   | F                    |jB        d'                    t          |          S t          |t2          ju                  r't          t	          tf          j4                  |          S t          |t2          jv                  r<t+          |j*                  r7tC          tC          |j*        j*        d	d           d(d           }|j*        jw        }n,tC          tC          |j*        d	d           d(d           }|jw        }|?t_          d)|j2         d*           t          t	          tf          j4                  |          S tK          ||          }tm          |          r| 7                    |          }n?t          |tL          j8                  r| 9                    ||          }nJ d+| d,            t          ||          S t          |t2          jx                  r+| 9                    |jy        |          }t          ||          S t_          d-| d.           t          t	          tf          j4                  |          S )/Nr   field_component_namer   r   r   r  readOnlyrl   ru  )r   rS  Metaz*Could not derive type for under-specified z "z". The serializer has no associated model (Meta class) and this particular field has no type without a model association. Consider changing the field or adding a Meta class. defaulting to string.FzField "z3" must point to either a property or a model field.z

titleipv4ipv6coerce_to_stringr   decimalz^-?\d{0,z}(?:\.\d{0,z})?$r   
   T)maximumminimumexclusiveMaximumexclusiveMinimumc              3   z   K   | ]5}d t                              |d                    cxk    odk    nc V  6dS )i   r   iN)intr_   )r   r   contents     r   	<genexpr>z3AutoSchema._map_serializer_field.<locals>.<genexpr>A  sV      ooQT{c'++c1*=*=&>&>LLLL*LLLLoooooor   r  r  int64r   use_urlzSerializerMethodField "z" is missing required method "z". defaulting to "string".NullBooleanFieldadditionalPropertiesr\  z)Could not derive type for ReadOnlyField "z" because the serializer class has no associated model (Meta class). Consider using some other field like CharField(read_only=True) instead. defaulting to string.zReadOnlyField target "z!" must be property or model fieldz$could not resolve serializer field "z". Defaulting to "string")z_get_serializer_field_metar   r   r?   r+   rA   rJ   r   r   rx  r8   r&   SCHEMArh   r  r(   r   r$   r  map_serializer_fieldget_namerB   _unwrap_list_serializerrE   r   r   ry  rz  r   r_   r*   rt  SlugRelatedFieldr   ru  r\  
slug_fieldr6   r   	TextField_metapkparentr  sourcerL  r   r    r   rZ  rl  rO   r   r   r   _map_response_type_hintrq  rU  StringRelatedFieldHyperlinkedIdentityFieldURIHyperlinkedRelatedFieldMultipleChoiceFieldr,   ChoiceField	ListFieldchildr   r  r>   _insert_field_validatorsrF   	DateFieldDATEDateTimeFieldDATETIME	TimeFieldTIME
EmailFieldEMAILURLField	UUIDFieldUUIDDurationFieldIPAddressFieldprotocolr   IP4IP6DecimalFieldr   COERCE_DECIMAL_TO_STRINGmax_whole_digitsdecimal_placesDECIMALr\   _insert_min_max
FloatFieldDOUBLEIntegerFieldINTall	FileFieldrN   COMPONENT_SPLIT_REQUESTBINARYUPLOADED_FILES_USE_URLSerializerMethodFieldmethod_namer   BooleanFieldr  BOOLrp  	DictFieldHStoreFieldOBJECT	CharFieldr{  source_attrsr|  r`  )r   r   r   bypass_extensionsmetaoverrider   r  	componentserializer_field_extensionis_slugr\  r  r`  valuer  rg   boolean_field_classestargetr  s                      @r   rx  z AutoSchema._map_serializer_fieldn  s   ..ui@@w'' 	1#E733HX&& 	Y)(33>4 "*844 Y*844Hd++ Y!33N84L4LiXX#/7M#N#N # 
1--*1! 	  	 11)<<<"9=$777"64000%D%Nu%U%U"% 	1.? 	1/DDT9UUF~t+4466 
1-3<<>>*1! 	  	 11)<<<"9=$777"64000 e$$ 	A11%CCF06@;vt,,,D@  	K//yAAI7@J;y}d333dJ e[9:: 	?//0DiPPFJJz4(((xx&&&**]*C*CCC

=$////77>>>ek@+B^_`` 0	- (DEEG uj$//; @!N0E#./F"5eVVM]M_M_"`"`"`KK"'."6"<"?KKelK,HII Q!L/4:E"\066s;;FFU\622 
Q!L-3E"\//44FF\U_E] \ \!,\ \ \   ''78H'I'I4PPP 4MM%"2333
 2%IYI[I[\\\ $$ n55kBBK66 n..{IFFmm(8mmmmmu JJz4(((vt,,,e[;<< 	I/0@AA4HHHe[ABB 	I/0@AA4HHHe[@AA 	I/0@AA4HHHe[<== 	R/0B50I0IJJDQQQe[455 	-'..F$$&)@)@&*=&9F&BVZZP]E^E^&^]#vt,,,e[233 	C%+'899 C"#34D\EU4V4V#W#WY]^^^$U[11 	C 33EKKK	MV`{#3IM#B#BDIII\``33EKKK--ek6BBB.u/?GATATUU .JJw---"#3F#;#;TBBB e[233 	J/0ABBDIIIe[677 	N/0EFFMMMe[233 	J/0ABBDIIIe[344 	K/0BCCTJJJe[122 	I/0@AA4HHHe[233 	J/0ABBDIIIe[677 	I/0@AA4HHHe[788 		- --////),*:;;5>//1111),*:;;),*:;;vt,,, e[566 	.u0,2WXX 5U-l.>??U9UU) CU%; C C',';C C C I&
 +<+?@@) %"88ENN#($)6,0,0	$ $    $$UG444w---e[344 	.&|':;;G  000w---e[566 	.&|'788G  000ooooXnooooo ,$+!w---e[233 	.#; ^	Y@V@V*<+>??!%L4WXX*w+\<+;+;LL\]]w---e[>?? 		KU\5+<dCCF~Fe.> F F)F F F   ##3L4D#E#EtLLLt;;FCCTJJJ ; 233 	@%0%={?[$\!!%0%=$?!e233 	J/0ABBDIIIe[233 	I/0@AA4HHHek3[5LMNN 	.&|':;;Gek+<== \262L2LU[Zc2d2d./--ek7CY;Z[[[w---e[233 	I/0@AA4HHHe[677 	-!%,// ,(;VT J JGUYZZ2fd C CWdSS+}a@P a a a  
 ##3L4D#E#EtLLL(77F `55f==FFL11 `..vyAA__u_____uvt,,, e[344 	-**5+<iHHFvt,,,TETTTUUU+L,<==tDDDr   r   r  c                 n    |j         |j         |d<   d|v r|d= |j        |j        |d<   d|v r|d= d S d S d S )Nr  r  r  r  )	max_value	min_value)r   r   r  s      r   r  zAutoSchema._insert_min_max  sf    ?&!&GI!W,,./?&!&GI!W,,./// '&,,r   c                 B   t          |          }t          j        |          }|r|s|                    | |          }n|                     ||          }t          |di           }|r"|                    t          |                     |                     |||          S )Nr   )	r8   r#   r  map_serializer_map_basic_serializerr   r\   rL   _postprocess_serializer_schema)r   r   r   r  serializer_extensionr   r   s          r   r   zAutoSchema._map_serializer  s    #J//
9CJOO 	G(9 	G)88yIIFF//
IFFF!*lB??
 	IMM;JGGHHH226:yQQQr   c                    t           j        s|S |                    dg           }|                    dg           }t          |          D ]}|dk    r=||                             d          r"|d         |= ||v r|                    |           |dk    r=||                             d          r"|d         |= ||v r|                    |           d|v r|s|d= |S )z
        postprocess generated schema for component splitting, if enabled.
        does only apply to direct component schemas and not intermediate schemas
        like components composed of sub-component via e.g. oneOf.
        r   r   r   r  r   	writeOnly)rN   r  r_   r   remove)r   r   r   r   r   r   	prop_names          r   r  z)AutoSchema._postprocess_serializer_schema  s    $; 	MZZb11
::j"--j)) 	/ 	/II%%*Y*?*C*CJ*O*O%<(3((OOI...J&&:i+@+D+D[+Q+Q&<(3((OOI... z"r   c                 \   t          |t          j                  si S i }|j        rd|d<   |j        rd|d<   |j        rd|d<   t          |t          j                  r7|j        s0t          j	        r|dk    rd|d<   nt          j
        r|j        sd|d<   |j        |j        t          k    rt          |j                  st          |t          j        t          j        t          j        t          j        f          r|j        }n*	 |                    |j                  }n#  |j        }Y nxY wt          |t&                    rt)          |          }||d<   |j        r1t-          |j        |j                  st1          |j                  |d	<   |j        rt1          |j                  |d
<   |S )NTr  r  nullabler   r   	minLengthr   r  rl   )r   r   rq  	read_only
write_only
allow_nullr  r   rN   r  ENFORCE_NON_BLANK_FIELDSr   r   r   r|  r  rt  r  to_representationsetr   labelrF   rl  r   	help_text)r   r   r   r  r   s        r   r  z%AutoSchema._get_serializer_field_meta  s   %!233 	I? 	$#D 	% $D 	$#De[233 	*E<M 	*#; *	))()D%%> * *()D%=$%)?)?QVQ^H_H_)?*560	  ,  -,#55emDDGG,#mGGG'3'' (w--%DO; 	-:5;HXYY 	-,,DM? 	7"%eo"6"6Ds   D 	D*c                     t          |           t          |          }|j        s,|j                            t	          | j                             t                      }i }|j                                        D ]}t          |t          j                  r|j        t          |dg           v r6|                     ||          }|O|j        p!|                    d          ot"          j         }|r|                    |j                   |                     ||           |j        t          |dg           v rd|d<   t+          |          ||j        <   t-          ||          rg }t/          ||t1          |j                            S )Nexclude_fieldsr  deprecate_fieldsTrs   )r   r   rl   )r)   r8   contextr\   r4   r   r  r   r   r   r   HiddenFieldrl  r   rx  r   r_   rN   COMPONENT_NO_READ_ONLY_REQUIREDaddr  rK   rD   r2   r9   r   )r   r   r   r   r   r   r   add_to_requireds           r   r  z AutoSchema._map_basic_serializer  s   
+++#J//
 ! 	K%%&>ty&I&IJJJ55
&--// 	< 	<E%!899 <
<Lb#Q#QQQ//yAAF~  iJJz**g3G3g/g   /U-...))%888<
<NPR#S#SSS'+|$+3F+;+;Ju'(( Y77 	H !
 455
 
 
 	
r   c                    |                     d          }ddd}|j        D ]I}|dk    rt          |t          j                  r
d|vrd|d<   .t          |t          j                  r
d|vrd|d<   Rt          |t          j                  r|d	|vrw|j        j                            d
d          	                                }|
                    dd          }|
                    dd          
                    dd          }||d	<   t          |t          j                  r ||dt          |j                   t          |t          j                  r ||dt          |j                   Pt          |t          j                  r5|j        r.d	|vr*dd                    d |j        D                       z  |d	<   |dv rt          |t          j                  r ||dt          |j                   t          |t          j                  r ||dt          |j                   t          |t          j                  rF|j        r?d|j        |j        pdz
  z  } ||dt          |d            ||dt          | d           o|dk    rht          |t          j                  r ||dt          |j                   t          |t          j                  r ||dt          |j                   |d k    rft          |t          j                  r ||d!t          |j                   t          |t          j                  r ||d"t          |j                   Kd S )#Nr   F)	exclusivec                    t          |          r
 |            }|                     |          }| |||          }n|}|| |<   |dv r1d|                                 }|r||k    rd| |<   d S d S || v r| |= d S d S d S )Nr  r  T)r   r_   r  )r   r   functionr  r  current_value	new_valueexclusive_keys           r   update_constraintz>AutoSchema._insert_field_validators.<locals>.update_constraint$  s      "JJsOOM($H]E::		!	#F3K,,, 9CIIKK 9 9 . M1104}--- 21"f,,}--- -,
 -,r   rD  r   emailurir   asciibackslashreplacez\xz\u00z\Z$z\A^	maxLengthr  z(?:%s)$|c                 6    g | ]}t          j        |          S r   )r=  escape)r   extns     r   r   z7AutoSchema._insert_field_validators.<locals>.<listcomp>I  s!    AsAsAsVZ")D//AsAsAsr   )integernumberr  r  r  r   TarraymaxItemsminItemsr  maxPropertiesminProperties)r_   r
   r   EmailValidatorURLValidatorRegexValidatorregexr   encodedecoder7  MaxLengthValidatorr   limit_valueMinLengthValidatormaxFileExtensionValidatorallowed_extensionsr?  MaxValueValidatorMinValueValidatorDecimalValidator
max_digitsr  )r   r   r   schema_typer  r   r   r  s           r   r  z#AutoSchema._insert_field_validators!  s   jj((IN 	. 	. 	. 	. 	." ! '	S '	SAh&&a!:;; uv--+2x(:#:;; uv--+0x(:#<== u .."#'/"8"8BT"U"U"\"\"^"^")//%"A"A")//%"="="E"EeS"Q"Q,3y):#@AA u%%fk3NNNN:#@AA u%%fk3NNNN:#DEE u!J^ u ..,5AsAs^_^rAsAsAs8t8t,ty) 555a!=>> V%%fiamLLLL:#?@@ V%%fiamLLLL:#>?? VAL V1<13C3Hq#IJE%%fietTTTT%%fiufPTUUUU''a!>?? N%%fj#q}MMMM:#@AA N%%fj#q}MMM((a!>?? S%%fosAMRRRR:#@AA S%%fosAMRRRO'	S '	Sr   c                 ,   t          |d          p!t          |                              d          }t          |          st	          |          r#|                     t          |          d          S t          |t                    r|S 	 t          |          }nA# t          $ r4 t          d|j         d           t          t          j                  cY S w xY wt!          t          |t"          j                  r|j        n|          }|r||d<   |S )Nr   ri   r   z*unable to resolve type hint for function "zL". Consider using a type hint or @extend_schema_field. Defaulting to string.rl   )r   r<   r_   rE   r@   rx  r8   r   r   rJ   r'   r    rZ  r+   rO   r   r9   	functoolspartialfunc)r   rg   hintr   rl   s        r   r  z"AutoSchema._map_response_type_hint^  s;   FG,,Tv0F0F0J0J80T0T 	P(4.. 	P--nT.B.BJOOOdD!! 	K	6&t,,FF# 	6 	6 	6TV_ T T T   $L$455555	6 %fi.?@@LFKKf
 
  	0$/F=!s   B ;CCc                 J    t          | j        dd           }|r
 |            S d S )Npagination_class)r   r   )r   r6  s     r   ri  zAutoSchema._get_paginatorw  s3    "49.@$GG 	&##%%%tr   serializer_namec                     d| dS )N	Paginatedr   r   )r   r7  s     r   get_paginated_namezAutoSchema.get_paginated_name}  s    0?0000r   c                     t          t                              d | j                                        D                                 S )Nc                 P    g | ]#}t          |t          j                  |j        $S r   )rM   rN   PARSER_WHITELIST
media_typer   s     r   r   z*AutoSchema.map_parsers.<locals>.<listcomp>  s>     #
 #
 #
12CDD#
L#
 #
 #
r   )r   r   fromkeysr   get_parsersr   s    r   map_parserszAutoSchema.map_parsers  sN    DMM #
 #
"&)"7"7"9"9#
 #
 #
     	r   	attributec                     dv sJ d t          t                              fd| j                                        D                                 S )N)r>  r   c                     t           j        t          | t           j                  S t          | t          j                   S r)  )rN   RENDERER_WHITELISTrM   r   r   BrowsableAPIRenderer)rs    r   use_rendererz.AutoSchema.map_renderers.<locals>.use_renderer  s5    #6B"1&:&MNNN%a)GHHHHr   c                     g | ]F} |          t          |          t          |                              d           d         GS );r   )r   r   rL  )r   rG  rB  rH  s     r   r   z,AutoSchema.map_renderers.<locals>.<listcomp>  sh     #
 #
 #
|A#
 $+1i#8#8#
Ay!!'',,Q/#
 #
 #
r   )r   r   r?  r   get_renderers)r   rB  rH  s    `@r   r   zAutoSchema.map_renderers  s    44444	I 	I 	I DMM #
 #
 #
 #
 #
Y,,..#
 #
 #
     	r   c                    | j         }t          |          }	 t          |t                    rN|j        j        t          j        k    r |                                |          S |                    |          S t          |t                    rt          t          |dd                     r|                    |          S t          t          |dd                     r |                                |          S t          |d          r|j        S t          d           d S t          d           d S # t          $ r}t          d| d           Y d }~d S d }~ww xY w)	N)r   get_serializerget_serializer_classserializer_classzunable to guess serializer. This is graceful fallback handling for APIViews. Consider using GenericAPIView as view base class, if view is under your control. Either way you may want to add a serializer_class (or method). Ignoring view for now.zOEncountered unknown view base class. Please report this issue. Ignoring for nowzexception raised while getting serializer. Hint: Is get_serializer_class() returning None or is get_queryset() not working without a request? Ignoring the view for now. (Exception: ))r   r4   r   r   r   rM  rN  r   r   r   r   rO  r   	Exception)r   r   r   excs       r   r!  zAutoSchema._get_serializer  s   y*400	$// i >0N4QQQ644466wGGGG**7*;;;D'** i GD*:DAABB ..w.???gd,BDIIJJ 	644466wGGGGT#566 00p     ghhhhh 	 	 	LEHL L L        	s=   AD9 %D9 ;AD9 ;D9  D9 D9 (D9 9
E!EE!c                     g S r   r   r   s    r   r   zAutoSchema.get_examples  r   r   c                 >   d |                                  D             }|sFt          |          rt          |j        dg           }n t	          |          rt          |dg           }|pg }g }||z   D ]}|dk    r|j        r|dk    r|j        r|j        s	||v r|nd}	n|j        }	|r||	k    r?|j        s
||v r|fnd}
n't          t          t          |j                            }
|r||
vr~|                     |          rtt          |d          durb|dk    sd	|cxk    rd
k     sn t          j        rAt          j        |          }t!          |j        |                                 |          |_        |                    |           t)          |          S )zP Handles examples for request/response. purposefully ignores parameter examples c                      g | ]}|j         	|S r   )r   )r   es     r   r   z,AutoSchema._get_examples.<locals>.<listcomp>  s     KKK!!:JKAKKKr   r   r   r   zapplication/json)200201r   FrW  300)r   rB   r   r  rE   response_onlyrequest_onlyr>  status_codestuplemapr   r   rN    ENABLE_LIST_MECHANICS_ON_NON_2XXcopyr/   r  ri  r   r-   )r   r   r   r>  status_codeextrasr   filtered_examplesr   example_media_typeexample_status_codess              r   _get_exampleszAutoSchema._get_examples  s    LKt0022KKK  	D!*-- D'
(8*bIIz** D'
JCC 2&(  	.  	.GI%%'*?%J&&7+?&% 84;v4E4EZZL^""%,%7" j,>>>' M:AV:K:K~~R`$$',Sg6J-K-K'L'L$ {2FFF "":..
l V44EAA**e{.J.J.J.JU.J.J.J.J+L /K
 )G,, :7=$J]J]J_J_aj k k$$W----"#4555r   c                    | j         dvrd S |                                 }d}g }t          |t                    r|                                }n4t          |                                 t          j        |                    }|D ]\  }}t          |t                    r|j
        |j        |j        }	}}nd\  }	}|	r*|dk    r$|                    d          st          d           |                     |||d |          }|                     ||          \  }
}|
|                    ||
||	f           ||z  }|sd S dd |D             i}|r||d	<   |S )
N)PUTPATCHr   TNNz!application/x-www-form-urlencoded	multipartzxEncodings object on media types other than "application/x-www-form-urlencoded" or "multipart/*" have undefined behavior.r  c                 <    i | ]\  }}}}|t          |||          S r   )r0   )r   r>  r   r   encodings        r   r   z0AutoSchema._get_request_body.<locals>.<dictcomp>  s?       :J( 3FHhOO  r   r   )rg   r"  r   r   r   r  rA  	itertoolsrepeatrT   r   r   rm  
startswithr    rf  _get_request_for_media_typer   )r   r   request_serializerrequest_body_requiredr  media_types_iterr>  r   r   rm  r   partial_request_body_requiredr   s                r   r~   zAutoSchema._get_request_body  s   ;6664!88:: $ ($// 	]17799"4#3#3#5#5y7GHZ7[7[\\&6 	G 	G"J
*n55 01;1CZEXZdZmhH

%/"( "EEE"--k:: F @  
 ))*iTS[\\H484T4TU_aj4k4k1F1!
FHhGHHH%)FF% 	4   >E  
 ! 	='<L$r   c                 @   t          |          }t          |          r'|                     ||          }t          |          }nUt	          |          r| j        dk    rt          j        |          }d|_        |                     ||          }|sdS |j	        }d |j
                            di                                           D             |j
                            dg           }t          fd|D                       }nt          |          rt          |          }d}npt!          |          rt#          |          }d}nOt%          |t&                    r|}d}n5t)          d	| j         d
| j         d           t-                      }d|d<   d}||fS )Nri  T)NFc                 B    g | ]\  }}|                     d           |S )r  )r_   )r   r   r   s      r   r   z:AutoSchema._get_request_for_media_type.<locals>.<listcomp>8  sA       aPQPUPUV`PaPa  r   r   r   c              3       K   | ]}|vV  	d S r)  r   )r   reqreadonly_propss     r   r  z9AutoSchema._get_request_for_media_type.<locals>.<genexpr><  s(      '\'\c>(A'\'\'\'\'\'\r   Fz#could not resolve request body for  zN. Defaulting to generic free-form object. (Maybe annotate a Serializer class?)zUnspecified request bodyrl   )r8   rB   r  boolrE   rg   r`  r2  r   r   r   r_   r   anyr?   r+   rA   rJ   r   r   r    rd   r.   )r   r   r   r   rs  r  required_propsrz  s          @r   rq  z&AutoSchema._get_request_for_media_type%  s   #J//
j)) &	*11*iHHF$(LL!!:&& #	*{g%% "Yz22
%)
"//
IFFI #"{]F '.22<DDJJLL  N '-11*bAAN$''\'\'\'\^'\'\'\$\$\!!:&& 	*%j11F$)!!&z22 	*&z22F$)!!
D)) 	*F$)!!Idk I IDI I I I   ())F$>F=!$)!,,,r   r   r   c           	         |                                  }t          |          s3t          |          s$t          |          st	          |t
                    rf| j        dk    rddt          d          iiS |                                 rd| 	                    |d|          iS d| 	                    |d|          iS t	          |t                    ri }|                                D ]\  }}t	          |t                    r t          |d                   |d	d          }}nt          |          d }}| 	                    ||||          }||v r(||         d
                             |d
                    |||<   |S t          d| d| j         d| j         d           t#          t$          j                  }t          d          |d<   d| 	                    |d|          iS )NDELETE204rl   No response bodyrX  rR  rW  r   r   r  could not resolve "" for r{  l. Expected either a serializer or some supported override mechanism. Defaulting to generic free-form object.Unspecified response body)r   rE   r?   rA   r   rU   rg   r6  r   _get_response_for_coder   r   r]  r   r\   r    rd   r+   rO   r  )	r   r   response_serializersrt   r   r   media_typescontent_responser   s	            r   r   zAutoSchema._get_response_bodiesQ  sH   #<<>> .//!	\122!	\ ))=>>!	\ .@@	!	\ {h&&q1C/D/DEFF((** nt::;OQVbk:llmm4667KU^g6hhii,d33 	\I$8$>$>$@$@ 	7 	7 jdE** 8(+DGd122h+DD(+D		4+D#'#>#>z4Q\^g#h#h 9$$dOI.556Fy6QRRRR&6IdOO;&: ; ;$+ ; ;PTPY ; ; ;  
 &l&9::F$%&A$B$BF=!466vuPY6ZZ[[r   c                 :   t          |          r|                     ||          S t          |          r!|                     ||          }|r|j        nd S t          |          r.|                     |j        |          }|rt          |          nd S J d            )NFzSerializer is of unknown type.)	r@   rx  r>   r   r   rB   r  r  r*   )r   r   r   r  r   s        r   r  z"AutoSchema._unwrap_list_serializerw  s    J 		;--j)DDD ,, 	;//
IFFI$-79==47
++ 	;11*2BINNF/5?#F+++4?::::5r   c           	         
 t          t                    rj        j        j        c}
ndg c}
t                                                   }|rd|ini }si |d|pt          d          iS t                    r5 	                    j
                  si |d|pt          d          iS nt                    r7                               }|si |d|pt          d          iS |j        nt                    rt                    nt!                    rt#                    nht          t$                    rd nNt'          d d j         d j         d           t          t,          j                  t          d	          d<                                  rt3          d
          durodcxk    rdk     sn t4          j        rSt9                    rEt;          j        t?                              r$                      t?                              ntC                     "                                }|rt                    rt                    rt          j
                  r #                     $                    d                    }	tK          |	tJ          j&        |'                              t                    rj
        n          } j(        )                    |           |j        n|r|'                              |s *                    d          }tW           j,        |          }i |
 fd|D             |dS )NrB  headersrl   r  r  r  r{  r  r  r   FrW  rY  r   r  r>  c                 `    i | ]*}|t                              |                    +S r   )r0   rf  )r   r>  r   r   r   r   r   ra  s     r   r   z5AutoSchema._get_response_for_code.<locals>.<dictcomp>  sU       
 	 3&&z9j+W_``   r   )r  rl   )-r   rU   r   rl   r   r8   _get_response_headers_for_coder6  rB   r  r  rE   r   r   r?   r+   rA   rJ   r   r    rg   rd   rO   r  r   r   rN   r_  rC   r#   r  r:   r   r*   ri  r:  _get_serializer_namer&   r  get_paginated_response_schemarh   r  r   rG   r   )r   r   ra  r  r   rl   r  r  rj  paginated_namer   r   s   ``` `     @@r   r  z!AutoSchema._get_response_for_code  sm   j/22 	+#Z%;Z=P .JXX %'!K#J//
55k9MM*199g&&r 	CSgS}k.RQ?Q=R=RSSS
++ 	C11*2BINNF XW'W=+2VCUAVAVWWWX:&& 	C//
IFFI XW'W=+2VCUAVAVWWW]FF:&& 	C%j11FF&z22 	C&z22FF
D)) 	CFJJ-j - - - -di - - -  
 &l&9::F$%&A$B$BF=! z** 	IZ00==+--------1E1f-
 .j992.89LZ9X9XYY2 --.A*.M.MyYY)&11++--I I!*--I ,J77I <IIY;Z;ZI
 "&!8!89R9RS]_i9j9j!k!k-'*1$BB6JJ/A*/M/M]:++S]	  	 11)<<<" I"@@HH 	;,,\::K7	;OO



        
 #.   '

 

 

 
	
r   c                 6   i }|                                  D ]}t          |t                    s|j        s!t          |j        t                    r|d |j        D             vrOt          |j                  rt          |j                  }n<t          |j                  r!| 	                    |j        |          j
        }n|j        }|st          d|j         d           |j        t          j        t          j        fvrt          d|j                    t!          |j        ||j        |j        |j        |j        |j        |j        |j        |j        |j        |j        t5          |j                  |j                  }|d= |d= |||j        <   |S )Nc                 ,    g | ]}t          |          S r   r   )r   r   s     r   r   z=AutoSchema._get_response_headers_for_code.<locals>.<listcomp>  s    'Q'Q'QdD		'Q'Q'Qr   zresponse parameter z requires non-empty schemaz:incompatible location type ignored for response parameter r   r   r   )r   r   rS   r   r   r?   r   r+   rE   r   r   r    r   r   HEADERCOOKIEr3   r   rl   r   r   rs   r   r   r   r   r-   r   r   )r   ra  r   r   r   r   parameter_types          r   r  z)AutoSchema._get_response_headers_for_code  s   5577 +	4 +	4Ii)9:: % 9-t44'Q'Qi>P'Q'Q'QQQY^,, ()).99y~.. (00KKO" U9>UUUVVV!*:*ACSCZ)[[[bR[R`bbccc1^"+"+%1^!)$/o!)!)%1,Y-?@@$/  N  v&t$%3F9>""r   c                     |j         j        S r)  )r   rZ  )r   r   r   s      r   get_serializer_namezAutoSchema.get_serializer_name  s    #,,r   c           	         t          j        |          }|r%|s# |j        di t          |j        | |          }nd }|r|}nt	          |d          rt          |d          }nmt          t          |dd           dd           |j        j        }n@t          |          r| 
                    |j        |          S |                     ||          }|sJ |                    d          r
|d d         }t          ||          rd|z   }|dk    rt          j        r|d	z   }t#          j        d
|          st'          d| d           |S )N)auto_schemar   component_namer  ref_name
SerializeriPatchedr   Requestz	^[\w.-]+$zComponent name "z" contains illegal characters. Only "A-Z a-z 0-9 - . _" are allowed. Furthermore, "-" and "." are discoursed due to potential tooling issues. This likely leads to an invalid schema.r   )r#   r  r  r5   r   r   r   r  r  rB   r  r  r  rT  rD   rN   r  r=  matchr    )r   r   r   r  r  custom_namer   s          r   r  zAutoSchema._get_serializer_name  s   9CJOO 	(9 	7.7  :T$-49; ; ;  KK K 	CDD*&677 
	C
,<==DDWZ66
DIIU ?+DD
++ 	C,,Z-=yIII++J	BBDt==&& 	:D Y77 	$t#D	!!&:&R!)#Dxd++ 	C4 C C C   r   c                    t          |           t          |          }t          |j                  5  t	          |                     |||          t          j        |          }|| j        v r| j        |         cd d d            S | j                            |           | 	                    |||          |_
        |j
         pA|j
                            d          dk    o#|j
                            d           od|j
        v}|r$| j        |= t	          d d           cd d d            S |cd d d            S # 1 swxY w Y   d S )N)r   r   r  r   r  r   r  )r)   r8   r   r   r&   r  r  rh   registerr   r   r_   )r   r   r   r  r  discard_components         r   r   zAutoSchema.resolve_serializer>  s    	 
+++#J//
z344 	 	)..z9FWXX&-!  I
 DM))}Y/	 	 	 	 	 	 	 	 M""9---#33J	K\]]I $$  $((00H< G%,00>>>G.i6FF  ! 5M),(t443	 	 	 	 	 	 	 	4 5	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AD;BD;-D;;D?D?r)  )r   )Frj  )r   )Nr   )HrZ  rY  __qualname__r<  r   r%   r   rV   r   r|  rw   rW   r   r   r   r   rS   r   r   r   r|   ry   rz   r   r{   r  r   r"  r   r}   r   r   rQ   r,  rx   r   r&  r   r   rc  r   r   rU  rx  r  r   r  r  r  r  r  ri  r:  rA  r   r!  rR   r   rf  r~   rq  rP   r   r  r  r  r   r  r  r  r&   r   r   r   r   rY   rY   4   s)       ! N== = 	=
 = (= 
+	= = = =~T     (A T    Bd    e4Do4U.V)W    = = = =~
[(9 
 
 
 
(-k!2 (- (- (- (-T& & & & &Xc]    !HT#s(^$< ! ! ! !8E$sCx.#2E,F#G    4${+ 4 4 4 4l&(A & & & &&(?*C & & & &"$s) " " " "    8 8 8ttO4    3# 3 3 3 3&t    0S	 0 0 0 02 2 2h9T#Y 9 9 9 9  H H H76 76 76raE aE aE aEF	0S 0; 04 0 0 0 0R R R R  6. . .`*
 *
 *
X;S ;S ;Sz  2  1# 1# 1 1 1 1T#Y    s tCy          Dd>2    46 46 46 46l1 1 1 1f*- *- *- *-X$\ $\i $\ $\ $\ $\ $\L
;Y 
;8T_K` 
; 
; 
; 
;Z
 Z
 Z
 Z
x/ /S^ / / / /b-k.D -QZ -_b - - - -) )VY ) ) ) )X X]   - :C 	           r   rY   )tr`  r1  rn  r=  collectionsr   typingr   r   r   r   r   r   django.corer	   rW  r
   	django.dbr   django.utils.translationr   r6  rest_frameworkr   r   r   rest_framework.fieldsr   r   rest_framework.genericsr   r   r   rest_framework.mixinsr   !rest_framework.schemas.inspectorsr   rest_framework.schemas.utilsr   rest_framework.settingsr   rest_framework.utils.model_metar   rest_framework.viewsr   drf_spectacular.authenticationdrf_spectaculardrf_spectacular.serializersdrf_spectacular.contribdrf_spectacular.drainager   r   r   r   r    drf_spectacular.extensionsr!   r"   r#   r$   drf_spectacular.plumbingr%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   drf_spectacular.settingsrN   drf_spectacular.typesrO   drf_spectacular.utilsrP   rQ   rR   rS   rT   rU   rV   rW   rY   r   r   r   <module>r     s            				 # # # # # # 3 3 3 3 3 3 3 3 3 3 3 3 3 3     7 7 7 7 7 7 " " " " " "       6 6 6 6 6 6 > > > > > > > > > > : : : : : : : : T T T T T T T T T T 0 0 0 0 0 0 ; ; ; ; ; ; ; ; ; ; ; ; 0 0 0 0 0 0 : : : : : : ( ( ( ( ( ( % % % % " " " " % % % % _ _ _ _ _ _ _ _ _ _ _ _ _ _                                                                                                 : 9 9 9 9 9 . . . . . .                   j j j j j j j j j jr   