o
    ß­j^Z  ã                   @   s:	  d dl mZ d dlmZ d dlmZmZ d dlmZ d dlm	Z	m
Z
mZmZ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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$m%Z%m&Z&m'Z' e Z(e( )d¡Z*ee+ee+e+e+ee,e,e,ee-e-e-ee.e.e.eeeeiZ/e,e/ 0¡ ƒZ1e*�rd dlm2Z2 d dlm3Z3 d dlm4Z4 d dl5m6Z6 d dl7m8Z8 d dl9m:Z: d dl;m<Z< d dl=m>Z> d dl=m?Z? d dl@mAZA d dl@mBZBmCZC d dl@mDZD zd dlEmFZF W n eGyï   d dlEmHZF Y nw eBZIeBZJeCZKe8ZLe	ZMG dd„ dƒZNG dd„ deOƒZPeG dd „ d ƒƒZQd!e	d"e<d#eRd$e	fd%d&„ZSd'ee	 d$eeeRe	f  fd(d)„ZTd*ee d$d+fd,d-„ZU	.d¤d*ed/e%d0 d1e	d$e	fd2d3„ZVd*ed$e	fd4d5„ZWd6d7œd8eQd9e>d:ed;eeeQe%d< f e?f d=eXd$eeRe	f fd>d?„ZYd@eeQ d$efdAdB„ZZd6d7œd@eeQ d9e>d:ed=eXd$eeeeQe%d< f e?f eeReeRe	f f f f
dCdD„Z[d8eQd$eXfdEdF„Z\d8eQd$eXfdGdH„Z]d8eQd$eXfdIdJ„Z^d8eQd$eXfdKdL„Z_d8eQd$eXfdMdN„Z`d"e<d!e	d$e<fdOdP„Zad8eQdQe	d$ee	 fdRdS„ZbdTeeRdUf d$eeRe	f fdVdW„Zcd@eeQ dXeRd$ee fdYdZ„Zd�nìd d[lemfZf d d\lmgZD d d]lmNZN d dlm4Z4 d d^lhmMZM d d_limPZP d d`ljmkZk d dal;mlZlmmZmmnZnmoZompZpmqZqmrZr d dl;m<Z< d dbl;mQZQ d dcl;mIZI d ddl;mJZJ d del;mKZK d dflsmtZtmuZumvZvmwZw d dglsmSZS d dhlxmLZL d dlym:Z: e	Z6eeRe	f Z?e	ZAemeoeleqenerhZzeme+eoe-eqe,ene+ere+iZ{eG didj„ djƒƒZ>G dkdl„ dleOƒZ2d+d+d+dmœdne
dUe	f doeeRd+f dpe	dqe	d$e	f
drds„ZFdteeee ee f  d:eeee ee f eRf d$eeRe	f fdudv„Z|d8eQd$eXfdwdx„Z}d8eQd$eXfdydz„Z~d'ee	 d$eeeRe	f  fd{d)„ZTd*ee d$d+fd|d-„ZU	.d¤d*ed/e%d0 d1e	d$e	fd}d3„ZVd*ed$e	fd~d5„ZWd6d7œd8eQd9e>d:ed;eeeQe%d< f e?f d=eXd$eeRe	f fdd?„ZYd@eeQ d$efd€dB„ZZd6d7œd@eeQ d9e>d:ed=eXd$eeeeQe%d< f e?f eeReeRe	f f f f
d�dD„Z[d8eQd$eXfd‚dF„Z\d8eQd$eXfdƒdH„Z]d8eQd$eXfd„dJ„Z^d8eQd$eXfd…dL„Z_d8eQd$eXfd†dN„Z`d"e<d!e	d$e<fd‡dP„Zad8eQdQe	d$ee	 fdˆdS„ZbdTeeRdUf d$eeRe	f fd‰dW„Zcd@eeQ dXeRd$ee fdŠdZ„Zdd'ee	 d‹eeeRef dUf d$eeeRe	f  fdŒd�„Z€d!eee	 d+f d$eXfdŽd�„Z�d!eee	 d+f d$eXfd�d‘„Z‚dQe	d$eXfd’d“„Zƒd!eee	 d+f d$eXfd”d•„Z„d!eee	 d+f d$eXfd–d—„Z…d!e	d$eXfd˜d™„Z†d!eee	 d+f d$eXfdšd›„Z‡d!e	d$eXfdœd�„Zˆd!e	d$eXfdždŸ„Z‰d!e	d$eXfd d¡„ZŠd!e	d$eXfd¢d£„Z‹d+S )¥é    )Údeque©Úcopy)Ú	dataclassÚis_dataclass)ÚEnum)ÚAnyÚCallableÚDequeÚDictÚ	FrozenSetÚListÚMappingÚSequenceÚSetÚTupleÚTypeÚUnion)ÚRequestErrorModel)ÚIncExÚModelNameMapÚ	UnionType)Ú	BaseModelÚcreate_model)ÚVERSION)Ú
UploadFile)Ú	AnnotatedÚLiteralÚget_argsÚ
get_originz2.)ÚPydanticSchemaGenerationError)ÚTypeAdapter)ÚValidationError)ÚGetJsonSchemaHandler)Úeval_type_lenient)Úlenient_issubclass)Ú	FieldInfo)ÚGenerateJsonSchema)ÚJsonSchemaValue)Ú
CoreSchema)ÚPydanticUndefinedÚPydanticUndefinedType)ÚUrl)Ú"with_info_plain_validator_function)Ú general_plain_validator_functionc                   @   ó   e Zd ZdS )Ú
BaseConfigN©Ú__name__Ú
__module__Ú__qualname__© r5   r5   úL/var/www/html/CropPilot/venv/lib/python3.10/site-packages/fastapi/_compat.pyr0   O   ó    r0   c                   @   r/   )ÚErrorWrapperNr1   r5   r5   r5   r6   r8   R   r7   r8   c                   @   sH  e Zd ZU eed< eed< dZed ed< edefdd„ƒZ	ede
fd	d
„ƒZedefdd„ƒZedefdd„ƒZd+dd„Zdefdd„Zi fddœdedeeef deeeef df deeeeeeef  df f fdd„Zddddddddœdeded  d!eedf d"eedf d#e
d$e
d%e
d&e
defd'd(„Zdefd)d*„ZdS ),Ú
ModelFieldÚ
field_infoÚnameÚ
validation©r<   ÚserializationÚmodeÚreturnc                 C   s   | j j}|d ur
|S | jS ©N)r:   Úaliasr;   )ÚselfÚar5   r5   r6   rB   [   s   zModelField.aliasc                 C   s
   | j  ¡ S rA   )r:   Úis_required©rC   r5   r5   r6   Úrequired`   s   
zModelField.requiredc                 C   s   |   ¡ S rA   )Úget_defaultrF   r5   r5   r6   Údefaultd   ó   zModelField.defaultc                 C   s   | j jS rA   ©r:   Ú
annotationrF   r5   r5   r6   Útype_h   rJ   zModelField.type_Nc                 C   s   t t| jj| jf ƒ| _d S rA   )r!   r   r:   rL   Ú_type_adapterrF   r5   r5   r6   Ú__post_init__l   s   
ÿzModelField.__post_init__c                 C   s   | j  ¡ rtS | j jdd�S )NT)Úcall_default_factory)r:   rE   Ú	UndefinedrH   rF   r5   r5   r6   rH   q   s   
zModelField.get_defaultr5   ©ÚlocÚvalueÚvaluesrS   .c             
   C   sT   z| j j|dd�d fW S  ty) } zd t|jdd�|d�fW  Y d }~S d }~ww )NT)Úfrom_attributesF©Úinclude_url)ÚerrorsÚ
