Merge branch 'python-fixes'

This commit is contained in:
Andrey Vlasovskikh
2015-05-27 18:17:59 +03:00
5 changed files with 21 additions and 17 deletions
-6
View File
@@ -1,12 +1,6 @@
# encoding: utf-8
import atexit
import zipfile
import sys
if hasattr(sys, 'dont_write_bytecode'):
sys.dont_write_bytecode = True
# TODO: Move all CLR-specific functions to clr_tools
@@ -28,6 +28,7 @@ import com.intellij.psi.PsiElement;
import com.jetbrains.python.PythonHelpersLocator;
import com.jetbrains.python.psi.StructuredDocString;
import com.jetbrains.python.sdk.PySdkUtil;
import com.jetbrains.python.sdk.PythonEnvUtil;
import com.jetbrains.python.sdk.PythonSdkType;
import com.jetbrains.python.toolbox.Substring;
import org.jetbrains.annotations.NotNull;
@@ -37,7 +38,9 @@ import java.io.File;
import java.nio.ByteBuffer;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author yole
@@ -105,9 +108,11 @@ public class PyStructuredDocstringFormatter {
final byte[] data = new byte[encoded.limit()];
encoded.get(data);
final Map<String, String> env = new HashMap<String, String>();
PythonEnvUtil.setPythonDontWriteBytecode(env);
final ProcessOutput output = PySdkUtil.getProcessOutput(new File(sdkHome).getParent(), new String[]{sdkHome, formatter},
null, 5000, data, true);
env, 5000, data, true);
if (output.isTimeout()) {
LOG.info("timeout when calculating docstring");
return null;
@@ -15,7 +15,6 @@
*/
package com.jetbrains.python.packaging;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
import com.intellij.execution.ExecutionException;
import com.intellij.execution.RunCanceledByUserException;
@@ -49,6 +48,7 @@ import com.jetbrains.python.psi.PyExpression;
import com.jetbrains.python.psi.PyListLiteralExpression;
import com.jetbrains.python.psi.PyStringLiteralExpression;
import com.jetbrains.python.sdk.PySdkUtil;
import com.jetbrains.python.sdk.PythonEnvUtil;
import com.jetbrains.python.sdk.PythonSdkType;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -469,7 +469,9 @@ public class PyPackageManagerImpl extends PyPackageManager {
try {
final Process process;
final Map<String, String> environment = PySdkUtil.mergeEnvVariables(System.getenv(), ImmutableMap.of("PYTHONUNBUFFERED", "1"));
final Map<String, String> environment = new HashMap<String, String>(System.getenv());
PythonEnvUtil.setPythonUnbuffered(environment);
PythonEnvUtil.setPythonDontWriteBytecode(environment);
final GeneralCommandLine commandLine = new GeneralCommandLine(cmdline).withWorkDirectory(workingDir).withEnvironment(environment);
if (useSudo) {
process = ExecUtil.sudo(commandLine, "Please enter your password to make changes in system packages: ");
@@ -15,7 +15,6 @@
*/
package com.jetbrains.python.sdk;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import com.intellij.openapi.util.text.StringUtil;
import org.jetbrains.annotations.NotNull;
@@ -23,7 +22,6 @@ import org.jetbrains.annotations.Nullable;
import java.io.File;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -35,6 +33,7 @@ public class PythonEnvUtil {
@SuppressWarnings("SpellCheckingInspection") public static final String PYTHONUNBUFFERED = "PYTHONUNBUFFERED";
@SuppressWarnings("SpellCheckingInspection") public static final String PYTHONIOENCODING = "PYTHONIOENCODING";
@SuppressWarnings("SpellCheckingInspection") public static final String IPYTHONENABLE = "IPYTHONENABLE";
@SuppressWarnings("SpellCheckingInspection") public static final String PYTHONDONTWRITEBYTECODE = "PYTHONDONTWRITEBYTECODE";
private PythonEnvUtil() { }
@@ -86,4 +85,10 @@ public class PythonEnvUtil {
public static void addToPythonPath(@NotNull Map<String, String> env, String value) {
addPathToEnv(env, PYTHONPATH, value);
}
@NotNull
public static Map<String, String> setPythonDontWriteBytecode(@NotNull Map<String, String> env) {
env.put(PYTHONDONTWRITEBYTECODE, "1");
return env;
}
}
@@ -29,6 +29,7 @@ import com.intellij.util.Consumer;
import com.jetbrains.python.PythonHelpersLocator;
import com.jetbrains.python.sdk.InvalidSdkException;
import com.jetbrains.python.sdk.PySdkUtil;
import com.jetbrains.python.sdk.PythonEnvUtil;
import com.jetbrains.python.sdk.PythonSdkType;
import com.jetbrains.python.sdk.flavors.IronPythonSdkFlavor;
import com.jetbrains.python.sdk.flavors.PythonSdkFlavor;
@@ -171,12 +172,9 @@ public class PySkeletonGenerator {
protected ProcessOutput getProcessOutput(String homePath, String[] commandLine, Map<String, String> extraEnv,
int timeout) throws InvalidSdkException {
return PySdkUtil.getProcessOutput(
homePath,
commandLine,
extraEnv,
timeout
);
final Map<String, String> env = extraEnv != null ? new HashMap<String, String>(extraEnv) : new HashMap<String, String>();
PythonEnvUtil.setPythonDontWriteBytecode(env);
return PySdkUtil.getProcessOutput(homePath, commandLine, env, timeout);
}
public void generateBuiltinSkeletons(@NotNull Sdk sdk) throws InvalidSdkException {