def notify_widget(self, widget, message=None, clear_in=CLEAR_NOTIF_BAR_MESSAGE_IN):
        """
        opens notification popup.

        :param widget: instance of Widget, widget to display
        :param message: str, message to remove from list of notifications
        :param clear_in: int, time seconds when notification should be removed
        """

        @log_traceback
        def clear_notification(*args, **kwargs):
            # the point here is the log_traceback
            self.remove_widget(widget, message=message)

        if not widget:
            return

        logger.debug("display notification widget %s", widget)

        with self.notifications_lock:
            self.widget_message_dict[widget] = message
            if message:
                self.message_widget_dict[message] = widget

        self.reload_footer(rebuild_statusbar=False)
        self.loop.set_alarm_in(clear_in, clear_notification)

        return widget
def notify_widget ( self , widget , message = None , clear_in = CLEAR_NOTIF_BAR_MESSAGE_IN ) : @ log_traceback def clear_notification ( * args , ** kwargs ) : self . remove_widget ( widget , message = message ) if not widget : return logger . debug ( "display notification widget %s" , widget ) with self . notifications_lock : self . widget_message_dict [ widget ] = message if message : self . message_widget_dict [ message ] = widget self . reload_footer ( rebuild_statusbar = False ) self . loop . set_alarm_in ( clear_in , clear_notification ) return widget
opens notification popup.

        :param widget: instance of Widget, widget to display
        :param message: str, message to remove from list of notifications
        :param clear_in: int, time seconds when notification should be removed