loc_prefix)rN   Úvalidate_pythonr"   Ú_regenerate_error_with_locrY   )rC   rT   rU   rS   Úexcr5   r5   r6   Úvalidatev   s   þÿ€ÿzModelField.validateÚjsonTF©r?   ÚincludeÚexcludeÚby_aliasÚexclude_unsetÚexclude_defaultsÚexclude_none©r_   Úpythonra   rb   rc   rd   re   rf   c          	   
   C   s   | j j||||||||d�S )Nr`   )rN   Údump_python)	rC   rT   r?   ra   rb   rc   rd   re   rf   r5   r5   r6   Ú	serialize‡   s   øzModelField.serializec                 C   ó   t | ƒS rA   )ÚidrF   r5   r5   r6   Ú__hash__    s   zModelField.__hash__)r@   N)r2   r3   r4   r&   Ú__annotations__Ústrr?   r   ÚpropertyrB   ÚboolrG   r   rI   rM   rO   rH   r   r   r   Úintr   r^   r   rj   rm   r5   r5   r5   r6   r9   U   sj   
 
ýûþ
ýû
úöþü
û
úùø	÷
ö
õr9   rL   r:   Ú
field_namer@   c                 C   ó   | S rA   r5   )rL   r:   rs   r5   r5   r6   Úget_annotation_from_field_info¥   s   ru   rY   c                 C   rt   rA   r5   )rY   r5   r5   r6   Ú_normalize_errorsª   ó   rv   ÚmodelNc                 C   ó   |   ¡  d S rA   )Úmodel_rebuild©rx   r5   r5   r6   Ú_model_rebuild­   ó   r|   r_   r?   rg   Úkwargsc                 K   s   | j dd|i|¤ŽS )Nr?   r5   )Ú
model_dump©rx   r?   r~   r5   r5   r6   Ú_model_dump°   s   r�   c                 C   ó   | j S rA   )Úmodel_configr{   r5   r5   r6   Ú_get_model_configµ   ó   r„   T)Úseparate_input_output_schemasÚfieldÚschema_generatorÚmodel_name_mapÚfield_mappingr=   r†   c                 C   sH   |rd nd}|| |p| j f }d|vr"| jjp| j ¡  dd¡|d< |S )Nr<   z$refÚ_ú Útitle)r?   r:   r�   rB   Úreplace)r‡   rˆ   r‰   rŠ   r†   Úoverride_modeÚjson_schemar5   r5   r6   Úget_schema_from_model_field¸   s   
ÿÿr‘   Úfieldsc                 C   ó   i S rA   r5   )r’   r5   r5   r6   Úget_compat_model_name_mapÏ   rw   r”   c                    s6   |rd nd‰ ‡ fdd„| D ƒ}|j |d�\}}||fS )Nr<   c                    s    g | ]}|ˆ p	|j |jjf‘qS r5   )r?   rN   Úcore_schema)Ú.0r‡   ©r�   r5   r6   Ú
<listcomp>á   s    ÿÿz#get_definitions.<locals>.<listcomp>)Úinputs)Úgenerate_definitions)r’   rˆ   r‰   r†   r™   rŠ   Údefinitionsr5   r—   r6   Úget_definitionsÒ   s   
ÿ
þ
ÿrœ   c                 C   s(   ddl m} t| jjƒot| j|jƒ S )Nr   ©Úparams)Úfastapirž   Úfield_annotation_is_scalarr:   rL   Ú
isinstanceÚBody)r‡   rž   r5   r5   r6   Úis_scalar_fieldê   s   ÿþr£   c                 C   ó   t | jjƒS rA   )Úfield_annotation_is_sequencer:   rL   ©r‡   r5   r5   r6   Úis_sequence_fieldñ   r}   r§   c                 C   r¤   rA   )Ú#field_annotation_is_scalar_sequencer:   rL   r¦   r5   r5   r6   Úis_scalar_sequence_fieldô   r}   r©   c                 C   ó
   t | jƒS rA   )Ú$is_bytes_or_nonable_bytes_annotationrM   r¦   r5   r5   r6   Úis_bytes_field÷   ó   
r¬   c                 C   rª   rA   )Úis_bytes_sequence_annotationrM   r¦   r5   r5   r6   Úis_bytes_sequence_fieldú   r­   r¯   c                 C   s.   t | ƒ}| |¡}t| ƒ}|j|_|j|_|S rA   )ÚtypeÚfrom_annotationr   ÚmetadatarL   )r:   rL   ÚclsÚmerged_field_infoÚnew_field_infor5   r5   r6   Úcopy_field_infoý   s   
r¶   rT   c                 C   s.   t | jjƒp	| jj}t|tƒsJ ‚t| |ƒS rA   )r   r:   rL   Ú
issubclassÚsequence_typesÚsequence_annotation_to_type)r‡   rT   Úorigin_typer5   r5   r6   Úserialize_sequence_value  s   ÿr»   rS   .c                 C   s.   t  dd| i dœg¡jdd�d }d |d< |S )NzField requiredÚmissing)r°   rS   ÚinputFrW   r   r½   )r"   Úfrom_exception_datarY   )rS   Úerrorr5   r5   r6   Úget_missing_field_error  s   ÿþþrÀ   Ú
model_namec                 C   s"   dd„ | D ƒ}t |fi |¤Ž}|S )Nc                 S   s   i | ]}|j |jj|jf“qS r5   )r;   r:   rL   ©r–   Úfr5   r5   r6   Ú
<dictcomp>  s    z%create_body_model.<locals>.<dictcomp>)r   )r’   rÁ   Úfield_paramsÚ	BodyModelr5   r5   r6   Úcreate_body_model  s   rÇ   )Ú
REF_PREFIX)ÚAnyUrl)r0   )Ú	Validator)r8   )ÚMissingError)ÚSHAPE_FROZENSETÚ
SHAPE_LISTÚSHAPE_SEQUENCEÚ	SHAPE_SETÚSHAPE_SINGLETONÚSHAPE_TUPLEÚSHAPE_TUPLE_ELLIPSIS)r9   )ÚRequired)rQ   )ÚUndefinedType)Úfield_schemaÚget_flat_models_from_fieldsÚget_model_name_mapÚmodel_process_schema)ru   )Úevaluate_forwardrefc                   @   s   e Zd ZU eed< dS )r'   Úref_templateN)r2   r3   r4   ro   rn   r5   r5   r5   r6   r'   b  s   
 r'   c                   @   r/   )r    Nr1   r5   r5   r5   r6   r    f  r7   r    )Úrefr²   r>   ÚfunctionrÛ   r²   r>   c                C   r“   rA   r5   )rÜ   rÛ   r²   r>   r5   r5   r6   r-   i  s   r-   Úflat_modelsc                 C   s^   i }| D ](}t ||td�\}}}| |¡ || }d|v r(|d  d¡d |d< |||< q|S )N©r‰   Ú
ref_prefixÚdescriptionúr   )rØ   rÈ   ÚupdateÚsplit)rÝ   r‰   r›   rx   Úm_schemaÚm_definitionsÚm_nested_modelsrÁ   r5   r5   r6   Úget_model_definitionsr  s   ÿ

rç   c                 C   sz   ddl m} | j}| jtkr*t| jtƒs*t| jtƒs*t	| jƒs*t
| jƒs*t||jƒr,dS | jr;tdd„ | jD ƒƒs;dS dS )Nr   r�   Fc                 s   ó   � | ]}t |ƒV  qd S rA   ©Úis_pv1_scalar_fieldrÂ   r5   r5   r6   Ú	<genexpr>‘  ó
   € ÿ
ÿz&is_pv1_scalar_field.<locals>.<genexpr>T)rŸ   rž   r:   ÚshaperÐ   r%   rM   r   Údictr¥   r   r¡   r¢   Ú
sub_fieldsÚall)r‡   rž   r:   r5   r5   r6   rê   ƒ  s(   

ÿ
þýü
ûþrê   c                 C   sP   | j tv rt| jtƒs| jd ur| jD ]	}t|ƒs dS qdS t| jƒr&dS dS )NFT)rí   Úsequence_shapesr%   rM   r   rï   rê   Ú_annotation_is_sequence)r‡   Ú	sub_fieldr5   r5   r6   Úis_pv1_scalar_sequence_field˜  s   ÿ

ÿ
rô   c                 C   s^   g }| D ](}t |tƒrt|gtd� ¡ }| |¡ qt |tƒr'| t|ƒ¡ q| |¡ q|S )N)rY   rx   )	r¡   r8   r"   r   rY   ÚextendÚlistrv   Úappend)rY   Ú
use_errorsr¿   Ú
new_errorsr5   r5   r6   rv   ¥  s   
ÿþ
c                 C   ry   rA   )Úupdate_forward_refsr{   r5   r5   r6   r|   ³  r}   c                 K   s   | j di |¤ŽS )Nr5   )rî   r€   r5   r5   r6   r�   ¶  s   c                 C   r‚   rA   )Ú
__config__r{   r5   r5   r6   r„   »  r…   c                 C   s   t | |td�d S )NrÞ   r   )rÕ   rÈ   )r‡   rˆ   r‰   rŠ   r†   r5   r5   r6   r‘   ¾  s
   ÿþc                 C   s   t | tƒ d�}t|ƒS )N©Úknown_models)rÖ   Úsetr×   )r’   Úmodelsr5   r5   r6   r”   Í  s   c                 C   s   t | tƒ d�}i t||d�fS )Nrü   )rÝ   r‰   )rÖ   rþ   rç   )r’   rˆ   r‰   r†   rÿ   r5   r5   r6   rœ   Ñ  s   ÿc                 C   rk   rA   ré   r¦   r5   r5   r6   r£   â  ó   c                 C   s   | j tv p	t| jƒS rA   )rí   rñ   rò   rM   r¦   r5   r5   r6   r§   å  s   c                 C   rk   rA   )rô   r¦   r5   r5   r6   r©   è  r   c                 C   s   t | jtƒS rA   )r%   rM   Úbytesr¦   r5   r5   r6   r¬   ë  r}   c                 C   s   | j tv o
t| jtƒS rA   )rí   rñ   r%   rM   r  r¦   r5   r5   r6   r¯   î  s   c                 C   rk   rA   r   rK   r5   r5   r6   r¶   ñ  r   c                 C   s   t | j |ƒS rA   )Úsequence_shape_to_typerí   )r‡   rT   r5   r5   r6   r»   ô  s   c                 C   s&   t tƒ | d�}t|gtƒ}| ¡ d S )NrR   r   )r8   rË   r"   r   rY   )rS   Úmissing_field_errorÚ	new_errorr5   r5   r6   rÀ   ÷  s   c                 C   s"   t |ƒ}| D ]}||j|j< q|S rA   )r   Ú
__fields__r;   )r’   rÁ   rÆ   rÃ   r5   r5   r6   rÇ   ü  s   rZ   c                    s   ‡ fdd„t | ƒD ƒ}|S )Nc              	      s(   g | ]}i |¥d ˆ |  d d¡ i¥‘qS )rS   r5   )Úget)r–   Úerr©rZ   r5   r6   r˜     s    ÿÿz._regenerate_error_with_loc.<locals>.<listcomp>)rv   )rY   rZ   Úupdated_loc_errorsr5   r  r6   r\     s   
þr\   c                 C   s   t | ttfƒr	dS t | tƒS )NF)r%   ro   r  r¸   ©rL   r5   r5   r6   rò     s   
rò   c                 C   s   t | ƒp	t t| ƒƒS rA   )rò   r   r
  r5   r5   r6   r¥     s   
ÿr¥   c                 C   s   t | tƒot | ttfƒ S rA   )r¡   r¸   ro   r  )rT   r5   r5   r6   Úvalue_is_sequence  s   r  c                 C   s    t | tttfƒpt| ƒpt| ƒS rA   )r%   r   r   r   rò   r   r
  r5   r5   r6   Ú_annotation_is_complex   s
   ÿýr  c                 C   sR   t | ƒ}|tu s|tu rtdd„ t| ƒD ƒƒS t| ƒp(t|ƒp(t|dƒp(t|dƒS )Nc                 s   rè   rA   )Úfield_annotation_is_complex)r–   Úargr5   r5   r6   rë   +  s   € z.field_annotation_is_complex.<locals>.<genexpr>Ú__pydantic_core_schema__Ú__get_pydantic_core_schema__)r   r   r   Úanyr   r  Úhasattr)rL   Úoriginr5   r5   r6   r  (  s   ÿþür  c                 C   s   | t u pt| ƒ S rA   )ÚEllipsisr  r
  r5   r5   r6   r    5  s   r    c                 C   sh   t | ƒ}|tu s|tu r%d}t| ƒD ]}t|ƒrd}qt|ƒs" dS q|S t| ƒo3tdd„ t| ƒD ƒƒS )NFTc                 s   rè   rA   )r    ©r–   Úsub_annotationr5   r5   r6   rë   E  rì   z6field_annotation_is_scalar_sequence.<locals>.<genexpr>)r   r   r   r   r¨   r    r¥   rð   )rL   r  Úat_least_one_scalar_sequencer  r5   r5   r6   r¨   :  s   ÿþr¨   c                 C   óH   t | tƒrdS t| ƒ}|tu s|tu r"t| ƒD ]
}t |tƒr! dS qdS ©NTF)r%   r  r   r   r   r   ©rL   r  r  r5   r5   r6   r«   K  ó   

ÿr«   c                 C   r  r  )r%   r   r   r   r   r   r  r5   r5   r6   Ú.is_uploadfile_or_nonable_uploadfile_annotationV  r  r  c                 C   óZ   t | ƒ}|tu s|tu rd}t| ƒD ]	}t|ƒrd}qq|S t| ƒo,tdd„ t| ƒD ƒƒS )NFTc                 s   rè   rA   )r«   r  r5   r5   r6   rë   j  rì   z/is_bytes_sequence_annotation.<locals>.<genexpr>)r   r   r   r   r®   r¥   rð   ©rL   r  Úat_least_oner  r5   r5   r6   r®   a  ó   þþr®   c                 C   r  )NFTc                 s   rè   rA   )r  r  r5   r5   r6   rë   y  rì   z4is_uploadfile_sequence_annotation.<locals>.<genexpr>)r   r   r   r   Ú!is_uploadfile_sequence_annotationr¥   rð   r  r5   r5   r6   r!  p  r   r!  )r_   )ŒÚcollectionsr   r   Údataclassesr   r   Úenumr   Útypingr   r	   r
   r   r   r   r   r   r   r   r   r   Úfastapi.exceptionsr   Úfastapi.typesr   r   r   Úpydanticr   r   Úpydantic.versionr   Ú	P_VERSIONÚstarlette.datastructuresr   Útyping_extensionsr   r   r   r   ÚPYDANTIC_VERSIONÚ
startswithÚPYDANTIC_V2rö   Útuplerþ   Ú	frozensetr¹   Úkeysr¸   r    r!   r"   Ú,pydantic._internal._schema_generation_sharedr#   Ú pydantic._internal._typing_extrar$   Úpydantic._internal._utilsr%   Úpydantic.fieldsr&   Úpydantic.json_schemar'   r(   Úpydantic_corer)   r*   r+   r,   Úpydantic_core.core_schemar-   ÚImportErrorr.   rÓ   rQ   rÔ   rÙ   rÊ   r0   Ú	Exceptionr8   r9   ro   ru   rv   r|   r�   r„   rq   r‘   r”   rœ   r£   r§   r©   r¬   r¯   r¶   r»   rÀ   rÇ   Úfastapi.openapi.constantsrÈ   rÉ   Úpydantic.class_validatorsÚpydantic.error_wrappersÚpydantic.errorsrË   rÌ   rÍ   rÎ   rÏ   rÐ   rÑ   rÒ   Úpydantic.schemarÕ   rÖ   r×   rØ   Úpydantic.typingÚpydantic.utilsrñ   r  rç   rê   rô   rr   r\   rò   r¥   r  r  r  r    r¨   r«   r  r®   r!  r5   r5   r5   r6   Ú<module>   s   8
õÿOÿÿÿ
þ"ÿÿÿÿ
þøþýüÿûø
	
÷ûþýüûÿýÿ
ú"ÿÿþ$	ú	ûû
ÿ
ýüû
ú	þý

ü"ÿÿÿÿ
þøþýüÿûø
	
÷	ûþýüûÿýÿ
ú"ÿÿ
þ	ÿÿ
þ