def __init__(self, providing_args=None, use_caching=False):
self.receivers = []<EOL>if providing_args is None:<EOL><INDENT>providing_args = []<EOL><DEDENT>self.providing_args = set(providing_args)<EOL>self.lock = threading.Lock()<EOL>self.use_caching = use_caching<EOL>self.sender_receivers_cache = weakref.WeakKeyDictionary() if use_caching else {}<EOL>self._dead_receivers = False<EOL>
Create a new signal.

providing_args
    A list of the arguments this signal can pass along in a send() call.