as the legacy v1 API, but using the latest (ie non legacy) API.

Note that once :mod:pub has been imported, the messaging protocol
cannot be changed. Also, if migrating an application from 'arg1' to 'kwargs'
style messaging, see :func:transitionFromArg1() in this module and the
:func:enforceArgName() of setuparg1 module.

:copyright: Copyright 2006-2009 by Oliver Schoenborn, all rights reserved.
:license: BSD, see LICENSE.txt for details.

'''

import pubsubconf
pubsubconf.setVersion(3)
import core
core.setMsgProtocol('kwargs')


def transitionFromArg1(commonName):
    '''This will require that all calls to pub.sendMessage() use the
    kwargs protocol, ie named arguments for the message data. This is
    a useful step after setuparg1.enforceArgName(commonName) was used
    and the application debugged. Replace the latter with ::

        setupkwargs.transitionFromArg1(commonName)

    After this stage tested and debugged, this function call
    can be removed, and all reference to the .data attribute of the message
    object received can be removed in all listeners, allowing the
    application to run in the default messaging protocol (kwargs) used by
    pubsub version >= 3.
is *deprecated*. This module is therefore *deprecated*. 

Usage: Import this file before the first 'from pubsub import pub' 
statement to make pubsub use the *arg1* messaging protocol::

    from pubsub import setuparg1
    from pubsub import pub

Note that once :mod:pub has been imported, the messaging protocol
must NOT be changed. 

If you want to migrate an application from 'arg1' to 'kwargs'
style messaging, this module provides a function, 
:func:enforceArgName(), which can help you in this endeavour. 

:copyright: Copyright since 2006 by Oliver Schoenborn, all rights reserved.
:license: BSD, see LICENSE.txt for details.

'''

import core
core.setMsgProtocol('arg1')


def enforceArgName(commonName):
    '''This will configure pubsub to require that all listeners use 
	the same argument name (*commonName*) as first parameter. This could 
	be a ueful first step in transitioning an application that has been 
	using *arg1* protocol to the more powerful *kwargs* protocol. '''
    core.setMsgDataArgName(1, commonName)