
    'Gg                     f    d dl mZmZ  G d de      Z G d de      ZdedefdZ G d	 d
e      Zy)    )AnyProtocolc                   d    e Zd ZdZdedefdZdedeeef   fdZ	dedefdZ
deeef   defdZy	)
SerializerProtocolav  Protocol for serialization and deserialization of objects.

    - `dumps`: Serialize an object to bytes.
    - `dumps_typed`: Serialize an object to a tuple (type, bytes).
    - `loads`: Deserialize an object from bytes.
    - `loads_typed`: Deserialize an object from a tuple (type, bytes).

    Valid implementations include the `pickle`, `json` and `orjson` modules.
    objreturnc                      y N selfr   s     |/home/kushmeetdev/apache_webroot/langgraph_flaskproject/venv/lib/python3.12/site-packages/langgraph/checkpoint/serde/base.pydumpszSerializerProtocol.dumps           c                      y r
   r   r   s     r   dumps_typedzSerializerProtocol.dumps_typed   r   r   datac                      y r
   r   r   r   s     r   loadszSerializerProtocol.loads   r   r   c                      y r
   r   r   s     r   loads_typedzSerializerProtocol.loads_typed   r   r   N)__name__
__module____qualname____doc__r   bytesr   tuplestrr   r   r   r   r   r   r   r      sO     ,++=s=uS%Z'8=,%,C,>c5j 1>c>r   r   c                   p    e Zd ZdeddfdZdedefdZdedefdZdede	e
ef   fd	Zde	e
ef   defd
Zy)SerializerCompatserder   Nc                     || _         y r
   r#   )r   r#   s     r   __init__zSerializerCompat.__init__   s	    
r   r   c                 8    | j                   j                  |      S r
   )r#   r   r   s     r   r   zSerializerCompat.dumps   s    zz$$r   r   c                 8    | j                   j                  |      S r
   r#   r   r   s     r   r   zSerializerCompat.loads   s    zz%%r   c                 b    t        |      j                  | j                  j                  |      fS r
   )typer   r#   r   r   s     r   r   zSerializerCompat.dumps_typed"   s&    Cy!!4::#3#3C#888r   c                 >    | j                   j                  |d         S )N   r)   r   s     r   r   zSerializerCompat.loads_typed%   s    zzQ((r   )r   r   r   r   r&   r   r   r   r   r   r    r   r   r   r   r   r"   r"      st    0 T % % %&% &C &9s 9uS%Z'8 9)c5j 1 )c )r   r"   r#   r   c                 L    t        | d      rt        | d      st        |       S | S )zmWrap serde old serde implementations in a class with loads_typed and dumps_typed for backwards compatibility.r   r   )hasattrr"   r%   s    r   maybe_add_typed_methodsr0   )   s'     5-(}0M&&Lr   c                   >    e Zd ZdZdedeeef   fdZdededefdZy)	CipherProtocolz}Protocol for encryption and decryption of data.
    - `encrypt`: Encrypt plaintext.
    - `decrypt`: Decrypt ciphertext.
    	plaintextr   c                      y)z=Encrypt plaintext. Returns a tuple (cipher name, ciphertext).Nr   )r   r3   s     r   encryptzCipherProtocol.encrypt8       r   
ciphername
ciphertextc                      y)z*Decrypt ciphertext. Returns the plaintext.Nr   )r   r7   r8   s      r   decryptzCipherProtocol.decrypt<   r6   r   N)	r   r   r   r   r   r   r    r5   r:   r   r   r   r2   r2   2   s=    
 5e+< # 5 U r   r2   N)typingr   r   r   r"   r0   r2   r   r   r   <module>r<      sB     ? ?()) )"#5 :L X r   