Skip to content

Commit 38c5b39

Browse files
committed
minimal support for mbcs_(en|de)code
1 parent bbe1b4f commit 38c5b39

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

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

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

4343
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.NotImplementedError;
44+
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.RuntimeWarning;
4445
import static com.oracle.graal.python.builtins.modules.codecs.ErrorHandlers.appendXmlCharRefReplacement;
4546
import static com.oracle.graal.python.builtins.modules.codecs.ErrorHandlers.getXmlCharRefReplacementLength;
4647
import static com.oracle.graal.python.builtins.objects.bytes.BytesUtils.HEXDIGITS;
@@ -50,6 +51,7 @@
5051
import static com.oracle.graal.python.nodes.BuiltinNames.J_ENCODE;
5152
import static com.oracle.graal.python.nodes.BuiltinNames.J__CODECS;
5253
import static com.oracle.graal.python.nodes.BuiltinNames.T_ASCII;
54+
import static com.oracle.graal.python.nodes.BuiltinNames.T_CP437;
5355
import static com.oracle.graal.python.nodes.BuiltinNames.T__CODECS_TRUFFLE;
5456
import static com.oracle.graal.python.nodes.ErrorMessages.ARG_MUST_BE_CALLABLE;
5557
import static com.oracle.graal.python.nodes.ErrorMessages.BYTESLIKE_OBJ_REQUIRED;
@@ -105,6 +107,7 @@
105107
import com.oracle.graal.python.builtins.modules.codecs.CodecsRegistry;
106108
import com.oracle.graal.python.builtins.modules.codecs.CodecsRegistry.PyCodecLookupErrorNode;
107109
import com.oracle.graal.python.builtins.modules.codecs.CodecsRegistry.PyCodecRegisterErrorNode;
110+
import com.oracle.graal.python.builtins.modules.WarningsModuleBuiltins.WarnNode;
108111
import com.oracle.graal.python.builtins.objects.PNone;
109112
import com.oracle.graal.python.builtins.objects.buffer.PythonBufferAccessLibrary;
110113
import com.oracle.graal.python.builtins.objects.buffer.PythonBufferAcquireLibrary;
@@ -1532,10 +1535,12 @@ Object encode(Object obj, Object errors) {
15321535
@Builtin(name = "mbcs_encode", minNumOfPositionalArgs = 1, parameterNames = {"obj", "errors"})
15331536
@GenerateNodeFactory
15341537
abstract static class MBCSEncodeNode extends PythonBinaryBuiltinNode {
1535-
@SuppressWarnings("unused")
15361538
@Specialization
1537-
Object encode(Object obj, Object errors) {
1538-
throw raise(NotImplementedError, toTruffleStringUncached("mbcs_encode"));
1539+
Object encode(VirtualFrame frame, Object obj, Object errors,
1540+
@Cached CodecsEncodeNode encode,
1541+
@Cached WarnNode warnNode) {
1542+
warnNode.execute(frame, null, RuntimeWarning, toTruffleStringUncached("mbcs_encode assumes cp437"), 1);
1543+
return encode.execute(frame, obj, T_CP437, errors);
15391544
}
15401545
}
15411546

@@ -1544,8 +1549,11 @@ Object encode(Object obj, Object errors) {
15441549
abstract static class MBCSDecodeNode extends PythonTernaryBuiltinNode {
15451550
@SuppressWarnings("unused")
15461551
@Specialization
1547-
Object decode(Object obj, Object errors, Object ffinal) {
1548-
throw raise(NotImplementedError, toTruffleStringUncached("mbcs_decode"));
1552+
Object decode(VirtualFrame frame, Object obj, Object errors, Object ffinal,
1553+
@Cached CodecsDecodeNode decode,
1554+
@Cached WarnNode warnNode) {
1555+
warnNode.execute(frame, null, RuntimeWarning, toTruffleStringUncached("mbcs_decode assumes cp437"), 1);
1556+
return decode.execute(frame, obj, T_CP437, errors, ffinal);
15491557
}
15501558
}
15511559

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/nodes/BuiltinNames.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,8 @@ public abstract class BuiltinNames {
167167
public static final String J_ASCII = "ascii";
168168
public static final TruffleString T_ASCII = tsLiteral(J_ASCII);
169169

170+
public static final TruffleString T_CP437 = tsLiteral("cp437");
171+
170172
public static final String J_ENUMERATE = "enumerate";
171173

172174
public static final String J_OCT = "oct";

0 commit comments

Comments
 (0)