docstr: Removes and returns a list of callbacks with the given
  `callback_id`.
  
  Args:
      callback_id (:obj:`str`) an id that identifies the callback.
  
  Returns:
      :obj:`list` a list of dicts containing the callbacks that were
          removed.
docstr_tok: ["Removes","and","returns","a","list","of","callbacks","with","the","given","`","callback_id","`",".","Args",":","callback_id","(",":","obj",":","`","str","`",")","an","id","that","identifies","the","callback",".","Returns",":",":","obj",":","`","list","`","a","list","of","dicts","containing","the","callbacks","that","were","removed","."]
code: def pop_callbacks(self, client_id, callback_id):
      """Removes and returns a list of callbacks with the given
      `callback_id`.
  
      Args:
          callback_id (:obj:`str`) an id that identifies the callback.
  
      Returns:
          :obj:`list` a list of dicts containing the callbacks that were
              removed.
      """
      popped = []
      new_callbacks = []
  
      for callback in self._callbacks:
          if (
              callback["callback_id"] == callback_id
              and callback["client_id"] == client_id
          ):
              popped.append(callback)
          else:
              new_callbacks.append(callback)
  
      self._callbacks = new_callbacks
      return popped
  
file_path: perspective/python/perspective/perspective/table/_callback_cache.py
label_desc: Use image node_id 4 for calling the _PerspectiveCallBackCache obj's underlying member method code with example usage: obj.pop_callbacks(client_id, callback_id) and returns: popped