
    i6                     :   d dl Z d dlZd dlZd dlmZmZ d dlmZmZ d dl mZ d dl	m
Z
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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&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3 d dl4m5Z5 d d	l6m7Z7 d d
l8m9Z9m:Z: d dl;m<Z< d dl=m>Z> d dl?m@Z@ d dlAmBZB d dlCmDZD d dlEmFZFmGZG d dlHmIZI d dlJmKZK d d	lLm7ZM d dlNmOZO d dlPmQZQmRZRmSZSmTZTmUZU d dlVmWZWmXZX d dlYmZZZ d dl[m\Z\ d dl]m^Z^m_Z_m`Z`maZa ddlbmcZc dZddZedddZfdej                  d ehde<fd!Zid"ddd#d$e<d%ejd&eeeD      d'eeeh      de<f
d(Zkd)ee   dee   fd*Zld$e<dee   fd+Zmd,ed-e
f   dej                  fd.Zod/e
d0eehe
f   de
fd1Zpd,ed-e
f   de
fd2Zqdddd3dd4d ehd,ed-e
f   d5eeh   d6eeeh      d'eeeh      d7ejd8ee_d9   df   de<fd:Zrd;ehd<e
d$e<deej   fd=Zse G d> d?             Ztd;ehd/e
d@e
dAejdetf
dBZudCed$e<ddfdDZvd$e<dEedFeehe
f   de
fdGZwe G dH dI             ZxddddddJdKeeXe\f   d$e<dLeeeehe
f   eQf      dMeeM   dNeeZ   dOee
   dPeeeDe
f      dQedRejdexfdSZydCed@e
dTeehe
f   dUeehd-f   dee
ee
   f   f
