class_docstr: Tophat prior as it used in the original spearmint code.
  
  Parameters
  ----------
  lower_bound : float
      Lower bound of the prior. In original scale.
  upper_bound : float
      Upper bound of the prior. In original scale.
  seed : int, defaults to 0
code: def __init__(
      self,
      lower_bound: float,
      upper_bound: float,
      seed: int = 0,
  ):
      super().__init__(seed=seed)
      self._min = lower_bound
      self._log_min = np.log(lower_bound)
      self._max = upper_bound
      self._log_max = np.log(upper_bound)
      self._prob = 1 / (self._max - self._min)
      self._log_prob = np.log(self._prob)
  
      if not (self._max > self._min):
          raise Exception(
              "Upper bound of Tophat prior must be greater than the lower bound."
          )
  
imports: from __future__ import annotations
  from typing import Any
  import warnings
  import numpy
  from smac.model.gaussian_process.priors.abstract_prior import AbstractPrior
label_desc: Use image node_id 1 to create a new TophatPrior object from inherited base classes: AbstractPrior with example: obj = TophatPrior(lower_bound, upper_bound, seed)