(self, listener: UserListener, topicName: str, **curriedArgs)
return subscribedListener, success
Subscribe listener to named topic. Raises ListenerMismatchError
        if listener isn't compatible with the topic's MDS. Returns
        (pubsub.core.Listener, success), where success is False if listener
        was already subscribed. The pub.core.Listener wraps the callable
        subscribed and provides introspection-based info about
        the callable. Extra keyword arguments are treated as currying of
        listener arguments.

        Example:
            pub.subscribe(listener1, 'some_topic')
            pub.subscribe(listener2, 'some_other_topic', a=2, b=3)

        In the second example, the listener2 will always receive a=2 and b=3 and
        pubsub treats it as though a and b were curried, i.e. as if the actual
        listener subscribed were a callable that did not have a or b parameters.
        Hence if some_other_topic has a or b as message data, subscription will
        raise a ListenerInadequate error.

        Note that if 'subscribe' notification is on, the handler's
        'notifySubscribe' method is called after subscription.
Subscribe listener to named topic. Raises ListenerMismatchError
        if listener isn't compatible with the topic's MDS. Returns
        (pubsub.core.Listener, success), where success is False if listener
        was already subscribed. The pub.core.Listener wraps the callable
        subscribed and provides introspection-based info about
        the callable. Extra keyword arguments are treated as currying of
        listener arguments.
Subscribe listener to named topic . Raises ListenerMismatchError if listener isn t compatible with the topic s MDS . Returns ( pubsub . core . Listener success ) where success is False if listener was already subscribed . The pub . core . Listener wraps the callable subscribed and provides introspection - based info about the callable . Extra keyword arguments are treated as currying of listener arguments .
def subscribe(self, listener: UserListener, topicName: str, **curriedArgs) -> Listener:
        """
        Subscribe listener to named topic. Raises ListenerMismatchError
        if listener isn't compatible with the topic's MDS. Returns
        (pubsub.core.Listener, success), where success is False if listener
        was already subscribed. The pub.core.Listener wraps the callable
        subscribed and provides introspection-based info about
        the callable. Extra keyword arguments are treated as currying of
        listener arguments.

        Example:
            pub.subscribe(listener1, 'some_topic')
            pub.subscribe(listener2, 'some_other_topic', a=2, b=3)

        In the second example, the listener2 will always receive a=2 and b=3 and
        pubsub treats it as though a and b were curried, i.e. as if the actual
        listener subscribed were a callable that did not have a or b parameters.
        Hence if some_other_topic has a or b as message data, subscription will
        raise a ListenerInadequate error.

        Note that if 'subscribe' notification is on, the handler's
        'notifySubscribe' method is called after subscription.
        """
        topicObj = self.__topicMgr.getOrCreateTopic(topicName)
        subscribedListener, success = topicObj.subscribe(listener, **curriedArgs)
        return subscribedListener, success
def subscribe ( self , listener : UserListener , topicName : str , * * curriedArgs ) -> Listener : topicObj = self . __topicMgr . getOrCreateTopic ( topicName ) subscribedListener , success = topicObj . subscribe ( listener , * * curriedArgs ) return subscribedListener , success