Make pyqtBoundSignals from the same signal/instance be equal
Phil Thompson
phil at riverbankcomputing.com
Sat Jul 11 13:57:43 BST 2020
On 09/07/2020 00:59, Kyle Altendorf wrote:
> Phil,
>
> What do you think of making pyqtBoundSignals that come from the same
> instance and signal compare as equal? To be complete, this would lead
> to them also needing to hash the same. It came up while coding:
>
>
> https://github.com/altendky/qtrio/blob/master/qtrio/_core.py#L109-L125
>
> def is_from(self, signal: SignalInstance) -> bool:
> """Check if this emission came from `signal`.
> Args:
> signal: The signal instance to check for being the source.
> """
>
> # TODO: `repr()` here seems really bad.
> if qtpy.PYQT5:
> return self.signal.signal == signal.signal and
> repr(self.signal) == repr(
> signal
> )
> elif qtpy.PYSIDE2:
> # TODO: get this to work properly.
> return bool(self.signal == signal)
>
> raise qtrio.QTrioException() # pragma: no cover
>
>
> For use like:
>
>
> https://github.com/altendky/qtrio/blob/master/qtrio/examples/emissions.py#L110-L118
>
> async for emission in emissions.channel:
> if emission.is_from(window.decrement.clicked):
> window.decrement_count()
> elif emission.is_from(window.increment.clicked):
> window.increment_count()
> elif emission.is_from(window.widget.closed):
> break
> else: # pragma: no cover
> raise qtrio.QTrioException(f"Unexpected emission:
> {emission}")
>
>
> Thanks as always for your time.
>
> Cheers,
> -kyle
This is implemented in tonight's snapshot.
Phil
More information about the PyQt
mailing list