Default implementation of the ITopicDefnProvider API. This implementation accepts several formats for the topic tree source data and delegates to a registered ITopicDefnDeserializer that converts source data into topic definitions.
This provider is instantiated automatically by
pub.addTopicDefnProvider(source, format)
when source is not an ITopicDefnProvider.
Additional de-serializers can be registered via registerTypeForImport().
Find the correct de-serializer class from registry for the given |
|
Must return a pair (string, ArgSpecGiven) for given topic. |
|
Get the docstring for the topic tree. |
|
If a new type of importer is defined for topic definitions, it |
|
Return an iterator over topic names available from this provider. |
TopicDefnProvider
(ITopicDefnProvider)¶Default implementation of the ITopicDefnProvider API. This implementation accepts several formats for the topic tree source data and delegates to a registered ITopicDefnDeserializer that converts source data into topic definitions.
This provider is instantiated automatically by
pub.addTopicDefnProvider(source, format)
when source is not an ITopicDefnProvider.
Additional de-serializers can be registered via registerTypeForImport().
__init__
(self, source, format, **providerKwargs)¶Find the correct de-serializer class from registry for the given format; instantiate it with given source and providerKwargs; get all available topic definitions.
getDefn
(self, topicNameTuple)¶Must return a pair (string, ArgSpecGiven) for given topic. The first item is a description for topic, the second item contains the message data specification (MDS). Note topic name is in tuple format (‘a’, ‘b’, ‘c’) rather than ‘a.b.c’.
getTreeDoc
(self)¶Get the docstring for the topic tree.
initTypeRegistry
(cls)¶registerTypeForImport
(cls, typeName, providerClassObj)¶If a new type of importer is defined for topic definitions, it can be registered with pubsub by providing a name for the new importer (typeName), and the class to instantiate when pub.addTopicDefnProvider(obj, typeName) is called. For instance,
from pubsub.core.topicdefnprovider import ITopicDefnDeserializer
class SomeNewImporter(ITopicDefnDeserializer):
...
TopicDefnProvider.registerTypeForImport('some name', SomeNewImporter)
# will instantiate SomeNewImporter(source)
pub.addTopicDefnProvider(source, 'some name')
topicNames
(self)¶Return an iterator over topic names available from this provider. Note that the topic names should be in tuple rather than dotted-string format so as to be compatible with getDefn().