dVZz	 dedCedTeehe
f   dWeehdf   de
fdXZ{d)ee   dYeeehe
f   eTeRf   deeehe
f   ee
   f   fdZZ|d[e
dejfd\Z}d)ee   dejfd]Z~d^ee   d_eQdeehe
f   fd`Zd^ee   d_eeeehe
f   eQf      dRejdeeehe
f   eeehe
f      f   fdaZdbe<d5ehdRejdee   fdcZy)f    N)AsyncExitStackcontextmanager)copydeepcopy)	dataclass)AnyCallable	CoroutineDict
ForwardRefListMappingOptionalSequenceTupleTypeUnioncast)params)PYDANTIC_V2
ModelFieldRequiredParam	Undefined_is_error_wrapper_is_model_classcopy_field_infocreate_body_modelevaluate_forwardreffield_annotation_is_scalarget_annotation_from_field_infoget_cached_model_fieldsget_missing_field_erroris_bytes_fieldis_bytes_sequence_fieldis_scalar_fieldis_scalar_sequence_fieldis_sequence_field.is_uploadfile_or_nonable_uploadfile_annotation!is_uploadfile_sequence_annotationlenient_issubclassmay_v1sequence_typesserialize_sequence_valuevalue_is_sequence)annotation_is_pydantic_v1)BackgroundTasks)asynccontextmanagercontextmanager_in_threadpool)	Dependant)DependencyScopeError)logger)SecurityScopes)DependencyCacheKey)create_model_fieldget_path_param_names)	BaseModel)	FieldInfo)run_in_threadpool)FormDataHeadersImmutableMultiDictQueryParams
UploadFile)HTTPConnectionRequest)Response)	WebSocket)	AnnotatedLiteralget_args
get_origin   )temp_pydantic_v1_paramszForm data requires "python-multipart" to be installed. 
You can install "python-multipart" with: 

pip install python-multipart
zForm data requires "python-multipart" to be installed. It seems you installed "multipart" instead. 
You can remove "multipart" with: 

pip uninstall multipart

And then install "python-multipart" with: 

pip install python-multipart
returnc                  P   	 ddl m}  | dkD  sJ y # t        t        f$ r 	 ddlm}  | sJ 	 ddlm} |sJ n6# t        $ r* t        j                  t               t        t              d w xY wY y # t        $ r* t        j                  t               t        t              d w xY ww xY w)Nr   )__version__z0.0.12)parse_options_header)python_multipartrN   ImportErrorAssertionError	multipartmultipart.multipartrO   r5   error!multipart_incorrect_install_errorRuntimeErrormultipart_not_installed_error)rN   rO   s     j/Users/bowang/.openclaw/workspace/ChatDev/.venv/lib/python3.12/site-packages/fastapi/dependencies/utils.pyensure_multipart_is_installedrZ   a   s    H0 X%%%( H	H-;	P ,++ P>?"#DE4OP ,  	HLL67<=4G	H!Hs.    B%
A.
6A.3A))A..3B!!B%dependspathc                    t        | j                        sJ d       g }t        | t        j                        r'| j
                  r|j                  | j
                         t        || j                  | j                  |      S )Nz;A parameter-less dependency must have a callable dependency)r\   callscopeown_oauth_scopes)	callable
dependency
isinstancer   Securityscopesextendget_dependantr_   )r[   r\   r`   s      rY   get_parameterless_sub_dependantrh   |   sq    G&&' E' #%'6??+/mm)	     Fskip_repeatsvisitedparent_oauth_scopes	dependantrk   rl   rm   c                <   |g }|j                  | j                         |xs g | j                  xs g z   }t        di d| j                  j                         d| j                  j                         d| j                  j                         d| j                  j                         d| j                  j                         d| j                  d| j                  d| j                  d	| j                  d
| j                  d| j                  d| j                   d| j"                  d| j$                  d|d| j&                  d| j(                  d| j*                  }| j,                  D ]&  }|r|j                  |v rt/        ||||j                        }|j,                  j                  |       |j                  j1                  |j                         |j                  j1                  |j                         |j                  j1                  |j                         |j                  j1                  |j                         |j                  j1                  |j                         |j,                  j1                  |j,                         ) |S )Npath_paramsquery_paramsheader_paramscookie_paramsbody_paramsnamer^   request_param_namewebsocket_param_namehttp_connection_param_nameresponse_param_namebackground_tasks_param_namesecurity_scopes_param_namer`   rm   	use_cacher\   r_   rj    )append	cache_keyoauth_scopesr3   rp   r   rq   rr   rs   rt   ru   r^   rv   rw   rx   ry   rz   r{   r`   r|   r\   r_   dependenciesget_flat_dependantrf   )rn   rk   rl   rm   use_parent_oauth_scopesflat_dependantsub_dependantflat_subs           rY   r   r      s    NN9&&'28b$"  ))..0++002  --224  --224	
 ))..0 ^^ ^^ %77 ';; $-#G#G &99 %.$I$I $-#G#G #33 4  %%!" ^^#$ oo%N( #//M33w>%% . ; ;	
 	##**84""))(*>*>?##**8+@+@A$$++H,B,BC$$++H,B,BC""))(*>*>?##**8+@+@A 0" ri   fieldsc                     | s| S | d   }t        |       dk(  r,t        |j                        rt        |j                        }|S | S )Nr      )lenr   type_r!   )r   first_fieldfields_to_extracts      rY   _get_flat_fields_from_paramsr      sH    )K
6{aOK,=,=>3K4E4EF  Mri   c                     t        | d      }t        |j                        }t        |j                        }t        |j                        }t        |j
                        }||z   |z   |z   S )NT)rk   )r   r   rp   rq   rr   rs   )rn   r   rp   rq   rr   rs   s         rY   get_flat_paramsr      sc    '	EN.~/I/IJK/0K0KLL01M1MNM01M1MNM%5EEri   r^   .c                    t         j                  dk\  rt        j                  | d      }nt        j                  |       }t        j                  |       }t        |di       }|j                  j                         D cg c]M  }t        j                  |j                  |j                  |j                  t        |j                  |            O }}t        j                  |      }|S c c}w )N   
   Teval_str__globals__)ru   kinddefault
annotation)sysversion_infoinspect	signatureunwrapgetattr
parametersvalues	Parameterru   r   r   get_typed_annotationr   	Signature)r^   r   	unwrappedglobalnsparamtyped_paramstyped_signatures          rY   get_typed_signaturer      s    
7"%%dT:	%%d+	t$Iy-4H ))002 3E 	MM+E,<,<hG		
 3   ''5Os   ?AC*r   r   c                 r    t        | t              r&t        |       } t        | ||      } | t	        d       u ry | S N)rc   strr   r   type)r   r   s     rY   r   r      s9    *c"
