Skip to content

Commit 8c85556

Browse files
committed
fix: lazy-load SQLiteSession exports
1 parent bfc8c63 commit 8c85556

File tree

1 file changed

+20
-2
lines changed

1 file changed

+20
-2
lines changed

src/agents/memory/sqlite_session.py

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,29 @@
22

33
import asyncio
44
import json
5-
import sqlite3
5+
import sys
66
import threading
77
from collections.abc import Iterator
88
from contextlib import contextmanager
99
from pathlib import Path
10-
from typing import ClassVar
10+
from typing import TYPE_CHECKING, ClassVar
1111

1212
from ..items import TResponseInputItem
1313
from .session import SessionABC
1414
from .session_settings import SessionSettings, resolve_session_limit
1515

16+
if TYPE_CHECKING:
17+
import sqlite3
18+
else:
19+
sqlite3 = sys.modules.get("sqlite3")
20+
if sqlite3 is None:
21+
try:
22+
import sqlite3 as _sqlite3
23+
24+
sqlite3 = _sqlite3
25+
except ImportError:
26+
sqlite3 = None # type: ignore[misc,assignment]
27+
1628

1729
class SQLiteSession(SessionABC):
1830
"""SQLite-based implementation of session storage.
@@ -46,6 +58,12 @@ def __init__(
4658
session_settings: Session configuration settings including default limit for
4759
retrieving items. If None, uses default SessionSettings().
4860
"""
61+
if sqlite3 is None:
62+
raise RuntimeError(
63+
"SQLiteSession requires the sqlite3 module, which is not available "
64+
"in this Python runtime. Please install a Python build with sqlite3 support "
65+
"or use an alternative session implementation."
66+
)
4967
self.session_id = session_id
5068
self.session_settings = session_settings or SessionSettings()
5169
self.db_path = db_path

0 commit comments

Comments
 (0)