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.
docstr: Applies the decorated transformation to the `data` as if by calling
  `self.op(data, param, **kwargs)` where
  `param = mag_to_param(magnitudes[magnitude_bin] * ((-1) ** random_sign))`.
  
  Args
  ----
  data : DataNode
      A batch of samples to be transformed.
  magnitude_bin: int, DataNode, or _SignedMagnitudeBin
      The magnitude bin from range `[0, num_magnitude_bins - 1]`. The bin is used to get
      parameter for the transformation. The parameter is computed as if by calling
      `mag_to_param(magnitudes[magnitude_bin] * ((-1) ** random_sign))`, where
      `magnitudes=linspace(mag_range[0], mag_range[1], num_magnitude_bins)`.
      If the `mag_range` is custom `np.ndarray`, it will be used as `magnitudes` directly.
  num_magnitude_bins: int
      The total number of magnitude bins (limits the accepted range of
      `magnitude_bin` to `[0, num_magnitude_bins - 1]`).
  kwargs
      Dictionary with extra arguments to pass to the `self.op`. The op's signature
      is checked for any additional arguments (apart from the ``data`` and ``parameter``) and
      the arguments with matching names are passed to the call.
  
  Returns
  -------
  DataNode
      A batch of transformed samples.
docstr_tok: ["Applies","the","decorated","transformation","to","the","`","data","`","as","if","by","calling","`","self.op","(","data",",","param",",","*","*","kwargs",")","`","where","`","param","=","mag_to_param","(","magnitudes","[","magnitude_bin","]","*","(","(","-1",")","*","*","random_sign",")",")","`",".","Args","--","--","data",":","DataNode","A","batch","of","samples","to","be","transformed",".","magnitude_bin",":","int",",","DataNode",",","or","_SignedMagnitudeBin","The","magnitude","bin","from","range","`","[","0",",","num_magnitude_bins","-","1","]","`",".","The","bin","is","used","to","get","parameter","for","the","transformation",".","The","parameter","is","computed","as","if","by","calling","`","mag_to_param","(","magnitudes","[","magnitude_bin","]","*","(","(","-1",")","*","*","random_sign",")",")","`",",","where","`","magnitudes=linspace","(","mag_range","[","0","]",",","mag_range","[","1","]",",","num_magnitude_bins",")","`",".","If","the","`","mag_range","`","is","custom","`","np.ndarray","`",",","it","will","be","used","as","`","magnitudes","`","directly",".","num_magnitude_bins",":","int","The","total","number","of","magnitude","bins","(","limits","the","accepted","range","of","`","magnitude_bin","`","to","`","[","0",",","num_magnitude_bins","-","1","]","`",")",".","kwargs","Dictionary","with","extra","arguments","to","pass","to","the","`","self.op","`",".","The","op","'s","signature","is","checked","for","any","additional","arguments","(","apart","from","the","``","data","``","and","``","parameter","``",")","and","the","arguments","with","matching","names","are","passed","to","the","call",".","Returns","--","--","--","-","DataNode","A","batch","of","transformed","samples","."]
code: def __call__(
      self,
      data: _DataNode,
      *,
      magnitude_bin: Optional[
          Union[int, _DataNode, _SignedMagnitudeBin]
      ] = None,
      num_magnitude_bins: Optional[int] = None,
      **kwargs,
  ) -> _DataNode:
      """
      Applies the decorated transformation to the `data` as if by calling
      `self.op(data, param, **kwargs)` where
      `param = mag_to_param(magnitudes[magnitude_bin] * ((-1) ** random_sign))`.
  
      Args
      ----
      data : DataNode
          A batch of samples to be transformed.
      magnitude_bin: int, DataNode, or _SignedMagnitudeBin
          The magnitude bin from range `[0, num_magnitude_bins - 1]`. The bin is used to get
          parameter for the transformation. The parameter is computed as if by calling
          `mag_to_param(magnitudes[magnitude_bin] * ((-1) ** random_sign))`, where
          `magnitudes=linspace(mag_range[0], mag_range[1], num_magnitude_bins)`.
          If the `mag_range` is custom `np.ndarray`, it will be used as `magnitudes` directly.
      num_magnitude_bins: int
          The total number of magnitude bins (limits the accepted range of
          `magnitude_bin` to `[0, num_magnitude_bins - 1]`).
      kwargs
          Dictionary with extra arguments to pass to the `self.op`. The op's signature
          is checked for any additional arguments (apart from the ``data`` and ``parameter``) and
          the arguments with matching names are passed to the call.
  
      Returns
      -------
      DataNode
          A batch of transformed samples.
      """
      num_mandatory_positional_args = 2
      param_device = self._infer_param_device(data)
      params = self._get_param(
          magnitude_bin, num_magnitude_bins, param_device
      )
      op_kwargs = filter_extra_accepted_kwargs(
          self.op, kwargs, num_mandatory_positional_args
      )
      missing_args = get_missing_kwargs(
          self.op, kwargs, num_mandatory_positional_args
      )
      if missing_args:
          raise MissingArgException(
              f"The augmentation `{self.name}` requires following named argument(s) "
              f"which were not provided to the call: {', '.join(missing_args)}. "
              f"Please make sure to pass the required arguments when calling the "
              f"augmentation.",
              augmentation=self,
              missing_args=missing_args,
          )
      return self.op(data, params, **op_kwargs)
  
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 3 for calling the Augmentation obj's underlying member method code with example usage: obj.__call__(data) and returns: self