.. wxPython Phoenix documentation

   This file was generated by Phoenix's sphinx generator and associated
   tools, do not edit by hand.

   Copyright: (c) 2011-2018 by Total Control Software
   License:   wxWindows License

.. include:: headings.inc

.. currentmodule:: wx.lib.pubsub.core.topicdefnprovider

.. highlight:: python



.. _wx.lib.pubsub.core.topicdefnprovider.TopicDefnProvider:

==========================================================================================================================================
|phoenix_title|  **wx.lib.pubsub.core.topicdefnprovider.TopicDefnProvider**
==========================================================================================================================================

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().



|

|class_hierarchy| Class Hierarchy
=================================

.. raw:: html

   <div id="toggleBlock" onclick="return toggleVisibility(this)" class="closed" style="cursor:pointer;">
   <img id="toggleBlock-trigger" src="_static/images/closed.png"/>
   Inheritance diagram for class <strong>TopicDefnProvider</strong>:
   </div>
   <div id="toggleBlock-summary" style="display:block;"></div>
   <div id="toggleBlock-content" style="display:none;">
   <p class="graphviz">
   <center><img src="_static/images/inheritance/wx.lib.pubsub.core.topicdefnprovider.TopicDefnProvider_inheritance.png" alt="Inheritance diagram of TopicDefnProvider" usemap="#dummy" class="inheritance"/></center>
   <script type="text/javascript">toggleVisibilityOnLoad(document.getElementById('toggleBlock'))</script>
   <map id="dummy" name="dummy"> <area shape="rect" id="node1" href="wx.lib.pubsub.core.topicdefnprovider.TopicDefnProvider.html" title="Default implementation of the ITopicDefnProvider API. This" alt="" coords="7,83,405,112"/> <area shape="rect" id="node2" href="wx.lib.pubsub.core.topicdefnprovider.ITopicDefnProvider.html" title="All topic definition providers added via pub.addTopicDefnProvider()" alt="" coords="5,5,407,35"/> </map> 
   </p>
   </div>

|


|super_classes| Known Superclasses
==================================

:class:`wx.lib.pubsub.core.topicdefnprovider.ITopicDefnProvider`

|


|method_summary| Methods Summary
================================

===================================================================================== ================================================================================
:meth:`~wx.lib.pubsub.core.topicdefnprovider.TopicDefnProvider.__init__`              Find the correct de-serializer class from registry for the given
:meth:`~wx.lib.pubsub.core.topicdefnprovider.TopicDefnProvider.getDefn`               Must return a pair (string, ArgSpecGiven) for given topic.
:meth:`~wx.lib.pubsub.core.topicdefnprovider.TopicDefnProvider.getTreeDoc`            Get the docstring for the topic tree.
:meth:`~wx.lib.pubsub.core.topicdefnprovider.TopicDefnProvider.initTypeRegistry`      
:meth:`~wx.lib.pubsub.core.topicdefnprovider.TopicDefnProvider.registerTypeForImport` If a new type of importer is defined for topic definitions, it
:meth:`~wx.lib.pubsub.core.topicdefnprovider.TopicDefnProvider.topicNames`            Return an iterator over topic names available from this provider.
===================================================================================== ================================================================================


|


|api| Class API
===============


.. class:: 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().

   .. method:: __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.


   .. method:: 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'. 


   .. method:: getTreeDoc(self)

      Get the docstring for the topic tree.


   .. classmethod:: initTypeRegistry(cls)


   .. classmethod:: 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') 


   .. method:: 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().