
    [ǻi;p                       d dl mZ d dlZd dlZd dlZd dlZd dlZd dl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 d dlmZmZmZ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m Z m!Z! d d	l"m#Z#m$Z$m%Z%m&Z& d d
l'm(Z( d dl)m*Z* d dl+Z+d dl,m-Z- d dl.m/Z0 d dl1m2Z2 d dl3m4Z4 d dl5m6Z6 d dl7m8Z8 e#rd dl9m:Z: d dl5m6Z6  e-       Z;dZ< ejz                  e>      Z? G d de2      Z@d ZAdZBdZCdZDdZEdZFdZGd%dZH	 	 	 	 d&dZI eId      ZJd'dZK G d  d!eL      ZMe+j                  e+j                  z  e+j                  z  e+j                  z  e+j                  z  e+j                  z  ZTd(d"ZU	 	 	 	 d)d#ZV	 	 	 	 d*d$ZWy)+    )annotationsN)deque)CallableIterableSequence)datedatetimetime	timedeltatimezone)Enum)isclass)IPv4AddressIPv4InterfaceIPv4NetworkIPv6AddressIPv6InterfaceIPv6Network)TYPE_CHECKINGAnyLiteralcast)UUID)ZoneInfo)Reviver)_msgpack)SerializerProtocol)emit_serde_event)SendProtocol)Item)AllowedMsgpackModules    c                      e Zd ZdZddej
                  dd	 	 	 	 	 	 	 	 	 ddZ	 	 	 	 ddZdddd	 	 	 	 	 	 	 	 	 ddZdd	Z	dd
Z
ddZddZddZy)JsonPlusSerializera  Serializer that uses ormsgpack, with optional fallbacks.

    !!! warning

        Security note: This serializer is intended for use within the `BaseCheckpointSaver`
        class and called within the Pregel loop. It should not be used on untrusted
        python objects. If an attacker can write directly to your checkpoint database,
        they may be able to trigger code execution when data is deserialized.
    FN)pickle_fallbackallowed_json_modulesallowed_msgpack_modules__unpack_ext_hook__c                   |t         j                  u rt         j                  rd }nd}|| _        t	        |      | _        t	        |      | _        |d u| _        ||| _	        y t        | j                        | _	        y NT)
_lg_msgpack	_SENTINELSTRICT_MSGPACK_ENABLEDr%   _normalize_allowlist_allowed_json_modules_allowed_msgpack_modules_custom_unpack_ext_hook_create_msgpack_ext_hook_unpack_ext_hook)selfr%   r&   r'   r(   s        a/opt/lhia/marcimex/agent/venv/lib/python3.12/site-packages/langgraph/checkpoint/serde/jsonplus.py__init__zJsonPlusSerializer.__init__=   s     #k&;&;;11*.'*.'. !56 	" )==T(U%':$'F$ #.   	 *$*G*GH 	r"   c                    | j                   }|du s|du r| S |rt        |      }n
t               }t        t        |            }||z  }||k(  r| S |rt        |      }n<t	        | j                   t              rt        | j                         }n| j                   }t        j
                  |       }t        | j                        |_        t        |      |_         |j                  st        |j                         |_
        |S )z8Return a new serializer with a merged msgpack allowlist.TF)r0   set_normalize_module_keystuple
