@VisibleForTesting static PythonVersion extractPythonVersion(Path pythonPath, ProcessExecutor.Result versionResult) { if (versionResult.getExitCode() == 0) { String versionString = CharMatcher.WHITESPACE.trimFrom( CharMatcher.WHITESPACE.trimFrom(versionResult.getStderr().get()) + CharMatcher.WHITESPACE .trimFrom(versionResult.getStdout().get()) .replaceAll("\u001B\\[[;\\d]*m", "")); Matcher matcher = PYTHON_VERSION_REGEX.matcher(versionString.split("\\r?\\n")[0]); if (!matcher.matches()) { throw new HumanReadableException( "`%s -V` returned an invalid version string %s", pythonPath, versionString); } return PythonVersion.of(matcher.group(1)); } else { throw new HumanReadableException(versionResult.getStderr().get()); } }