def METHOD_NAME(self, transform, source_node, source_path):
    try:
        rotation = transform.rotation_degrees()
    except ValueError:
        source_path = CubicSuperPath(source_path)[0]
        clone_path = Path(source_node.get_path()).transform(source_node.composed_transform())
        clone_path = CubicSuperPath(clone_path)[0]
        angle_source = atan2(source_path[1][1][1] - source_path[0][1][1], source_path[1][1][0] - source_path[0][1][0])
        angle_clone = atan2(clone_path[1][1][1] - clone_path[0][1][1], clone_path[1][1][0] - clone_path[0][1][0])
        angle_embroidery = radians(-float(source_node.get(INKSTITCH_ATTRIBS['angle'], 0)))
        diff = angle_source - angle_embroidery
        rotation = degrees(diff + angle_clone)
        if self.flip_angle:
            rotation = -degrees(diff - angle_clone)
    return -rotation