7
7
"""
8
8
9
9
from abc import abstractmethod
10
- from typing import AsyncGenerator , Generator , Generic , Tuple , TypeVar
10
+ from collections .abc import AsyncGenerator , Generator
11
+ from typing import Generic , TypeVar
11
12
12
13
import pytest
13
14
from langchain_core .stores import BaseStore
@@ -38,11 +39,11 @@ def kv_store(self) -> BaseStore[str, V]:
38
39
39
40
@abstractmethod
40
41
@pytest .fixture ()
41
- def three_values (self ) -> Tuple [V , V , V ]:
42
+ def three_values (self ) -> tuple [V , V , V ]:
42
43
"""Three example values that will be used in the tests."""
43
44
pass
44
45
45
- def test_three_values (self , three_values : Tuple [V , V , V ]) -> None :
46
+ def test_three_values (self , three_values : tuple [V , V , V ]) -> None :
46
47
"""Test that the fixture provides three values."""
47
48
assert isinstance (three_values , tuple )
48
49
assert len (three_values ) == 3
@@ -53,7 +54,7 @@ def test_kv_store_is_empty(self, kv_store: BaseStore[str, V]) -> None:
53
54
assert kv_store .mget (keys ) == [None , None , None ]
54
55
55
56
def test_set_and_get_values (
56
- self , kv_store : BaseStore [str , V ], three_values : Tuple [V , V , V ]
57
+ self , kv_store : BaseStore [str , V ], three_values : tuple [V , V , V ]
57
58
) -> None :
58
59
"""Test setting and getting values in the key-value store."""
59
60
foo = three_values [0 ]
@@ -72,7 +73,7 @@ def test_store_still_empty(self, kv_store: BaseStore[str, V]) -> None:
72
73
assert kv_store .mget (keys ) == [None ]
73
74
74
75
def test_delete_values (
75
- self , kv_store : BaseStore [str , V ], three_values : Tuple [V , V , V ]
76
+ self , kv_store : BaseStore [str , V ], three_values : tuple [V , V , V ]
76
77
) -> None :
77
78
"""Test deleting values from the key-value store."""
78
79
foo = three_values [0 ]
@@ -83,7 +84,7 @@ def test_delete_values(
83
84
assert kv_store .mget (["foo" , "bar" ]) == [None , bar ]
84
85
85
86
def test_delete_bulk_values (
86
- self , kv_store : BaseStore [str , V ], three_values : Tuple [V , V , V ]
87
+ self , kv_store : BaseStore [str , V ], three_values : tuple [V , V , V ]
87
88
) -> None :
88
89
"""Test that we can delete several values at once."""
89
90
foo , bar , buz = three_values
@@ -98,7 +99,7 @@ def test_delete_missing_keys(self, kv_store: BaseStore[str, V]) -> None:
98
99
kv_store .mdelete (["foo" , "bar" , "baz" ])
99
100
100
101
def test_set_values_is_idempotent (
101
- self , kv_store : BaseStore [str , V ], three_values : Tuple [V , V , V ]
102
+ self , kv_store : BaseStore [str , V ], three_values : tuple [V , V , V ]
102
103
) -> None :
103
104
"""Setting values by key should be idempotent."""
104
105
foo , bar , _ = three_values
@@ -109,7 +110,7 @@ def test_set_values_is_idempotent(
109
110
assert sorted (kv_store .yield_keys ()) == ["bar" , "foo" ]
110
111
111
112
def test_get_can_get_same_value (
112
- self , kv_store : BaseStore [str , V ], three_values : Tuple [V , V , V ]
113
+ self , kv_store : BaseStore [str , V ], three_values : tuple [V , V , V ]
113
114
) -> None :
114
115
"""Test that the same value can be retrieved multiple times."""
115
116
foo , bar , _ = three_values
@@ -119,7 +120,7 @@ def test_get_can_get_same_value(
119
120
assert kv_store .mget (["foo" , "bar" , "foo" , "bar" ]) == [foo , bar , foo , bar ]
120
121
121
122
def test_overwrite_values_by_key (
122
- self , kv_store : BaseStore [str , V ], three_values : Tuple [V , V , V ]
123
+ self , kv_store : BaseStore [str , V ], three_values : tuple [V , V , V ]
123
124
) -> None :
124
125
"""Test that we can overwrite values by key using mset."""
125
126
foo , bar , buzz = three_values
@@ -134,7 +135,7 @@ def test_overwrite_values_by_key(
134
135
assert kv_store .mget (["foo" , "bar" ]) == [buzz , bar ]
135
136
136
137
def test_yield_keys (
137
- self , kv_store : BaseStore [str , V ], three_values : Tuple [V , V , V ]
138
+ self , kv_store : BaseStore [str , V ], three_values : tuple [V , V , V ]
138
139
) -> None :
139
140
"""Test that we can yield keys from the store."""
140
141
foo , bar , _buzz = three_values
@@ -169,11 +170,11 @@ async def kv_store(self) -> BaseStore[str, V]:
169
170
170
171
@abstractmethod
171
172
@pytest .fixture ()
172
- def three_values (self ) -> Tuple [V , V , V ]:
173
+ def three_values (self ) -> tuple [V , V , V ]:
173
174
"""Three example values that will be used in the tests."""
174
175
pass
175
176
176
- async def test_three_values (self , three_values : Tuple [V , V , V ]) -> None :
177
+ async def test_three_values (self , three_values : tuple [V , V , V ]) -> None :
177
178
"""Test that the fixture provides three values."""
178
179
assert isinstance (three_values , tuple )
179
180
assert len (three_values ) == 3
@@ -184,7 +185,7 @@ async def test_kv_store_is_empty(self, kv_store: BaseStore[str, V]) -> None:
184
185
assert await kv_store .amget (keys ) == [None , None , None ]
185
186
186
187
async def test_set_and_get_values (
187
- self , kv_store : BaseStore [str , V ], three_values : Tuple [V , V , V ]
188
+ self , kv_store : BaseStore [str , V ], three_values : tuple [V , V , V ]
188
189
) -> None :
189
190
"""Test setting and getting values in the key-value store."""
190
191
foo = three_values [0 ]
@@ -203,7 +204,7 @@ async def test_store_still_empty(self, kv_store: BaseStore[str, V]) -> None:
203
204
assert await kv_store .amget (keys ) == [None ]
204
205
205
206
async def test_delete_values (
206
- self , kv_store : BaseStore [str , V ], three_values : Tuple [V , V , V ]
207
+ self , kv_store : BaseStore [str , V ], three_values : tuple [V , V , V ]
207
208
) -> None :
208
209
"""Test deleting values from the key-value store."""
209
210
foo = three_values [0 ]
@@ -214,7 +215,7 @@ async def test_delete_values(
214
215
assert await kv_store .amget (["foo" , "bar" ]) == [None , bar ]
215
216
216
217
async def test_delete_bulk_values (
217
- self , kv_store : BaseStore [str , V ], three_values : Tuple [V , V , V ]
218
+ self , kv_store : BaseStore [str , V ], three_values : tuple [V , V , V ]
218
219
) -> None :
219
220
"""Test that we can delete several values at once."""
220
221
foo , bar , buz = three_values
@@ -229,7 +230,7 @@ async def test_delete_missing_keys(self, kv_store: BaseStore[str, V]) -> None:
229
230
await kv_store .amdelete (["foo" , "bar" , "baz" ])
230
231
231
232
async def test_set_values_is_idempotent (
232
- self , kv_store : BaseStore [str , V ], three_values : Tuple [V , V , V ]
233
+ self , kv_store : BaseStore [str , V ], three_values : tuple [V , V , V ]
233
234
) -> None :
234
235
"""Setting values by key should be idempotent."""
235
236
foo , bar , _ = three_values
@@ -240,7 +241,7 @@ async def test_set_values_is_idempotent(
240
241
assert sorted (kv_store .yield_keys ()) == ["bar" , "foo" ]
241
242
242
243
async def test_get_can_get_same_value (
243
- self , kv_store : BaseStore [str , V ], three_values : Tuple [V , V , V ]
244
+ self , kv_store : BaseStore [str , V ], three_values : tuple [V , V , V ]
244
245
) -> None :
245
246
"""Test that the same value can be retrieved multiple times."""
246
247
foo , bar , _ = three_values
@@ -255,7 +256,7 @@ async def test_get_can_get_same_value(
255
256
]
256
257
257
258
async def test_overwrite_values_by_key (
258
- self , kv_store : BaseStore [str , V ], three_values : Tuple [V , V , V ]
259
+ self , kv_store : BaseStore [str , V ], three_values : tuple [V , V , V ]
259
260
) -> None :
260
261
"""Test that we can overwrite values by key using mset."""
261
262
foo , bar , buzz = three_values
@@ -270,7 +271,7 @@ async def test_overwrite_values_by_key(
270
271
assert await kv_store .amget (["foo" , "bar" ]) == [buzz , bar ]
271
272
272
273
async def test_yield_keys (
273
- self , kv_store : BaseStore [str , V ], three_values : Tuple [V , V , V ]
274
+ self , kv_store : BaseStore [str , V ], three_values : tuple [V , V , V ]
274
275
) -> None :
275
276
"""Test that we can yield keys from the store."""
276
277
foo , bar , _buzz = three_values
0 commit comments