class CommandError(Exception):
- def __init__(self, command, status, stdout, stderr):
- strerror = ["Command failed (%d):\n %s\n" % (status, stderr),
- "while executing\n %s" % command]
- Exception.__init__(self, "\n".join(strerror))
+ """Represent errors in command execution.
+
+ Instances are picklable (for passing through `multiprocessing.Queue`\s).
+
+ >>> import pickle
+ >>> a = CommandError('somefunc', 1, '', 'could not find "somefunc"')
+ >>> x = pickle.dumps(a)
+ >>> b = pickle.loads(x)
+ >>> print b
+ Command failed (1):
+ could not find "somefunc"
+ <BLANKLINE>
+ while executing
+ somefunc
+ """
+ def __init__(self, command=None, status=None, stdout=None, stderr=None):
self.command = command
self.status = status
self.stdout = stdout
self.stderr = stderr
+ Exception.__init__(self, self.__str__())
+
+ def __getstate__(self):
+ return self.__dict__
+
+ def __setstate__(self, data):
+ self.__dict__.update(data)
+
+ def __str__(self):
+ return "\n".join([
+ "Command failed (%s):\n %s\n" % (self.status, self.stderr),
+ "while executing\n %s" % self.command,
+ ])
+
def invoke(cmd_string, stdin=None, expect=(0,), cwd=None, verbose=False):
"""