
    Zǻi6                    0   d 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  ed      Zed   Z	 ddlmZ dd	lmZ 	 ddlmZ ddlmZ g dZddZd
dddZd
d
d
d	 	 	 	 	 	 	 	 	 	 	 ddZy
# e$ r d
Zd
ZY <w xY w# e$ r d
Z G d de
e         ZY Jw xY w)zKey/value cache for use inside LangGraph deployments.

Thin wrapper around ``langgraph_api.cache``.
Values must be JSON-serializable (dicts, lists, strings, numbers, booleans,
``None``).
    )annotations)	AwaitableCallable)	timedelta)AnyGenericLiteralTypeVarT)missfreshstaleexpired)	cache_get)	cache_setN)	SWRResult)swrc                  0    e Zd ZU dZded<   ded<   dd	dZy)
r   z'Result wrapper returned by :func:`swr`.r   valueCacheStatusstatusc                   K   yw)z&Update or revalidate the cached value.N )selfr   s     Q/opt/lhia/marcimex/agent/venv/lib/python3.12/site-packages/langgraph_sdk/cache.pymutatezSWRResult.mutate+   s	     s   N).)r   r   returnr   )__name__
__module____qualname____doc____annotations__r   r       r   r   r   %   s    5	r#   r   )r   r   r   r   c                V   K   t         t        d      t        |        d{   S 7 w)zGet a value from the cache.

    Returns the deserialized value, or ``None`` if the key is missing or expired.

    Requires Agent Server runtime version 0.7.29 or later.
    NyCache is only available server-side within the LangGraph Agent Server (https://docs.langchain.com/langsmith/deployments).)
_cache_getRuntimeError)keys    r   r   r   8   s3      B
 	
 C   s    )'))ttlc               \   K   t         t        d      t        | ||       d{    y7 w)a%  Set a value in the cache.

    Args:
        key: The cache key.
        value: The value to cache (must be JSON-serializable).
        ttl: Optional time-to-live. Capped at 1 day; ``None`` or zero
            defaults to 1 day.

    Requires Agent Server runtime version 0.7.29 or later.
    Nr%   )
_cache_setr'   )r(   r   r)   s      r   r   r   G   s5      B
 	
 S%
%%%s   ",*,	fresh_formax_agemodelc                  K   t         t        d      |t        d      }|t        d      }t        | ||||       d{   S 7 w)a  Load a cached value using stale-while-revalidate semantics.

    This helper is server-side only and is intended for caching internal async
    dependencies such as auth or metadata lookups.

    Args:
        key: Cache key.
        loader: Async callable that fetches the value on miss/revalidation.
        fresh_for: How long a cached value is considered fresh (no revalidation).
            Defaults to ``timedelta(0)`` so every access triggers a background
            revalidate while still returning the cached value instantly. Values
            above :data:`MAX_CACHE_TTL` are clamped to the backend maximum.
        max_age: Total lifetime of a cached entry. After this, the next access
            blocks on the loader. Defaults to :data:`MAX_CACHE_TTL` (24 h by
            default). Values above :data:`MAX_CACHE_TTL` are clamped to the
            backend maximum.
        model: Optional Pydantic model class. When provided, values are
            serialized via ``model_dump(mode="json")`` before storage and
            deserialized via ``model.model_validate()`` on read.

    Returns:
        An :class:`SWRResult` with ``.value``, ``.status``, and an async
        ``.mutate()`` method.

    Semantics:
    - cache miss: await ``loader()``, store the value, return it
    - fresh hit (age < fresh_for): return the cached value
    - stale hit (fresh_for <= age < max_age): return the cached value
      immediately and trigger a best-effort background refresh
    - expired (age >= max_age): await ``loader()``, store the value, return it
    Nr%   r      )daysr,   )_api_swrr'   r   )r(   loaderr-   r.   r/   s        r   r   r   Z   sd     N B
 	
 aL	#Vy'   s   A A	AA	)r(   strr   z
Any | None)r(   r5   r   r   r)   timedelta | Noner   None)r(   r5   r4   zCallable[[], Awaitable[T]]r-   r6   r.   r6   r/   ztype[T] | Noner   zSWRResult[T])r!   
__future__r   collections.abcr   r   datetimer   typingr   r   r	   r
   r   r   langgraph_api.cacher   r&   r   r+   ImportErrorr   r   r3   __all__r   r#   r   <module>r?      s    # /  1 1CL9:	-3 ! FJ &. #' $ 2	2&2  	2
 2 2 2C  JJ  HGAJ s"   A. A= .	A:9A:=BB