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