Skip to content

Commit eab2caf

Browse files
committed
[GR-19718] Add an import hook to patch pip so we can apply patches to packages
PullRequest: graalpython/738
2 parents 9ca3581 + f2ee371 commit eab2caf

File tree

14 files changed

+1312
-1183
lines changed

14 files changed

+1312
-1183
lines changed

graalpython/com.oracle.graal.python.shell/src/com/oracle/graal/python/shell/GraalPythonMain.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,17 @@
3131
import java.io.InputStream;
3232
import java.io.OutputStream;
3333
import java.lang.management.ManagementFactory;
34+
import java.nio.file.Files;
3435
import java.nio.file.NoSuchFileException;
36+
import java.nio.file.Paths;
3537
import java.util.ArrayList;
3638
import java.util.List;
3739
import java.util.ListIterator;
3840
import java.util.Map;
3941
import java.util.Set;
4042

4143
import com.oracle.truffle.llvm.toolchain.launchers.common.Driver;
44+
4245
import org.graalvm.launcher.AbstractLanguageLauncher;
4346
import org.graalvm.nativeimage.ImageInfo;
4447
import org.graalvm.nativeimage.ProcessProperties;
@@ -482,7 +485,18 @@ private void evalNonInteractive(Context context) throws IOException {
482485
src = Source.newBuilder(getLanguageId(), commandString, "<string>").build();
483486
} else {
484487
assert inputFile != null;
485-
src = Source.newBuilder(getLanguageId(), new File(inputFile)).mimeType(MIME_TYPE).build();
488+
String mimeType = "";
489+
try {
490+
mimeType = Files.probeContentType(Paths.get(inputFile));
491+
} catch (IOException e) {
492+
}
493+
File f = new File(inputFile);
494+
if (f.isFile() && (mimeType == null || !mimeType.equals("application/zip"))) {
495+
src = Source.newBuilder(getLanguageId(), f).mimeType(MIME_TYPE).build();
496+
} else {
497+
String runMod = String.format("import sys; sys.path.insert(0, '%s'); import runpy; runpy._run_module_as_main('__main__', False)", inputFile);
498+
src = Source.newBuilder(getLanguageId(), runMod, "<string>").build();
499+
}
486500
}
487501
context.eval(src);
488502
}

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/Python3Core.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,7 @@ private static final String[] initializeCoreFiles() {
249249
"pwd",
250250
"resource",
251251
"_contextvars",
252+
"pip_hook",
252253
"_lzma"));
253254
// must be last
254255
coreFiles.add("final_patches");

0 commit comments

Comments
 (0)