class_docstr: Arrow ExtensionType for an array of heterogeneous-shaped, homogeneous-typed
  tensors.
  
  This is the Arrow side of TensorDtype for tensor elements with different shapes.
  Note that this extension only supports non-ragged tensor elements; i.e., when
  considering each tensor element in isolation, they must have a well-defined,
  non-ragged shape.
  
  See Arrow extension type docs:
  https://arrow.apache.org/docs/python/extending_types.html#defining-extension-types-user-defined-types
class_docstr_tok: ["Arrow","ExtensionType","for","an","array","of","heterogeneous-shaped",",","homogeneous-typed","tensors",".","This","is","the","Arrow","side","of","TensorDtype","for","tensor","elements","with","different","shapes",".","Note","that","this","extension","only","supports","non-ragged","tensor","elements",";","i.e.",",","when","considering","each","tensor","element","in","isolation",",","they","must","have","a","well-defined",",","non-ragged","shape",".","See","Arrow","extension","type","docs",":","https",":","\/\/arrow.apache.org\/docs\/python\/extending_types.html","#","defining-extension-types-user-defined-types"]
code: def __arrow_ext_deserialize__(cls, storage_type, serialized):
      ndim = json.loads(serialized)
      dtype = storage_type["data"].type.value_type
      return cls(dtype, ndim)
  
imports: import itertools
  import json
  import sys
  from typing import Iterable, Optional, Tuple, List, Sequence, Union
  from packaging.version import parse
  import numpy
  import pyarrow
  from ray.air.util.tensor_extensions.utils import _is_ndarray_variable_shaped_tensor, create_ragged_ndarray
  from ray._private.utils import _get_pyarrow_version
  from ray.util.annotations import PublicAPI
label_desc: Use image node_id 7 for calling the ArrowVariableShapedTensorType obj's underlying member method code with example usage: obj.__arrow_ext_deserialize__(cls, storage_type, serialized) and returns: cls