class_docstr: Pattern for a mutable list-like object shareable via a shared
  memory block.  It differs from the built-in list type in that these
  lists can not change their overall length (i.e. no append, insert,
  etc.)
  
  Because values are packed into a memoryview as bytes, the struct
  packing format for any storable value must require no more than 8
  characters to describe its format.
code: def __setitem__(self, position, value):
      try:
          offset = self._offset_data_start + sum(
              self._allocated_bytes[:position]
          )
          current_format = self._get_packing_format(position)
      except IndexError:
          raise IndexError("assignment index out of range")
  
      if not isinstance(value, (str, bytes)):
          new_format = self._types_mapping[type(value)]
          encoded_value = value
      else:
          encoded_value = (
              value.encode(_encoding)
              if isinstance(value, str)
              else value
          )
          if len(encoded_value) > self._allocated_bytes[position]:
              raise ValueError(
                  "bytes/str item exceeds available storage"
              )
          if current_format[-1] == "s":
              new_format = current_format
          else:
              new_format = self._types_mapping[str] % (
                  self._allocated_bytes[position],
              )
  
      self._set_packing_format_and_transform(
          position, new_format, value
      )
      struct.pack_into(new_format, self.shm.buf, offset, encoded_value)
  
imports: from functools import partial
  import mmap
  import os
  import errno
  import struct
  import secrets
label_desc: Use image node_id 7 for calling the ShareableList obj's underlying member method code with example usage: obj.__setitem__(position, value) without return types