main
 1import operator
 2from typing import Any
 3from typing_extensions import override
 4
 5from openai._utils import LazyProxy
 6from openai._extras._common import MissingDependencyError
 7
 8
 9class RecursiveLazyProxy(LazyProxy[Any]):
10    @override
11    def __load__(self) -> Any:
12        return self
13
14    def __call__(self, *_args: Any, **_kwds: Any) -> Any:
15        raise RuntimeError("This should never be called!")
16
17
18def test_recursive_proxy() -> None:
19    proxy = RecursiveLazyProxy()
20    assert repr(proxy) == "RecursiveLazyProxy"
21    assert str(proxy) == "RecursiveLazyProxy"
22    assert dir(proxy) == []
23    assert type(proxy).__name__ == "RecursiveLazyProxy"
24    assert type(operator.attrgetter("name.foo.bar.baz")(proxy)).__name__ == "RecursiveLazyProxy"
25
26
27def test_isinstance_does_not_error() -> None:
28    class MissingDepsProxy(LazyProxy[Any]):
29        @override
30        def __load__(self) -> Any:
31            raise MissingDependencyError("Mocking missing dependency")
32
33    proxy = MissingDepsProxy()
34    assert not isinstance(proxy, dict)
35    assert isinstance(proxy, LazyProxy)