code: def unbind(self, destination='', source='', routing_key='',
                 arguments=None):
          
          if not compatibility.is_string(destination):
              raise AMQPInvalidArgument('destination should be a string')
          elif not compatibility.is_string(source):
              raise AMQPInvalidArgument('source should be a string')
          elif not compatibility.is_string(routing_key):
              raise AMQPInvalidArgument('routing_key should be a string')
          elif arguments is not None and not isinstance(arguments, dict):
              raise AMQPInvalidArgument('arguments should be a dict or None')
  
          unbind_frame = pamqp_exchange.Unbind(destination=destination,
                                               source=source,
                                               routing_key=routing_key,
                                               arguments=arguments)
          return self._channel.rpc_request(unbind_frame)
docs: Unbind an Exchange.
  
          :param str destination: Exchange name
          :param str source: Exchange to unbind from
          :param str routing_key: The routing key used
          :param dict arguments: Unbind key/value arguments
  
          :raises AMQPInvalidArgument: Invalid Parameters
          :raises AMQPChannelError: Raises if the channel encountered an error.
          :raises AMQPConnectionError: Raises if the connection
                                       encountered an error.
  
          :rtype: dict