code: def test_shape_of():
      shape = (10, 5, 12)
      x = relay.var("x", shape=shape)
      func = relay.Function([x], relay.op.shape_of(x))
      func = run_infer_type(func)
      x_data = np.random.rand(*shape).astype("float32")
      for target, dev in tvm.testing.enabled_targets():
          # Because using graph executor, this op will be optimized after
          # constant folding pass, here we only test with interpreter
          for kind in ["vm"]:
              op_res = relay.create_executor(
                  kind, device=dev, target=target
              ).evaluate(func)(x_data)
              tvm.testing.assert_allclose(
                  op_res.numpy(), np.array(shape).astype("int32")
              )
  
imports: import sys
  import pytest
  import numpy
  import tvm
  import tvm.testing
  import tvm.topi.testing
  from tvm import relay, te, topi
  from tvm.relay import transform
  from tvm.relay.testing import run_infer_type
label_desc: Use image node_id 23 for calling a global function with example usage: test_shape_of() without return types