Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions src/spellbind/event.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,7 @@ def __init__(self):
self._subscriptions = []

@abstractmethod
def _get_parameter_count(self) -> int:
raise NotImplementedError
def _get_parameter_count(self) -> int: ...

def observe(self, observer: _O, times: int | None = None) -> None:
assert_parameter_max_count(observer, self._get_parameter_count())
Expand Down
9 changes: 3 additions & 6 deletions src/spellbind/float_values.py
Original file line number Diff line number Diff line change
Expand Up @@ -159,8 +159,7 @@ def _on_result_change(self, new_value: _U) -> None:
self._on_change(self._value)

@abstractmethod
def transform(self, values: Sequence[float]) -> _U:
raise NotImplementedError
def transform(self, values: Sequence[float]) -> _U: ...

@property
def value(self) -> _U:
Expand All @@ -185,8 +184,7 @@ def transform(self, values: Sequence[float]) -> _U:
return self.transform_two(values[0], values[1])

@abstractmethod
def transform_two(self, left: float, right: float) -> _U:
raise NotImplementedError
def transform_two(self, left: float, right: float) -> _U: ...


class CombinedThreeFloatValues(CombinedFloatValues[_U], Generic[_U], ABC):
Expand All @@ -197,8 +195,7 @@ def transform(self, values: Sequence[float]) -> _U:
return self.transform_three(values[0], values[1], values[2])

@abstractmethod
def transform_three(self, left: float, middle: float, right: float) -> _U:
raise NotImplementedError
def transform_three(self, left: float, middle: float, right: float) -> _U: ...


class AddFloatValues(CombinedFloatValues[float], FloatValue):
Expand Down
42 changes: 14 additions & 28 deletions src/spellbind/observables.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,12 +57,10 @@ def _call(self, observer: _O, *args) -> None:
raise CallCountExceededError

@abstractmethod
def __call__(self, *args) -> None:
raise NotImplementedError
def __call__(self, *args) -> None: ...

@abstractmethod
def matches_observer(self, observer: _O) -> bool:
raise NotImplementedError
def matches_observer(self, observer: _O) -> bool: ...


class StrongSubscription(Subscription[_O], Generic[_O]):
Expand Down Expand Up @@ -99,59 +97,47 @@ def matches_observer(self, observer: _O) -> bool:

class Observable(ABC):
@abstractmethod
def observe(self, observer: Observer, times: int | None = None) -> None:
raise NotImplementedError
def observe(self, observer: Observer, times: int | None = None) -> None: ...

@abstractmethod
def weak_observe(self, observer: Observer, times: int | None = None) -> None:
raise NotImplementedError
def weak_observe(self, observer: Observer, times: int | None = None) -> None: ...

@abstractmethod
def unobserve(self, observer: Observer) -> None:
raise NotImplementedError
def unobserve(self, observer: Observer) -> None: ...


class ValueObservable(Observable, Generic[_S], ABC):
@abstractmethod
def observe(self, observer: Observer | ValueObserver[_S], times: int | None = None) -> None:
raise NotImplementedError
def observe(self, observer: Observer | ValueObserver[_S], times: int | None = None) -> None: ...

@abstractmethod
def weak_observe(self, observer: Observer | ValueObserver[_S], times: int | None = None) -> None:
raise NotImplementedError
def weak_observe(self, observer: Observer | ValueObserver[_S], times: int | None = None) -> None: ...

@abstractmethod
def unobserve(self, observer: Observer | ValueObserver[_S]) -> None:
raise NotImplementedError
def unobserve(self, observer: Observer | ValueObserver[_S]) -> None: ...


class BiObservable(ValueObservable[_S], Generic[_S, _T], ABC):
@abstractmethod
def observe(self, observer: Observer | ValueObserver[_S] | BiObserver[_S, _T],
times: int | None = None) -> None:
raise NotImplementedError
times: int | None = None) -> None: ...

@abstractmethod
def weak_observe(self, observer: Observer | ValueObserver[_S] | BiObserver[_S, _T],
times: int | None = None) -> None:
raise NotImplementedError
times: int | None = None) -> None: ...

