Skip to content

Commit 6620508

Browse files
committed
Improved typing [skip ci]
1 parent 2096c58 commit 6620508

1 file changed

Lines changed: 51 additions & 53 deletions

File tree

tests/test_django.py

Lines changed: 51 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
# type: ignore
2-
31
import django
42
from django.conf import settings
53
from django.contrib.postgres.fields import ArrayField
@@ -135,7 +133,7 @@ class Migration(migrations.Migration):
135133
cursor.execute('\n'.join(sql_statements))
136134

137135

138-
def create_items():
136+
def create_items() -> None:
139137
Item(id=1, embedding=[1, 1, 1], half_embedding=[1, 1, 1], binary_embedding='000', sparse_embedding=SparseVector([1, 1, 1])).save()
140138
Item(id=2, embedding=[2, 2, 2], half_embedding=[2, 2, 2], binary_embedding='101', sparse_embedding=SparseVector([2, 2, 2])).save()
141139
Item(id=3, embedding=[1, 1, 2], half_embedding=[1, 1, 2], binary_embedding='111', sparse_embedding=SparseVector([1, 1, 2])).save()
@@ -166,179 +164,179 @@ class Meta:
166164

167165

168166
class TestDjango:
169-
def setup_method(self):
167+
def setup_method(self) -> None:
170168
Item.objects.all().delete()
171169

172-
def test_vector(self):
170+
def test_vector(self) -> None:
173171
Item(id=1, embedding=[1, 2, 3]).save()
174172
item = Item.objects.get(pk=1)
175173
assert item.embedding == Vector([1, 2, 3])
176174

177-
def test_vector_l2_distance(self):
175+
def test_vector_l2_distance(self) -> None:
178176
create_items()
179177
distance = L2Distance('embedding', Vector([1, 1, 1]))
180178
items = Item.objects.annotate(distance=distance).order_by(distance)
181179
assert [v.id for v in items] == [1, 3, 2]
182180
assert [v.distance for v in items] == [0, 1, sqrt(3)]
183181

184-
def test_vector_l2_distance_list(self):
182+
def test_vector_l2_distance_list(self) -> None:
185183
create_items()
186184
distance = L2Distance('embedding', [1, 1, 1])
187185
items = Item.objects.annotate(distance=distance).order_by(distance)
188186
assert [v.id for v in items] == [1, 3, 2]
189187
assert [v.distance for v in items] == [0, 1, sqrt(3)]
190188

191-
def test_vector_l2_distance_none(self):
189+
def test_vector_l2_distance_none(self) -> None:
192190
create_items()
193191
distance = L2Distance('embedding', None)
194192
items = Item.objects.annotate(distance=distance).order_by(distance)
195193
assert [v.distance for v in items] == [None, None, None]
196194

197-
def test_vector_max_inner_product(self):
195+
def test_vector_max_inner_product(self) -> None:
198196
create_items()
199197
distance = MaxInnerProduct('embedding', [1, 1, 1])
200198
items = Item.objects.annotate(distance=distance).order_by(distance)
201199
assert [v.id for v in items] == [2, 3, 1]
202200
assert [v.distance for v in items] == [-6, -4, -3]
203201

204-
def test_vector_cosine_distance(self):
202+
def test_vector_cosine_distance(self) -> None:
205203
create_items()
206204
distance = CosineDistance('embedding', [1, 1, 1])
207205
items = Item.objects.annotate(distance=distance).order_by(distance)
208206
assert [v.id for v in items] == [1, 2, 3]
209207
assert [v.distance for v in items] == [0, 0, 0.05719095841793653]
210208

211-
def test_vector_l1_distance(self):
209+
def test_vector_l1_distance(self) -> None:
212210
create_items()
213211
distance = L1Distance('embedding', [1, 1, 1])
214212
items = Item.objects.annotate(distance=distance).order_by(distance)
215213
assert [v.id for v in items] == [1, 3, 2]
216214
assert [v.distance for v in items] == [0, 1, 3]
217215

