<div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr">On Tue, 10 Jan 2017 at 12:09 Phil Thompson <<a href="mailto:phil@riverbankcomputing.com">phil@riverbankcomputing.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 27 Dec 2016, at 8:24 pm, oliver <<a href="mailto:oliver.schoenborn@gmail.com" class="gmail_msg" target="_blank">oliver.schoenborn@gmail.com</a>> wrote:<br class="gmail_msg">><br class="gmail_msg">> from PyQt5.QtCore import QObject, pyqtSlot, Qt, pyqtSignal<br class="gmail_msg">><br class="gmail_msg">> class MyObj(QObject):<br class="gmail_msg">>     sig_test = pyqtSignal()<br class="gmail_msg">><br class="gmail_msg">> class Listener(QObject):<br class="gmail_msg">>     @pyqtSlot()<br class="gmail_msg">>     def meth(self):<br class="gmail_msg">>         pass<br class="gmail_msg">><br class="gmail_msg">>     # @pyqtSlot()<br class="gmail_msg">>     def meth2(self):<br class="gmail_msg">>         pass<br class="gmail_msg">><br class="gmail_msg">> obj = MyObj()<br class="gmail_msg">> obs = Listener()<br class="gmail_msg">><br class="gmail_msg">> def test_no_connections(slot):<br class="gmail_msg">>     assert obj.receivers(obj.sig_test) == 0<br class="gmail_msg">><br class="gmail_msg">>     obj.sig_test.connect(slot, Qt.UniqueConnection)<br class="gmail_msg">>     assert obj.receivers(obj.sig_test) == 1<br class="gmail_msg">><br class="gmail_msg">>     obj.sig_test.disconnect(slot)<br class="gmail_msg">>     assert obj.receivers(obj.sig_test) == 0<br class="gmail_msg">><br class="gmail_msg">> test_no_connections(obs.meth)<br class="gmail_msg">> test_no_connections(obs.meth)<br class="gmail_msg">><br class="gmail_msg">> test_no_connections(obs.meth2)<br class="gmail_msg">> test_no_connections(obs.meth2)  # FAILS<br class="gmail_msg">><br class="gmail_msg">> Last line fails because meth2 was not decorated with pyqtSlot. Is this expected or a bug?<br class="gmail_msg"><br class="gmail_msg">It's only happening because you don't have an event loop (which is not the usual circumstance). However I can change things so that it will work in this case.<br class="gmail_msg"></blockquote><div><br></div><div>That would be great! Although it is not relevant in an app context, it is in testing context (where we don't always exec an app instance).</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">> Related to this, the exception on a unique connection is completely different if the method is decorated. Using the same code as above (but without the test_no_connections stuff):<br class="gmail_msg">><br class="gmail_msg">> def test_unique_connection(slot, str_exc):<br class="gmail_msg">>     obj.sig_test.connect(slot, Qt.UniqueConnection)<br class="gmail_msg">>     try:<br class="gmail_msg">>         obj.sig_test.connect(slot, Qt.UniqueConnection)<br class="gmail_msg">>     except TypeError as exc:<br class="gmail_msg">>         assert str(exc) == str_exc<br class="gmail_msg">><br class="gmail_msg">> test_unique_connection(obs.meth, 'connect() failed between MyObj.sig_test[] and meth()')<br class="gmail_msg">> test_unique_connection(obs.meth2, 'connection is not unique')<br class="gmail_msg">><br class="gmail_msg">> Shouldn't both produce an exception that says 'connection is not unique'?<br class="gmail_msg"><br class="gmail_msg">Ideally but the first one is from Qt and the second (more useful one) is from PyQt.<br class="gmail_msg"><br class="gmail_msg">Phil<br class="gmail_msg"><br class="gmail_msg"></blockquote><div><br></div><div>Good to know, thanks.  </div><div>Oliver</div><br class="inbox-inbox-Apple-interchange-newline"></div></div><div dir="ltr">-- <br></div><div data-smartmail="gmail_signature"><div dir="ltr">Oliver<div>My StackOverflow contributions<br><div>My CodeProject articles</div></div><div>My Github projects</div><div>My SourceForget.net projects</div></div></div>