import sys

try:
    from PySide6.QtCore import QCoreApplication, QObject, QLibraryInfo, qVersion, Qt, Signal
except ImportError:
    from PySide2.QtCore import  QCoreApplication, QObject, QLibraryInfo, qVersion, Qt, Signal


class Base(QObject):

    signal = Signal()

    def test(self):
        self.signal.connect(self.__callback)
        self.signal.connect(self.callback)
        self.signal.emit()

    def result(self, msg):
        print(".result(), sender=", self.sender())
        print(msg, "OK" if self.sender() is self else "ERROR: %s" % self.sender())

    def callback(self):
        self.result("callback")

    def __callback(self):
        self.result("__callback")


class Foo(Base):
    pass


if __name__ == '__main__':
    print('Python {}.{}'.format(sys.version_info[0], sys.version_info[1]))
    print(QLibraryInfo.build())
    app = QCoreApplication([])
    print("== Base ==")
    base = Base()
    base.setObjectName("base")
    base.test()
    print("\n== Inherited ==")
    foo = Foo()
    base.setObjectName("Foo")
    foo.test()
    print("== End ==")
