17db96d56Sopenharmony_ci/*[clinic input] 27db96d56Sopenharmony_cipreserve 37db96d56Sopenharmony_ci[clinic start generated code]*/ 47db96d56Sopenharmony_ci 57db96d56Sopenharmony_ciPyDoc_STRVAR(pairwise_new__doc__, 67db96d56Sopenharmony_ci"pairwise(iterable, /)\n" 77db96d56Sopenharmony_ci"--\n" 87db96d56Sopenharmony_ci"\n" 97db96d56Sopenharmony_ci"Return an iterator of overlapping pairs taken from the input iterator.\n" 107db96d56Sopenharmony_ci"\n" 117db96d56Sopenharmony_ci" s -> (s0,s1), (s1,s2), (s2, s3), ..."); 127db96d56Sopenharmony_ci 137db96d56Sopenharmony_cistatic PyObject * 147db96d56Sopenharmony_cipairwise_new_impl(PyTypeObject *type, PyObject *iterable); 157db96d56Sopenharmony_ci 167db96d56Sopenharmony_cistatic PyObject * 177db96d56Sopenharmony_cipairwise_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) 187db96d56Sopenharmony_ci{ 197db96d56Sopenharmony_ci PyObject *return_value = NULL; 207db96d56Sopenharmony_ci PyObject *iterable; 217db96d56Sopenharmony_ci 227db96d56Sopenharmony_ci if ((type == &pairwise_type || 237db96d56Sopenharmony_ci type->tp_init == pairwise_type.tp_init) && 247db96d56Sopenharmony_ci !_PyArg_NoKeywords("pairwise", kwargs)) { 257db96d56Sopenharmony_ci goto exit; 267db96d56Sopenharmony_ci } 277db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("pairwise", PyTuple_GET_SIZE(args), 1, 1)) { 287db96d56Sopenharmony_ci goto exit; 297db96d56Sopenharmony_ci } 307db96d56Sopenharmony_ci iterable = PyTuple_GET_ITEM(args, 0); 317db96d56Sopenharmony_ci return_value = pairwise_new_impl(type, iterable); 327db96d56Sopenharmony_ci 337db96d56Sopenharmony_ciexit: 347db96d56Sopenharmony_ci return return_value; 357db96d56Sopenharmony_ci} 367db96d56Sopenharmony_ci 377db96d56Sopenharmony_ciPyDoc_STRVAR(itertools_groupby__doc__, 387db96d56Sopenharmony_ci"groupby(iterable, key=None)\n" 397db96d56Sopenharmony_ci"--\n" 407db96d56Sopenharmony_ci"\n" 417db96d56Sopenharmony_ci"make an iterator that returns consecutive keys and groups from the iterable\n" 427db96d56Sopenharmony_ci"\n" 437db96d56Sopenharmony_ci" iterable\n" 447db96d56Sopenharmony_ci" Elements to divide into groups according to the key function.\n" 457db96d56Sopenharmony_ci" key\n" 467db96d56Sopenharmony_ci" A function for computing the group category for each element.\n" 477db96d56Sopenharmony_ci" If the key function is not specified or is None, the element itself\n" 487db96d56Sopenharmony_ci" is used for grouping."); 497db96d56Sopenharmony_ci 507db96d56Sopenharmony_cistatic PyObject * 517db96d56Sopenharmony_ciitertools_groupby_impl(PyTypeObject *type, PyObject *it, PyObject *keyfunc); 527db96d56Sopenharmony_ci 537db96d56Sopenharmony_cistatic PyObject * 547db96d56Sopenharmony_ciitertools_groupby(PyTypeObject *type, PyObject *args, PyObject *kwargs) 557db96d56Sopenharmony_ci{ 567db96d56Sopenharmony_ci PyObject *return_value = NULL; 577db96d56Sopenharmony_ci static const char * const _keywords[] = {"iterable", "key", NULL}; 587db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "groupby", 0}; 597db96d56Sopenharmony_ci PyObject *argsbuf[2]; 607db96d56Sopenharmony_ci PyObject * const *fastargs; 617db96d56Sopenharmony_ci Py_ssize_t nargs = PyTuple_GET_SIZE(args); 627db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 1; 637db96d56Sopenharmony_ci PyObject *it; 647db96d56Sopenharmony_ci PyObject *keyfunc = Py_None; 657db96d56Sopenharmony_ci 667db96d56Sopenharmony_ci fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 1, 2, 0, argsbuf); 677db96d56Sopenharmony_ci if (!fastargs) { 687db96d56Sopenharmony_ci goto exit; 697db96d56Sopenharmony_ci } 707db96d56Sopenharmony_ci it = fastargs[0]; 717db96d56Sopenharmony_ci if (!noptargs) { 727db96d56Sopenharmony_ci goto skip_optional_pos; 737db96d56Sopenharmony_ci } 747db96d56Sopenharmony_ci keyfunc = fastargs[1]; 757db96d56Sopenharmony_ciskip_optional_pos: 767db96d56Sopenharmony_ci return_value = itertools_groupby_impl(type, it, keyfunc); 777db96d56Sopenharmony_ci 787db96d56Sopenharmony_ciexit: 797db96d56Sopenharmony_ci return return_value; 807db96d56Sopenharmony_ci} 817db96d56Sopenharmony_ci 827db96d56Sopenharmony_cistatic PyObject * 837db96d56Sopenharmony_ciitertools__grouper_impl(PyTypeObject *type, PyObject *parent, 847db96d56Sopenharmony_ci PyObject *tgtkey); 857db96d56Sopenharmony_ci 867db96d56Sopenharmony_cistatic PyObject * 877db96d56Sopenharmony_ciitertools__grouper(PyTypeObject *type, PyObject *args, PyObject *kwargs) 887db96d56Sopenharmony_ci{ 897db96d56Sopenharmony_ci PyObject *return_value = NULL; 907db96d56Sopenharmony_ci PyObject *parent; 917db96d56Sopenharmony_ci PyObject *tgtkey; 927db96d56Sopenharmony_ci 937db96d56Sopenharmony_ci if ((type == &_grouper_type || 947db96d56Sopenharmony_ci type->tp_init == _grouper_type.tp_init) && 957db96d56Sopenharmony_ci !_PyArg_NoKeywords("_grouper", kwargs)) { 967db96d56Sopenharmony_ci goto exit; 977db96d56Sopenharmony_ci } 987db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("_grouper", PyTuple_GET_SIZE(args), 2, 2)) { 997db96d56Sopenharmony_ci goto exit; 1007db96d56Sopenharmony_ci } 1017db96d56Sopenharmony_ci if (!PyObject_TypeCheck(PyTuple_GET_ITEM(args, 0), &groupby_type)) { 1027db96d56Sopenharmony_ci _PyArg_BadArgument("_grouper", "argument 1", (&groupby_type)->tp_name, PyTuple_GET_ITEM(args, 0)); 1037db96d56Sopenharmony_ci goto exit; 1047db96d56Sopenharmony_ci } 1057db96d56Sopenharmony_ci parent = PyTuple_GET_ITEM(args, 0); 1067db96d56Sopenharmony_ci tgtkey = PyTuple_GET_ITEM(args, 1); 1077db96d56Sopenharmony_ci return_value = itertools__grouper_impl(type, parent, tgtkey); 1087db96d56Sopenharmony_ci 1097db96d56Sopenharmony_ciexit: 1107db96d56Sopenharmony_ci return return_value; 1117db96d56Sopenharmony_ci} 1127db96d56Sopenharmony_ci 1137db96d56Sopenharmony_ciPyDoc_STRVAR(itertools_teedataobject__doc__, 1147db96d56Sopenharmony_ci"teedataobject(iterable, values, next, /)\n" 1157db96d56Sopenharmony_ci"--\n" 1167db96d56Sopenharmony_ci"\n" 1177db96d56Sopenharmony_ci"Data container common to multiple tee objects."); 1187db96d56Sopenharmony_ci 1197db96d56Sopenharmony_cistatic PyObject * 1207db96d56Sopenharmony_ciitertools_teedataobject_impl(PyTypeObject *type, PyObject *it, 1217db96d56Sopenharmony_ci PyObject *values, PyObject *next); 1227db96d56Sopenharmony_ci 1237db96d56Sopenharmony_cistatic PyObject * 1247db96d56Sopenharmony_ciitertools_teedataobject(PyTypeObject *type, PyObject *args, PyObject *kwargs) 1257db96d56Sopenharmony_ci{ 1267db96d56Sopenharmony_ci PyObject *return_value = NULL; 1277db96d56Sopenharmony_ci PyObject *it; 1287db96d56Sopenharmony_ci PyObject *values; 1297db96d56Sopenharmony_ci PyObject *next; 1307db96d56Sopenharmony_ci 1317db96d56Sopenharmony_ci if ((type == &teedataobject_type || 1327db96d56Sopenharmony_ci type->tp_init == teedataobject_type.tp_init) && 1337db96d56Sopenharmony_ci !_PyArg_NoKeywords("teedataobject", kwargs)) { 1347db96d56Sopenharmony_ci goto exit; 1357db96d56Sopenharmony_ci } 1367db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("teedataobject", PyTuple_GET_SIZE(args), 3, 3)) { 1377db96d56Sopenharmony_ci goto exit; 1387db96d56Sopenharmony_ci } 1397db96d56Sopenharmony_ci it = PyTuple_GET_ITEM(args, 0); 1407db96d56Sopenharmony_ci if (!PyList_Check(PyTuple_GET_ITEM(args, 1))) { 1417db96d56Sopenharmony_ci _PyArg_BadArgument("teedataobject", "argument 2", "list", PyTuple_GET_ITEM(args, 1)); 1427db96d56Sopenharmony_ci goto exit; 1437db96d56Sopenharmony_ci } 1447db96d56Sopenharmony_ci values = PyTuple_GET_ITEM(args, 1); 1457db96d56Sopenharmony_ci next = PyTuple_GET_ITEM(args, 2); 1467db96d56Sopenharmony_ci return_value = itertools_teedataobject_impl(type, it, values, next); 1477db96d56Sopenharmony_ci 1487db96d56Sopenharmony_ciexit: 1497db96d56Sopenharmony_ci return return_value; 1507db96d56Sopenharmony_ci} 1517db96d56Sopenharmony_ci 1527db96d56Sopenharmony_ciPyDoc_STRVAR(itertools__tee__doc__, 1537db96d56Sopenharmony_ci"_tee(iterable, /)\n" 1547db96d56Sopenharmony_ci"--\n" 1557db96d56Sopenharmony_ci"\n" 1567db96d56Sopenharmony_ci"Iterator wrapped to make it copyable."); 1577db96d56Sopenharmony_ci 1587db96d56Sopenharmony_cistatic PyObject * 1597db96d56Sopenharmony_ciitertools__tee_impl(PyTypeObject *type, PyObject *iterable); 1607db96d56Sopenharmony_ci 1617db96d56Sopenharmony_cistatic PyObject * 1627db96d56Sopenharmony_ciitertools__tee(PyTypeObject *type, PyObject *args, PyObject *kwargs) 1637db96d56Sopenharmony_ci{ 1647db96d56Sopenharmony_ci PyObject *return_value = NULL; 1657db96d56Sopenharmony_ci PyObject *iterable; 1667db96d56Sopenharmony_ci 1677db96d56Sopenharmony_ci if ((type == &tee_type || 1687db96d56Sopenharmony_ci type->tp_init == tee_type.tp_init) && 1697db96d56Sopenharmony_ci !_PyArg_NoKeywords("_tee", kwargs)) { 1707db96d56Sopenharmony_ci goto exit; 1717db96d56Sopenharmony_ci } 1727db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("_tee", PyTuple_GET_SIZE(args), 1, 1)) { 1737db96d56Sopenharmony_ci goto exit; 1747db96d56Sopenharmony_ci } 1757db96d56Sopenharmony_ci iterable = PyTuple_GET_ITEM(args, 0); 1767db96d56Sopenharmony_ci return_value = itertools__tee_impl(type, iterable); 1777db96d56Sopenharmony_ci 1787db96d56Sopenharmony_ciexit: 1797db96d56Sopenharmony_ci return return_value; 1807db96d56Sopenharmony_ci} 1817db96d56Sopenharmony_ci 1827db96d56Sopenharmony_ciPyDoc_STRVAR(itertools_tee__doc__, 1837db96d56Sopenharmony_ci"tee($module, iterable, n=2, /)\n" 1847db96d56Sopenharmony_ci"--\n" 1857db96d56Sopenharmony_ci"\n" 1867db96d56Sopenharmony_ci"Returns a tuple of n independent iterators."); 1877db96d56Sopenharmony_ci 1887db96d56Sopenharmony_ci#define ITERTOOLS_TEE_METHODDEF \ 1897db96d56Sopenharmony_ci {"tee", _PyCFunction_CAST(itertools_tee), METH_FASTCALL, itertools_tee__doc__}, 1907db96d56Sopenharmony_ci 1917db96d56Sopenharmony_cistatic PyObject * 1927db96d56Sopenharmony_ciitertools_tee_impl(PyObject *module, PyObject *iterable, Py_ssize_t n); 1937db96d56Sopenharmony_ci 1947db96d56Sopenharmony_cistatic PyObject * 1957db96d56Sopenharmony_ciitertools_tee(PyObject *module, PyObject *const *args, Py_ssize_t nargs) 1967db96d56Sopenharmony_ci{ 1977db96d56Sopenharmony_ci PyObject *return_value = NULL; 1987db96d56Sopenharmony_ci PyObject *iterable; 1997db96d56Sopenharmony_ci Py_ssize_t n = 2; 2007db96d56Sopenharmony_ci 2017db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("tee", nargs, 1, 2)) { 2027db96d56Sopenharmony_ci goto exit; 2037db96d56Sopenharmony_ci } 2047db96d56Sopenharmony_ci iterable = args[0]; 2057db96d56Sopenharmony_ci if (nargs < 2) { 2067db96d56Sopenharmony_ci goto skip_optional; 2077db96d56Sopenharmony_ci } 2087db96d56Sopenharmony_ci { 2097db96d56Sopenharmony_ci Py_ssize_t ival = -1; 2107db96d56Sopenharmony_ci PyObject *iobj = _PyNumber_Index(args[1]); 2117db96d56Sopenharmony_ci if (iobj != NULL) { 2127db96d56Sopenharmony_ci ival = PyLong_AsSsize_t(iobj); 2137db96d56Sopenharmony_ci Py_DECREF(iobj); 2147db96d56Sopenharmony_ci } 2157db96d56Sopenharmony_ci if (ival == -1 && PyErr_Occurred()) { 2167db96d56Sopenharmony_ci goto exit; 2177db96d56Sopenharmony_ci } 2187db96d56Sopenharmony_ci n = ival; 2197db96d56Sopenharmony_ci } 2207db96d56Sopenharmony_ciskip_optional: 2217db96d56Sopenharmony_ci return_value = itertools_tee_impl(module, iterable, n); 2227db96d56Sopenharmony_ci 2237db96d56Sopenharmony_ciexit: 2247db96d56Sopenharmony_ci return return_value; 2257db96d56Sopenharmony_ci} 2267db96d56Sopenharmony_ci 2277db96d56Sopenharmony_ciPyDoc_STRVAR(itertools_cycle__doc__, 2287db96d56Sopenharmony_ci"cycle(iterable, /)\n" 2297db96d56Sopenharmony_ci"--\n" 2307db96d56Sopenharmony_ci"\n" 2317db96d56Sopenharmony_ci"Return elements from the iterable until it is exhausted. Then repeat the sequence indefinitely."); 2327db96d56Sopenharmony_ci 2337db96d56Sopenharmony_cistatic PyObject * 2347db96d56Sopenharmony_ciitertools_cycle_impl(PyTypeObject *type, PyObject *iterable); 2357db96d56Sopenharmony_ci 2367db96d56Sopenharmony_cistatic PyObject * 2377db96d56Sopenharmony_ciitertools_cycle(PyTypeObject *type, PyObject *args, PyObject *kwargs) 2387db96d56Sopenharmony_ci{ 2397db96d56Sopenharmony_ci PyObject *return_value = NULL; 2407db96d56Sopenharmony_ci PyObject *iterable; 2417db96d56Sopenharmony_ci 2427db96d56Sopenharmony_ci if ((type == &cycle_type || 2437db96d56Sopenharmony_ci type->tp_init == cycle_type.tp_init) && 2447db96d56Sopenharmony_ci !_PyArg_NoKeywords("cycle", kwargs)) { 2457db96d56Sopenharmony_ci goto exit; 2467db96d56Sopenharmony_ci } 2477db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("cycle", PyTuple_GET_SIZE(args), 1, 1)) { 2487db96d56Sopenharmony_ci goto exit; 2497db96d56Sopenharmony_ci } 2507db96d56Sopenharmony_ci iterable = PyTuple_GET_ITEM(args, 0); 2517db96d56Sopenharmony_ci return_value = itertools_cycle_impl(type, iterable); 2527db96d56Sopenharmony_ci 2537db96d56Sopenharmony_ciexit: 2547db96d56Sopenharmony_ci return return_value; 2557db96d56Sopenharmony_ci} 2567db96d56Sopenharmony_ci 2577db96d56Sopenharmony_ciPyDoc_STRVAR(itertools_dropwhile__doc__, 2587db96d56Sopenharmony_ci"dropwhile(predicate, iterable, /)\n" 2597db96d56Sopenharmony_ci"--\n" 2607db96d56Sopenharmony_ci"\n" 2617db96d56Sopenharmony_ci"Drop items from the iterable while predicate(item) is true.\n" 2627db96d56Sopenharmony_ci"\n" 2637db96d56Sopenharmony_ci"Afterwards, return every element until the iterable is exhausted."); 2647db96d56Sopenharmony_ci 2657db96d56Sopenharmony_cistatic PyObject * 2667db96d56Sopenharmony_ciitertools_dropwhile_impl(PyTypeObject *type, PyObject *func, PyObject *seq); 2677db96d56Sopenharmony_ci 2687db96d56Sopenharmony_cistatic PyObject * 2697db96d56Sopenharmony_ciitertools_dropwhile(PyTypeObject *type, PyObject *args, PyObject *kwargs) 2707db96d56Sopenharmony_ci{ 2717db96d56Sopenharmony_ci PyObject *return_value = NULL; 2727db96d56Sopenharmony_ci PyObject *func; 2737db96d56Sopenharmony_ci PyObject *seq; 2747db96d56Sopenharmony_ci 2757db96d56Sopenharmony_ci if ((type == &dropwhile_type || 2767db96d56Sopenharmony_ci type->tp_init == dropwhile_type.tp_init) && 2777db96d56Sopenharmony_ci !_PyArg_NoKeywords("dropwhile", kwargs)) { 2787db96d56Sopenharmony_ci goto exit; 2797db96d56Sopenharmony_ci } 2807db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("dropwhile", PyTuple_GET_SIZE(args), 2, 2)) { 2817db96d56Sopenharmony_ci goto exit; 2827db96d56Sopenharmony_ci } 2837db96d56Sopenharmony_ci func = PyTuple_GET_ITEM(args, 0); 2847db96d56Sopenharmony_ci seq = PyTuple_GET_ITEM(args, 1); 2857db96d56Sopenharmony_ci return_value = itertools_dropwhile_impl(type, func, seq); 2867db96d56Sopenharmony_ci 2877db96d56Sopenharmony_ciexit: 2887db96d56Sopenharmony_ci return return_value; 2897db96d56Sopenharmony_ci} 2907db96d56Sopenharmony_ci 2917db96d56Sopenharmony_ciPyDoc_STRVAR(itertools_takewhile__doc__, 2927db96d56Sopenharmony_ci"takewhile(predicate, iterable, /)\n" 2937db96d56Sopenharmony_ci"--\n" 2947db96d56Sopenharmony_ci"\n" 2957db96d56Sopenharmony_ci"Return successive entries from an iterable as long as the predicate evaluates to true for each entry."); 2967db96d56Sopenharmony_ci 2977db96d56Sopenharmony_cistatic PyObject * 2987db96d56Sopenharmony_ciitertools_takewhile_impl(PyTypeObject *type, PyObject *func, PyObject *seq); 2997db96d56Sopenharmony_ci 3007db96d56Sopenharmony_cistatic PyObject * 3017db96d56Sopenharmony_ciitertools_takewhile(PyTypeObject *type, PyObject *args, PyObject *kwargs) 3027db96d56Sopenharmony_ci{ 3037db96d56Sopenharmony_ci PyObject *return_value = NULL; 3047db96d56Sopenharmony_ci PyObject *func; 3057db96d56Sopenharmony_ci PyObject *seq; 3067db96d56Sopenharmony_ci 3077db96d56Sopenharmony_ci if ((type == &takewhile_type || 3087db96d56Sopenharmony_ci type->tp_init == takewhile_type.tp_init) && 3097db96d56Sopenharmony_ci !_PyArg_NoKeywords("takewhile", kwargs)) { 3107db96d56Sopenharmony_ci goto exit; 3117db96d56Sopenharmony_ci } 3127db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("takewhile", PyTuple_GET_SIZE(args), 2, 2)) { 3137db96d56Sopenharmony_ci goto exit; 3147db96d56Sopenharmony_ci } 3157db96d56Sopenharmony_ci func = PyTuple_GET_ITEM(args, 0); 3167db96d56Sopenharmony_ci seq = PyTuple_GET_ITEM(args, 1); 3177db96d56Sopenharmony_ci return_value = itertools_takewhile_impl(type, func, seq); 3187db96d56Sopenharmony_ci 3197db96d56Sopenharmony_ciexit: 3207db96d56Sopenharmony_ci return return_value; 3217db96d56Sopenharmony_ci} 3227db96d56Sopenharmony_ci 3237db96d56Sopenharmony_ciPyDoc_STRVAR(itertools_starmap__doc__, 3247db96d56Sopenharmony_ci"starmap(function, iterable, /)\n" 3257db96d56Sopenharmony_ci"--\n" 3267db96d56Sopenharmony_ci"\n" 3277db96d56Sopenharmony_ci"Return an iterator whose values are returned from the function evaluated with an argument tuple taken from the given sequence."); 3287db96d56Sopenharmony_ci 3297db96d56Sopenharmony_cistatic PyObject * 3307db96d56Sopenharmony_ciitertools_starmap_impl(PyTypeObject *type, PyObject *func, PyObject *seq); 3317db96d56Sopenharmony_ci 3327db96d56Sopenharmony_cistatic PyObject * 3337db96d56Sopenharmony_ciitertools_starmap(PyTypeObject *type, PyObject *args, PyObject *kwargs) 3347db96d56Sopenharmony_ci{ 3357db96d56Sopenharmony_ci PyObject *return_value = NULL; 3367db96d56Sopenharmony_ci PyObject *func; 3377db96d56Sopenharmony_ci PyObject *seq; 3387db96d56Sopenharmony_ci 3397db96d56Sopenharmony_ci if ((type == &starmap_type || 3407db96d56Sopenharmony_ci type->tp_init == starmap_type.tp_init) && 3417db96d56Sopenharmony_ci !_PyArg_NoKeywords("starmap", kwargs)) { 3427db96d56Sopenharmony_ci goto exit; 3437db96d56Sopenharmony_ci } 3447db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("starmap", PyTuple_GET_SIZE(args), 2, 2)) { 3457db96d56Sopenharmony_ci goto exit; 3467db96d56Sopenharmony_ci } 3477db96d56Sopenharmony_ci func = PyTuple_GET_ITEM(args, 0); 3487db96d56Sopenharmony_ci seq = PyTuple_GET_ITEM(args, 1); 3497db96d56Sopenharmony_ci return_value = itertools_starmap_impl(type, func, seq); 3507db96d56Sopenharmony_ci 3517db96d56Sopenharmony_ciexit: 3527db96d56Sopenharmony_ci return return_value; 3537db96d56Sopenharmony_ci} 3547db96d56Sopenharmony_ci 3557db96d56Sopenharmony_ciPyDoc_STRVAR(itertools_chain_from_iterable__doc__, 3567db96d56Sopenharmony_ci"from_iterable($type, iterable, /)\n" 3577db96d56Sopenharmony_ci"--\n" 3587db96d56Sopenharmony_ci"\n" 3597db96d56Sopenharmony_ci"Alternative chain() constructor taking a single iterable argument that evaluates lazily."); 3607db96d56Sopenharmony_ci 3617db96d56Sopenharmony_ci#define ITERTOOLS_CHAIN_FROM_ITERABLE_METHODDEF \ 3627db96d56Sopenharmony_ci {"from_iterable", (PyCFunction)itertools_chain_from_iterable, METH_O|METH_CLASS, itertools_chain_from_iterable__doc__}, 3637db96d56Sopenharmony_ci 3647db96d56Sopenharmony_ciPyDoc_STRVAR(itertools_combinations__doc__, 3657db96d56Sopenharmony_ci"combinations(iterable, r)\n" 3667db96d56Sopenharmony_ci"--\n" 3677db96d56Sopenharmony_ci"\n" 3687db96d56Sopenharmony_ci"Return successive r-length combinations of elements in the iterable.\n" 3697db96d56Sopenharmony_ci"\n" 3707db96d56Sopenharmony_ci"combinations(range(4), 3) --> (0,1,2), (0,1,3), (0,2,3), (1,2,3)"); 3717db96d56Sopenharmony_ci 3727db96d56Sopenharmony_cistatic PyObject * 3737db96d56Sopenharmony_ciitertools_combinations_impl(PyTypeObject *type, PyObject *iterable, 3747db96d56Sopenharmony_ci Py_ssize_t r); 3757db96d56Sopenharmony_ci 3767db96d56Sopenharmony_cistatic PyObject * 3777db96d56Sopenharmony_ciitertools_combinations(PyTypeObject *type, PyObject *args, PyObject *kwargs) 3787db96d56Sopenharmony_ci{ 3797db96d56Sopenharmony_ci PyObject *return_value = NULL; 3807db96d56Sopenharmony_ci static const char * const _keywords[] = {"iterable", "r", NULL}; 3817db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "combinations", 0}; 3827db96d56Sopenharmony_ci PyObject *argsbuf[2]; 3837db96d56Sopenharmony_ci PyObject * const *fastargs; 3847db96d56Sopenharmony_ci Py_ssize_t nargs = PyTuple_GET_SIZE(args); 3857db96d56Sopenharmony_ci PyObject *iterable; 3867db96d56Sopenharmony_ci Py_ssize_t r; 3877db96d56Sopenharmony_ci 3887db96d56Sopenharmony_ci fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 2, 2, 0, argsbuf); 3897db96d56Sopenharmony_ci if (!fastargs) { 3907db96d56Sopenharmony_ci goto exit; 3917db96d56Sopenharmony_ci } 3927db96d56Sopenharmony_ci iterable = fastargs[0]; 3937db96d56Sopenharmony_ci { 3947db96d56Sopenharmony_ci Py_ssize_t ival = -1; 3957db96d56Sopenharmony_ci PyObject *iobj = _PyNumber_Index(fastargs[1]); 3967db96d56Sopenharmony_ci if (iobj != NULL) { 3977db96d56Sopenharmony_ci ival = PyLong_AsSsize_t(iobj); 3987db96d56Sopenharmony_ci Py_DECREF(iobj); 3997db96d56Sopenharmony_ci } 4007db96d56Sopenharmony_ci if (ival == -1 && PyErr_Occurred()) { 4017db96d56Sopenharmony_ci goto exit; 4027db96d56Sopenharmony_ci } 4037db96d56Sopenharmony_ci r = ival; 4047db96d56Sopenharmony_ci } 4057db96d56Sopenharmony_ci return_value = itertools_combinations_impl(type, iterable, r); 4067db96d56Sopenharmony_ci 4077db96d56Sopenharmony_ciexit: 4087db96d56Sopenharmony_ci return return_value; 4097db96d56Sopenharmony_ci} 4107db96d56Sopenharmony_ci 4117db96d56Sopenharmony_ciPyDoc_STRVAR(itertools_combinations_with_replacement__doc__, 4127db96d56Sopenharmony_ci"combinations_with_replacement(iterable, r)\n" 4137db96d56Sopenharmony_ci"--\n" 4147db96d56Sopenharmony_ci"\n" 4157db96d56Sopenharmony_ci"Return successive r-length combinations of elements in the iterable allowing individual elements to have successive repeats.\n" 4167db96d56Sopenharmony_ci"\n" 4177db96d56Sopenharmony_ci"combinations_with_replacement(\'ABC\', 2) --> (\'A\',\'A\'), (\'A\',\'B\'), (\'A\',\'C\'), (\'B\',\'B\'), (\'B\',\'C\'), (\'C\',\'C\')"); 4187db96d56Sopenharmony_ci 4197db96d56Sopenharmony_cistatic PyObject * 4207db96d56Sopenharmony_ciitertools_combinations_with_replacement_impl(PyTypeObject *type, 4217db96d56Sopenharmony_ci PyObject *iterable, 4227db96d56Sopenharmony_ci Py_ssize_t r); 4237db96d56Sopenharmony_ci 4247db96d56Sopenharmony_cistatic PyObject * 4257db96d56Sopenharmony_ciitertools_combinations_with_replacement(PyTypeObject *type, PyObject *args, PyObject *kwargs) 4267db96d56Sopenharmony_ci{ 4277db96d56Sopenharmony_ci PyObject *return_value = NULL; 4287db96d56Sopenharmony_ci static const char * const _keywords[] = {"iterable", "r", NULL}; 4297db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "combinations_with_replacement", 0}; 4307db96d56Sopenharmony_ci PyObject *argsbuf[2]; 4317db96d56Sopenharmony_ci PyObject * const *fastargs; 4327db96d56Sopenharmony_ci Py_ssize_t nargs = PyTuple_GET_SIZE(args); 4337db96d56Sopenharmony_ci PyObject *iterable; 4347db96d56Sopenharmony_ci Py_ssize_t r; 4357db96d56Sopenharmony_ci 4367db96d56Sopenharmony_ci fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 2, 2, 0, argsbuf); 4377db96d56Sopenharmony_ci if (!fastargs) { 4387db96d56Sopenharmony_ci goto exit; 4397db96d56Sopenharmony_ci } 4407db96d56Sopenharmony_ci iterable = fastargs[0]; 4417db96d56Sopenharmony_ci { 4427db96d56Sopenharmony_ci Py_ssize_t ival = -1; 4437db96d56Sopenharmony_ci PyObject *iobj = _PyNumber_Index(fastargs[1]); 4447db96d56Sopenharmony_ci if (iobj != NULL) { 4457db96d56Sopenharmony_ci ival = PyLong_AsSsize_t(iobj); 4467db96d56Sopenharmony_ci Py_DECREF(iobj); 4477db96d56Sopenharmony_ci } 4487db96d56Sopenharmony_ci if (ival == -1 && PyErr_Occurred()) { 4497db96d56Sopenharmony_ci goto exit; 4507db96d56Sopenharmony_ci } 4517db96d56Sopenharmony_ci r = ival; 4527db96d56Sopenharmony_ci } 4537db96d56Sopenharmony_ci return_value = itertools_combinations_with_replacement_impl(type, iterable, r); 4547db96d56Sopenharmony_ci 4557db96d56Sopenharmony_ciexit: 4567db96d56Sopenharmony_ci return return_value; 4577db96d56Sopenharmony_ci} 4587db96d56Sopenharmony_ci 4597db96d56Sopenharmony_ciPyDoc_STRVAR(itertools_permutations__doc__, 4607db96d56Sopenharmony_ci"permutations(iterable, r=None)\n" 4617db96d56Sopenharmony_ci"--\n" 4627db96d56Sopenharmony_ci"\n" 4637db96d56Sopenharmony_ci"Return successive r-length permutations of elements in the iterable.\n" 4647db96d56Sopenharmony_ci"\n" 4657db96d56Sopenharmony_ci"permutations(range(3), 2) --> (0,1), (0,2), (1,0), (1,2), (2,0), (2,1)"); 4667db96d56Sopenharmony_ci 4677db96d56Sopenharmony_cistatic PyObject * 4687db96d56Sopenharmony_ciitertools_permutations_impl(PyTypeObject *type, PyObject *iterable, 4697db96d56Sopenharmony_ci PyObject *robj); 4707db96d56Sopenharmony_ci 4717db96d56Sopenharmony_cistatic PyObject * 4727db96d56Sopenharmony_ciitertools_permutations(PyTypeObject *type, PyObject *args, PyObject *kwargs) 4737db96d56Sopenharmony_ci{ 4747db96d56Sopenharmony_ci PyObject *return_value = NULL; 4757db96d56Sopenharmony_ci static const char * const _keywords[] = {"iterable", "r", NULL}; 4767db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "permutations", 0}; 4777db96d56Sopenharmony_ci PyObject *argsbuf[2]; 4787db96d56Sopenharmony_ci PyObject * const *fastargs; 4797db96d56Sopenharmony_ci Py_ssize_t nargs = PyTuple_GET_SIZE(args); 4807db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 1; 4817db96d56Sopenharmony_ci PyObject *iterable; 4827db96d56Sopenharmony_ci PyObject *robj = Py_None; 4837db96d56Sopenharmony_ci 4847db96d56Sopenharmony_ci fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 1, 2, 0, argsbuf); 4857db96d56Sopenharmony_ci if (!fastargs) { 4867db96d56Sopenharmony_ci goto exit; 4877db96d56Sopenharmony_ci } 4887db96d56Sopenharmony_ci iterable = fastargs[0]; 4897db96d56Sopenharmony_ci if (!noptargs) { 4907db96d56Sopenharmony_ci goto skip_optional_pos; 4917db96d56Sopenharmony_ci } 4927db96d56Sopenharmony_ci robj = fastargs[1]; 4937db96d56Sopenharmony_ciskip_optional_pos: 4947db96d56Sopenharmony_ci return_value = itertools_permutations_impl(type, iterable, robj); 4957db96d56Sopenharmony_ci 4967db96d56Sopenharmony_ciexit: 4977db96d56Sopenharmony_ci return return_value; 4987db96d56Sopenharmony_ci} 4997db96d56Sopenharmony_ci 5007db96d56Sopenharmony_ciPyDoc_STRVAR(itertools_accumulate__doc__, 5017db96d56Sopenharmony_ci"accumulate(iterable, func=None, *, initial=None)\n" 5027db96d56Sopenharmony_ci"--\n" 5037db96d56Sopenharmony_ci"\n" 5047db96d56Sopenharmony_ci"Return series of accumulated sums (or other binary function results)."); 5057db96d56Sopenharmony_ci 5067db96d56Sopenharmony_cistatic PyObject * 5077db96d56Sopenharmony_ciitertools_accumulate_impl(PyTypeObject *type, PyObject *iterable, 5087db96d56Sopenharmony_ci PyObject *binop, PyObject *initial); 5097db96d56Sopenharmony_ci 5107db96d56Sopenharmony_cistatic PyObject * 5117db96d56Sopenharmony_ciitertools_accumulate(PyTypeObject *type, PyObject *args, PyObject *kwargs) 5127db96d56Sopenharmony_ci{ 5137db96d56Sopenharmony_ci PyObject *return_value = NULL; 5147db96d56Sopenharmony_ci static const char * const _keywords[] = {"iterable", "func", "initial", NULL}; 5157db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "accumulate", 0}; 5167db96d56Sopenharmony_ci PyObject *argsbuf[3]; 5177db96d56Sopenharmony_ci PyObject * const *fastargs; 5187db96d56Sopenharmony_ci Py_ssize_t nargs = PyTuple_GET_SIZE(args); 5197db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 1; 5207db96d56Sopenharmony_ci PyObject *iterable; 5217db96d56Sopenharmony_ci PyObject *binop = Py_None; 5227db96d56Sopenharmony_ci PyObject *initial = Py_None; 5237db96d56Sopenharmony_ci 5247db96d56Sopenharmony_ci fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 1, 2, 0, argsbuf); 5257db96d56Sopenharmony_ci if (!fastargs) { 5267db96d56Sopenharmony_ci goto exit; 5277db96d56Sopenharmony_ci } 5287db96d56Sopenharmony_ci iterable = fastargs[0]; 5297db96d56Sopenharmony_ci if (!noptargs) { 5307db96d56Sopenharmony_ci goto skip_optional_pos; 5317db96d56Sopenharmony_ci } 5327db96d56Sopenharmony_ci if (fastargs[1]) { 5337db96d56Sopenharmony_ci binop = fastargs[1]; 5347db96d56Sopenharmony_ci if (!--noptargs) { 5357db96d56Sopenharmony_ci goto skip_optional_pos; 5367db96d56Sopenharmony_ci } 5377db96d56Sopenharmony_ci } 5387db96d56Sopenharmony_ciskip_optional_pos: 5397db96d56Sopenharmony_ci if (!noptargs) { 5407db96d56Sopenharmony_ci goto skip_optional_kwonly; 5417db96d56Sopenharmony_ci } 5427db96d56Sopenharmony_ci initial = fastargs[2]; 5437db96d56Sopenharmony_ciskip_optional_kwonly: 5447db96d56Sopenharmony_ci return_value = itertools_accumulate_impl(type, iterable, binop, initial); 5457db96d56Sopenharmony_ci 5467db96d56Sopenharmony_ciexit: 5477db96d56Sopenharmony_ci return return_value; 5487db96d56Sopenharmony_ci} 5497db96d56Sopenharmony_ci 5507db96d56Sopenharmony_ciPyDoc_STRVAR(itertools_compress__doc__, 5517db96d56Sopenharmony_ci"compress(data, selectors)\n" 5527db96d56Sopenharmony_ci"--\n" 5537db96d56Sopenharmony_ci"\n" 5547db96d56Sopenharmony_ci"Return data elements corresponding to true selector elements.\n" 5557db96d56Sopenharmony_ci"\n" 5567db96d56Sopenharmony_ci"Forms a shorter iterator from selected data elements using the selectors to\n" 5577db96d56Sopenharmony_ci"choose the data elements."); 5587db96d56Sopenharmony_ci 5597db96d56Sopenharmony_cistatic PyObject * 5607db96d56Sopenharmony_ciitertools_compress_impl(PyTypeObject *type, PyObject *seq1, PyObject *seq2); 5617db96d56Sopenharmony_ci 5627db96d56Sopenharmony_cistatic PyObject * 5637db96d56Sopenharmony_ciitertools_compress(PyTypeObject *type, PyObject *args, PyObject *kwargs) 5647db96d56Sopenharmony_ci{ 5657db96d56Sopenharmony_ci PyObject *return_value = NULL; 5667db96d56Sopenharmony_ci static const char * const _keywords[] = {"data", "selectors", NULL}; 5677db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "compress", 0}; 5687db96d56Sopenharmony_ci PyObject *argsbuf[2]; 5697db96d56Sopenharmony_ci PyObject * const *fastargs; 5707db96d56Sopenharmony_ci Py_ssize_t nargs = PyTuple_GET_SIZE(args); 5717db96d56Sopenharmony_ci PyObject *seq1; 5727db96d56Sopenharmony_ci PyObject *seq2; 5737db96d56Sopenharmony_ci 5747db96d56Sopenharmony_ci fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 2, 2, 0, argsbuf); 5757db96d56Sopenharmony_ci if (!fastargs) { 5767db96d56Sopenharmony_ci goto exit; 5777db96d56Sopenharmony_ci } 5787db96d56Sopenharmony_ci seq1 = fastargs[0]; 5797db96d56Sopenharmony_ci seq2 = fastargs[1]; 5807db96d56Sopenharmony_ci return_value = itertools_compress_impl(type, seq1, seq2); 5817db96d56Sopenharmony_ci 5827db96d56Sopenharmony_ciexit: 5837db96d56Sopenharmony_ci return return_value; 5847db96d56Sopenharmony_ci} 5857db96d56Sopenharmony_ci 5867db96d56Sopenharmony_ciPyDoc_STRVAR(itertools_filterfalse__doc__, 5877db96d56Sopenharmony_ci"filterfalse(function, iterable, /)\n" 5887db96d56Sopenharmony_ci"--\n" 5897db96d56Sopenharmony_ci"\n" 5907db96d56Sopenharmony_ci"Return those items of iterable for which function(item) is false.\n" 5917db96d56Sopenharmony_ci"\n" 5927db96d56Sopenharmony_ci"If function is None, return the items that are false."); 5937db96d56Sopenharmony_ci 5947db96d56Sopenharmony_cistatic PyObject * 5957db96d56Sopenharmony_ciitertools_filterfalse_impl(PyTypeObject *type, PyObject *func, PyObject *seq); 5967db96d56Sopenharmony_ci 5977db96d56Sopenharmony_cistatic PyObject * 5987db96d56Sopenharmony_ciitertools_filterfalse(PyTypeObject *type, PyObject *args, PyObject *kwargs) 5997db96d56Sopenharmony_ci{ 6007db96d56Sopenharmony_ci PyObject *return_value = NULL; 6017db96d56Sopenharmony_ci PyObject *func; 6027db96d56Sopenharmony_ci PyObject *seq; 6037db96d56Sopenharmony_ci 6047db96d56Sopenharmony_ci if ((type == &filterfalse_type || 6057db96d56Sopenharmony_ci type->tp_init == filterfalse_type.tp_init) && 6067db96d56Sopenharmony_ci !_PyArg_NoKeywords("filterfalse", kwargs)) { 6077db96d56Sopenharmony_ci goto exit; 6087db96d56Sopenharmony_ci } 6097db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("filterfalse", PyTuple_GET_SIZE(args), 2, 2)) { 6107db96d56Sopenharmony_ci goto exit; 6117db96d56Sopenharmony_ci } 6127db96d56Sopenharmony_ci func = PyTuple_GET_ITEM(args, 0); 6137db96d56Sopenharmony_ci seq = PyTuple_GET_ITEM(args, 1); 6147db96d56Sopenharmony_ci return_value = itertools_filterfalse_impl(type, func, seq); 6157db96d56Sopenharmony_ci 6167db96d56Sopenharmony_ciexit: 6177db96d56Sopenharmony_ci return return_value; 6187db96d56Sopenharmony_ci} 6197db96d56Sopenharmony_ci 6207db96d56Sopenharmony_ciPyDoc_STRVAR(itertools_count__doc__, 6217db96d56Sopenharmony_ci"count(start=0, step=1)\n" 6227db96d56Sopenharmony_ci"--\n" 6237db96d56Sopenharmony_ci"\n" 6247db96d56Sopenharmony_ci"Return a count object whose .__next__() method returns consecutive values.\n" 6257db96d56Sopenharmony_ci"\n" 6267db96d56Sopenharmony_ci"Equivalent to:\n" 6277db96d56Sopenharmony_ci" def count(firstval=0, step=1):\n" 6287db96d56Sopenharmony_ci" x = firstval\n" 6297db96d56Sopenharmony_ci" while 1:\n" 6307db96d56Sopenharmony_ci" yield x\n" 6317db96d56Sopenharmony_ci" x += step"); 6327db96d56Sopenharmony_ci 6337db96d56Sopenharmony_cistatic PyObject * 6347db96d56Sopenharmony_ciitertools_count_impl(PyTypeObject *type, PyObject *long_cnt, 6357db96d56Sopenharmony_ci PyObject *long_step); 6367db96d56Sopenharmony_ci 6377db96d56Sopenharmony_cistatic PyObject * 6387db96d56Sopenharmony_ciitertools_count(PyTypeObject *type, PyObject *args, PyObject *kwargs) 6397db96d56Sopenharmony_ci{ 6407db96d56Sopenharmony_ci PyObject *return_value = NULL; 6417db96d56Sopenharmony_ci static const char * const _keywords[] = {"start", "step", NULL}; 6427db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "count", 0}; 6437db96d56Sopenharmony_ci PyObject *argsbuf[2]; 6447db96d56Sopenharmony_ci PyObject * const *fastargs; 6457db96d56Sopenharmony_ci Py_ssize_t nargs = PyTuple_GET_SIZE(args); 6467db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 0; 6477db96d56Sopenharmony_ci PyObject *long_cnt = NULL; 6487db96d56Sopenharmony_ci PyObject *long_step = NULL; 6497db96d56Sopenharmony_ci 6507db96d56Sopenharmony_ci fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 0, 2, 0, argsbuf); 6517db96d56Sopenharmony_ci if (!fastargs) { 6527db96d56Sopenharmony_ci goto exit; 6537db96d56Sopenharmony_ci } 6547db96d56Sopenharmony_ci if (!noptargs) { 6557db96d56Sopenharmony_ci goto skip_optional_pos; 6567db96d56Sopenharmony_ci } 6577db96d56Sopenharmony_ci if (fastargs[0]) { 6587db96d56Sopenharmony_ci long_cnt = fastargs[0]; 6597db96d56Sopenharmony_ci if (!--noptargs) { 6607db96d56Sopenharmony_ci goto skip_optional_pos; 6617db96d56Sopenharmony_ci } 6627db96d56Sopenharmony_ci } 6637db96d56Sopenharmony_ci long_step = fastargs[1]; 6647db96d56Sopenharmony_ciskip_optional_pos: 6657db96d56Sopenharmony_ci return_value = itertools_count_impl(type, long_cnt, long_step); 6667db96d56Sopenharmony_ci 6677db96d56Sopenharmony_ciexit: 6687db96d56Sopenharmony_ci return return_value; 6697db96d56Sopenharmony_ci} 6707db96d56Sopenharmony_ci/*[clinic end generated code: output=659251a811ff89ed input=a9049054013a1b77]*/ 671