class_docstr: Rotates node positions around a specific axis by a randomly sampled
  factor within a given interval (functional name: :obj:`random_rotate`).
  
  Args:
      degrees (tuple or float): Rotation interval from which the rotation
          angle is sampled. If :obj:`degrees` is a number instead of a
          tuple, the interval is given by :math:`[-\mathrm{degrees},
          \mathrm{degrees}]`.
      axis (int, optional): The rotation axis. (default: :obj:`0`)
class_docstr_tok: ["Rotates","node","positions","around","a","specific","axis","by","a","randomly","sampled","factor","within","a","given","interval","(","functional","name",":",":","obj",":","`","random_rotate","`",")",".","Args",":","degrees","(","tuple","or","float",")",":","Rotation","interval","from","which","the","rotation","angle","is","sampled",".","If",":","obj",":","`","degrees","`","is","a","number","instead","of","a","tuple",",","the","interval","is","given","by",":","math",":","`","[","-\\mathrm","{","degrees","}",",","\\mathrm","{","degrees","}","]","`",".","axis","(","int",",","optional",")",":","The","rotation","axis",".","(","default",":",":","obj",":","`","0","`",")"]
code: def __repr__(self) -> str:
      return (
          f"{self.__class__.__name__}({self.degrees}, "
          f"axis={self.axis})"
      )
  
file_path: pytorch_geometric/torch_geometric/transforms/random_rotate.py
imports: import math
  import random
  from typing import Tuple, Union
  import torch
  from torch_geometric.data import Data
  from torch_geometric.data.datapipes import functional_transform
  from torch_geometric.transforms import BaseTransform, LinearTransformation
label_desc: Use image node_id 3 for calling the RandomRotate obj's underlying member method code with example usage: obj.__repr__() and returns: self, str, self, str, self, str