+
(XxH
d#ri   c                 0   t         j                  dk\  rt        j                  | d      }nt        j                  |       }t        j                  |       }|j
                  }|t        j                  j                  u ry t        |di       }t        ||      S )Nr   Tr   r   )
r   r   r   r   r   return_annotationr   emptyr   r   )r^   r   r   r   r   s        rY   get_typed_return_annotationr      s}    
7"%%dT:	%%d+	t$I,,JW&&,,,y-4H
H55ri   T)ru   r`   rm   r|   r_   ru   r`   r|   r_   )functionrequestc           
      6   t        ||| ||||      }|xs g |xs g z   }t        |       }	t        |      }
|
j                  }|j	                         D ]C  \  }}||	v }t        ||j                  |j                  |      }|j                  O|j                  j                  sJ |j                  s|j                  rY|j                  dk(  rJ|j                  j                  dk(  r1|j                  sJ t        d|j                  j                    d      g }t#        |j                  t$        j&                        r5|j                  j(                  rt+        |j                  j(                        }t-        | |j                  j                  ||||j                  j.                  |j                  j                        }|j0                  j3                  |       t5        ||j6                  |      r|j8                  
J d	|       |j8                  J t#        |j8                  j:                  t$        j<                  t>        j<                  f      r'|j@                  j3                  |j8                         -tC        |j8                  |
       F |S )N)r^   ru   r\   r|   r_   r`   rm   )
param_namer   valueis_path_paramr   r   zThe dependency "zS" has a scope of "request", it cannot depend on dependencies with scope "function".)r\   r^   ru   r`   rm   r|   r_   r   type_annotationrn   z0Cannot specify multiple FastAPI annotations for )fieldrn   )"r3   r9   r   r   itemsanalyze_paramr   r   r[   rb   is_gen_callableis_async_gen_callablecomputed_scoper_   r^   r4   __name__rc   r   rd   re   listrg   r|   r   r~   !add_non_field_param_to_dependencyr   r   
field_infoBodyrK   rt   add_param_to_fields)r\   r^   ru   r`   rm   r|   r_   rn   current_scopespath_param_namesendpoint_signaturesignature_paramsr   r   r   param_detailssub_own_oauth_scopesr   s                     rY   rg   rg      s}    )/I */R4D4JKN+D1,T2)44-335
E"&66%!''--'	
   , ((3333**i.M.M,,	9!))//:= ~~%~*&y~~'>'>&? @Y Y  /1 -//A ((//+/0E0E0L0L+M()"**55!5$2'//99#++11M ""))-8,!)99

 !&&. B:.Q. ""...**V[[:Q:V:V,W
 !!(()<)<=m&9&9YOe 6f ri   r   r   c                 $   t        |t              r| |_        yt        |t              r| |_        yt        |t
              r| |_        yt        |t              r| |_        yt        |t              r| |_
        yt        |t              r| |_        yy )NT)r*   rC   rv   rE   rw   rB   rx   rD   ry   StarletteBackgroundTasksrz   r6   r{   r   s      rY   r   r   M  s     /73'1	$	OY	7)3	&	O^	</9	,	OX	6(2	%	O-E	F0:	-	O^	</9	,ri   c                   L    e Zd ZU eed<   eej                     ed<   ee   ed<   y)ParamDetailsr   r[   r   N)	r   
__module____qualname__r   __annotations__r   r   Dependsr   r}   ri   rY   r   r   e  s"    fnn%%Jri   r   r   r   c                 V   d }d }t         }t         }|t        j                  j                  ur|}|}t	        |      t
        u rt        |      }|d   }|dd  D 	cg c]3  }	t        |	t        t        j                  t        j                  f      r|	5 }
}	|
D 	cg c][  }	t        |	t        j                  t        j                  t        j                  t        j                  t        j                  f      r|	] }}	|r|d   }nd }t        |t        t        j                  f      rt        ||      }|j                   t"        t        j"                  hv sD|j                   t$        t        j$                  hv s"J d|j&                  j(                   d| d       |t        j                  j                  ur|rJ d       ||_        n(t$        |_        nt        |t        j                        r|}t        |t        j                        r|
J d	|        |
J d
|        |}nKt        |t        t        j                  f      r+|
J d|        |}t*        rt        |t              r||_        |.|j.                  "t1        |      }t3        j4                  ||      }t7        |t8        t:        t<        t>        t@        tB        f      r|
J d|       |J d|       |||t        j                  j                  ur|nt$        }|rt        jD                  |      }ntG        |      stI        |      rt        jJ                  ||      }n^tM        |      s;tO        |      rt        j                  ||      }n/t        j                  ||      }nt        jP                  ||      }d }||rKt        |t        jD                  t        jD                  f      swJ d|j&                  j(                   d|        t        |t        j                  t        j                  f      r,tS        |dd       t        jT                  jV                  |_,        t[        |||       }t        |t        j\                  t        j\                  f      r
t_                |j`                  s tS        |dd       r| j5                  dd      }n|j`                  xs | }||_0        tc        | ||j                   ||j                   t$        t        j$                  t"        fv |      }|rte        |      snJ d       t        |t        jP                  t        jP                  f      r=te        |      s2tg        |      s'ti        |jj                        rtS        |dd      dk(  sJ tm        |||      S c c}	w c c}	w )Nr   r   )r   r   `z1` default value cannot be set in `Annotated` for z). Set the default value with `=` instead.z*Path parameters cannot have default valueszGCannot specify `Depends` in `Annotated` and default value together for zaCannot specify a FastAPI annotation in `Annotated` and `Depends` as a default value together for zQCannot specify FastAPI annotations in `Annotated` and default value together for )rb   z"Cannot specify `Depends` for type z+Cannot specify FastAPI annotation for type )r   )r   r   zCannot use `z` for path param in_convert_underscores_-)ru   r   r   aliasrequiredr   )r   z1Path params must be of one of the supported typesshape)r   r[   r   )7r   r   r   r   rI   rF   rH   rc   r;   r+   r   r   ParamrK   r   r   r   r   r   	__class__r   r   r   rb   r   dataclassesreplacer*   rC   rE   rB   rD   r   r6   Pathr(   r)   Filer   r/   Queryr   
ParamTypesqueryr   r    FormrZ   r   r8   r%   r&   r   r   r   )r   r   r   r   r   r[   r   use_annotationannotated_argsargfastapi_annotationsfastapi_specific_annotationsfastapi_annotationdefault_valuer   use_annotation_from_field_infor   s                    rY   r   r   l  s    JGON**000#$.!Y.!*-(+ &ab)
)#	6+;+;V^^LM ) 	 
 +(
*LL+11KK+00NN	 * 	% (
 ( -R0  "&(9f6F6F*GH(-.J %%  *  ##v7K7K'LL J((112 3$$.>1Z\	 M G--333(V*VV(%*
"%2
"*FNN;(G%( 	
'N,	
 ! 	
++5.:	
! 	EIv'7'78	9! 	
'N,	
! 
*i0(7
% w119w-%%g/J $	

 X"D_DW XX! 	
9/9LM	
! 
	!&g.?.?.E.E!E=  ?J;
.?VJ+G(8499-}
 $[[-}
  WJEV[[*A*F*FG  z33<<= >>#  zFLL2I2O2O#PQ
E408#..44JN)G*
&
 j6;;0G0L0L"MN)+GJ8Mt$T&&sC0E$$2
E 
"0&&''v33Y?@!
 "/ C/ 
V\\3J3P3P$QR&+E2#EKK0w2a7 PUVVM

(
s   8V!A V&r   c                 $   | j                   }t        |dd       }|t        j                  j                  k(  r|j
                  j                  |        y |t        j                  j                  k(  r|j                  j                  |        y |t        j                  j                  k(  r|j                  j                  |        y |t        j                  j                  k(  sJ d| j                          |j                  j                  |        y )Nr   z>non-body parameters must be in path, query, header or cookie: )r   r   r   r   r\   rp   r~   r   rq   headerrr   cookieru   rs   )r   rn   r   field_info_ins       rY   r   r   '  s    !!JJt4M))...$$U+	&++11	1%%e,	&++22	2&&u- 1 1 8 88 	
LUZZLY	
8 	&&u-ri   stack
sub_valuesc                   K   | j                   sJ | j                  r t        | j                         di |}n0| j                  r$t	         t        | j                         di |      }|j                         d {   S 7 w)Nr}   )r^   r   r1   r   r2   r   enter_async_context)rn   r   r   cms       rY   _solve_generatorr   7  st      >>>&&0 0>:>		"	")*H.*H*V:*VW**2....s   A;B=B>Bc                   `    e Zd ZU eeef   ed<   ee   ed<   ee	   ed<   e
ed<   eeef   ed<   y)SolvedDependencyr   errorsbackground_tasksresponsedependency_cacheN)r   r   r   r   r   r   r   r   r   r   rD   r7   r}   ri   rY   r   r   B  s=    cNI788-s233ri   r   )bodyr   r   dependency_overrides_providerr  r   r  r   r   r  r  async_exit_stackembed_body_fieldsc        	         	  K   | j                   j                  d      }	t        |	t              sJ d       | j                   j                  d      }
t        |
t              sJ d       i }g }|t	               }|j
                  d= d |_        |i }|j                  D ]  }t        t        dt        f   |j                        |_        |j                  }|}|ro|j                  rc|j                  }t        |di       j                  ||      }|j                  }t        |||j                   |j"                  |j                         }t%        | ||||||||		       d {   }|j&                  }|j(                  r|j+                  |j(                         |j,                  r|j.                  |v r||j.                     }n|j0                  s|j2                  r4|	}|j                   d