218-
def test_halfvec(self):
216+
def test_halfvec(self) -> None:
219217
Item(id=1, half_embedding=[1, 2, 3]).save()
220218
item = Item.objects.get(pk=1)
221219
assert item.half_embedding == HalfVector([1, 2, 3])
222220

223-
def test_halfvec_l2_distance(self):
221+
def test_halfvec_l2_distance(self) -> None:
224222
create_items()
225223
distance = L2Distance('half_embedding', HalfVector([1, 1, 1]))
226224
items = Item.objects.annotate(distance=distance).order_by(distance)
227225
assert [v.id for v in items] == [1, 3, 2]
228226
assert [v.distance for v in items] == [0, 1, sqrt(3)]
229227

230-
def test_halfvec_max_inner_product(self):
228+
def test_halfvec_max_inner_product(self) -> None:
231229
create_items()
232230
distance = MaxInnerProduct('half_embedding', HalfVector([1, 1, 1]))
233231
items = Item.objects.annotate(distance=distance).order_by(distance)
234232
assert [v.id for v in items] == [2, 3, 1]
235233
assert [v.distance for v in items] == [-6, -4, -3]
236234

237-
def test_halfvec_cosine_distance(self):
235+
def test_halfvec_cosine_distance(self) -> None:
238236
create_items()
239237
distance = CosineDistance('half_embedding', HalfVector([1, 1, 1]))
240238
items = Item.objects.annotate(distance=distance).order_by(distance)
241239
assert [v.id for v in items] == [1, 2, 3]
242240
assert [v.distance for v in items] == [0, 0, 0.05719095841793653]
243241

244-
def test_halfvec_l1_distance(self):
242+
def test_halfvec_l1_distance(self) -> None:
245243
create_items()
246244
distance = L1Distance('half_embedding', HalfVector([1, 1, 1]))
247245
items = Item.objects.annotate(distance=distance).order_by(distance)
248246
assert [v.id for v in items] == [1, 3, 2]
249247
assert [v.distance for v in items] == [0, 1, 3]
250248

251-
def test_bit(self):
249+
def test_bit(self) -> None:
252250
Item(id=1, binary_embedding='101').save()
253251
item = Item.objects.get(pk=1)
254252
assert item.binary_embedding == '101'
255253

256-
def test_bit_hamming_distance(self):
254+
def test_bit_hamming_distance(self) -> None:
257255
create_items()
258256
distance = HammingDistance('binary_embedding', '101')
259257
items = Item.objects.annotate(distance=distance).order_by(distance)
260258
assert [v.id for v in items] == [2, 3, 1]
261259
assert [v.distance for v in items] == [0, 1, 2]
262260

263-
def test_bit_jaccard_distance(self):
261+
def test_bit_jaccard_distance(self) -> None:
264262
create_items()
265263
distance = JaccardDistance('binary_embedding', '101')
266264
items = Item.objects.annotate(distance=distance).order_by(distance)
267265
assert [v.id for v in items] == [2, 3, 1]
268266
# assert [v.distance for v in items] == [0, 1/3, 1]
269267

270-
def test_sparsevec(self):
268+
def test_sparsevec(self) -> None:
271269
Item(id=1, sparse_embedding=SparseVector([1, 2, 3])).save()
272270
item = Item.objects.get(pk=1)
273271
assert item.sparse_embedding == SparseVector([1, 2, 3])
274272

275-
def test_sparsevec_l2_distance(self):
273+
def test_sparsevec_l2_distance(self) -> None:
276274
create_items()
277275
distance = L2Distance('sparse_embedding', SparseVector([1, 1, 1]))
278276
items = Item.objects.annotate(distance=distance).order_by(distance)
279277
assert [v.id for v in items] == [1, 3, 2]
280278
assert [v.distance for v in items] == [0, 1, sqrt(3)]
281279

282-
def test_sparsevec_max_inner_product(self):
280+
def test_sparsevec_max_inner_product(self) -> None:
283281
create_items()
284282
distance = MaxInnerProduct('sparse_embedding', SparseVector([1, 1, 1]))
285283
items = Item.objects.annotate(distance=distance).order_by(distance)
286284
assert [v.id for v in items] == [2, 3, 1]
287285
assert [v.distance for v in items] == [-6, -4, -3]
288286

