aboutsummaryrefslogtreecommitdiff
path: root/.venv/lib/python3.12/site-packages/pgvector/sqlalchemy/bit.py
diff options
context:
space:
mode:
Diffstat (limited to '.venv/lib/python3.12/site-packages/pgvector/sqlalchemy/bit.py')
-rw-r--r--.venv/lib/python3.12/site-packages/pgvector/sqlalchemy/bit.py26
1 files changed, 26 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/pgvector/sqlalchemy/bit.py b/.venv/lib/python3.12/site-packages/pgvector/sqlalchemy/bit.py
new file mode 100644
index 00000000..0f83f3c6
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/pgvector/sqlalchemy/bit.py
@@ -0,0 +1,26 @@
+from sqlalchemy.dialects.postgresql.base import ischema_names
+from sqlalchemy.types import UserDefinedType, Float
+
+
+class BIT(UserDefinedType):
+ cache_ok = True
+
+ def __init__(self, length=None):
+ super(UserDefinedType, self).__init__()
+ self.length = length
+
+ def get_col_spec(self, **kw):
+ if self.length is None:
+ return 'BIT'
+ return 'BIT(%d)' % self.length
+
+ class comparator_factory(UserDefinedType.Comparator):
+ def hamming_distance(self, other):
+ return self.op('<~>', return_type=Float)(other)
+
+ def jaccard_distance(self, other):
+ return self.op('<%>', return_type=Float)(other)
+
+
+# for reflection
+ischema_names['bit'] = BIT