code: def test_safe_rotate(angle: float, targets: dict, expected: dict):
      image = np.empty([100, 200, 3], dtype=np.uint8)
      t = A.Compose(
          [
              A.SafeRotate(
                  limit=(angle, angle), border_mode=0, value=0, p=1
              ),
          ],
          bbox_params=A.BboxParams(
              format="pascal_voc", min_visibility=0.0
          ),
          keypoint_params=A.KeypointParams("xyas"),
          p=1,
      )
      res = t(image=image, **targets)
  
      for key, value in expected.items():
          assert np.allclose(np.array(value), np.array(res[key])), key
  
imports: import random
  from functools import partial
  import cv2
  import numpy
  import pytest
  import albumentations
  import albumentations.augmentations.functional
  import albumentations.augmentations.geometric.functional
  from albumentations.augmentations.blur.functional import gaussian_blur
  from .utils import get_dual_transforms, get_image_only_transforms, get_transforms
label_desc: Use image node_id 49 for calling a global function with example usage: test_safe_rotate(angle, targets, expected) without return types