class_docstr: Inspired/Taken from
      https://www.protechtraining.com/blog/post/879#simple-observer
class_docstr_tok: ["Inspired\/Taken","from","https",":","\/\/www.protechtraining.com\/blog\/post\/879","#","simple-observer"]
code: def subscribe(self, event, subscriber, callback=None):
      if callback is None:
          callback = getattr(subscriber, "update")
      self.get_subscribers(event)[subscriber] = callback
  
imports: import warnings
  from bayes_opt.constraint import ConstraintModel
  from .target_space import TargetSpace
  from .event import Events, DEFAULT_EVENTS
  from .logger import _get_default_logger
  from .util import UtilityFunction, acq_max, ensure_rng
  from sklearn.gaussian_process.kernels import Matern
  from sklearn.gaussian_process import GaussianProcessRegressor
label_desc: Use image node_id 3 for calling the Observable obj's underlying member method code with example usage: obj.subscribe(event, subscriber, callback) without return types