Skip to content
This repository has been archived by the owner on Mar 1, 2024. It is now read-only.

Commit

Permalink
lazy import firebase_admin
Browse files Browse the repository at this point in the history
  • Loading branch information
ajay-sreeram committed Jul 2, 2023
1 parent 3d4480a commit 9274b21
Showing 1 changed file with 21 additions and 14 deletions.
35 changes: 21 additions & 14 deletions llama_hub/firebase_realtimedb/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@

from llama_index.readers.base import BaseReader
from llama_index.readers.schema.base import Document
import firebase_admin
from firebase_admin import db, credentials


class FirebaseRealtimeDatabaseReader(BaseReader):
Expand All @@ -26,18 +24,22 @@ def __init__(
) -> None:
"""Initialize with parameters."""
try:
if not firebase_admin._apps:
if service_account_key_path:
cred = credentials.Certificate(service_account_key_path)
firebase_admin.initialize_app(
cred, options={"databaseURL": database_url}
)
else:
firebase_admin.initialize_app(
options={"databaseURL": database_url}
)
import firebase_admin
from firebase_admin import credentials
except ImportError:
raise ImportError("`firebase_admin` package not found, please run `pip install firebase-admin`")

if not firebase_admin._apps:
if service_account_key_path:
cred = credentials.Certificate(service_account_key_path)
firebase_admin.initialize_app(
cred, options={"databaseURL": database_url}
)
else:
firebase_admin.initialize_app(
options={"databaseURL": database_url}
)


def load_data(self, path: str, field: Optional[str] = None) -> List[Document]:
"""Load data from Firebase Realtime Database and convert it into documents.
Expand All @@ -50,18 +52,23 @@ def load_data(self, path: str, field: Optional[str] = None) -> List[Document]:
List[Document]: A list of documents.
"""
try:
from firebase_admin import db
except ImportError:
raise ImportError("`firebase_admin` package not found, please run `pip install firebase-admin`")

ref = db.reference(path)
data = ref.get()

documents = []

if isinstance(data, dict):
if isinstance(data, Dict):
for key in data:
entry = data[key]
extra_info = {
"document_id": key,
}
if type(entry) is dict and field in entry:
if type(entry) is Dict and field in entry:
text = entry[field]
else:
text = str(entry)
Expand Down

0 comments on commit 9274b21

Please sign in to comment.