class_docstr: First randomly rescale the image so that the longside and shortside of
  the image are around the bound; then jitter its aspect ratio.
  
  Required Keys:
  
  - img
  - img_shape
  - gt_bboxes (optional)
  - gt_polygons (optional)
  
  Modified Keys:
  
  - img
  - img_shape
  - gt_bboxes (optional)
  - gt_polygons (optional)
  
  Added Keys:
  
  - scale
  - scale_factor
  - keep_ratio
  
  Args:
      long_size_bound (int): The approximate bound for long size.
      short_size_bound (int): The approximate bound for short size.
      size_jitter_range (tuple(float, float)): Range of the ratio used
          to jitter the size. Defaults to (0.7, 1.3).
      aspect_ratio_jitter_range (tuple(float, float)): Range of the ratio
          used to jitter its aspect ratio. Defaults to (0.9, 1.1).
      resize_type (str): The type of resize class to use. Defaults to
          "Resize".
      **resize_kwargs: Other keyword arguments for the ``resize_type``.
code: def __repr__(self) -> str:
      repr_str = self.__class__.__name__
      repr_str += f"(long_size_bound = {self.long_size_bound}, "
      repr_str += f"short_size_bound = {self.short_size_bound}, "
      repr_str += f"ratio_range = {self.ratio_range}, "
      repr_str += f"aspect_ratio_range = {self.aspect_ratio_range}, "
      repr_str += f"resize_cfg = {self.resize_cfg})"
      return repr_str
  
imports: import math
  import random
  from typing import Dict, List, Sequence, Tuple, Union
  import cv2
  import mmcv
  import numpy
  from mmcv.transforms import RandomFlip
  from mmcv.transforms.base import BaseTransform
  from mmcv.transforms.utils import avoid_cache_randomness, cache_randomness
  from shapely.geometry import Polygon
  from mmocr.registry import TRANSFORMS
  from mmocr.utils import crop_polygon, poly2bbox, poly_intersection
label_desc: Use image node_id 4 for calling the BoundedScaleAspectJitter obj's underlying member method code with example usage: obj.__repr__() and returns: repr_str