blob: 1b82f773edd8a92e83b82350bf0171dbd3bab7f0 [file] [log] [blame]
Serhiy Storchaka1009bf12015-04-03 23:53:51 +03001/*[clinic input]
2preserve
3[clinic start generated code]*/
4
5PyDoc_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
14PyDoc_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
25PyDoc_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
36PyDoc_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
50PyDoc_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
62PyDoc_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
74PyDoc_STRVAR(builtin_format__doc__,
75"format($module, value, format_spec=\'\', /)\n"
76"--\n"
77"\n"
78"Return value.__format__(format_spec)\n"
79"\n"
Amit Kumar2e6bb442017-05-29 06:32:26 +053080"format_spec defaults to the empty string.\n"
81"See the Format Specification Mini-Language section of help(\'FORMATTING\') for\n"
82"details.");
Serhiy Storchaka1009bf12015-04-03 23:53:51 +030083
84#define BUILTIN_FORMAT_METHODDEF \
Serhiy Storchaka4a934d42018-11-27 11:27:36 +020085 {"format", (PyCFunction)(void(*)(void))builtin_format, METH_FASTCALL, builtin_format__doc__},
Serhiy Storchaka1009bf12015-04-03 23:53:51 +030086
87static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +030088builtin_format_impl(PyObject *module, PyObject *value, PyObject *format_spec);
Serhiy Storchaka1009bf12015-04-03 23:53:51 +030089
90static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +020091builtin_format(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
Serhiy Storchaka1009bf12015-04-03 23:53:51 +030092{
93 PyObject *return_value = NULL;
94 PyObject *value;
95 PyObject *format_spec = NULL;
96
Serhiy Storchaka4fa95912019-01-11 16:01:14 +020097 if (!_PyArg_CheckPositional("format", nargs, 1, 2)) {
Victor Stinner259f0e42017-01-17 01:35:17 +010098 goto exit;
99 }
Serhiy Storchaka4fa95912019-01-11 16:01:14 +0200100 value = args[0];
101 if (nargs < 2) {
102 goto skip_optional;
103 }
104 if (!PyUnicode_Check(args[1])) {
105 _PyArg_BadArgument("format", 2, "str", args[1]);
106 goto exit;
107 }
108 if (PyUnicode_READY(args[1]) == -1) {
109 goto exit;
110 }
111 format_spec = args[1];
112skip_optional:
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300113 return_value = builtin_format_impl(module, value, format_spec);
114
115exit:
116 return return_value;
117}
118
119PyDoc_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 \
Serhiy Storchaka92e8af62015-04-04 00:12:11 +0300126 {"chr", (PyCFunction)builtin_chr, METH_O, builtin_chr__doc__},
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300127
128static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300129builtin_chr_impl(PyObject *module, int i);
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300130
131static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300132builtin_chr(PyObject *module, PyObject *arg)
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300133{
134 PyObject *return_value = NULL;
135 int i;
136
Serhiy Storchaka32d96a22018-12-25 13:23:47 +0200137 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()) {
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300144 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300145 }
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300146 return_value = builtin_chr_impl(module, i);
147
148exit:
149 return return_value;
150}
151
152PyDoc_STRVAR(builtin_compile__doc__,
Serhiy Storchaka8b2e8b62015-05-30 11:30:39 +0300153"compile($module, /, source, filename, mode, flags=0,\n"
154" dont_inherit=False, optimize=-1)\n"
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300155"--\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"
Serhiy Storchaka8b2e8b62015-05-30 11:30:39 +0300165"The dont_inherit argument, if true, stops the compilation inheriting\n"
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300166"the effects of any future statements in effect in the code calling\n"
Serhiy Storchaka8b2e8b62015-05-30 11:30:39 +0300167"compile; if absent or false these statements do influence the compilation,\n"
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300168"in addition to any features explicitly specified.");
169
170#define BUILTIN_COMPILE_METHODDEF \
Serhiy Storchaka4a934d42018-11-27 11:27:36 +0200171 {"compile", (PyCFunction)(void(*)(void))builtin_compile, METH_FASTCALL|METH_KEYWORDS, builtin_compile__doc__},
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300172
173static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300174builtin_compile_impl(PyObject *module, PyObject *source, PyObject *filename,
175 const char *mode, int flags, int dont_inherit,
176 int optimize);
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300177
178static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +0200179builtin_compile(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300180{
181 PyObject *return_value = NULL;
Serhiy Storchaka9171a8b2016-08-14 10:52:18 +0300182 static const char * const _keywords[] = {"source", "filename", "mode", "flags", "dont_inherit", "optimize", NULL};
183 static _PyArg_Parser _parser = {"OO&s|iii:compile", _keywords, 0};
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300184 PyObject *source;
185 PyObject *filename;
186 const char *mode;
187 int flags = 0;
188 int dont_inherit = 0;
189 int optimize = -1;
190
Victor Stinner3e1fad62017-01-17 01:29:01 +0100191 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300192 &source, PyUnicode_FSDecoder, &filename, &mode, &flags, &dont_inherit, &optimize)) {
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300193 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300194 }
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300195 return_value = builtin_compile_impl(module, source, filename, mode, flags, dont_inherit, optimize);
196
197exit:
198 return return_value;
199}
200
201PyDoc_STRVAR(builtin_divmod__doc__,
202"divmod($module, x, y, /)\n"
203"--\n"
204"\n"
Serhiy Storchakadf071732016-05-01 20:33:24 +0300205"Return the tuple (x//y, x%y). Invariant: div*y + mod == x.");
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300206
207#define BUILTIN_DIVMOD_METHODDEF \
Serhiy Storchaka4a934d42018-11-27 11:27:36 +0200208 {"divmod", (PyCFunction)(void(*)(void))builtin_divmod, METH_FASTCALL, builtin_divmod__doc__},
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300209
210static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300211builtin_divmod_impl(PyObject *module, PyObject *x, PyObject *y);
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300212
213static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +0200214builtin_divmod(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300215{
216 PyObject *return_value = NULL;
217 PyObject *x;
218 PyObject *y;
219
Serhiy Storchaka2a39d252019-01-11 18:01:42 +0200220 if (!_PyArg_CheckPositional("divmod", nargs, 2, 2)) {
Victor Stinner0c4a8282017-01-17 02:21:47 +0100221 goto exit;
222 }
Serhiy Storchaka2a39d252019-01-11 18:01:42 +0200223 x = args[0];
224 y = args[1];
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300225 return_value = builtin_divmod_impl(module, x, y);
226
227exit:
228 return return_value;
229}
230
231PyDoc_STRVAR(builtin_eval__doc__,
232"eval($module, source, globals=None, locals=None, /)\n"
233"--\n"
234"\n"
235"Evaluate the given source in the context of globals and locals.\n"
236"\n"
237"The source may be a string representing a Python expression\n"
238"or a code object as returned by compile().\n"
239"The globals must be a dictionary and locals can be any mapping,\n"
240"defaulting to the current globals and locals.\n"
241"If only globals is given, locals defaults to it.");
242
243#define BUILTIN_EVAL_METHODDEF \
Serhiy Storchaka4a934d42018-11-27 11:27:36 +0200244 {"eval", (PyCFunction)(void(*)(void))builtin_eval, METH_FASTCALL, builtin_eval__doc__},
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300245
246static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300247builtin_eval_impl(PyObject *module, PyObject *source, PyObject *globals,
Larry Hastings89964c42015-04-14 18:07:59 -0400248 PyObject *locals);
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300249
250static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +0200251builtin_eval(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300252{
253 PyObject *return_value = NULL;
254 PyObject *source;
255 PyObject *globals = Py_None;
256 PyObject *locals = Py_None;
257
Serhiy Storchaka2a39d252019-01-11 18:01:42 +0200258 if (!_PyArg_CheckPositional("eval", nargs, 1, 3)) {
Victor Stinner0c4a8282017-01-17 02:21:47 +0100259 goto exit;
260 }
Serhiy Storchaka2a39d252019-01-11 18:01:42 +0200261 source = args[0];
262 if (nargs < 2) {
263 goto skip_optional;
264 }
265 globals = args[1];
266 if (nargs < 3) {
267 goto skip_optional;
268 }
269 locals = args[2];
270skip_optional:
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300271 return_value = builtin_eval_impl(module, source, globals, locals);
272
273exit:
274 return return_value;
275}
276
277PyDoc_STRVAR(builtin_exec__doc__,
278"exec($module, source, globals=None, locals=None, /)\n"
279"--\n"
280"\n"
281"Execute the given source in the context of globals and locals.\n"
282"\n"
283"The source may be a string representing one or more Python statements\n"
284"or a code object as returned by compile().\n"
285"The globals must be a dictionary and locals can be any mapping,\n"
286"defaulting to the current globals and locals.\n"
287"If only globals is given, locals defaults to it.");
288
289#define BUILTIN_EXEC_METHODDEF \
Serhiy Storchaka4a934d42018-11-27 11:27:36 +0200290 {"exec", (PyCFunction)(void(*)(void))builtin_exec, METH_FASTCALL, builtin_exec__doc__},
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300291
292static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300293builtin_exec_impl(PyObject *module, PyObject *source, PyObject *globals,
Larry Hastings89964c42015-04-14 18:07:59 -0400294 PyObject *locals);
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300295
296static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +0200297builtin_exec(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300298{
299 PyObject *return_value = NULL;
300 PyObject *source;
301 PyObject *globals = Py_None;
302 PyObject *locals = Py_None;
303
Serhiy Storchaka2a39d252019-01-11 18:01:42 +0200304 if (!_PyArg_CheckPositional("exec", nargs, 1, 3)) {
Victor Stinner0c4a8282017-01-17 02:21:47 +0100305 goto exit;
306 }
Serhiy Storchaka2a39d252019-01-11 18:01:42 +0200307 source = args[0];
308 if (nargs < 2) {
309 goto skip_optional;
310 }
311 globals = args[1];
312 if (nargs < 3) {
313 goto skip_optional;
314 }
315 locals = args[2];
316skip_optional:
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300317 return_value = builtin_exec_impl(module, source, globals, locals);
318
319exit:
320 return return_value;
321}
322
323PyDoc_STRVAR(builtin_globals__doc__,
324"globals($module, /)\n"
325"--\n"
326"\n"
327"Return the dictionary containing the current scope\'s global variables.\n"
328"\n"
329"NOTE: Updates to this dictionary *will* affect name lookups in the current\n"
330"global scope and vice-versa.");
331
332#define BUILTIN_GLOBALS_METHODDEF \
333 {"globals", (PyCFunction)builtin_globals, METH_NOARGS, builtin_globals__doc__},
334
335static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300336builtin_globals_impl(PyObject *module);
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300337
338static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300339builtin_globals(PyObject *module, PyObject *Py_UNUSED(ignored))
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300340{
341 return builtin_globals_impl(module);
342}
343
344PyDoc_STRVAR(builtin_hasattr__doc__,
345"hasattr($module, obj, name, /)\n"
346"--\n"
347"\n"
348"Return whether the object has an attribute with the given name.\n"
349"\n"
350"This is done by calling getattr(obj, name) and catching AttributeError.");
351
352#define BUILTIN_HASATTR_METHODDEF \
Serhiy Storchaka4a934d42018-11-27 11:27:36 +0200353 {"hasattr", (PyCFunction)(void(*)(void))builtin_hasattr, METH_FASTCALL, builtin_hasattr__doc__},
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300354
355static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300356builtin_hasattr_impl(PyObject *module, PyObject *obj, PyObject *name);
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300357
358static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +0200359builtin_hasattr(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300360{
361 PyObject *return_value = NULL;
362 PyObject *obj;
363 PyObject *name;
364
Serhiy Storchaka2a39d252019-01-11 18:01:42 +0200365 if (!_PyArg_CheckPositional("hasattr", nargs, 2, 2)) {
Victor Stinner0c4a8282017-01-17 02:21:47 +0100366 goto exit;
367 }
Serhiy Storchaka2a39d252019-01-11 18:01:42 +0200368 obj = args[0];
369 name = args[1];
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300370 return_value = builtin_hasattr_impl(module, obj, name);
371
372exit:
373 return return_value;
374}
375
376PyDoc_STRVAR(builtin_id__doc__,
377"id($module, obj, /)\n"
378"--\n"
379"\n"
380"Return the identity of an object.\n"
381"\n"
382"This is guaranteed to be unique among simultaneously existing objects.\n"
383"(CPython uses the object\'s memory address.)");
384
385#define BUILTIN_ID_METHODDEF \
386 {"id", (PyCFunction)builtin_id, METH_O, builtin_id__doc__},
387
388PyDoc_STRVAR(builtin_setattr__doc__,
389"setattr($module, obj, name, value, /)\n"
390"--\n"
391"\n"
392"Sets the named attribute on the given object to the specified value.\n"
393"\n"
394"setattr(x, \'y\', v) is equivalent to ``x.y = v\'\'");
395
396#define BUILTIN_SETATTR_METHODDEF \
Serhiy Storchaka4a934d42018-11-27 11:27:36 +0200397 {"setattr", (PyCFunction)(void(*)(void))builtin_setattr, METH_FASTCALL, builtin_setattr__doc__},
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300398
399static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300400builtin_setattr_impl(PyObject *module, PyObject *obj, PyObject *name,
Larry Hastings89964c42015-04-14 18:07:59 -0400401 PyObject *value);
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300402
403static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +0200404builtin_setattr(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300405{
406 PyObject *return_value = NULL;
407 PyObject *obj;
408 PyObject *name;
409 PyObject *value;
410
Serhiy Storchaka2a39d252019-01-11 18:01:42 +0200411 if (!_PyArg_CheckPositional("setattr", nargs, 3, 3)) {
Victor Stinner0c4a8282017-01-17 02:21:47 +0100412 goto exit;
413 }
Serhiy Storchaka2a39d252019-01-11 18:01:42 +0200414 obj = args[0];
415 name = args[1];
416 value = args[2];
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300417 return_value = builtin_setattr_impl(module, obj, name, value);
418
419exit:
420 return return_value;
421}
422
423PyDoc_STRVAR(builtin_delattr__doc__,
424"delattr($module, obj, name, /)\n"
425"--\n"
426"\n"
427"Deletes the named attribute from the given object.\n"
428"\n"
429"delattr(x, \'y\') is equivalent to ``del x.y\'\'");
430
431#define BUILTIN_DELATTR_METHODDEF \
Serhiy Storchaka4a934d42018-11-27 11:27:36 +0200432 {"delattr", (PyCFunction)(void(*)(void))builtin_delattr, METH_FASTCALL, builtin_delattr__doc__},
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300433
434static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300435builtin_delattr_impl(PyObject *module, PyObject *obj, PyObject *name);
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300436
437static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +0200438builtin_delattr(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300439{
440 PyObject *return_value = NULL;
441 PyObject *obj;
442 PyObject *name;
443
Serhiy Storchaka2a39d252019-01-11 18:01:42 +0200444 if (!_PyArg_CheckPositional("delattr", nargs, 2, 2)) {
Victor Stinner0c4a8282017-01-17 02:21:47 +0100445 goto exit;
446 }
Serhiy Storchaka2a39d252019-01-11 18:01:42 +0200447 obj = args[0];
448 name = args[1];
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300449 return_value = builtin_delattr_impl(module, obj, name);
450
451exit:
452 return return_value;
453}
454
455PyDoc_STRVAR(builtin_hash__doc__,
456"hash($module, obj, /)\n"
457"--\n"
458"\n"
459"Return the hash value for the given object.\n"
460"\n"
461"Two objects that compare equal must also have the same hash value, but the\n"
462"reverse is not necessarily true.");
463
464#define BUILTIN_HASH_METHODDEF \
465 {"hash", (PyCFunction)builtin_hash, METH_O, builtin_hash__doc__},
466
467PyDoc_STRVAR(builtin_hex__doc__,
468"hex($module, number, /)\n"
469"--\n"
470"\n"
471"Return the hexadecimal representation of an integer.\n"
472"\n"
473" >>> hex(12648430)\n"
474" \'0xc0ffee\'");
475
476#define BUILTIN_HEX_METHODDEF \
477 {"hex", (PyCFunction)builtin_hex, METH_O, builtin_hex__doc__},
478
479PyDoc_STRVAR(builtin_len__doc__,
480"len($module, obj, /)\n"
481"--\n"
482"\n"
483"Return the number of items in a container.");
484
485#define BUILTIN_LEN_METHODDEF \
486 {"len", (PyCFunction)builtin_len, METH_O, builtin_len__doc__},
487
488PyDoc_STRVAR(builtin_locals__doc__,
489"locals($module, /)\n"
490"--\n"
491"\n"
492"Return a dictionary containing the current scope\'s local variables.\n"
493"\n"
494"NOTE: Whether or not updates to this dictionary will affect name lookups in\n"
495"the local scope and vice-versa is *implementation dependent* and not\n"
496"covered by any backwards compatibility guarantees.");
497
498#define BUILTIN_LOCALS_METHODDEF \
499 {"locals", (PyCFunction)builtin_locals, METH_NOARGS, builtin_locals__doc__},
500
501static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300502builtin_locals_impl(PyObject *module);
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300503
504static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300505builtin_locals(PyObject *module, PyObject *Py_UNUSED(ignored))
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300506{
507 return builtin_locals_impl(module);
508}
509
510PyDoc_STRVAR(builtin_oct__doc__,
511"oct($module, number, /)\n"
512"--\n"
513"\n"
514"Return the octal representation of an integer.\n"
515"\n"
516" >>> oct(342391)\n"
517" \'0o1234567\'");
518
519#define BUILTIN_OCT_METHODDEF \
520 {"oct", (PyCFunction)builtin_oct, METH_O, builtin_oct__doc__},
521
522PyDoc_STRVAR(builtin_ord__doc__,
523"ord($module, c, /)\n"
524"--\n"
525"\n"
526"Return the Unicode code point for a one-character string.");
527
528#define BUILTIN_ORD_METHODDEF \
529 {"ord", (PyCFunction)builtin_ord, METH_O, builtin_ord__doc__},
530
531PyDoc_STRVAR(builtin_pow__doc__,
532"pow($module, x, y, z=None, /)\n"
533"--\n"
534"\n"
535"Equivalent to x**y (with two arguments) or x**y % z (with three arguments)\n"
536"\n"
537"Some types, such as ints, are able to use a more efficient algorithm when\n"
538"invoked using the three argument form.");
539
540#define BUILTIN_POW_METHODDEF \
Serhiy Storchaka4a934d42018-11-27 11:27:36 +0200541 {"pow", (PyCFunction)(void(*)(void))builtin_pow, METH_FASTCALL, builtin_pow__doc__},
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300542
543static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300544builtin_pow_impl(PyObject *module, PyObject *x, PyObject *y, PyObject *z);
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300545
546static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +0200547builtin_pow(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300548{
549 PyObject *return_value = NULL;
550 PyObject *x;
551 PyObject *y;
552 PyObject *z = Py_None;
553
Serhiy Storchaka2a39d252019-01-11 18:01:42 +0200554 if (!_PyArg_CheckPositional("pow", nargs, 2, 3)) {
Victor Stinner0c4a8282017-01-17 02:21:47 +0100555 goto exit;
556 }
Serhiy Storchaka2a39d252019-01-11 18:01:42 +0200557 x = args[0];
558 y = args[1];
559 if (nargs < 3) {
560 goto skip_optional;
561 }
562 z = args[2];
563skip_optional:
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300564 return_value = builtin_pow_impl(module, x, y, z);
565
566exit:
567 return return_value;
568}
569
570PyDoc_STRVAR(builtin_input__doc__,
571"input($module, prompt=None, /)\n"
572"--\n"
573"\n"
574"Read a string from standard input. The trailing newline is stripped.\n"
575"\n"
576"The prompt string, if given, is printed to standard output without a\n"
577"trailing newline before reading input.\n"
578"\n"
579"If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError.\n"
580"On *nix systems, readline is used if available.");
581
582#define BUILTIN_INPUT_METHODDEF \
Serhiy Storchaka4a934d42018-11-27 11:27:36 +0200583 {"input", (PyCFunction)(void(*)(void))builtin_input, METH_FASTCALL, builtin_input__doc__},
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300584
585static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300586builtin_input_impl(PyObject *module, PyObject *prompt);
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300587
588static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +0200589builtin_input(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300590{
591 PyObject *return_value = NULL;
592 PyObject *prompt = NULL;
593
Serhiy Storchaka2a39d252019-01-11 18:01:42 +0200594 if (!_PyArg_CheckPositional("input", nargs, 0, 1)) {
Victor Stinner0c4a8282017-01-17 02:21:47 +0100595 goto exit;
596 }
Serhiy Storchaka2a39d252019-01-11 18:01:42 +0200597 if (nargs < 1) {
598 goto skip_optional;
599 }
600 prompt = args[0];
601skip_optional:
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300602 return_value = builtin_input_impl(module, prompt);
603
604exit:
605 return return_value;
606}
607
608PyDoc_STRVAR(builtin_repr__doc__,
609"repr($module, obj, /)\n"
610"--\n"
611"\n"
612"Return the canonical string representation of the object.\n"
613"\n"
614"For many object types, including most builtins, eval(repr(obj)) == obj.");
615
616#define BUILTIN_REPR_METHODDEF \
617 {"repr", (PyCFunction)builtin_repr, METH_O, builtin_repr__doc__},
618
Serhiy Storchakaaca7f572017-11-15 17:51:14 +0200619PyDoc_STRVAR(builtin_round__doc__,
620"round($module, /, number, ndigits=None)\n"
621"--\n"
622"\n"
623"Round a number to a given precision in decimal digits.\n"
624"\n"
625"The return value is an integer if ndigits is omitted or None. Otherwise\n"
626"the return value has the same type as the number. ndigits may be negative.");
627
628#define BUILTIN_ROUND_METHODDEF \
Serhiy Storchaka4a934d42018-11-27 11:27:36 +0200629 {"round", (PyCFunction)(void(*)(void))builtin_round, METH_FASTCALL|METH_KEYWORDS, builtin_round__doc__},
Serhiy Storchakaaca7f572017-11-15 17:51:14 +0200630
631static PyObject *
632builtin_round_impl(PyObject *module, PyObject *number, PyObject *ndigits);
633
634static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +0200635builtin_round(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaaca7f572017-11-15 17:51:14 +0200636{
637 PyObject *return_value = NULL;
638 static const char * const _keywords[] = {"number", "ndigits", NULL};
639 static _PyArg_Parser _parser = {"O|O:round", _keywords, 0};
640 PyObject *number;
641 PyObject *ndigits = NULL;
642
643 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
644 &number, &ndigits)) {
645 goto exit;
646 }
647 return_value = builtin_round_impl(module, number, ndigits);
648
649exit:
650 return return_value;
651}
652
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300653PyDoc_STRVAR(builtin_sum__doc__,
Raymond Hettinger9dfa0fe2018-09-12 10:54:06 -0700654"sum($module, iterable, /, start=0)\n"
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300655"--\n"
656"\n"
657"Return the sum of a \'start\' value (default: 0) plus an iterable of numbers\n"
658"\n"
659"When the iterable is empty, return the start value.\n"
660"This function is intended specifically for use with numeric values and may\n"
661"reject non-numeric types.");
662
663#define BUILTIN_SUM_METHODDEF \
Serhiy Storchaka4a934d42018-11-27 11:27:36 +0200664 {"sum", (PyCFunction)(void(*)(void))builtin_sum, METH_FASTCALL|METH_KEYWORDS, builtin_sum__doc__},
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300665
666static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300667builtin_sum_impl(PyObject *module, PyObject *iterable, PyObject *start);
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300668
669static PyObject *
Raymond Hettinger9dfa0fe2018-09-12 10:54:06 -0700670builtin_sum(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300671{
672 PyObject *return_value = NULL;
Raymond Hettinger9dfa0fe2018-09-12 10:54:06 -0700673 static const char * const _keywords[] = {"", "start", NULL};
674 static _PyArg_Parser _parser = {"O|O:sum", _keywords, 0};
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300675 PyObject *iterable;
676 PyObject *start = NULL;
677
Raymond Hettinger9dfa0fe2018-09-12 10:54:06 -0700678 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
Sylvain74453812017-06-10 06:51:48 +0200679 &iterable, &start)) {
Victor Stinner0c4a8282017-01-17 02:21:47 +0100680 goto exit;
681 }
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300682 return_value = builtin_sum_impl(module, iterable, start);
683
684exit:
685 return return_value;
686}
687
688PyDoc_STRVAR(builtin_isinstance__doc__,
689"isinstance($module, obj, class_or_tuple, /)\n"
690"--\n"
691"\n"
692"Return whether an object is an instance of a class or of a subclass thereof.\n"
693"\n"
694"A tuple, as in ``isinstance(x, (A, B, ...))``, may be given as the target to\n"
695"check against. This is equivalent to ``isinstance(x, A) or isinstance(x, B)\n"
696"or ...`` etc.");
697
698#define BUILTIN_ISINSTANCE_METHODDEF \
Serhiy Storchaka4a934d42018-11-27 11:27:36 +0200699 {"isinstance", (PyCFunction)(void(*)(void))builtin_isinstance, METH_FASTCALL, builtin_isinstance__doc__},
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300700
701static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300702builtin_isinstance_impl(PyObject *module, PyObject *obj,
Larry Hastings89964c42015-04-14 18:07:59 -0400703 PyObject *class_or_tuple);
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300704
705static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +0200706builtin_isinstance(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300707{
708 PyObject *return_value = NULL;
709 PyObject *obj;
710 PyObject *class_or_tuple;
711
Serhiy Storchaka2a39d252019-01-11 18:01:42 +0200712 if (!_PyArg_CheckPositional("isinstance", nargs, 2, 2)) {
Victor Stinner0c4a8282017-01-17 02:21:47 +0100713 goto exit;
714 }
Serhiy Storchaka2a39d252019-01-11 18:01:42 +0200715 obj = args[0];
716 class_or_tuple = args[1];
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300717 return_value = builtin_isinstance_impl(module, obj, class_or_tuple);
718
719exit:
720 return return_value;
721}
722
723PyDoc_STRVAR(builtin_issubclass__doc__,
724"issubclass($module, cls, class_or_tuple, /)\n"
725"--\n"
726"\n"
727"Return whether \'cls\' is a derived from another class or is the same class.\n"
728"\n"
729"A tuple, as in ``issubclass(x, (A, B, ...))``, may be given as the target to\n"
730"check against. This is equivalent to ``issubclass(x, A) or issubclass(x, B)\n"
731"or ...`` etc.");
732
733#define BUILTIN_ISSUBCLASS_METHODDEF \
Serhiy Storchaka4a934d42018-11-27 11:27:36 +0200734 {"issubclass", (PyCFunction)(void(*)(void))builtin_issubclass, METH_FASTCALL, builtin_issubclass__doc__},
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300735
736static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300737builtin_issubclass_impl(PyObject *module, PyObject *cls,
Larry Hastings89964c42015-04-14 18:07:59 -0400738 PyObject *class_or_tuple);
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300739
740static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +0200741builtin_issubclass(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300742{
743 PyObject *return_value = NULL;
744 PyObject *cls;
745 PyObject *class_or_tuple;
746
Serhiy Storchaka2a39d252019-01-11 18:01:42 +0200747 if (!_PyArg_CheckPositional("issubclass", nargs, 2, 2)) {
Victor Stinner0c4a8282017-01-17 02:21:47 +0100748 goto exit;
749 }
Serhiy Storchaka2a39d252019-01-11 18:01:42 +0200750 cls = args[0];
751 class_or_tuple = args[1];
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300752 return_value = builtin_issubclass_impl(module, cls, class_or_tuple);
753
754exit:
755 return return_value;
756}
Serhiy Storchaka2a39d252019-01-11 18:01:42 +0200757/*[clinic end generated code: output=54e5e33dcc2659e0 input=a9049054013a1b77]*/