Removes the use of mutables as default args

Passing mutable objects as default args is a known Python pitfall.
We'd better avoid this.

Change-Id: I67cc0774a65886ef9fce0b72e52157b622248a85
Closes-Bug: #1327473
This commit is contained in:
ChangBo Guo(gcb) 2014-06-07 12:06:08 +08:00
parent e0730983ee
commit 821ee096a6
7 changed files with 16 additions and 12 deletions

View File

@ -302,7 +302,7 @@ class ReplyWaiter(object):
class AMQPDriverBase(base.BaseDriver):
def __init__(self, conf, url, connection_pool,
default_exchange=None, allowed_remote_exmods=[]):
default_exchange=None, allowed_remote_exmods=None):
super(AMQPDriverBase, self).__init__(conf, url, default_exchange,
allowed_remote_exmods)

View File

@ -64,11 +64,11 @@ class Listener(object):
class BaseDriver(object):
def __init__(self, conf, url,
default_exchange=None, allowed_remote_exmods=[]):
default_exchange=None, allowed_remote_exmods=None):
self.conf = conf
self._url = url
self._default_exchange = default_exchange
self._allowed_remote_exmods = allowed_remote_exmods
self._allowed_remote_exmods = allowed_remote_exmods or []
def require_features(self, requeue=False):
if requeue:

View File

@ -126,9 +126,9 @@ class FakeExchangeManager(object):
class FakeDriver(base.BaseDriver):
def __init__(self, conf, url, default_exchange=None,
allowed_remote_exmods=[]):
allowed_remote_exmods=None):
super(FakeDriver, self).__init__(conf, url, default_exchange,
allowed_remote_exmods=[])
allowed_remote_exmods)
self._exchange_manager = FakeExchangeManager(default_exchange)

View File

@ -715,7 +715,7 @@ class Connection(object):
class QpidDriver(amqpdriver.AMQPDriverBase):
def __init__(self, conf, url,
default_exchange=None, allowed_remote_exmods=[]):
default_exchange=None, allowed_remote_exmods=None):
conf.register_opts(qpid_opts)
conf.register_opts(rpc_amqp.amqp_opts)

View File

@ -807,7 +807,7 @@ class RabbitDriver(amqpdriver.AMQPDriverBase):
def __init__(self, conf, url,
default_exchange=None,
allowed_remote_exmods=[]):
allowed_remote_exmods=None):
conf.register_opts(rabbit_opts)
conf.register_opts(rpc_amqp.amqp_opts)

View File

@ -627,7 +627,8 @@ class Connection(rpc_common.Connection):
def _cast(addr, context, topic, msg, timeout=None, envelope=False,
_msg_id=None, allowed_remote_exmods=[]):
_msg_id=None, allowed_remote_exmods=None):
allowed_remote_exmods = allowed_remote_exmods or []
timeout_cast = timeout or CONF.rpc_cast_timeout
payload = [RpcContext.marshal(context), msg]
@ -645,7 +646,8 @@ def _cast(addr, context, topic, msg, timeout=None, envelope=False,
def _call(addr, context, topic, msg, timeout=None,
envelope=False, allowed_remote_exmods=[]):
envelope=False, allowed_remote_exmods=None):
allowed_remote_exmods = allowed_remote_exmods or []
# timeout_response is how long we wait for a response
timeout = timeout or CONF.rpc_response_timeout
@ -722,11 +724,12 @@ def _call(addr, context, topic, msg, timeout=None,
def _multi_send(method, context, topic, msg, timeout=None,
envelope=False, _msg_id=None, allowed_remote_exmods=[]):
envelope=False, _msg_id=None, allowed_remote_exmods=None):
"""Wraps the sending of messages.
Dispatches to the matchmaker and sends message to all relevant hosts.
"""
allowed_remote_exmods = allowed_remote_exmods or []
conf = CONF
LOG.debug(' '.join(map(pformat, (topic, msg))))
@ -892,7 +895,7 @@ class ZmqDriver(base.BaseDriver):
# FIXME(markmc): allow this driver to be used without eventlet
def __init__(self, conf, url, default_exchange=None,
allowed_remote_exmods=[]):
allowed_remote_exmods=None):
conf.register_opts(zmq_opts)
conf.register_opts(impl_eventlet._eventlet_opts)

View File

@ -134,7 +134,7 @@ class DriverLoadFailure(exceptions.MessagingException):
self.ex = ex
def get_transport(conf, url=None, allowed_remote_exmods=[], aliases=None):
def get_transport(conf, url=None, allowed_remote_exmods=None, aliases=None):
"""A factory method for Transport objects.
This method will construct a Transport object from transport configuration
@ -164,6 +164,7 @@ def get_transport(conf, url=None, allowed_remote_exmods=[], aliases=None):
:param aliases: A map of transport alias to transport name
:type aliases: dict
"""
allowed_remote_exmods = allowed_remote_exmods or []
conf.register_opts(_transport_opts)
if not isinstance(url, TransportURL):