Skip to content

Fix _csv reader and writer types being named Reader and Writer - #1270

Open
jseop-lim wants to merge 1 commit into
oracle:masterfrom
jseop-lim:fix/csv-reader-type-name
Open

jseop-lim wants to merge 1 commit into
oracle:masterfrom
jseop-lim:fix/csv-reader-type-name

Conversation

@jseop-lim

Copy link
Copy Markdown
Contributor

Description

Fixes #1259

The types of csv.reader() and csv.writer() objects were named after their module attributes, so they reported themselves as _csv.Reader and _csv.Writer. CPython names them _csv.reader and _csv.writer (_csv.c#L1055, #L1508) and adds them to the module as Reader and Writer (#L1752-L1762).

AS-IS

>>> type(csv.reader([]))
<class '_csv.Reader'>
>>> type(csv.writer(io.StringIO()))
<class '_csv.Writer'>

TO-BE

>>> type(csv.reader([]))
<class '_csv.reader'>
>>> type(csv.writer(io.StringIO()))
<class '_csv.writer'>
>>> type(csv.reader([])) is _csv.Reader
True

(matching CPython)

Changes

  • Name PythonBuiltinClassType.CSVReader and CSVWriter reader and writer, with moduleName("_csv") instead of publishInModule("_csv"), which would shadow the reader() and writer() functions.
  • Add the Reader and Writer aliases in CSVModuleBuiltins.initialize, as SocketModuleBuiltins does for SocketType.
  • Add test_reader_writer_type_names to tests/test_csv.py.

Testing

mx python-jvm on darwin-aarch64, then mx graalpytest test_csv.py (6 passed). test.test_csv from lib-python passes (117 passed, same as master). The new test fails on the unpatched build. Type names, __module__, alias identity and dir(_csv) now print the same as CPython 3.13.14.

The types were registered under the names Reader and Writer, so
type(csv.reader([])) printed as <class '_csv.Reader'>. In CPython the
types are named reader and writer and are exposed in _csv under the
aliases Reader and Writer. Rename them, keep the module name, and add
the aliases.

Signed-off-by: Jeongseop Lim <jeongseop_lim@korea.ac.kr>
@oracle-contributor-agreement oracle-contributor-agreement Bot added the OCA Verified All contributors have signed the Oracle Contributor Agreement. label Oct 31, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

OCA Verified All contributors have signed the Oracle Contributor Agreement.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: _csv.Reader and _csv.Writer are named Reader and Writer instead of reader and writer

1 participant