BaseStoreSyncTests Class — langchain Architecture
Architecture documentation for the BaseStoreSyncTests class in base_store.py from the langchain codebase.
Entity Profile
Dependency Diagram
graph TD afeb6d3f_9cf0_eedb_d5ec_59f20e71dfaf["BaseStoreSyncTests"] 2d95e59f_5168_1366_c8c2_e21e157938b5["BaseStandardTests"] afeb6d3f_9cf0_eedb_d5ec_59f20e71dfaf -->|extends| 2d95e59f_5168_1366_c8c2_e21e157938b5 ab32a486_8161_ae81_5956_d15d97c6646a["base_store.py"] afeb6d3f_9cf0_eedb_d5ec_59f20e71dfaf -->|defined in| ab32a486_8161_ae81_5956_d15d97c6646a 84466500_587a_a0f3_62bd_1ba51c04bbaf["kv_store()"] afeb6d3f_9cf0_eedb_d5ec_59f20e71dfaf -->|method| 84466500_587a_a0f3_62bd_1ba51c04bbaf cae55c60_180d_4fd5_8b91_12f92fa7b4b8["three_values()"] afeb6d3f_9cf0_eedb_d5ec_59f20e71dfaf -->|method| cae55c60_180d_4fd5_8b91_12f92fa7b4b8 d7cb055a_4c23_85a5_592e_8bb3b7d64f64["test_three_values()"] afeb6d3f_9cf0_eedb_d5ec_59f20e71dfaf -->|method| d7cb055a_4c23_85a5_592e_8bb3b7d64f64 8f366d20_7632_6b79_e06f_b7dff25ceb6a["test_kv_store_is_empty()"] afeb6d3f_9cf0_eedb_d5ec_59f20e71dfaf -->|method| 8f366d20_7632_6b79_e06f_b7dff25ceb6a 0236ea53_fd3e_04cb_1c1b_2859fe96a991["test_set_and_get_values()"] afeb6d3f_9cf0_eedb_d5ec_59f20e71dfaf -->|method| 0236ea53_fd3e_04cb_1c1b_2859fe96a991 9776fd93_831d_cefc_5b7a_0f1a30b612f7["test_store_still_empty()"] afeb6d3f_9cf0_eedb_d5ec_59f20e71dfaf -->|method| 9776fd93_831d_cefc_5b7a_0f1a30b612f7 d7527446_2cc5_7e23_9324_294dcada7f59["test_delete_values()"] afeb6d3f_9cf0_eedb_d5ec_59f20e71dfaf -->|method| d7527446_2cc5_7e23_9324_294dcada7f59 56758aad_2595_fe25_7a37_da6837cbf6c1["test_delete_bulk_values()"] afeb6d3f_9cf0_eedb_d5ec_59f20e71dfaf -->|method| 56758aad_2595_fe25_7a37_da6837cbf6c1 1a8526c8_4e50_b45a_55d1_5e3c3bb11837["test_delete_missing_keys()"] afeb6d3f_9cf0_eedb_d5ec_59f20e71dfaf -->|method| 1a8526c8_4e50_b45a_55d1_5e3c3bb11837 b4ac24f9_188d_4045_03d7_9b4f0b0eff3b["test_set_values_is_idempotent()"] afeb6d3f_9cf0_eedb_d5ec_59f20e71dfaf -->|method| b4ac24f9_188d_4045_03d7_9b4f0b0eff3b 7fd730d4_0811_5da8_ebda_2994975b7a3f["test_get_can_get_same_value()"] afeb6d3f_9cf0_eedb_d5ec_59f20e71dfaf -->|method| 7fd730d4_0811_5da8_ebda_2994975b7a3f 8dfc079d_f0a4_7088_86cf_df26da81bfe4["test_overwrite_values_by_key()"] afeb6d3f_9cf0_eedb_d5ec_59f20e71dfaf -->|method| 8dfc079d_f0a4_7088_86cf_df26da81bfe4
Relationship Graph
Source Code
libs/standard-tests/langchain_tests/integration_tests/base_store.py lines 19–162
class BaseStoreSyncTests(BaseStandardTests, Generic[V]):
"""Test suite for checking the key-value API of a `BaseStore`.
This test suite verifies the basic key-value API of a `BaseStore`.
The test suite is designed for synchronous key-value stores.
Implementers should subclass this test suite and provide a fixture
that returns an empty key-value store for each test.
"""
@abstractmethod
@pytest.fixture
def kv_store(self) -> BaseStore[str, V]:
"""Get the key-value store class to test.
The returned key-value store should be EMPTY.
"""
@abstractmethod
@pytest.fixture
def three_values(self) -> tuple[V, V, V]:
"""Three example values that will be used in the tests."""
def test_three_values(self, three_values: tuple[V, V, V]) -> None:
"""Test that the fixture provides three values."""
assert isinstance(three_values, tuple)
assert len(three_values) == 3
def test_kv_store_is_empty(self, kv_store: BaseStore[str, V]) -> None:
"""Test that the key-value store is empty."""
keys = ["foo", "bar", "buzz"]
assert kv_store.mget(keys) == [None, None, None]
def test_set_and_get_values(
self,
kv_store: BaseStore[str, V],
three_values: tuple[V, V, V],
) -> None:
"""Test setting and getting values in the key-value store."""
foo = three_values[0]
bar = three_values[1]
key_value_pairs = [("foo", foo), ("bar", bar)]
kv_store.mset(key_value_pairs)
assert kv_store.mget(["foo", "bar"]) == [foo, bar]
def test_store_still_empty(self, kv_store: BaseStore[str, V]) -> None:
"""Test that the store is still empty.
This test should follow a test that sets values.
This just verifies that the fixture is set up properly to be empty
after each test.
"""
keys = ["foo"]
assert kv_store.mget(keys) == [None]
def test_delete_values(
self,
kv_store: BaseStore[str, V],
three_values: tuple[V, V, V],
) -> None:
"""Test deleting values from the key-value store."""
foo = three_values[0]
bar = three_values[1]
key_value_pairs = [("foo", foo), ("bar", bar)]
kv_store.mset(key_value_pairs)
kv_store.mdelete(["foo"])
assert kv_store.mget(["foo", "bar"]) == [None, bar]
def test_delete_bulk_values(
self,
kv_store: BaseStore[str, V],
three_values: tuple[V, V, V],
) -> None:
"""Test that we can delete several values at once."""
foo, bar, buz = three_values
key_values = [("foo", foo), ("bar", bar), ("buz", buz)]
kv_store.mset(key_values)
kv_store.mdelete(["foo", "buz"])
assert kv_store.mget(["foo", "bar", "buz"]) == [None, bar, None]
Extends
Source
Frequently Asked Questions
What is the BaseStoreSyncTests class?
BaseStoreSyncTests is a class in the langchain codebase, defined in libs/standard-tests/langchain_tests/integration_tests/base_store.py.
Where is BaseStoreSyncTests defined?
BaseStoreSyncTests is defined in libs/standard-tests/langchain_tests/integration_tests/base_store.py at line 19.
What does BaseStoreSyncTests extend?
BaseStoreSyncTests extends BaseStandardTests.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free