class_docstr: A mixin class to provide an interface for registering and
  triggering callbacks.
class_docstr_tok: ["A","mixin","class","to","provide","an","interface","for","registering","and","triggering","callbacks","."]
docstr: Remove a callback from this object 
docstr_tok: ["Remove","a","callback","from","this","object"]
code: def remove_on_change(
      self, attr: str, *callbacks: PropertyCallback
  ) -> None:
      """Remove a callback from this object"""
      if len(callbacks) == 0:
          raise ValueError(
              "remove_on_change takes an attribute name and one or more callbacks, got only one parameter"
          )
      _callbacks = self._callbacks.setdefault(attr, [])
      for callback in callbacks:
          _callbacks.remove(callback)
  
file_path: bokeh/src/bokeh/util/callback_manager.py
imports: from __future__ import annotations
  import logging
  from collections import defaultdict
  from inspect import signature
  from typing import TYPE_CHECKING, Any, Callable, Sequence, Union, cast
  from ..events import Event, ModelEvent
  from ..util.functions import get_param_info
label_desc: Use image node_id 3 for calling the PropertyCallbackManager obj's underlying member method code with example usage: obj.remove_on_change(attr) without return types