Branch data Line data Source code
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 *
18 : 2126 : _io_BytesIO_readable(bytesio *self, PyObject *Py_UNUSED(ignored))
19 : : {
20 : 2126 : 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 *
36 : 18860 : _io_BytesIO_writable(bytesio *self, PyObject *Py_UNUSED(ignored))
37 : : {
38 : 18860 : 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 *
54 : 10998 : _io_BytesIO_seekable(bytesio *self, PyObject *Py_UNUSED(ignored))
55 : : {
56 : 10998 : 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 *
72 : 2386 : _io_BytesIO_flush(bytesio *self, PyObject *Py_UNUSED(ignored))
73 : : {
74 : 2386 : 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 *
90 : 71250 : _io_BytesIO_getbuffer(bytesio *self, PyObject *Py_UNUSED(ignored))
91 : : {
92 : 71250 : 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 *
108 : 81498 : _io_BytesIO_getvalue(bytesio *self, PyObject *Py_UNUSED(ignored))
109 : : {
110 : 81498 : 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 *
128 : 2 : _io_BytesIO_isatty(bytesio *self, PyObject *Py_UNUSED(ignored))
129 : : {
130 : 2 : 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 *
146 : 4574363 : _io_BytesIO_tell(bytesio *self, PyObject *Py_UNUSED(ignored))
147 : : {
148 : 4574363 : 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_CAST(_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 *
167 : 11694347 : _io_BytesIO_read(bytesio *self, PyObject *const *args, Py_ssize_t nargs)
168 : : {
169 : 11694347 : PyObject *return_value = NULL;
170 : 11694347 : Py_ssize_t size = -1;
171 : :
172 [ + - - + : 11694347 : if (!_PyArg_CheckPositional("read", nargs, 0, 1)) {
- - ]
173 : 0 : goto exit;
174 : : }
175 [ + + ]: 11694347 : if (nargs < 1) {
176 : 27180 : goto skip_optional;
177 : : }
178 [ + + ]: 11667167 : if (!_Py_convert_optional_to_ssize_t(args[0], &size)) {
179 : 6 : goto exit;
180 : : }
181 : 11667161 : skip_optional:
182 : 11694341 : return_value = _io_BytesIO_read_impl(self, size);
183 : :
184 : 11694347 : exit:
185 : 11694347 : 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_CAST(_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 *
204 : 82 : _io_BytesIO_read1(bytesio *self, PyObject *const *args, Py_ssize_t nargs)
205 : : {
206 : 82 : PyObject *return_value = NULL;
207 : 82 : Py_ssize_t size = -1;
208 : :
209 [ + - - + : 82 : if (!_PyArg_CheckPositional("read1", nargs, 0, 1)) {
- - ]
210 : 0 : goto exit;
211 : : }
212 [ + + ]: 82 : if (nargs < 1) {
213 : 1 : goto skip_optional;
214 : : }
215 [ - + ]: 81 : if (!_Py_convert_optional_to_ssize_t(args[0], &size)) {
216 : 0 : goto exit;
217 : : }
218 : 81 : skip_optional:
219 : 82 : return_value = _io_BytesIO_read1_impl(self, size);
220 : :
221 : 82 : exit:
222 : 82 : 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_CAST(_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 *
242 : 452794 : _io_BytesIO_readline(bytesio *self, PyObject *const *args, Py_ssize_t nargs)
243 : : {
244 : 452794 : PyObject *return_value = NULL;
245 : 452794 : Py_ssize_t size = -1;
246 : :
247 [ + - - + : 452794 : if (!_PyArg_CheckPositional("readline", nargs, 0, 1)) {
- - ]
248 : 0 : goto exit;
249 : : }
250 [ + + ]: 452794 : if (nargs < 1) {
251 : 397674 : goto skip_optional;
252 : : }
253 [ + + ]: 55120 : if (!_Py_convert_optional_to_ssize_t(args[0], &size)) {
254 : 1 : goto exit;
255 : : }
256 : 55119 : skip_optional:
257 : 452793 : return_value = _io_BytesIO_readline_impl(self, size);
258 : :
259 : 452794 : exit:
260 : 452794 : 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_CAST(_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 *
280 : 26 : _io_BytesIO_readlines(bytesio *self, PyObject *const *args, Py_ssize_t nargs)
281 : : {
282 : 26 : PyObject *return_value = NULL;
283 : 26 : PyObject *arg = Py_None;
284 : :
285 [ + - - + : 26 : if (!_PyArg_CheckPositional("readlines", nargs, 0, 1)) {
- - ]
286 : 0 : goto exit;
287 : : }
288 [ + + ]: 26 : if (nargs < 1) {
289 : 21 : goto skip_optional;
290 : : }
291 : 5 : arg = args[0];
292 : 26 : skip_optional:
293 : 26 : return_value = _io_BytesIO_readlines_impl(self, arg);
294 : :
295 : 26 : exit:
296 : 26 : 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 *
315 : 4839 : _io_BytesIO_readinto(bytesio *self, PyObject *arg)
316 : : {
317 : 4839 : PyObject *return_value = NULL;
318 : 4839 : Py_buffer buffer = {NULL, NULL};
319 : :
320 [ + + ]: 4839 : if (PyObject_GetBuffer(arg, &buffer, PyBUF_WRITABLE) < 0) {
321 : 4 : PyErr_Clear();
322 : 4 : _PyArg_BadArgument("readinto", "argument", "read-write bytes-like object", arg);
323 : 4 : goto exit;
324 : : }
325 [ - + ]: 4835 : if (!PyBuffer_IsContiguous(&buffer, 'C')) {
326 : 0 : _PyArg_BadArgument("readinto", "argument", "contiguous buffer", arg);
327 : 0 : goto exit;
328 : : }
329 : 4835 : return_value = _io_BytesIO_readinto_impl(self, &buffer);
330 : :
331 : 4839 : exit:
332 : : /* Cleanup for buffer */
333 [ + + ]: 4839 : if (buffer.obj) {
334 : 4835 : PyBuffer_Release(&buffer);
335 : : }
336 : :
337 : 4839 : 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_CAST(_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 *
356 : 62 : _io_BytesIO_truncate(bytesio *self, PyObject *const *args, Py_ssize_t nargs)
357 : : {
358 : 62 : PyObject *return_value = NULL;
359 : 62 : Py_ssize_t size = self->pos;
360 : :
361 [ + - - + : 62 : if (!_PyArg_CheckPositional("truncate", nargs, 0, 1)) {
- - ]
362 : 0 : goto exit;
363 : : }
364 [ + + ]: 62 : if (nargs < 1) {
365 : 31 : goto skip_optional;
366 : : }
367 [ + + ]: 31 : if (!_Py_convert_optional_to_ssize_t(args[0], &size)) {
368 : 1 : goto exit;
369 : : }
370 : 30 : skip_optional:
371 : 61 : return_value = _io_BytesIO_truncate_impl(self, size);
372 : :
373 : 62 : exit:
374 : 62 : 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_CAST(_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 *
396 : 62887 : _io_BytesIO_seek(bytesio *self, PyObject *const *args, Py_ssize_t nargs)
397 : : {
398 : 62887 : PyObject *return_value = NULL;
399 : : Py_ssize_t pos;
400 : 62887 : int whence = 0;
401 : :
402 [ + - - + : 62887 : if (!_PyArg_CheckPositional("seek", nargs, 1, 2)) {
- - ]
403 : 0 : goto exit;
404 : : }
405 : : {
406 : 62887 : Py_ssize_t ival = -1;
407 : 62887 : PyObject *iobj = _PyNumber_Index(args[0]);
408 [ + + ]: 62887 : if (iobj != NULL) {
409 : 62884 : ival = PyLong_AsSsize_t(iobj);
410 : 62884 : Py_DECREF(iobj);
411 : : }
412 [ + + + + ]: 62887 : if (ival == -1 && PyErr_Occurred()) {
413 : 5 : goto exit;
414 : : }
415 : 62882 : pos = ival;
416 : : }
417 [ + + ]: 62882 : if (nargs < 2) {
418 : 59015 : goto skip_optional;
419 : : }
420 : 3867 : whence = _PyLong_AsInt(args[1]);
421 [ + + + - ]: 3867 : if (whence == -1 && PyErr_Occurred()) {
422 : 0 : goto exit;
423 : : }
424 : 3867 : skip_optional:
425 : 62882 : return_value = _io_BytesIO_seek_impl(self, pos, whence);
426 : :
427 : 62887 : exit:
428 : 62887 : 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 *
468 : 10891 : _io_BytesIO_close(bytesio *self, PyObject *Py_UNUSED(ignored))
469 : : {
470 : 10891 : 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
483 : 241660 : _io_BytesIO___init__(PyObject *self, PyObject *args, PyObject *kwargs)
484 : : {
485 : 241660 : 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 : 241660 : Py_ssize_t nargs = PyTuple_GET_SIZE(args);
491 [ + + ]: 241660 : Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 0;
492 : 241660 : PyObject *initvalue = NULL;
493 : :
494 [ + + + - : 241660 : fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 0, 1, 0, argsbuf);
+ - + - ]
495 [ + + ]: 241660 : if (!fastargs) {
496 : 1 : goto exit;
497 : : }
498 [ + + ]: 241659 : if (!noptargs) {
499 : 174551 : goto skip_optional_pos;
500 : : }
501 : 67108 : initvalue = fastargs[0];
502 : 241659 : skip_optional_pos:
503 : 241659 : return_value = _io_BytesIO___init___impl((bytesio *)self, initvalue);
504 : :
505 : 241660 : exit:
506 : 241660 : return return_value;
507 : : }
508 : : /*[clinic end generated code: output=93d9700a6cf395b8 input=a9049054013a1b77]*/
|