code: def signed_bin(
      magnitude_bin: Union[int, _DataNode],
      random_sign: Optional[_DataNode] = None,
      seed: Optional[int] = None,
      shape: Optional[Tuple] = None,
  ) -> _SignedMagnitudeBin:
      """
      Combines the `magnitude_bin` with information about the sign of the magnitude.
      The Augmentation wrapper can generate and handle the random sign on its own. Yet,
      if the augmentation is called inside conditional split, it is better to combine
      magnitude_bins and sign in advance, before the split, so that the sign handling is done
      once for the whole batch rather than multiple times for each op operating on the split batch.
  
      Args
      ----
      magnitude_bin: int or DataNode
          The magnitude bin from range `[0, num_magnitude_bins - 1]`. Can be plain int or
          a batch (_DataNode) of ints.
      random_sign : DataNode, optional
          A batch of {0, 1} integers. For augmentations declared with `randomly_negate=True`,
          it determines if the magnitude is negated (for 1) or not (for 0).
      """
      return _SignedMagnitudeBin.create_from_bin(
          magnitude_bin, random_sign, seed, shape
      )
  
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 1 for calling a global function with example usage: signed_bin(magnitude_bin, random_sign, seed, shape) and returns: _SignedMagnitudeBin