isinstancecopyr.   r/   r1   r2   r3   )r4   extra_allowlistbase_allowlistextramergedr'   clones          r5   with_msgpack_allowlistz)JsonPlusSerializer.with_msgpack_allowlistY   s     66T!^u%<K 0N UN&u_'=>%'^#K&+Fm#55s;&+D,I,I&J#&*&C&C#		$&:4;U;U&V#)=>U)V&,,%=..&E" r"   )methodargskwargsc                   ddg |j                   j                  d      |j                  d}|||d<   |||d<   |||d<   |S )N   constructor.)lctypeidrC   rD   rE   )
__module__split__name__)r4   rH   rC   rD   rE   outs         r5   _encode_constructor_argsz+JsonPlusSerializer._encode_constructor_argsy   si     !LK**005L{7K7KL

 "CMCK"CM
r"   c                T   | j                   rN|j                  dd       dk(  r9|j                  dd       dk(  r$|j                  dd       	 | j                  |      S t        |      S # t        $ r8}t        j                  d|d   |j                         Y d }~t        |      S d }~ww xY w)NrJ   rG   rK   rH   rL   z5Object %s is not in the deserialization allowlist.
%s)r/   get_revive_lc2InvalidModuleErrorloggerwarningmessage
LC_REVIVER)r4   valuees      r5   _reviverzJsonPlusSerializer._reviver   s    %%IIdD!Q&		&$'=8		$%1''.. %   & L$KII  %  s   
A& &	B'/$B""B'c                   | j                  |       |d   ^ }}	 t        j                  dj                  |            }t	        ||      }|j                  d      }t        |t              rt	        ||      g}n1t        |t              r|D cg c]  }||nt	        ||       }}n|g}|j                  d      }	|j                  d      }
|D ]K  }	 t        |      rt        |t              r y |	r|
r
 ||	i |
c S |	r ||	 c S |
r
 |di |
c S  |       c S  y c c}w # t        $ r Y _w xY w# t        $ r Y y w xY w)NrL   rI   rC   rD   rE    )_check_allowed_json_modules	importlibimport_modulejoingetattrrS   r;   strlistr   
issubclassBaseException	Exception)r4   rZ   modulenamemodclsrC   methodsmrD   rE   s              r5   rT   zJsonPlusSerializer._revive_lc2   sI   ((/+&$	))#((6*:;C#t$CYYx(F&#&"3/0FD)JPQQ!)3a@QQ%99V$DYYx(F! v:fm+L#%t6v66%t},%///%x R" !  		s~   A3D2 D%-D2 D#.D2 0D#;D2 >D#D2 	D#D2 D#D2 D2 D2 #	D/,D2 .D//D2 2	D>=D>c           	        t        |d         }|j                  d      }t        |t              rdj	                  d |D              }nt        |t
              r|}nd}dj	                  |      }| j                  st        d| d| d	|d
      | j                  du ry || j                  v ry t        d| d| d|d      )NrL   rC   ,c              3  (   K   | ]
  }|xs d   yw)<init>Nr^   ).0rn   s     r5   	<genexpr>zAJsonPlusSerializer._check_allowed_json_modules.<locals>.<genexpr>   s     %Dam8m%Ds   rr   rI   z)Refused to deserialize JSON constructor: z
 (method: ul   ). No allowed_json_modules configured.

Unblock with ONE of:
  • JsonPlusSerializer(allowed_json_modules=[u   , ...])
  • (DANGEROUS) JsonPlusSerializer(allowed_json_modules=True)

Note: Prefix allowlists are intentionally unsupported; prefer exact symbols or plain-JSON representations revived without import-time side effects.Tz). Symbol is not in the deserialization allowlist.

Add exactly this symbol to unblock:
  JsonPlusSerializer(allowed_json_modules=[zY, ...])
Or, as a last resort (DANGEROUS):
  JsonPlusSerializer(allowed_json_modules=True))r:   rS   r;   re   rb   rd   r/   rU   )r4   rZ   neededrC   method_displaydotteds         r5   r_   z.JsonPlusSerializer._check_allowed_json_modules   s    uT{#8$fd# XX%DV%DDN$#N%N&!))$;F8:nM] ^B CI LZZ  %%-T/// 7xz.IY Z: ;A D>>
 	
r"   c                   |dt         fS t        |t              rd|fS t        |t              rd|fS 	 dt	        |      fS # t
        j                  $ r/}| j                  rdt        j                  |      fcY d }~S |d }~ww xY w)Nnullbytes	bytearraymsgpackpickle)
EMPTY_BYTESr;   rz   r{   _msgpack_enc	ormsgpackMsgpackEncodeErrorr%   r}   dumps)r4   objexcs      r5   dumps_typedzJsonPlusSerializer.dumps_typed   s    ;;&&U#C<Y'## ,s"333// ''#V\\#%666	s#   A B"A>6B<A>>Bc                d   |\  }}|dk(  ry |dk(  r|S |dk(  rt        |      S |dk(  r!t        j                  || j                        S |dk(  r0t	        j
                  || j                  t        j                        S | j                  r|dk(  rt        j                  |      S t        d	|       )