k(  r|
}t5        |||j6                         d {   }nE|j8                  r |di |j6                   d {   }nt;        |fi |j6                   d {   }|j                   |||j                   <   |j.                  |vs|||j.                  <    t=        |j>                  | j>                        \  }}t=        |j@                  | j@                        \  }}t=        |jB                  | j
                        \  }}t=        |jD                  | jF                        \  }}|jI                  |       |jI                  |       |jI                  |       |jI                  |       |||z   |z   |z   z  }|jJ                  rEtM        |jJ                  ||       d {   \  }}|jI                  |       |j+                  |       |jN                  r| ||jN                  <   |jP                  r t        | tR              r| ||jP                  <   n+|jT                  rt        | tV              r| ||jT                  <   |jX                  r|
t[               }|||jX                  <   |j\                  r|||j\                  <   |j^                  r#ta        |j"                        ||j^                  <   tc        |||||      S 7 S7 7 7 m7 )w)Nfastapi_inner_astackz/fastapi_inner_astack not found in request scopefastapi_function_astackz2fastapi_function_astack not found in request scopezcontent-length.dependency_overrides)r\   r^   ru   rm   r_   )	r   rn   r  r   r   r  r  r  r  r   )rn   r   r   )body_fieldsreceived_bodyr  )re   )r   r   r   r   r  r}   )2r_   getrc   r   rD   headersstatus_coder   r   r	   r   r^   r	  r   r\   rg   ru   r   solve_dependenciesr   r   rf   r|   r   r   r   r   r   is_coroutine_callabler<   request_params_to_argsrp   rq   rr   rs   cookiesupdatert   request_body_to_argsrx   rv   rC   rw   rE   rz   r0   ry   r{   r6   r   )r   rn   r  r   r   r  r  r  r  request_astackfunction_astackr   r   r   r^   use_sub_dependantoriginal_calluse_pathsolved_resultsolved
use_astackpath_valuespath_errorsquery_valuesquery_errorsheader_valuesheader_errorscookie_valuescookie_errorsbody_valuesbody_errorss                                  rY   r  r  K  s     ]]&&'=>Nnn5 95 mm''(ABOo~6 <6  FF:-.#"//!(38"4m6H6HI!!))-BB)..M-/Erc-/  *..H -"''$1$>$>#))! 1'-*G--/

 

 )99MM-../""}'>'>BR'R%m&=&=>F--1B1X1X'J""j0,
