Skip to content

Commit 4742820

Browse files
timfelcosminbasca
authored andcommitted
create module __init__ method
1 parent 7088c9e commit 4742820

File tree

15 files changed

+182
-135
lines changed

15 files changed

+182
-135
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/PythonLanguage.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -380,8 +380,8 @@ protected Iterable<Scope> findTopScopes(PythonContext context) {
380380
ArrayList<Scope> scopes = new ArrayList<>();
381381
if (context.getBuiltins() != null) {
382382
// false during initialization
383-
scopes.add(Scope.newBuilder("__main__", context.getMainModule()).build());
384-
scopes.add(Scope.newBuilder("builtins", scopeFromObject(context.getBuiltins())).build());
383+
scopes.add(Scope.newBuilder(BuiltinNames.__MAIN__, context.getMainModule()).build());
384+
scopes.add(Scope.newBuilder(BuiltinNames.BUILTINS, scopeFromObject(context.getBuiltins())).build());
385385
}
386386
return scopes;
387387
}

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

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,6 @@
4040
import java.util.function.Supplier;
4141
import java.util.logging.Level;
4242

43-
import com.oracle.graal.python.builtins.modules.ResourceModuleBuiltins;
44-
import org.graalvm.nativeimage.ImageInfo;
45-
4643
import com.oracle.graal.python.PythonLanguage;
4744
import com.oracle.graal.python.builtins.modules.ArrayModuleBuiltins;
4845
import com.oracle.graal.python.builtins.modules.AstModuleBuiltins;
@@ -78,6 +75,7 @@
7875
import com.oracle.graal.python.builtins.modules.QueueModuleBuiltins;
7976
import com.oracle.graal.python.builtins.modules.RandomModuleBuiltins;
8077
import com.oracle.graal.python.builtins.modules.ReadlineModuleBuiltins;
78+
import com.oracle.graal.python.builtins.modules.ResourceModuleBuiltins;
8179
import com.oracle.graal.python.builtins.modules.SREModuleBuiltins;
8280
import com.oracle.graal.python.builtins.modules.SelectModuleBuiltins;
8381
import com.oracle.graal.python.builtins.modules.SignalModuleBuiltins;
@@ -163,15 +161,16 @@
163161
import com.oracle.graal.python.builtins.objects.type.TypeBuiltins;
164162
import com.oracle.graal.python.builtins.objects.type.TypeNodes.GetNameNode;
165163
import com.oracle.graal.python.builtins.objects.zipimporter.ZipImporterBuiltins;
164+
import com.oracle.graal.python.nodes.BuiltinNames;
166165
import com.oracle.graal.python.runtime.PythonContext;
167166
import com.oracle.graal.python.runtime.PythonCore;
168167
import com.oracle.graal.python.runtime.PythonParser;
169168
import com.oracle.graal.python.runtime.PythonParser.ParserMode;
170169
import com.oracle.graal.python.runtime.exception.PException;
171170
import com.oracle.graal.python.runtime.object.PythonObjectFactory;
171+
import com.oracle.truffle.api.CallTarget;
172172
import com.oracle.truffle.api.CompilerDirectives.CompilationFinal;
173173
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
174-
import com.oracle.truffle.api.CallTarget;
175174
import com.oracle.truffle.api.RootCallTarget;
176175
import com.oracle.truffle.api.Truffle;
177176
import com.oracle.truffle.api.TruffleFile;
@@ -182,6 +181,8 @@
182181
import com.oracle.truffle.api.source.Source;
183182
import com.oracle.truffle.api.source.SourceSection;
184183

