From 737ac482a6a365392abe90325c542ae5f75ecfa4 Mon Sep 17 00:00:00 2001 From: Matthieu Imbert <matthieu.imbert@inria.fr> Date: Tue, 28 Jan 2025 14:10:13 +0100 Subject: [PATCH] [execo, execo_g5k] use pipes.quote or shlex.quote depending on py version --- src/execo/action.py | 8 ++++++-- src/execo/process.py | 6 ++++-- src/execo/utils.py | 9 +++++++-- src/execo_engine/engine.py | 9 +++++++-- 4 files changed, 24 insertions(+), 8 deletions(-) diff --git a/src/execo/action.py b/src/execo/action.py index 1bd0fc1..ef5bc57 100644 --- a/src/execo/action.py +++ b/src/execo/action.py @@ -31,8 +31,12 @@ from .utils import name_from_cmdline, non_retrying_intr_cond_wait, intr_event_wa from traceback import format_exc from .substitutions import get_caller_context, remote_substitute from .time_utils import get_seconds, format_date, Timer -import threading, time, pipes, tempfile, os, shutil, stat, functools +import threading, time, sys, tempfile, os, shutil, stat, functools +if sys.version_info >= (3,): + from shlex import quote +else: + from pipes import quote class ActionLifecycleHandler(object): @@ -879,7 +883,7 @@ class TaktukRemote(Action): port = global_port, connection_params = self.connection_params))) real_taktuk_cmdline += ("-F", taktuk_options_filename) - real_taktuk_cmdline = " ".join([pipes.quote(arg) for arg in real_taktuk_cmdline]) + real_taktuk_cmdline = " ".join([quote(arg) for arg in real_taktuk_cmdline]) real_taktuk_cmdline += " && rm -f " + taktuk_options_filename self._taktuk = Process(real_taktuk_cmdline) #self._taktuk.close_stdin = False diff --git a/src/execo/process.py b/src/execo/process.py index b30a778..09ad7c7 100644 --- a/src/execo/process.py +++ b/src/execo/process.py @@ -29,13 +29,15 @@ from traceback import format_exc from .report import Report from .exception import ProcessesFailed import errno, os, re, shlex, signal, subprocess -import threading, time, pipes, sys +import threading, time, sys if sys.version_info >= (3,): + from shlex import quote import codecs, locale _decode = lambda bs: codecs.decode(bs, locale.getpreferredencoding(), 'surrogateescape') _encode = lambda s: codecs.encode(s, locale.getpreferredencoding(), 'surrogateescape') else: + from pipes import quote _decode = lambda bs: bs _decode = lambda s: s @@ -1019,7 +1021,7 @@ class Process(ProcessBase): if self.shell == False and (is_string(self.cmd)): return shlex.split(self.cmd) elif self.shell == True and not is_string(self.cmd): - return str(" ".join([ pipes.quote(arg) for arg in self.cmd ])) + return str(" ".join([ quote(arg) for arg in self.cmd ])) else: if sys.version_info >= (3,): return self.cmd diff --git a/src/execo/utils.py b/src/execo/utils.py index 95c7e11..a711e09 100644 --- a/src/execo/utils.py +++ b/src/execo/utils.py @@ -17,7 +17,12 @@ # along with Execo. If not, see <http://www.gnu.org/licenses/> from .config import configuration -import pipes, subprocess, os, time, sys, traceback, re, functools, threading, random +import subprocess, os, time, sys, traceback, re, functools, threading, random + +if sys.version_info >= (3,): + from shlex import quote +else: + from pipes import quote def comma_join(*args): return ", ".join([ arg for arg in args if len(arg) > 0 ]) @@ -31,7 +36,7 @@ def str_from_cmdline(cmdline): if is_string(cmdline): return cmdline else: - return " ".join([ pipes.quote(arg) for arg in cmdline ]) + return " ".join([ quote(arg) for arg in cmdline ]) def name_from_cmdline(cmdline): cmdline = str_from_cmdline(cmdline) diff --git a/src/execo_engine/engine.py b/src/execo_engine/engine.py index 7bfe6af..9c9a5d2 100644 --- a/src/execo_engine/engine.py +++ b/src/execo_engine/engine.py @@ -17,10 +17,15 @@ # along with Execo. If not, see <http://www.gnu.org/licenses/> from .log import logger -import os, sys, time, inspect, pipes +import os, sys, time, inspect from .utils import redirect_outputs, copy_outputs from argparse import ArgumentParser +if sys.version_info >= (3,): + from shlex import quote +else: + from pipes import quote + _engineargs = sys.argv[1:] def run_meth_on_engine_ancestors(instance, method_name): @@ -212,7 +217,7 @@ class Engine(object): redirect_outputs(stdout_fname, stderr_fname) logger.info("redirect stdout / stderr to %s and %s", stdout_fname, stderr_fname) logger.info("command line arguments: %s" % (sys.argv,)) - logger.info("command line: " + " ".join([pipes.quote(arg) for arg in sys.argv])) + logger.info("command line: " + " ".join([quote(arg) for arg in sys.argv])) logger.info("run in directory %s", self.result_dir) run_meth_on_engine_ancestors(self, "init") run_meth_on_engine_ancestors(self, "run") -- GitLab