o
    f^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	.dd*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nd 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	.dd*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ddBZZd6d7d@eeQ d9e>d:ed=eXd$eeeeQe%d< f e?f eeReeRe	f f f f
ddDZ[d8eQd$eXfddFZ\d8eQd$eXfddHZ]d8eQd$eXfddJZ^d8eQd$eXfddLZ_d8eQd$eXfddNZ`d"e<d!e	d$e<fddPZad8eQdQe	d$ee	 fddSZbdTeeRdUf d$eeRe	f fddWZcd@eeQ dXeRd$ee fddZZdd'ee	 deeeRef dUf d$eeeRe	f  fddZd!eee	 d+f d$eXfddZd!eee	 d+f d$eXfddZdQe	d$eXfddZd!eee	 d+f d$eXfddZd!eee	 d+f d$eXfddZd!e	d$eXfddZd!eee	 d+f d$eXfddZd!e	d$eXfddZd!e	d$eXfddZd!e	d$eXfddZd!e	d$eXfddZd+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   G/var/www/NoticeGen/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
"

	

"$		


	

"

	
	
"
	
