Home / Class/ InMemoryBaseStore Class — langchain Architecture

InMemoryBaseStore Class — langchain Architecture

Architecture documentation for the InMemoryBaseStore class in stores.py from the langchain codebase.

Entity Profile

Dependency Diagram

graph TD
  56b372c7_b624_5ca7_090f_cbca197126c9["InMemoryBaseStore"]
  f0969880_8c80_c0b9_0855_568e385cf51f["stores.py"]
  56b372c7_b624_5ca7_090f_cbca197126c9 -->|defined in| f0969880_8c80_c0b9_0855_568e385cf51f
  755cce96_ad02_86d5_4de7_068b63c0ae7b["__init__()"]
  56b372c7_b624_5ca7_090f_cbca197126c9 -->|method| 755cce96_ad02_86d5_4de7_068b63c0ae7b
  4d00ee30_dc12_eba2_7af0_5975338e2673["mget()"]
  56b372c7_b624_5ca7_090f_cbca197126c9 -->|method| 4d00ee30_dc12_eba2_7af0_5975338e2673
  5b8156ce_f52d_7e07_7b03_566388b38641["amget()"]
  56b372c7_b624_5ca7_090f_cbca197126c9 -->|method| 5b8156ce_f52d_7e07_7b03_566388b38641
  e0a0e5dc_b582_278d_0ded_d4225a395afc["mset()"]
  56b372c7_b624_5ca7_090f_cbca197126c9 -->|method| e0a0e5dc_b582_278d_0ded_d4225a395afc
  95eb575f_160e_3d86_225e_cb7b82523806["amset()"]
  56b372c7_b624_5ca7_090f_cbca197126c9 -->|method| 95eb575f_160e_3d86_225e_cb7b82523806
  91ef6ffb_e2bc_cdd4_9e65_7568c39ab0cd["mdelete()"]
  56b372c7_b624_5ca7_090f_cbca197126c9 -->|method| 91ef6ffb_e2bc_cdd4_9e65_7568c39ab0cd
  7073e69f_fdd3_8ae6_6dff_c0ac77a76900["amdelete()"]
  56b372c7_b624_5ca7_090f_cbca197126c9 -->|method| 7073e69f_fdd3_8ae6_6dff_c0ac77a76900
  230cc8f7_3d41_cad0_26d1_a2124eeca404["yield_keys()"]
  56b372c7_b624_5ca7_090f_cbca197126c9 -->|method| 230cc8f7_3d41_cad0_26d1_a2124eeca404
  0650196e_b1ee_10b8_d438_0d53e4909224["ayield_keys()"]
  56b372c7_b624_5ca7_090f_cbca197126c9 -->|method| 0650196e_b1ee_10b8_d438_0d53e4909224

Relationship Graph

Source Code

libs/core/langchain_core/stores.py lines 176–241

class InMemoryBaseStore(BaseStore[str, V], Generic[V]):
    """In-memory implementation of the `BaseStore` using a dictionary."""

    def __init__(self) -> None:
        """Initialize an empty store."""
        self.store: dict[str, V] = {}

    @override
    def mget(self, keys: Sequence[str]) -> list[V | None]:
        return [self.store.get(key) for key in keys]

    @override
    async def amget(self, keys: Sequence[str]) -> list[V | None]:
        return self.mget(keys)

    @override
    def mset(self, key_value_pairs: Sequence[tuple[str, V]]) -> None:
        for key, value in key_value_pairs:
            self.store[key] = value

    @override
    async def amset(self, key_value_pairs: Sequence[tuple[str, V]]) -> None:
        return self.mset(key_value_pairs)

    @override
    def mdelete(self, keys: Sequence[str]) -> None:
        for key in keys:
            if key in self.store:
                del self.store[key]

    @override
    async def amdelete(self, keys: Sequence[str]) -> None:
        self.mdelete(keys)

    def yield_keys(self, *, prefix: str | None = None) -> Iterator[str]:
        """Get an iterator over keys that match the given prefix.

        Args:
            prefix: The prefix to match.

        Yields:
            The keys that match the given prefix.
        """
        if prefix is None:
            yield from self.store.keys()
        else:
            for key in self.store:
                if key.startswith(prefix):
                    yield key

    async def ayield_keys(self, *, prefix: str | None = None) -> AsyncIterator[str]:
        """Async get an async iterator over keys that match the given prefix.

        Args:
            prefix: The prefix to match.

        Yields:
            The keys that match the given prefix.
        """
        if prefix is None:
            for key in self.store:
                yield key
        else:
            for key in self.store:
                if key.startswith(prefix):
                    yield key

Frequently Asked Questions

What is the InMemoryBaseStore class?
InMemoryBaseStore is a class in the langchain codebase, defined in libs/core/langchain_core/stores.py.
Where is InMemoryBaseStore defined?
InMemoryBaseStore is defined in libs/core/langchain_core/stores.py at line 176.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free