GitHub

SubscriptionRef

API reference for SubscriptionRef.

Functions

__init__

__init__(value) -> None
ParameterTypeDescription
valueA
def __init__(self, value: A) -> None:
    super().__init__(value)
    self._pubsub = PubSub(Atomic[A].unbounded(replay=1), "dropping")
    self._pubsub.unsafe_publish(value)

make

make(value) -> Effect[SubscriptionRef[T]]
ParameterTypeDescription
valueT

Returns Effect[SubscriptionRef[T]]

@staticmethod
def make[T](value: T) -> Effect[SubscriptionRef[T]]:
    return _Sync(lambda: SubscriptionRef(value))

subscribe

subscribe() -> Effect[Subscription[A], Never, Scope]

Subscribe until the current scope closes: the current value, then every later one.

Returns Effect[Subscription[A], Never, Scope]

def subscribe(self) -> Effect[Subscription[A], Never, Scope]:
    """Subscribe until the current scope closes: the current value, then
    every later one."""
    return self._pubsub.subscribe()

changes

changes() -> Stream[A]

A stream of the current value, then every later one (Effect's SubscriptionRef.changes). Each run subscribes anew.

Returns Stream[A]

def changes(self) -> Stream[A]:
    """A stream of the current value, then every later one (Effect's
    ``SubscriptionRef.changes``). Each run subscribes anew."""
    from pyfect.stream import from_pubsub

    return from_pubsub(self._pubsub)

unsafe_get

unsafe_get() -> A

Returns A

def unsafe_get(self) -> A:
    return self._value

get

get() -> Effect[A]

Returns Effect[A]

def get(self) -> Effect[A]:
    return _Sync(lambda: self._value)

set

set(value) -> Effect[None]
ParameterTypeDescription
valueA

Returns Effect[None]

def set(self, value: A) -> Effect[None]:
    return self._locked(lambda _: (None, Some(value)))

set_and_get

set_and_get(value) -> Effect[A]
ParameterTypeDescription
valueA

Returns Effect[A]

def set_and_get(self, value: A) -> Effect[A]:
    return self._locked(lambda _: (value, Some(value)))

get_and_set

get_and_set(value) -> Effect[A]
ParameterTypeDescription
valueA

Returns Effect[A]

def get_and_set(self, value: A) -> Effect[A]:
    return self._locked(lambda old: (old, Some(value)))

update

update(f) -> Effect[None]
ParameterTypeDescription
fCallable[[A], A]

Returns Effect[None]

def update(self, f: Callable[[A], A]) -> Effect[None]:
    return self._locked(lambda old: (None, Some(f(old))))

update_and_get

update_and_get(f) -> Effect[A]
ParameterTypeDescription
fCallable[[A], A]

Returns Effect[A]

def update_and_get(self, f: Callable[[A], A]) -> Effect[A]:
    return self._locked(lambda old: _new_and_get(f(old)))

get_and_update

get_and_update(f) -> Effect[A]
ParameterTypeDescription
fCallable[[A], A]

Returns Effect[A]

def get_and_update(self, f: Callable[[A], A]) -> Effect[A]:
    return self._locked(lambda old: (old, Some(f(old))))

update_some

update_some(f) -> Effect[None]
ParameterTypeDescription
fCallable[[A], Option[A]]

Returns Effect[None]

def update_some(self, f: Callable[[A], Option[A]]) -> Effect[None]:
    return self._locked(lambda old: (None, f(old)))

update_some_and_get

update_some_and_get(f) -> Effect[A]
ParameterTypeDescription
fCallable[[A], Option[A]]

Returns Effect[A]

def update_some_and_get(self, f: Callable[[A], Option[A]]) -> Effect[A]:
    return self._locked(lambda old: _some_and_get(old, f(old)))

get_and_update_some

get_and_update_some(f) -> Effect[A]
ParameterTypeDescription
fCallable[[A], Option[A]]

Returns Effect[A]

def get_and_update_some(self, f: Callable[[A], Option[A]]) -> Effect[A]:
    return self._locked(lambda old: (old, f(old)))

modify

modify(f) -> Effect[B]
ParameterTypeDescription
fCallable[[A], tuple[B, A]]

Returns Effect[B]

def modify[B](self, f: Callable[[A], tuple[B, A]]) -> Effect[B]:
    return self._locked(lambda old: _modified(f(old)))

modify_some

modify_some(f) -> Effect[B]
ParameterTypeDescription
fCallable[[A], tuple[B, Option[A]]]

Returns Effect[B]

def modify_some[B](self, f: Callable[[A], tuple[B, Option[A]]]) -> Effect[B]:
    return self._locked(f)

update_effect

update_effect(f) -> Effect[None, E, R]
ParameterTypeDescription
fCallable[[A], Effect[A, E, R]]

Returns Effect[None, E, R]

def update_effect[E = Never, R = Never](
    self, f: Callable[[A], Effect[A, E, R]]
) -> Effect[None, E, R]:
    return self._locked_effect(lambda old: f(old).map(lambda new: (None, Some(new))))

update_and_get_effect

update_and_get_effect(f) -> Effect[A, E, R]
ParameterTypeDescription
fCallable[[A], Effect[A, E, R]]

Returns Effect[A, E, R]

def update_and_get_effect[E = Never, R = Never](
    self, f: Callable[[A], Effect[A, E, R]]
) -> Effect[A, E, R]:
    return self._locked_effect(lambda old: f(old).map(_new_and_get))

get_and_update_effect

get_and_update_effect(f) -> Effect[A, E, R]
ParameterTypeDescription
fCallable[[A], Effect[A, E, R]]

Returns Effect[A, E, R]

def get_and_update_effect[E = Never, R = Never](
    self, f: Callable[[A], Effect[A, E, R]]
) -> Effect[A, E, R]:
    return self._locked_effect(lambda old: f(old).map(lambda new: (old, Some(new))))

update_some_effect

update_some_effect(f) -> Effect[None, E, R]
ParameterTypeDescription
fCallable[[A], Effect[Option[A], E, R]]

Returns Effect[None, E, R]

def update_some_effect[E = Never, R = Never](
    self, f: Callable[[A], Effect[Option[A], E, R]]
) -> Effect[None, E, R]:
    return self._locked_effect(lambda old: f(old).map(lambda new: (None, new)))

update_some_and_get_effect

update_some_and_get_effect(f) -> Effect[A, E, R]
ParameterTypeDescription
fCallable[[A], Effect[Option[A], E, R]]

Returns Effect[A, E, R]

def update_some_and_get_effect[E = Never, R = Never](
    self, f: Callable[[A], Effect[Option[A], E, R]]
) -> Effect[A, E, R]:
    return self._locked_effect(lambda old: f(old).map(lambda new: _some_and_get(old, new)))

get_and_update_some_effect

get_and_update_some_effect(f) -> Effect[A, E, R]
ParameterTypeDescription
fCallable[[A], Effect[Option[A], E, R]]

Returns Effect[A, E, R]

def get_and_update_some_effect[E = Never, R = Never](
    self, f: Callable[[A], Effect[Option[A], E, R]]
) -> Effect[A, E, R]:
    return self._locked_effect(lambda old: f(old).map(lambda new: (old, new)))

modify_effect

modify_effect(f) -> Effect[B, E, R]
ParameterTypeDescription
fCallable[[A], Effect[tuple[B, A], E, R]]

Returns Effect[B, E, R]

def modify_effect[B, E = Never, R = Never](
    self, f: Callable[[A], Effect[tuple[B, A], E, R]]
) -> Effect[B, E, R]:
    return self._locked_effect(lambda old: f(old).map(_modified))

modify_some_effect

modify_some_effect(f) -> Effect[B, E, R]
ParameterTypeDescription
fCallable[[A], Effect[tuple[B, Option[A]], E, R]]

Returns Effect[B, E, R]

def modify_some_effect[B, E = Never, R = Never](
    self, f: Callable[[A], Effect[tuple[B, Option[A]], E, R]]
) -> Effect[B, E, R]:
    return self._locked_effect(f)