1 /*[clinic input]
2 preserve
3 [clinic start generated code]*/
4 
5 PyDoc_STRVAR(_io_BytesIO_readable__doc__,
6 "readable($self, /)\n"
7 "--\n"
8 "\n"
9 "Returns True if the IO object can be read.");
10 
11 #define _IO_BYTESIO_READABLE_METHODDEF    \
12     {"readable", (PyCFunction)_io_BytesIO_readable, METH_NOARGS, _io_BytesIO_readable__doc__},
13 
14 static PyObject *
15 _io_BytesIO_readable_impl(bytesio *self);
16 
17 static PyObject *
_io_BytesIO_readable(bytesio * self,PyObject * Py_UNUSED (ignored))18 _io_BytesIO_readable(bytesio *self, PyObject *Py_UNUSED(ignored))
19 {
20     return _io_BytesIO_readable_impl(self);
21 }
22 
23 PyDoc_STRVAR(_io_BytesIO_writable__doc__,
24 "writable($self, /)\n"
25 "--\n"
26 "\n"
27 "Returns True if the IO object can be written.");
28 
29 #define _IO_BYTESIO_WRITABLE_METHODDEF    \
30     {"writable", (PyCFunction)_io_BytesIO_writable, METH_NOARGS, _io_BytesIO_writable__doc__},
31 
32 static PyObject *
33 _io_BytesIO_writable_impl(bytesio *self);
34 
35 static PyObject *
_io_BytesIO_writable(bytesio * self,PyObject * Py_UNUSED (ignored))36 _io_BytesIO_writable(bytesio *self, PyObject *Py_UNUSED(ignored))
37 {
38     return _io_BytesIO_writable_impl(self);
39 }
40 
41 PyDoc_STRVAR(_io_BytesIO_seekable__doc__,
42 "seekable($self, /)\n"
43 "--\n"
44 "\n"
45 "Returns True if the IO object can be seeked.");
46 
47 #define _IO_BYTESIO_SEEKABLE_METHODDEF    \
48     {"seekable", (PyCFunction)_io_BytesIO_seekable, METH_NOARGS, _io_BytesIO_seekable__doc__},
49 
50 static PyObject *
51 _io_BytesIO_seekable_impl(bytesio *self);
52 
53 static PyObject *
_io_BytesIO_seekable(bytesio * self,PyObject * Py_UNUSED (ignored))54 _io_BytesIO_seekable(bytesio *self, PyObject *Py_UNUSED(ignored))
55 {
56     return _io_BytesIO_seekable_impl(self);
57 }
58 
59 PyDoc_STRVAR(_io_BytesIO_flush__doc__,
60 "flush($self, /)\n"
61 "--\n"
62 "\n"
63 "Does nothing.");
64 
65 #define _IO_BYTESIO_FLUSH_METHODDEF    \
66     {"flush", (PyCFunction)_io_BytesIO_flush, METH_NOARGS, _io_BytesIO_flush__doc__},
67 
68 static PyObject *
69 _io_BytesIO_flush_impl(bytesio *self);
70 
71 static PyObject *
_io_BytesIO_flush(bytesio * self,PyObject * Py_UNUSED (ignored))72 _io_BytesIO_flush(bytesio *self, PyObject *Py_UNUSED(ignored))
73 {
74     return _io_BytesIO_flush_impl(self);
75 }
76 
77 PyDoc_STRVAR(_io_BytesIO_getbuffer__doc__,
78 "getbuffer($self, /)\n"
79 "--\n"
80 "\n"
81 "Get a read-write view over the contents of the BytesIO object.");
82 
83 #define _IO_BYTESIO_GETBUFFER_METHODDEF    \
84     {"getbuffer", (PyCFunction)_io_BytesIO_getbuffer, METH_NOARGS, _io_BytesIO_getbuffer__doc__},
85 
86 static PyObject *
87 _io_BytesIO_getbuffer_impl(bytesio *self);
88 
89 static PyObject *
_io_BytesIO_getbuffer(bytesio * self,PyObject * Py_UNUSED (ignored))90 _io_BytesIO_getbuffer(bytesio *self, PyObject *Py_UNUSED(ignored))
91 {
92     return _io_BytesIO_getbuffer_impl(self);
93 }
94 
95 PyDoc_STRVAR(_io_BytesIO_getvalue__doc__,
96 "getvalue($self, /)\n"
97 "--\n"
98 "\n"
99 "Retrieve the entire contents of the BytesIO object.");
100 
101 #define _IO_BYTESIO_GETVALUE_METHODDEF    \
102     {"getvalue", (PyCFunction)_io_BytesIO_getvalue, METH_NOARGS, _io_BytesIO_getvalue__doc__},
103 
104 static PyObject *
105 _io_BytesIO_getvalue_impl(bytesio *self);
106 
107 static PyObject *
_io_BytesIO_getvalue(bytesio * self,PyObject * Py_UNUSED (ignored))108 _io_BytesIO_getvalue(bytesio *self, PyObject *Py_UNUSED(ignored))
109 {
110     return _io_BytesIO_getvalue_impl(self);
111 }
112 
113 PyDoc_STRVAR(_io_BytesIO_isatty__doc__,
114 "isatty($self, /)\n"
115 "--\n"
116 "\n"
117 "Always returns False.\n"
118 "\n"
119 "BytesIO objects are not connected to a TTY-like device.");
120 
121 #define _IO_BYTESIO_ISATTY_METHODDEF    \
122     {"isatty", (PyCFunction)_io_BytesIO_isatty, METH_NOARGS, _io_BytesIO_isatty__doc__},
123 
124 static PyObject *
125 _io_BytesIO_isatty_impl(bytesio *self);
126 
127 static PyObject *
_io_BytesIO_isatty(bytesio * self,PyObject * Py_UNUSED (ignored))128 _io_BytesIO_isatty(bytesio *self, PyObject *Py_UNUSED(ignored))
129 {
130     return _io_BytesIO_isatty_impl(self);
131 }
132 
133 PyDoc_STRVAR(_io_BytesIO_tell__doc__,
134 "tell($self, /)\n"
135 "--\n"
136 "\n"
137 "Current file position, an integer.");
138 
139 #define _IO_BYTESIO_TELL_METHODDEF    \
140     {"tell", (PyCFunction)_io_BytesIO_tell, METH_NOARGS, _io_BytesIO_tell__doc__},
141 
142 static PyObject *
143 _io_BytesIO_tell_impl(bytesio *self);
144 
145 static PyObject *
_io_BytesIO_tell(bytesio * self,PyObject * Py_UNUSED (ignored))146 _io_BytesIO_tell(bytesio *self, PyObject *Py_UNUSED(ignored))
147 {
148     return _io_BytesIO_tell_impl(self);
149 }
150 
151 PyDoc_STRVAR(_io_BytesIO_read__doc__,
152 "read($self, size=-1, /)\n"
153 "--\n"
154 "\n"
155 "Read at most size bytes, returned as a bytes object.\n"
156 "\n"
157 "If the size argument is negative, read until EOF is reached.\n"
158 "Return an empty bytes object at EOF.");
159 
160 #define _IO_BYTESIO_READ_METHODDEF    \
161     {"read", (PyCFunction)(void(*)(void))_io_BytesIO_read, METH_FASTCALL, _io_BytesIO_read__doc__},
162 
163 static PyObject *
164 _io_BytesIO_read_impl(bytesio *self, Py_ssize_t size);
165 
166 static PyObject *
_io_BytesIO_read(bytesio * self,PyObject * const * args,Py_ssize_t nargs)167 _io_BytesIO_read(bytesio *self, PyObject *const *args, Py_ssize_t nargs)
168 {
169     PyObject *return_value = NULL;
170     Py_ssize_t size = -1;
171 
172     if (!_PyArg_CheckPositional("read", nargs, 0, 1)) {
173         goto exit;
174     }
175     if (nargs < 1) {
176         goto skip_optional;
177     }
178     if (!_Py_convert_optional_to_ssize_t(args[0], &size)) {
179         goto exit;
180     }
181 skip_optional:
182     return_value = _io_BytesIO_read_impl(self, size);
183 
184 exit:
185     return return_value;
186 }
187 
188 PyDoc_STRVAR(_io_BytesIO_read1__doc__,
189 "read1($self, size=-1, /)\n"
190 "--\n"
191 "\n"
192 "Read at most size bytes, returned as a bytes object.\n"
193 "\n"
194 "If the size argument is negative or omitted, read until EOF is reached.\n"
195 "Return an empty bytes object at EOF.");
196 
197 #define _IO_BYTESIO_READ1_METHODDEF    \
198     {"read1", (PyCFunction)(void(*)(void))_io_BytesIO_read1, METH_FASTCALL, _io_BytesIO_read1__doc__},
199 
200 static PyObject *
201 _io_BytesIO_read1_impl(bytesio *self, Py_ssize_t size);
202 
203 static PyObject *
_io_BytesIO_read1(bytesio * self,PyObject * const * args,Py_ssize_t nargs)204 _io_BytesIO_read1(bytesio *self, PyObject *const *args, Py_ssize_t nargs)
205 {
206     PyObject *return_value = NULL;
207     Py_ssize_t size = -1;
208 
209     if (!_PyArg_CheckPositional("read1", nargs, 0, 1)) {
210         goto exit;
211     }
212     if (nargs < 1) {
213         goto skip_optional;
214     }
215     if (!_Py_convert_optional_to_ssize_t(args[0], &size)) {
216         goto exit;
217     }
218 skip_optional:
219     return_value = _io_BytesIO_read1_impl(self, size);
220 
221 exit:
222     return return_value;
223 }
224 
225 PyDoc_STRVAR(_io_BytesIO_readline__doc__,
226 "readline($self, size=-1, /)\n"
227 "--\n"
228 "\n"
229 "Next line from the file, as a bytes object.\n"
230 "\n"
231 "Retain newline.  A non-negative size argument limits the maximum\n"
232 "number of bytes to return (an incomplete line may be returned then).\n"
233 "Return an empty bytes object at EOF.");
234 
235 #define _IO_BYTESIO_READLINE_METHODDEF    \
236     {"readline", (PyCFunction)(void(*)(void))_io_BytesIO_readline, METH_FASTCALL, _io_BytesIO_readline__doc__},
237 
238 static PyObject *
239 _io_BytesIO_readline_impl(bytesio *self, Py_ssize_t size);
240 
241 static PyObject *
_io_BytesIO_readline(bytesio * self,PyObject * const * args,Py_ssize_t nargs)242 _io_BytesIO_readline(bytesio *self, PyObject *const *args, Py_ssize_t nargs)
243 {
244     PyObject *return_value = NULL;
245     Py_ssize_t size = -1;
246 
247     if (!_PyArg_CheckPositional("readline", nargs, 0, 1)) {
248         goto exit;
249     }
250     if (nargs < 1) {
251         goto skip_optional;
252     }
253     if (!_Py_convert_optional_to_ssize_t(args[0], &size)) {
254         goto exit;
255     }
256 skip_optional:
257     return_value = _io_BytesIO_readline_impl(self, size);
258 
259 exit:
260     return return_value;
261 }
262 
263 PyDoc_STRVAR(_io_BytesIO_readlines__doc__,
264 "readlines($self, size=None, /)\n"
265 "--\n"
266 "\n"
267 "List of bytes objects, each a line from the file.\n"
268 "\n"
269 "Call readline() repeatedly and return a list of the lines so read.\n"
270 "The optional size argument, if given, is an approximate bound on the\n"
271 "total number of bytes in the lines returned.");
272 
273 #define _IO_BYTESIO_READLINES_METHODDEF    \
274     {"readlines", (PyCFunction)(void(*)(void))_io_BytesIO_readlines, METH_FASTCALL, _io_BytesIO_readlines__doc__},
275 
276 static PyObject *
277 _io_BytesIO_readlines_impl(bytesio *self, PyObject *arg);
278 
279 static PyObject *
_io_BytesIO_readlines(bytesio * self,PyObject * const * args,Py_ssize_t nargs)280 _io_BytesIO_readlines(bytesio *self, PyObject *const *args, Py_ssize_t nargs)
281 {
282     PyObject *return_value = NULL;
283     PyObject *arg = Py_None;
284 
285     if (!_PyArg_CheckPositional("readlines", nargs, 0, 1)) {
286         goto exit;
287     }
288     if (nargs < 1) {
289         goto skip_optional;
290     }
291     arg = args[0];
292 skip_optional:
293     return_value = _io_BytesIO_readlines_impl(self, arg);
294 
295 exit:
296     return return_value;
297 }
298 
299 PyDoc_STRVAR(_io_BytesIO_readinto__doc__,
300 "readinto($self, buffer, /)\n"
301 "--\n"
302 "\n"
303 "Read bytes into buffer.\n"
304 "\n"
305 "Returns number of bytes read (0 for EOF), or None if the object\n"
306 "is set not to block and has no data to read.");
307 
308 #define _IO_BYTESIO_READINTO_METHODDEF    \
309     {"readinto", (PyCFunction)_io_BytesIO_readinto, METH_O, _io_BytesIO_readinto__doc__},
310 
311 static PyObject *
312 _io_BytesIO_readinto_impl(bytesio *self, Py_buffer *buffer);
313 
314 static PyObject *
_io_BytesIO_readinto(bytesio * self,PyObject * arg)315 _io_BytesIO_readinto(bytesio *self, PyObject *arg)
316 {
317     PyObject *return_value = NULL;
318     Py_buffer buffer = {NULL, NULL};
319 
320     if (PyObject_GetBuffer(arg, &buffer, PyBUF_WRITABLE) < 0) {
321         PyErr_Clear();
322         _PyArg_BadArgument("readinto", "argument", "read-write bytes-like object", arg);
323         goto exit;
324     }
325     if (!PyBuffer_IsContiguous(&buffer, 'C')) {
326         _PyArg_BadArgument("readinto", "argument", "contiguous buffer", arg);
327         goto exit;
328     }
329     return_value = _io_BytesIO_readinto_impl(self, &buffer);
330 
331 exit:
332     /* Cleanup for buffer */
333     if (buffer.obj) {
334        PyBuffer_Release(&buffer);
335     }
336 
337     return return_value;
338 }
339 
340 PyDoc_STRVAR(_io_BytesIO_truncate__doc__,
341 "truncate($self, size=None, /)\n"
342 "--\n"
343 "\n"
344 "Truncate the file to at most size bytes.\n"
345 "\n"
346 "Size defaults to the current file position, as returned by tell().\n"
347 "The current file position is unchanged.  Returns the new size.");
348 
349 #define _IO_BYTESIO_TRUNCATE_METHODDEF    \
350     {"truncate", (PyCFunction)(void(*)(void))_io_BytesIO_truncate, METH_FASTCALL, _io_BytesIO_truncate__doc__},
351 
352 static PyObject *
353 _io_BytesIO_truncate_impl(bytesio *self, Py_ssize_t size);
354 
355 static PyObject *
_io_BytesIO_truncate(bytesio * self,PyObject * const * args,Py_ssize_t nargs)356 _io_BytesIO_truncate(bytesio *self, PyObject *const *args, Py_ssize_t nargs)
357 {
358     PyObject *return_value = NULL;
359     Py_ssize_t size = self->pos;
360 
361     if (!_PyArg_CheckPositional("truncate", nargs, 0, 1)) {
362         goto exit;
363     }
364     if (nargs < 1) {
365         goto skip_optional;
366     }
367     if (!_Py_convert_optional_to_ssize_t(args[0], &size)) {
368         goto exit;
369     }
370 skip_optional:
371     return_value = _io_BytesIO_truncate_impl(self, size);
372 
373 exit:
374     return return_value;
375 }
376 
377 PyDoc_STRVAR(_io_BytesIO_seek__doc__,
378 "seek($self, pos, whence=0, /)\n"
379 "--\n"
380 "\n"
381 "Change stream position.\n"
382 "\n"
383 "Seek to byte offset pos relative to position indicated by whence:\n"
384 "     0  Start of stream (the default).  pos should be >= 0;\n"
385 "     1  Current position - pos may be negative;\n"
386 "     2  End of stream - pos usually negative.\n"
387 "Returns the new absolute position.");
388 
389 #define _IO_BYTESIO_SEEK_METHODDEF    \
390     {"seek", (PyCFunction)(void(*)(void))_io_BytesIO_seek, METH_FASTCALL, _io_BytesIO_seek__doc__},
391 
392 static PyObject *
393 _io_BytesIO_seek_impl(bytesio *self, Py_ssize_t pos, int whence);
394 
395 static PyObject *
_io_BytesIO_seek(bytesio * self,PyObject * const * args,Py_ssize_t nargs)396 _io_BytesIO_seek(bytesio *self, PyObject *const *args, Py_ssize_t nargs)
397 {
398     PyObject *return_value = NULL;
399     Py_ssize_t pos;
400     int whence = 0;
401 
402     if (!_PyArg_CheckPositional("seek", nargs, 1, 2)) {
403         goto exit;
404     }
405     if (PyFloat_Check(args[0])) {
406         PyErr_SetString(PyExc_TypeError,
407                         "integer argument expected, got float" );
408         goto exit;
409     }
410     {
411         Py_ssize_t ival = -1;
412         PyObject *iobj = PyNumber_Index(args[0]);
413         if (iobj != NULL) {
414             ival = PyLong_AsSsize_t(iobj);
415             Py_DECREF(iobj);
416         }
417         if (ival == -1 && PyErr_Occurred()) {
418             goto exit;
419         }
420         pos = ival;
421     }
422     if (nargs < 2) {
423         goto skip_optional;
424     }
425     if (PyFloat_Check(args[1])) {
426         PyErr_SetString(PyExc_TypeError,
427                         "integer argument expected, got float" );
428         goto exit;
429     }
430     whence = _PyLong_AsInt(args[1]);
431     if (whence == -1 && PyErr_Occurred()) {
432         goto exit;
433     }
434 skip_optional:
435     return_value = _io_BytesIO_seek_impl(self, pos, whence);
436 
437 exit:
438     return return_value;
439 }
440 
441 PyDoc_STRVAR(_io_BytesIO_write__doc__,
442 "write($self, b, /)\n"
443 "--\n"
444 "\n"
445 "Write bytes to file.\n"
446 "\n"
447 "Return the number of bytes written.");
448 
449 #define _IO_BYTESIO_WRITE_METHODDEF    \
450     {"write", (PyCFunction)_io_BytesIO_write, METH_O, _io_BytesIO_write__doc__},
451 
452 PyDoc_STRVAR(_io_BytesIO_writelines__doc__,
453 "writelines($self, lines, /)\n"
454 "--\n"
455 "\n"
456 "Write lines to the file.\n"
457 "\n"
458 "Note that newlines are not added.  lines can be any iterable object\n"
459 "producing bytes-like objects. This is equivalent to calling write() for\n"
460 "each element.");
461 
462 #define _IO_BYTESIO_WRITELINES_METHODDEF    \
463     {"writelines", (PyCFunction)_io_BytesIO_writelines, METH_O, _io_BytesIO_writelines__doc__},
464 
465 PyDoc_STRVAR(_io_BytesIO_close__doc__,
466 "close($self, /)\n"
467 "--\n"
468 "\n"
469 "Disable all I/O operations.");
470 
471 #define _IO_BYTESIO_CLOSE_METHODDEF    \
472     {"close", (PyCFunction)_io_BytesIO_close, METH_NOARGS, _io_BytesIO_close__doc__},
473 
474 static PyObject *
475 _io_BytesIO_close_impl(bytesio *self);
476 
477 static PyObject *
_io_BytesIO_close(bytesio * self,PyObject * Py_UNUSED (ignored))478 _io_BytesIO_close(bytesio *self, PyObject *Py_UNUSED(ignored))
479 {
480     return _io_BytesIO_close_impl(self);
481 }
482 
483 PyDoc_STRVAR(_io_BytesIO___init____doc__,
484 "BytesIO(initial_bytes=b\'\')\n"
485 "--\n"
486 "\n"
487 "Buffered I/O implementation using an in-memory bytes buffer.");
488 
489 static int
490 _io_BytesIO___init___impl(bytesio *self, PyObject *initvalue);
491 
492 static int
_io_BytesIO___init__(PyObject * self,PyObject * args,PyObject * kwargs)493 _io_BytesIO___init__(PyObject *self, PyObject *args, PyObject *kwargs)
494 {
495     int return_value = -1;
496     static const char * const _keywords[] = {"initial_bytes", NULL};
497     static _PyArg_Parser _parser = {NULL, _keywords, "BytesIO", 0};
498     PyObject *argsbuf[1];
499     PyObject * const *fastargs;
500     Py_ssize_t nargs = PyTuple_GET_SIZE(args);
501     Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 0;
502     PyObject *initvalue = NULL;
503 
504     fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 0, 1, 0, argsbuf);
505     if (!fastargs) {
506         goto exit;
507     }
508     if (!noptargs) {
509         goto skip_optional_pos;
510     }
511     initvalue = fastargs[0];
512 skip_optional_pos:
513     return_value = _io_BytesIO___init___impl((bytesio *)self, initvalue);
514 
515 exit:
516     return return_value;
517 }
518 /*[clinic end generated code: output=4ec2506def9c8eb9 input=a9049054013a1b77]*/
519