@@ -67,6 +67,85 @@ def test_import_agents_has_no_tracing_side_effects() -> None:
6767 assert payload ["shutdown_handler_registered" ] is False
6868
6969
70+ def test_import_agents_does_not_require_sqlite3 () -> None :
71+ payload = _run_python (
72+ """
73+ import importlib.abc
74+ import json
75+ import sys
76+
77+ class BlockSqlite3(importlib.abc.MetaPathFinder):
78+ def find_spec(self, fullname, path, target=None):
79+ if fullname in {"sqlite3", "_sqlite3"}:
80+ raise ModuleNotFoundError(f"blocked optional backend module: {fullname}")
81+ return None
82+
83+ sys.meta_path.insert(0, BlockSqlite3())
84+
85+ import agents
86+ from agents import Agent, Runner
87+ from agents.memory import Session, SessionSettings
88+
89+ print(
90+ json.dumps(
91+ {
92+ "agent_name": Agent.__name__,
93+ "runner_name": Runner.__name__,
94+ "session_name": Session.__name__,
95+ "settings_name": SessionSettings.__name__,
96+ "sqlite3_loaded": "sqlite3" in sys.modules,
97+ "private_sqlite3_loaded": "_sqlite3" in sys.modules,
98+ "sqlite_session_loaded": "agents.memory.sqlite_session" in sys.modules,
99+ "sqlite_session_exported": "SQLiteSession" in agents.__all__,
100+ }
101+ )
102+ )
103+ """
104+ )
105+
106+ assert payload ["agent_name" ] == "Agent"
107+ assert payload ["runner_name" ] == "Runner"
108+ assert payload ["session_name" ] == "Session"
109+ assert payload ["settings_name" ] == "SessionSettings"
110+ assert payload ["sqlite3_loaded" ] is False
111+ assert payload ["private_sqlite3_loaded" ] is False
112+ assert payload ["sqlite_session_loaded" ] is False
113+ assert payload ["sqlite_session_exported" ] is True
114+
115+
116+ def test_sqlite_session_top_level_export_is_lazy () -> None :
117+ payload = _run_python (
118+ """
119+ import json
120+ import sys
121+
122+ import agents
123+
124+ loaded_after_import = "agents.memory.sqlite_session" in sys.modules
125+
126+ from agents import SQLiteSession
127+
128+ loaded_after_export = "agents.memory.sqlite_session" in sys.modules
129+
130+ print(
131+ json.dumps(
132+ {
133+ "sqlite_session_name": SQLiteSession.__name__,
134+ "loaded_after_import": loaded_after_import,
135+ "loaded_after_export": loaded_after_export,
136+ "sqlite3_loaded": "sqlite3" in sys.modules,
137+ }
138+ )
139+ )
140+ """
141+ )
142+
143+ assert payload ["sqlite_session_name" ] == "SQLiteSession"
144+ assert payload ["loaded_after_import" ] is False
145+ assert payload ["loaded_after_export" ] is True
146+ assert payload ["sqlite3_loaded" ] is True
147+
148+
70149def test_get_trace_provider_lazily_initializes_defaults () -> None :
71150 payload = _run_python (
72151 """
0 commit comments