Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 36339eb

Browse files
committed
MAINT: work around non-zero exit status of "pdftops -v" command.
In the function responsible for probing the presence of external command ("_get_executable_info"), add an optional argument "ignore_error" (default False). If set to True, the external command is allowed to exit with non-zero status, and the content of the output is used anyway. This works around the problem with certain xpdf versions where the exit status of "pdftops -v" command is nonzero. Compatibility is maintained because the optional argument defaults to False which doesn't introduce any new behaviour.
1 parent 170db2f commit 36339eb

1 file changed

Lines changed: 11 additions & 4 deletions

File tree

lib/matplotlib/__init__.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -314,14 +314,20 @@ def _get_executable_info(name):
314314
If the executable is not one that we know how to query.
315315
"""
316316

317-
def impl(args, regex, min_ver=None):
317+
def impl(args, regex, min_ver=None, ignore_error=False):
318318
# Execute the subprocess specified by args; capture stdout and stderr.
319319
# Search for a regex match in the output; if the match succeeds, the
320320
# first group of the match is the version.
321321
# Return an _ExecInfo if the executable exists, and has a version of
322322
# at least min_ver (if set); else, raise FileNotFoundError.
323-
output = subprocess.check_output(
324-
args, stderr=subprocess.STDOUT, universal_newlines=True)
323+
try:
324+
output = subprocess.check_output(
325+
args, stderr=subprocess.STDOUT, universal_newlines=True)
326+
except subprocess.CalledProcessError as _cpe:
327+
if ignore_error:
328+
output = _cpe.output
329+
else:
330+
raise _cpe
325331
match = re.search(regex, output)
326332
if match:
327333
version = LooseVersion(match.group(1))
@@ -378,7 +384,8 @@ def impl(args, regex, min_ver=None):
378384
"Failed to find an ImageMagick installation")
379385
return impl([path, "--version"], r"^Version: ImageMagick (\S*)")
380386
elif name == "pdftops":
381-
info = impl(["pdftops", "-v"], "^pdftops version (.*)")
387+
info = impl(["pdftops", "-v"], "^pdftops version (.*)",
388+
ignore_error=True)
382389
if info and not ("3.0" <= info.version
383390
# poppler version numbers.
384391
or "0.9" <= info.version <= "1.0"):

0 commit comments

Comments
 (0)