def _copy_input_files(self, writer): for file in self._input_files: dest_file = "/tmp/submission-src" put_file(container=writer, src=file, dest=dest_file) if hasattr(file, "content_type"): mimetype = file.content_type else: with file.open("rb") as f: mimetype = get_file_mimetype(f) if mimetype.lower() == "application/zip": # Unzip the file in the container rather than in the python # process. With resource limits this should provide some # protection against zip bombs etc. writer.exec_run( f"unzip {dest_file} -d /input/ -x '__MACOSX/*'") # Remove a duplicated directory input_files = (writer.exec_run( "ls -1 /input/").output.decode().splitlines()) if (len(input_files) == 1 and not writer.exec_run( f"ls -d /input/{input_files[0]}/").exit_code): writer.exec_run( f'/bin/sh -c "mv /input/{input_files[0]}/* /input/ ' f'&& rm -r /input/{input_files[0]}/"') elif mimetype.lower() == "application/json": writer.exec_run(f"mv {dest_file} /input/predictions.json") else: # Not a zip file, so must be a csv writer.exec_run(f"mv {dest_file} /input/submission.csv")
def _copy_input_files(self, writer): for file in self._input_files: dest_file = "/tmp/submission-src" put_file(container=writer, src=file, dest=dest_file) with file.open("rb") as f: mimetype = get_file_mimetype(f) if mimetype.lower() == "application/zip": # Unzip the file in the container rather than in the python # process. With resource limits this should provide some # protection against zip bombs etc. writer.exec_run( f"unzip {dest_file} -d /input/ -x '__MACOSX/*'") self.__was_unzipped = True else: # Not a zip file, so must be a csv writer.exec_run(f"mv {dest_file} /input/submission.csv")