++ (// F
 447-"6"677F,TJ]5I5IJJF))/F=%%&""*::8>]445q 0r  6w22 K "8 4 4"L, $:$ M= $:$ M= MM+
MM,
MM- 
MM- 
kL(=8=HHF '!--/
 
	
 	k"k"++7>y334##
7G(D/6y++,		'	'Jw	,J18y--.,,#.08Hy445$$08y,,-++7E))8
y334 )) a

. 8J4
sc   ER?R0B(R?R3&R?-R6.R?R9-R?<DR?R<DR?3R?6R?9R?<R?r   locc                    |2| j                   rd t        |      gfS t        | j                        g fS | j	                  |||      \  }}t        |      rd |gfS t        |t              rt        j                  |d      }d |fS |g fS )N)r'  r}   )r   
loc_prefix)
r   r"   r   r   validater   rc   r   r+   _regenerate_error_with_loc)r   r   r   r'  v_errors_
new_errorss          rY    _validate_value_with_model_fieldr/    s     }>>1c:;;;EMM*B....C.8KB!gY	GT	"66gRTU
Z2vri   r   c                    |xs | j                   }t        |       r(t        |t        t        f      r|j                  |      }n|j                  |d       }|bt        | j                  t        j                  t        j                  f      rt        |t              r|dk(  st        |       r0t        |      dk(  r"| j                  ry t        | j                        S |S )N r   )r   r'   rc   r?   r>   getlistr  r   r   r   rK   r   r   r   r   r   )r   r   r   r   s       rY   _get_multidict_valuer3    s      U[[EJv8JG7T$Uu%

5$'u''&++7N7S7S)TU5#&e$Uq>>EMM**Lri   received_paramsc                    i }g }| s||fS | d   }| }d}d}t        |       dk(  rHt        |j                  t              r.t	        |j                        }d}t        |j                  dd      }i }t               }	|D ]  }
d }t        |t              rZt        |
j                  d|      }|rA|
j                  |
j                  k7  r|
j                  n|
j                  j                  dd      }t        |
||      }||||
j                  <   |	j                  |xs |
j                          |j                         D ]e  }||	vst!        |d	      r>|j#                  |      }t        |t$              rt        |      dk(  r	|d   ||<   L|||<   R|j'                  |      ||<   g |rv|j                  }t        |t(        j*                  t,        j*                  f      sJ d
       |j.                  j0                  f}t3        ||||      \  }}|j                  |i|fS | D ]  }
