blob: b936b0cf3721808187102b928cccec4c6253fc07 [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])) {
Serhiy Storchaka96631dc2019-08-29 18:29:59 +0300105 _PyArg_BadArgument("format", "argument 2", "str", args[1]);
Serhiy Storchaka4fa95912019-01-11 16:01:14 +0200106 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"
Victor Stinnerb2fd32b2019-06-12 16:17:05 +0200154" dont_inherit=False, optimize=-1, *, _feature_version=-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,
Guido van Rossum495da292019-03-07 12:38:08 -0800176 int optimize, int feature_version);
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;
Victor Stinnerb2fd32b2019-06-12 16:17:05 +0200182 static const char * const _keywords[] = {"source", "filename", "mode", "flags", "dont_inherit", "optimize", "_feature_version", NULL};
Serhiy Storchaka31913912019-03-14 10:32:22 +0200183 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;
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300186 PyObject *source;
187 PyObject *filename;
188 const char *mode;
189 int flags = 0;
190 int dont_inherit = 0;
191 int optimize = -1;
Guido van Rossum495da292019-03-07 12:38:08 -0800192 int feature_version = -1;
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300193
Victor Stinnerb2fd32b2019-06-12 16:17:05 +0200194 args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 3, 6, 0, argsbuf);
Serhiy Storchaka31913912019-03-14 10:32:22 +0200195 if (!args) {
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300196 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300197 }
Serhiy Storchaka31913912019-03-14 10:32:22 +0200198 source = args[0];
199 if (!PyUnicode_FSDecoder(args[1], &filename)) {
200 goto exit;
201 }
202 if (!PyUnicode_Check(args[2])) {
Serhiy Storchaka96631dc2019-08-29 18:29:59 +0300203 _PyArg_BadArgument("compile", "argument 'mode'", "str", args[2]);
Serhiy Storchaka31913912019-03-14 10:32:22 +0200204 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 }
Victor Stinnerb2fd32b2019-06-12 16:17:05 +0200260skip_optional_pos:
261 if (!noptargs) {
262 goto skip_optional_kwonly;
263 }
Serhiy Storchaka31913912019-03-14 10:32:22 +0200264 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 }
Victor Stinnerb2fd32b2019-06-12 16:17:05 +0200273skip_optional_kwonly:
Guido van Rossum495da292019-03-07 12:38:08 -0800274 return_value = builtin_compile_impl(module, source, filename, mode, flags, dont_inherit, optimize, feature_version);
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300275
276exit:
277 return return_value;
278}
279
280PyDoc_STRVAR(builtin_divmod__doc__,
281"divmod($module, x, y, /)\n"
282"--\n"
283"\n"
Serhiy Storchakadf071732016-05-01 20:33:24 +0300284"Return the tuple (x//y, x%y). Invariant: div*y + mod == x.");
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300285
286#define BUILTIN_DIVMOD_METHODDEF \
Serhiy Storchaka4a934d42018-11-27 11:27:36 +0200287 {"divmod", (PyCFunction)(void(*)(void))builtin_divmod, METH_FASTCALL, builtin_divmod__doc__},
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300288
289static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300290builtin_divmod_impl(PyObject *module, PyObject *x, PyObject *y);
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300291
292static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +0200293builtin_divmod(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300294{
295 PyObject *return_value = NULL;
296 PyObject *x;
297 PyObject *y;
298
Serhiy Storchaka2a39d252019-01-11 18:01:42 +0200299 if (!_PyArg_CheckPositional("divmod", nargs, 2, 2)) {
Victor Stinner0c4a8282017-01-17 02:21:47 +0100300 goto exit;
301 }
Serhiy Storchaka2a39d252019-01-11 18:01:42 +0200302 x = args[0];
303 y = args[1];
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300304 return_value = builtin_divmod_impl(module, x, y);
305
306exit:
307 return return_value;
308}
309
310PyDoc_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 \
Serhiy Storchaka4a934d42018-11-27 11:27:36 +0200323 {"eval", (PyCFunction)(void(*)(void))builtin_eval, METH_FASTCALL, builtin_eval__doc__},
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300324
325static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300326builtin_eval_impl(PyObject *module, PyObject *source, PyObject *globals,
Larry Hastings89964c42015-04-14 18:07:59 -0400327 PyObject *locals);
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300328
329static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +0200330builtin_eval(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300331{
332 PyObject *return_value = NULL;
333 PyObject *source;
334 PyObject *globals = Py_None;
335 PyObject *locals = Py_None;
336
Serhiy Storchaka2a39d252019-01-11 18:01:42 +0200337 if (!_PyArg_CheckPositional("eval", nargs, 1, 3)) {
Victor Stinner0c4a8282017-01-17 02:21:47 +0100338 goto exit;
339 }
Serhiy Storchaka2a39d252019-01-11 18:01:42 +0200340 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];
349skip_optional:
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300350 return_value = builtin_eval_impl(module, source, globals, locals);
351
352exit:
353 return return_value;
354}
355
356PyDoc_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 \
Serhiy Storchaka4a934d42018-11-27 11:27:36 +0200369 {"exec", (PyCFunction)(void(*)(void))builtin_exec, METH_FASTCALL, builtin_exec__doc__},
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300370
371static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300372builtin_exec_impl(PyObject *module, PyObject *source, PyObject *globals,
Larry Hastings89964c42015-04-14 18:07:59 -0400373 PyObject *locals);
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300374
375static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +0200376builtin_exec(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300377{
378 PyObject *return_value = NULL;
379 PyObject *source;
380 PyObject *globals = Py_None;
381 PyObject *locals = Py_None;
382
Serhiy Storchaka2a39d252019-01-11 18:01:42 +0200383 if (!_PyArg_CheckPositional("exec", nargs, 1, 3)) {
Victor Stinner0c4a8282017-01-17 02:21:47 +0100384 goto exit;
385 }
Serhiy Storchaka2a39d252019-01-11 18:01:42 +0200386 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];
395skip_optional:
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300396 return_value = builtin_exec_impl(module, source, globals, locals);
397
398exit:
399 return return_value;
400}
401
402PyDoc_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
414static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300415builtin_globals_impl(PyObject *module);
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300416
417static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300418builtin_globals(PyObject *module, PyObject *Py_UNUSED(ignored))
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300419{
420 return builtin_globals_impl(module);
421}
422
423PyDoc_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 \
Serhiy Storchaka4a934d42018-11-27 11:27:36 +0200432 {"hasattr", (PyCFunction)(void(*)(void))builtin_hasattr, METH_FASTCALL, builtin_hasattr__doc__},
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300433
434static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300435builtin_hasattr_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_hasattr(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("hasattr", 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_hasattr_impl(module, obj, name);
450
451exit:
452 return return_value;
453}
454
455PyDoc_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
467PyDoc_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 \
Serhiy Storchaka4a934d42018-11-27 11:27:36 +0200476 {"setattr", (PyCFunction)(void(*)(void))builtin_setattr, METH_FASTCALL, builtin_setattr__doc__},
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300477
478static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300479builtin_setattr_impl(PyObject *module, PyObject *obj, PyObject *name,
Larry Hastings89964c42015-04-14 18:07:59 -0400480 PyObject *value);
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300481
482static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +0200483builtin_setattr(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300484{
485 PyObject *return_value = NULL;
486 PyObject *obj;
487 PyObject *name;
488 PyObject *value;
489
Serhiy Storchaka2a39d252019-01-11 18:01:42 +0200490 if (!_PyArg_CheckPositional("setattr", nargs, 3, 3)) {
Victor Stinner0c4a8282017-01-17 02:21:47 +0100491 goto exit;
492 }
Serhiy Storchaka2a39d252019-01-11 18:01:42 +0200493 obj = args[0];
494 name = args[1];
495 value = args[2];
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300496 return_value = builtin_setattr_impl(module, obj, name, value);
497
498exit:
499 return return_value;
500}
501
502PyDoc_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 \
Serhiy Storchaka4a934d42018-11-27 11:27:36 +0200511 {"delattr", (PyCFunction)(void(*)(void))builtin_delattr, METH_FASTCALL, builtin_delattr__doc__},
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300512
513static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300514builtin_delattr_impl(PyObject *module, PyObject *obj, PyObject *name);
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300515
516static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +0200517builtin_delattr(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300518{
519 PyObject *return_value = NULL;
520 PyObject *obj;
521 PyObject *name;
522
Serhiy Storchaka2a39d252019-01-11 18:01:42 +0200523 if (!_PyArg_CheckPositional("delattr", nargs, 2, 2)) {
Victor Stinner0c4a8282017-01-17 02:21:47 +0100524 goto exit;
525 }
Serhiy Storchaka2a39d252019-01-11 18:01:42 +0200526 obj = args[0];
527 name = args[1];
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300528 return_value = builtin_delattr_impl(module, obj, name);
529
530exit:
531 return return_value;
532}
533
534PyDoc_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
546PyDoc_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
558PyDoc_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
567PyDoc_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
580static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300581builtin_locals_impl(PyObject *module);
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300582
583static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300584builtin_locals(PyObject *module, PyObject *Py_UNUSED(ignored))
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300585{
586 return builtin_locals_impl(module);
587}
588
589PyDoc_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
601PyDoc_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
610PyDoc_STRVAR(builtin_pow__doc__,
611"pow($module, x, y, z=None, /)\n"
612"--\n"
613"\n"
614"Equivalent to x**y (with two arguments) or x**y % z (with three 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 \
Serhiy Storchaka4a934d42018-11-27 11:27:36 +0200620 {"pow", (PyCFunction)(void(*)(void))builtin_pow, METH_FASTCALL, builtin_pow__doc__},
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300621
622static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300623builtin_pow_impl(PyObject *module, PyObject *x, PyObject *y, PyObject *z);
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300624
625static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +0200626builtin_pow(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300627{
628 PyObject *return_value = NULL;
629 PyObject *x;
630 PyObject *y;
631 PyObject *z = Py_None;
632
Serhiy Storchaka2a39d252019-01-11 18:01:42 +0200633 if (!_PyArg_CheckPositional("pow", nargs, 2, 3)) {
Victor Stinner0c4a8282017-01-17 02:21:47 +0100634 goto exit;
635 }
Serhiy Storchaka2a39d252019-01-11 18:01:42 +0200636 x = args[0];
637 y = args[1];
638 if (nargs < 3) {
639 goto skip_optional;
640 }
641 z = args[2];
642skip_optional:
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300643 return_value = builtin_pow_impl(module, x, y, z);
644
645exit:
646 return return_value;
647}
648
649PyDoc_STRVAR(builtin_input__doc__,
650"input($module, prompt=None, /)\n"
651"--\n"
652"\n"
653"Read a string from standard input. The trailing newline is stripped.\n"
654"\n"
655"The prompt string, if given, is printed to standard output without a\n"
656"trailing newline before reading input.\n"
657"\n"
658"If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError.\n"
659"On *nix systems, readline is used if available.");
660
661#define BUILTIN_INPUT_METHODDEF \
Serhiy Storchaka4a934d42018-11-27 11:27:36 +0200662 {"input", (PyCFunction)(void(*)(void))builtin_input, METH_FASTCALL, builtin_input__doc__},
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300663
664static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300665builtin_input_impl(PyObject *module, PyObject *prompt);
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300666
667static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +0200668builtin_input(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300669{
670 PyObject *return_value = NULL;
671 PyObject *prompt = NULL;
672
Serhiy Storchaka2a39d252019-01-11 18:01:42 +0200673 if (!_PyArg_CheckPositional("input", nargs, 0, 1)) {
Victor Stinner0c4a8282017-01-17 02:21:47 +0100674 goto exit;
675 }
Serhiy Storchaka2a39d252019-01-11 18:01:42 +0200676 if (nargs < 1) {
677 goto skip_optional;
678 }
679 prompt = args[0];
680skip_optional:
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300681 return_value = builtin_input_impl(module, prompt);
682
683exit:
684 return return_value;
685}
686
687PyDoc_STRVAR(builtin_repr__doc__,
688"repr($module, obj, /)\n"
689"--\n"
690"\n"
691"Return the canonical string representation of the object.\n"
692"\n"
693"For many object types, including most builtins, eval(repr(obj)) == obj.");
694
695#define BUILTIN_REPR_METHODDEF \
696 {"repr", (PyCFunction)builtin_repr, METH_O, builtin_repr__doc__},
697
Serhiy Storchakaaca7f572017-11-15 17:51:14 +0200698PyDoc_STRVAR(builtin_round__doc__,
699"round($module, /, number, ndigits=None)\n"
700"--\n"
701"\n"
702"Round a number to a given precision in decimal digits.\n"
703"\n"
704"The return value is an integer if ndigits is omitted or None. Otherwise\n"
705"the return value has the same type as the number. ndigits may be negative.");
706
707#define BUILTIN_ROUND_METHODDEF \
Serhiy Storchaka4a934d42018-11-27 11:27:36 +0200708 {"round", (PyCFunction)(void(*)(void))builtin_round, METH_FASTCALL|METH_KEYWORDS, builtin_round__doc__},
Serhiy Storchakaaca7f572017-11-15 17:51:14 +0200709
710static PyObject *
711builtin_round_impl(PyObject *module, PyObject *number, PyObject *ndigits);
712
713static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +0200714builtin_round(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaaca7f572017-11-15 17:51:14 +0200715{
716 PyObject *return_value = NULL;
717 static const char * const _keywords[] = {"number", "ndigits", NULL};
Serhiy Storchaka31913912019-03-14 10:32:22 +0200718 static _PyArg_Parser _parser = {NULL, _keywords, "round", 0};
719 PyObject *argsbuf[2];
720 Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
Serhiy Storchakaaca7f572017-11-15 17:51:14 +0200721 PyObject *number;
Serhiy Storchakad322abb2019-09-14 13:31:50 +0300722 PyObject *ndigits = Py_None;
Serhiy Storchakaaca7f572017-11-15 17:51:14 +0200723
Serhiy Storchaka31913912019-03-14 10:32:22 +0200724 args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 2, 0, argsbuf);
725 if (!args) {
Serhiy Storchakaaca7f572017-11-15 17:51:14 +0200726 goto exit;
727 }
Serhiy Storchaka31913912019-03-14 10:32:22 +0200728 number = args[0];
729 if (!noptargs) {
730 goto skip_optional_pos;
731 }
732 ndigits = args[1];
733skip_optional_pos:
Serhiy Storchakaaca7f572017-11-15 17:51:14 +0200734 return_value = builtin_round_impl(module, number, ndigits);
735
736exit:
737 return return_value;
738}
739
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300740PyDoc_STRVAR(builtin_sum__doc__,
Raymond Hettinger9dfa0fe2018-09-12 10:54:06 -0700741"sum($module, iterable, /, start=0)\n"
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300742"--\n"
743"\n"
744"Return the sum of a \'start\' value (default: 0) plus an iterable of numbers\n"
745"\n"
746"When the iterable is empty, return the start value.\n"
747"This function is intended specifically for use with numeric values and may\n"
748"reject non-numeric types.");
749
750#define BUILTIN_SUM_METHODDEF \
Serhiy Storchaka4a934d42018-11-27 11:27:36 +0200751 {"sum", (PyCFunction)(void(*)(void))builtin_sum, METH_FASTCALL|METH_KEYWORDS, builtin_sum__doc__},
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300752
753static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300754builtin_sum_impl(PyObject *module, PyObject *iterable, PyObject *start);
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300755
756static PyObject *
Raymond Hettinger9dfa0fe2018-09-12 10:54:06 -0700757builtin_sum(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300758{
759 PyObject *return_value = NULL;
Raymond Hettinger9dfa0fe2018-09-12 10:54:06 -0700760 static const char * const _keywords[] = {"", "start", NULL};
Serhiy Storchaka31913912019-03-14 10:32:22 +0200761 static _PyArg_Parser _parser = {NULL, _keywords, "sum", 0};
762 PyObject *argsbuf[2];
763 Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300764 PyObject *iterable;
765 PyObject *start = NULL;
766
Serhiy Storchaka31913912019-03-14 10:32:22 +0200767 args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 2, 0, argsbuf);
768 if (!args) {
Victor Stinner0c4a8282017-01-17 02:21:47 +0100769 goto exit;
770 }
Serhiy Storchaka31913912019-03-14 10:32:22 +0200771 iterable = args[0];
772 if (!noptargs) {
773 goto skip_optional_pos;
774 }
775 start = args[1];
776skip_optional_pos:
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300777 return_value = builtin_sum_impl(module, iterable, start);
778
779exit:
780 return return_value;
781}
782
783PyDoc_STRVAR(builtin_isinstance__doc__,
784"isinstance($module, obj, class_or_tuple, /)\n"
785"--\n"
786"\n"
787"Return whether an object is an instance of a class or of a subclass thereof.\n"
788"\n"
789"A tuple, as in ``isinstance(x, (A, B, ...))``, may be given as the target to\n"
790"check against. This is equivalent to ``isinstance(x, A) or isinstance(x, B)\n"
791"or ...`` etc.");
792
793#define BUILTIN_ISINSTANCE_METHODDEF \
Serhiy Storchaka4a934d42018-11-27 11:27:36 +0200794 {"isinstance", (PyCFunction)(void(*)(void))builtin_isinstance, METH_FASTCALL, builtin_isinstance__doc__},
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300795
796static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300797builtin_isinstance_impl(PyObject *module, PyObject *obj,
Larry Hastings89964c42015-04-14 18:07:59 -0400798 PyObject *class_or_tuple);
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300799
800static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +0200801builtin_isinstance(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300802{
803 PyObject *return_value = NULL;
804 PyObject *obj;
805 PyObject *class_or_tuple;
806
Serhiy Storchaka2a39d252019-01-11 18:01:42 +0200807 if (!_PyArg_CheckPositional("isinstance", nargs, 2, 2)) {
Victor Stinner0c4a8282017-01-17 02:21:47 +0100808 goto exit;
809 }
Serhiy Storchaka2a39d252019-01-11 18:01:42 +0200810 obj = args[0];
811 class_or_tuple = args[1];
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300812 return_value = builtin_isinstance_impl(module, obj, class_or_tuple);
813
814exit:
815 return return_value;
816}
817
818PyDoc_STRVAR(builtin_issubclass__doc__,
819"issubclass($module, cls, class_or_tuple, /)\n"
820"--\n"
821"\n"
822"Return whether \'cls\' is a derived from another class or is the same class.\n"
823"\n"
824"A tuple, as in ``issubclass(x, (A, B, ...))``, may be given as the target to\n"
825"check against. This is equivalent to ``issubclass(x, A) or issubclass(x, B)\n"
826"or ...`` etc.");
827
828#define BUILTIN_ISSUBCLASS_METHODDEF \
Serhiy Storchaka4a934d42018-11-27 11:27:36 +0200829 {"issubclass", (PyCFunction)(void(*)(void))builtin_issubclass, METH_FASTCALL, builtin_issubclass__doc__},
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300830
831static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300832builtin_issubclass_impl(PyObject *module, PyObject *cls,
Larry Hastings89964c42015-04-14 18:07:59 -0400833 PyObject *class_or_tuple);
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300834
835static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +0200836builtin_issubclass(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300837{
838 PyObject *return_value = NULL;
839 PyObject *cls;
840 PyObject *class_or_tuple;
841
Serhiy Storchaka2a39d252019-01-11 18:01:42 +0200842 if (!_PyArg_CheckPositional("issubclass", nargs, 2, 2)) {
Victor Stinner0c4a8282017-01-17 02:21:47 +0100843 goto exit;
844 }
Serhiy Storchaka2a39d252019-01-11 18:01:42 +0200845 cls = args[0];
846 class_or_tuple = args[1];
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300847 return_value = builtin_issubclass_impl(module, cls, class_or_tuple);
848
849exit:
850 return return_value;
851}
Serhiy Storchakad322abb2019-09-14 13:31:50 +0300852/*[clinic end generated code: output=4e118c2cd2cd98f3 input=a9049054013a1b77]*/