Skip to content

Commit 534ec18

Browse files
committed
Added support for bytes to Bit constructor
1 parent 900cbb3 commit 534ec18

File tree

3 files changed

+7
-0
lines changed

3 files changed

+7
-0
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
- Added top-level `pgvector` package
44
- Added support for pg8000
5+
- Added support for `bytes` to `Bit` constructor
56
- Changed `globally` option to default to `False` for Psycopg 2
67
- Changed `arrays` option to default to `True` for Psycopg 2
78
- Fixed equality for `Vector`, `HalfVector`, `Bit`, and `SparseVector` classes

pgvector/bit.py

+2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ class Bit:
66
def __init__(self, value):
77
if isinstance(value, str):
88
self._value = self.from_text(value)._value
9+
elif isinstance(value, bytes):
10+
self._value = np.unpackbits(np.frombuffer(value, dtype=np.uint8)).astype(bool)
911
else:
1012
if isinstance(value, np.ndarray):
1113
if value.dtype == np.uint8:

tests/test_bit.py

+4
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ def test_tuple(self):
2323
def test_str(self):
2424
assert Bit('101').to_list() == [True, False, True]
2525

26+
def test_bytes(self):
27+
assert Bit(b'\xff\x00').to_list() == [True, True, True, True, True, True, True, True, False, False, False, False, False, False, False, False]
28+
assert Bit(b'\xfe\x07').to_list() == [True, True, True, True, True, True, True, False, False, False, False, False, False, True, True, True]
29+
2630
def test_ndarray_uint8(self):
2731
arr = np.array([254, 7, 0], dtype=np.uint8)
2832
assert Bit(arr).to_text() == '111111100000011100000000'

0 commit comments

Comments
 (0)