32 lines
639 B
Python
32 lines
639 B
Python
|
|
from abc import ABC, abstractmethod
|
||
|
|
from inspect import isclass
|
||
|
|
from typing import (
|
||
|
|
Any,
|
||
|
|
Generic,
|
||
|
|
TypeGuard,
|
||
|
|
TypeVar,
|
||
|
|
)
|
||
|
|
|
||
|
|
from langgraph._internal._scratchpad import PregelScratchpad
|
||
|
|
|
||
|
|
V = TypeVar("V")
|
||
|
|
U = TypeVar("U")
|
||
|
|
|
||
|
|
__all__ = ("ManagedValueSpec", "ManagedValueMapping")
|
||
|
|
|
||
|
|
|
||
|
|
class ManagedValue(ABC, Generic[V]):
|
||
|
|
@staticmethod
|
||
|
|
@abstractmethod
|
||
|
|
def get(scratchpad: PregelScratchpad) -> V: ...
|
||
|
|
|
||
|
|
|
||
|
|
ManagedValueSpec = type[ManagedValue]
|
||
|
|
|
||
|
|
|
||
|
|
def is_managed_value(value: Any) -> TypeGuard[ManagedValueSpec]:
|
||
|
|
return isclass(value) and issubclass(value, ManagedValue)
|
||
|
|
|
||
|
|
|
||
|
|
ManagedValueMapping = dict[str, ManagedValueSpec]
|