1/*[clinic input]
2preserve
3[clinic start generated code]*/
4
5PyDoc_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
14static PyObject *
15_io_BytesIO_readable_impl(bytesio *self);
16
17static PyObject *
18_io_BytesIO_readable(bytesio *self, PyObject *Py_UNUSED(ignored))
19{
20 return _io_BytesIO_readable_impl(self);
21}
22
23PyDoc_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
32static PyObject *
33_io_BytesIO_writable_impl(bytesio *self);
34
35static PyObject *
36_io_BytesIO_writable(bytesio *self, PyObject *Py_UNUSED(ignored))
37{
38 return _io_BytesIO_writable_impl(self);
39}
40
41PyDoc_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
50static PyObject *
51_io_BytesIO_seekable_impl(bytesio *self);
52
53static PyObject *
54_io_BytesIO_seekable(bytesio *self, PyObject *Py_UNUSED(ignored))
55{
56 return _io_BytesIO_seekable_impl(self);
57}
58
59PyDoc_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
68static PyObject *
69_io_BytesIO_flush_impl(bytesio *self);
70
71static PyObject *
72_io_BytesIO_flush(bytesio *self, PyObject *Py_UNUSED(ignored))
73{
74 return _io_BytesIO_flush_impl(self);
75}
76
77PyDoc_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
86static PyObject *
87_io_BytesIO_getbuffer_impl(bytesio *self);
88
89static PyObject *
90_io_BytesIO_getbuffer(bytesio *self, PyObject *Py_UNUSED(ignored))
91{
92 return _io_BytesIO_getbuffer_impl(self);
93}
94
95PyDoc_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
104static PyObject *
105_io_BytesIO_getvalue_impl(bytesio *self);
106
107static PyObject *
108_io_BytesIO_getvalue(bytesio *self, PyObject *Py_UNUSED(ignored))
109{
110 return _io_BytesIO_getvalue_impl(self);
111}
112
113PyDoc_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
124static PyObject *
125_io_BytesIO_isatty_impl(bytesio *self);
126
127static PyObject *
128_io_BytesIO_isatty(bytesio *self, PyObject *Py_UNUSED(ignored))
129{
130 return _io_BytesIO_isatty_impl(self);
131}
132
133PyDoc_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
142static PyObject *
143_io_BytesIO_tell_impl(bytesio *self);
144
145static PyObject *
146_io_BytesIO_tell(bytesio *self, PyObject *Py_UNUSED(ignored))
147{
148 return _io_BytesIO_tell_impl(self);
149}
150
151PyDoc_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
163static PyObject *
164_io_BytesIO_read_impl(bytesio *self, Py_ssize_t size);
165
166static PyObject *
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 }
181skip_optional:
182 return_value = _io_BytesIO_read_impl(self, size);
183
184exit:
185 return return_value;
186}
187
188PyDoc_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
200static PyObject *
201_io_BytesIO_read1_impl(bytesio *self, Py_ssize_t size);
202
203static PyObject *
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 }
218skip_optional:
219 return_value = _io_BytesIO_read1_impl(self, size);
220
221exit:
222 return return_value;
223}
224
225PyDoc_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
238static PyObject *
239_io_BytesIO_readline_impl(bytesio *self, Py_ssize_t size);
240
241static PyObject *
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 }
256skip_optional:
257 return_value = _io_BytesIO_readline_impl(self, size);
258
259exit:
260 return return_value;
261}
262
263PyDoc_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
276static PyObject *
277_io_BytesIO_readlines_impl(bytesio *self, PyObject *arg);
278
279static PyObject *
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];
292skip_optional:
293 return_value = _io_BytesIO_readlines_impl(self, arg);
294
295exit:
296 return return_value;
297}
298
299PyDoc_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
311static PyObject *
312_io_BytesIO_readinto_impl(bytesio *self, Py_buffer *buffer);
313
314static PyObject *
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
331exit:
332 /* Cleanup for buffer */
333 if (buffer.obj) {
334 PyBuffer_Release(&buffer);
335 }
336
337 return return_value;
338}
339
340PyDoc_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
352static PyObject *
353_io_BytesIO_truncate_impl(bytesio *self, Py_ssize_t size);
354
355static PyObject *
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 }
370skip_optional:
371 return_value = _io_BytesIO_truncate_impl(self, size);
372
373exit:
374 return return_value;
375}
376
377PyDoc_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
392static PyObject *
393_io_BytesIO_seek_impl(bytesio *self, Py_ssize_t pos, int whence);
394
395static PyObject *
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 {
406 Py_ssize_t ival = -1;
407 PyObject *iobj = _PyNumber_Index(args[0]);
408 if (iobj != NULL) {
409 ival = PyLong_AsSsize_t(iobj);
410 Py_DECREF(iobj);
411 }
412 if (ival == -1 && PyErr_Occurred()) {
413 goto exit;
414 }
415 pos = ival;
416 }
417 if (nargs < 2) {
418 goto skip_optional;
419 }
420 whence = _PyLong_AsInt(args[1]);
421 if (whence == -1 && PyErr_Occurred()) {
422 goto exit;
423 }
424skip_optional:
425 return_value = _io_BytesIO_seek_impl(self, pos, whence);
426
427exit:
428 return return_value;
429}
430
431PyDoc_STRVAR(_io_BytesIO_write__doc__,
432"write($self, b, /)\n"
433"--\n"
434"\n"
435"Write bytes to file.\n"
436"\n"
437"Return the number of bytes written.");
438
439#define _IO_BYTESIO_WRITE_METHODDEF \
440 {"write", (PyCFunction)_io_BytesIO_write, METH_O, _io_BytesIO_write__doc__},
441
442PyDoc_STRVAR(_io_BytesIO_writelines__doc__,
443"writelines($self, lines, /)\n"
444"--\n"
445"\n"
446"Write lines to the file.\n"
447"\n"
448"Note that newlines are not added. lines can be any iterable object\n"
449"producing bytes-like objects. This is equivalent to calling write() for\n"
450"each element.");
451
452#define _IO_BYTESIO_WRITELINES_METHODDEF \
453 {"writelines", (PyCFunction)_io_BytesIO_writelines, METH_O, _io_BytesIO_writelines__doc__},
454
455PyDoc_STRVAR(_io_BytesIO_close__doc__,
456"close($self, /)\n"
457"--\n"
458"\n"
459"Disable all I/O operations.");
460
461#define _IO_BYTESIO_CLOSE_METHODDEF \
462 {"close", (PyCFunction)_io_BytesIO_close, METH_NOARGS, _io_BytesIO_close__doc__},
463
464static PyObject *
465_io_BytesIO_close_impl(bytesio *self);
466
467static PyObject *
468_io_BytesIO_close(bytesio *self, PyObject *Py_UNUSED(ignored))
469{
470 return _io_BytesIO_close_impl(self);
471}
472
473PyDoc_STRVAR(_io_BytesIO___init____doc__,
474"BytesIO(initial_bytes=b\'\')\n"
475"--\n"
476"\n"
477"Buffered I/O implementation using an in-memory bytes buffer.");
478
479static int
480_io_BytesIO___init___impl(bytesio *self, PyObject *initvalue);
481
482static int
483_io_BytesIO___init__(PyObject *self, PyObject *args, PyObject *kwargs)
484{
485 int return_value = -1;
486 static const char * const _keywords[] = {"initial_bytes", NULL};
487 static _PyArg_Parser _parser = {NULL, _keywords, "BytesIO", 0};
488 PyObject *argsbuf[1];
489 PyObject * const *fastargs;
490 Py_ssize_t nargs = PyTuple_GET_SIZE(args);
491 Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 0;
492 PyObject *initvalue = NULL;
493
494 fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 0, 1, 0, argsbuf);
495 if (!fastargs) {
496 goto exit;
497 }
498 if (!noptargs) {
499 goto skip_optional_pos;
500 }
501 initvalue = fastargs[0];
502skip_optional_pos:
503 return_value = _io_BytesIO___init___impl((bytesio *)self, initvalue);
504
505exit:
506 return return_value;
507}
508/*[clinic end generated code: output=49a32140eb8c5555 input=a9049054013a1b77]*/
509