class_docstr: Write a value into index ``index`` of ``ls``.
  
  Parameters
  ----------
  ls: List (Required)
  
  index: <i32> (Required)
      * Size of the list.
  
  value: <*,T> (Optional)
      * Element value to write, which must match the element shape of ``ls``.
      * Default is ``None``.
  
  Returns
  -------
  List[*]
  
  Attributes
  ----------
  T: fp16, fp32, i32, bool
class_docstr_tok: ["Write","a","value","into","index","``","index","``","of","``","ls","``",".","Parameters","--","--","--","--","--","ls",":","List","(","Required",")","index",":","<","i32",">","(","Required",")","*","Size","of","the","list",".","value",":","<","*",",","T",">","(","Optional",")","*","Element","value","to","write",",","which","must","match","the","element","shape","of","``","ls","``",".","*","Default","is","``","None","``",".","Returns","--","--","--","-","List","[","*","]","Attributes","--","--","--","--","--","T",":","fp16",",","fp32",",","i32",",","bool"]
code: def type_inference(self):
      list_elem_type = self.ls.elem_type
      value_type = self.value.sym_type
      dynamic_length = self.ls.dynamic_length
      init_length = self.ls.init_length
  
      if list_elem_type is None:
          # fill in the elem type using value's type info.
          return types.list(
              value_type,
              init_length=init_length,
              dynamic_length=dynamic_length,
          )
      if list_elem_type == types.unknown:
          msg = "Input ls elem type unknown. Override with {}"
          logger.warning(msg.format(value_type))
          return types.list(
              value_type,
              init_length=init_length,
              dynamic_length=dynamic_length,
          )
      if not types.is_subtype(value_type, list_elem_type):
          msg = (
              "Elem type mismatch: ls elem type {} vs "
              + "value type {}"
          )
          raise ValueError(
              msg.format(
                  list_elem_type.__type_info__(),
                  value_type.__type_info__(),
              )
          )
      return self.ls.sym_type
  
imports: import copy
  import numpy
  from coremltools import _logger
  from coremltools.converters.mil.mil import Block, get_existing_symbol, get_new_symbol, types
  from coremltools.converters.mil.mil.input_type import DefaultInputs, InputSpec, InternalInputType, ListInputType, PyFunctionInputType, TensorInputType, TupleInputType
  from coremltools.converters.mil.mil.operation import NONE, SYMBOL, VALUE, Operation, mil_list, precondition
  from coremltools.converters.mil.mil.ops.defs._op_reqs import register_op
  from coremltools.converters.mil.mil.ops.defs._utils import infer_type_with_broadcast, promoted_primitive_type
  from coremltools.converters.mil.mil.types import is_compatible_type
  from coremltools.converters.mil.mil.types.type_list import list
  from coremltools.converters.mil.mil.types.type_mapping import builtin_to_string, is_subtype, numpy_type_to_builtin_type, numpy_val_to_builtin_val
label_desc: Use image node_id 1 for calling the list_write obj's underlying member method code with example usage: obj.type_inference() and returns: self, types, types