Skip to content

Commit 2f8fae4

Browse files
committed
fix subtype checking for io.UnsupportedOperation by moving it to the builtin module
1 parent 8a812d5 commit 2f8fae4

File tree

4 files changed

+11
-22
lines changed

4 files changed

+11
-22
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ public enum PythonBuiltinClassType implements TruffleObject {
257257
UnicodeTranslateError("UnicodeTranslateError", BUILTINS, Flags.EXCEPTION),
258258
RecursionError("RecursionError", BUILTINS, Flags.EXCEPTION),
259259

260-
IOUnsupportedOperation("UnsupportedOperation", "_io", Flags.EXCEPTION),
260+
IOUnsupportedOperation("UnsupportedOperation", "io", Flags.EXCEPTION),
261261

262262
// warnings
263263
Warning("Warning", BUILTINS, Flags.EXCEPTION),

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/io/IOModuleBuiltins.java

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@
4141
package com.oracle.graal.python.builtins.modules.io;
4242

4343
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.IOUnsupportedOperation;
44+
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.BlockingIOError;
45+
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.OSError;
46+
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.ValueError;
4447
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.PBufferedRandom;
4548
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.PBufferedReader;
4649
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.PBufferedWriter;
@@ -52,9 +55,8 @@
5255
import com.oracle.graal.python.builtins.Builtin;
5356
import com.oracle.graal.python.builtins.CoreFunctions;
5457
import com.oracle.graal.python.builtins.PythonBuiltins;
55-
import com.oracle.graal.python.builtins.objects.module.PythonModule;
5658
import com.oracle.graal.python.builtins.objects.object.PythonObject;
57-
import com.oracle.graal.python.builtins.objects.type.PythonAbstractClass;
59+
import com.oracle.graal.python.builtins.objects.type.PythonBuiltinClass;
5860
import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode;
5961
import com.oracle.graal.python.nodes.function.PythonBuiltinNode;
6062
import com.oracle.graal.python.runtime.PythonCore;
@@ -75,17 +77,10 @@ protected List<? extends NodeFactory<? extends PythonBuiltinBaseNode>> getNodeFa
7577
public void initialize(PythonCore core) {
7678
super.initialize(core);
7779
builtinConstants.put("DEFAULT_BUFFER_SIZE", DEFAULT_BUFFER_SIZE);
78-
}
79-
80-
@Override
81-
public void postInitialize(PythonCore core) {
82-
super.postInitialize(core);
83-
/*
84-
* This is temporary fix and will be removed once _io patches are removed.
85-
*/
86-
PythonModule ioModule = core.lookupBuiltinModule("_io");
87-
PythonAbstractClass unspportedOp = (PythonAbstractClass) ioModule.getAttribute("UnsupportedOperation");
88-
core.lookupType(IOUnsupportedOperation).setSuperClass(unspportedOp);
80+
PythonBuiltinClass unsupportedOpExcType = core.lookupType(IOUnsupportedOperation);
81+
unsupportedOpExcType.setSuperClass(core.lookupType(OSError), core.lookupType(ValueError));
82+
builtinConstants.put("UnsupportedOperation", unsupportedOpExcType);
83+
builtinConstants.put("BlockingIOError", core.lookupType(BlockingIOError));
8984
}
9085

9186
@Builtin(name = "_IOBase", minNumOfPositionalArgs = 1, takesVarArgs = true, takesVarKeywordArgs = true, constructsClass = PIOBase)

graalpython/lib-graalpython/_io.py

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,6 @@
2929
SEEK_CUR = 1
3030
SEEK_END = 2
3131

32-
class BlockingIOError(OSError):
33-
pass
34-
35-
36-
class UnsupportedOperation(OSError, ValueError):
37-
pass
38-
3932

4033
class StdPrinter:
4134
def __init__(self, file_io):

graalpython/lib-python/3/io.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,8 @@
5959
OpenWrapper = _io.open # for compatibility with _pyio
6060

6161
# Pretend this exception was created here.
62-
UnsupportedOperation.__module__ = "io"
62+
# Truffle change: we do this directly on the builtin type
63+
# UnsupportedOperation.__module__ = "io"
6364

6465
# for seek()
6566
SEEK_SET = 0

0 commit comments

Comments
 (0)