code: def get_prim_func_arg_and_result_memory_constraints(
      func: PrimFunc, relay_func_type: Object
  ) -> List[str]:
      """Returns the memory (aka storage) scope constraints for all the arguments and result
      of func. However the result will be w.r.t. the func's representation as a Relay Function
      of relay_func_type before lowering and conversion to DPS.
  
      Visible for testing.
  
      Parameters
      ----------
      func: tvm.tir.PrimFunc
          The function to retrieve constraints from.
  
      relay_func_type: tvm.relay.FuncType
          The type of the Relay Function from which the func was derived.
  
      Returns
      -------
      result: List[AnyStr]
          Memory scope constraints for funcs args and result in Relay form. The empty string
          denotes 'no constraint'.
      """
      return _ffi_api.GetPrimFuncArgAndResultMemoryConstraints(  # type: ignore # pylint: disable=no-member
          func, relay_func_type
      )
  
imports: from typing import Dict, List, Optional, Union
  import tvm
  from tvm import Object
  from tvm.ir import IRModule
  from tvm.tir.expr import Var
  from tvm.tir.stmt import Block, BufferRegion, PrimExpr
  from ..None import Buffer, Stmt
  from ..function import PrimFunc
  from .None import _ffi_api
label_desc: Use image node_id 13 for calling a global function with example usage: get_prim_func_arg_and_result_memory_constraints(func, relay_func_type) and returns: _ffi_api