• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*[clinic input]
2 preserve
3 [clinic start generated code]*/
4 
5 PyDoc_STRVAR(builtin_abs__doc__,
6 "abs($module, x, /)\n"
7 "--\n"
8 "\n"
9 "Return the absolute value of the argument.");
10 
11 #define BUILTIN_ABS_METHODDEF    \
12     {"abs", (PyCFunction)builtin_abs, METH_O, builtin_abs__doc__},
13 
14 PyDoc_STRVAR(builtin_all__doc__,
15 "all($module, iterable, /)\n"
16 "--\n"
17 "\n"
18 "Return True if bool(x) is True for all values x in the iterable.\n"
19 "\n"
20 "If the iterable is empty, return True.");
21 
22 #define BUILTIN_ALL_METHODDEF    \
23     {"all", (PyCFunction)builtin_all, METH_O, builtin_all__doc__},
24 
25 PyDoc_STRVAR(builtin_any__doc__,
26 "any($module, iterable, /)\n"
27 "--\n"
28 "\n"
29 "Return True if bool(x) is True for any x in the iterable.\n"
30 "\n"
31 "If the iterable is empty, return False.");
32 
33 #define BUILTIN_ANY_METHODDEF    \
34     {"any", (PyCFunction)builtin_any, METH_O, builtin_any__doc__},
35 
36 PyDoc_STRVAR(builtin_ascii__doc__,
37 "ascii($module, obj, /)\n"
38 "--\n"
39 "\n"
40 "Return an ASCII-only representation of an object.\n"
41 "\n"
42 "As repr(), return a string containing a printable representation of an\n"
43 "object, but escape the non-ASCII characters in the string returned by\n"
44 "repr() using \\\\x, \\\\u or \\\\U escapes. This generates a string similar\n"
45 "to that returned by repr() in Python 2.");
46 
47 #define BUILTIN_ASCII_METHODDEF    \
48     {"ascii", (PyCFunction)builtin_ascii, METH_O, builtin_ascii__doc__},
49 
50 PyDoc_STRVAR(builtin_bin__doc__,
51 "bin($module, number, /)\n"
52 "--\n"
53 "\n"
54 "Return the binary representation of an integer.\n"
55 "\n"
56 "   >>> bin(2796202)\n"
57 "   \'0b1010101010101010101010\'");
58 
59 #define BUILTIN_BIN_METHODDEF    \
60     {"bin", (PyCFunction)builtin_bin, METH_O, builtin_bin__doc__},
61 
62 PyDoc_STRVAR(builtin_callable__doc__,
63 "callable($module, obj, /)\n"
64 "--\n"
65 "\n"
66 "Return whether the object is callable (i.e., some kind of function).\n"
67 "\n"
68 "Note that classes are callable, as are instances of classes with a\n"
69 "__call__() method.");
70 
71 #define BUILTIN_CALLABLE_METHODDEF    \
72     {"callable", (PyCFunction)builtin_callable, METH_O, builtin_callable__doc__},
73 
74 PyDoc_STRVAR(builtin_format__doc__,
75 "format($module, value, format_spec=\'\', /)\n"
76 "--\n"
77 "\n"
78 "Return value.__format__(format_spec)\n"
79 "\n"
80 "format_spec defaults to the empty string.\n"
81 "See the Format Specification Mini-Language section of help(\'FORMATTING\') for\n"
82 "details.");
83 
84 #define BUILTIN_FORMAT_METHODDEF    \
85     {"format", (PyCFunction)(void(*)(void))builtin_format, METH_FASTCALL, builtin_format__doc__},
86 
87 static PyObject *
88 builtin_format_impl(PyObject *module, PyObject *value, PyObject *format_spec);
89 
90 static PyObject *
builtin_format(PyObject * module,PyObject * const * args,Py_ssize_t nargs)91 builtin_format(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
92 {
93     PyObject *return_value = NULL;
94     PyObject *value;
95     PyObject *format_spec = NULL;
96 
97     if (!_PyArg_CheckPositional("format", nargs, 1, 2)) {
98         goto exit;
99     }
100     value = args[0];
101     if (nargs < 2) {
102         goto skip_optional;
103     }
104     if (!PyUnicode_Check(args[1])) {
105         _PyArg_BadArgument("format", "argument 2", "str", args[1]);
106         goto exit;
107     }
108     if (PyUnicode_READY(args[1]) == -1) {
109         goto exit;
110     }
111     format_spec = args[1];
112 skip_optional:
113     return_value = builtin_format_impl(module, value, format_spec);
114 
115 exit:
116     return return_value;
117 }
118 
119 PyDoc_STRVAR(builtin_chr__doc__,
120 "chr($module, i, /)\n"
121 "--\n"
122 "\n"
123 "Return a Unicode string of one character with ordinal i; 0 <= i <= 0x10ffff.");
124 
125 #define BUILTIN_CHR_METHODDEF    \
126     {"chr", (PyCFunction)builtin_chr, METH_O, builtin_chr__doc__},
127 
128 static PyObject *
129 builtin_chr_impl(PyObject *module, int i);
130 
131 static PyObject *
builtin_chr(PyObject * module,PyObject * arg)132 builtin_chr(PyObject *module, PyObject *arg)
133 {
134     PyObject *return_value = NULL;
135     int i;
136 
137     if (PyFloat_Check(arg)) {
138         PyErr_SetString(PyExc_TypeError,
139                         "integer argument expected, got float" );
140         goto exit;
141     }
142     i = _PyLong_AsInt(arg);
143     if (i == -1 && PyErr_Occurred()) {
144         goto exit;
145     }
146     return_value = builtin_chr_impl(module, i);
147 
148 exit:
149     return return_value;
150 }
151 
152 PyDoc_STRVAR(builtin_compile__doc__,
153 "compile($module, /, source, filename, mode, flags=0,\n"
154 "        dont_inherit=False, optimize=-1, *, _feature_version=-1)\n"
155 "--\n"
156 "\n"
157 "Compile source into a code object that can be executed by exec() or eval().\n"
158 "\n"
159 "The source code may represent a Python module, statement or expression.\n"
160 "The filename will be used for run-time error messages.\n"
161 "The mode must be \'exec\' to compile a module, \'single\' to compile a\n"
162 "single (interactive) statement, or \'eval\' to compile an expression.\n"
163 "The flags argument, if present, controls which future statements influence\n"
164 "the compilation of the code.\n"
165 "The dont_inherit argument, if true, stops the compilation inheriting\n"
166 "the effects of any future statements in effect in the code calling\n"
167 "compile; if absent or false these statements do influence the compilation,\n"
168 "in addition to any features explicitly specified.");
169 
170 #define BUILTIN_COMPILE_METHODDEF    \
171     {"compile", (PyCFunction)(void(*)(void))builtin_compile, METH_FASTCALL|METH_KEYWORDS, builtin_compile__doc__},
172 
173 static PyObject *
174 builtin_compile_impl(PyObject *module, PyObject *source, PyObject *filename,
175                      const char *mode, int flags, int dont_inherit,
176                      int optimize, int feature_version);
177 
178 static PyObject *
builtin_compile(PyObject * module,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)179 builtin_compile(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
180 {
181     PyObject *return_value = NULL;
182     static const char * const _keywords[] = {"source", "filename", "mode", "flags", "dont_inherit", "optimize", "_feature_version", NULL};
183     static _PyArg_Parser _parser = {NULL, _keywords, "compile", 0};
184     PyObject *argsbuf[7];
185     Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 3;
186     PyObject *source;
187     PyObject *filename;
188     const char *mode;
189     int flags = 0;
190     int dont_inherit = 0;
191     int optimize = -1;
192     int feature_version = -1;
193 
194     args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 3, 6, 0, argsbuf);
195     if (!args) {
196         goto exit;
197     }
198     source = args[0];
199     if (!PyUnicode_FSDecoder(args[1], &filename)) {
200         goto exit;
201     }
202     if (!PyUnicode_Check(args[2])) {
203         _PyArg_BadArgument("compile", "argument 'mode'", "str", args[2]);
204         goto exit;
205     }
206     Py_ssize_t mode_length;
207     mode = PyUnicode_AsUTF8AndSize(args[2], &mode_length);
208     if (mode == NULL) {
209         goto exit;
210     }
211     if (strlen(mode) != (size_t)mode_length) {
212         PyErr_SetString(PyExc_ValueError, "embedded null character");
213         goto exit;
214     }
215     if (!noptargs) {
216         goto skip_optional_pos;
217     }
218     if (args[3]) {
219         if (PyFloat_Check(args[3])) {
220             PyErr_SetString(PyExc_TypeError,
221                             "integer argument expected, got float" );
222             goto exit;
223         }
224         flags = _PyLong_AsInt(args[3]);
225         if (flags == -1 && PyErr_Occurred()) {
226             goto exit;
227         }
228         if (!--noptargs) {
229             goto skip_optional_pos;
230         }
231     }
232     if (args[4]) {
233         if (PyFloat_Check(args[4])) {
234             PyErr_SetString(PyExc_TypeError,
235                             "integer argument expected, got float" );
236             goto exit;
237         }
238         dont_inherit = _PyLong_AsInt(args[4]);
239         if (dont_inherit == -1 && PyErr_Occurred()) {
240             goto exit;
241         }
242         if (!--noptargs) {
243             goto skip_optional_pos;
244         }
245     }
246     if (args[5]) {
247         if (PyFloat_Check(args[5])) {
248             PyErr_SetString(PyExc_TypeError,
249                             "integer argument expected, got float" );
250             goto exit;
251         }
252         optimize = _PyLong_AsInt(args[5]);
253         if (optimize == -1 && PyErr_Occurred()) {
254             goto exit;
255         }
256         if (!--noptargs) {
257             goto skip_optional_pos;
258         }
259     }
260 skip_optional_pos:
261     if (!noptargs) {
262         goto skip_optional_kwonly;
263     }
264     if (PyFloat_Check(args[6])) {
265         PyErr_SetString(PyExc_TypeError,
266                         "integer argument expected, got float" );
267         goto exit;
268     }
269     feature_version = _PyLong_AsInt(args[6]);
270     if (feature_version == -1 && PyErr_Occurred()) {
271         goto exit;
272     }
273 skip_optional_kwonly:
274     return_value = builtin_compile_impl(module, source, filename, mode, flags, dont_inherit, optimize, feature_version);
275 
276 exit:
277     return return_value;
278 }
279 
280 PyDoc_STRVAR(builtin_divmod__doc__,
281 "divmod($module, x, y, /)\n"
282 "--\n"
283 "\n"
284 "Return the tuple (x//y, x%y).  Invariant: div*y + mod == x.");
285 
286 #define BUILTIN_DIVMOD_METHODDEF    \
287     {"divmod", (PyCFunction)(void(*)(void))builtin_divmod, METH_FASTCALL, builtin_divmod__doc__},
288 
289 static PyObject *
290 builtin_divmod_impl(PyObject *module, PyObject *x, PyObject *y);
291 
292 static PyObject *
builtin_divmod(PyObject * module,PyObject * const * args,Py_ssize_t nargs)293 builtin_divmod(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
294 {
295     PyObject *return_value = NULL;
296     PyObject *x;
297     PyObject *y;
298 
299     if (!_PyArg_CheckPositional("divmod", nargs, 2, 2)) {
300         goto exit;
301     }
302     x = args[0];
303     y = args[1];
304     return_value = builtin_divmod_impl(module, x, y);
305 
306 exit:
307     return return_value;
308 }
309 
310 PyDoc_STRVAR(builtin_eval__doc__,
311 "eval($module, source, globals=None, locals=None, /)\n"
312 "--\n"
313 "\n"
314 "Evaluate the given source in the context of globals and locals.\n"
315 "\n"
316 "The source may be a string representing a Python expression\n"
317 "or a code object as returned by compile().\n"
318 "The globals must be a dictionary and locals can be any mapping,\n"
319 "defaulting to the current globals and locals.\n"
320 "If only globals is given, locals defaults to it.");
321 
322 #define BUILTIN_EVAL_METHODDEF    \
323     {"eval", (PyCFunction)(void(*)(void))builtin_eval, METH_FASTCALL, builtin_eval__doc__},
324 
325 static PyObject *
326 builtin_eval_impl(PyObject *module, PyObject *source, PyObject *globals,
327                   PyObject *locals);
328 
329 static PyObject *
builtin_eval(PyObject * module,PyObject * const * args,Py_ssize_t nargs)330 builtin_eval(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
331 {
332     PyObject *return_value = NULL;
333     PyObject *source;
334     PyObject *globals = Py_None;
335     PyObject *locals = Py_None;
336 
337     if (!_PyArg_CheckPositional("eval", nargs, 1, 3)) {
338         goto exit;
339     }
340     source = args[0];
341     if (nargs < 2) {
342         goto skip_optional;
343     }
344     globals = args[1];
345     if (nargs < 3) {
346         goto skip_optional;
347     }
348     locals = args[2];
349 skip_optional:
350     return_value = builtin_eval_impl(module, source, globals, locals);
351 
352 exit:
353     return return_value;
354 }
355 
356 PyDoc_STRVAR(builtin_exec__doc__,
357 "exec($module, source, globals=None, locals=None, /)\n"
358 "--\n"
359 "\n"
360 "Execute the given source in the context of globals and locals.\n"
361 "\n"
362 "The source may be a string representing one or more Python statements\n"
363 "or a code object as returned by compile().\n"
364 "The globals must be a dictionary and locals can be any mapping,\n"
365 "defaulting to the current globals and locals.\n"
366 "If only globals is given, locals defaults to it.");
367 
368 #define BUILTIN_EXEC_METHODDEF    \
369     {"exec", (PyCFunction)(void(*)(void))builtin_exec, METH_FASTCALL, builtin_exec__doc__},
370 
371 static PyObject *
372 builtin_exec_impl(PyObject *module, PyObject *source, PyObject *globals,
373                   PyObject *locals);
374 
375 static PyObject *
builtin_exec(PyObject * module,PyObject * const * args,Py_ssize_t nargs)376 builtin_exec(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
377 {
378     PyObject *return_value = NULL;
379     PyObject *source;
380     PyObject *globals = Py_None;
381     PyObject *locals = Py_None;
382 
383     if (!_PyArg_CheckPositional("exec", nargs, 1, 3)) {
384         goto exit;
385     }
386     source = args[0];
387     if (nargs < 2) {
388         goto skip_optional;
389     }
390     globals = args[1];
391     if (nargs < 3) {
392         goto skip_optional;
393     }
394     locals = args[2];
395 skip_optional:
396     return_value = builtin_exec_impl(module, source, globals, locals);
397 
398 exit:
399     return return_value;
400 }
401 
402 PyDoc_STRVAR(builtin_globals__doc__,
403 "globals($module, /)\n"
404 "--\n"
405 "\n"
406 "Return the dictionary containing the current scope\'s global variables.\n"
407 "\n"
408 "NOTE: Updates to this dictionary *will* affect name lookups in the current\n"
409 "global scope and vice-versa.");
410 
411 #define BUILTIN_GLOBALS_METHODDEF    \
412     {"globals", (PyCFunction)builtin_globals, METH_NOARGS, builtin_globals__doc__},
413 
414 static PyObject *
415 builtin_globals_impl(PyObject *module);
416 
417 static PyObject *
builtin_globals(PyObject * module,PyObject * Py_UNUSED (ignored))418 builtin_globals(PyObject *module, PyObject *Py_UNUSED(ignored))
419 {
420     return builtin_globals_impl(module);
421 }
422 
423 PyDoc_STRVAR(builtin_hasattr__doc__,
424 "hasattr($module, obj, name, /)\n"
425 "--\n"
426 "\n"
427 "Return whether the object has an attribute with the given name.\n"
428 "\n"
429 "This is done by calling getattr(obj, name) and catching AttributeError.");
430 
431 #define BUILTIN_HASATTR_METHODDEF    \
432     {"hasattr", (PyCFunction)(void(*)(void))builtin_hasattr, METH_FASTCALL, builtin_hasattr__doc__},
433 
434 static PyObject *
435 builtin_hasattr_impl(PyObject *module, PyObject *obj, PyObject *name);
436 
437 static PyObject *
builtin_hasattr(PyObject * module,PyObject * const * args,Py_ssize_t nargs)438 builtin_hasattr(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
439 {
440     PyObject *return_value = NULL;
441     PyObject *obj;
442     PyObject *name;
443 
444     if (!_PyArg_CheckPositional("hasattr", nargs, 2, 2)) {
445         goto exit;
446     }
447     obj = args[0];
448     name = args[1];
449     return_value = builtin_hasattr_impl(module, obj, name);
450 
451 exit:
452     return return_value;
453 }
454 
455 PyDoc_STRVAR(builtin_id__doc__,
456 "id($module, obj, /)\n"
457 "--\n"
458 "\n"
459 "Return the identity of an object.\n"
460 "\n"
461 "This is guaranteed to be unique among simultaneously existing objects.\n"
462 "(CPython uses the object\'s memory address.)");
463 
464 #define BUILTIN_ID_METHODDEF    \
465     {"id", (PyCFunction)builtin_id, METH_O, builtin_id__doc__},
466 
467 PyDoc_STRVAR(builtin_setattr__doc__,
468 "setattr($module, obj, name, value, /)\n"
469 "--\n"
470 "\n"
471 "Sets the named attribute on the given object to the specified value.\n"
472 "\n"
473 "setattr(x, \'y\', v) is equivalent to ``x.y = v\'\'");
474 
475 #define BUILTIN_SETATTR_METHODDEF    \
476     {"setattr", (PyCFunction)(void(*)(void))builtin_setattr, METH_FASTCALL, builtin_setattr__doc__},
477 
478 static PyObject *
479 builtin_setattr_impl(PyObject *module, PyObject *obj, PyObject *name,
480                      PyObject *value);
481 
482 static PyObject *
builtin_setattr(PyObject * module,PyObject * const * args,Py_ssize_t nargs)483 builtin_setattr(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
484 {
485     PyObject *return_value = NULL;
486     PyObject *obj;
487     PyObject *name;
488     PyObject *value;
489 
490     if (!_PyArg_CheckPositional("setattr", nargs, 3, 3)) {
491         goto exit;
492     }
493     obj = args[0];
494     name = args[1];
495     value = args[2];
496     return_value = builtin_setattr_impl(module, obj, name, value);
497 
498 exit:
499     return return_value;
500 }
501 
502 PyDoc_STRVAR(builtin_delattr__doc__,
503 "delattr($module, obj, name, /)\n"
504 "--\n"
505 "\n"
506 "Deletes the named attribute from the given object.\n"
507 "\n"
508 "delattr(x, \'y\') is equivalent to ``del x.y\'\'");
509 
510 #define BUILTIN_DELATTR_METHODDEF    \
511     {"delattr", (PyCFunction)(void(*)(void))builtin_delattr, METH_FASTCALL, builtin_delattr__doc__},
512 
513 static PyObject *
514 builtin_delattr_impl(PyObject *module, PyObject *obj, PyObject *name);
515 
516 static PyObject *
builtin_delattr(PyObject * module,PyObject * const * args,Py_ssize_t nargs)517 builtin_delattr(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
518 {
519     PyObject *return_value = NULL;
520     PyObject *obj;
521     PyObject *name;
522 
523     if (!_PyArg_CheckPositional("delattr", nargs, 2, 2)) {
524         goto exit;
525     }
526     obj = args[0];
527     name = args[1];
528     return_value = builtin_delattr_impl(module, obj, name);
529 
530 exit:
531     return return_value;
532 }
533 
534 PyDoc_STRVAR(builtin_hash__doc__,
535 "hash($module, obj, /)\n"
536 "--\n"
537 "\n"
538 "Return the hash value for the given object.\n"
539 "\n"
540 "Two objects that compare equal must also have the same hash value, but the\n"
541 "reverse is not necessarily true.");
542 
543 #define BUILTIN_HASH_METHODDEF    \
544     {"hash", (PyCFunction)builtin_hash, METH_O, builtin_hash__doc__},
545 
546 PyDoc_STRVAR(builtin_hex__doc__,
547 "hex($module, number, /)\n"
548 "--\n"
549 "\n"
550 "Return the hexadecimal representation of an integer.\n"
551 "\n"
552 "   >>> hex(12648430)\n"
553 "   \'0xc0ffee\'");
554 
555 #define BUILTIN_HEX_METHODDEF    \
556     {"hex", (PyCFunction)builtin_hex, METH_O, builtin_hex__doc__},
557 
558 PyDoc_STRVAR(builtin_len__doc__,
559 "len($module, obj, /)\n"
560 "--\n"
561 "\n"
562 "Return the number of items in a container.");
563 
564 #define BUILTIN_LEN_METHODDEF    \
565     {"len", (PyCFunction)builtin_len, METH_O, builtin_len__doc__},
566 
567 PyDoc_STRVAR(builtin_locals__doc__,
568 "locals($module, /)\n"
569 "--\n"
570 "\n"
571 "Return a dictionary containing the current scope\'s local variables.\n"
572 "\n"
573 "NOTE: Whether or not updates to this dictionary will affect name lookups in\n"
574 "the local scope and vice-versa is *implementation dependent* and not\n"
575 "covered by any backwards compatibility guarantees.");
576 
577 #define BUILTIN_LOCALS_METHODDEF    \
578     {"locals", (PyCFunction)builtin_locals, METH_NOARGS, builtin_locals__doc__},
579 
580 static PyObject *
581 builtin_locals_impl(PyObject *module);
582 
583 static PyObject *
builtin_locals(PyObject * module,PyObject * Py_UNUSED (ignored))584 builtin_locals(PyObject *module, PyObject *Py_UNUSED(ignored))
585 {
586     return builtin_locals_impl(module);
587 }
588 
589 PyDoc_STRVAR(builtin_oct__doc__,
590 "oct($module, number, /)\n"
591 "--\n"
592 "\n"
593 "Return the octal representation of an integer.\n"
594 "\n"
595 "   >>> oct(342391)\n"
596 "   \'0o1234567\'");
597 
598 #define BUILTIN_OCT_METHODDEF    \
599     {"oct", (PyCFunction)builtin_oct, METH_O, builtin_oct__doc__},
600 
601 PyDoc_STRVAR(builtin_ord__doc__,
602 "ord($module, c, /)\n"
603 "--\n"
604 "\n"
605 "Return the Unicode code point for a one-character string.");
606 
607 #define BUILTIN_ORD_METHODDEF    \
608     {"ord", (PyCFunction)builtin_ord, METH_O, builtin_ord__doc__},
609 
610 PyDoc_STRVAR(builtin_pow__doc__,
611 "pow($module, /, base, exp, mod=None)\n"
612 "--\n"
613 "\n"
614 "Equivalent to base**exp with 2 arguments or base**exp % mod with 3 arguments\n"
615 "\n"
616 "Some types, such as ints, are able to use a more efficient algorithm when\n"
617 "invoked using the three argument form.");
618 
619 #define BUILTIN_POW_METHODDEF    \
620     {"pow", (PyCFunction)(void(*)(void))builtin_pow, METH_FASTCALL|METH_KEYWORDS, builtin_pow__doc__},
621 
622 static PyObject *
623 builtin_pow_impl(PyObject *module, PyObject *base, PyObject *exp,
624                  PyObject *mod);
625 
626 static PyObject *
builtin_pow(PyObject * module,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)627 builtin_pow(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
628 {
629     PyObject *return_value = NULL;
630     static const char * const _keywords[] = {"base", "exp", "mod", NULL};
631     static _PyArg_Parser _parser = {NULL, _keywords, "pow", 0};
632     PyObject *argsbuf[3];
633     Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 2;
634     PyObject *base;
635     PyObject *exp;
636     PyObject *mod = Py_None;
637 
638     args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 2, 3, 0, argsbuf);
639     if (!args) {
640         goto exit;
641     }
642     base = args[0];
643     exp = args[1];
644     if (!noptargs) {
645         goto skip_optional_pos;
646     }
647     mod = args[2];
648 skip_optional_pos:
649     return_value = builtin_pow_impl(module, base, exp, mod);
650 
651 exit:
652     return return_value;
653 }
654 
655 PyDoc_STRVAR(builtin_input__doc__,
656 "input($module, prompt=None, /)\n"
657 "--\n"
658 "\n"
659 "Read a string from standard input.  The trailing newline is stripped.\n"
660 "\n"
661 "The prompt string, if given, is printed to standard output without a\n"
662 "trailing newline before reading input.\n"
663 "\n"
664 "If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError.\n"
665 "On *nix systems, readline is used if available.");
666 
667 #define BUILTIN_INPUT_METHODDEF    \
668     {"input", (PyCFunction)(void(*)(void))builtin_input, METH_FASTCALL, builtin_input__doc__},
669 
670 static PyObject *
671 builtin_input_impl(PyObject *module, PyObject *prompt);
672 
673 static PyObject *
builtin_input(PyObject * module,PyObject * const * args,Py_ssize_t nargs)674 builtin_input(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
675 {
676     PyObject *return_value = NULL;
677     PyObject *prompt = NULL;
678 
679     if (!_PyArg_CheckPositional("input", nargs, 0, 1)) {
680         goto exit;
681     }
682     if (nargs < 1) {
683         goto skip_optional;
684     }
685     prompt = args[0];
686 skip_optional:
687     return_value = builtin_input_impl(module, prompt);
688 
689 exit:
690     return return_value;
691 }
692 
693 PyDoc_STRVAR(builtin_repr__doc__,
694 "repr($module, obj, /)\n"
695 "--\n"
696 "\n"
697 "Return the canonical string representation of the object.\n"
698 "\n"
699 "For many object types, including most builtins, eval(repr(obj)) == obj.");
700 
701 #define BUILTIN_REPR_METHODDEF    \
702     {"repr", (PyCFunction)builtin_repr, METH_O, builtin_repr__doc__},
703 
704 PyDoc_STRVAR(builtin_round__doc__,
705 "round($module, /, number, ndigits=None)\n"
706 "--\n"
707 "\n"
708 "Round a number to a given precision in decimal digits.\n"
709 "\n"
710 "The return value is an integer if ndigits is omitted or None.  Otherwise\n"
711 "the return value has the same type as the number.  ndigits may be negative.");
712 
713 #define BUILTIN_ROUND_METHODDEF    \
714     {"round", (PyCFunction)(void(*)(void))builtin_round, METH_FASTCALL|METH_KEYWORDS, builtin_round__doc__},
715 
716 static PyObject *
717 builtin_round_impl(PyObject *module, PyObject *number, PyObject *ndigits);
718 
719 static PyObject *
builtin_round(PyObject * module,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)720 builtin_round(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
721 {
722     PyObject *return_value = NULL;
723     static const char * const _keywords[] = {"number", "ndigits", NULL};
724     static _PyArg_Parser _parser = {NULL, _keywords, "round", 0};
725     PyObject *argsbuf[2];
726     Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
727     PyObject *number;
728     PyObject *ndigits = Py_None;
729 
730     args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 2, 0, argsbuf);
731     if (!args) {
732         goto exit;
733     }
734     number = args[0];
735     if (!noptargs) {
736         goto skip_optional_pos;
737     }
738     ndigits = args[1];
739 skip_optional_pos:
740     return_value = builtin_round_impl(module, number, ndigits);
741 
742 exit:
743     return return_value;
744 }
745 
746 PyDoc_STRVAR(builtin_sum__doc__,
747 "sum($module, iterable, /, start=0)\n"
748 "--\n"
749 "\n"
750 "Return the sum of a \'start\' value (default: 0) plus an iterable of numbers\n"
751 "\n"
752 "When the iterable is empty, return the start value.\n"
753 "This function is intended specifically for use with numeric values and may\n"
754 "reject non-numeric types.");
755 
756 #define BUILTIN_SUM_METHODDEF    \
757     {"sum", (PyCFunction)(void(*)(void))builtin_sum, METH_FASTCALL|METH_KEYWORDS, builtin_sum__doc__},
758 
759 static PyObject *
760 builtin_sum_impl(PyObject *module, PyObject *iterable, PyObject *start);
761 
762 static PyObject *
builtin_sum(PyObject * module,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)763 builtin_sum(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
764 {
765     PyObject *return_value = NULL;
766     static const char * const _keywords[] = {"", "start", NULL};
767     static _PyArg_Parser _parser = {NULL, _keywords, "sum", 0};
768     PyObject *argsbuf[2];
769     Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
770     PyObject *iterable;
771     PyObject *start = NULL;
772 
773     args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 2, 0, argsbuf);
774     if (!args) {
775         goto exit;
776     }
777     iterable = args[0];
778     if (!noptargs) {
779         goto skip_optional_pos;
780     }
781     start = args[1];
782 skip_optional_pos:
783     return_value = builtin_sum_impl(module, iterable, start);
784 
785 exit:
786     return return_value;
787 }
788 
789 PyDoc_STRVAR(builtin_isinstance__doc__,
790 "isinstance($module, obj, class_or_tuple, /)\n"
791 "--\n"
792 "\n"
793 "Return whether an object is an instance of a class or of a subclass thereof.\n"
794 "\n"
795 "A tuple, as in ``isinstance(x, (A, B, ...))``, may be given as the target to\n"
796 "check against. This is equivalent to ``isinstance(x, A) or isinstance(x, B)\n"
797 "or ...`` etc.");
798 
799 #define BUILTIN_ISINSTANCE_METHODDEF    \
800     {"isinstance", (PyCFunction)(void(*)(void))builtin_isinstance, METH_FASTCALL, builtin_isinstance__doc__},
801 
802 static PyObject *
803 builtin_isinstance_impl(PyObject *module, PyObject *obj,
804                         PyObject *class_or_tuple);
805 
806 static PyObject *
builtin_isinstance(PyObject * module,PyObject * const * args,Py_ssize_t nargs)807 builtin_isinstance(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
808 {
809     PyObject *return_value = NULL;
810     PyObject *obj;
811     PyObject *class_or_tuple;
812 
813     if (!_PyArg_CheckPositional("isinstance", nargs, 2, 2)) {
814         goto exit;
815     }
816     obj = args[0];
817     class_or_tuple = args[1];
818     return_value = builtin_isinstance_impl(module, obj, class_or_tuple);
819 
820 exit:
821     return return_value;
822 }
823 
824 PyDoc_STRVAR(builtin_issubclass__doc__,
825 "issubclass($module, cls, class_or_tuple, /)\n"
826 "--\n"
827 "\n"
828 "Return whether \'cls\' is a derived from another class or is the same class.\n"
829 "\n"
830 "A tuple, as in ``issubclass(x, (A, B, ...))``, may be given as the target to\n"
831 "check against. This is equivalent to ``issubclass(x, A) or issubclass(x, B)\n"
832 "or ...`` etc.");
833 
834 #define BUILTIN_ISSUBCLASS_METHODDEF    \
835     {"issubclass", (PyCFunction)(void(*)(void))builtin_issubclass, METH_FASTCALL, builtin_issubclass__doc__},
836 
837 static PyObject *
838 builtin_issubclass_impl(PyObject *module, PyObject *cls,
839                         PyObject *class_or_tuple);
840 
841 static PyObject *
builtin_issubclass(PyObject * module,PyObject * const * args,Py_ssize_t nargs)842 builtin_issubclass(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
843 {
844     PyObject *return_value = NULL;
845     PyObject *cls;
846     PyObject *class_or_tuple;
847 
848     if (!_PyArg_CheckPositional("issubclass", nargs, 2, 2)) {
849         goto exit;
850     }
851     cls = args[0];
852     class_or_tuple = args[1];
853     return_value = builtin_issubclass_impl(module, cls, class_or_tuple);
854 
855 exit:
856     return return_value;
857 }
858 /*[clinic end generated code: output=29686a89b739d600 input=a9049054013a1b77]*/
859