code: def __call__(self, a, kth):
      inputs = [a]
      if isinstance(kth, TENSOR_TYPE):
          inputs.append(kth)
      kws = []
      if self._return_value:
          kws.append(
              {
                  "shape": a.shape,
                  "order": a.order,
                  "type": "sorted",
                  "dtype": a.dtype,
              }
          )
      if self._return_indices:
          kws.append(
              {
                  "shape": a.shape,
                  "order": TensorOrder.C_ORDER,
                  "type": "argsort",
                  "dtype": np.dtype(np.int64),
              }
          )
      ret = self.new_tensors(inputs, kws=kws)
      if len(kws) == 1:
          return ret[0]
      return ExecutableTuple(ret)
  
imports: import itertools
  import numpy
  from ...None import opcodes
  from ...core import recursive_tile
  from ...serialization.serializables import FieldTypes, KeyField, Int32Field, StringField, ListField, BoolField, AnyField
  from ...utils import has_unknown_shape, flatten, stack_back
  from ...core import ENTITY_TYPE, ExecutableTuple
  from ..operands import TensorOperand, TensorShuffleProxy
  from ..core import TENSOR_TYPE, TENSOR_CHUNK_TYPE, TensorOrder
  from ..array_utils import as_same_device, device
  from ..datasource import tensor
  from ..utils import validate_axis, validate_order
  from .psrs import TensorPSRSOperandMixin
label_desc: Use image node_id 13 for calling the TensorPartition obj's underlying member method code with example usage: obj.__call__(a, kth) and returns: ExecutableTuple, ret