diff options
author | Marc Tamlyn <marc.tamlyn@gmail.com> | 2012-07-27 01:30:27 -0700 |
---|---|---|
committer | Marc Tamlyn <marc.tamlyn@gmail.com> | 2012-07-27 01:30:27 -0700 |
commit | bf9e3288d78ffebc959c0a898c4c05c2db6a383d (patch) | |
tree | 6eea45aa3a68fece4c9ae6add826eed50920c380 /wkhtmltopdf/subprocess.py | |
parent | fab23c4fc12d667575064835c82146eb8f88f896 (diff) | |
parent | fd3c890e2ecd2b5448ee7ca65503c2b31ac92ddb (diff) | |
download | django-wkhtmltopdf-bf9e3288d78ffebc959c0a898c4c05c2db6a383d.tar.gz django-wkhtmltopdf-bf9e3288d78ffebc959c0a898c4c05c2db6a383d.tar.bz2 django-wkhtmltopdf-bf9e3288d78ffebc959c0a898c4c05c2db6a383d.zip |
Merge pull request #9 from ecometrica/master
Refactoring of django-wkhtmltopdf
Diffstat (limited to 'wkhtmltopdf/subprocess.py')
-rw-r--r-- | wkhtmltopdf/subprocess.py | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/wkhtmltopdf/subprocess.py b/wkhtmltopdf/subprocess.py new file mode 100644 index 0000000..d0abacd --- /dev/null +++ b/wkhtmltopdf/subprocess.py @@ -0,0 +1,44 @@ +from __future__ import absolute_import + +from subprocess import * + + +# Provide Python 2.7's check_output() function. +try: + check_output +except NameError: + def check_output(*popenargs, **kwargs): + r"""Run command with arguments and return its output as a byte string. + + If the exit code was non-zero it raises a CalledProcessError. The + CalledProcessError object will have the return code in the returncode + attribute and output in the output attribute. + + The arguments are the same as for the Popen constructor. Example: + + >>> check_output(["ls", "-l", "/dev/null"]) + 'crw-rw-rw- 1 root root 1, 3 Oct 18 2007 /dev/null\n' + + The stdout argument is not allowed as it is used internally. + To capture standard error in the result, use stderr=STDOUT. + + >>> check_output(["/bin/sh", "-c", + ... "ls -l non_existent_file ; exit 0"], + ... stderr=STDOUT) + 'ls: non_existent_file: No such file or directory\n' + """ + if 'stdout' in kwargs: + raise ValueError('stdout argument not allowed, it will be overridden.') + process = Popen(stdout=PIPE, *popenargs, **kwargs) + output, unused_err = process.communicate() + retcode = process.poll() + if retcode: + cmd = kwargs.get("args") + if cmd is None: + cmd = popenargs[0] + error = CalledProcessError(retcode, cmd) + # Add the output attribute to CalledProcessError, which + # doesn't exist until Python 2.7. + error.output = output + raise error + return output |