t        |
|      }|
j                  }t        |t(        j*                  t,        j*                  f      sJ d
       |j.                  j0                  |
j                  f}t3        |
|||      \  }}|r|j5                  |       |||
j                  <    ||fS )Nr   FTr   r   r   r   )r   r2  z"Params must be subclasses of Paramr   r   r   r'  )r   r*   r   r:   r!   r   r   setrc   r>   r   ru   r   r3  addkeyshasattrr2  r   r  r   r   rK   r   r   r/  rf   )r   r4  r   r   r   r   single_not_embedded_fielddefault_convert_underscoresparams_to_processprocessed_keysr   r   r   r   keyr   r'  r,  r-  s                      rY   r  r    s     F#%Fv~)K %"&
6{a.{/@/@)L3K4E4EF$(! '.""$94'
# )+UN"ow/ #*  "79T# # {{ejj0 KK++C5 
 %UO5I-2ekk*5/EKK0# #& ##%n$	2'//4eT*E
a-21X%c*-2%c*)8)<)<S)A!#& & ! ++
*v||5L5R5R&ST 	
0	
T !+ 4 466%6v3
G   "%w..$UO<%%
*v||5L5R5R&ST 	
0	
T ~~##U[[16uV
G MM'"!#F5::  6>ri   
field_typec                 ~    ddl m} t        |       }|t        ur||uryt	        |       }|D ]  }t        |      r y y)zJCheck if field type is a Union where all members are BaseModel subclasses.r   )	UnionTypeFT)fastapi.typesrB  rI   r   rH   r   )r@  rB  origin
union_argsr   s        rY   is_union_of_base_modelsrF  V  sG    '
#F UvY6*%Js#  ri   c                 \   | sy| D ch c]  }|j                    }}t        |      dkD  ry| d   }t        |j                  dd       ryt	        |j                  t
        j                  t        j                  f      r+t        |j                        st        |j                        syyc c}w )NFr   Tr   embed)ru   r   r   r   rc   r   r   rK   r   r   rF  )r   r   body_param_names_setr   s       rY   _should_embed_body_fieldsrJ  i  s     5;;F5EJJF;
 1$)K{%%w5 	;))FKK9P9U9U+VW 1 12'(9(9:! <s   B)r
  r  c                   K   i }| D ]f  }t        ||      }|j                  }t        |t        j                  t
        j                  f      r4t        |      r)t        |t              r|j                          d {   }nt        |      rt        |t        j                  t
        j                  f      rt        |      rt        |t              sJ g dt        g t        t        t        t        f   f   dd ffd}t        j                          4 d {   }|D ]  }|j#                  ||j                           d d d       d {    t%        |      }|X|||j&                  <   i | D ch c]  }|j&                   }	}|j)                         D ]4  }
