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