def post_notification(self, ntype, sender, *args, **kwargs):
if(ntype==None or sender==None):<EOL><INDENT>raise NotificationError(<EOL>"<STR_LIT>")<EOL><DEDENT>if((ntype not in self.registered_types and<EOL>None not in self.registered_types) or<EOL>(sender not in self.registered_senders and<EOL>None not in self.registered_senders)):<EOL><INDENT>return<EOL><DEDENT>for o in self._observers_for_notification(ntype, sender):<EOL><INDENT>o(ntype, sender, *args, **kwargs)<EOL><DEDENT>
Post notification to all registered observers.

        The registered callback will be called as::

            callback(ntype, sender, *args, **kwargs)

        Parameters
        ----------
        ntype : hashable
            The notification type.
        sender : hashable
            The object sending the notification.
        *args : tuple
            The positional arguments to be passed to the callback.
        **kwargs : dict
            The keyword argument to be passed to the callback.

        Notes
        -----
        * If no registered observers, performance is O(1).
        * Notificaiton order is undefined.
        * Notifications are posted synchronously.