code: def augment_datas(
      self,
      datas,
      gt_txts,
      n_augmentations,
      processes=1,
      progress_bar=False,
  ):
      if n_augmentations < 0 or not isinstance(n_augmentations, int):
          raise ValueError(
              "Number of augmentation must be an integer >= 0"
          )
  
      if n_augmentations == 0:
          return datas, gt_txts
  
      out = parallel_map(
          self.augment_data_tuple,
          list(zip(datas, gt_txts, [n_augmentations] * len(datas))),
          desc="Augmentation",
          processes=processes,
          progress_bar=progress_bar,
      )
      out_d, out_t = type(datas)(), type(datas)()
      for d, t in out:
          out_d += d
          out_t += t
  
      return datas + out_d, gt_txts + out_t
  
imports: from abc import ABC, abstractmethod
  from dataclasses import dataclass
  from typing import Type, TypeVar, Generic
  import numpy
  from paiargparse import pai_dataclass
  from tfaip.util.multiprocessing.parallelmap import parallel_map
  from calamari_ocr.utils.image import load_image
label_desc: Use image node_id 5 for calling the DataAugmenterBase obj's underlying member method code with example usage: obj.augment_datas(datas, gt_txts, n_augmentations, processes, progress_bar) and returns: unknown,  unknown, datas,  gt_txts