@@ -164,22 +164,22 @@ class Value(Outcome[ValueT], Generic[ValueT]):
164164
165165 """
166166
167- value : ValueT = attr .ib ()
167+ _value : ValueT = attr .ib ()
168168 """The contained value."""
169169
170170 def __repr__ (self ) -> str :
171171 try :
172- return f'Value({ self .value !r} )'
172+ return f'Value({ self ._value !r} )'
173173 except AttributeError :
174174 return f'Value(<AlreadyUsed>)'
175175
176176 def unwrap (self ) -> ValueT :
177177 try :
178- v = self .value
179- except AttributeError :
178+ v = self ._value
179+ except AttributeError as e :
180180 pass
181181 else :
182- object .__delattr__ (self , "value " )
182+ object .__delattr__ (self , "_value " )
183183 return v
184184 raise AlreadyUsedError
185185
@@ -189,6 +189,14 @@ def send(self, gen: Generator[ResultT, ValueT, object]) -> ResultT:
189189 async def asend (self , agen : AsyncGenerator [ResultT , ValueT ]) -> ResultT :
190190 return await agen .asend (self .unwrap ())
191191
192+ @property
193+ def value (self ) -> ValueT :
194+ try :
195+ return self ._value
196+ except AttributeError as e :
197+ pass
198+ raise AlreadyUsedError
199+
192200
193201@final
194202@attr .s (frozen = True , repr = False , slots = True )
@@ -197,24 +205,24 @@ class Error(Outcome[NoReturn]):
197205
198206 """
199207
200- error : BaseException = attr .ib (
208+ _error : BaseException = attr .ib (
201209 validator = attr .validators .instance_of (BaseException )
202210 )
203211 """The contained exception object."""
204212
205213 def __repr__ (self ) -> str :
206214 try :
207- return f'Error({ self .error !r} )'
215+ return f'Error({ self ._error !r} )'
208216 except AttributeError :
209217 return 'Error(<AlreadyUsed>)'
210218
211219 def _unwrap_error (self ) -> BaseException :
212220 try :
213- v = self .error
221+ v = self ._error
214222 except AttributeError :
215223 pass
216224 else :
217- object .__delattr__ (self , "error " )
225+ object .__delattr__ (self , "_error " )
218226 return v
219227 raise AlreadyUsedError
220228
@@ -245,6 +253,14 @@ def send(self, gen: Generator[ResultT, NoReturn, object]) -> ResultT:
245253 async def asend (self , agen : AsyncGenerator [ResultT , NoReturn ]) -> ResultT :
246254 return await agen .athrow (self ._unwrap_error ())
247255
256+ @property
257+ def error (self ) -> BaseException :
258+ try :
259+ return self ._error
260+ except AttributeError :
261+ pass
262+ raise AlreadyUsedError
263+
248264
249265# A convenience alias to a union of both results, allowing exhaustiveness checking.
250266Maybe = Union [Value [ValueT ], Error ]
0 commit comments