|
|	vs|j+                  |
      }t-        |      dk(  r	|d   ||
<   0|||
<   6 |S 7 X7 7 # 1 d {  7  sw Y   xY wc c}w w)NfnrL   c                 R   K    |         d {   }j                  |       y 7 wr   )r~   )rL  resultresultss     rY   
process_fnz&_extract_form_body.<locals>.process_fn  s#       "tv& $s   '%')r   r   r   r   )r3  r   rc   r   r   rK   r#   rA   readr$   r.   r,   r	   r
   r   anyiocreate_task_group
start_soonr-   r   r9  r2  r   )r
  r  r   r   r   r   rP  tg	sub_valuefield_aliasesr?  param_valuesrO  s               @rY   _extract_form_bodyrY    s     F$UM:%%
zFKK1H1M1M#NOu%5*-**,&E#E*:5L5Q5Q'RS!%( e^444/1G'R3S=!99:'' ..00B!&IMM*inn= "' 10 -5HE"'F5;;; < /::kUU[[kM:!!#m#(005L< A%*1os*s $ M= '  10000 ;ss   A9G5<G=BG5GG5$G?G5
GG5 G56G0	G5#2G5G5G5G-	!G$"G-	)G5c                   K   i }g }| sJ d       t        |       dk(  xr | }| d   }|}| }|r:t        |j                        r%t        |t              rt        |j                        }t        |t              rt        ||       d {   }|r$d}	t        ||||	      \  }
}|j                  |
i|fS | D ]e  }d|j                  f}	d }|	 |j                  |j                        }t        ||||	      \  }
}|r|j                  |       W|
||j                  <   g ||fS 7 # t        $ r |j                  t        |	             Y w xY ww)Nz3request_body_to_args() should be called with fieldsr   r   )r  r6  r  )r   r   r   rc   r=   r!   rY  r/  ru   r   r  AttributeErrorr~   r"   rf   )r
  r  r  r   r   r;  r   body_to_processr   r'  r,  r-  r   r   s                 rY   r  r    sw    
  F#%FMMM; #K 0A 5 O>O:Oa.K#O*5 	"K--.}h/3K4E4EF-* 23Dm TT (6_V
G   "%w..u{{##&'++EKK8
 7uV
G MM'"!#F5::! " 6>3 U " 5c:;s7   BED AE
D"%<E"#EEEEr   c                    | j                   sy| j                   d   }|s|S d|z   }t        | j                   |      }t        d | j                   D              }|dd}|sd|d<   t        d	 | j                   D              rt        j                  }n4t        d
 | j                   D              rt
        j                  }nt        d | j                   D              rt        j                  }nt        d | j                   D              rt
        j                  }nt        |      rt
        j                  }nt        j                  }| j                   D 	cg c]L  }	t        |	j                  t        j                  t
        j                  f      r|	j                  j                  N }
}	t        t        |
            dk(  r|
d   |d<   t        d||d |di |      }|S c c}	w )a  
    Get a ModelField representing the request body for a path operation, combining
    all body parameters into a single field if necessary.

    Used to check if it's form data (with `isinstance(body_field, params.Form)`)
    or JSON and to generate the JSON Schema for a request body.

    This is **not** used to validate/parse the request body, that's done with each
    individual body parameter.
    Nr   Body_)r   
