GitHub

FiberSetRuntime

API reference for FiberSetRuntime.

Forks effects into a FiberSet from plain code; see FiberSet.runtime.

Functions

__init__

__init__(fiber_set, runtime) -> None
ParameterTypeDescription
fiber_setFiberSet[A, E]
runtimeCapturedRuntime
def __init__(self, fiber_set: FiberSet[A, E], runtime: CapturedRuntime) -> None:
    self._set = fiber_set
    self._runtime = runtime

__call__

__call__(eff, /, *, propagate_interruption=False, uninterruptible=False, scheduler=None) -> Fiber[A, E]

Fork eff on a root fiber and add it to the set. A closed set gives back an interrupted fiber that never runs eff.

ParameterTypeDescription
effEffect[A, E, R]
propagate_interruptionbool = False
uninterruptiblebool = False
schedulerScheduler | None = None

Returns Fiber[A, E]

def __call__(
    self,
    eff: Effect[A, E, R],
    /,
    *,
    propagate_interruption: bool = False,
    uninterruptible: bool = False,
    scheduler: Scheduler | None = None,
) -> Fiber[A, E]:
    """Fork ``eff`` on a root fiber and add it to the set. A closed set
    gives back an interrupted fiber that never runs ``eff``."""
    require_effect(eff, "eff")
    if self._set._fibers is None:
        return self._runtime.interrupted()
    fiber = self._runtime.fork(eff, uninterruptible=uninterruptible, scheduler=scheduler)
    self._set.unsafe_add(fiber, propagate_interruption=propagate_interruption)
    return fiber