From 3a1cb49e208ee2781edb1ec1fd93065c34105d31 Mon Sep 17 00:00:00 2001 From: Andy Lee Date: Sun, 10 Aug 2025 23:58:31 -0700 Subject: [PATCH] fix: complete Python 3.9 type annotation fixes in backend packages MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix remaining Python 3.9 incompatible type annotations in backend packages that were causing test failures. The union operator (|) syntax for type hints was introduced in Python 3.10 and causes "TypeError: unsupported operand type(s) for |" errors in Python 3.9. Changes in leann-backend-diskann: - Convert zmq_port: int | None to Optional[int] in diskann_backend.py - Convert passages_file: str | None to Optional[str] in diskann_embedding_server.py - Add Optional imports to both files Changes in leann-backend-hnsw: - Convert zmq_port: int | None to Optional[int] in hnsw_backend.py - Add Optional import This resolves the final test failures related to type annotation syntax and ensures full Python 3.9 compatibility across all packages. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- .../leann_backend_diskann/diskann_backend.py | 4 ++-- .../leann_backend_diskann/diskann_embedding_server.py | 3 ++- .../leann-backend-hnsw/leann_backend_hnsw/hnsw_backend.py | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/leann-backend-diskann/leann_backend_diskann/diskann_backend.py b/packages/leann-backend-diskann/leann_backend_diskann/diskann_backend.py index 926a26e..ba5c0ad 100644 --- a/packages/leann-backend-diskann/leann_backend_diskann/diskann_backend.py +++ b/packages/leann-backend-diskann/leann_backend_diskann/diskann_backend.py @@ -4,7 +4,7 @@ import os import struct import sys from pathlib import Path -from typing import Any, Literal +from typing import Any, Literal, Optional import numpy as np import psutil @@ -259,7 +259,7 @@ class DiskannSearcher(BaseSearcher): prune_ratio: float = 0.0, recompute_embeddings: bool = False, pruning_strategy: Literal["global", "local", "proportional"] = "global", - zmq_port: int | None = None, + zmq_port: Optional[int] = None, batch_recompute: bool = False, dedup_node_dis: bool = False, **kwargs, diff --git a/packages/leann-backend-diskann/leann_backend_diskann/diskann_embedding_server.py b/packages/leann-backend-diskann/leann_backend_diskann/diskann_embedding_server.py index 1928dc8..749d607 100644 --- a/packages/leann-backend-diskann/leann_backend_diskann/diskann_embedding_server.py +++ b/packages/leann-backend-diskann/leann_backend_diskann/diskann_embedding_server.py @@ -10,6 +10,7 @@ import sys import threading import time from pathlib import Path +from typing import Optional import numpy as np import zmq @@ -32,7 +33,7 @@ if not logger.handlers: def create_diskann_embedding_server( - passages_file: str | None = None, + passages_file: Optional[str] = None, zmq_port: int = 5555, model_name: str = "sentence-transformers/all-mpnet-base-v2", embedding_mode: str = "sentence-transformers", diff --git a/packages/leann-backend-hnsw/leann_backend_hnsw/hnsw_backend.py b/packages/leann-backend-hnsw/leann_backend_hnsw/hnsw_backend.py index d6b87f9..1d5f635 100644 --- a/packages/leann-backend-hnsw/leann_backend_hnsw/hnsw_backend.py +++ b/packages/leann-backend-hnsw/leann_backend_hnsw/hnsw_backend.py @@ -2,7 +2,7 @@ import logging import os import shutil from pathlib import Path -from typing import Any, Literal +from typing import Any, Literal, Optional import numpy as np from leann.interface import ( @@ -152,7 +152,7 @@ class HNSWSearcher(BaseSearcher): self, query: np.ndarray, top_k: int, - zmq_port: int | None = None, + zmq_port: Optional[int] = None, complexity: int = 64, beam_width: int = 1, prune_ratio: float = 0.0,