Skip to content

Commit a28ec1a

Browse files
committed
Revert "make error and value private fields accessed by properties"
This reverts commit 2606efb.
1 parent 2606efb commit a28ec1a

3 files changed

Lines changed: 14 additions & 28 deletions

File tree

src/outcome/_impl.py

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -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
178+
v = self.value
179179
except AttributeError:
180180
pass
181181
else:
182-
object.__delattr__(self, "_value")
182+
object.__delattr__(self, "value")
183183
return v
184184
raise AlreadyUsedError
185185

@@ -189,10 +189,6 @@ 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-
return self.unwrap()
195-
196192

197193
@final
198194
@attr.s(frozen=True, repr=False, slots=True)
@@ -201,24 +197,24 @@ class Error(Outcome[NoReturn]):
201197
202198
"""
203199

204-
_error: BaseException = attr.ib(
200+
error: BaseException = attr.ib(
205201
validator=attr.validators.instance_of(BaseException)
206202
)
207203
"""The contained exception object."""
208204

209205
def __repr__(self) -> str:
210206
try:
211-
return f'Error({self._error!r})'
207+
return f'Error({self.error!r})'
212208
except AttributeError:
213209
return 'Error(<AlreadyUsed>)'
214210

215211
def _unwrap_error(self) -> BaseException:
216212
try:
217-
v = self._error
213+
v = self.error
218214
except AttributeError:
219215
pass
220216
else:
221-
object.__delattr__(self, "_error")
217+
object.__delattr__(self, "error")
222218
return v
223219
raise AlreadyUsedError
224220

@@ -249,10 +245,6 @@ def send(self, gen: Generator[ResultT, NoReturn, object]) -> ResultT:
249245
async def asend(self, agen: AsyncGenerator[ResultT, NoReturn]) -> ResultT:
250246
return await agen.athrow(self._unwrap_error())
251247

252-
@property
253-
def error(self) -> BaseException:
254-
return self._unwrap_error()
255-
256248

257249
# A convenience alias to a union of both results, allowing exhaustiveness checking.
258250
Maybe = Union[Value[ValueT], Error]

tests/test_async.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,8 @@ async def raise_ValueError(x):
2222
raise ValueError(x)
2323

2424
e = await outcome.acapture(raise_ValueError, 9)
25-
error = e.error
26-
assert type(error) is ValueError
27-
assert error.args == (9,)
25+
assert type(e.error) is ValueError
26+
assert e.error.args == (9,)
2827

2928

3029
async def test_asend():

tests/test_sync.py

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
def test_Outcome():
1111
v = Value(1)
1212
assert v.value == 1
13-
v = Value(1)
1413
assert repr(v) == "Value(1)"
1514
assert v.unwrap() == 1
1615
assert repr(v) == "Value(<AlreadyUsed>)"
@@ -22,16 +21,13 @@ def test_Outcome():
2221

2322
exc = RuntimeError("oops")
2423
e = Error(exc)
25-
error = e.error
26-
assert error is exc
27-
e = Error(exc)
24+
assert e.error is exc
2825
assert repr(e) == f"Error({exc!r})"
29-
e = Error(exc)
3026
with pytest.raises(RuntimeError):
3127
e.unwrap()
3228
with pytest.raises(AlreadyUsedError):
3329
e.unwrap()
34-
assert repr(e) == "Error(<AlreadyUsed>)"
30+
assert repr(e) == "Error(<DEAD>)"
3531

3632
e = Error(exc)
3733
with pytest.raises(TypeError):
@@ -105,9 +101,8 @@ def raise_ValueError(x):
105101

106102
e = outcome.capture(raise_ValueError, "two")
107103
assert type(e) == Error
108-
error = e.error
109-
assert type(error) is ValueError
110-
assert error.args == ("two",)
104+
assert type(e.error) is ValueError
105+
assert e.error.args == ("two",)
111106

112107

113108
def test_inheritance():

0 commit comments

Comments
 (0)