Skip to content

Commit 9c5a2d8

Browse files
committed
Move wait signal implementations to a separate file
With this, we can inherit from qt_api.QtCore.QObject without needing to entirely avoid importing wait_signal.py at initial import time.
1 parent 3506da8 commit 9c5a2d8

File tree

4 files changed

+716
-693
lines changed

4 files changed

+716
-693
lines changed

src/pytestqt/qtbot.py

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,7 @@
99
CallbackCalledTwiceError,
1010
)
1111
from pytestqt.qt_compat import qt_api
12-
from pytestqt.wait_signal import (
13-
SignalBlocker,
14-
MultiSignalBlocker,
15-
SignalEmittedSpy,
16-
CallbackBlocker,
17-
)
12+
from pytestqt import wait_signal
1813

1914

2015
def _parse_ini_boolean(value):
@@ -353,7 +348,7 @@ def waitSignal(self, signal, *, timeout=5000, raising=None, check_params_cb=None
353348
f"Passing None as signal isn't supported anymore, use qtbot.wait({timeout}) instead."
354349
)
355350
raising = self._should_raise(raising)
356-
blocker = SignalBlocker(
351+
blocker = wait_signal.SignalBlocker(
357352
timeout=timeout, raising=raising, check_params_cb=check_params_cb
358353
)
359354
blocker.connect(signal)
@@ -440,7 +435,7 @@ def waitSignals(
440435
len(check_params_cbs), len(signals)
441436
)
442437
)
443-
blocker = MultiSignalBlocker(
438+
blocker = wait_signal.MultiSignalBlocker(
444439
timeout=timeout,
445440
raising=raising,
446441
order=order,
@@ -458,7 +453,7 @@ def wait(self, ms):
458453
While waiting, events will be processed and your test will stay
459454
responsive to user interface events or network communication.
460455
"""
461-
blocker = MultiSignalBlocker(timeout=ms, raising=False)
456+
blocker = wait_signal.MultiSignalBlocker(timeout=ms, raising=False)
462457
blocker.wait()
463458

464459
@contextlib.contextmanager
@@ -478,7 +473,7 @@ def assertNotEmitted(self, signal, *, wait=0):
478473
.. note:: This method is also available as ``assert_not_emitted``
479474
(pep-8 alias)
480475
"""
481-
spy = SignalEmittedSpy(signal)
476+
spy = wait_signal.SignalEmittedSpy(signal)
482477
with spy, self.waitSignal(signal, timeout=wait, raising=False):
483478
yield
484479
spy.assert_not_emitted()
@@ -592,7 +587,7 @@ def waitCallback(self, *, timeout=5000, raising=None):
592587
.. note:: This method is also available as ``wait_callback`` (pep-8 alias)
593588
"""
594589
raising = self._should_raise(raising)
595-
blocker = CallbackBlocker(timeout=timeout, raising=raising)
590+
blocker = wait_signal.CallbackBlocker(timeout=timeout, raising=raising)
596591
return blocker
597592

598593
@contextlib.contextmanager

src/pytestqt/utils.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
import dataclasses
2+
from typing import Any
3+
4+
15
def get_marker(item, name):
26
"""Get a marker from a pytest item.
37
@@ -9,3 +13,19 @@ def get_marker(item, name):
913
except AttributeError:
1014
# pytest < 3.6
1115
return item.get_marker(name)
16+
17+
18+
@dataclasses.dataclass
19+
class SignalAndArgs:
20+
signal_name: str
21+
args: list[Any]
22+
23+
def __str__(self) -> str:
24+
args = repr(self.args) if self.args else ""
25+
26+
# remove signal parameter signature, e.g. turn "some_signal(str,int)" to "some_signal", because we're adding
27+
# the actual parameters anyways
28+
signal_name = self.signal_name
29+
signal_name = signal_name.partition("(")[0]
30+
31+
return signal_name + args

0 commit comments

Comments
 (0)