def _inflate(getter_descriptor, setter_descriptor, signal_name, widget: QWidget): # signal retrieved dynamically (via string) because it resolves as a class attribute, so can't be used # as a descriptor. return (getter_descriptor.__get__(widget), setter_descriptor.__get__(widget), widget.__getattribute__(signal_name) if signal_name is not None else None)