code: def applyTransformOnGroup(self, transform, group):
          
  
          tr = self.attrConverter.convertTransform(transform)
          for op, values in tr:
              if op == "scale":
                  if not isinstance(values, tuple):
                      values = (values, values)
                  group.scale(*values)
              elif op == "translate":
                  if isinstance(values, (int, float)):
                      # From the SVG spec: If <ty> is not provided, it is assumed to be zero.
                      values = values, 0
                  group.translate(*values)
              elif op == "rotate":
                  if not isinstance(values, tuple) or len(values) == 1:
                      group.rotate(values)
                  elif len(values) == 3:
                      angle, cx, cy = values
                      group.translate(cx, cy)
                      group.rotate(angle)
                      group.translate(-cx, -cy)
              elif op == "skewX":
                  group.skew(values, 0)
              elif op == "skewY":
                  group.skew(0, values)
              elif op == "matrix":
                  group.transform = values
              else:
                  logger.debug("Ignoring transform: %s %s" % (op, values))
docs: Apply an SVG transformation to a RL Group shape.
  
          The transformation is the value of an SVG transform attribute
          like transform="scale(1, -1) translate(10, 30)".
  
          rotate(<angle> [<cx> <cy>]) is equivalent to:
            translate(<cx> <cy>) rotate(<angle>) translate(-<cx> -<cy>)