Home / Class/ BaseStoreSyncTests Class — langchain Architecture

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]

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