1 /*[clinic input]
2 preserve
3 [clinic start generated code]*/
4
5 PyDoc_STRVAR(bytes_split__doc__,
6 "split($self, /, sep=None, maxsplit=-1)\n"
7 "--\n"
8 "\n"
9 "Return a list of the sections in the bytes, using sep as the delimiter.\n"
10 "\n"
11 " sep\n"
12 " The delimiter according which to split the bytes.\n"
13 " None (the default value) means split on ASCII whitespace characters\n"
14 " (space, tab, return, newline, formfeed, vertical tab).\n"
15 " maxsplit\n"
16 " Maximum number of splits to do.\n"
17 " -1 (the default value) means no limit.");
18
19 #define BYTES_SPLIT_METHODDEF \
20 {"split", (PyCFunction)bytes_split, METH_FASTCALL|METH_KEYWORDS, bytes_split__doc__},
21
22 static PyObject *
23 bytes_split_impl(PyBytesObject *self, PyObject *sep, Py_ssize_t maxsplit);
24
25 static PyObject *
bytes_split(PyBytesObject * self,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)26 bytes_split(PyBytesObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
27 {
28 PyObject *return_value = NULL;
29 static const char * const _keywords[] = {"sep", "maxsplit", NULL};
30 static _PyArg_Parser _parser = {"|On:split", _keywords, 0};
31 PyObject *sep = Py_None;
32 Py_ssize_t maxsplit = -1;
33
34 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
35 &sep, &maxsplit)) {
36 goto exit;
37 }
38 return_value = bytes_split_impl(self, sep, maxsplit);
39
40 exit:
41 return return_value;
42 }
43
44 PyDoc_STRVAR(bytes_partition__doc__,
45 "partition($self, sep, /)\n"
46 "--\n"
47 "\n"
48 "Partition the bytes into three parts using the given separator.\n"
49 "\n"
50 "This will search for the separator sep in the bytes. If the separator is found,\n"
51 "returns a 3-tuple containing the part before the separator, the separator\n"
52 "itself, and the part after it.\n"
53 "\n"
54 "If the separator is not found, returns a 3-tuple containing the original bytes\n"
55 "object and two empty bytes objects.");
56
57 #define BYTES_PARTITION_METHODDEF \
58 {"partition", (PyCFunction)bytes_partition, METH_O, bytes_partition__doc__},
59
60 static PyObject *
61 bytes_partition_impl(PyBytesObject *self, Py_buffer *sep);
62
63 static PyObject *
bytes_partition(PyBytesObject * self,PyObject * arg)64 bytes_partition(PyBytesObject *self, PyObject *arg)
65 {
66 PyObject *return_value = NULL;
67 Py_buffer sep = {NULL, NULL};
68
69 if (!PyArg_Parse(arg, "y*:partition", &sep)) {
70 goto exit;
71 }
72 return_value = bytes_partition_impl(self, &sep);
73
74 exit:
75 /* Cleanup for sep */
76 if (sep.obj) {
77 PyBuffer_Release(&sep);
78 }
79
80 return return_value;
81 }
82
83 PyDoc_STRVAR(bytes_rpartition__doc__,
84 "rpartition($self, sep, /)\n"
85 "--\n"
86 "\n"
87 "Partition the bytes into three parts using the given separator.\n"
88 "\n"
89 "This will search for the separator sep in the bytes, starting at the end. If\n"
90 "the separator is found, returns a 3-tuple containing the part before the\n"
91 "separator, the separator itself, and the part after it.\n"
92 "\n"
93 "If the separator is not found, returns a 3-tuple containing two empty bytes\n"
94 "objects and the original bytes object.");
95
96 #define BYTES_RPARTITION_METHODDEF \
97 {"rpartition", (PyCFunction)bytes_rpartition, METH_O, bytes_rpartition__doc__},
98
99 static PyObject *
100 bytes_rpartition_impl(PyBytesObject *self, Py_buffer *sep);
101
102 static PyObject *
bytes_rpartition(PyBytesObject * self,PyObject * arg)103 bytes_rpartition(PyBytesObject *self, PyObject *arg)
104 {
105 PyObject *return_value = NULL;
106 Py_buffer sep = {NULL, NULL};
107
108 if (!PyArg_Parse(arg, "y*:rpartition", &sep)) {
109 goto exit;
110 }
111 return_value = bytes_rpartition_impl(self, &sep);
112
113 exit:
114 /* Cleanup for sep */
115 if (sep.obj) {
116 PyBuffer_Release(&sep);
117 }
118
119 return return_value;
120 }
121
122 PyDoc_STRVAR(bytes_rsplit__doc__,
123 "rsplit($self, /, sep=None, maxsplit=-1)\n"
124 "--\n"
125 "\n"
126 "Return a list of the sections in the bytes, using sep as the delimiter.\n"
127 "\n"
128 " sep\n"
129 " The delimiter according which to split the bytes.\n"
130 " None (the default value) means split on ASCII whitespace characters\n"
131 " (space, tab, return, newline, formfeed, vertical tab).\n"
132 " maxsplit\n"
133 " Maximum number of splits to do.\n"
134 " -1 (the default value) means no limit.\n"
135 "\n"
136 "Splitting is done starting at the end of the bytes and working to the front.");
137
138 #define BYTES_RSPLIT_METHODDEF \
139 {"rsplit", (PyCFunction)bytes_rsplit, METH_FASTCALL|METH_KEYWORDS, bytes_rsplit__doc__},
140
141 static PyObject *
142 bytes_rsplit_impl(PyBytesObject *self, PyObject *sep, Py_ssize_t maxsplit);
143
144 static PyObject *
bytes_rsplit(PyBytesObject * self,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)145 bytes_rsplit(PyBytesObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
146 {
147 PyObject *return_value = NULL;
148 static const char * const _keywords[] = {"sep", "maxsplit", NULL};
149 static _PyArg_Parser _parser = {"|On:rsplit", _keywords, 0};
150 PyObject *sep = Py_None;
151 Py_ssize_t maxsplit = -1;
152
153 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
154 &sep, &maxsplit)) {
155 goto exit;
156 }
157 return_value = bytes_rsplit_impl(self, sep, maxsplit);
158
159 exit:
160 return return_value;
161 }
162
163 PyDoc_STRVAR(bytes_join__doc__,
164 "join($self, iterable_of_bytes, /)\n"
165 "--\n"
166 "\n"
167 "Concatenate any number of bytes objects.\n"
168 "\n"
169 "The bytes whose method is called is inserted in between each pair.\n"
170 "\n"
171 "The result is returned as a new bytes object.\n"
172 "\n"
173 "Example: b\'.\'.join([b\'ab\', b\'pq\', b\'rs\']) -> b\'ab.pq.rs\'.");
174
175 #define BYTES_JOIN_METHODDEF \
176 {"join", (PyCFunction)bytes_join, METH_O, bytes_join__doc__},
177
178 PyDoc_STRVAR(bytes_strip__doc__,
179 "strip($self, bytes=None, /)\n"
180 "--\n"
181 "\n"
182 "Strip leading and trailing bytes contained in the argument.\n"
183 "\n"
184 "If the argument is omitted or None, strip leading and trailing ASCII whitespace.");
185
186 #define BYTES_STRIP_METHODDEF \
187 {"strip", (PyCFunction)bytes_strip, METH_FASTCALL, bytes_strip__doc__},
188
189 static PyObject *
190 bytes_strip_impl(PyBytesObject *self, PyObject *bytes);
191
192 static PyObject *
bytes_strip(PyBytesObject * self,PyObject * const * args,Py_ssize_t nargs)193 bytes_strip(PyBytesObject *self, PyObject *const *args, Py_ssize_t nargs)
194 {
195 PyObject *return_value = NULL;
196 PyObject *bytes = Py_None;
197
198 if (!_PyArg_UnpackStack(args, nargs, "strip",
199 0, 1,
200 &bytes)) {
201 goto exit;
202 }
203 return_value = bytes_strip_impl(self, bytes);
204
205 exit:
206 return return_value;
207 }
208
209 PyDoc_STRVAR(bytes_lstrip__doc__,
210 "lstrip($self, bytes=None, /)\n"
211 "--\n"
212 "\n"
213 "Strip leading bytes contained in the argument.\n"
214 "\n"
215 "If the argument is omitted or None, strip leading ASCII whitespace.");
216
217 #define BYTES_LSTRIP_METHODDEF \
218 {"lstrip", (PyCFunction)bytes_lstrip, METH_FASTCALL, bytes_lstrip__doc__},
219
220 static PyObject *
221 bytes_lstrip_impl(PyBytesObject *self, PyObject *bytes);
222
223 static PyObject *
bytes_lstrip(PyBytesObject * self,PyObject * const * args,Py_ssize_t nargs)224 bytes_lstrip(PyBytesObject *self, PyObject *const *args, Py_ssize_t nargs)
225 {
226 PyObject *return_value = NULL;
227 PyObject *bytes = Py_None;
228
229 if (!_PyArg_UnpackStack(args, nargs, "lstrip",
230 0, 1,
231 &bytes)) {
232 goto exit;
233 }
234 return_value = bytes_lstrip_impl(self, bytes);
235
236 exit:
237 return return_value;
238 }
239
240 PyDoc_STRVAR(bytes_rstrip__doc__,
241 "rstrip($self, bytes=None, /)\n"
242 "--\n"
243 "\n"
244 "Strip trailing bytes contained in the argument.\n"
245 "\n"
246 "If the argument is omitted or None, strip trailing ASCII whitespace.");
247
248 #define BYTES_RSTRIP_METHODDEF \
249 {"rstrip", (PyCFunction)bytes_rstrip, METH_FASTCALL, bytes_rstrip__doc__},
250
251 static PyObject *
252 bytes_rstrip_impl(PyBytesObject *self, PyObject *bytes);
253
254 static PyObject *
bytes_rstrip(PyBytesObject * self,PyObject * const * args,Py_ssize_t nargs)255 bytes_rstrip(PyBytesObject *self, PyObject *const *args, Py_ssize_t nargs)
256 {
257 PyObject *return_value = NULL;
258 PyObject *bytes = Py_None;
259
260 if (!_PyArg_UnpackStack(args, nargs, "rstrip",
261 0, 1,
262 &bytes)) {
263 goto exit;
264 }
265 return_value = bytes_rstrip_impl(self, bytes);
266
267 exit:
268 return return_value;
269 }
270
271 PyDoc_STRVAR(bytes_translate__doc__,
272 "translate($self, table, /, delete=b\'\')\n"
273 "--\n"
274 "\n"
275 "Return a copy with each character mapped by the given translation table.\n"
276 "\n"
277 " table\n"
278 " Translation table, which must be a bytes object of length 256.\n"
279 "\n"
280 "All characters occurring in the optional argument delete are removed.\n"
281 "The remaining characters are mapped through the given translation table.");
282
283 #define BYTES_TRANSLATE_METHODDEF \
284 {"translate", (PyCFunction)bytes_translate, METH_FASTCALL|METH_KEYWORDS, bytes_translate__doc__},
285
286 static PyObject *
287 bytes_translate_impl(PyBytesObject *self, PyObject *table,
288 PyObject *deletechars);
289
290 static PyObject *
bytes_translate(PyBytesObject * self,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)291 bytes_translate(PyBytesObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
292 {
293 PyObject *return_value = NULL;
294 static const char * const _keywords[] = {"", "delete", NULL};
295 static _PyArg_Parser _parser = {"O|O:translate", _keywords, 0};
296 PyObject *table;
297 PyObject *deletechars = NULL;
298
299 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
300 &table, &deletechars)) {
301 goto exit;
302 }
303 return_value = bytes_translate_impl(self, table, deletechars);
304
305 exit:
306 return return_value;
307 }
308
309 PyDoc_STRVAR(bytes_maketrans__doc__,
310 "maketrans(frm, to, /)\n"
311 "--\n"
312 "\n"
313 "Return a translation table useable for the bytes or bytearray translate method.\n"
314 "\n"
315 "The returned table will be one where each byte in frm is mapped to the byte at\n"
316 "the same position in to.\n"
317 "\n"
318 "The bytes objects frm and to must be of the same length.");
319
320 #define BYTES_MAKETRANS_METHODDEF \
321 {"maketrans", (PyCFunction)bytes_maketrans, METH_FASTCALL|METH_STATIC, bytes_maketrans__doc__},
322
323 static PyObject *
324 bytes_maketrans_impl(Py_buffer *frm, Py_buffer *to);
325
326 static PyObject *
bytes_maketrans(void * null,PyObject * const * args,Py_ssize_t nargs)327 bytes_maketrans(void *null, PyObject *const *args, Py_ssize_t nargs)
328 {
329 PyObject *return_value = NULL;
330 Py_buffer frm = {NULL, NULL};
331 Py_buffer to = {NULL, NULL};
332
333 if (!_PyArg_ParseStack(args, nargs, "y*y*:maketrans",
334 &frm, &to)) {
335 goto exit;
336 }
337 return_value = bytes_maketrans_impl(&frm, &to);
338
339 exit:
340 /* Cleanup for frm */
341 if (frm.obj) {
342 PyBuffer_Release(&frm);
343 }
344 /* Cleanup for to */
345 if (to.obj) {
346 PyBuffer_Release(&to);
347 }
348
349 return return_value;
350 }
351
352 PyDoc_STRVAR(bytes_replace__doc__,
353 "replace($self, old, new, count=-1, /)\n"
354 "--\n"
355 "\n"
356 "Return a copy with all occurrences of substring old replaced by new.\n"
357 "\n"
358 " count\n"
359 " Maximum number of occurrences to replace.\n"
360 " -1 (the default value) means replace all occurrences.\n"
361 "\n"
362 "If the optional argument count is given, only the first count occurrences are\n"
363 "replaced.");
364
365 #define BYTES_REPLACE_METHODDEF \
366 {"replace", (PyCFunction)bytes_replace, METH_FASTCALL, bytes_replace__doc__},
367
368 static PyObject *
369 bytes_replace_impl(PyBytesObject *self, Py_buffer *old, Py_buffer *new,
370 Py_ssize_t count);
371
372 static PyObject *
bytes_replace(PyBytesObject * self,PyObject * const * args,Py_ssize_t nargs)373 bytes_replace(PyBytesObject *self, PyObject *const *args, Py_ssize_t nargs)
374 {
375 PyObject *return_value = NULL;
376 Py_buffer old = {NULL, NULL};
377 Py_buffer new = {NULL, NULL};
378 Py_ssize_t count = -1;
379
380 if (!_PyArg_ParseStack(args, nargs, "y*y*|n:replace",
381 &old, &new, &count)) {
382 goto exit;
383 }
384 return_value = bytes_replace_impl(self, &old, &new, count);
385
386 exit:
387 /* Cleanup for old */
388 if (old.obj) {
389 PyBuffer_Release(&old);
390 }
391 /* Cleanup for new */
392 if (new.obj) {
393 PyBuffer_Release(&new);
394 }
395
396 return return_value;
397 }
398
399 PyDoc_STRVAR(bytes_decode__doc__,
400 "decode($self, /, encoding=\'utf-8\', errors=\'strict\')\n"
401 "--\n"
402 "\n"
403 "Decode the bytes using the codec registered for encoding.\n"
404 "\n"
405 " encoding\n"
406 " The encoding with which to decode the bytes.\n"
407 " errors\n"
408 " The error handling scheme to use for the handling of decoding errors.\n"
409 " The default is \'strict\' meaning that decoding errors raise a\n"
410 " UnicodeDecodeError. Other possible values are \'ignore\' and \'replace\'\n"
411 " as well as any other name registered with codecs.register_error that\n"
412 " can handle UnicodeDecodeErrors.");
413
414 #define BYTES_DECODE_METHODDEF \
415 {"decode", (PyCFunction)bytes_decode, METH_FASTCALL|METH_KEYWORDS, bytes_decode__doc__},
416
417 static PyObject *
418 bytes_decode_impl(PyBytesObject *self, const char *encoding,
419 const char *errors);
420
421 static PyObject *
bytes_decode(PyBytesObject * self,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)422 bytes_decode(PyBytesObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
423 {
424 PyObject *return_value = NULL;
425 static const char * const _keywords[] = {"encoding", "errors", NULL};
426 static _PyArg_Parser _parser = {"|ss:decode", _keywords, 0};
427 const char *encoding = NULL;
428 const char *errors = NULL;
429
430 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
431 &encoding, &errors)) {
432 goto exit;
433 }
434 return_value = bytes_decode_impl(self, encoding, errors);
435
436 exit:
437 return return_value;
438 }
439
440 PyDoc_STRVAR(bytes_splitlines__doc__,
441 "splitlines($self, /, keepends=False)\n"
442 "--\n"
443 "\n"
444 "Return a list of the lines in the bytes, breaking at line boundaries.\n"
445 "\n"
446 "Line breaks are not included in the resulting list unless keepends is given and\n"
447 "true.");
448
449 #define BYTES_SPLITLINES_METHODDEF \
450 {"splitlines", (PyCFunction)bytes_splitlines, METH_FASTCALL|METH_KEYWORDS, bytes_splitlines__doc__},
451
452 static PyObject *
453 bytes_splitlines_impl(PyBytesObject *self, int keepends);
454
455 static PyObject *
bytes_splitlines(PyBytesObject * self,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)456 bytes_splitlines(PyBytesObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
457 {
458 PyObject *return_value = NULL;
459 static const char * const _keywords[] = {"keepends", NULL};
460 static _PyArg_Parser _parser = {"|i:splitlines", _keywords, 0};
461 int keepends = 0;
462
463 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
464 &keepends)) {
465 goto exit;
466 }
467 return_value = bytes_splitlines_impl(self, keepends);
468
469 exit:
470 return return_value;
471 }
472
473 PyDoc_STRVAR(bytes_fromhex__doc__,
474 "fromhex($type, string, /)\n"
475 "--\n"
476 "\n"
477 "Create a bytes object from a string of hexadecimal numbers.\n"
478 "\n"
479 "Spaces between two numbers are accepted.\n"
480 "Example: bytes.fromhex(\'B9 01EF\') -> b\'\\\\xb9\\\\x01\\\\xef\'.");
481
482 #define BYTES_FROMHEX_METHODDEF \
483 {"fromhex", (PyCFunction)bytes_fromhex, METH_O|METH_CLASS, bytes_fromhex__doc__},
484
485 static PyObject *
486 bytes_fromhex_impl(PyTypeObject *type, PyObject *string);
487
488 static PyObject *
bytes_fromhex(PyTypeObject * type,PyObject * arg)489 bytes_fromhex(PyTypeObject *type, PyObject *arg)
490 {
491 PyObject *return_value = NULL;
492 PyObject *string;
493
494 if (!PyArg_Parse(arg, "U:fromhex", &string)) {
495 goto exit;
496 }
497 return_value = bytes_fromhex_impl(type, string);
498
499 exit:
500 return return_value;
501 }
502 /*[clinic end generated code: output=470acd12b2534765 input=a9049054013a1b77]*/
503