class_docstr: Base class for operator property class implemented in python.
  
  Parameters
  ----------
  need_top_grad : bool
      The default declare_backward_dependency function. Use this value
      to determine whether this operator needs gradient input.
class_docstr_tok: ["Base","class","for","operator","property","class","implemented","in","python",".","Parameters","--","--","--","--","--","need_top_grad",":","bool","The","default","declare_backward_dependency","function",".","Use","this","value","to","determine","whether","this","operator","needs","gradient","input","."]
docstr: infer_type interface. override to create new operators
  
  Parameters
  ----------
  in_type : list of np.dtype
      list of argument types in the same order as
      declared in list_arguments.
  
  Returns
  -------
  in_type : list
      list of argument types. Can be modified from in_type.
  out_type : list
      list of output types calculated from in_type,
      in the same order as declared in list_outputs.
  aux_type : Optional, list
      list of aux types calculated from in_type,
      in the same order as declared in list_auxiliary_states.
docstr_tok: ["infer_type","interface",".","override","to","create","new","operators","Parameters","--","--","--","--","--","in_type",":","list","of","np.dtype","list","of","argument","types","in","the","same","order","as","declared","in","list_arguments",".","Returns","--","--","--","-","in_type",":","list","list","of","argument","types",".","Can","be","modified","from","in_type",".","out_type",":","list","list","of","output","types","calculated","from","in_type",",","in","the","same","order","as","declared","in","list_outputs",".","aux_type",":","Optional",",","list","list","of","aux","types","calculated","from","in_type",",","in","the","same","order","as","declared","in","list_auxiliary_states","."]
code: def infer_type(self, in_type):
      """infer_type interface. override to create new operators
  
      Parameters
      ----------
      in_type : list of np.dtype
          list of argument types in the same order as
          declared in list_arguments.
  
      Returns
      -------
      in_type : list
          list of argument types. Can be modified from in_type.
      out_type : list
          list of output types calculated from in_type,
          in the same order as declared in list_outputs.
      aux_type : Optional, list
          list of aux types calculated from in_type,
          in the same order as declared in list_auxiliary_states.
      """
      return (
          in_type,
          [in_type[0]] * len(self.list_outputs()),
          [in_type[0]] * len(self.list_auxiliary_states()),
      )
  
imports: import traceback
  import warnings
  import collections
  from array import array
  from threading import Lock
  import ctypes
  from ctypes import CFUNCTYPE, POINTER, Structure, pointer
  from ctypes import c_void_p, c_int, c_char, c_char_p, cast, c_bool
  from .base import _LIB, check_call, MXCallbackList, c_array, c_array_buf, mx_int, OpHandle
  from .base import c_str, mx_uint, mx_float, ctypes2numpy_shared, NDArrayHandle, py_str
  from .None import symbol, context
  from .ndarray import NDArray, dtype_np_to_mx, dtype_mx_to_np
  from .ndarray.ndarray import _STORAGE_TYPE_STR_TO_ID, _STORAGE_TYPE_ID_TO_STR
  from .ndarray.ndarray import _STORAGE_TYPE_UNDEFINED, _STORAGE_TYPE_DEFAULT
  from .ndarray.ndarray import _STORAGE_TYPE_CSR, _STORAGE_TYPE_ROW_SPARSE
  from .ndarray import _ndarray_cls
  from .numpy.multiarray import _np_ndarray_cls
  from .util import is_np_array
label_desc: Use image node_id 3 for calling the CustomOpProp obj's underlying member method code with example usage: obj.infer_type(in_type) and returns: in_type,  unknown,  unknown