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: Supports pythonic indexing into the :class:`FeatureStore`.
  
  In particular, the following rules are followed for indexing:
  
  * A fully-specified :obj:`key` will produce a tensor output.
  
  * A partially-specified :obj:`key` will produce an :class:`AttrView`
    output, which is a view on the :class:`FeatureStore`. If a view is
    called, it will produce a tensor output from the corresponding
    (partially specified) attributes.
docstr_tok: ["Supports","pythonic","indexing","into","the",":","class",":","`","FeatureStore","`",".","In","particular",",","the","following","rules","are","followed","for","indexing",":","*","A","fully-specified",":","obj",":","`","key","`","will","produce","a","tensor","output",".","*","A","partially-specified",":","obj",":","`","key","`","will","produce","an",":","class",":","`","AttrView","`","output",",","which","is","a","view","on","the",":","class",":","`","FeatureStore","`",".","If","a","view","is","called",",","it","will","produce","a","tensor","output","from","the","corresponding","(","partially","specified",")","attributes","."]
code: def __getitem__(self, key: TensorAttr) -> Any:
      r"""Supports pythonic indexing into the :class:`FeatureStore`.
  
      In particular, the following rules are followed for indexing:
  
      * A fully-specified :obj:`key` will produce a tensor output.
  
      * A partially-specified :obj:`key` will produce an :class:`AttrView`
        output, which is a view on the :class:`FeatureStore`. If a view is
        called, it will produce a tensor output from the corresponding
        (partially specified) attributes.
      """
      # CastMixin will handle the case of key being a tuple or TensorAttr:
      attr = self._tensor_attr_cls.cast(key)
      if attr.is_fully_specified():
          return self.get_tensor(attr)
      # If the view is not fully-specified, return a :class:`AttrView`:
      return self.view(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 17 for calling the FeatureStore obj's underlying member method code with example usage: obj.__getitem__(key) and returns: self, self