@@ -165,7 +165,7 @@ class LazyProxy(object):
165165 Hello, universe!
166166 Hello, world!
167167 """
168- __slots__ = ['_func' , '_args' , '_kwargs' , '_value' , '_is_cache_enabled' ]
168+ __slots__ = ['_func' , '_args' , '_kwargs' , '_value' , '_is_cache_enabled' , '_attribute_error' ]
169169
170170 def __init__ (self , func , * args , ** kwargs ):
171171 is_cache_enabled = kwargs .pop ('enable_cache' , True )
@@ -175,11 +175,17 @@ def __init__(self, func, *args, **kwargs):
175175 object .__setattr__ (self , '_kwargs' , kwargs )
176176 object .__setattr__ (self , '_is_cache_enabled' , is_cache_enabled )
177177 object .__setattr__ (self , '_value' , None )
178+ object .__setattr__ (self , '_attribute_error' , None )
178179
179180 @property
180181 def value (self ):
181182 if self ._value is None :
182- value = self ._func (* self ._args , ** self ._kwargs )
183+ try :
184+ value = self ._func (* self ._args , ** self ._kwargs )
185+ except AttributeError as error :
186+ object .__setattr__ (self , '_attribute_error' , error )
187+ raise
188+
183189 if not self ._is_cache_enabled :
184190 return value
185191 object .__setattr__ (self , '_value' , value )
@@ -249,6 +255,8 @@ def __delattr__(self, name):
249255 delattr (self .value , name )
250256
251257 def __getattr__ (self , name ):
258+ if self ._attribute_error is not None :
259+ raise self ._attribute_error
252260 return getattr (self .value , name )
253261
254262 def __setattr__ (self , name , value ):
0 commit comments