(self, relName: Union[str, Tuple[str, ...]])
return topicObj
Get the specified subtopic object. The relName can be a valid
        subtopic name, a dotted-name string, or a tuple.
Get the specified subtopic object. The relName can be a valid
        subtopic name, a dotted-name string, or a tuple.
Get the specified subtopic object . The relName can be a valid subtopic name a dotted - name string or a tuple .
def getSubtopic(self, relName: Union[str, Tuple[str, ...]]) -> Topic:
        """
        Get the specified subtopic object. The relName can be a valid
        subtopic name, a dotted-name string, or a tuple.
        """
        if not relName:
            raise ValueError("getSubtopic() arg can't be empty")
        topicTuple = tupleize(relName)
        assert topicTuple

        topicObj = self
        for topicName in topicTuple:
            child = topicObj.__subTopics.get(topicName)
            if child is None:
                msg = 'Topic "%s" doesn\'t have "%s" as subtopic' % (topicObj.getName(), topicName)
                raise TopicNameError(relName, msg)
            topicObj = child

        return topicObj
def getSubtopic ( self , relName : Union [ str , Tuple [ str , ... ] ] ) -> Topic : if not relName : raise ValueError ( "getSubtopic() arg can't be empty" ) topicTuple = tupleize ( relName ) assert topicTuple topicObj = self for topicName in topicTuple : child = topicObj . __subTopics . get ( topicName ) if child is None : msg = 'Topic "%s" doesn\'t have "%s" as subtopic' % ( topicObj . getName ( ) , topicName ) raise TopicNameError ( relName , msg ) topicObj = child return topicObj