
    MKi                       % S SK Jr  S SKrS SKrS SKrS SKJrJr  S SKJ	r	J
r
JrJrJrJr  S SKJr  S SKJrJrJr  S SKJr  SS jrSS	 jrSS
 jr\" 5       rS\S'   SS jr    SS jrSS jr\R@                  " 5       r!S\S'   SS jr"g)    )annotationsN)	GeneratorSequence)	AnnotatedAnyOptionalUnion
get_originget_type_hints)	BaseModel)NotRequiredReadOnlyRequired)MISSINGc                   [        U [        R                  5      (       a  [        S U R                   5       5      $ [        U S5      (       ap  [        U S5      (       a_  [        U 5      nU[        L a  gU[        L a  [        S U R                   5       5      $ U[        L a  [        U R                  S   5      $ USL $ [        U S5      (       a"  U R                  b  [        U R                  5      $ U SL $ )	zCheck if a type is Optional.c              3  ^   #    U  H#  o[        S 5      L =(       d    [        U5      v   M%     g 7fNtype_is_optional_type.0args     ]/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/langgraph/_internal/_fields.py	<genexpr>$_is_optional_type.<locals>.<genexpr>   s(      
CQC4:7!23!77>   +-
__origin____args__Tc              3  ^   #    U  H#  o[        S 5      L =(       d    [        U5      v   M%     g 7fr   r   r   s     r   r   r      s(      GUtDz!;%6s%;;~r   r   N	__bound__)
isinstancetypes	UnionTypeanyr   hasattrr
   r   r	   r   r   r!   type_origins     r   r   r      s     %)) 
CH>>
 
 	
 ul##z(B(BE"XU? GL~~   Y$U^^A%677~uk""u'B 11D=    c                    [        U 5      nU[        L a  gU[        L a  gU[        L d  [	        USS5      (       a  [        U R                  S   5      $ g)zCheck if an annotation is marked as Required/NotRequired.

Returns:
    - True if required
    - False if not required
    - None if not annotated with either
TFr   Nr   )r
   r   r   r   getattr_is_required_typer   r'   s     r   r-   r-   (   sQ     Fgfj$?? !233r*   c                p    [        U 5      nU[        L a  [        U R                  S   5      $ U[        L a  gg)zpCheck if an annotation is marked as ReadOnly.

Returns:
    - True if is read only
    - False if not read only
r   TF)r
   r   _is_readonly_typer   r   r'   s     r   r/   r/   ;   s8     F !233r*   zfrozenset[str]_DEFAULT_KEYSc                  ^  [        US[        5      n[        U5      nT U;   a	  U(       a  ggUb	  U(       a  gg[        R                  " U5      (       a  [        U 4S j[        R                  " U5       5       S5      nU(       ae  UR                  [        R                  La  UR                  SLa  UR                  $ UR                  [        R                  La  UR                  5       $ [        U5      (       a  gg)zDetermine the default value for a field in a state schema.

This is based on:
    If TypedDict:
        - Required/NotRequired
        - total=False -> everything optional
    - Type annotation (Optional/Union[None])
__optional_keys__.Nc              3  J   >#    U  H  oR                   T:X  d  M  Uv   M     g 7fr   )name)r   fr4   s     r   r   $get_field_default.<locals>.<genexpr>j   s     E21ffnQQ2s   #	#)r,   r0   r-   dataclassesis_dataclassnextfieldsdefaultr   default_factoryr   )r4   r(   schemaoptional_keysirq
field_infos   `     r   get_field_defaultrA   O   s     F$7GM
E
"C} 
 ''E**62Et

 ""+*=*==&&c1!)))++;3F3FF!1133
 r*   c              #    #    [        U 5      R                  5        H  u  pSnSn [        U S5      (       a  XR                  ;   a  U R                  U   n[        US5      (       a  UR                  b  UR                  n[        US5      (       aG  UR
                  b:  UR
                  n[        US5      (       a  [        UR                  SS5      S:X  a  Sn [        U S	5      (       a  [        U S	5      nX;   a  Xa   nXX44v   M     g! [        [        [        4 a     NIf = f! [        [        [        4 a     N=f = f7f)
z^Attempt to extract default values and descriptions from provided type, used for config schema.Nmodel_fieldsdescriptionr;   	__class____name__ PydanticUndefinedType__dict__)r   itemsr&   rC   rD   r;   r,   rE   AttributeErrorKeyError	TypeError)r   r4   typr;   rD   field	type_dicts          r   get_enhanced_type_hintsrQ   }   s5     $D)//1		t^,,9J9J1J))$/5-00U5F5F5R"'"3"3K5),,1J#mmG55#G$5$5z2F23 #'	tZ((#D*5	$'oG --E 2* )4 		 )4 		sG   #D?B1D	&D$>D?	D!D? D!!D?$D<9D?;D<<D?c                   [        U [        5      (       aN  U R                  n[        U 5      R                  R                  5        VVs0 s H  u  p4X4R                  _M     nnnOSn0 nU Vs/ s HG  n[        X[        5      =n[        Ld  M  Uc#  UR                  U[        5      c  Uc  M=  X2;   d  MD  X64PMI     sn$ s  snnf s  snf )z;Get Pydantic state update as a list of (key, value) tuples.N)
r"   r   model_fields_setr   rC   rJ   r;   r,   r   get)inputkeyskeepkvdefaultsvalues          r   get_update_as_tuplesr\      s    %##%%-1%[-E-E-K-K-MN-MTQAyyL-MN 	AUw//E? 	 ||Aw'3 	 &'Y 	
	 	 O	s   B=,CC,C3Cz5weakref.WeakKeyDictionary[type[Any], tuple[str, ...]]ANNOTATED_KEYS_CACHEc                   U [         ;   a	  [         U    $ [        U [        5      (       a  / n[        U R                  5       Hq  nUR
                  R                  S5      nUc  [        USS5      nUb  [        U[        R                  5      (       a  MR  UR                  UR                  5       5        Ms     [         R                  U [        U5      5      $ [        S[        U 5       S35      e)z0Return cached annotated keys for a Python class.__annotations__NzExpected a type, got z. )r]   r"   r   reversed__mro__rI   rT   r,   r#   GetSetDescriptorTypeextendrV   
setdefaulttuplerM   )objrV   baseanns       r   get_cached_annotated_keysri      s    
""#C((#tS[[)D--##$56C {d$5t<{je.H.HIIKK
# * $..sE$K@@/S	{"=>>r*   )r(   r   returnbool)r(   r   rj   zbool | None)r4   strr(   r   r=   	type[Any]rj   r   )r   rm   rj   z7Generator[tuple[str, Any, Any, str | None], None, None])rU   r   rV   zSequence[str]rj   zlist[tuple[str, Any]])rf   rm   rj   ztuple[str, ...])#
__future__r   r7   r#   weakrefcollections.abcr   r   typingr   r   r   r	   r
   r   pydanticr   typing_extensionsr   r   r   langgraph._internal._typingr   r   r-   r/   	frozensetr0   r_   rA   rQ   r\   WeakKeyDictionaryr]   ri    r*   r   <module>rx      s    "    / N N  = = /2&" !*~ ++\&.
&.<&.R4  K 
?r*   