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
Defined In
Source
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