API reference¶
- calls.raises(__e: BaseException) Callable[[...], Any] [source]¶
Create a callable which raises the given exception.
The return value is marked
Any
so its signature fits anywhere a callable is needed.Example
>>> f = raises(ValueError("foo")) ... >>> f() # any arguments are accepted Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: foo
Note
The resulting callable is picklable if the given value is.
- calls.always(__v: S) Callable[[...], S] [source]¶
Create a callable which always returns the same value
Example
>>> f = always(4) ... >>> f() # any arguments are accepted 4
Note
The resulting callable is picklable if the given value is.
- calls.identity(__v: S) S [source]¶
Pass the given value unmodified
Example
>>> identity(4) 4 >>> identity("foo") "foo"
- calls.flip(__f: BinaryFunction[Q, R, S]) BinaryFunction[R, Q, S] [source]¶
Flip the two arguments of a function. Often useful in combination with
partial()
.Example
>>> f = flip(round) ... >>> f(2, 5.125) 5.13 >>> f(0, 3.4) 3
Note
The resulting callable is picklable if the original is.
- calls.pipe() Callable[[T1], T1] [source]¶
- calls.pipe(__f1: Callable[[T1], T2]) Callable[[T1], T2]
- calls.pipe(__f1: Callable[[T1], T2], __f2: Callable[[T2], T3]) Callable[[T1], T3]
- calls.pipe(__f1: Callable[[T1], T2], __f2: Callable[[T2], T3], __f3: Callable[[T3], T4]) Callable[[T1], T4]
- calls.pipe(__f1: Callable[[T1], T2], __f2: Callable[[T2], T3], __f3: Callable[[T3], T4], __f4: Callable[[T4], T5]) Callable[[T1], T5]
- calls.pipe(__f1: Callable[[T1], T2], __f2: Callable[[T2], T3], __f3: Callable[[T3], T4], __f4: Callable[[T4], T5], __f5: Callable[[T5], T6]) Callable[[T1], T6]
- calls.pipe(__f1: Callable[[T1], T2], __f2: Callable[[T2], T3], __f3: Callable[[T3], T4], __f4: Callable[[T4], T5], __f5: Callable[[T5], T6], __f6: Callable[[T6], T7]) Callable[[T1], T7]
- calls.pipe(__f1: Callable[[T1], T2], __f2: Callable[[T2], T3], __f3: Callable[[T3], T4], __f4: Callable[[T4], T5], __f5: Callable[[T5], T6], __f6: Callable[[T6], T7], __f7: Callable[[T7], T8]) Callable[[T1], T8]
- calls.pipe(__f1: Callable, __f2: Callable, __f3: Callable, __f4: Callable, __f5: Callable, __f6: Callable, __f7: Callable, *__fn: Callable) Callable
Create a new callable by piping several in succession
Example
>>> fn = pipe(float, lambda x: x / 4, int) >>> fn('9.3') 2
Note
Type checking is supported up to 7 functions, due to limitations of the Python type system.
The resulting callable is picklable if the given callables are.
- class calls.UnaryFunction(*args, **kwargs)[source]¶
Protocol
for a callable taking exactly one argument.Examples of objects satisfying this protocol:
>>> # Below are all UnaryFunction[int, float] ... >>> def myfunc(a: int) -> float: ... return a / 7 ... >>> lambda a: a / 7 ... >>> (7).__rtruediv__
- class calls.BinaryFunction(*args, **kwargs)[source]¶
Protocol
for a callable which takes exactly two arguments.Examples of objects satisfying this protocol:
>>> # Below are all BinaryFunction[str, int, str] ... >>> def myfunc(s: str, w: int) -> str: ... return a.center(b) ... >>> lambda s, w: s.center(w) ... >>> str.center