From 5d19a888b0fc37e07fc430f06b0475ac80991d32 Mon Sep 17 00:00:00 2001 From: Saifeddine ALOUI Date: Wed, 19 Feb 2025 19:36:14 +0100 Subject: [PATCH 01/12] Update age_impl.py --- lightrag/kg/age_impl.py | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/lightrag/kg/age_impl.py b/lightrag/kg/age_impl.py index 243a110b..cb28ab6f 100644 --- a/lightrag/kg/age_impl.py +++ b/lightrag/kg/age_impl.py @@ -23,7 +23,6 @@ from ..base import BaseGraphStorage if sys.platform.startswith("win"): import asyncio.windows_events - asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) @@ -34,15 +33,9 @@ if not pm.is_installed("psycopg-pool"): if not pm.is_installed("asyncpg"): pm.install("asyncpg") -try: - import psycopg - from psycopg.rows import namedtuple_row - from psycopg_pool import AsyncConnectionPool, PoolTimeout -except ImportError: - raise ImportError( - "`psycopg-pool, psycopg[binary,pool], asyncpg` library is not installed. Please install it via pip: `pip install psycopg-pool psycopg[binary,pool] asyncpg`." - ) - +import psycopg +from psycopg.rows import namedtuple_row +from psycopg_pool import AsyncConnectionPool, PoolTimeout class AGEQueryException(Exception): """Exception for the AGE queries.""" From 2d085cda435c5d4aedb46c19a7da0aa3273cab63 Mon Sep 17 00:00:00 2001 From: Saifeddine ALOUI Date: Wed, 19 Feb 2025 19:44:10 +0100 Subject: [PATCH 02/12] Update chroma_impl.py --- lightrag/kg/chroma_impl.py | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/lightrag/kg/chroma_impl.py b/lightrag/kg/chroma_impl.py index 62a9b601..8196cb2a 100644 --- a/lightrag/kg/chroma_impl.py +++ b/lightrag/kg/chroma_impl.py @@ -10,13 +10,8 @@ import pipmaster as pm if not pm.is_installed("chromadb"): pm.install("chromadb") -try: - from chromadb import HttpClient, PersistentClient - from chromadb.config import Settings -except ImportError as e: - raise ImportError( - "`chromadb` library is not installed. Please install it via pip: `pip install chromadb`." - ) from e +from chromadb import HttpClient, PersistentClient +from chromadb.config import Settings @final From 8a0dbc97eb19ccff0ef0d1c755555a5195887a60 Mon Sep 17 00:00:00 2001 From: Saifeddine ALOUI Date: Wed, 19 Feb 2025 19:44:27 +0100 Subject: [PATCH 03/12] Update faiss_impl.py --- lightrag/kg/faiss_impl.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/lightrag/kg/faiss_impl.py b/lightrag/kg/faiss_impl.py index 75abf389..7c67e212 100644 --- a/lightrag/kg/faiss_impl.py +++ b/lightrag/kg/faiss_impl.py @@ -20,12 +20,7 @@ from lightrag.base import ( if not pm.is_installed("faiss"): pm.install("faiss") -try: - import faiss -except ImportError as e: - raise ImportError( - "`faiss` library is not installed. Please install it via pip: `pip install faiss`." - ) from e +import faiss @final From d25a5231751523694c5a4b820e3ce83a08659247 Mon Sep 17 00:00:00 2001 From: Saifeddine ALOUI Date: Wed, 19 Feb 2025 19:46:43 +0100 Subject: [PATCH 04/12] Update gremlin_impl.py --- lightrag/kg/gremlin_impl.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/lightrag/kg/gremlin_impl.py b/lightrag/kg/gremlin_impl.py index 40a9f007..5d1ea47b 100644 --- a/lightrag/kg/gremlin_impl.py +++ b/lightrag/kg/gremlin_impl.py @@ -2,6 +2,7 @@ import asyncio import inspect import json import os +import pipmaster as pm from dataclasses import dataclass from typing import Any, Dict, List, final @@ -20,15 +21,12 @@ from lightrag.utils import logger from ..base import BaseGraphStorage -try: - from gremlin_python.driver import client, serializer - from gremlin_python.driver.aiohttp.transport import AiohttpTransport - from gremlin_python.driver.protocol import GremlinServerError -except ImportError as e: - raise ImportError( - "`gremlin` library is not installed. Please install it via pip: `pip install gremlin`." - ) from e +if not pm.is_installed("gremlinpython"): + pm.install("gremlinpython") +from gremlin_python.driver import client, serializer +from gremlin_python.driver.aiohttp.transport import AiohttpTransport +from gremlin_python.driver.protocol import GremlinServerError @final @dataclass From ea5d8207a2b1bd1b69729dc2c75aab7ab5e32882 Mon Sep 17 00:00:00 2001 From: Saifeddine ALOUI Date: Wed, 19 Feb 2025 19:47:20 +0100 Subject: [PATCH 05/12] Update milvus_impl.py --- lightrag/kg/milvus_impl.py | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/lightrag/kg/milvus_impl.py b/lightrag/kg/milvus_impl.py index b1746514..833460a8 100644 --- a/lightrag/kg/milvus_impl.py +++ b/lightrag/kg/milvus_impl.py @@ -14,13 +14,8 @@ if not pm.is_installed("configparser"): if not pm.is_installed("pymilvus"): pm.install("pymilvus") -try: - import configparser - from pymilvus import MilvusClient -except ImportError as e: - raise ImportError( - "`pymilvus` library is not installed. Please install it via pip: `pip install pymilvus`." - ) from e +import configparser +from pymilvus import MilvusClient config = configparser.ConfigParser() config.read("config.ini", "utf-8") From b9d4ea5f0d199f2df5fee0f4d3812251cd5fe68f Mon Sep 17 00:00:00 2001 From: Saifeddine ALOUI Date: Wed, 19 Feb 2025 19:49:23 +0100 Subject: [PATCH 06/12] Update mongo_impl.py --- lightrag/kg/mongo_impl.py | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/lightrag/kg/mongo_impl.py b/lightrag/kg/mongo_impl.py index a6e6edfd..bc427773 100644 --- a/lightrag/kg/mongo_impl.py +++ b/lightrag/kg/mongo_impl.py @@ -25,18 +25,13 @@ if not pm.is_installed("pymongo"): if not pm.is_installed("motor"): pm.install("motor") -try: - from motor.motor_asyncio import ( - AsyncIOMotorClient, - AsyncIOMotorDatabase, - AsyncIOMotorCollection, - ) - from pymongo.operations import SearchIndexModel - from pymongo.errors import PyMongoError -except ImportError as e: - raise ImportError( - "`motor, pymongo` library is not installed. Please install it via pip: `pip install motor pymongo`." - ) from e +from motor.motor_asyncio import ( + AsyncIOMotorClient, + AsyncIOMotorDatabase, + AsyncIOMotorCollection, +) +from pymongo.operations import SearchIndexModel +from pymongo.errors import PyMongoError config = configparser.ConfigParser() config.read("config.ini", "utf-8") From d3c443529cbd015a3e4f576774c52c1157b20077 Mon Sep 17 00:00:00 2001 From: Saifeddine ALOUI Date: Wed, 19 Feb 2025 19:49:41 +0100 Subject: [PATCH 07/12] Update nano_vector_db_impl.py --- lightrag/kg/nano_vector_db_impl.py | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/lightrag/kg/nano_vector_db_impl.py b/lightrag/kg/nano_vector_db_impl.py index b246790b..2c29632b 100644 --- a/lightrag/kg/nano_vector_db_impl.py +++ b/lightrag/kg/nano_vector_db_impl.py @@ -18,13 +18,7 @@ from lightrag.base import ( if not pm.is_installed("nano-vectordb"): pm.install("nano-vectordb") -try: - from nano_vectordb import NanoVectorDB -except ImportError as e: - raise ImportError( - "`nano-vectordb` library is not installed. Please install it via pip: `pip install nano-vectordb`." - ) from e - +from nano_vectordb import NanoVectorDB @final @dataclass From 9ec46b8c5c00a2173cac8b64312ffcc600fb6252 Mon Sep 17 00:00:00 2001 From: Saifeddine ALOUI Date: Wed, 19 Feb 2025 19:50:24 +0100 Subject: [PATCH 08/12] Update oracle_impl.py --- lightrag/kg/oracle_impl.py | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/lightrag/kg/oracle_impl.py b/lightrag/kg/oracle_impl.py index 0916f6b0..57db7e5b 100644 --- a/lightrag/kg/oracle_impl.py +++ b/lightrag/kg/oracle_impl.py @@ -26,14 +26,8 @@ if not pm.is_installed("graspologic"): if not pm.is_installed("oracledb"): pm.install("oracledb") -try: - from graspologic import embed - import oracledb - -except ImportError as e: - raise ImportError( - "`oracledb` library is not installed. Please install it via pip: `pip install oracledb`." - ) from e +from graspologic import embed +import oracledb class OracleDB: From 521dbf2be15f9510a0547c042b22bcab737d45d2 Mon Sep 17 00:00:00 2001 From: Saifeddine ALOUI Date: Wed, 19 Feb 2025 19:50:46 +0100 Subject: [PATCH 09/12] Update postgres_impl.py --- lightrag/kg/postgres_impl.py | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/lightrag/kg/postgres_impl.py b/lightrag/kg/postgres_impl.py index a9c4b3b7..874c6f22 100644 --- a/lightrag/kg/postgres_impl.py +++ b/lightrag/kg/postgres_impl.py @@ -38,15 +38,8 @@ import pipmaster as pm if not pm.is_installed("asyncpg"): pm.install("asyncpg") -try: - import asyncpg - from asyncpg import Pool - -except ImportError as e: - raise ImportError( - "`asyncpg` library is not installed. Please install it via pip: `pip install asyncpg`." - ) from e - +import asyncpg +from asyncpg import Pool class PostgreSQLDB: def __init__(self, config: dict[str, Any], **kwargs: Any): From 473e52a095dea15b909e1415c136b90f90d9117d Mon Sep 17 00:00:00 2001 From: Saifeddine ALOUI Date: Wed, 19 Feb 2025 19:51:39 +0100 Subject: [PATCH 10/12] Update qdrant_impl.py --- lightrag/kg/qdrant_impl.py | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/lightrag/kg/qdrant_impl.py b/lightrag/kg/qdrant_impl.py index f9edc510..d350e7fa 100644 --- a/lightrag/kg/qdrant_impl.py +++ b/lightrag/kg/qdrant_impl.py @@ -15,16 +15,10 @@ config.read("config.ini", "utf-8") import pipmaster as pm -if not pm.is_installed("qdrant_client"): - pm.install("qdrant_client") +if not pm.is_installed("qdrant-client"): + pm.install("qdrant-client") -try: - from qdrant_client import QdrantClient, models - -except ImportError: - raise ImportError( - "`qdrant_client` library is not installed. Please install it via pip: `pip install qdrant-client`." - ) +from qdrant_client import QdrantClient, models def compute_mdhash_id_for_qdrant( From b44d582ebf96cb46772df250f2a0ba618f4f99bb Mon Sep 17 00:00:00 2001 From: Saifeddine ALOUI Date: Wed, 19 Feb 2025 19:52:10 +0100 Subject: [PATCH 11/12] Update tidb_impl.py --- lightrag/kg/tidb_impl.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/lightrag/kg/tidb_impl.py b/lightrag/kg/tidb_impl.py index ed9c8d4b..7afff265 100644 --- a/lightrag/kg/tidb_impl.py +++ b/lightrag/kg/tidb_impl.py @@ -20,13 +20,8 @@ if not pm.is_installed("pymysql"): if not pm.is_installed("sqlalchemy"): pm.install("sqlalchemy") -try: - from sqlalchemy import create_engine, text +from sqlalchemy import create_engine, text -except ImportError as e: - raise ImportError( - "`pymysql, sqlalchemy` library is not installed. Please install it via pip: `pip install pymysql sqlalchemy`." - ) from e class TiDB: From 45ee4dd08cba90523e32863b19ca446c02875615 Mon Sep 17 00:00:00 2001 From: Saifeddine ALOUI Date: Wed, 19 Feb 2025 20:50:39 +0100 Subject: [PATCH 12/12] fixed linting --- lightrag/kg/age_impl.py | 2 ++ lightrag/kg/gremlin_impl.py | 1 + lightrag/kg/nano_vector_db_impl.py | 1 + lightrag/kg/postgres_impl.py | 1 + lightrag/kg/tidb_impl.py | 1 - 5 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lightrag/kg/age_impl.py b/lightrag/kg/age_impl.py index cb28ab6f..97b3825d 100644 --- a/lightrag/kg/age_impl.py +++ b/lightrag/kg/age_impl.py @@ -23,6 +23,7 @@ from ..base import BaseGraphStorage if sys.platform.startswith("win"): import asyncio.windows_events + asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) @@ -37,6 +38,7 @@ import psycopg from psycopg.rows import namedtuple_row from psycopg_pool import AsyncConnectionPool, PoolTimeout + class AGEQueryException(Exception): """Exception for the AGE queries.""" diff --git a/lightrag/kg/gremlin_impl.py b/lightrag/kg/gremlin_impl.py index 5d1ea47b..3a26401d 100644 --- a/lightrag/kg/gremlin_impl.py +++ b/lightrag/kg/gremlin_impl.py @@ -28,6 +28,7 @@ from gremlin_python.driver import client, serializer from gremlin_python.driver.aiohttp.transport import AiohttpTransport from gremlin_python.driver.protocol import GremlinServerError + @final @dataclass class GremlinStorage(BaseGraphStorage): diff --git a/lightrag/kg/nano_vector_db_impl.py b/lightrag/kg/nano_vector_db_impl.py index 2c29632b..315b5a8f 100644 --- a/lightrag/kg/nano_vector_db_impl.py +++ b/lightrag/kg/nano_vector_db_impl.py @@ -20,6 +20,7 @@ if not pm.is_installed("nano-vectordb"): from nano_vectordb import NanoVectorDB + @final @dataclass class NanoVectorDBStorage(BaseVectorStorage): diff --git a/lightrag/kg/postgres_impl.py b/lightrag/kg/postgres_impl.py index 874c6f22..4ffa2fb2 100644 --- a/lightrag/kg/postgres_impl.py +++ b/lightrag/kg/postgres_impl.py @@ -41,6 +41,7 @@ if not pm.is_installed("asyncpg"): import asyncpg from asyncpg import Pool + class PostgreSQLDB: def __init__(self, config: dict[str, Any], **kwargs: Any): self.host = config.get("host", "localhost") diff --git a/lightrag/kg/tidb_impl.py b/lightrag/kg/tidb_impl.py index 7afff265..8b8fa2b6 100644 --- a/lightrag/kg/tidb_impl.py +++ b/lightrag/kg/tidb_impl.py @@ -23,7 +23,6 @@ if not pm.is_installed("sqlalchemy"): from sqlalchemy import create_engine, text - class TiDB: def __init__(self, config, **kwargs): self.host = config.get("host", None)