Nry   rz   r{   json)object_hookr|   ext_hookoptionr}   zUnknown serialization type: )r{   r   loadsr\   r   unpackbr3   OPT_NON_STR_KEYSr%   r}   NotImplementedError)r4   datatype_data_s       r5   loads_typedzJsonPlusSerializer.loads_typed   s    uF?gLk!U##f_::e??i$$ 5 5i>X>X  !!ex&7<<&&%(DUG&LMMr"   )
r%   boolr&   z0Iterable[tuple[str, ...]] | Literal[True] | Noner'   ,AllowedMsgpackModules | Literal[True] | Noner(   z"Callable[[int, bytes], Any] | NonereturnNone)r=   z Iterable[tuple[str, ...] | type]r   r$   )
rH   zCallable | type[Any]rC   z!None | str | Sequence[None | str]rD   zSequence[Any] | NonerE   zdict[str, Any] | Noner   dict[str, Any])rZ   r   r   r   )rZ   r   r   r   )r   r   r   tuple[str, bytes])r   r   r   r   )rO   rM   __qualname____doc__r+   r,   r6   rB   rQ   r\   rT   r_   r   r   r^   r"   r5   r$   r$   2   s     !&QU !!BF
 
 O	
 9
 @
 

8?	H 59%)(,) 2	
 # & 
*!"B"
HNr"   r$      rG               c                   t        | d      rrt        | j                        r]t        j                  t
        t        | j                  j                  | j                  j                  | j                         df            S t        | d      rqt        | j                        r\t        j                  t        t        | j                  j                  | j                  j                  | j                         f            S t        | d      rqt        | j                        r\t        j                  t        t        | j                  j                  | j                  j                  | j                         f            S t        | d      rqt        | j                        r\t        j                  t        t        | j                  j                  | j                  j                  | j                         f            S t!        | t"        j$                        rXt        j                  t&        t        | j                  j                  | j                  j                  | j(                  f            S t!        | t*        j,                        r<t        j                  t&        t        dd| j.                  | j0                  ff            S t!        | t2              rXt        j                  t        t        | j                  j                  | j                  j                  | j4                  f            S t!        | t6        j8                        rWt        j                  t        t        | j                  j                  | j                  j                  t;        |       f            S t!        | t<        t>        t@        f      rWt        j                  t        t        | j                  j                  | j                  j                  tC        |       f            S t!        | tD        tF        tH        f      rWt        j                  t        t        | j                  j                  | j                  j                  t;        |       f            S t!        | tJ        tL        tN        f      rWt        j                  t        t        | j                  j                  | j                  j                  t;        |       f            S t!        | tP              r]t        j                  tR        t        | j                  j                  | j                  j                  | jU                         df            S t!        | tV              rot        j                  t&        t        | j                  j                  | j                  j                  | jX                  | jZ                  | j\                  ff            S t!        | t^              rot        j                  t&        t        | j                  j                  | j                  j                  | j`                  | jb                  | jd                  ff            S t!        | tf              rt        j                  t        t        | j                  j                  | j                  j                  | jh                  | jj                  | jl                  | jn                  | jp                  | jr                  d	f            S t!        | tt              r\t        j                  t&        t        | j                  j                  | j                  j                  | jw                         f            S t!        | tx              rXt        j                  t        t        | j                  j                  | j                  j                  | jz                  f            S t!        | t|              rXt        j                  t        t        | j                  j                  | j                  j                  | j~                  f            S t!        | t              rdt        j                  t&        t        | j                  j                  | j                  j                  | j                  | j                  ff            S t        j                  |       rt        j                  t        t        | j                  j                  | j                  j                  t        j                  |       D ci c]#  }|j                  t        | |j                        % c}f            S t!        | t              rqt        j                  t        t        | j                  j                  | j                  j                  | j                  D ci c]  }|t        | |       c}f            S t        j                  j                  d
      x}t!        | |j                        r| j0                  j                  r| j0                  j                  sdnd}| j0                  j                  rct        |       }	 | j                  j:                  | j                  ||f}t        j                  t        t        |            |j                          S | j                  d      }| j                  j:                  | j                  ||f}t        j                  t        t        |            S t!        | t              rt        |       S t        d| j                  j                   d      c c}w c c}w # |j                          w xY w)N