184+
import org.graalvm.nativeimage.ImageInfo;
185+
185186
/**
186187
* The core is intended to the immutable part of the interpreter, including most modules and most
187188
* types.
@@ -428,11 +429,11 @@ private void initializeJavaCore() {
428429
initializeTypes();
429430
populateBuiltins();
430431
publishBuiltinModules();
431-
builtinsModule = builtinModules.get("builtins");
432+
builtinsModule = builtinModules.get(BuiltinNames.BUILTINS);
432433
}
433434

434435
private void initializePythonCore(String coreHome) {
435-
loadFile("builtins", coreHome);
436+
loadFile(BuiltinNames.BUILTINS, coreHome);
436437
for (String s : coreFiles) {
437438
loadFile(s, coreHome);
438439
}

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

Lines changed: 87 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -48,64 +48,64 @@
4848
public enum PythonBuiltinClassType implements LazyPythonClass {
4949

5050
ForeignObject(BuiltinNames.FOREIGN),
51-
Boolean("bool", "builtins"),
51+
Boolean("bool", BuiltinNames.BUILTINS),
5252
GetSetDescriptor("get_set_desc"),
5353
PArray("array", "array"),
5454
PArrayIterator("arrayiterator"),
5555
PIterator("iterator"),
5656
PBuiltinFunction("method_descriptor"),
5757
PBuiltinMethod("builtin_function_or_method"),
58-
PByteArray("bytearray", "builtins"),
59-
PBytes("bytes", "builtins"),
58+
PByteArray("bytearray", BuiltinNames.BUILTINS),
59+
PBytes("bytes", BuiltinNames.BUILTINS),
6060
PCell("cell"),
61-
PComplex("complex", "builtins"),
62-
PDict("dict", "builtins"),
61+
PComplex("complex", BuiltinNames.BUILTINS),
62+
PDict("dict", BuiltinNames.BUILTINS),
6363
PDictKeysView("dict_keys"),
6464
PDictItemsIterator("dict_itemsiterator"),
6565
PDictItemsView("dict_items"),
6666
PDictKeysIterator("dict_keysiterator"),
6767
PDictValuesIterator("dict_valuesiterator"),
6868
PDictValuesView("dict_values"),
6969
PEllipsis("ellipsis"),
70-
PEnumerate("enumerate", "builtins"),
71-
PFloat("float", "builtins"),
70+
PEnumerate("enumerate", BuiltinNames.BUILTINS),
71+
PFloat("float", BuiltinNames.BUILTINS),
7272
PFrame("frame"),
73-
PFrozenSet("frozenset", "builtins"),
73+
PFrozenSet("frozenset", BuiltinNames.BUILTINS),
7474
PFunction("function"),
7575
PGenerator("generator"),
76-
PInt("int", "builtins"),
77-
PList("list", "builtins"),
76+
PInt("int", BuiltinNames.BUILTINS),
77+
PList("list", BuiltinNames.BUILTINS),
7878
PMappingproxy("mappingproxy"),
79-
PMemoryView("memoryview", "builtins"),
79+
PMemoryView("memoryview", BuiltinNames.BUILTINS),
8080
PMethod("method"),
8181
PMMap("mmap", "mmap"),
8282
PNone("NoneType"),
8383
PNotImplemented("NotImplementedType"),
8484
PRandom("Random", "_random"),
85-
PRange("range", "builtins"),
85+
PRange("range", BuiltinNames.BUILTINS),
8686
PReferenceType("ReferenceType", "_weakref"),
8787
PSentinelIterator("callable_iterator"),
8888
PForeignArrayIterator("foreign_iterator"),
89-
PReverseIterator("reversed", "builtins"),
90-
PSet("set", "builtins"),
91-
PSlice("slice", "builtins"),
92-
PString("str", "builtins"),
89+
PReverseIterator("reversed", BuiltinNames.BUILTINS),
90+
PSet("set", BuiltinNames.BUILTINS),
91+
PSlice("slice", BuiltinNames.BUILTINS),
92+
PString("str", BuiltinNames.BUILTINS),
9393
PTraceback("traceback"),
94-
PTuple("tuple", "builtins"),
95-
PythonClass("type", "builtins"),
94+
PTuple("tuple", BuiltinNames.BUILTINS),
95+
PythonClass("type", BuiltinNames.BUILTINS),
9696
PythonModule("module"),
97-
PythonObject("object", "builtins"),
98-
Super("super", "builtins"),
97+
PythonObject("object", BuiltinNames.BUILTINS),
98+
Super("super", BuiltinNames.BUILTINS),
9999
PCode("code"),
100-
PZip("zip", "builtins"),
100+
PZip("zip", BuiltinNames.BUILTINS),
101101
PZipImporter("zipimporter", "zipimport"),
102-
PBuffer("buffer", "builtins"),
102+
PBuffer("buffer", BuiltinNames.BUILTINS),
103103
PThread("start_new_thread", "_thread"),
104104
PLock("LockType", "_thread"),
105105
PRLock("RLock", "_thread"),
106106
PSocket("socket", "_socket"),
107-
PStaticmethod("staticmethod", "builtins"),
108-
PClassmethod("classmethod", "builtins"),
107+
PStaticmethod("staticmethod", BuiltinNames.BUILTINS),
108+
PClassmethod("classmethod", BuiltinNames.BUILTINS),
109109
PScandirIterator("ScandirIterator", "posix"),
110110
PDirEntry("DirEntry", "posix"),
111111
PLZMACompressor("LZMACompressor", "_lzma"),
@@ -114,77 +114,77 @@ public enum PythonBuiltinClassType implements LazyPythonClass {
114114
// Errors and exceptions:
115115

116116
// everything after BaseException is considered to be an exception
117-
PBaseException("BaseException", "builtins"),
118-
SystemExit("SystemExit", "builtins"),
119-
KeyboardInterrupt("KeyboardInterrupt", "builtins"),
120-
GeneratorExit("GeneratorExit", "builtins"),
121-
Exception("Exception", "builtins"),
122-
StopIteration("StopIteration", "builtins"),
123-
ArithmeticError("ArithmeticError", "builtins"),
124-
FloatingPointError("FloatingPointError", "builtins"),
125-
OverflowError("OverflowError", "builtins"),
126-
ZeroDivisionError("ZeroDivisionError", "builtins"),
127-
AssertionError("AssertionError", "builtins"),
128-
AttributeError("AttributeError", "builtins"),
129-
BufferError("BufferError", "builtins"),
130-
EOFError("EOFError", "builtins"),
131-
ImportError("ImportError", "builtins"),
132-
ModuleNotFoundError("ModuleNotFoundError", "builtins"),
133-
LookupError("LookupError", "builtins"),
134-
IndexError("IndexError", "builtins"),
135-
KeyError("KeyError", "builtins"),
136-
MemoryError("MemoryError", "builtins"),
137-
NameError("NameError", "builtins"),
138-
UnboundLocalError("UnboundLocalError", "builtins"),
139-
OSError("OSError", "builtins"),
140-
BlockingIOError("BlockingIOError", "builtins"),
141-
ChildProcessError("ChildProcessError", "builtins"),
142-
ConnectionError("ConnectionError", "builtins"),
143-
BrokenPipeError("BrokenPipeError", "builtins"),
144-
ConnectionAbortedError("ConnectionAbortedError", "builtins"),
145-
ConnectionRefusedError("ConnectionRefusedError", "builtins"),
146-
ConnectionResetError("ConnectionResetError", "builtins"),
147-
FileExistsError("FileExistsError", "builtins"),
148-
FileNotFoundError("FileNotFoundError", "builtins"),
149-
InterruptedError("InterruptedError", "builtins"),
150-
IsADirectoryError("IsADirectoryError", "builtins"),
151-
NotADirectoryError("NotADirectoryError", "builtins"),
152-
PermissionError("PermissionError", "builtins"),
153-
ProcessLookupError("ProcessLookupError", "builtins"),
154-
TimeoutError("TimeoutError", "builtins"),
117+
PBaseException("BaseException", BuiltinNames.BUILTINS),
118+
SystemExit("SystemExit", BuiltinNames.BUILTINS),
119+
KeyboardInterrupt("KeyboardInterrupt", BuiltinNames.BUILTINS),
120+
GeneratorExit("GeneratorExit", BuiltinNames.BUILTINS),
121+
Exception("Exception", BuiltinNames.BUILTINS),
122+
StopIteration("StopIteration", BuiltinNames.BUILTINS),
123+
ArithmeticError("ArithmeticError", BuiltinNames.BUILTINS),
124+
FloatingPointError("FloatingPointError", BuiltinNames.BUILTINS),
125+
OverflowError("OverflowError", BuiltinNames.BUILTINS),
126+
ZeroDivisionError("ZeroDivisionError", BuiltinNames.BUILTINS),
127+
AssertionError("AssertionError", BuiltinNames.BUILTINS),
128+
AttributeError("AttributeError", BuiltinNames.BUILTINS),
129+
BufferError("BufferError", BuiltinNames.BUILTINS),
130+
EOFError("EOFError", BuiltinNames.BUILTINS),
131+
ImportError("ImportError", BuiltinNames.BUILTINS),
132+
ModuleNotFoundError("ModuleNotFoundError", BuiltinNames.BUILTINS),
133+
LookupError("LookupError", BuiltinNames.BUILTINS),
134+
IndexError("IndexError", BuiltinNames.BUILTINS),
135+
KeyError("KeyError", BuiltinNames.BUILTINS),
136+
MemoryError("MemoryError", BuiltinNames.BUILTINS),
137+
NameError("NameError", BuiltinNames.BUILTINS),
138+
UnboundLocalError("UnboundLocalError", BuiltinNames.BUILTINS),
139+
OSError("OSError", BuiltinNames.BUILTINS),
140+
BlockingIOError("BlockingIOError", BuiltinNames.BUILTINS),
141+
ChildProcessError("ChildProcessError", BuiltinNames.BUILTINS),
142+
ConnectionError("ConnectionError", BuiltinNames.BUILTINS),
143+
BrokenPipeError("BrokenPipeError", BuiltinNames.BUILTINS),
144+
ConnectionAbortedError("ConnectionAbortedError", BuiltinNames.BUILTINS),
145+
ConnectionRefusedError("ConnectionRefusedError", BuiltinNames.BUILTINS),
146+
ConnectionResetError("ConnectionResetError", BuiltinNames.BUILTINS),
147+
FileExistsError("FileExistsError", BuiltinNames.BUILTINS),
148+
FileNotFoundError("FileNotFoundError", BuiltinNames.BUILTINS),
149+
InterruptedError("InterruptedError", BuiltinNames.BUILTINS),
150+
IsADirectoryError("IsADirectoryError", BuiltinNames.BUILTINS),
151+
NotADirectoryError("NotADirectoryError", BuiltinNames.BUILTINS),
152+
PermissionError("PermissionError", BuiltinNames.BUILTINS),
153+
ProcessLookupError("ProcessLookupError", BuiltinNames.BUILTINS),
154+
TimeoutError("TimeoutError", BuiltinNames.BUILTINS),
155155
ZipImportError("ZipImportError", "zipimport"),
156156
ZLibError("error", "zlib"),
157157
LZMAError("LZMAError", "_lzma"),
158158

159159
// todo: all OS errors
160160

161-
ReferenceError("ReferenceError", "builtins"),
162-
RuntimeError("RuntimeError", "builtins"),
163-
NotImplementedError("NotImplementedError", "builtins"),
164-
SyntaxError("SyntaxError", "builtins"),
165-
IndentationError("IndentationError", "builtins"),
166-
TabError("TabError", "builtins"),
167-
SystemError("SystemError", "builtins"),
168-
TypeError("TypeError", "builtins"),
169-
ValueError("ValueError", "builtins"),
170-
UnicodeError("UnicodeError", "builtins"),
171-
UnicodeDecodeError("UnicodeDecodeError", "builtins"),
172-
UnicodeEncodeError("UnicodeEncodeError", "builtins"),
173-
UnicodeTranslateError("UnicodeTranslateError", "builtins"),
174-
RecursionError("RecursionError", "builtins"),
161+
ReferenceError("ReferenceError", BuiltinNames.BUILTINS),
162+
RuntimeError("RuntimeError", BuiltinNames.BUILTINS),
163+
NotImplementedError("NotImplementedError", BuiltinNames.BUILTINS),
164+
SyntaxError("SyntaxError", BuiltinNames.BUILTINS),
165+
IndentationError("IndentationError", BuiltinNames.BUILTINS),
166+
TabError("TabError", BuiltinNames.BUILTINS),
167+
SystemError("SystemError", BuiltinNames.BUILTINS),
168+
TypeError("TypeError", BuiltinNames.BUILTINS),
169+
ValueError("ValueError", BuiltinNames.BUILTINS),
170+
UnicodeError("UnicodeError", BuiltinNames.BUILTINS),
171+
UnicodeDecodeError("UnicodeDecodeError", BuiltinNames.BUILTINS),
172+
UnicodeEncodeError("UnicodeEncodeError", BuiltinNames.BUILTINS),
173+
UnicodeTranslateError("UnicodeTranslateError", BuiltinNames.BUILTINS),
174+
RecursionError("RecursionError", BuiltinNames.BUILTINS),
175175

176176
// warnings
177-
Warning("Warning", "builtins"),
178-
BytesWarning("BytesWarning", "builtins"),
179-
DeprecationWarning("DeprecationWarning", "builtins"),
180-
FutureWarning("FutureWarning", "builtins"),
181-
ImportWarning("ImportWarning", "builtins"),
182-
PendingDeprecationWarning("PendingDeprecationWarning", "builtins"),
183-
ResourceWarning("ResourceWarning", "builtins"),
184-
RuntimeWarning("RuntimeWarning", "builtins"),
185-
SyntaxWarning("SyntaxWarning", "builtins"),
186-
UnicodeWarning("UnicodeWarning", "builtins"),
187-
UserWarning("UserWarning", "builtins");
177+
Warning("Warning", BuiltinNames.BUILTINS),
178+
BytesWarning("BytesWarning", BuiltinNames.BUILTINS),
179+
DeprecationWarning("DeprecationWarning", BuiltinNames.BUILTINS),
180+
FutureWarning("FutureWarning", BuiltinNames.BUILTINS),
181+
ImportWarning("ImportWarning", BuiltinNames.BUILTINS),
182+
PendingDeprecationWarning("PendingDeprecationWarning", BuiltinNames.BUILTINS),
183+
ResourceWarning("ResourceWarning", BuiltinNames.BUILTINS),
184+
RuntimeWarning("RuntimeWarning", BuiltinNames.BUILTINS),
185+
SyntaxWarning("SyntaxWarning", BuiltinNames.BUILTINS),
186+
UnicodeWarning("UnicodeWarning", BuiltinNames.BUILTINS),
187+
UserWarning("UserWarning", BuiltinNames.BUILTINS);
188188

189189
private final String name;
190190
private final Shape instanceShape;

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

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@
5454
import static com.oracle.graal.python.nodes.SpecialAttributeNames.__BASICSIZE__;
5555
import static com.oracle.graal.python.nodes.SpecialAttributeNames.__DICTOFFSET__;
5656
import static com.oracle.graal.python.nodes.SpecialAttributeNames.__DICT__;
57-
import static com.oracle.graal.python.nodes.SpecialAttributeNames.__FILE__;
5857
import static com.oracle.graal.python.nodes.SpecialAttributeNames.__ITEMSIZE__;
5958
import static com.oracle.graal.python.nodes.SpecialAttributeNames.__MODULE__;
6059
import static com.oracle.graal.python.nodes.SpecialAttributeNames.__NAME__;
@@ -132,6 +131,7 @@
132131
import com.oracle.graal.python.builtins.objects.type.TypeNodes;
133132
import com.oracle.graal.python.builtins.objects.type.TypeNodes.GetMroNode;
134133
import com.oracle.graal.python.builtins.objects.type.TypeNodes.GetNameNode;
134+
import com.oracle.graal.python.nodes.BuiltinNames;
135135
import com.oracle.graal.python.nodes.PGuards;
136136
import com.oracle.graal.python.nodes.PNodeWithGlobalState.DefaultContextManager;
137137
import com.oracle.graal.python.nodes.PRaiseNode;
@@ -142,7 +142,6 @@
142142
import com.oracle.graal.python.nodes.attributes.LookupInheritedAttributeNode;
143143
import com.oracle.graal.python.nodes.attributes.ReadAttributeFromObjectNode;
144144
import com.oracle.graal.python.nodes.attributes.SetAttributeNode;
145-
import com.oracle.graal.python.nodes.attributes.WriteAttributeToObjectNode;
146145
import com.oracle.graal.python.nodes.builtins.TupleNodes;
147146
import com.oracle.graal.python.nodes.call.CallNode;
148147
import com.oracle.graal.python.nodes.call.special.CallUnaryMethodNode;
@@ -199,7 +198,7 @@
199198
import com.oracle.truffle.api.profiles.BranchProfile;
200199
import com.oracle.truffle.api.profiles.ConditionProfile;
201200

202-
@CoreFunctions(defineModule = "builtins")
201+
@CoreFunctions(defineModule = BuiltinNames.BUILTINS)
203202
public final class BuiltinConstructors extends PythonBuiltins {
204203

205204
@Override
@@ -2391,22 +2390,26 @@ private CastToStringNode ensureCastToStringNode() {
23912390
}
23922391
}
23932392

2394-
@Builtin(name = MODULE, minNumOfPositionalArgs = 2, maxNumOfPositionalArgs = 3, constructsClass = PythonBuiltinClassType.PythonModule, isPublic = false)
2393+
@Builtin(name = MODULE, minNumOfPositionalArgs = 1, takesVarArgs = true, takesVarKeywordArgs = true, constructsClass = PythonBuiltinClassType.PythonObject, isPublic = false)
23952394
@GenerateNodeFactory
23962395
@TypeSystemReference(PythonArithmeticTypes.class)
23972396
public abstract static class ModuleNode extends PythonBuiltinNode {
2398-
@Child private WriteAttributeToObjectNode writeFile = WriteAttributeToObjectNode.create();
2399-
24002397
@Specialization
2401-
public PythonModule module(LazyPythonClass cls, String name, @SuppressWarnings("unused") PNone path) {
2402-
return factory().createPythonModule(cls, name);
2398+
@SuppressWarnings("unused")
2399+
Object doType(PythonBuiltinClass self, Object[] varargs, PKeyword[] kwargs) {
2400+
return factory().createPythonModule(self.getType());
2401+
}
2402+
2403+
@Specialization(guards = "!isPythonBuiltinClass(self)")
2404+
@SuppressWarnings("unused")
2405+
Object doManaged(PythonManagedClass self, Object[] varargs, PKeyword[] kwargs) {
2406+
return factory().createPythonModule(self);
24032407
}
24042408

24052409
@Specialization
2406-
public PythonModule module(LazyPythonClass cls, String name, String path) {
2407-
PythonModule module = factory().createPythonModule(cls, name);
2408-
writeFile.execute(module, __FILE__, path);
2409-
return module;
2410+
@SuppressWarnings("unused")
2411+
Object doType(PythonBuiltinClassType self, Object[] varargs, PKeyword[] kwargs) {
2412+
return factory().createPythonModule(self);
24102413
}
24112414
}
24122415

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@
200200
import com.oracle.truffle.api.profiles.ConditionProfile;
201201
import com.oracle.truffle.api.source.Source;
202202

203-
@CoreFunctions(defineModule = "builtins")
203+
@CoreFunctions(defineModule = BuiltinNames.BUILTINS)
204204
public final class BuiltinFunctions extends PythonBuiltins {
205205

206206
@Override
@@ -211,7 +211,7 @@ protected List<com.oracle.truffle.api.dsl.NodeFactory<? extends PythonBuiltinBas
211211
@Override
212212
public void postInitialize(PythonCore core) {
213213
super.postInitialize(core);
214-
PythonModule builtinsModule = core.lookupBuiltinModule("builtins");
214+
PythonModule builtinsModule = core.lookupBuiltinModule(BuiltinNames.BUILTINS);
215215
builtinsModule.setAttribute(__DEBUG__, !PythonOptions.getOption(core.getContext(), PythonOptions.PythonOptimizeFlag));
216216
}
217217

0 commit comments

Comments
 (0)