diff --git a/graalpython/com.oracle.graal.python.test/src/tests/test_csv.py b/graalpython/com.oracle.graal.python.test/src/tests/test_csv.py index cc226c7679..0ab59379f3 100644 --- a/graalpython/com.oracle.graal.python.test/src/tests/test_csv.py +++ b/graalpython/com.oracle.graal.python.test/src/tests/test_csv.py @@ -46,6 +46,15 @@ class TestUnicodeCharacters(unittest.TestCase): def test_builtin_type_as_dialect(self): self.assertIsInstance(csv.reader(re.ASCII, int), type(csv.reader([]))) + def test_reader_writer_type_names(self): + import _csv + self.assertIs(type(csv.reader([])), _csv.Reader) + self.assertEqual(_csv.Reader.__name__, 'reader') + self.assertEqual(_csv.Reader.__module__, '_csv') + with TemporaryFile("w") as fileobj: + self.assertIs(type(csv.writer(fileobj)), _csv.Writer) + self.assertEqual(_csv.Writer.__name__, 'writer') + def test_read_utf_32_delimiter(self): test_data = ['a\U0001F642b'] reader = csv.reader(test_data, delimiter="\U0001F642") diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/PythonBuiltinClassType.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/PythonBuiltinClassType.java index 6585f85507..e185eec3cb 100644 --- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/PythonBuiltinClassType.java +++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/PythonBuiltinClassType.java @@ -1314,8 +1314,8 @@ def takewhile(predicate, iterable): // csv CSVDialect("Dialect", PythonObject, newBuilder().publishInModule("_csv").basetype().slots(CSVDialectBuiltins.SLOTS)), - CSVReader("Reader", PythonObject, newBuilder().publishInModule("_csv").basetype().disallowInstantiation().slots(CSVReaderBuiltins.SLOTS)), - CSVWriter("Writer", PythonObject, newBuilder().publishInModule("_csv").basetype().disallowInstantiation()), + CSVReader("reader", PythonObject, newBuilder().moduleName("_csv").basetype().disallowInstantiation().slots(CSVReaderBuiltins.SLOTS)), + CSVWriter("writer", PythonObject, newBuilder().moduleName("_csv").basetype().disallowInstantiation()), // codecs PEncodingMap("EncodingMap", PythonObject, newBuilder().disallowInstantiation()), diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/csv/CSVModuleBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/csv/CSVModuleBuiltins.java index 1e0513e8d5..f933d8c448 100644 --- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/csv/CSVModuleBuiltins.java +++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/csv/CSVModuleBuiltins.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, 2025, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2021, 2026, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * The Universal Permissive License (UPL), Version 1.0 @@ -121,6 +121,8 @@ public void initialize(Python3Core core) { addBuiltinConstant("QUOTE_STRINGS", QUOTE_STRINGS.ordinal()); addBuiltinConstant("QUOTE_NOTNULL", QUOTE_NOTNULL.ordinal()); addBuiltinConstant(T__DIALECTS, PFactory.createDict(core.getLanguage())); + addBuiltinConstant("Reader", PythonBuiltinClassType.CSVReader); + addBuiltinConstant("Writer", PythonBuiltinClassType.CSVWriter); super.initialize(core); }