model_dumpmodel_validate_jsonget_secret_valuedict_asdictrecompilefromisoformat)hourminutesecondmicrosecondtzinfofoldnumpyFCAorderzObject of type z is not serializable)Yhasattrcallabler   r   ExtEXT_PYDANTIC_V2r   	__class__rM   rO   r   EXT_CONSTRUCTOR_SINGLE_ARGr   EXT_PYDANTIC_V1r   EXT_CONSTRUCTOR_KW_ARGSr;   pathlibPathEXT_CONSTRUCTOR_POS_ARGSpartsr   Patternpatternflagsr   hexdecimalDecimalrd   r8   	frozensetr   r:   r   r   r   r   r   r   r	   EXT_METHOD_SINGLE_ARG	isoformatr   dayssecondsmicrosecondsr   yearmonthdayr
   r   r   r   r   r   r   r   __getinitargs__r   keyr   rZ   r   nodeargdataclassesis_dataclassfieldsrj   rc   r    	__slots__sysmodulesrS   ndarrayf_contiguousc_contiguous
memoryviewdtypeshapeEXT_NUMPY_ARRAYreleasetobytesrg   repr	TypeError)r   fieldknp_modr   mvmetabufs           r5   _msgpack_defaultr     sa   sL!hs~~&>}}MM,,MM**NN$)	

 
	
 
(	)hs7K7K.L}}&MM,,MM**((*	
 		
 
f	(388"4}}MM,,MM**HHJ	
 		
 
i	 Xckk%:}}#MM,,MM**KKM	
 		
 
C	&}}$))3==+A+A399M
 	
 
C	$}}$y3;;		":;
 	
 
C	}}&))3==+A+A377K
 	
 
C	)}}&))3==+A+A3s8L
 	
 
C#y%0	1}}&))3==+A+A5:N
 	
 
C+}kB	C}}&))3==+A+A3s8L
 	
 
C+}kB	C}}&))3==+A+A3s8L
 	
 
C	"}}!MM,,MM**MMO#	

 
	
 
C	#}}$MM,,MM**XXs{{C,<,<=	
 		
 
C	}}$MM,,MM**XXsyy#''2	
 		
 
C	}}#MM,,MM** #"%**"%**'*"%** #
 	
" 
C	"}}$MM,,MM**'')	
 		
 
C	"}}&))3==+A+A377K
 	
 
C	}}&))3==+A+A399M
 	
 
C	&}}$))3==+A+ACHHcggCVW
 	
 
	!	!#	&}}#MM,,MM** &1%7%7%<! 

GC$<<	
 	
 
C	}}#MM,,MM**14?AQQ'?	
 		
 KKOOG,
,&	9jV^^? yy--cii6L6LRU99!!CB		syy%< }}_l46HI

++C+(CIIMM399eS9D==,t2DEE	C	'Cy/#--*@*@)AAUVWWK @ 

s   (m-mAm m"c                2     d fddddfdS )aB  Create msgpack ext hook with allowlist.

    Args:
        allowed_modules: Set of (module, name) tuples that are allowed to be
        deserialized, or True to allow all with warnings for unregistered types, or None to only allow safe types.

    Returns:
        An ext_hook function for use with ormsgpack.unpackb.
    c                    | |f}|t         j                  v rydu r)t        d| |d       t        j	                  d| || |       y|v ryt        d| |d       t        j	                  d| || |       y)zDCheck if type is allowed. Returns True if allowed, False if blocked.Tmsgpack_unregistered_allowed)kindri   rj   zDeserializing unregistered type %s.%s from checkpoint. This will be blocked in a future version. Add to allowed_msgpack_modules to silence: [(%r, %r)]msgpack_blockedzvBlocked deserialization of %s.%s - not in allowed_msgpack_modules. Add to allowed_msgpack_modules to allow: [(%r, %r)]F)r+   SAFE_MSGPACK_TYPESr   rV   rW   )ri   rj   r   allowed_moduless      r5   _check_allowedz0_create_msgpack_ext_hook.<locals>._check_allowed  s    tn+000d":$  NNH  &o%) 	
 	B	
 r"   c                    | ||f}|t         j                  v ryt        d| ||d       t        j	                  d| ||       y)z(Check if a method invocation is allowed.Tmsgpack_method_blocked)r   ri   rj   rC   zMBlocked deserialization of method call %s.%s.%s - not in allowed methods set.F)r+   SAFE_MSGPACK_METHODSr   rV   rW   )ri   rj   rC   r   s       r5   _check_allowed_methodz7_create_msgpack_ext_hook.<locals>._check_allowed_method1  sY    tV$+2220  		
 	*	
 r"   c           	        | t         k(  ri	 t        j                  |t        j                        } 
