class_docstr: Implements a wrapper that will apply transformations sequentially on both image and target
  
  .. tabs::
  
      .. tab:: TensorFlow
  
          .. code:: python
  
              >>> import numpy as np
              >>> import tensorflow as tf
              >>> from doctr.transforms import SampleCompose, ImageTransform, ColorInversion, RandomRotate
              >>> transfo = SampleCompose([ImageTransform(ColorInversion((32, 32))), RandomRotate(30)])
              >>> out, out_boxes = transfo(tf.random.uniform(shape=[64, 64, 3], minval=0, maxval=1), np.zeros((2, 4)))
  
      .. tab:: PyTorch
  
          .. code:: python
  
              >>> import numpy as np
              >>> import torch
              >>> from doctr.transforms import SampleCompose, ImageTransform, ColorInversion, RandomRotate
              >>> transfos = SampleCompose([ImageTransform(ColorInversion((32, 32))), RandomRotate(30)])
              >>> out, out_boxes = transfos(torch.rand(8, 64, 64, 3), np.zeros((2, 4)))
  
  Args:
  ----
      transforms: list of transformation modules
code: def __call__(self, x: Any, target: Any) -> Tuple[Any, Any]:
      for t in self.sample_transforms:
          x, target = t(x, target)
  
      return x, target
  
imports: import math
  import random
  from typing import Any, Callable, Dict, List, Optional, Tuple, Union
  import numpy
  from doctr.utils.repr import NestedObject
  from ..None import functional
label_desc: Use image node_id 2 for calling the SampleCompose obj's underlying member method code with example usage: obj.__call__(x, target) and returns: x,  target