docs: def prepare_for_submission(self, folder):
          """This method is called prior to job submission with a set of calculation input nodes.
  
          The inputs will be validated and sanitized, after which the necessary input files will be written to disk in a
          temporary folder. A CalcInfo instance will be returned that contains lists of files that need to be copied to
          the remote machine before job submission, as well as file lists that are to be retrieved after job completion.
  
          :param folder: an aiida.common.folders.Folder to temporarily write files on disk
          :returns: CalcInfo instance
          """
          from aiida_codtools.common.cli import CliParameters
  
          try:
              parameters = self.inputs.parameters.get_dict()
          except AttributeError:
              parameters = {}
  
          self._validate_resources()
  
          cli_parameters = copy.deepcopy(self._default_cli_parameters)
          cli_parameters.update(parameters)
  
          codeinfo = datastructures.CodeInfo()
          codeinfo.code_uuid = self.inputs.code.uuid
          codeinfo.cmdline_params = CliParameters.from_dictionary(cli_parameters).get_list()
          codeinfo.stdin_name = self.options.input_filename
          codeinfo.stdout_name = self.options.output_filename
          codeinfo.stderr_name = self.options.error_filename
  
          calcinfo = datastructures.CalcInfo()
          calcinfo.uuid = str(self.uuid)
          calcinfo.codes_info = [codeinfo]
          calcinfo.retrieve_list = [self.options.output_filename, self.options.error_filename]
          calcinfo.local_copy_list = [(self.inputs.cif.uuid, self.inputs.cif.filename, self.options.input_filename)]
          calcinfo.remote_copy_list = []
  
          return calcinfo