class_docstr: Wrapper for transformations implemented with DALI that are meant to be used with
  automatic augmentations. You should not need to instantiate this class directly,
  use `@augmentation` decorator instead.
code: def _get_param(self, magnitude_bin, num_magnitude_bins, param_device):
      magnitudes = self._get_magnitudes(num_magnitude_bins)
      if magnitudes is None:
          return None
      if magnitude_bin is None:
          raise Exception(
              f"The augmentation `{self.name}` has `mag_range` specified, so when called, "
              f"it requires `magnitude_bin` parameter to select the magnitude from the "
              f"`mag_range`.\nError in augmentation: {self}."
          )
      if self.randomly_negate and not isinstance(
          magnitude_bin, _SignedMagnitudeBin
      ):
          magnitude_bin = signed_bin(magnitude_bin)
          warnings.warn(
              f"The augmentation `{self.name}` was declared with `random_negate=True`, "
              f"but unsigned `magnitude_bin` was passed to the augmentation call. "
              f"The augmentation will randomly negate the magnitudes manually. "
              f"However, for better performance, if you conditionally split batch "
              f"between multiple augmentations, it is better to call "
              f"`signed_magnitude_bin = signed_bin(magnitude_bin)` before the split "
              f"and pass the signed bins instead.",
              Warning,
          )
      if self.randomly_negate:
          assert isinstance(
              magnitude_bin, _SignedMagnitudeBin
          )  # by the two checks above
          if isinstance(magnitude_bin.bin, int):
              magnitudes = [magnitudes[magnitude_bin.bin]]
              param_idx = magnitude_bin.random_sign
          else:
              param_idx = magnitude_bin.signed_magnitude_idx
          magnitudes = _SignedMagnitudeBin._remap_to_signed_magnitudes(
              magnitudes
          )
          params = self._map_mags_to_params(magnitudes)
          params = types.Constant(params, device=param_device)
          return params[param_idx]
      else:
          # other augmentations in the suite may need sign and we got it along the magnitude bin,
          # just unpack the plain magnitude bin
          bin_idx = (
              magnitude_bin.bin
              if isinstance(magnitude_bin, _SignedMagnitudeBin)
              else magnitude_bin
          )
          if isinstance(bin_idx, int):
              magnitude = magnitudes[bin_idx]
              param = self._map_mag_to_param(magnitude)
              return types.Constant(param, device=param_device)
          else:
              params = self._map_mags_to_params(magnitudes)
              params = types.Constant(params, device=param_device)
              return params[bin_idx]
  
imports: import warnings
  from typing import Callable, Tuple, Optional, Union
  from nvidia.dali import fn, types
  from nvidia.dali.data_node import DataNode
  from nvidia.dali.auto_aug.core._args import filter_extra_accepted_kwargs, get_missing_kwargs, get_num_positional_args, MissingArgException
  from numpy import typing
label_desc: Use image node_id 17 for calling the Augmentation obj's underlying member method code with example usage: obj._get_param(magnitude_bin, num_magnitude_bins, param_device) and returns: None, params, types, params