We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent c10799c commit e138e55Copy full SHA for e138e55
pgvector/django/functions.py
@@ -13,6 +13,10 @@ def __init__(self, expression, vector, **extra):
13
vector = Value(SparseVector._to_db(vector))
14
else:
15
vector = Value(Vector._to_db(vector))
16
+
17
+ # prevent error with unhashable types
18
+ self._constructor_args = ((expression, vector), extra)
19
20
super().__init__(expression, vector, **extra)
21
22
pgvector/utils/bit.py
@@ -24,6 +24,11 @@ def __init__(self, value):
24
def __repr__(self):
25
return f'Bit({self.to_text()})'
26
27
+ def __eq__(self, other):
28
+ if isinstance(other, self.__class__):
29
+ return np.array_equal(self.to_numpy(), other.to_numpy())
30
+ return False
31
32
def to_list(self):
33
return self._value.tolist()
34
pgvector/utils/halfvec.py
@@ -16,6 +16,11 @@ def __init__(self, value):
return f'HalfVector({self.to_list()})'
23
def dimensions(self):
return len(self._value)
pgvector/utils/sparsevec.py
@@ -26,6 +26,11 @@ def __repr__(self):
elements = dict(zip(self._indices, self._values))
return f'SparseVector({elements}, {self._dim})'
+ return self.dimensions() == other.dimensions() and self.indices() == other.indices() and self.values() == other.values()
35
return self._dim
36
pgvector/utils/vector.py
return f'Vector({self.to_list()})'
tests/test_bit.py
@@ -37,3 +37,7 @@ def test_ndim_zero(self):
37
def test_repr(self):
38
assert repr(Bit([True, False, True])) == 'Bit(101)'
39
assert str(Bit([True, False, True])) == 'Bit(101)'
40
41
+ def test_equality(self):
42
+ assert Bit([True, False, True]) == Bit([True, False, True])
43
+ assert Bit([True, False, True]) != Bit([True, False, False])
tests/test_half_vector.py
@@ -38,5 +38,9 @@ def test_repr(self):
assert repr(HalfVector([1, 2, 3])) == 'HalfVector([1.0, 2.0, 3.0])'
assert str(HalfVector([1, 2, 3])) == 'HalfVector([1.0, 2.0, 3.0])'
+ assert HalfVector([1, 2, 3]) == HalfVector([1, 2, 3])
+ assert HalfVector([1, 2, 3]) != HalfVector([1, 2, 4])
44
45
def test_dimensions(self):
46
assert HalfVector([1, 2, 3]).dimensions() == 3
tests/test_sparse_vector.py
@@ -52,6 +52,11 @@ def test_repr(self):
52
assert repr(SparseVector([1, 0, 2, 0, 3, 0])) == 'SparseVector({0: 1.0, 2: 2.0, 4: 3.0}, 6)'
53
assert str(SparseVector([1, 0, 2, 0, 3, 0])) == 'SparseVector({0: 1.0, 2: 2.0, 4: 3.0}, 6)'
54
55
56
+ assert SparseVector([1, 0, 2, 0, 3, 0]) == SparseVector([1, 0, 2, 0, 3, 0])
57
+ assert SparseVector([1, 0, 2, 0, 3, 0]) != SparseVector([1, 0, 2, 0, 3, 1])
58
+ assert SparseVector([1, 0, 2, 0, 3, 0]) == SparseVector({2: 2, 4: 3, 0: 1, 3: 0}, 6)
59
60
61
assert SparseVector([1, 0, 2, 0, 3, 0]).dimensions() == 6
62
tests/test_vector.py
assert repr(Vector([1, 2, 3])) == 'Vector([1.0, 2.0, 3.0])'
assert str(Vector([1, 2, 3])) == 'Vector([1.0, 2.0, 3.0])'
+ assert Vector([1, 2, 3]) == Vector([1, 2, 3])
+ assert Vector([1, 2, 3]) != Vector([1, 2, 4])
assert Vector([1, 2, 3]).dimensions() == 3
0 commit comments