code: def execute(cls, ctx, op):
      chunk_idx_to_chunk_shapes = dict(
          (c.index, c.shape) for c in op.inputs
      )
      nsplits = calc_nsplits(chunk_idx_to_chunk_shapes)
      shape = tuple(sum(ns) for ns in nsplits)
      for o, s in zip(op.outputs, shape):
          ctx[o.key] = s
  
file_path: mars/mars/tensor/base/shape.py
imports: import numpy
  from ...None import opcodes
  from ...core import ExecutableTuple
  from ...serialization.serializables import KeyField, Int32Field
  from ...utils import calc_nsplits
  from ..core import TensorOrder
  from ..datasource import tensor
  from ..operands import TensorOperand, TensorOperandMixin
label_desc: Use image node_id 8 for calling the TensorGetShape obj's underlying member method code with example usage: obj.execute(cls, ctx, op) without return types