class_docstr: Generator of the LaserBeam objects for the LaserBeamAttack purpose
class_docstr_tok: ["Generator","of","the","LaserBeam","objects","for","the","LaserBeamAttack","purpose"]
docstr: :params min_params: left bound of the params range
  :params max_params: right bound of the params range
  :params max_step: maximal part of the random LaserBeam object drawn from the range.
docstr_tok: [":","params","min_params",":","left","bound","of","the","params","range",":","params","max_params",":","right","bound","of","the","params","range",":","params","max_step",":","maximal","part","of","the","random","LaserBeam","object","drawn","from","the","range","."]
code: def __init__(
      self,
      min_params: LaserBeam,
      max_params: LaserBeam,
      max_step: float = 20 / 100,
  ) -> None:
      """
      :params min_params: left bound of the params range
      :params max_params: right bound of the params range
      :params max_step: maximal part of the random LaserBeam object drawn from the range.
      """
      self.min_params = min_params
      self.max_params = max_params
      self.max_step = max_step
      self.__params_ranges = (
          max_params.to_numpy() - min_params.to_numpy()
      )
  
imports: import logging
  from typing import Callable, List, Optional, Tuple, Union, Any
  import numpy
  from art.attacks.attack import EvasionAttack
  from art.attacks.evasion.laser_attack.algorithms import greedy_search
  from art.attacks.evasion.laser_attack.utils import AdversarialObject, AdvObjectGenerator, DebugInfo, ImageGenerator, Line, wavelength_to_rgb
label_desc: Use image node_id 1 to create a new LaserBeamGenerator object from inherited base classes: AdvObjectGenerator with example: obj = LaserBeamGenerator(min_params, max_params, max_step)