289-
def test_sparsevec_cosine_distance(self):
287+
def test_sparsevec_cosine_distance(self) -> None:
290288
create_items()
291289
distance = CosineDistance('sparse_embedding', SparseVector([1, 1, 1]))
292290
items = Item.objects.annotate(distance=distance).order_by(distance)
293291
assert [v.id for v in items] == [1, 2, 3]
294292
assert [v.distance for v in items] == [0, 0, 0.05719095841793653]
295293

296-
def test_sparsevec_l1_distance(self):
294+
def test_sparsevec_l1_distance(self) -> None:
297295
create_items()
298296
distance = L1Distance('sparse_embedding', SparseVector([1, 1, 1]))
299297
items = Item.objects.annotate(distance=distance).order_by(distance)
300298
assert [v.id for v in items] == [1, 3, 2]
301299
assert [v.distance for v in items] == [0, 1, 3]
302300

303-
def test_filter(self):
301+
def test_filter(self) -> None:
304302
create_items()
305303
distance = L2Distance('embedding', [1, 1, 1])
306304
items = Item.objects.alias(distance=distance).filter(distance__lt=1)
307305
assert [v.id for v in items] == [1]
308306

309-
def test_vector_avg(self):
307+
def test_vector_avg(self) -> None:
310308
avg = Item.objects.aggregate(Avg('embedding'))['embedding__avg']
311309
assert avg is None
312310
Item(embedding=[1, 2, 3]).save()
313311
Item(embedding=[4, 5, 6]).save()
314312
avg = Item.objects.aggregate(Avg('embedding'))['embedding__avg']
315313
assert avg == Vector([2.5, 3.5, 4.5])
316314

317-
def test_vector_sum(self):
315+
def test_vector_sum(self) -> None:
318316
sum = Item.objects.aggregate(Sum('embedding'))['embedding__sum']
319317
assert sum is None
320318
Item(embedding=[1, 2, 3]).save()
321319
Item(embedding=[4, 5, 6]).save()
322320
sum = Item.objects.aggregate(Sum('embedding'))['embedding__sum']
323321
assert sum == Vector([5, 7, 9])
324322

325-
def test_halfvec_avg(self):
323+
def test_halfvec_avg(self) -> None:
326324
avg = Item.objects.aggregate(Avg('half_embedding'))['half_embedding__avg']
327325
assert avg is None
328326
Item(half_embedding=[1, 2, 3]).save()
329327
Item(half_embedding=[4, 5, 6]).save()
330328
avg = Item.objects.aggregate(Avg('half_embedding'))['half_embedding__avg']
331329
assert avg == HalfVector([2.5, 3.5, 4.5])
332330

333-
def test_halfvec_sum(self):
331+
def test_halfvec_sum(self) -> None:
334332
sum = Item.objects.aggregate(Sum('half_embedding'))['half_embedding__sum']
335333
assert sum is None
336334
Item(half_embedding=[1, 2, 3]).save()
337335
Item(half_embedding=[4, 5, 6]).save()
338336
sum = Item.objects.aggregate(Sum('half_embedding'))['half_embedding__sum']
339337
assert sum == HalfVector([5, 7, 9])
340338

341-
def test_serialization(self):
339+
def test_serialization(self) -> None:
342340
create_items()
343341
items = Item.objects.all()
344342
for format in ['json', 'xml']:
@@ -348,18 +346,18 @@ def test_serialization(self):
348346
for obj in serializers.deserialize(format, data):
349347
obj.save()
350348

351-
def test_vector_form(self):
349+
def test_vector_form(self) -> None:
352350
form = VectorForm(data={'embedding': '[1, 2, 3]'})
353351
assert form.is_valid()
354352
assert 'value="[1, 2, 3]"' in form.as_div()
355353

356-
def test_vector_form_instance(self):
354+
def test_vector_form_instance(self) -> None:
357355
Item(id=1, embedding=[1, 2, 3]).save()
358356
item = Item.objects.get(pk=1)
359357
form = VectorForm(instance=item)
360358
assert 'value="[1.0, 2.0, 3.0]"' in form.as_div()
361359

