class_docstr: Duck-typed version of PyG's GraphStore and FeatureStore.
class_docstr_tok: ["Duck-typed","version","of","PyG","'s","GraphStore","and","FeatureStore","."]
docstr: Synchronously obtains a :class:`FeatureTensorType` object from the
  feature store for each tensor associated with the attributes in
  `attrs`.
  
  Parameters
  ----------
  attrs (List[TensorAttr]): a list of :class:`TensorAttr` attributes
  that identify the tensors to get.
  
  Returns
  -------
  List[FeatureTensorType]: a Tensor of the same type as the index for
  each attribute.
  
  Raises
  ------
      KeyError: if a tensor corresponding to an attr was not found.
      ValueError: if any input `TensorAttr` is not fully specified.
docstr_tok: ["Synchronously","obtains","a",":","class",":","`","FeatureTensorType","`","object","from","the","feature","store","for","each","tensor","associated","with","the","attributes","in","`","attrs","`",".","Parameters","--","--","--","--","--","attrs","(","List","[","TensorAttr","]",")",":","a","list","of",":","class",":","`","TensorAttr","`","attributes","that","identify","the","tensors","to","get",".","Returns","--","--","--","-","List","[","FeatureTensorType","]",":","a","Tensor","of","the","same","type","as","the","index","for","each","attribute",".","Raises","--","--","--","KeyError",":","if","a","tensor","corresponding","to","an","attr","was","not","found",".","ValueError",":","if","any","input","`","TensorAttr","`","is","not","fully","specified","."]
code: def multi_get_tensor(
      self, attrs: List[CuGraphTensorAttr]
  ) -> List[TensorType]:
      """
      Synchronously obtains a :class:`FeatureTensorType` object from the
      feature store for each tensor associated with the attributes in
      `attrs`.
  
      Parameters
      ----------
      attrs (List[TensorAttr]): a list of :class:`TensorAttr` attributes
      that identify the tensors to get.
  
      Returns
      -------
      List[FeatureTensorType]: a Tensor of the same type as the index for
      each attribute.
  
      Raises
      ------
          KeyError: if a tensor corresponding to an attr was not found.
          ValueError: if any input `TensorAttr` is not fully specified.
      """
      attrs = [
          self._infer_unspecified_attr(self._tensor_attr_cls.cast(attr))
          for attr in attrs
      ]
      bad_attrs = [
          attr for attr in attrs if not attr.is_fully_specified()
      ]
      if len(bad_attrs) > 0:
          raise ValueError(
              f"The input TensorAttr(s) '{bad_attrs}' are not fully "
              f"specified. Please fully specify them by specifying all "
              f"'UNSET' fields"
          )
  
      tensors = self._multi_get_tensor(attrs)
  
      bad_attrs = [attrs[i] for i, v in enumerate(tensors) if v is None]
      if len(bad_attrs) > 0:
          raise KeyError(
              f"Tensors corresponding to attributes "
              f"'{bad_attrs}' were not found"
          )
  
      return [tensor for attr, tensor in zip(attrs, tensors)]
  
imports: from typing import Optional, Tuple, Any, Union, List, Dict
  from enum import Enum, auto
  from dataclasses import dataclass
  from collections import defaultdict
  from itertools import chain
  from functools import cached_property
  import numpy
  import cupy
  import pandas
  import cudf
  import cugraph
  import warnings
  import dask.array
  import dask.dataframe
  import dask.distributed
  import dask_cudf
  from cugraph.utilities.utils import import_optional, MissingModule
label_desc: Use image node_id 31 for calling the CuGraphStore obj's underlying member method code with example usage: obj.multi_get_tensor(attrs) and returns: unknown