Source code for stdlibx.option.methods.result

 1from __future__ import annotations
 2
 3from typing import Callable, TypeVar
 4
 5from stdlibx.option import Nothing, Option, Some, is_some
 6from stdlibx.result import Error, Ok, Result, is_err, is_ok
 7
 8T = TypeVar("T")
 9U = TypeVar("U")
10E = TypeVar("E")
11
12
[docs] 13def ok_or(opt: Option[T], error: E) -> Result[T, E]: 14 if is_some(opt): 15 return Ok(opt.value) 16 return Error(error)
17 18
[docs] 19def ok_or_else(opt: Option[T], error: Callable[[], E]) -> Result[T, E]: 20 if is_some(opt): 21 return Ok(opt.value) 22 return Error(error())
23 24
[docs] 25def transpose(opt: Option[Result[U, E]]) -> Result[Option[U], E]: 26 if is_some(opt) and is_ok(opt.value): 27 return Ok(Some(opt.value.value)) 28 elif is_some(opt) and is_err(opt.value): 29 return Error(opt.value.error) 30 else: 31 return Ok(Nothing())