Skip to content

Commit 8ba0cad

Browse files
committed
add select.select. We can always return for now, because we only support blocking File I/O
1 parent c3f181b commit 8ba0cad

File tree

4 files changed

+36
-8
lines changed

4 files changed

+36
-8
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/SelectModuleBuiltins.java

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,18 +40,36 @@
4040
*/
4141
package com.oracle.graal.python.builtins.modules;
4242

43-
import java.util.ArrayList;
43+
import java.io.PrintStream;
4444
import java.util.List;
4545

46+
import com.oracle.graal.python.builtins.Builtin;
4647
import com.oracle.graal.python.builtins.CoreFunctions;
4748
import com.oracle.graal.python.builtins.PythonBuiltins;
49+
import com.oracle.graal.python.builtins.objects.tuple.PTuple;
4850
import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode;
51+
import com.oracle.graal.python.nodes.function.PythonBuiltinNode;
52+
import com.oracle.graal.python.runtime.PythonOptions;
53+
import com.oracle.truffle.api.dsl.GenerateNodeFactory;
4954
import com.oracle.truffle.api.dsl.NodeFactory;
55+
import com.oracle.truffle.api.dsl.Specialization;
5056

5157
@CoreFunctions(defineModule = "select")
5258
public class SelectModuleBuiltins extends PythonBuiltins {
5359
@Override
5460
protected List<? extends NodeFactory<? extends PythonBuiltinBaseNode>> getNodeFactories() {
55-
return new ArrayList<>();
61+
return SelectModuleBuiltinsFactory.getFactories();
62+
}
63+
64+
@Builtin(name = "select", fixedNumOfPositionalArgs = 3, parameterNames = {"rlist", "wlist", "xlist"}, keywordArguments = {"timeout"})
65+
@GenerateNodeFactory
66+
static abstract class SelectNode extends PythonBuiltinNode {
67+
@Specialization
68+
PTuple select(Object rlist, Object wlist, Object xlist, @SuppressWarnings("unused") Object timeout) {
69+
if (PythonOptions.getFlag(getContext(), PythonOptions.VerboseFlag)) {
70+
new PrintStream(getContext().getEnv().err()).println("select() will always return immediately, we only support blocking I/O for now");
71+
}
72+
return factory().createTuple(new Object[]{rlist, wlist, xlist});
73+
}
5674
}
5775
}

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/function/AbstractFunctionBuiltins.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,9 @@ private static Object getSignature(boolean enclosingType, Arity arity) {
305305
boolean takesVarArgs = arity.takesVarArgs();
306306
boolean takesVarKeywordArgs = arity.takesVarKeywordArgs();
307307

308+
String[] parameterIds = arity.getParameterIds();
309+
int paramIdx = 0;
310+
308311
StringBuilder sb = new StringBuilder();
309312
char argName = 'a';
310313
sb.append('(');
@@ -315,7 +318,11 @@ private static Object getSignature(boolean enclosingType, Arity arity) {
315318
sb.append("self");
316319
}
317320
for (int i = 1; i < minArgs; i++) {
318-
sb.append(", ").append(argName++);
321+
if (paramIdx >= parameterIds.length) {
322+
sb.append(", ").append(argName++);
323+
} else {
324+
sb.append(", ").append(parameterIds[paramIdx++]);
325+
}
319326
}
320327
}
321328
if (minArgs > 0) {

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/runtime/PythonOptions.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,14 @@ public static int getIntOption(PythonContext context, OptionKey<Integer> key) {
133133
return context.getOptions().get(key);
134134
}
135135

136+
@TruffleBoundary
137+
public static boolean getFlag(PythonContext context, OptionKey<Boolean> key) {
138+
if (context == null) {
139+
return key.getDefaultValue();
140+
}
141+
return context.getOptions().get(key);
142+
}
143+
136144
public static int getCallSiteInlineCacheMaxDepth() {
137145
return getOption(PythonLanguage.getContextRef().get(), CallSiteInlineCacheMaxDepth);
138146
}

graalpython/lib-graalpython/__builtins_patches__.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -74,11 +74,6 @@ def open(*args, **kwargs):
7474
setattr(builtins, 'open', open)
7575

7676

77-
78-
79-
# platform
80-
sys.modules["select"].select = lambda *args: print("select", args)
81-
8277
# in setuptools' pkg_resources/__init__.py
8378
sys.modules["zipimport"] = type(sys)("zipimport")
8479
sys.modules["zipimport"].zipimporter = None

0 commit comments

Comments
 (0)