|
12 | 12 | from typing import Any |
13 | 13 | from .conftest import numpy as np |
14 | 14 |
|
| 15 | +try: |
| 16 | + from sqlalchemy.dialects.postgresql import BitString |
| 17 | + sqlalchemy_version = 2.1 |
| 18 | +except ImportError: |
| 19 | + sqlalchemy_version = 2 |
| 20 | + |
15 | 21 | psycopg2_engine = create_engine('postgresql+psycopg2://localhost/pgvector_python_test') |
16 | 22 | psycopg2_type_engine = create_engine('postgresql+psycopg2://localhost/pgvector_python_test') |
17 | 23 |
|
@@ -420,7 +426,7 @@ def test_select(self, engine: Engine) -> None: |
420 | 426 | def test_select_orm(self, engine: Engine) -> None: |
421 | 427 | with Session(engine) as session: |
422 | 428 | session.add(Item(embedding=[2, 3, 3])) |
423 | | - items = session.scalars(select(Item.embedding.l2_distance([1, 1, 1]))).all() |
| 429 | + items = session.scalars(select(Item.embedding.l2_distance([1, 1, 1]))).all() # type: ignore |
424 | 430 | assert items == [3] |
425 | 431 |
|
426 | 432 | def test_avg(self, engine: Engine) -> None: |
@@ -634,9 +640,15 @@ async def test_bit(self, engine: AsyncEngine) -> None: |
634 | 640 |
|
635 | 641 | async with async_session() as session: |
636 | 642 | async with session.begin(): |
637 | | - # typing issue |
638 | | - # https://github.com/MagicStack/py-pgproto/pull/32 |
639 | | - embedding = asyncpg.BitString('101') if engine == asyncpg_engine else '101' # type: ignore |
| 643 | + embedding: Any |
| 644 | + if sqlalchemy_version >= 2.1: |
| 645 | + embedding = BitString('101') |
| 646 | + elif engine == asyncpg_engine: |
| 647 | + # typing issue |
| 648 | + # https://github.com/MagicStack/py-pgproto/pull/32 |
| 649 | + embedding = asyncpg.BitString('101') # type: ignore |
| 650 | + else: |
| 651 | + embedding = '101' |
640 | 652 | session.add(Item(id=1, binary_embedding=embedding)) |
641 | 653 | item = await session.get_one(Item, 1) |
642 | 654 | assert item.binary_embedding == embedding |
|
0 commit comments