Skip to content

Commit c7184e4

Browse files
Use Argument Clinic for getters in the _io module
The getters of _WindowsConsoleIO are left as they are, because Argument Clinic fails for an accessor in a preprocessor conditional block.
1 parent e650b49 commit c7184e4

10 files changed

Lines changed: 283 additions & 40 deletions

File tree

Modules/_io/bufferedio.c

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2505,10 +2505,15 @@ _io_BufferedRWPair_isatty_impl(rwpair *self)
25052505
return _forward_call(self->reader, &_Py_ID(isatty), NULL);
25062506
}
25072507

2508+
/*[clinic input]
2509+
@getter
2510+
_io.BufferedRWPair.closed
2511+
[clinic start generated code]*/
2512+
25082513
static PyObject *
2509-
bufferedrwpair_closed_get(PyObject *op, void *Py_UNUSED(dummy))
2514+
_io_BufferedRWPair_closed_get_impl(rwpair *self)
2515+
/*[clinic end generated code: output=4117400c74766f21 input=8248430ac54e5b25]*/
25102516
{
2511-
rwpair *self = rwpair_CAST(op);
25122517
if (self->writer == NULL) {
25132518
PyErr_SetString(PyExc_RuntimeError,
25142519
"the BufferedRWPair object is being garbage-collected");
@@ -2748,7 +2753,7 @@ static PyMemberDef bufferedrwpair_members[] = {
27482753
};
27492754

27502755
static PyGetSetDef bufferedrwpair_getset[] = {
2751-
{"closed", bufferedrwpair_closed_get, NULL, NULL},
2756+
_IO_BUFFEREDRWPAIR_CLOSED_GETSETDEF
27522757
{NULL}
27532758
};
27542759

Modules/_io/bytesio.c

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -295,20 +295,19 @@ write_bytes_lock_held(bytesio *self, PyObject *b)
295295
return len;
296296
}
297297

298+
/*[clinic input]
299+
@critical_section
300+
@getter
301+
_io.BytesIO.closed
302+
303+
True if the file is closed.
304+
[clinic start generated code]*/
305+
298306
static PyObject *
299-
bytesio_get_closed(PyObject *op, void *Py_UNUSED(closure))
307+
_io_BytesIO_closed_get_impl(bytesio *self)
308+
/*[clinic end generated code: output=3210245d480df846 input=53d116fdfe4e7580]*/
300309
{
301-
PyObject *ret;
302-
bytesio *self = bytesio_CAST(op);
303-
Py_BEGIN_CRITICAL_SECTION(self);
304-
if (self->buf == NULL) {
305-
ret = Py_True;
306-
}
307-
else {
308-
ret = Py_False;
309-
}
310-
Py_END_CRITICAL_SECTION();
311-
return ret;
310+
return PyBool_FromLong(self->buf == NULL);
312311
}
313312

314313
/*[clinic input]
@@ -1194,8 +1193,7 @@ bytesio_clear(PyObject *op)
11941193
#undef clinic_state
11951194

11961195
static PyGetSetDef bytesio_getsetlist[] = {
1197-
{"closed", bytesio_get_closed, NULL,
1198-
"True if the file is closed."},
1196+
_IO_BYTESIO_CLOSED_GETSETDEF
11991197
{NULL}, /* sentinel */
12001198
};
12011199

Modules/_io/clinic/bufferedio.c.h

Lines changed: 20 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Modules/_io/clinic/bytesio.c.h

Lines changed: 33 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Modules/_io/clinic/fileio.c.h

Lines changed: 105 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Modules/_io/clinic/iobase.c.h

Lines changed: 27 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Modules/_io/clinic/textio.c.h

Lines changed: 20 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)