Skip to content

Commit a89cc52

Browse files
committed
fix: fall back for partial nat plugin api
Signed-off-by: Bryan Bednarski <bbednarski@nvidia.com>
1 parent 1587cd9 commit a89cc52

2 files changed

Lines changed: 25 additions & 1 deletion

File tree

src/nvidia_nat_redis/_nat_api.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
)
3838

3939
USING_PLUGIN_API = True
40-
except ModuleNotFoundError: # pragma: no cover - exercised only on older NAT releases
40+
except ImportError: # pragma: no cover - exercised only on older or partial NAT releases
4141
from nat.builder.builder import Builder
4242
from nat.builder.framework_enum import LLMFrameworkEnum
4343
from nat.builder.function import Function

tests/test_nat_api_imports.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
from __future__ import annotations
55

66
import ast
7+
import builtins
8+
import importlib
79
from pathlib import Path
810

911
PROHIBITED_DIRECT_IMPORTS = {
@@ -57,3 +59,25 @@ def test_nat_api_facade_exposes_plugin_authoring_symbols() -> None:
5759
"register_object_store",
5860
):
5961
assert hasattr(_nat_api, name)
62+
63+
64+
def test_nat_api_facade_falls_back_when_plugin_api_is_partial(monkeypatch) -> None:
65+
import nvidia_nat_redis._nat_api as nat_api
66+
67+
real_import = builtins.__import__
68+
69+
def import_with_partial_plugin_api(name, globals=None, locals=None, fromlist=(), level=0):
70+
if name == "nat.plugin_api":
71+
raise ImportError("cannot import name 'MemoryRef' from 'nat.plugin_api'")
72+
return real_import(name, globals, locals, fromlist, level)
73+
74+
with monkeypatch.context() as context:
75+
context.setattr(builtins, "__import__", import_with_partial_plugin_api)
76+
reloaded_api = importlib.reload(nat_api)
77+
78+
try:
79+
assert reloaded_api.USING_PLUGIN_API is False
80+
assert hasattr(reloaded_api, "Builder")
81+
assert hasattr(reloaded_api, "register_memory")
82+
finally:
83+
importlib.reload(nat_api)

0 commit comments

Comments
 (0)