class_docstr: Apply and inverse transformations for keypoints tensors.
  
  This is for transform keypoints in the format (B, N, 2).
class_docstr_tok: ["Apply","and","inverse","transformations","for","keypoints","tensors",".","This","is","for","transform","keypoints","in","the","format","(","B",",","N",",","2",")","."]
docstr: Apply a transformation with respect to the parameters.
  
  Args:
      input: the input tensor, (B, N, 4, 2) or (B, 4, 2).
      module: any torch Module but only kornia augmentation modules will count
          to apply transformations.
      param: the corresponding parameters to the module.
docstr_tok: ["Apply","a","transformation","with","respect","to","the","parameters",".","Args",":","input",":","the","input","tensor",",","(","B",",","N",",","4",",","2",")","or","(","B",",","4",",","2",")",".","module",":","any","torch","Module","but","only","kornia","augmentation","modules","will","count","to","apply","transformations",".","param",":","the","corresponding","parameters","to","the","module","."]
code: def transform(
      cls,
      input: Keypoints,
      module: Module,
      param: ParamItem,
      extra_args: Dict[str, Any] = {},
  ) -> Keypoints:
      """Apply a transformation with respect to the parameters.
  
      Args:
          input: the input tensor, (B, N, 4, 2) or (B, 4, 2).
          module: any torch Module but only kornia augmentation modules will count
              to apply transformations.
          param: the corresponding parameters to the module.
      """
      _input = input.clone()
  
      if isinstance(module, (K.GeometricAugmentationBase2D,)):
          _input = module.transform_keypoints(
              _input,
              cls.get_instance_module_param(param),
              module.flags,
              transform=module.transform_matrix,
              **extra_args,
          )
  
      elif isinstance(module, (K.GeometricAugmentationBase3D,)):
          raise NotImplementedError(
              "The support for 3d keypoint operations are not yet supported. "
              "You are welcome to file a PR in our repo."
          )
  
      elif (
          isinstance(module, K.ImageSequential)
          and not module.is_intensity_only()
      ):
          _input = module.transform_keypoints(
              _input,
              params=cls.get_sequential_module_param(param),
              extra_args=extra_args,
          )
  
      elif isinstance(module, K.container.ImageSequentialBase):
          _input = module.transform_keypoints(
              _input,
              params=cls.get_sequential_module_param(param),
              extra_args=extra_args,
          )
  
      elif isinstance(module, (K.auto.operations.OperationBase,)):
          return KeypointSequentialOps.transform(
              input,
              module=module.op,
              param=param,
              extra_args=extra_args,
          )
  
      return _input
  
imports: from abc import ABCMeta, abstractmethod
  from typing import Any, Callable, Dict, Generic, List, Optional, Type, TypeVar, Union
  from typing_extensions import ParamSpec
  import kornia.augmentation
  from kornia.augmentation.base import _AugmentationBase
  from kornia.constants import DataKey
  from kornia.core import Module, Tensor
  from kornia.geometry.boxes import Boxes
  from kornia.geometry.keypoints import Keypoints
  from .params import ParamItem
label_desc: Use image node_id 1 for calling the KeypointSequentialOps obj's underlying member method code with example usage: obj.transform(cls, input, module, param, extra_args) and returns: _input, KeypointSequentialOps