362-
def test_vector_form_save(self):
360+
def test_vector_form_save(self) -> None:
363361
Item(id=1, embedding=[1, 2, 3]).save()
364362
item = Item.objects.get(pk=1)
365363
form = VectorForm(instance=item, data={'embedding': '[4, 5, 6]'})
@@ -368,26 +366,26 @@ def test_vector_form_save(self):
368366
assert form.save()
369367
assert Item.objects.get(pk=1).embedding == Vector([4, 5, 6])
370368

371-
def test_vector_form_save_missing(self):
369+
def test_vector_form_save_missing(self) -> None:
372370
Item(id=1).save()
373371
item = Item.objects.get(pk=1)
374372
form = VectorForm(instance=item, data={'embedding': ''})
375373
assert form.is_valid()
376374
assert form.save()
377375
assert Item.objects.get(pk=1).embedding is None
378376

379-
def test_halfvec_form(self):
377+
def test_halfvec_form(self) -> None:
380378
form = HalfVectorForm(data={'half_embedding': '[1, 2, 3]'})
381379
assert form.is_valid()
382380
assert 'value="[1, 2, 3]"' in form.as_div()
383381

384-
def test_halfvec_form_instance(self):
382+
def test_halfvec_form_instance(self) -> None:
385383
Item(id=1, half_embedding=[1, 2, 3]).save()
386384
item = Item.objects.get(pk=1)
387385
form = HalfVectorForm(instance=item)
388386
assert 'value="[1.0, 2.0, 3.0]"' in form.as_div()
389387

390-
def test_halfvec_form_save(self):
388+
def test_halfvec_form_save(self) -> None:
391389
Item(id=1, half_embedding=[1, 2, 3]).save()
392390
item = Item.objects.get(pk=1)
393391
form = HalfVectorForm(instance=item, data={'half_embedding': '[4, 5, 6]'})
@@ -396,26 +394,26 @@ def test_halfvec_form_save(self):
396394
assert form.save()
397395
assert Item.objects.get(pk=1).half_embedding == HalfVector([4, 5, 6])
398396

399-
def test_halfvec_form_save_missing(self):
397+
def test_halfvec_form_save_missing(self) -> None:
400398
Item(id=1).save()
401399
item = Item.objects.get(pk=1)
402400
form = HalfVectorForm(instance=item, data={'half_embedding': ''})
403401
assert form.is_valid()
404402
assert form.save()
405403
assert Item.objects.get(pk=1).half_embedding is None
406404

407-
def test_bit_form(self):
405+
def test_bit_form(self) -> None:
408406
form = BitForm(data={'binary_embedding': '101'})
409407
assert form.is_valid()
410408
assert 'value="101"' in form.as_div()
411409

412-
def test_bit_form_instance(self):
410+
def test_bit_form_instance(self) -> None:
413411
Item(id=1, binary_embedding='101').save()
414412
item = Item.objects.get(pk=1)
415413
form = BitForm(instance=item)
416414
assert 'value="101"' in form.as_div()
417415

418-
def test_bit_form_save(self):
416+
def test_bit_form_save(self) -> None:
419417
Item(id=1, binary_embedding='101').save()
420418
item = Item.objects.get(pk=1)
421419
form = BitForm(instance=item, data={'binary_embedding': '010'})
@@ -424,27 +422,27 @@ def test_bit_form_save(self):
424422
assert form.save()
425423
assert '010' == Item.objects.get(pk=1).binary_embedding
426424

427-
def test_bit_form_save_missing(self):
425+
def test_bit_form_save_missing(self) -> None:
428426
Item(id=1).save()
429427
item = Item.objects.get(pk=1)
430428
form = BitForm(instance=item, data={'binary_embedding': ''})
431429
assert form.is_valid()
432430
assert form.save()
433431
assert Item.objects.get(pk=1).binary_embedding is None
434432

435-
def test_sparsevec_form(self):
433+
def test_sparsevec_form(self) -> None:
436434
form = SparseVectorForm(data={'sparse_embedding': '{1:1,2:2,3:3}/3'})
437435
assert form.is_valid()
438436
assert 'value="{1:1,2:2,3:3}/3"' in form.as_div()
439437

