From 0e7aff96bbd70c2a347c4c87ad857b3374e6f41f Mon Sep 17 00:00:00 2001 From: Yannick Stephan Date: Sun, 16 Feb 2025 15:08:50 +0100 Subject: [PATCH] back to not making breaks --- lightrag/kg/age_impl.py | 9 ++++++++- lightrag/kg/chroma_impl.py | 4 ++++ lightrag/kg/faiss_impl.py | 7 ++++++- lightrag/kg/milvus_impl.py | 12 +++++++----- lightrag/kg/mongo_impl.py | 10 +++++++--- lightrag/kg/nano_vector_db_impl.py | 5 ++++- lightrag/kg/oracle_impl.py | 5 +++++ lightrag/kg/postgres_impl.py | 5 +++++ lightrag/kg/qdrant_impl.py | 5 +++++ lightrag/kg/tidb_impl.py | 7 +++++++ 10 files changed, 58 insertions(+), 11 deletions(-) diff --git a/lightrag/kg/age_impl.py b/lightrag/kg/age_impl.py index f9499376..b2eda5da 100644 --- a/lightrag/kg/age_impl.py +++ b/lightrag/kg/age_impl.py @@ -7,7 +7,7 @@ from contextlib import asynccontextmanager from dataclasses import dataclass from typing import Any, Dict, List, NamedTuple, Optional, Union, final import numpy as np - +import pipmaster as pm from lightrag.types import KnowledgeGraph from tenacity import ( @@ -27,6 +27,13 @@ if sys.platform.startswith("win"): asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) +if not pm.is_installed("psycopg-pool"): + pm.install("psycopg-pool") + pm.install("psycopg[binary,pool]") + +if not pm.is_installed("asyncpg"): + pm.install("asyncpg") + try: import psycopg from psycopg.rows import namedtuple_row diff --git a/lightrag/kg/chroma_impl.py b/lightrag/kg/chroma_impl.py index ecac2b62..340e7a66 100644 --- a/lightrag/kg/chroma_impl.py +++ b/lightrag/kg/chroma_impl.py @@ -5,6 +5,10 @@ import numpy as np from lightrag.base import BaseVectorStorage from lightrag.utils import logger +import pipmaster as pm + +if not pm.is_installed("chromadb"): + pm.install("chromadb") try: from chromadb import HttpClient, PersistentClient diff --git a/lightrag/kg/faiss_impl.py b/lightrag/kg/faiss_impl.py index 0f455f1c..dea8aac0 100644 --- a/lightrag/kg/faiss_impl.py +++ b/lightrag/kg/faiss_impl.py @@ -5,8 +5,9 @@ from typing import Any, final import json import numpy as np -from tqdm.asyncio import tqdm as tqdm_async + from dataclasses import dataclass +import pipmaster as pm from lightrag.utils import ( logger, @@ -16,8 +17,12 @@ from lightrag.base import ( BaseVectorStorage, ) +if not pm.is_installed("faiss"): + pm.install("faiss") + try: import faiss + from tqdm.asyncio import tqdm as tqdm_async except ImportError as e: raise ImportError( "`faiss` library is not installed. Please install it via pip: `pip install faiss`." diff --git a/lightrag/kg/milvus_impl.py b/lightrag/kg/milvus_impl.py index 1288df07..9aa9c37d 100644 --- a/lightrag/kg/milvus_impl.py +++ b/lightrag/kg/milvus_impl.py @@ -6,16 +6,18 @@ from dataclasses import dataclass import numpy as np from lightrag.utils import logger from ..base import BaseVectorStorage - +import pipmaster as pm import configparser +if not pm.is_installed("pymilvus"): + pm.install("pymilvus") + try: from pymilvus import MilvusClient -except ImportError: +except ImportError as e: raise ImportError( - "pymilvus library is not installed. Please install it to proceed." - ) - + "`pymilvus` library is not installed. Please install it via pip: `pip install pymilvus`." + ) from e config = configparser.ConfigParser() config.read("config.ini", "utf-8") diff --git a/lightrag/kg/mongo_impl.py b/lightrag/kg/mongo_impl.py index 330fa474..78b63179 100644 --- a/lightrag/kg/mongo_impl.py +++ b/lightrag/kg/mongo_impl.py @@ -18,6 +18,13 @@ from ..base import ( from ..namespace import NameSpace, is_namespace from ..utils import logger from ..types import KnowledgeGraph, KnowledgeGraphNode, KnowledgeGraphEdge +import pipmaster as pm + +if not pm.is_installed("pymongo"): + pm.install("pymongo") + +if not pm.is_installed("motor"): + pm.install("motor") try: from motor.motor_asyncio import AsyncIOMotorClient @@ -214,9 +221,6 @@ class MongoDocStatusStorage(DocStatusStorage): # Implement the method here pass - async def update_doc_status(self, data: dict[str, Any]) -> None: - raise NotImplementedError - @final @dataclass diff --git a/lightrag/kg/nano_vector_db_impl.py b/lightrag/kg/nano_vector_db_impl.py index fbd6a06a..30b766e0 100644 --- a/lightrag/kg/nano_vector_db_impl.py +++ b/lightrag/kg/nano_vector_db_impl.py @@ -11,11 +11,14 @@ from lightrag.utils import ( logger, compute_mdhash_id, ) - +import pipmaster as pm from lightrag.base import ( BaseVectorStorage, ) +if not pm.is_installed("nano-vectordb"): + pm.install("nano-vectordb") + try: from nano_vectordb import NanoVectorDB except ImportError as e: diff --git a/lightrag/kg/oracle_impl.py b/lightrag/kg/oracle_impl.py index d2d10141..560ffb88 100644 --- a/lightrag/kg/oracle_impl.py +++ b/lightrag/kg/oracle_impl.py @@ -18,6 +18,11 @@ from ..base import ( from ..namespace import NameSpace, is_namespace from ..utils import logger +import pipmaster as pm + +if not pm.is_installed("oracledb"): + pm.install("oracledb") + try: import oracledb diff --git a/lightrag/kg/postgres_impl.py b/lightrag/kg/postgres_impl.py index 0dffa7d3..0ec30644 100644 --- a/lightrag/kg/postgres_impl.py +++ b/lightrag/kg/postgres_impl.py @@ -34,6 +34,11 @@ if sys.platform.startswith("win"): asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) +import pipmaster as pm + +if not pm.is_installed("asyncpg"): + pm.install("asyncpg") + try: import asyncpg from tqdm.asyncio import tqdm as tqdm_async diff --git a/lightrag/kg/qdrant_impl.py b/lightrag/kg/qdrant_impl.py index 124d48d9..b4190f1f 100644 --- a/lightrag/kg/qdrant_impl.py +++ b/lightrag/kg/qdrant_impl.py @@ -14,6 +14,11 @@ import configparser config = configparser.ConfigParser() config.read("config.ini", "utf-8") +import pipmaster as pm + +if not pm.is_installed("qdrant_client"): + pm.install("qdrant_client") + try: from qdrant_client import QdrantClient, models diff --git a/lightrag/kg/tidb_impl.py b/lightrag/kg/tidb_impl.py index 003316d3..4f7c891c 100644 --- a/lightrag/kg/tidb_impl.py +++ b/lightrag/kg/tidb_impl.py @@ -13,6 +13,13 @@ from ..base import BaseGraphStorage, BaseKVStorage, BaseVectorStorage from ..namespace import NameSpace, is_namespace from ..utils import logger +import pipmaster as pm + +if not pm.is_installed("pymysql"): + pm.install("pymysql") +if not pm.is_installed("sqlalchemy"): + pm.install("sqlalchemy") + try: from sqlalchemy import create_engine, text