@abstractmethod
def unobserve(self, observer: Observer | ValueObserver[_S] | BiObserver[_S, _T]) -> None:
raise NotImplementedError
def unobserve(self, observer: Observer | ValueObserver[_S] | BiObserver[_S, _T]) -> None: ...


class TriObservable(BiObservable[_S, _T], Generic[_S, _T, _U], ABC):
@abstractmethod
def observe(self, observer: Observer | ValueObserver[_S] | BiObserver[_S, _T] | TriObserver[_S, _T, _U],
times: int | None = None) -> None:
raise NotImplementedError
times: int | None = None) -> None: ...

@abstractmethod
def weak_observe(self, observer: Observer | ValueObserver[_S] | BiObserver[_S, _T] | TriObserver[_S, _T, _U],
times: int | None = None) -> None:
raise NotImplementedError
times: int | None = None) -> None: ...

@abstractmethod
def unobserve(self, observer: Observer | ValueObserver[_S] | BiObserver[_S, _T] | TriObserver[_S, _T, _U]) -> None:
raise NotImplementedError
def unobserve(self, observer: Observer | ValueObserver[_S] | BiObserver[_S, _T] | TriObserver[_S, _T, _U]) -> None: ...
30 changes: 10 additions & 20 deletions src/spellbind/values.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,10 @@
class Value(ValueObservable[_S], Generic[_S], ABC):
@property
@abstractmethod
def value(self) -> _S:
raise NotImplementedError
def value(self) -> _S: ...

@abstractmethod
def derived_from(self) -> frozenset[Value]:
raise NotImplementedError
def derived_from(self) -> frozenset[Value]: ...

@property
def deep_derived_from(self) -> Iterable[Value]:
Expand Down Expand Up @@ -81,21 +79,17 @@ def map_to_bool(self, transformer: Callable[[_S], bool]) -> BoolValue:
class Variable(Value[_S], Generic[_S], ABC):
@property
@abstractmethod
def value(self) -> _S:
raise NotImplementedError
def value(self) -> _S: ...

@value.setter
@abstractmethod
def value(self, new_value: _S) -> None:
raise NotImplementedError
def value(self, new_value: _S) -> None: ...

@abstractmethod
def bind_to(self, value: Value[_S], already_bound_ok: bool = False, bind_weakly: bool = True) -> None:
raise NotImplementedError
def bind_to(self, value: Value[_S], already_bound_ok: bool = False, bind_weakly: bool = True) -> None: ...

@abstractmethod
def unbind(self, not_bound_ok: bool = False) -> None:
raise NotImplementedError
def unbind(self, not_bound_ok: bool = False) -> None: ...


class SimpleVariable(Variable[_S], Generic[_S]):
Expand Down Expand Up @@ -218,8 +212,7 @@ def __init__(self, of: Value[_S]):
of.weak_observe(self._on_source_change)

@abstractmethod
def transform(self, value: _S) -> _T:
raise NotImplementedError
def transform(self, value: _S) -> _T: ...

def _on_source_change(self, new_source_value: _S) -> None:
new_transformed_value = self.transform(new_source_value)
Expand Down Expand Up @@ -276,8 +269,7 @@ def _on_result_change(self, new_value: _U) -> None:
self._on_change(self._value)

@abstractmethod
def transform(self, left: _S, right: _T) -> _U:
raise NotImplementedError
def transform(self, left: _S, right: _T) -> _U: ...

@property
def value(self) -> _U:
Expand Down Expand Up @@ -317,8 +309,7 @@ def _on_result_change(self, new_value: _T) -> None:
self._on_change(self._value)

@abstractmethod
def transform(self, *args: _S) -> _T:
raise NotImplementedError
def transform(self, *args: _S) -> _T: ...

@property
def value(self) -> _T:
Expand All @@ -333,5 +324,4 @@ def transform(self, *values: _S) -> _T:
return self.transform_three(values[0], values[1], values[2])

@abstractmethod
def transform_three(self, left: _S, middle: _S, right: _S) -> _T:
raise NotImplementedError
def transform_three(self, left: _S, middle: _S, right: _S) -> _T: ...