class_docstr: An abstract base class to access features from a remote feature store.
  
  Args:
      tensor_attr_cls (TensorAttr, optional): A user-defined
          :class:`TensorAttr` class to customize the required attributes and
          their ordering to unique identify tensor values.
          (default: :obj:`None`)
class_docstr_tok: ["An","abstract","base","class","to","access","features","from","a","remote","feature","store",".","Args",":","tensor_attr_cls","(","TensorAttr",",","optional",")",":","A","user-defined",":","class",":","`","TensorAttr","`","class","to","customize","the","required","attributes","and","their","ordering","to","unique","identify","tensor","values",".","(","default",":",":","obj",":","`","None","`",")"]
docstr: Obtains the size of a tensor given its :class:`TensorAttr`, or
  :obj:`None` if the tensor does not exist.
docstr_tok: ["Obtains","the","size","of","a","tensor","given","its",":","class",":","`","TensorAttr","`",",","or",":","obj",":","`","None","`","if","the","tensor","does","not","exist","."]
code: def get_tensor_size(
      self, *args, **kwargs
  ) -> Optional[Tuple[int, ...]]:
      r"""Obtains the size of a tensor given its :class:`TensorAttr`, or
      :obj:`None` if the tensor does not exist.
      """
      attr = self._tensor_attr_cls.cast(*args, **kwargs)
      if not attr.is_set("index"):
          attr.index = None
      return self._get_tensor_size(attr)
  
imports: import copy
  from abc import abstractmethod
  from dataclasses import dataclass
  from enum import Enum
  from typing import Any, List, Optional, Tuple, Union
  import numpy
  import torch
  from torch_geometric.typing import FeatureTensorType, NodeType
  from torch_geometric.utils.mixin import CastMixin
label_desc: Use image node_id 12 for calling the FeatureStore obj's underlying member method code with example usage: obj.get_tensor_size() and returns: self