|d   |d         s|d   S  t	        t        j                  |d         |d         |d         S | t        k(  rf	 t        j                  |t        j                        } 
|d   |d         s|d   S  t	        t        j                  |d         |d         |d    S | t        k(  ri	 t        j                  |t        j                        } 
|d   |d         s|d   S  t	        t        j                  |d         |d         di |d   S | t        k(  rz	 t        j                  |t        j                        } |d   |d   |d         s|d   S  t	        t	        t        j                  |d         |d         |d         |d         S | t        k(  rl	 t        j                  |t        j                        } 
|d   |d         s|d   S t	        t        j                  |d         |d         }	  |di |d   S | t        k(  rl	 t        j                  |t        j                        } 
|d   |d         s|d   S t	        t        j                  |d         |d         }	  |di |d   S | t         k(  re	 dd l}t        j                  |t        j                        \  }}}}|j%                  ||j'                  |            }	|	j)                  ||      S y # t        $ r Y y w xY w# t        $ r Y y w xY w# t        $ r Y y w xY w# t        $ r Y y w xY w# t        $ r  |j                  di |d   cY S w xY w# t        $ r 	 d   cY S # t        $ r Y Y y w xY ww xY w# t        $ r  |j                  di |d   cY S w xY w# t        $ r 	 d   cY S # t        $ r Y Y y w xY ww xY w# t        $ r Y y w xY w)	Nr   r   r   rG   r   r   r   r^   )r   r   r   r   rc   r`   ra   rh   r   r   r   r   	construct	NameErrorr   model_constructr   r   
frombufferr   reshape)coder   tuprl   _np	dtype_strr   r   r   arrr   r   r   s             r5   r   z*_create_msgpack_ext_hook.<locals>.ext_hookG  sk   --''8I4N4N &c!fc!f5 q6MGwy66s1v>AGAOO --	''8I4N4N &c!fc!f5q6MGwy66s1v>AGQPP ,,	''8I4N4N &c!fc!f5q6MGwy66s1v>AGQ#a&QQ **''8I4N4N -SVSVSVDq6MwI33CF;SVDc!fa& 
 _$ ''8I4N4N &c!fc!f5q6Mi55c!f=s1vF3=Q=( _$ ''8I4N4N &c!fc!f5q6Mi55c!f=s1vF9=Q=( _$	#/8/@/@8I4N4N0,	5% nnS		)0DnE{{5{66 q         ! 3(3==23q6223   q6M     $ ! 9.3..8Q889   q6M        s  9L1 -L1 >9M  8*M  -9M '-M =M :M "9N %N 
M- 9O %O 7
N6 A#O? 1	L=<L= 	MM	MM	M*)M*-NN NN 	N3N"N3"	N/+N3.N//N36OO OO 	O<$O+(O<+	O84O<7O88O<?	P
P)ri   rd   rj   rd   r   r   )ri   rd   rj   rd   rC   rd   r   r   r   intr   rz   r   r   r^   )r   r   r   r   s   `@@@r5   r2   r2     s    -^,eN Or"   )r   c                &   | t         k(  rd	 t        j                  |t        t        j                        }|d   dk(  r,|d   dk(  r$|d   }|d d  d|dd	  d|d	d
  d|d
d  d|dd   	S |d   S | t        k(  rN	 t        j                  |t        t        j                        }|d   dk(  r|d   dk(  rddlm}  ||d    S |d   S | t        k(  r0	 t        j                  |t        t        j                        }|d   S | t        k(  r0	 t        j                  |t        t        j                        }|d   S | t        k(  r0	 t        j                  |t        t        j                        }|d   S | t        k(  r0	 t        j                  |t        t        j                        }|d   S | t        k(  rw	 dd l}t        j                  |t        t        j                        \  }}}}	|j                  |	|j!                  |            }
|
j#                  ||      j%                         S y # t
        $ r Y y w xY w# t
        $ r Y y w xY w# t
        $ r Y y w xY w# t
        $ r Y y w xY w# t
        $ r Y y w xY w# t
        $ r Y y w xY w# t
        $ r Y y w xY w)Nr   r   uuidr   r   rG      -         zlanggraph.typesSend)r  r   r   )r   r   r   _msgpack_ext_hook_to_jsonr   rh   r   langgraph.typesr  r   r   r   r   r   r   r   r   r   tolist)r   r   r  hex_r  r  r  r   r   r   r  s              r5   r  r    s   ))	##2 11C
 1vCFf$41vBQxj$q*QtBr{m1T"R[M4PRPS9+V q6M 
)	)	##2 11C
 1v**s1v/?0SV}$q6M 
(	(		##2 11C q6M 
&	&		##2 11C q6M 
	 	##2 11C q6M
 
	 		##2 11C q6M 
	 	+4+<+<2 11,(IueS
 ..CIIi,@.AC;;uE;299;; 
!  		  		  		  		  	 	  		  		s   AH* )H* 8AH9  H9 .I .I .I& :.I5 3A5J *	H65H69	II	II	I#"I#&	I21I25	J J	JJc                      e Zd ZdZddZy)rU   z7Exception raised when a module is not in the allowlist.c                    || _         y )N)rX   )r4   rX   s     r5   r6   zInvalidModuleError.__init__  s	    r"   N)rX   rd   )rO   rM   r   r   r6   r^   r"   r5   rU   rU     s
    Ar"   rU   c                B    t        j                  | t        t              S )N)defaultr   )r   packbr   _option)r   s    r5   r   r   #  s    ??4)9'JJr"   c                *    | du r| S | rt        |       S y r*   )r9   )	allowlists    r5   r.   r.   '  s#     D	%i00r"   c                    t               }| D ]]  }t        |      r(|j                  |j                  |j                  f       6|j                  t        t        t        df   |             _ |S )N.)r8   r   addrM   rO   r   r:   rd   )r   
normalizedri   s      r5   r9   r9   2  s_     (+uJ :6?NNF--v?@NN4c3h89	:
 r"   )r   r   r   zstr | ormsgpack.Ext)r   +set[tuple[str, ...]] | Literal[True] | Noner   zCallable[[int, bytes], Any]r  )r   r   r   rz   )r  r   r   r  )r   r!   r   zset[tuple[str, ...]])X
__future__r   r<   r   r   r`   r   loggingr   r}   r   r   collectionsr   collections.abcr   r   r   r	   r   r
   r   r   enumr   inspectr   	ipaddressr   r   r   r   r   r   typingr   r   r   r   r  r   zoneinfor   r   langchain_core.load.loadr   langgraph.checkpoint.serder   r+   langgraph.checkpoint.serde.baser   &langgraph.checkpoint.serde.event_hooksr    langgraph.checkpoint.serde.typesr   langgraph.store.baser    #langgraph.checkpoint.serde._msgpackr!   rY   r~   	getLoggerrO   rV   r$   r   r   r   r   r   r   r   r   r2   _msgpack_ext_hookr  rh   rU   r   OPT_PASSTHROUGH_DATACLASSOPT_PASSTHROUGH_DATETIMEOPT_PASSTHROUGH_ENUMOPT_PASSTHROUGH_UUIDOPT_REPLACE_SURROGATESr  r   r.   r9   r^   r"   r5   <module>r6     s   "         	 
  8 8 > >    5 4    , > > C 9 % >Y
			8	$RN+ RNn     `XFy@y yz -TB Zz  ))*(() $$% $$	%
 &&' K;0	"		r"   