docs: def prepare_for_submission(self, folder):
          """Create the input files from the input nodes passed to this instance of the `CalcJob`.
  
          :param folder: an `aiida.common.folders.Folder` to temporarily write files on disk
          :return: `aiida.common.datastructures.CalcInfo` instance
          """
          # create input structure
          if 'structure' in self.inputs:
              self.inputs.structure.export(folder.get_abs_path(self._DEFAULT_COORDS_FILE_NAME), fileformat="xyz")
  
          # create cp2k input file
          inp = Cp2kInput(self.inputs.parameters.get_dict())
          inp.add_keyword("GLOBAL/PROJECT", self._DEFAULT_PROJECT_NAME)
          if 'structure' in self.inputs:
              for i, letter in enumerate('ABC'):
                  inp.add_keyword('FORCE_EVAL/SUBSYS/CELL/' + letter,
                                  '{:<15} {:<15} {:<15}'.format(*self.inputs.structure.cell[i]))
              topo = "FORCE_EVAL/SUBSYS/TOPOLOGY"
              inp.add_keyword(topo + "/COORD_FILE_NAME", self._DEFAULT_COORDS_FILE_NAME)
              inp.add_keyword(topo + "/COORD_FILE_FORMAT", "XYZ")
  
          with io.open(folder.get_abs_path(self._DEFAULT_INPUT_FILE), mode="w", encoding="utf-8") as fobj:
              fobj.write(inp.render())
  
          if 'settings' in self.inputs:
              settings = self.inputs.settings.get_dict()
          else:
              settings = {}
  
          # create code info
          codeinfo = CodeInfo()
          codeinfo.cmdline_params = settings.pop('cmdline', []) + ["-i", self._DEFAULT_INPUT_FILE]
          codeinfo.stdout_name = self._DEFAULT_OUTPUT_FILE
          codeinfo.join_files = True
          codeinfo.code_uuid = self.inputs.code.uuid
  
          # create calc info
          calcinfo = CalcInfo()
          calcinfo.stdin_name = self._DEFAULT_INPUT_FILE
          calcinfo.uuid = self.uuid
          calcinfo.cmdline_params = codeinfo.cmdline_params
          calcinfo.stdin_name = self._DEFAULT_INPUT_FILE
          calcinfo.stdout_name = self._DEFAULT_OUTPUT_FILE
          calcinfo.codes_info = [codeinfo]
  
          # file lists
          calcinfo.remote_symlink_list = []
          if 'file' in self.inputs:
              calcinfo.local_copy_list = []
              for fobj in self.inputs.file.values():
                  calcinfo.local_copy_list.append((fobj.uuid, fobj.filename, fobj.filename))
  
          calcinfo.remote_copy_list = []
          calcinfo.retrieve_list = [self._DEFAULT_OUTPUT_FILE, self._DEFAULT_RESTART_FILE_NAME]
          calcinfo.retrieve_list += settings.pop('additional_retrieve_list', [])
  
          # symlinks
          if 'parent_calc_folder' in self.inputs:
              comp_uuid = self.inputs.parent_calc_folder.computer.uuid
              remote_path = self.inputs.parent_calc_folder.get_remote_path()
              symlink = (comp_uuid, remote_path, self._DEFAULT_PARENT_CALC_FLDR_NAME)
              calcinfo.remote_symlink_list.append(symlink)
  
          # check for left over settings
          if settings:
              raise InputValidationError("The following keys have been found " +
                                         "in the settings input node {}, ".format(self.pk) + "but were not understood: " +
                                         ",".join(settings.keys()))
  
          return calcinfo