about summary refs log tree commit diff
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