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 {
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 }
424 skip_optional:
425 return_value = _io_BytesIO_seek_impl(self, pos, whence);
426
427 exit:
428 return return_value;
429 }
430
431 PyDoc_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
442 PyDoc_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
455 PyDoc_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
464 static PyObject *
465 _io_BytesIO_close_impl(bytesio *self);
466
467 static PyObject *
_io_BytesIO_close(bytesio * self,PyObject * Py_UNUSED (ignored))468 _io_BytesIO_close(bytesio *self, PyObject *Py_UNUSED(ignored))
469 {
470 return _io_BytesIO_close_impl(self);
471 }
472
473 PyDoc_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
479 static int
480 _io_BytesIO___init___impl(bytesio *self, PyObject *initvalue);
481
482 static int
_io_BytesIO___init__(PyObject * self,PyObject * args,PyObject * kwargs)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];
502 skip_optional_pos:
503 return_value = _io_BytesIO___init___impl((bytesio *)self, initvalue);
504
505 exit:
506 return return_value;
507 }
508 /*[clinic end generated code: output=49a32140eb8c5555 input=a9049054013a1b77]*/
509