
    c
i6                    8   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 n# e$ r d
Zd
ZY nw xY w	 ddlmZ ddlmZ n!# e$ r d
Z G d de
e                   ZY nw xY wg dZd%dZd
dd&dZd
d
d
dd'd$Zd
S )(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                  2    e Zd ZU dZded<   ded<   d
ddZd	S )r   z'Result wrapper returned by :func:`swr`.r   valueCacheStatusstatus.returnc                
   K   dS )z&Update or revalidate the cached value.N )selfr   s     C:\Users\Dell Inspiron 16\Desktop\tws\AgrotaPowerBi\back-agrota-powerbi\mcp-client-agrota\venv\Lib\site-packages\langgraph_sdk/cache.pymutatezSWRResult.mutate+   s      C    N).)r   r   r   r   )__name__
__module____qualname____doc____annotations__r   r   r   r   r   r   %   sJ         55	 	 	 	 	 	 	r   r   )r   r   r   r   keystrr   
Any | Nonec                \   K   t           t          d          t          |            d{V S )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)r$   s    r   r   r   8   sF       B
 
 	
 C       r   )ttlr   r   r+   timedelta | NoneNonec               d   K   t           t          d          t          | ||           d{V  dS )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   sR       B
 
 	
 S%
%
%%%%%%%%%%r   	fresh_formax_agemodelloaderCallable[[], Awaitable[T]]r1   r2   r3   type[T] | NoneSWRResult[T]c                  K   t           t          d          |t          d          }|t          d          }t          | ||||           d{V S )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      )daysr0   )_api_swrr*   r   )r$   r4   r1   r2   r3   s        r   r   r   Z   s      N B
 
 	
 aLL	###Vy'         r   )r$   r%   r   r&   )r$   r%   r   r   r+   r,   r   r-   )r$   r%   r4   r5   r1   r,   r2   r,   r3   r6   r   r7   )r"   
__future__r   collections.abcr   r   datetimer   typingr   r   r	   r
   r   r   langgraph_api.cacher   r)   r   r/   ImportErrorr   r   r;   __all__r   r   r   <module>rC      s    # " " " " " / / / / / / / /       1 1 1 1 1 1 1 1 1 1 1 1GCLL9:	               JJJJ
------3333333   H    GAJ       ! ! ! ! FJ & & & & & &. #' $ 2 2 2 2 2 2 2 2s#   A 	AAA! !A?>A?