model_namec              3   :   K   | ]  }|j                   sd   yw)TN)r   .0fs     rY   	<genexpr>z!get_body_field.<locals>.<genexpr>  s     J!;Aqzz4!;s   r  )r   r   r   c              3   d   K   | ](  }t        |j                  t        j                         * y wr   )rc   r   r   r   ra  s     rY   rd  z!get_body_field.<locals>.<genexpr>  s"     
U:TQ:allFKK0:T   .0c              3   d   K   | ](  }t        |j                  t        j                         * y wr   )rc   r   rK   r   ra  s     rY   rd  z!get_body_field.<locals>.<genexpr>  *      +A 	1<<!8!=!=>+rf  c              3   d   K   | ](  }t        |j                  t        j                         * y wr   )rc   r   r   r   ra  s     rY   rd  z!get_body_field.<locals>.<genexpr>  s"     W<VqZfkk2<Vrf  c              3   d   K   | ](  }t        |j                  t        j                         * y wr   )rc   r   rK   r   ra  s     rY   rd  z!get_body_field.<locals>.<genexpr>  rh  rf  r   
media_type)ru   r   r   r   r   r}   )rt   r   anyr   r   rK   r   r/   r   rc   r   rk  r   r7  r8   )r   ru   r  first_paramr_  	BodyModelr   BodyFieldInfo_kwargsBodyFieldInforc  body_param_media_typesfinal_fields               rY   get_body_fieldrs    s    %% ,,Q/K4J!))jI J!;!;JJH, *.Y'

U.:T:T
UU+1;;	 ++ 
 =T<X<X	WN<V<VW	W	 ++ 
 044$Y/388M"KKM $//"
/!,,6M6R6R(ST LL##/ 	 "

 s)*+q01G1J .$ 8#78K "
s   AG)rL   Nr   )r   r   r   
contextlibr   r   r   r   r   typingr   r	   r
   r   r   r   r   r   r   r   r   r   r   rR  fastapir   fastapi._compatr   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   fastapi._compat.sharedr/   fastapi.backgroundr0   fastapi.concurrencyr1   r2   fastapi.dependencies.modelsr3   fastapi.exceptionsr4   fastapi.loggerr5   fastapi.security.oauth2r6   rC  r7   fastapi.utilsr8   r9   pydanticr:   pydantic.fieldsr;   starlette.backgroundr   starlette.concurrencyr<   starlette.datastructuresr=   r>   r?   r@   rA   starlette.requestsrB   rC   starlette.responsesrD   starlette.websocketsrE   typing_extensionsrF   rG   rH   rI   r1  rK   rX   rV   rZ   r   r   rh   boolr   r   r   r   r   r   r   rg   r   r   r   r   r   r   r  r/  r3  r  rF  rJ  rY  r  rs  r}   ri   rY   <module>r     s     
 5  !            6 = . 2 3 ! 2 , B  % L 3  7 ( * F F &% % "H6 c i $ 26/333 3 d-./	3
 "$s),3 3lj)9 d:>N Fy FT*-= FhsCx0 W5F5F (S DcN s 6hsCx&8 6S 6& ,0/39=J
J 38
J 3-	J
 tCy)J "$s),J J ./56J JZ),9Bd^0      xWxW xW 	xW
 xW xWv.* . .t . //$2/@DS#X// 4 4 4 7;;?#'37@DI7I%&I I 5c3h12
3	I
 78I x I $,C=I t$6$;<=I %I I IX!$.238nCHc?
3S	>& MQ&sCx09>sDy9I0RZ R738,k7BCR 4S>49$%Rj  &d:&6 4 0,j!,, 
#s(^,^/j!/E$sCx.(":;</ / 4S>4S#X//0	/d? ?(+?@D?j?ri   