Skip to content

Commit 3a16189

Browse files
committed
feat: add result.__getitem__ and result.__setitem__ dunder methods
1 parent 54dd72e commit 3a16189

1 file changed

Lines changed: 28 additions & 0 deletions

File tree

ResultContainer/__init__.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1479,6 +1479,34 @@ def method(*args, **kwargs):
14791479
self.add_Err_msg(f"VAR.{name} raises an AttributeError", self.error_code("Attribute"))
14801480
return self
14811481

1482+
def __getitem__(self, key): # index return, a[index]
1483+
if not self._success:
1484+
err = Result(self)
1485+
err.add_Err_msg(f"Err()[{key}] is not subscriptable.", self.error_code("not_Ok"), add_traceback=True)
1486+
return err
1487+
try:
1488+
return Result(self._val[key])
1489+
except Exception as e:
1490+
return Result(
1491+
"",
1492+
success=False,
1493+
error_msg=f"Ok()[{key}] raises {e}",
1494+
error_code=self.error_code("Subscript_Error"),
1495+
error_code_group=self._g,
1496+
)
1497+
1498+
def __setitem__(self, key, value): # set from index, a[index] = XYZ
1499+
if self._success:
1500+
try:
1501+
self._val[key] = value
1502+
except Exception as e:
1503+
self.add_Err_msg(
1504+
f"Ok()[{key}]=value raises {e}",
1505+
error_code=self.error_code("Subscript_Error"),
1506+
)
1507+
else:
1508+
self.add_Err_msg(f"Err()[{key}] is not subscriptable.", self.error_code("not_Ok"), add_traceback=True)
1509+
14821510
def __iter__(self):
14831511
return self.iter_wrap()
14841512

0 commit comments

Comments
 (0)