17db96d56Sopenharmony_ci/*[clinic input]
27db96d56Sopenharmony_cipreserve
37db96d56Sopenharmony_ci[clinic start generated code]*/
47db96d56Sopenharmony_ci
57db96d56Sopenharmony_ciPyDoc_STRVAR(bytes___bytes____doc__,
67db96d56Sopenharmony_ci"__bytes__($self, /)\n"
77db96d56Sopenharmony_ci"--\n"
87db96d56Sopenharmony_ci"\n"
97db96d56Sopenharmony_ci"Convert this value to exact type bytes.");
107db96d56Sopenharmony_ci
117db96d56Sopenharmony_ci#define BYTES___BYTES___METHODDEF    \
127db96d56Sopenharmony_ci    {"__bytes__", (PyCFunction)bytes___bytes__, METH_NOARGS, bytes___bytes____doc__},
137db96d56Sopenharmony_ci
147db96d56Sopenharmony_cistatic PyObject *
157db96d56Sopenharmony_cibytes___bytes___impl(PyBytesObject *self);
167db96d56Sopenharmony_ci
177db96d56Sopenharmony_cistatic PyObject *
187db96d56Sopenharmony_cibytes___bytes__(PyBytesObject *self, PyObject *Py_UNUSED(ignored))
197db96d56Sopenharmony_ci{
207db96d56Sopenharmony_ci    return bytes___bytes___impl(self);
217db96d56Sopenharmony_ci}
227db96d56Sopenharmony_ci
237db96d56Sopenharmony_ciPyDoc_STRVAR(bytes_split__doc__,
247db96d56Sopenharmony_ci"split($self, /, sep=None, maxsplit=-1)\n"
257db96d56Sopenharmony_ci"--\n"
267db96d56Sopenharmony_ci"\n"
277db96d56Sopenharmony_ci"Return a list of the sections in the bytes, using sep as the delimiter.\n"
287db96d56Sopenharmony_ci"\n"
297db96d56Sopenharmony_ci"  sep\n"
307db96d56Sopenharmony_ci"    The delimiter according which to split the bytes.\n"
317db96d56Sopenharmony_ci"    None (the default value) means split on ASCII whitespace characters\n"
327db96d56Sopenharmony_ci"    (space, tab, return, newline, formfeed, vertical tab).\n"
337db96d56Sopenharmony_ci"  maxsplit\n"
347db96d56Sopenharmony_ci"    Maximum number of splits to do.\n"
357db96d56Sopenharmony_ci"    -1 (the default value) means no limit.");
367db96d56Sopenharmony_ci
377db96d56Sopenharmony_ci#define BYTES_SPLIT_METHODDEF    \
387db96d56Sopenharmony_ci    {"split", _PyCFunction_CAST(bytes_split), METH_FASTCALL|METH_KEYWORDS, bytes_split__doc__},
397db96d56Sopenharmony_ci
407db96d56Sopenharmony_cistatic PyObject *
417db96d56Sopenharmony_cibytes_split_impl(PyBytesObject *self, PyObject *sep, Py_ssize_t maxsplit);
427db96d56Sopenharmony_ci
437db96d56Sopenharmony_cistatic PyObject *
447db96d56Sopenharmony_cibytes_split(PyBytesObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
457db96d56Sopenharmony_ci{
467db96d56Sopenharmony_ci    PyObject *return_value = NULL;
477db96d56Sopenharmony_ci    static const char * const _keywords[] = {"sep", "maxsplit", NULL};
487db96d56Sopenharmony_ci    static _PyArg_Parser _parser = {NULL, _keywords, "split", 0};
497db96d56Sopenharmony_ci    PyObject *argsbuf[2];
507db96d56Sopenharmony_ci    Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
517db96d56Sopenharmony_ci    PyObject *sep = Py_None;
527db96d56Sopenharmony_ci    Py_ssize_t maxsplit = -1;
537db96d56Sopenharmony_ci
547db96d56Sopenharmony_ci    args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 2, 0, argsbuf);
557db96d56Sopenharmony_ci    if (!args) {
567db96d56Sopenharmony_ci        goto exit;
577db96d56Sopenharmony_ci    }
587db96d56Sopenharmony_ci    if (!noptargs) {
597db96d56Sopenharmony_ci        goto skip_optional_pos;
607db96d56Sopenharmony_ci    }
617db96d56Sopenharmony_ci    if (args[0]) {
627db96d56Sopenharmony_ci        sep = args[0];
637db96d56Sopenharmony_ci        if (!--noptargs) {
647db96d56Sopenharmony_ci            goto skip_optional_pos;
657db96d56Sopenharmony_ci        }
667db96d56Sopenharmony_ci    }
677db96d56Sopenharmony_ci    {
687db96d56Sopenharmony_ci        Py_ssize_t ival = -1;
697db96d56Sopenharmony_ci        PyObject *iobj = _PyNumber_Index(args[1]);
707db96d56Sopenharmony_ci        if (iobj != NULL) {
717db96d56Sopenharmony_ci            ival = PyLong_AsSsize_t(iobj);
727db96d56Sopenharmony_ci            Py_DECREF(iobj);
737db96d56Sopenharmony_ci        }
747db96d56Sopenharmony_ci        if (ival == -1 && PyErr_Occurred()) {
757db96d56Sopenharmony_ci            goto exit;
767db96d56Sopenharmony_ci        }
777db96d56Sopenharmony_ci        maxsplit = ival;
787db96d56Sopenharmony_ci    }
797db96d56Sopenharmony_ciskip_optional_pos:
807db96d56Sopenharmony_ci    return_value = bytes_split_impl(self, sep, maxsplit);
817db96d56Sopenharmony_ci
827db96d56Sopenharmony_ciexit:
837db96d56Sopenharmony_ci    return return_value;
847db96d56Sopenharmony_ci}
857db96d56Sopenharmony_ci
867db96d56Sopenharmony_ciPyDoc_STRVAR(bytes_partition__doc__,
877db96d56Sopenharmony_ci"partition($self, sep, /)\n"
887db96d56Sopenharmony_ci"--\n"
897db96d56Sopenharmony_ci"\n"
907db96d56Sopenharmony_ci"Partition the bytes into three parts using the given separator.\n"
917db96d56Sopenharmony_ci"\n"
927db96d56Sopenharmony_ci"This will search for the separator sep in the bytes. If the separator is found,\n"
937db96d56Sopenharmony_ci"returns a 3-tuple containing the part before the separator, the separator\n"
947db96d56Sopenharmony_ci"itself, and the part after it.\n"
957db96d56Sopenharmony_ci"\n"
967db96d56Sopenharmony_ci"If the separator is not found, returns a 3-tuple containing the original bytes\n"
977db96d56Sopenharmony_ci"object and two empty bytes objects.");
987db96d56Sopenharmony_ci
997db96d56Sopenharmony_ci#define BYTES_PARTITION_METHODDEF    \
1007db96d56Sopenharmony_ci    {"partition", (PyCFunction)bytes_partition, METH_O, bytes_partition__doc__},
1017db96d56Sopenharmony_ci
1027db96d56Sopenharmony_cistatic PyObject *
1037db96d56Sopenharmony_cibytes_partition_impl(PyBytesObject *self, Py_buffer *sep);
1047db96d56Sopenharmony_ci
1057db96d56Sopenharmony_cistatic PyObject *
1067db96d56Sopenharmony_cibytes_partition(PyBytesObject *self, PyObject *arg)
1077db96d56Sopenharmony_ci{
1087db96d56Sopenharmony_ci    PyObject *return_value = NULL;
1097db96d56Sopenharmony_ci    Py_buffer sep = {NULL, NULL};
1107db96d56Sopenharmony_ci
1117db96d56Sopenharmony_ci    if (PyObject_GetBuffer(arg, &sep, PyBUF_SIMPLE) != 0) {
1127db96d56Sopenharmony_ci        goto exit;
1137db96d56Sopenharmony_ci    }
1147db96d56Sopenharmony_ci    if (!PyBuffer_IsContiguous(&sep, 'C')) {
1157db96d56Sopenharmony_ci        _PyArg_BadArgument("partition", "argument", "contiguous buffer", arg);
1167db96d56Sopenharmony_ci        goto exit;
1177db96d56Sopenharmony_ci    }
1187db96d56Sopenharmony_ci    return_value = bytes_partition_impl(self, &sep);
1197db96d56Sopenharmony_ci
1207db96d56Sopenharmony_ciexit:
1217db96d56Sopenharmony_ci    /* Cleanup for sep */
1227db96d56Sopenharmony_ci    if (sep.obj) {
1237db96d56Sopenharmony_ci       PyBuffer_Release(&sep);
1247db96d56Sopenharmony_ci    }
1257db96d56Sopenharmony_ci
1267db96d56Sopenharmony_ci    return return_value;
1277db96d56Sopenharmony_ci}
1287db96d56Sopenharmony_ci
1297db96d56Sopenharmony_ciPyDoc_STRVAR(bytes_rpartition__doc__,
1307db96d56Sopenharmony_ci"rpartition($self, sep, /)\n"
1317db96d56Sopenharmony_ci"--\n"
1327db96d56Sopenharmony_ci"\n"
1337db96d56Sopenharmony_ci"Partition the bytes into three parts using the given separator.\n"
1347db96d56Sopenharmony_ci"\n"
1357db96d56Sopenharmony_ci"This will search for the separator sep in the bytes, starting at the end. If\n"
1367db96d56Sopenharmony_ci"the separator is found, returns a 3-tuple containing the part before the\n"
1377db96d56Sopenharmony_ci"separator, the separator itself, and the part after it.\n"
1387db96d56Sopenharmony_ci"\n"
1397db96d56Sopenharmony_ci"If the separator is not found, returns a 3-tuple containing two empty bytes\n"
1407db96d56Sopenharmony_ci"objects and the original bytes object.");
1417db96d56Sopenharmony_ci
1427db96d56Sopenharmony_ci#define BYTES_RPARTITION_METHODDEF    \
1437db96d56Sopenharmony_ci    {"rpartition", (PyCFunction)bytes_rpartition, METH_O, bytes_rpartition__doc__},
1447db96d56Sopenharmony_ci
1457db96d56Sopenharmony_cistatic PyObject *
1467db96d56Sopenharmony_cibytes_rpartition_impl(PyBytesObject *self, Py_buffer *sep);
1477db96d56Sopenharmony_ci
1487db96d56Sopenharmony_cistatic PyObject *
1497db96d56Sopenharmony_cibytes_rpartition(PyBytesObject *self, PyObject *arg)
1507db96d56Sopenharmony_ci{
1517db96d56Sopenharmony_ci    PyObject *return_value = NULL;
1527db96d56Sopenharmony_ci    Py_buffer sep = {NULL, NULL};
1537db96d56Sopenharmony_ci
1547db96d56Sopenharmony_ci    if (PyObject_GetBuffer(arg, &sep, PyBUF_SIMPLE) != 0) {
1557db96d56Sopenharmony_ci        goto exit;
1567db96d56Sopenharmony_ci    }
1577db96d56Sopenharmony_ci    if (!PyBuffer_IsContiguous(&sep, 'C')) {
1587db96d56Sopenharmony_ci        _PyArg_BadArgument("rpartition", "argument", "contiguous buffer", arg);
1597db96d56Sopenharmony_ci        goto exit;
1607db96d56Sopenharmony_ci    }
1617db96d56Sopenharmony_ci    return_value = bytes_rpartition_impl(self, &sep);
1627db96d56Sopenharmony_ci
1637db96d56Sopenharmony_ciexit:
1647db96d56Sopenharmony_ci    /* Cleanup for sep */
1657db96d56Sopenharmony_ci    if (sep.obj) {
1667db96d56Sopenharmony_ci       PyBuffer_Release(&sep);
1677db96d56Sopenharmony_ci    }
1687db96d56Sopenharmony_ci
1697db96d56Sopenharmony_ci    return return_value;
1707db96d56Sopenharmony_ci}
1717db96d56Sopenharmony_ci
1727db96d56Sopenharmony_ciPyDoc_STRVAR(bytes_rsplit__doc__,
1737db96d56Sopenharmony_ci"rsplit($self, /, sep=None, maxsplit=-1)\n"
1747db96d56Sopenharmony_ci"--\n"
1757db96d56Sopenharmony_ci"\n"
1767db96d56Sopenharmony_ci"Return a list of the sections in the bytes, using sep as the delimiter.\n"
1777db96d56Sopenharmony_ci"\n"
1787db96d56Sopenharmony_ci"  sep\n"
1797db96d56Sopenharmony_ci"    The delimiter according which to split the bytes.\n"
1807db96d56Sopenharmony_ci"    None (the default value) means split on ASCII whitespace characters\n"
1817db96d56Sopenharmony_ci"    (space, tab, return, newline, formfeed, vertical tab).\n"
1827db96d56Sopenharmony_ci"  maxsplit\n"
1837db96d56Sopenharmony_ci"    Maximum number of splits to do.\n"
1847db96d56Sopenharmony_ci"    -1 (the default value) means no limit.\n"
1857db96d56Sopenharmony_ci"\n"
1867db96d56Sopenharmony_ci"Splitting is done starting at the end of the bytes and working to the front.");
1877db96d56Sopenharmony_ci
1887db96d56Sopenharmony_ci#define BYTES_RSPLIT_METHODDEF    \
1897db96d56Sopenharmony_ci    {"rsplit", _PyCFunction_CAST(bytes_rsplit), METH_FASTCALL|METH_KEYWORDS, bytes_rsplit__doc__},
1907db96d56Sopenharmony_ci
1917db96d56Sopenharmony_cistatic PyObject *
1927db96d56Sopenharmony_cibytes_rsplit_impl(PyBytesObject *self, PyObject *sep, Py_ssize_t maxsplit);
1937db96d56Sopenharmony_ci
1947db96d56Sopenharmony_cistatic PyObject *
1957db96d56Sopenharmony_cibytes_rsplit(PyBytesObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
1967db96d56Sopenharmony_ci{
1977db96d56Sopenharmony_ci    PyObject *return_value = NULL;
1987db96d56Sopenharmony_ci    static const char * const _keywords[] = {"sep", "maxsplit", NULL};
1997db96d56Sopenharmony_ci    static _PyArg_Parser _parser = {NULL, _keywords, "rsplit", 0};
2007db96d56Sopenharmony_ci    PyObject *argsbuf[2];
2017db96d56Sopenharmony_ci    Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
2027db96d56Sopenharmony_ci    PyObject *sep = Py_None;
2037db96d56Sopenharmony_ci    Py_ssize_t maxsplit = -1;
2047db96d56Sopenharmony_ci
2057db96d56Sopenharmony_ci    args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 2, 0, argsbuf);
2067db96d56Sopenharmony_ci    if (!args) {
2077db96d56Sopenharmony_ci        goto exit;
2087db96d56Sopenharmony_ci    }
2097db96d56Sopenharmony_ci    if (!noptargs) {
2107db96d56Sopenharmony_ci        goto skip_optional_pos;
2117db96d56Sopenharmony_ci    }
2127db96d56Sopenharmony_ci    if (args[0]) {
2137db96d56Sopenharmony_ci        sep = args[0];
2147db96d56Sopenharmony_ci        if (!--noptargs) {
2157db96d56Sopenharmony_ci            goto skip_optional_pos;
2167db96d56Sopenharmony_ci        }
2177db96d56Sopenharmony_ci    }
2187db96d56Sopenharmony_ci    {
2197db96d56Sopenharmony_ci        Py_ssize_t ival = -1;
2207db96d56Sopenharmony_ci        PyObject *iobj = _PyNumber_Index(args[1]);
2217db96d56Sopenharmony_ci        if (iobj != NULL) {
2227db96d56Sopenharmony_ci            ival = PyLong_AsSsize_t(iobj);
2237db96d56Sopenharmony_ci            Py_DECREF(iobj);
2247db96d56Sopenharmony_ci        }
2257db96d56Sopenharmony_ci        if (ival == -1 && PyErr_Occurred()) {
2267db96d56Sopenharmony_ci            goto exit;
2277db96d56Sopenharmony_ci        }
2287db96d56Sopenharmony_ci        maxsplit = ival;
2297db96d56Sopenharmony_ci    }
2307db96d56Sopenharmony_ciskip_optional_pos:
2317db96d56Sopenharmony_ci    return_value = bytes_rsplit_impl(self, sep, maxsplit);
2327db96d56Sopenharmony_ci
2337db96d56Sopenharmony_ciexit:
2347db96d56Sopenharmony_ci    return return_value;
2357db96d56Sopenharmony_ci}
2367db96d56Sopenharmony_ci
2377db96d56Sopenharmony_ciPyDoc_STRVAR(bytes_join__doc__,
2387db96d56Sopenharmony_ci"join($self, iterable_of_bytes, /)\n"
2397db96d56Sopenharmony_ci"--\n"
2407db96d56Sopenharmony_ci"\n"
2417db96d56Sopenharmony_ci"Concatenate any number of bytes objects.\n"
2427db96d56Sopenharmony_ci"\n"
2437db96d56Sopenharmony_ci"The bytes whose method is called is inserted in between each pair.\n"
2447db96d56Sopenharmony_ci"\n"
2457db96d56Sopenharmony_ci"The result is returned as a new bytes object.\n"
2467db96d56Sopenharmony_ci"\n"
2477db96d56Sopenharmony_ci"Example: b\'.\'.join([b\'ab\', b\'pq\', b\'rs\']) -> b\'ab.pq.rs\'.");
2487db96d56Sopenharmony_ci
2497db96d56Sopenharmony_ci#define BYTES_JOIN_METHODDEF    \
2507db96d56Sopenharmony_ci    {"join", (PyCFunction)bytes_join, METH_O, bytes_join__doc__},
2517db96d56Sopenharmony_ci
2527db96d56Sopenharmony_ciPyDoc_STRVAR(bytes_strip__doc__,
2537db96d56Sopenharmony_ci"strip($self, bytes=None, /)\n"
2547db96d56Sopenharmony_ci"--\n"
2557db96d56Sopenharmony_ci"\n"
2567db96d56Sopenharmony_ci"Strip leading and trailing bytes contained in the argument.\n"
2577db96d56Sopenharmony_ci"\n"
2587db96d56Sopenharmony_ci"If the argument is omitted or None, strip leading and trailing ASCII whitespace.");
2597db96d56Sopenharmony_ci
2607db96d56Sopenharmony_ci#define BYTES_STRIP_METHODDEF    \
2617db96d56Sopenharmony_ci    {"strip", _PyCFunction_CAST(bytes_strip), METH_FASTCALL, bytes_strip__doc__},
2627db96d56Sopenharmony_ci
2637db96d56Sopenharmony_cistatic PyObject *
2647db96d56Sopenharmony_cibytes_strip_impl(PyBytesObject *self, PyObject *bytes);
2657db96d56Sopenharmony_ci
2667db96d56Sopenharmony_cistatic PyObject *
2677db96d56Sopenharmony_cibytes_strip(PyBytesObject *self, PyObject *const *args, Py_ssize_t nargs)
2687db96d56Sopenharmony_ci{
2697db96d56Sopenharmony_ci    PyObject *return_value = NULL;
2707db96d56Sopenharmony_ci    PyObject *bytes = Py_None;
2717db96d56Sopenharmony_ci
2727db96d56Sopenharmony_ci    if (!_PyArg_CheckPositional("strip", nargs, 0, 1)) {
2737db96d56Sopenharmony_ci        goto exit;
2747db96d56Sopenharmony_ci    }
2757db96d56Sopenharmony_ci    if (nargs < 1) {
2767db96d56Sopenharmony_ci        goto skip_optional;
2777db96d56Sopenharmony_ci    }
2787db96d56Sopenharmony_ci    bytes = args[0];
2797db96d56Sopenharmony_ciskip_optional:
2807db96d56Sopenharmony_ci    return_value = bytes_strip_impl(self, bytes);
2817db96d56Sopenharmony_ci
2827db96d56Sopenharmony_ciexit:
2837db96d56Sopenharmony_ci    return return_value;
2847db96d56Sopenharmony_ci}
2857db96d56Sopenharmony_ci
2867db96d56Sopenharmony_ciPyDoc_STRVAR(bytes_lstrip__doc__,
2877db96d56Sopenharmony_ci"lstrip($self, bytes=None, /)\n"
2887db96d56Sopenharmony_ci"--\n"
2897db96d56Sopenharmony_ci"\n"
2907db96d56Sopenharmony_ci"Strip leading bytes contained in the argument.\n"
2917db96d56Sopenharmony_ci"\n"
2927db96d56Sopenharmony_ci"If the argument is omitted or None, strip leading  ASCII whitespace.");
2937db96d56Sopenharmony_ci
2947db96d56Sopenharmony_ci#define BYTES_LSTRIP_METHODDEF    \
2957db96d56Sopenharmony_ci    {"lstrip", _PyCFunction_CAST(bytes_lstrip), METH_FASTCALL, bytes_lstrip__doc__},
2967db96d56Sopenharmony_ci
2977db96d56Sopenharmony_cistatic PyObject *
2987db96d56Sopenharmony_cibytes_lstrip_impl(PyBytesObject *self, PyObject *bytes);
2997db96d56Sopenharmony_ci
3007db96d56Sopenharmony_cistatic PyObject *
3017db96d56Sopenharmony_cibytes_lstrip(PyBytesObject *self, PyObject *const *args, Py_ssize_t nargs)
3027db96d56Sopenharmony_ci{
3037db96d56Sopenharmony_ci    PyObject *return_value = NULL;
3047db96d56Sopenharmony_ci    PyObject *bytes = Py_None;
3057db96d56Sopenharmony_ci
3067db96d56Sopenharmony_ci    if (!_PyArg_CheckPositional("lstrip", nargs, 0, 1)) {
3077db96d56Sopenharmony_ci        goto exit;
3087db96d56Sopenharmony_ci    }
3097db96d56Sopenharmony_ci    if (nargs < 1) {
3107db96d56Sopenharmony_ci        goto skip_optional;
3117db96d56Sopenharmony_ci    }
3127db96d56Sopenharmony_ci    bytes = args[0];
3137db96d56Sopenharmony_ciskip_optional:
3147db96d56Sopenharmony_ci    return_value = bytes_lstrip_impl(self, bytes);
3157db96d56Sopenharmony_ci
3167db96d56Sopenharmony_ciexit:
3177db96d56Sopenharmony_ci    return return_value;
3187db96d56Sopenharmony_ci}
3197db96d56Sopenharmony_ci
3207db96d56Sopenharmony_ciPyDoc_STRVAR(bytes_rstrip__doc__,
3217db96d56Sopenharmony_ci"rstrip($self, bytes=None, /)\n"
3227db96d56Sopenharmony_ci"--\n"
3237db96d56Sopenharmony_ci"\n"
3247db96d56Sopenharmony_ci"Strip trailing bytes contained in the argument.\n"
3257db96d56Sopenharmony_ci"\n"
3267db96d56Sopenharmony_ci"If the argument is omitted or None, strip trailing ASCII whitespace.");
3277db96d56Sopenharmony_ci
3287db96d56Sopenharmony_ci#define BYTES_RSTRIP_METHODDEF    \
3297db96d56Sopenharmony_ci    {"rstrip", _PyCFunction_CAST(bytes_rstrip), METH_FASTCALL, bytes_rstrip__doc__},
3307db96d56Sopenharmony_ci
3317db96d56Sopenharmony_cistatic PyObject *
3327db96d56Sopenharmony_cibytes_rstrip_impl(PyBytesObject *self, PyObject *bytes);
3337db96d56Sopenharmony_ci
3347db96d56Sopenharmony_cistatic PyObject *
3357db96d56Sopenharmony_cibytes_rstrip(PyBytesObject *self, PyObject *const *args, Py_ssize_t nargs)
3367db96d56Sopenharmony_ci{
3377db96d56Sopenharmony_ci    PyObject *return_value = NULL;
3387db96d56Sopenharmony_ci    PyObject *bytes = Py_None;
3397db96d56Sopenharmony_ci
3407db96d56Sopenharmony_ci    if (!_PyArg_CheckPositional("rstrip", nargs, 0, 1)) {
3417db96d56Sopenharmony_ci        goto exit;
3427db96d56Sopenharmony_ci    }
3437db96d56Sopenharmony_ci    if (nargs < 1) {
3447db96d56Sopenharmony_ci        goto skip_optional;
3457db96d56Sopenharmony_ci    }
3467db96d56Sopenharmony_ci    bytes = args[0];
3477db96d56Sopenharmony_ciskip_optional:
3487db96d56Sopenharmony_ci    return_value = bytes_rstrip_impl(self, bytes);
3497db96d56Sopenharmony_ci
3507db96d56Sopenharmony_ciexit:
3517db96d56Sopenharmony_ci    return return_value;
3527db96d56Sopenharmony_ci}
3537db96d56Sopenharmony_ci
3547db96d56Sopenharmony_ciPyDoc_STRVAR(bytes_translate__doc__,
3557db96d56Sopenharmony_ci"translate($self, table, /, delete=b\'\')\n"
3567db96d56Sopenharmony_ci"--\n"
3577db96d56Sopenharmony_ci"\n"
3587db96d56Sopenharmony_ci"Return a copy with each character mapped by the given translation table.\n"
3597db96d56Sopenharmony_ci"\n"
3607db96d56Sopenharmony_ci"  table\n"
3617db96d56Sopenharmony_ci"    Translation table, which must be a bytes object of length 256.\n"
3627db96d56Sopenharmony_ci"\n"
3637db96d56Sopenharmony_ci"All characters occurring in the optional argument delete are removed.\n"
3647db96d56Sopenharmony_ci"The remaining characters are mapped through the given translation table.");
3657db96d56Sopenharmony_ci
3667db96d56Sopenharmony_ci#define BYTES_TRANSLATE_METHODDEF    \
3677db96d56Sopenharmony_ci    {"translate", _PyCFunction_CAST(bytes_translate), METH_FASTCALL|METH_KEYWORDS, bytes_translate__doc__},
3687db96d56Sopenharmony_ci
3697db96d56Sopenharmony_cistatic PyObject *
3707db96d56Sopenharmony_cibytes_translate_impl(PyBytesObject *self, PyObject *table,
3717db96d56Sopenharmony_ci                     PyObject *deletechars);
3727db96d56Sopenharmony_ci
3737db96d56Sopenharmony_cistatic PyObject *
3747db96d56Sopenharmony_cibytes_translate(PyBytesObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
3757db96d56Sopenharmony_ci{
3767db96d56Sopenharmony_ci    PyObject *return_value = NULL;
3777db96d56Sopenharmony_ci    static const char * const _keywords[] = {"", "delete", NULL};
3787db96d56Sopenharmony_ci    static _PyArg_Parser _parser = {NULL, _keywords, "translate", 0};
3797db96d56Sopenharmony_ci    PyObject *argsbuf[2];
3807db96d56Sopenharmony_ci    Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
3817db96d56Sopenharmony_ci    PyObject *table;
3827db96d56Sopenharmony_ci    PyObject *deletechars = NULL;
3837db96d56Sopenharmony_ci
3847db96d56Sopenharmony_ci    args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 2, 0, argsbuf);
3857db96d56Sopenharmony_ci    if (!args) {
3867db96d56Sopenharmony_ci        goto exit;
3877db96d56Sopenharmony_ci    }
3887db96d56Sopenharmony_ci    table = args[0];
3897db96d56Sopenharmony_ci    if (!noptargs) {
3907db96d56Sopenharmony_ci        goto skip_optional_pos;
3917db96d56Sopenharmony_ci    }
3927db96d56Sopenharmony_ci    deletechars = args[1];
3937db96d56Sopenharmony_ciskip_optional_pos:
3947db96d56Sopenharmony_ci    return_value = bytes_translate_impl(self, table, deletechars);
3957db96d56Sopenharmony_ci
3967db96d56Sopenharmony_ciexit:
3977db96d56Sopenharmony_ci    return return_value;
3987db96d56Sopenharmony_ci}
3997db96d56Sopenharmony_ci
4007db96d56Sopenharmony_ciPyDoc_STRVAR(bytes_maketrans__doc__,
4017db96d56Sopenharmony_ci"maketrans(frm, to, /)\n"
4027db96d56Sopenharmony_ci"--\n"
4037db96d56Sopenharmony_ci"\n"
4047db96d56Sopenharmony_ci"Return a translation table useable for the bytes or bytearray translate method.\n"
4057db96d56Sopenharmony_ci"\n"
4067db96d56Sopenharmony_ci"The returned table will be one where each byte in frm is mapped to the byte at\n"
4077db96d56Sopenharmony_ci"the same position in to.\n"
4087db96d56Sopenharmony_ci"\n"
4097db96d56Sopenharmony_ci"The bytes objects frm and to must be of the same length.");
4107db96d56Sopenharmony_ci
4117db96d56Sopenharmony_ci#define BYTES_MAKETRANS_METHODDEF    \
4127db96d56Sopenharmony_ci    {"maketrans", _PyCFunction_CAST(bytes_maketrans), METH_FASTCALL|METH_STATIC, bytes_maketrans__doc__},
4137db96d56Sopenharmony_ci
4147db96d56Sopenharmony_cistatic PyObject *
4157db96d56Sopenharmony_cibytes_maketrans_impl(Py_buffer *frm, Py_buffer *to);
4167db96d56Sopenharmony_ci
4177db96d56Sopenharmony_cistatic PyObject *
4187db96d56Sopenharmony_cibytes_maketrans(void *null, PyObject *const *args, Py_ssize_t nargs)
4197db96d56Sopenharmony_ci{
4207db96d56Sopenharmony_ci    PyObject *return_value = NULL;
4217db96d56Sopenharmony_ci    Py_buffer frm = {NULL, NULL};
4227db96d56Sopenharmony_ci    Py_buffer to = {NULL, NULL};
4237db96d56Sopenharmony_ci
4247db96d56Sopenharmony_ci    if (!_PyArg_CheckPositional("maketrans", nargs, 2, 2)) {
4257db96d56Sopenharmony_ci        goto exit;
4267db96d56Sopenharmony_ci    }
4277db96d56Sopenharmony_ci    if (PyObject_GetBuffer(args[0], &frm, PyBUF_SIMPLE) != 0) {
4287db96d56Sopenharmony_ci        goto exit;
4297db96d56Sopenharmony_ci    }
4307db96d56Sopenharmony_ci    if (!PyBuffer_IsContiguous(&frm, 'C')) {
4317db96d56Sopenharmony_ci        _PyArg_BadArgument("maketrans", "argument 1", "contiguous buffer", args[0]);
4327db96d56Sopenharmony_ci        goto exit;
4337db96d56Sopenharmony_ci    }
4347db96d56Sopenharmony_ci    if (PyObject_GetBuffer(args[1], &to, PyBUF_SIMPLE) != 0) {
4357db96d56Sopenharmony_ci        goto exit;
4367db96d56Sopenharmony_ci    }
4377db96d56Sopenharmony_ci    if (!PyBuffer_IsContiguous(&to, 'C')) {
4387db96d56Sopenharmony_ci        _PyArg_BadArgument("maketrans", "argument 2", "contiguous buffer", args[1]);
4397db96d56Sopenharmony_ci        goto exit;
4407db96d56Sopenharmony_ci    }
4417db96d56Sopenharmony_ci    return_value = bytes_maketrans_impl(&frm, &to);
4427db96d56Sopenharmony_ci
4437db96d56Sopenharmony_ciexit:
4447db96d56Sopenharmony_ci    /* Cleanup for frm */
4457db96d56Sopenharmony_ci    if (frm.obj) {
4467db96d56Sopenharmony_ci       PyBuffer_Release(&frm);
4477db96d56Sopenharmony_ci    }
4487db96d56Sopenharmony_ci    /* Cleanup for to */
4497db96d56Sopenharmony_ci    if (to.obj) {
4507db96d56Sopenharmony_ci       PyBuffer_Release(&to);
4517db96d56Sopenharmony_ci    }
4527db96d56Sopenharmony_ci
4537db96d56Sopenharmony_ci    return return_value;
4547db96d56Sopenharmony_ci}
4557db96d56Sopenharmony_ci
4567db96d56Sopenharmony_ciPyDoc_STRVAR(bytes_replace__doc__,
4577db96d56Sopenharmony_ci"replace($self, old, new, count=-1, /)\n"
4587db96d56Sopenharmony_ci"--\n"
4597db96d56Sopenharmony_ci"\n"
4607db96d56Sopenharmony_ci"Return a copy with all occurrences of substring old replaced by new.\n"
4617db96d56Sopenharmony_ci"\n"
4627db96d56Sopenharmony_ci"  count\n"
4637db96d56Sopenharmony_ci"    Maximum number of occurrences to replace.\n"
4647db96d56Sopenharmony_ci"    -1 (the default value) means replace all occurrences.\n"
4657db96d56Sopenharmony_ci"\n"
4667db96d56Sopenharmony_ci"If the optional argument count is given, only the first count occurrences are\n"
4677db96d56Sopenharmony_ci"replaced.");
4687db96d56Sopenharmony_ci
4697db96d56Sopenharmony_ci#define BYTES_REPLACE_METHODDEF    \
4707db96d56Sopenharmony_ci    {"replace", _PyCFunction_CAST(bytes_replace), METH_FASTCALL, bytes_replace__doc__},
4717db96d56Sopenharmony_ci
4727db96d56Sopenharmony_cistatic PyObject *
4737db96d56Sopenharmony_cibytes_replace_impl(PyBytesObject *self, Py_buffer *old, Py_buffer *new,
4747db96d56Sopenharmony_ci                   Py_ssize_t count);
4757db96d56Sopenharmony_ci
4767db96d56Sopenharmony_cistatic PyObject *
4777db96d56Sopenharmony_cibytes_replace(PyBytesObject *self, PyObject *const *args, Py_ssize_t nargs)
4787db96d56Sopenharmony_ci{
4797db96d56Sopenharmony_ci    PyObject *return_value = NULL;
4807db96d56Sopenharmony_ci    Py_buffer old = {NULL, NULL};
4817db96d56Sopenharmony_ci    Py_buffer new = {NULL, NULL};
4827db96d56Sopenharmony_ci    Py_ssize_t count = -1;
4837db96d56Sopenharmony_ci
4847db96d56Sopenharmony_ci    if (!_PyArg_CheckPositional("replace", nargs, 2, 3)) {
4857db96d56Sopenharmony_ci        goto exit;
4867db96d56Sopenharmony_ci    }
4877db96d56Sopenharmony_ci    if (PyObject_GetBuffer(args[0], &old, PyBUF_SIMPLE) != 0) {
4887db96d56Sopenharmony_ci        goto exit;
4897db96d56Sopenharmony_ci    }
4907db96d56Sopenharmony_ci    if (!PyBuffer_IsContiguous(&old, 'C')) {
4917db96d56Sopenharmony_ci        _PyArg_BadArgument("replace", "argument 1", "contiguous buffer", args[0]);
4927db96d56Sopenharmony_ci        goto exit;
4937db96d56Sopenharmony_ci    }
4947db96d56Sopenharmony_ci    if (PyObject_GetBuffer(args[1], &new, PyBUF_SIMPLE) != 0) {
4957db96d56Sopenharmony_ci        goto exit;
4967db96d56Sopenharmony_ci    }
4977db96d56Sopenharmony_ci    if (!PyBuffer_IsContiguous(&new, 'C')) {
4987db96d56Sopenharmony_ci        _PyArg_BadArgument("replace", "argument 2", "contiguous buffer", args[1]);
4997db96d56Sopenharmony_ci        goto exit;
5007db96d56Sopenharmony_ci    }
5017db96d56Sopenharmony_ci    if (nargs < 3) {
5027db96d56Sopenharmony_ci        goto skip_optional;
5037db96d56Sopenharmony_ci    }
5047db96d56Sopenharmony_ci    {
5057db96d56Sopenharmony_ci        Py_ssize_t ival = -1;
5067db96d56Sopenharmony_ci        PyObject *iobj = _PyNumber_Index(args[2]);
5077db96d56Sopenharmony_ci        if (iobj != NULL) {
5087db96d56Sopenharmony_ci            ival = PyLong_AsSsize_t(iobj);
5097db96d56Sopenharmony_ci            Py_DECREF(iobj);
5107db96d56Sopenharmony_ci        }
5117db96d56Sopenharmony_ci        if (ival == -1 && PyErr_Occurred()) {
5127db96d56Sopenharmony_ci            goto exit;
5137db96d56Sopenharmony_ci        }
5147db96d56Sopenharmony_ci        count = ival;
5157db96d56Sopenharmony_ci    }
5167db96d56Sopenharmony_ciskip_optional:
5177db96d56Sopenharmony_ci    return_value = bytes_replace_impl(self, &old, &new, count);
5187db96d56Sopenharmony_ci
5197db96d56Sopenharmony_ciexit:
5207db96d56Sopenharmony_ci    /* Cleanup for old */
5217db96d56Sopenharmony_ci    if (old.obj) {
5227db96d56Sopenharmony_ci       PyBuffer_Release(&old);
5237db96d56Sopenharmony_ci    }
5247db96d56Sopenharmony_ci    /* Cleanup for new */
5257db96d56Sopenharmony_ci    if (new.obj) {
5267db96d56Sopenharmony_ci       PyBuffer_Release(&new);
5277db96d56Sopenharmony_ci    }
5287db96d56Sopenharmony_ci
5297db96d56Sopenharmony_ci    return return_value;
5307db96d56Sopenharmony_ci}
5317db96d56Sopenharmony_ci
5327db96d56Sopenharmony_ciPyDoc_STRVAR(bytes_removeprefix__doc__,
5337db96d56Sopenharmony_ci"removeprefix($self, prefix, /)\n"
5347db96d56Sopenharmony_ci"--\n"
5357db96d56Sopenharmony_ci"\n"
5367db96d56Sopenharmony_ci"Return a bytes object with the given prefix string removed if present.\n"
5377db96d56Sopenharmony_ci"\n"
5387db96d56Sopenharmony_ci"If the bytes starts with the prefix string, return bytes[len(prefix):].\n"
5397db96d56Sopenharmony_ci"Otherwise, return a copy of the original bytes.");
5407db96d56Sopenharmony_ci
5417db96d56Sopenharmony_ci#define BYTES_REMOVEPREFIX_METHODDEF    \
5427db96d56Sopenharmony_ci    {"removeprefix", (PyCFunction)bytes_removeprefix, METH_O, bytes_removeprefix__doc__},
5437db96d56Sopenharmony_ci
5447db96d56Sopenharmony_cistatic PyObject *
5457db96d56Sopenharmony_cibytes_removeprefix_impl(PyBytesObject *self, Py_buffer *prefix);
5467db96d56Sopenharmony_ci
5477db96d56Sopenharmony_cistatic PyObject *
5487db96d56Sopenharmony_cibytes_removeprefix(PyBytesObject *self, PyObject *arg)
5497db96d56Sopenharmony_ci{
5507db96d56Sopenharmony_ci    PyObject *return_value = NULL;
5517db96d56Sopenharmony_ci    Py_buffer prefix = {NULL, NULL};
5527db96d56Sopenharmony_ci
5537db96d56Sopenharmony_ci    if (PyObject_GetBuffer(arg, &prefix, PyBUF_SIMPLE) != 0) {
5547db96d56Sopenharmony_ci        goto exit;
5557db96d56Sopenharmony_ci    }
5567db96d56Sopenharmony_ci    if (!PyBuffer_IsContiguous(&prefix, 'C')) {
5577db96d56Sopenharmony_ci        _PyArg_BadArgument("removeprefix", "argument", "contiguous buffer", arg);
5587db96d56Sopenharmony_ci        goto exit;
5597db96d56Sopenharmony_ci    }
5607db96d56Sopenharmony_ci    return_value = bytes_removeprefix_impl(self, &prefix);
5617db96d56Sopenharmony_ci
5627db96d56Sopenharmony_ciexit:
5637db96d56Sopenharmony_ci    /* Cleanup for prefix */
5647db96d56Sopenharmony_ci    if (prefix.obj) {
5657db96d56Sopenharmony_ci       PyBuffer_Release(&prefix);
5667db96d56Sopenharmony_ci    }
5677db96d56Sopenharmony_ci
5687db96d56Sopenharmony_ci    return return_value;
5697db96d56Sopenharmony_ci}
5707db96d56Sopenharmony_ci
5717db96d56Sopenharmony_ciPyDoc_STRVAR(bytes_removesuffix__doc__,
5727db96d56Sopenharmony_ci"removesuffix($self, suffix, /)\n"
5737db96d56Sopenharmony_ci"--\n"
5747db96d56Sopenharmony_ci"\n"
5757db96d56Sopenharmony_ci"Return a bytes object with the given suffix string removed if present.\n"
5767db96d56Sopenharmony_ci"\n"
5777db96d56Sopenharmony_ci"If the bytes ends with the suffix string and that suffix is not empty,\n"
5787db96d56Sopenharmony_ci"return bytes[:-len(prefix)].  Otherwise, return a copy of the original\n"
5797db96d56Sopenharmony_ci"bytes.");
5807db96d56Sopenharmony_ci
5817db96d56Sopenharmony_ci#define BYTES_REMOVESUFFIX_METHODDEF    \
5827db96d56Sopenharmony_ci    {"removesuffix", (PyCFunction)bytes_removesuffix, METH_O, bytes_removesuffix__doc__},
5837db96d56Sopenharmony_ci
5847db96d56Sopenharmony_cistatic PyObject *
5857db96d56Sopenharmony_cibytes_removesuffix_impl(PyBytesObject *self, Py_buffer *suffix);
5867db96d56Sopenharmony_ci
5877db96d56Sopenharmony_cistatic PyObject *
5887db96d56Sopenharmony_cibytes_removesuffix(PyBytesObject *self, PyObject *arg)
5897db96d56Sopenharmony_ci{
5907db96d56Sopenharmony_ci    PyObject *return_value = NULL;
5917db96d56Sopenharmony_ci    Py_buffer suffix = {NULL, NULL};
5927db96d56Sopenharmony_ci
5937db96d56Sopenharmony_ci    if (PyObject_GetBuffer(arg, &suffix, PyBUF_SIMPLE) != 0) {
5947db96d56Sopenharmony_ci        goto exit;
5957db96d56Sopenharmony_ci    }
5967db96d56Sopenharmony_ci    if (!PyBuffer_IsContiguous(&suffix, 'C')) {
5977db96d56Sopenharmony_ci        _PyArg_BadArgument("removesuffix", "argument", "contiguous buffer", arg);
5987db96d56Sopenharmony_ci        goto exit;
5997db96d56Sopenharmony_ci    }
6007db96d56Sopenharmony_ci    return_value = bytes_removesuffix_impl(self, &suffix);
6017db96d56Sopenharmony_ci
6027db96d56Sopenharmony_ciexit:
6037db96d56Sopenharmony_ci    /* Cleanup for suffix */
6047db96d56Sopenharmony_ci    if (suffix.obj) {
6057db96d56Sopenharmony_ci       PyBuffer_Release(&suffix);
6067db96d56Sopenharmony_ci    }
6077db96d56Sopenharmony_ci
6087db96d56Sopenharmony_ci    return return_value;
6097db96d56Sopenharmony_ci}
6107db96d56Sopenharmony_ci
6117db96d56Sopenharmony_ciPyDoc_STRVAR(bytes_decode__doc__,
6127db96d56Sopenharmony_ci"decode($self, /, encoding=\'utf-8\', errors=\'strict\')\n"
6137db96d56Sopenharmony_ci"--\n"
6147db96d56Sopenharmony_ci"\n"
6157db96d56Sopenharmony_ci"Decode the bytes using the codec registered for encoding.\n"
6167db96d56Sopenharmony_ci"\n"
6177db96d56Sopenharmony_ci"  encoding\n"
6187db96d56Sopenharmony_ci"    The encoding with which to decode the bytes.\n"
6197db96d56Sopenharmony_ci"  errors\n"
6207db96d56Sopenharmony_ci"    The error handling scheme to use for the handling of decoding errors.\n"
6217db96d56Sopenharmony_ci"    The default is \'strict\' meaning that decoding errors raise a\n"
6227db96d56Sopenharmony_ci"    UnicodeDecodeError. Other possible values are \'ignore\' and \'replace\'\n"
6237db96d56Sopenharmony_ci"    as well as any other name registered with codecs.register_error that\n"
6247db96d56Sopenharmony_ci"    can handle UnicodeDecodeErrors.");
6257db96d56Sopenharmony_ci
6267db96d56Sopenharmony_ci#define BYTES_DECODE_METHODDEF    \
6277db96d56Sopenharmony_ci    {"decode", _PyCFunction_CAST(bytes_decode), METH_FASTCALL|METH_KEYWORDS, bytes_decode__doc__},
6287db96d56Sopenharmony_ci
6297db96d56Sopenharmony_cistatic PyObject *
6307db96d56Sopenharmony_cibytes_decode_impl(PyBytesObject *self, const char *encoding,
6317db96d56Sopenharmony_ci                  const char *errors);
6327db96d56Sopenharmony_ci
6337db96d56Sopenharmony_cistatic PyObject *
6347db96d56Sopenharmony_cibytes_decode(PyBytesObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
6357db96d56Sopenharmony_ci{
6367db96d56Sopenharmony_ci    PyObject *return_value = NULL;
6377db96d56Sopenharmony_ci    static const char * const _keywords[] = {"encoding", "errors", NULL};
6387db96d56Sopenharmony_ci    static _PyArg_Parser _parser = {NULL, _keywords, "decode", 0};
6397db96d56Sopenharmony_ci    PyObject *argsbuf[2];
6407db96d56Sopenharmony_ci    Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
6417db96d56Sopenharmony_ci    const char *encoding = NULL;
6427db96d56Sopenharmony_ci    const char *errors = NULL;
6437db96d56Sopenharmony_ci
6447db96d56Sopenharmony_ci    args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 2, 0, argsbuf);
6457db96d56Sopenharmony_ci    if (!args) {
6467db96d56Sopenharmony_ci        goto exit;
6477db96d56Sopenharmony_ci    }
6487db96d56Sopenharmony_ci    if (!noptargs) {
6497db96d56Sopenharmony_ci        goto skip_optional_pos;
6507db96d56Sopenharmony_ci    }
6517db96d56Sopenharmony_ci    if (args[0]) {
6527db96d56Sopenharmony_ci        if (!PyUnicode_Check(args[0])) {
6537db96d56Sopenharmony_ci            _PyArg_BadArgument("decode", "argument 'encoding'", "str", args[0]);
6547db96d56Sopenharmony_ci            goto exit;
6557db96d56Sopenharmony_ci        }
6567db96d56Sopenharmony_ci        Py_ssize_t encoding_length;
6577db96d56Sopenharmony_ci        encoding = PyUnicode_AsUTF8AndSize(args[0], &encoding_length);
6587db96d56Sopenharmony_ci        if (encoding == NULL) {
6597db96d56Sopenharmony_ci            goto exit;
6607db96d56Sopenharmony_ci        }
6617db96d56Sopenharmony_ci        if (strlen(encoding) != (size_t)encoding_length) {
6627db96d56Sopenharmony_ci            PyErr_SetString(PyExc_ValueError, "embedded null character");
6637db96d56Sopenharmony_ci            goto exit;
6647db96d56Sopenharmony_ci        }
6657db96d56Sopenharmony_ci        if (!--noptargs) {
6667db96d56Sopenharmony_ci            goto skip_optional_pos;
6677db96d56Sopenharmony_ci        }
6687db96d56Sopenharmony_ci    }
6697db96d56Sopenharmony_ci    if (!PyUnicode_Check(args[1])) {
6707db96d56Sopenharmony_ci        _PyArg_BadArgument("decode", "argument 'errors'", "str", args[1]);
6717db96d56Sopenharmony_ci        goto exit;
6727db96d56Sopenharmony_ci    }
6737db96d56Sopenharmony_ci    Py_ssize_t errors_length;
6747db96d56Sopenharmony_ci    errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
6757db96d56Sopenharmony_ci    if (errors == NULL) {
6767db96d56Sopenharmony_ci        goto exit;
6777db96d56Sopenharmony_ci    }
6787db96d56Sopenharmony_ci    if (strlen(errors) != (size_t)errors_length) {
6797db96d56Sopenharmony_ci        PyErr_SetString(PyExc_ValueError, "embedded null character");
6807db96d56Sopenharmony_ci        goto exit;
6817db96d56Sopenharmony_ci    }
6827db96d56Sopenharmony_ciskip_optional_pos:
6837db96d56Sopenharmony_ci    return_value = bytes_decode_impl(self, encoding, errors);
6847db96d56Sopenharmony_ci
6857db96d56Sopenharmony_ciexit:
6867db96d56Sopenharmony_ci    return return_value;
6877db96d56Sopenharmony_ci}
6887db96d56Sopenharmony_ci
6897db96d56Sopenharmony_ciPyDoc_STRVAR(bytes_splitlines__doc__,
6907db96d56Sopenharmony_ci"splitlines($self, /, keepends=False)\n"
6917db96d56Sopenharmony_ci"--\n"
6927db96d56Sopenharmony_ci"\n"
6937db96d56Sopenharmony_ci"Return a list of the lines in the bytes, breaking at line boundaries.\n"
6947db96d56Sopenharmony_ci"\n"
6957db96d56Sopenharmony_ci"Line breaks are not included in the resulting list unless keepends is given and\n"
6967db96d56Sopenharmony_ci"true.");
6977db96d56Sopenharmony_ci
6987db96d56Sopenharmony_ci#define BYTES_SPLITLINES_METHODDEF    \
6997db96d56Sopenharmony_ci    {"splitlines", _PyCFunction_CAST(bytes_splitlines), METH_FASTCALL|METH_KEYWORDS, bytes_splitlines__doc__},
7007db96d56Sopenharmony_ci
7017db96d56Sopenharmony_cistatic PyObject *
7027db96d56Sopenharmony_cibytes_splitlines_impl(PyBytesObject *self, int keepends);
7037db96d56Sopenharmony_ci
7047db96d56Sopenharmony_cistatic PyObject *
7057db96d56Sopenharmony_cibytes_splitlines(PyBytesObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
7067db96d56Sopenharmony_ci{
7077db96d56Sopenharmony_ci    PyObject *return_value = NULL;
7087db96d56Sopenharmony_ci    static const char * const _keywords[] = {"keepends", NULL};
7097db96d56Sopenharmony_ci    static _PyArg_Parser _parser = {NULL, _keywords, "splitlines", 0};
7107db96d56Sopenharmony_ci    PyObject *argsbuf[1];
7117db96d56Sopenharmony_ci    Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
7127db96d56Sopenharmony_ci    int keepends = 0;
7137db96d56Sopenharmony_ci
7147db96d56Sopenharmony_ci    args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 1, 0, argsbuf);
7157db96d56Sopenharmony_ci    if (!args) {
7167db96d56Sopenharmony_ci        goto exit;
7177db96d56Sopenharmony_ci    }
7187db96d56Sopenharmony_ci    if (!noptargs) {
7197db96d56Sopenharmony_ci        goto skip_optional_pos;
7207db96d56Sopenharmony_ci    }
7217db96d56Sopenharmony_ci    keepends = _PyLong_AsInt(args[0]);
7227db96d56Sopenharmony_ci    if (keepends == -1 && PyErr_Occurred()) {
7237db96d56Sopenharmony_ci        goto exit;
7247db96d56Sopenharmony_ci    }
7257db96d56Sopenharmony_ciskip_optional_pos:
7267db96d56Sopenharmony_ci    return_value = bytes_splitlines_impl(self, keepends);
7277db96d56Sopenharmony_ci
7287db96d56Sopenharmony_ciexit:
7297db96d56Sopenharmony_ci    return return_value;
7307db96d56Sopenharmony_ci}
7317db96d56Sopenharmony_ci
7327db96d56Sopenharmony_ciPyDoc_STRVAR(bytes_fromhex__doc__,
7337db96d56Sopenharmony_ci"fromhex($type, string, /)\n"
7347db96d56Sopenharmony_ci"--\n"
7357db96d56Sopenharmony_ci"\n"
7367db96d56Sopenharmony_ci"Create a bytes object from a string of hexadecimal numbers.\n"
7377db96d56Sopenharmony_ci"\n"
7387db96d56Sopenharmony_ci"Spaces between two numbers are accepted.\n"
7397db96d56Sopenharmony_ci"Example: bytes.fromhex(\'B9 01EF\') -> b\'\\\\xb9\\\\x01\\\\xef\'.");
7407db96d56Sopenharmony_ci
7417db96d56Sopenharmony_ci#define BYTES_FROMHEX_METHODDEF    \
7427db96d56Sopenharmony_ci    {"fromhex", (PyCFunction)bytes_fromhex, METH_O|METH_CLASS, bytes_fromhex__doc__},
7437db96d56Sopenharmony_ci
7447db96d56Sopenharmony_cistatic PyObject *
7457db96d56Sopenharmony_cibytes_fromhex_impl(PyTypeObject *type, PyObject *string);
7467db96d56Sopenharmony_ci
7477db96d56Sopenharmony_cistatic PyObject *
7487db96d56Sopenharmony_cibytes_fromhex(PyTypeObject *type, PyObject *arg)
7497db96d56Sopenharmony_ci{
7507db96d56Sopenharmony_ci    PyObject *return_value = NULL;
7517db96d56Sopenharmony_ci    PyObject *string;
7527db96d56Sopenharmony_ci
7537db96d56Sopenharmony_ci    if (!PyUnicode_Check(arg)) {
7547db96d56Sopenharmony_ci        _PyArg_BadArgument("fromhex", "argument", "str", arg);
7557db96d56Sopenharmony_ci        goto exit;
7567db96d56Sopenharmony_ci    }
7577db96d56Sopenharmony_ci    if (PyUnicode_READY(arg) == -1) {
7587db96d56Sopenharmony_ci        goto exit;
7597db96d56Sopenharmony_ci    }
7607db96d56Sopenharmony_ci    string = arg;
7617db96d56Sopenharmony_ci    return_value = bytes_fromhex_impl(type, string);
7627db96d56Sopenharmony_ci
7637db96d56Sopenharmony_ciexit:
7647db96d56Sopenharmony_ci    return return_value;
7657db96d56Sopenharmony_ci}
7667db96d56Sopenharmony_ci
7677db96d56Sopenharmony_ciPyDoc_STRVAR(bytes_hex__doc__,
7687db96d56Sopenharmony_ci"hex($self, /, sep=<unrepresentable>, bytes_per_sep=1)\n"
7697db96d56Sopenharmony_ci"--\n"
7707db96d56Sopenharmony_ci"\n"
7717db96d56Sopenharmony_ci"Create a string of hexadecimal numbers from a bytes object.\n"
7727db96d56Sopenharmony_ci"\n"
7737db96d56Sopenharmony_ci"  sep\n"
7747db96d56Sopenharmony_ci"    An optional single character or byte to separate hex bytes.\n"
7757db96d56Sopenharmony_ci"  bytes_per_sep\n"
7767db96d56Sopenharmony_ci"    How many bytes between separators.  Positive values count from the\n"
7777db96d56Sopenharmony_ci"    right, negative values count from the left.\n"
7787db96d56Sopenharmony_ci"\n"
7797db96d56Sopenharmony_ci"Example:\n"
7807db96d56Sopenharmony_ci">>> value = b\'\\xb9\\x01\\xef\'\n"
7817db96d56Sopenharmony_ci">>> value.hex()\n"
7827db96d56Sopenharmony_ci"\'b901ef\'\n"
7837db96d56Sopenharmony_ci">>> value.hex(\':\')\n"
7847db96d56Sopenharmony_ci"\'b9:01:ef\'\n"
7857db96d56Sopenharmony_ci">>> value.hex(\':\', 2)\n"
7867db96d56Sopenharmony_ci"\'b9:01ef\'\n"
7877db96d56Sopenharmony_ci">>> value.hex(\':\', -2)\n"
7887db96d56Sopenharmony_ci"\'b901:ef\'");
7897db96d56Sopenharmony_ci
7907db96d56Sopenharmony_ci#define BYTES_HEX_METHODDEF    \
7917db96d56Sopenharmony_ci    {"hex", _PyCFunction_CAST(bytes_hex), METH_FASTCALL|METH_KEYWORDS, bytes_hex__doc__},
7927db96d56Sopenharmony_ci
7937db96d56Sopenharmony_cistatic PyObject *
7947db96d56Sopenharmony_cibytes_hex_impl(PyBytesObject *self, PyObject *sep, int bytes_per_sep);
7957db96d56Sopenharmony_ci
7967db96d56Sopenharmony_cistatic PyObject *
7977db96d56Sopenharmony_cibytes_hex(PyBytesObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
7987db96d56Sopenharmony_ci{
7997db96d56Sopenharmony_ci    PyObject *return_value = NULL;
8007db96d56Sopenharmony_ci    static const char * const _keywords[] = {"sep", "bytes_per_sep", NULL};
8017db96d56Sopenharmony_ci    static _PyArg_Parser _parser = {NULL, _keywords, "hex", 0};
8027db96d56Sopenharmony_ci    PyObject *argsbuf[2];
8037db96d56Sopenharmony_ci    Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
8047db96d56Sopenharmony_ci    PyObject *sep = NULL;
8057db96d56Sopenharmony_ci    int bytes_per_sep = 1;
8067db96d56Sopenharmony_ci
8077db96d56Sopenharmony_ci    args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 2, 0, argsbuf);
8087db96d56Sopenharmony_ci    if (!args) {
8097db96d56Sopenharmony_ci        goto exit;
8107db96d56Sopenharmony_ci    }
8117db96d56Sopenharmony_ci    if (!noptargs) {
8127db96d56Sopenharmony_ci        goto skip_optional_pos;
8137db96d56Sopenharmony_ci    }
8147db96d56Sopenharmony_ci    if (args[0]) {
8157db96d56Sopenharmony_ci        sep = args[0];
8167db96d56Sopenharmony_ci        if (!--noptargs) {
8177db96d56Sopenharmony_ci            goto skip_optional_pos;
8187db96d56Sopenharmony_ci        }
8197db96d56Sopenharmony_ci    }
8207db96d56Sopenharmony_ci    bytes_per_sep = _PyLong_AsInt(args[1]);
8217db96d56Sopenharmony_ci    if (bytes_per_sep == -1 && PyErr_Occurred()) {
8227db96d56Sopenharmony_ci        goto exit;
8237db96d56Sopenharmony_ci    }
8247db96d56Sopenharmony_ciskip_optional_pos:
8257db96d56Sopenharmony_ci    return_value = bytes_hex_impl(self, sep, bytes_per_sep);
8267db96d56Sopenharmony_ci
8277db96d56Sopenharmony_ciexit:
8287db96d56Sopenharmony_ci    return return_value;
8297db96d56Sopenharmony_ci}
8307db96d56Sopenharmony_ci
8317db96d56Sopenharmony_cistatic PyObject *
8327db96d56Sopenharmony_cibytes_new_impl(PyTypeObject *type, PyObject *x, const char *encoding,
8337db96d56Sopenharmony_ci               const char *errors);
8347db96d56Sopenharmony_ci
8357db96d56Sopenharmony_cistatic PyObject *
8367db96d56Sopenharmony_cibytes_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
8377db96d56Sopenharmony_ci{
8387db96d56Sopenharmony_ci    PyObject *return_value = NULL;
8397db96d56Sopenharmony_ci    static const char * const _keywords[] = {"source", "encoding", "errors", NULL};
8407db96d56Sopenharmony_ci    static _PyArg_Parser _parser = {NULL, _keywords, "bytes", 0};
8417db96d56Sopenharmony_ci    PyObject *argsbuf[3];
8427db96d56Sopenharmony_ci    PyObject * const *fastargs;
8437db96d56Sopenharmony_ci    Py_ssize_t nargs = PyTuple_GET_SIZE(args);
8447db96d56Sopenharmony_ci    Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 0;
8457db96d56Sopenharmony_ci    PyObject *x = NULL;
8467db96d56Sopenharmony_ci    const char *encoding = NULL;
8477db96d56Sopenharmony_ci    const char *errors = NULL;
8487db96d56Sopenharmony_ci
8497db96d56Sopenharmony_ci    fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 0, 3, 0, argsbuf);
8507db96d56Sopenharmony_ci    if (!fastargs) {
8517db96d56Sopenharmony_ci        goto exit;
8527db96d56Sopenharmony_ci    }
8537db96d56Sopenharmony_ci    if (!noptargs) {
8547db96d56Sopenharmony_ci        goto skip_optional_pos;
8557db96d56Sopenharmony_ci    }
8567db96d56Sopenharmony_ci    if (fastargs[0]) {
8577db96d56Sopenharmony_ci        x = fastargs[0];
8587db96d56Sopenharmony_ci        if (!--noptargs) {
8597db96d56Sopenharmony_ci            goto skip_optional_pos;
8607db96d56Sopenharmony_ci        }
8617db96d56Sopenharmony_ci    }
8627db96d56Sopenharmony_ci    if (fastargs[1]) {
8637db96d56Sopenharmony_ci        if (!PyUnicode_Check(fastargs[1])) {
8647db96d56Sopenharmony_ci            _PyArg_BadArgument("bytes", "argument 'encoding'", "str", fastargs[1]);
8657db96d56Sopenharmony_ci            goto exit;
8667db96d56Sopenharmony_ci        }
8677db96d56Sopenharmony_ci        Py_ssize_t encoding_length;
8687db96d56Sopenharmony_ci        encoding = PyUnicode_AsUTF8AndSize(fastargs[1], &encoding_length);
8697db96d56Sopenharmony_ci        if (encoding == NULL) {
8707db96d56Sopenharmony_ci            goto exit;
8717db96d56Sopenharmony_ci        }
8727db96d56Sopenharmony_ci        if (strlen(encoding) != (size_t)encoding_length) {
8737db96d56Sopenharmony_ci            PyErr_SetString(PyExc_ValueError, "embedded null character");
8747db96d56Sopenharmony_ci            goto exit;
8757db96d56Sopenharmony_ci        }
8767db96d56Sopenharmony_ci        if (!--noptargs) {
8777db96d56Sopenharmony_ci            goto skip_optional_pos;
8787db96d56Sopenharmony_ci        }
8797db96d56Sopenharmony_ci    }
8807db96d56Sopenharmony_ci    if (!PyUnicode_Check(fastargs[2])) {
8817db96d56Sopenharmony_ci        _PyArg_BadArgument("bytes", "argument 'errors'", "str", fastargs[2]);
8827db96d56Sopenharmony_ci        goto exit;
8837db96d56Sopenharmony_ci    }
8847db96d56Sopenharmony_ci    Py_ssize_t errors_length;
8857db96d56Sopenharmony_ci    errors = PyUnicode_AsUTF8AndSize(fastargs[2], &errors_length);
8867db96d56Sopenharmony_ci    if (errors == NULL) {
8877db96d56Sopenharmony_ci        goto exit;
8887db96d56Sopenharmony_ci    }
8897db96d56Sopenharmony_ci    if (strlen(errors) != (size_t)errors_length) {
8907db96d56Sopenharmony_ci        PyErr_SetString(PyExc_ValueError, "embedded null character");
8917db96d56Sopenharmony_ci        goto exit;
8927db96d56Sopenharmony_ci    }
8937db96d56Sopenharmony_ciskip_optional_pos:
8947db96d56Sopenharmony_ci    return_value = bytes_new_impl(type, x, encoding, errors);
8957db96d56Sopenharmony_ci
8967db96d56Sopenharmony_ciexit:
8977db96d56Sopenharmony_ci    return return_value;
8987db96d56Sopenharmony_ci}
8997db96d56Sopenharmony_ci/*[clinic end generated code: output=5727702e63a0a8b7 input=a9049054013a1b77]*/
900