class_docstr: Random horizontal and vertical shifts 
docstr: Args:
      horiz_frac (float): max abs fraction for horizontal shift
      vert_frac (float): max abs fraction for horizontal shift
      border: cv2 border method
      border_value: cv2 border value for border=cv2.BORDER_CONSTANT
docstr_tok: ["Args",":","horiz_frac","(","float",")",":","max","abs","fraction","for","horizontal","shift","vert_frac","(","float",")",":","max","abs","fraction","for","horizontal","shift","border",":","cv2","border","method","border_value",":","cv2","border","value","for","border=cv2.BORDER_CONSTANT"]
code: def __init__(
      self,
      horiz_frac=0,
      vert_frac=0,
      border=cv2.BORDER_REPLICATE,
      border_value=0,
  ):
      """
      Args:
          horiz_frac (float): max abs fraction for horizontal shift
          vert_frac (float): max abs fraction for horizontal shift
          border: cv2 border method
          border_value: cv2 border value for border=cv2.BORDER_CONSTANT
      """
      assert horiz_frac < 1.0 and vert_frac < 1.0
      super(Shift, self).__init__()
      self._init(locals())
  
imports: import math
  import numpy
  import cv2
  from .base import ImageAugmentor
  from .transform import WarpAffineTransform, CropTransform, TransformList
label_desc: Use image node_id 1 to create a new Shift object from inherited base classes: ImageAugmentor with example: obj = Shift(horiz_frac, vert_frac, border, border_value)