1/*[clinic input]
2preserve
3[clinic start generated code]*/
4
5PyDoc_STRVAR(_io_IncrementalNewlineDecoder___init____doc__,
6"IncrementalNewlineDecoder(decoder, translate, errors=\'strict\')\n"
7"--\n"
8"\n"
9"Codec used when reading a file in universal newlines mode.\n"
10"\n"
11"It wraps another incremental decoder, translating \\r\\n and \\r into \\n.\n"
12"It also records the types of newlines encountered.  When used with\n"
13"translate=False, it ensures that the newline sequence is returned in\n"
14"one piece. When used with decoder=None, it expects unicode strings as\n"
15"decode input and translates newlines without first invoking an external\n"
16"decoder.");
17
18static int
19_io_IncrementalNewlineDecoder___init___impl(nldecoder_object *self,
20                                            PyObject *decoder, int translate,
21                                            PyObject *errors);
22
23static int
24_io_IncrementalNewlineDecoder___init__(PyObject *self, PyObject *args, PyObject *kwargs)
25{
26    int return_value = -1;
27    static const char * const _keywords[] = {"decoder", "translate", "errors", NULL};
28    static _PyArg_Parser _parser = {NULL, _keywords, "IncrementalNewlineDecoder", 0};
29    PyObject *argsbuf[3];
30    PyObject * const *fastargs;
31    Py_ssize_t nargs = PyTuple_GET_SIZE(args);
32    Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 2;
33    PyObject *decoder;
34    int translate;
35    PyObject *errors = NULL;
36
37    fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 2, 3, 0, argsbuf);
38    if (!fastargs) {
39        goto exit;
40    }
41    decoder = fastargs[0];
42    translate = _PyLong_AsInt(fastargs[1]);
43    if (translate == -1 && PyErr_Occurred()) {
44        goto exit;
45    }
46    if (!noptargs) {
47        goto skip_optional_pos;
48    }
49    errors = fastargs[2];
50skip_optional_pos:
51    return_value = _io_IncrementalNewlineDecoder___init___impl((nldecoder_object *)self, decoder, translate, errors);
52
53exit:
54    return return_value;
55}
56
57PyDoc_STRVAR(_io_IncrementalNewlineDecoder_decode__doc__,
58"decode($self, /, input, final=False)\n"
59"--\n"
60"\n");
61
62#define _IO_INCREMENTALNEWLINEDECODER_DECODE_METHODDEF    \
63    {"decode", _PyCFunction_CAST(_io_IncrementalNewlineDecoder_decode), METH_FASTCALL|METH_KEYWORDS, _io_IncrementalNewlineDecoder_decode__doc__},
64
65static PyObject *
66_io_IncrementalNewlineDecoder_decode_impl(nldecoder_object *self,
67                                          PyObject *input, int final);
68
69static PyObject *
70_io_IncrementalNewlineDecoder_decode(nldecoder_object *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
71{
72    PyObject *return_value = NULL;
73    static const char * const _keywords[] = {"input", "final", NULL};
74    static _PyArg_Parser _parser = {NULL, _keywords, "decode", 0};
75    PyObject *argsbuf[2];
76    Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
77    PyObject *input;
78    int final = 0;
79
80    args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 2, 0, argsbuf);
81    if (!args) {
82        goto exit;
83    }
84    input = args[0];
85    if (!noptargs) {
86        goto skip_optional_pos;
87    }
88    final = _PyLong_AsInt(args[1]);
89    if (final == -1 && PyErr_Occurred()) {
90        goto exit;
91    }
92skip_optional_pos:
93    return_value = _io_IncrementalNewlineDecoder_decode_impl(self, input, final);
94
95exit:
96    return return_value;
97}
98
99PyDoc_STRVAR(_io_IncrementalNewlineDecoder_getstate__doc__,
100"getstate($self, /)\n"
101"--\n"
102"\n");
103
104#define _IO_INCREMENTALNEWLINEDECODER_GETSTATE_METHODDEF    \
105    {"getstate", (PyCFunction)_io_IncrementalNewlineDecoder_getstate, METH_NOARGS, _io_IncrementalNewlineDecoder_getstate__doc__},
106
107static PyObject *
108_io_IncrementalNewlineDecoder_getstate_impl(nldecoder_object *self);
109
110static PyObject *
111_io_IncrementalNewlineDecoder_getstate(nldecoder_object *self, PyObject *Py_UNUSED(ignored))
112{
113    return _io_IncrementalNewlineDecoder_getstate_impl(self);
114}
115
116PyDoc_STRVAR(_io_IncrementalNewlineDecoder_setstate__doc__,
117"setstate($self, state, /)\n"
118"--\n"
119"\n");
120
121#define _IO_INCREMENTALNEWLINEDECODER_SETSTATE_METHODDEF    \
122    {"setstate", (PyCFunction)_io_IncrementalNewlineDecoder_setstate, METH_O, _io_IncrementalNewlineDecoder_setstate__doc__},
123
124PyDoc_STRVAR(_io_IncrementalNewlineDecoder_reset__doc__,
125"reset($self, /)\n"
126"--\n"
127"\n");
128
129#define _IO_INCREMENTALNEWLINEDECODER_RESET_METHODDEF    \
130    {"reset", (PyCFunction)_io_IncrementalNewlineDecoder_reset, METH_NOARGS, _io_IncrementalNewlineDecoder_reset__doc__},
131
132static PyObject *
133_io_IncrementalNewlineDecoder_reset_impl(nldecoder_object *self);
134
135static PyObject *
136_io_IncrementalNewlineDecoder_reset(nldecoder_object *self, PyObject *Py_UNUSED(ignored))
137{
138    return _io_IncrementalNewlineDecoder_reset_impl(self);
139}
140
141PyDoc_STRVAR(_io_TextIOWrapper___init____doc__,
142"TextIOWrapper(buffer, encoding=None, errors=None, newline=None,\n"
143"              line_buffering=False, write_through=False)\n"
144"--\n"
145"\n"
146"Character and line based layer over a BufferedIOBase object, buffer.\n"
147"\n"
148"encoding gives the name of the encoding that the stream will be\n"
149"decoded or encoded with. It defaults to locale.getencoding().\n"
150"\n"
151"errors determines the strictness of encoding and decoding (see\n"
152"help(codecs.Codec) or the documentation for codecs.register) and\n"
153"defaults to \"strict\".\n"
154"\n"
155"newline controls how line endings are handled. It can be None, \'\',\n"
156"\'\\n\', \'\\r\', and \'\\r\\n\'.  It works as follows:\n"
157"\n"
158"* On input, if newline is None, universal newlines mode is\n"
159"  enabled. Lines in the input can end in \'\\n\', \'\\r\', or \'\\r\\n\', and\n"
160"  these are translated into \'\\n\' before being returned to the\n"
161"  caller. If it is \'\', universal newline mode is enabled, but line\n"
162"  endings are returned to the caller untranslated. If it has any of\n"
163"  the other legal values, input lines are only terminated by the given\n"
164"  string, and the line ending is returned to the caller untranslated.\n"
165"\n"
166"* On output, if newline is None, any \'\\n\' characters written are\n"
167"  translated to the system default line separator, os.linesep. If\n"
168"  newline is \'\' or \'\\n\', no translation takes place. If newline is any\n"
169"  of the other legal values, any \'\\n\' characters written are translated\n"
170"  to the given string.\n"
171"\n"
172"If line_buffering is True, a call to flush is implied when a call to\n"
173"write contains a newline character.");
174
175static int
176_io_TextIOWrapper___init___impl(textio *self, PyObject *buffer,
177                                const char *encoding, PyObject *errors,
178                                const char *newline, int line_buffering,
179                                int write_through);
180
181static int
182_io_TextIOWrapper___init__(PyObject *self, PyObject *args, PyObject *kwargs)
183{
184    int return_value = -1;
185    static const char * const _keywords[] = {"buffer", "encoding", "errors", "newline", "line_buffering", "write_through", NULL};
186    static _PyArg_Parser _parser = {NULL, _keywords, "TextIOWrapper", 0};
187    PyObject *argsbuf[6];
188    PyObject * const *fastargs;
189    Py_ssize_t nargs = PyTuple_GET_SIZE(args);
190    Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 1;
191    PyObject *buffer;
192    const char *encoding = NULL;
193    PyObject *errors = Py_None;
194    const char *newline = NULL;
195    int line_buffering = 0;
196    int write_through = 0;
197
198    fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 1, 6, 0, argsbuf);
199    if (!fastargs) {
200        goto exit;
201    }
202    buffer = fastargs[0];
203    if (!noptargs) {
204        goto skip_optional_pos;
205    }
206    if (fastargs[1]) {
207        if (fastargs[1] == Py_None) {
208            encoding = NULL;
209        }
210        else if (PyUnicode_Check(fastargs[1])) {
211            Py_ssize_t encoding_length;
212            encoding = PyUnicode_AsUTF8AndSize(fastargs[1], &encoding_length);
213            if (encoding == NULL) {
214                goto exit;
215            }
216            if (strlen(encoding) != (size_t)encoding_length) {
217                PyErr_SetString(PyExc_ValueError, "embedded null character");
218                goto exit;
219            }
220        }
221        else {
222            _PyArg_BadArgument("TextIOWrapper", "argument 'encoding'", "str or None", fastargs[1]);
223            goto exit;
224        }
225        if (!--noptargs) {
226            goto skip_optional_pos;
227        }
228    }
229    if (fastargs[2]) {
230        errors = fastargs[2];
231        if (!--noptargs) {
232            goto skip_optional_pos;
233        }
234    }
235    if (fastargs[3]) {
236        if (fastargs[3] == Py_None) {
237            newline = NULL;
238        }
239        else if (PyUnicode_Check(fastargs[3])) {
240            Py_ssize_t newline_length;
241            newline = PyUnicode_AsUTF8AndSize(fastargs[3], &newline_length);
242            if (newline == NULL) {
243                goto exit;
244            }
245            if (strlen(newline) != (size_t)newline_length) {
246                PyErr_SetString(PyExc_ValueError, "embedded null character");
247                goto exit;
248            }
249        }
250        else {
251            _PyArg_BadArgument("TextIOWrapper", "argument 'newline'", "str or None", fastargs[3]);
252            goto exit;
253        }
254        if (!--noptargs) {
255            goto skip_optional_pos;
256        }
257    }
258    if (fastargs[4]) {
259        line_buffering = _PyLong_AsInt(fastargs[4]);
260        if (line_buffering == -1 && PyErr_Occurred()) {
261            goto exit;
262        }
263        if (!--noptargs) {
264            goto skip_optional_pos;
265        }
266    }
267    write_through = _PyLong_AsInt(fastargs[5]);
268    if (write_through == -1 && PyErr_Occurred()) {
269        goto exit;
270    }
271skip_optional_pos:
272    return_value = _io_TextIOWrapper___init___impl((textio *)self, buffer, encoding, errors, newline, line_buffering, write_through);
273
274exit:
275    return return_value;
276}
277
278PyDoc_STRVAR(_io_TextIOWrapper_reconfigure__doc__,
279"reconfigure($self, /, *, encoding=None, errors=None, newline=None,\n"
280"            line_buffering=None, write_through=None)\n"
281"--\n"
282"\n"
283"Reconfigure the text stream with new parameters.\n"
284"\n"
285"This also does an implicit stream flush.");
286
287#define _IO_TEXTIOWRAPPER_RECONFIGURE_METHODDEF    \
288    {"reconfigure", _PyCFunction_CAST(_io_TextIOWrapper_reconfigure), METH_FASTCALL|METH_KEYWORDS, _io_TextIOWrapper_reconfigure__doc__},
289
290static PyObject *
291_io_TextIOWrapper_reconfigure_impl(textio *self, PyObject *encoding,
292                                   PyObject *errors, PyObject *newline_obj,
293                                   PyObject *line_buffering_obj,
294                                   PyObject *write_through_obj);
295
296static PyObject *
297_io_TextIOWrapper_reconfigure(textio *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
298{
299    PyObject *return_value = NULL;
300    static const char * const _keywords[] = {"encoding", "errors", "newline", "line_buffering", "write_through", NULL};
301    static _PyArg_Parser _parser = {NULL, _keywords, "reconfigure", 0};
302    PyObject *argsbuf[5];
303    Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
304    PyObject *encoding = Py_None;
305    PyObject *errors = Py_None;
306    PyObject *newline_obj = NULL;
307    PyObject *line_buffering_obj = Py_None;
308    PyObject *write_through_obj = Py_None;
309
310    args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 0, 0, argsbuf);
311    if (!args) {
312        goto exit;
313    }
314    if (!noptargs) {
315        goto skip_optional_kwonly;
316    }
317    if (args[0]) {
318        encoding = args[0];
319        if (!--noptargs) {
320            goto skip_optional_kwonly;
321        }
322    }
323    if (args[1]) {
324        errors = args[1];
325        if (!--noptargs) {
326            goto skip_optional_kwonly;
327        }
328    }
329    if (args[2]) {
330        newline_obj = args[2];
331        if (!--noptargs) {
332            goto skip_optional_kwonly;
333        }
334    }
335    if (args[3]) {
336        line_buffering_obj = args[3];
337        if (!--noptargs) {
338            goto skip_optional_kwonly;
339        }
340    }
341    write_through_obj = args[4];
342skip_optional_kwonly:
343    return_value = _io_TextIOWrapper_reconfigure_impl(self, encoding, errors, newline_obj, line_buffering_obj, write_through_obj);
344
345exit:
346    return return_value;
347}
348
349PyDoc_STRVAR(_io_TextIOWrapper_detach__doc__,
350"detach($self, /)\n"
351"--\n"
352"\n");
353
354#define _IO_TEXTIOWRAPPER_DETACH_METHODDEF    \
355    {"detach", (PyCFunction)_io_TextIOWrapper_detach, METH_NOARGS, _io_TextIOWrapper_detach__doc__},
356
357static PyObject *
358_io_TextIOWrapper_detach_impl(textio *self);
359
360static PyObject *
361_io_TextIOWrapper_detach(textio *self, PyObject *Py_UNUSED(ignored))
362{
363    return _io_TextIOWrapper_detach_impl(self);
364}
365
366PyDoc_STRVAR(_io_TextIOWrapper_write__doc__,
367"write($self, text, /)\n"
368"--\n"
369"\n");
370
371#define _IO_TEXTIOWRAPPER_WRITE_METHODDEF    \
372    {"write", (PyCFunction)_io_TextIOWrapper_write, METH_O, _io_TextIOWrapper_write__doc__},
373
374static PyObject *
375_io_TextIOWrapper_write_impl(textio *self, PyObject *text);
376
377static PyObject *
378_io_TextIOWrapper_write(textio *self, PyObject *arg)
379{
380    PyObject *return_value = NULL;
381    PyObject *text;
382
383    if (!PyUnicode_Check(arg)) {
384        _PyArg_BadArgument("write", "argument", "str", arg);
385        goto exit;
386    }
387    if (PyUnicode_READY(arg) == -1) {
388        goto exit;
389    }
390    text = arg;
391    return_value = _io_TextIOWrapper_write_impl(self, text);
392
393exit:
394    return return_value;
395}
396
397PyDoc_STRVAR(_io_TextIOWrapper_read__doc__,
398"read($self, size=-1, /)\n"
399"--\n"
400"\n");
401
402#define _IO_TEXTIOWRAPPER_READ_METHODDEF    \
403    {"read", _PyCFunction_CAST(_io_TextIOWrapper_read), METH_FASTCALL, _io_TextIOWrapper_read__doc__},
404
405static PyObject *
406_io_TextIOWrapper_read_impl(textio *self, Py_ssize_t n);
407
408static PyObject *
409_io_TextIOWrapper_read(textio *self, PyObject *const *args, Py_ssize_t nargs)
410{
411    PyObject *return_value = NULL;
412    Py_ssize_t n = -1;
413
414    if (!_PyArg_CheckPositional("read", nargs, 0, 1)) {
415        goto exit;
416    }
417    if (nargs < 1) {
418        goto skip_optional;
419    }
420    if (!_Py_convert_optional_to_ssize_t(args[0], &n)) {
421        goto exit;
422    }
423skip_optional:
424    return_value = _io_TextIOWrapper_read_impl(self, n);
425
426exit:
427    return return_value;
428}
429
430PyDoc_STRVAR(_io_TextIOWrapper_readline__doc__,
431"readline($self, size=-1, /)\n"
432"--\n"
433"\n");
434
435#define _IO_TEXTIOWRAPPER_READLINE_METHODDEF    \
436    {"readline", _PyCFunction_CAST(_io_TextIOWrapper_readline), METH_FASTCALL, _io_TextIOWrapper_readline__doc__},
437
438static PyObject *
439_io_TextIOWrapper_readline_impl(textio *self, Py_ssize_t size);
440
441static PyObject *
442_io_TextIOWrapper_readline(textio *self, PyObject *const *args, Py_ssize_t nargs)
443{
444    PyObject *return_value = NULL;
445    Py_ssize_t size = -1;
446
447    if (!_PyArg_CheckPositional("readline", nargs, 0, 1)) {
448        goto exit;
449    }
450    if (nargs < 1) {
451        goto skip_optional;
452    }
453    {
454        Py_ssize_t ival = -1;
455        PyObject *iobj = _PyNumber_Index(args[0]);
456        if (iobj != NULL) {
457            ival = PyLong_AsSsize_t(iobj);
458            Py_DECREF(iobj);
459        }
460        if (ival == -1 && PyErr_Occurred()) {
461            goto exit;
462        }
463        size = ival;
464    }
465skip_optional:
466    return_value = _io_TextIOWrapper_readline_impl(self, size);
467
468exit:
469    return return_value;
470}
471
472PyDoc_STRVAR(_io_TextIOWrapper_seek__doc__,
473"seek($self, cookie, whence=0, /)\n"
474"--\n"
475"\n");
476
477#define _IO_TEXTIOWRAPPER_SEEK_METHODDEF    \
478    {"seek", _PyCFunction_CAST(_io_TextIOWrapper_seek), METH_FASTCALL, _io_TextIOWrapper_seek__doc__},
479
480static PyObject *
481_io_TextIOWrapper_seek_impl(textio *self, PyObject *cookieObj, int whence);
482
483static PyObject *
484_io_TextIOWrapper_seek(textio *self, PyObject *const *args, Py_ssize_t nargs)
485{
486    PyObject *return_value = NULL;
487    PyObject *cookieObj;
488    int whence = 0;
489
490    if (!_PyArg_CheckPositional("seek", nargs, 1, 2)) {
491        goto exit;
492    }
493    cookieObj = args[0];
494    if (nargs < 2) {
495        goto skip_optional;
496    }
497    whence = _PyLong_AsInt(args[1]);
498    if (whence == -1 && PyErr_Occurred()) {
499        goto exit;
500    }
501skip_optional:
502    return_value = _io_TextIOWrapper_seek_impl(self, cookieObj, whence);
503
504exit:
505    return return_value;
506}
507
508PyDoc_STRVAR(_io_TextIOWrapper_tell__doc__,
509"tell($self, /)\n"
510"--\n"
511"\n");
512
513#define _IO_TEXTIOWRAPPER_TELL_METHODDEF    \
514    {"tell", (PyCFunction)_io_TextIOWrapper_tell, METH_NOARGS, _io_TextIOWrapper_tell__doc__},
515
516static PyObject *
517_io_TextIOWrapper_tell_impl(textio *self);
518
519static PyObject *
520_io_TextIOWrapper_tell(textio *self, PyObject *Py_UNUSED(ignored))
521{
522    return _io_TextIOWrapper_tell_impl(self);
523}
524
525PyDoc_STRVAR(_io_TextIOWrapper_truncate__doc__,
526"truncate($self, pos=None, /)\n"
527"--\n"
528"\n");
529
530#define _IO_TEXTIOWRAPPER_TRUNCATE_METHODDEF    \
531    {"truncate", _PyCFunction_CAST(_io_TextIOWrapper_truncate), METH_FASTCALL, _io_TextIOWrapper_truncate__doc__},
532
533static PyObject *
534_io_TextIOWrapper_truncate_impl(textio *self, PyObject *pos);
535
536static PyObject *
537_io_TextIOWrapper_truncate(textio *self, PyObject *const *args, Py_ssize_t nargs)
538{
539    PyObject *return_value = NULL;
540    PyObject *pos = Py_None;
541
542    if (!_PyArg_CheckPositional("truncate", nargs, 0, 1)) {
543        goto exit;
544    }
545    if (nargs < 1) {
546        goto skip_optional;
547    }
548    pos = args[0];
549skip_optional:
550    return_value = _io_TextIOWrapper_truncate_impl(self, pos);
551
552exit:
553    return return_value;
554}
555
556PyDoc_STRVAR(_io_TextIOWrapper_fileno__doc__,
557"fileno($self, /)\n"
558"--\n"
559"\n");
560
561#define _IO_TEXTIOWRAPPER_FILENO_METHODDEF    \
562    {"fileno", (PyCFunction)_io_TextIOWrapper_fileno, METH_NOARGS, _io_TextIOWrapper_fileno__doc__},
563
564static PyObject *
565_io_TextIOWrapper_fileno_impl(textio *self);
566
567static PyObject *
568_io_TextIOWrapper_fileno(textio *self, PyObject *Py_UNUSED(ignored))
569{
570    return _io_TextIOWrapper_fileno_impl(self);
571}
572
573PyDoc_STRVAR(_io_TextIOWrapper_seekable__doc__,
574"seekable($self, /)\n"
575"--\n"
576"\n");
577
578#define _IO_TEXTIOWRAPPER_SEEKABLE_METHODDEF    \
579    {"seekable", (PyCFunction)_io_TextIOWrapper_seekable, METH_NOARGS, _io_TextIOWrapper_seekable__doc__},
580
581static PyObject *
582_io_TextIOWrapper_seekable_impl(textio *self);
583
584static PyObject *
585_io_TextIOWrapper_seekable(textio *self, PyObject *Py_UNUSED(ignored))
586{
587    return _io_TextIOWrapper_seekable_impl(self);
588}
589
590PyDoc_STRVAR(_io_TextIOWrapper_readable__doc__,
591"readable($self, /)\n"
592"--\n"
593"\n");
594
595#define _IO_TEXTIOWRAPPER_READABLE_METHODDEF    \
596    {"readable", (PyCFunction)_io_TextIOWrapper_readable, METH_NOARGS, _io_TextIOWrapper_readable__doc__},
597
598static PyObject *
599_io_TextIOWrapper_readable_impl(textio *self);
600
601static PyObject *
602_io_TextIOWrapper_readable(textio *self, PyObject *Py_UNUSED(ignored))
603{
604    return _io_TextIOWrapper_readable_impl(self);
605}
606
607PyDoc_STRVAR(_io_TextIOWrapper_writable__doc__,
608"writable($self, /)\n"
609"--\n"
610"\n");
611
612#define _IO_TEXTIOWRAPPER_WRITABLE_METHODDEF    \
613    {"writable", (PyCFunction)_io_TextIOWrapper_writable, METH_NOARGS, _io_TextIOWrapper_writable__doc__},
614
615static PyObject *
616_io_TextIOWrapper_writable_impl(textio *self);
617
618static PyObject *
619_io_TextIOWrapper_writable(textio *self, PyObject *Py_UNUSED(ignored))
620{
621    return _io_TextIOWrapper_writable_impl(self);
622}
623
624PyDoc_STRVAR(_io_TextIOWrapper_isatty__doc__,
625"isatty($self, /)\n"
626"--\n"
627"\n");
628
629#define _IO_TEXTIOWRAPPER_ISATTY_METHODDEF    \
630    {"isatty", (PyCFunction)_io_TextIOWrapper_isatty, METH_NOARGS, _io_TextIOWrapper_isatty__doc__},
631
632static PyObject *
633_io_TextIOWrapper_isatty_impl(textio *self);
634
635static PyObject *
636_io_TextIOWrapper_isatty(textio *self, PyObject *Py_UNUSED(ignored))
637{
638    return _io_TextIOWrapper_isatty_impl(self);
639}
640
641PyDoc_STRVAR(_io_TextIOWrapper_flush__doc__,
642"flush($self, /)\n"
643"--\n"
644"\n");
645
646#define _IO_TEXTIOWRAPPER_FLUSH_METHODDEF    \
647    {"flush", (PyCFunction)_io_TextIOWrapper_flush, METH_NOARGS, _io_TextIOWrapper_flush__doc__},
648
649static PyObject *
650_io_TextIOWrapper_flush_impl(textio *self);
651
652static PyObject *
653_io_TextIOWrapper_flush(textio *self, PyObject *Py_UNUSED(ignored))
654{
655    return _io_TextIOWrapper_flush_impl(self);
656}
657
658PyDoc_STRVAR(_io_TextIOWrapper_close__doc__,
659"close($self, /)\n"
660"--\n"
661"\n");
662
663#define _IO_TEXTIOWRAPPER_CLOSE_METHODDEF    \
664    {"close", (PyCFunction)_io_TextIOWrapper_close, METH_NOARGS, _io_TextIOWrapper_close__doc__},
665
666static PyObject *
667_io_TextIOWrapper_close_impl(textio *self);
668
669static PyObject *
670_io_TextIOWrapper_close(textio *self, PyObject *Py_UNUSED(ignored))
671{
672    return _io_TextIOWrapper_close_impl(self);
673}
674/*[clinic end generated code: output=bb78b568b24759d6 input=a9049054013a1b77]*/
675