440-
def test_sparsevec_form_instance(self):
438+
def test_sparsevec_form_instance(self) -> None:
441439
Item(id=1, sparse_embedding=[1, 2, 3]).save()
442440
item = Item.objects.get(pk=1)
443441
form = SparseVectorForm(instance=item)
444442
# TODO improve
445443
assert 'value="{1:1.0,2:2.0,3:3.0}/3"' in form.as_div()
446444

447-
def test_sparsevec_form_save(self):
445+
def test_sparsevec_form_save(self) -> None:
448446
Item(id=1, sparse_embedding=[1, 2, 3]).save()
449447
item = Item.objects.get(pk=1)
450448
form = SparseVectorForm(instance=item, data={'sparse_embedding': '{1:4,2:5,3:6}/3'})
@@ -453,29 +451,29 @@ def test_sparsevec_form_save(self):
453451
assert form.save()
454452
assert Item.objects.get(pk=1).sparse_embedding == SparseVector([4, 5, 6])
455453

456-
def test_sparesevec_form_save_missing(self):
454+
def test_sparesevec_form_save_missing(self) -> None:
457455
Item(id=1).save()
458456
item = Item.objects.get(pk=1)
459457
form = SparseVectorForm(instance=item, data={'sparse_embedding': ''})
460458
assert form.is_valid()
461459
assert form.save()
462460
assert Item.objects.get(pk=1).sparse_embedding is None
463461

464-
def test_clean(self):
462+
def test_clean(self) -> None:
465463
item = Item(id=1, embedding=[1, 2, 3], half_embedding=[1, 2, 3], binary_embedding='101', sparse_embedding=SparseVector([1, 2, 3]))
466464
item.full_clean()
467465

468-
def test_get_or_create(self):
466+
def test_get_or_create(self) -> None:
469467
Item.objects.get_or_create(embedding=[1, 2, 3])
470468

471-
def test_missing(self):
469+
def test_missing(self) -> None:
472470
Item().save()
473471
assert Item.objects.first().embedding is None
474472
assert Item.objects.first().half_embedding is None
475473
assert Item.objects.first().binary_embedding is None
476474
assert Item.objects.first().sparse_embedding is None
477475

478-
def test_vector_array(self):
476+
def test_vector_array(self) -> None:
479477
Item(id=1, embeddings=[Vector([1, 2, 3]), Vector([4, 5, 6])]).save()
480478

481479
with connection.cursor() as cursor:
@@ -486,7 +484,7 @@ def test_vector_array(self):
486484
item = Item.objects.get(pk=1)
487485
assert item.embeddings == [Vector([1, 2, 3]), Vector([4, 5, 6])]
488486

489-
def test_double_array(self):
487+
def test_double_array(self) -> None:
490488
Item(id=1, double_embedding=[1, 1, 1]).save()
491489
Item(id=2, double_embedding=[2, 2, 2]).save()
492490
Item(id=3, double_embedding=[1, 1, 2]).save()
@@ -496,7 +494,7 @@ def test_double_array(self):
496494
assert [v.distance for v in items] == [0, 1, sqrt(3)]
497495
assert items[1].double_embedding == [1, 1, 2]
498496

499-
def test_numeric_array(self):
497+
def test_numeric_array(self) -> None:
500498
Item(id=1, numeric_embedding=[1, 1, 1]).save()
501499
Item(id=2, numeric_embedding=[2, 2, 2]).save()
502500
Item(id=3, numeric_embedding=[1, 1, 2]).save()
@@ -506,7 +504,7 @@ def test_numeric_array(self):
506504
assert [v.distance for v in items] == [0, 1, sqrt(3)]
507505
assert items[1].numeric_embedding == [1, 1, 2]
508506

509-
def test_half_precision(self):
507+
def test_half_precision(self) -> None:
510508
create_items()
511509
distance = L2Distance(Cast('embedding', HalfVectorField(dimensions=3)), [1, 1, 1])
512510
items = Item.objects.annotate(distance=distance).order_by(distance)

0 commit comments

Comments
 (0)