class Result(object): def __init__(self, job: 'Job', success: bool, out: str, err: str) -> None: self.job = job self.success = Boolean(success) self.out = out self.err = err def __str__(self): return ('subprocess finished successfully' if self.success else 'subprocess failed: {} ({})'.format(self.msg, self.job)) def __repr__(self): return '{}({}, {}, {})'.format(self.__class__.__name__, self.job, self.success, self.msg) @property def msg(self): return self.err if self.err else self.out def either(self, good, bad): return self.success.maybe(Right(good)) | Left(bad)
def __init__(self, job: 'Job', success: bool, out: str, err: str) -> None: self.job = job self.success = Boolean(success) self.out = out self.err = err