LCOV - code coverage report
Current view: top level - Python/clinic - bltinmodule.c.h (source / functions) Hit Total Coverage
Test: CPython 3.12 LCOV report [commit acb105a7c1f] Lines: 302 317 95.3 %
Date: 2022-07-20 13:12:14 Functions: 20 20 100.0 %
Branches: 189 240 78.8 %

           Branch data     Line data    Source code
       1                 :            : /*[clinic input]
       2                 :            : preserve
       3                 :            : [clinic start generated code]*/
       4                 :            : 
       5                 :            : PyDoc_STRVAR(builtin___import____doc__,
       6                 :            : "__import__($module, /, name, globals=None, locals=None, fromlist=(),\n"
       7                 :            : "           level=0)\n"
       8                 :            : "--\n"
       9                 :            : "\n"
      10                 :            : "Import a module.\n"
      11                 :            : "\n"
      12                 :            : "Because this function is meant for use by the Python\n"
      13                 :            : "interpreter and not for general use, it is better to use\n"
      14                 :            : "importlib.import_module() to programmatically import a module.\n"
      15                 :            : "\n"
      16                 :            : "The globals argument is only used to determine the context;\n"
      17                 :            : "they are not modified.  The locals argument is unused.  The fromlist\n"
      18                 :            : "should be a list of names to emulate ``from name import ...\'\', or an\n"
      19                 :            : "empty list to emulate ``import name\'\'.\n"
      20                 :            : "When importing a module from a package, note that __import__(\'A.B\', ...)\n"
      21                 :            : "returns package A when fromlist is empty, but its submodule B when\n"
      22                 :            : "fromlist is not empty.  The level argument is used to determine whether to\n"
      23                 :            : "perform absolute or relative imports: 0 is absolute, while a positive number\n"
      24                 :            : "is the number of parent directories to search relative to the current module.");
      25                 :            : 
      26                 :            : #define BUILTIN___IMPORT___METHODDEF    \
      27                 :            :     {"__import__", _PyCFunction_CAST(builtin___import__), METH_FASTCALL|METH_KEYWORDS, builtin___import____doc__},
      28                 :            : 
      29                 :            : static PyObject *
      30                 :            : builtin___import___impl(PyObject *module, PyObject *name, PyObject *globals,
      31                 :            :                         PyObject *locals, PyObject *fromlist, int level);
      32                 :            : 
      33                 :            : static PyObject *
      34                 :     614713 : builtin___import__(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
      35                 :            : {
      36                 :     614713 :     PyObject *return_value = NULL;
      37                 :            :     static const char * const _keywords[] = {"name", "globals", "locals", "fromlist", "level", NULL};
      38                 :            :     static _PyArg_Parser _parser = {NULL, _keywords, "__import__", 0};
      39                 :            :     PyObject *argsbuf[5];
      40         [ +  + ]:     614713 :     Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
      41                 :            :     PyObject *name;
      42                 :     614713 :     PyObject *globals = NULL;
      43                 :     614713 :     PyObject *locals = NULL;
      44                 :     614713 :     PyObject *fromlist = NULL;
      45                 :     614713 :     int level = 0;
      46                 :            : 
      47   [ +  +  +  -  :     614713 :     args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 5, 0, argsbuf);
             +  -  -  + ]
      48         [ +  + ]:     614713 :     if (!args) {
      49                 :          1 :         goto exit;
      50                 :            :     }
      51                 :     614712 :     name = args[0];
      52         [ +  + ]:     614712 :     if (!noptargs) {
      53                 :      36288 :         goto skip_optional_pos;
      54                 :            :     }
      55         [ +  + ]:     578424 :     if (args[1]) {
      56                 :     559041 :         globals = args[1];
      57         [ -  + ]:     559041 :         if (!--noptargs) {
      58                 :          0 :             goto skip_optional_pos;
      59                 :            :         }
      60                 :            :     }
      61         [ +  + ]:     578424 :     if (args[2]) {
      62                 :     559009 :         locals = args[2];
      63         [ +  + ]:     559009 :         if (!--noptargs) {
      64                 :          5 :             goto skip_optional_pos;
      65                 :            :         }
      66                 :            :     }
      67         [ +  + ]:     578419 :     if (args[3]) {
      68                 :     564689 :         fromlist = args[3];
      69         [ +  + ]:     564689 :         if (!--noptargs) {
      70                 :       2526 :             goto skip_optional_pos;
      71                 :            :         }
      72                 :            :     }
      73                 :     575893 :     level = _PyLong_AsInt(args[4]);
      74   [ +  +  +  - ]:     575893 :     if (level == -1 && PyErr_Occurred()) {
      75                 :          0 :         goto exit;
      76                 :            :     }
      77                 :     575893 : skip_optional_pos:
      78                 :     614712 :     return_value = builtin___import___impl(module, name, globals, locals, fromlist, level);
      79                 :            : 
      80                 :     614713 : exit:
      81                 :     614713 :     return return_value;
      82                 :            : }
      83                 :            : 
      84                 :            : PyDoc_STRVAR(builtin_abs__doc__,
      85                 :            : "abs($module, x, /)\n"
      86                 :            : "--\n"
      87                 :            : "\n"
      88                 :            : "Return the absolute value of the argument.");
      89                 :            : 
      90                 :            : #define BUILTIN_ABS_METHODDEF    \
      91                 :            :     {"abs", (PyCFunction)builtin_abs, METH_O, builtin_abs__doc__},
      92                 :            : 
      93                 :            : PyDoc_STRVAR(builtin_all__doc__,
      94                 :            : "all($module, iterable, /)\n"
      95                 :            : "--\n"
      96                 :            : "\n"
      97                 :            : "Return True if bool(x) is True for all values x in the iterable.\n"
      98                 :            : "\n"
      99                 :            : "If the iterable is empty, return True.");
     100                 :            : 
     101                 :            : #define BUILTIN_ALL_METHODDEF    \
     102                 :            :     {"all", (PyCFunction)builtin_all, METH_O, builtin_all__doc__},
     103                 :            : 
     104                 :            : PyDoc_STRVAR(builtin_any__doc__,
     105                 :            : "any($module, iterable, /)\n"
     106                 :            : "--\n"
     107                 :            : "\n"
     108                 :            : "Return True if bool(x) is True for any x in the iterable.\n"
     109                 :            : "\n"
     110                 :            : "If the iterable is empty, return False.");
     111                 :            : 
     112                 :            : #define BUILTIN_ANY_METHODDEF    \
     113                 :            :     {"any", (PyCFunction)builtin_any, METH_O, builtin_any__doc__},
     114                 :            : 
     115                 :            : PyDoc_STRVAR(builtin_ascii__doc__,
     116                 :            : "ascii($module, obj, /)\n"
     117                 :            : "--\n"
     118                 :            : "\n"
     119                 :            : "Return an ASCII-only representation of an object.\n"
     120                 :            : "\n"
     121                 :            : "As repr(), return a string containing a printable representation of an\n"
     122                 :            : "object, but escape the non-ASCII characters in the string returned by\n"
     123                 :            : "repr() using \\\\x, \\\\u or \\\\U escapes. This generates a string similar\n"
     124                 :            : "to that returned by repr() in Python 2.");
     125                 :            : 
     126                 :            : #define BUILTIN_ASCII_METHODDEF    \
     127                 :            :     {"ascii", (PyCFunction)builtin_ascii, METH_O, builtin_ascii__doc__},
     128                 :            : 
     129                 :            : PyDoc_STRVAR(builtin_bin__doc__,
     130                 :            : "bin($module, number, /)\n"
     131                 :            : "--\n"
     132                 :            : "\n"
     133                 :            : "Return the binary representation of an integer.\n"
     134                 :            : "\n"
     135                 :            : "   >>> bin(2796202)\n"
     136                 :            : "   \'0b1010101010101010101010\'");
     137                 :            : 
     138                 :            : #define BUILTIN_BIN_METHODDEF    \
     139                 :            :     {"bin", (PyCFunction)builtin_bin, METH_O, builtin_bin__doc__},
     140                 :            : 
     141                 :            : PyDoc_STRVAR(builtin_callable__doc__,
     142                 :            : "callable($module, obj, /)\n"
     143                 :            : "--\n"
     144                 :            : "\n"
     145                 :            : "Return whether the object is callable (i.e., some kind of function).\n"
     146                 :            : "\n"
     147                 :            : "Note that classes are callable, as are instances of classes with a\n"
     148                 :            : "__call__() method.");
     149                 :            : 
     150                 :            : #define BUILTIN_CALLABLE_METHODDEF    \
     151                 :            :     {"callable", (PyCFunction)builtin_callable, METH_O, builtin_callable__doc__},
     152                 :            : 
     153                 :            : PyDoc_STRVAR(builtin_format__doc__,
     154                 :            : "format($module, value, format_spec=\'\', /)\n"
     155                 :            : "--\n"
     156                 :            : "\n"
     157                 :            : "Return value.__format__(format_spec)\n"
     158                 :            : "\n"
     159                 :            : "format_spec defaults to the empty string.\n"
     160                 :            : "See the Format Specification Mini-Language section of help(\'FORMATTING\') for\n"
     161                 :            : "details.");
     162                 :            : 
     163                 :            : #define BUILTIN_FORMAT_METHODDEF    \
     164                 :            :     {"format", _PyCFunction_CAST(builtin_format), METH_FASTCALL, builtin_format__doc__},
     165                 :            : 
     166                 :            : static PyObject *
     167                 :            : builtin_format_impl(PyObject *module, PyObject *value, PyObject *format_spec);
     168                 :            : 
     169                 :            : static PyObject *
     170                 :    3350172 : builtin_format(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
     171                 :            : {
     172                 :    3350172 :     PyObject *return_value = NULL;
     173                 :            :     PyObject *value;
     174                 :    3350172 :     PyObject *format_spec = NULL;
     175                 :            : 
     176   [ +  -  -  +  :    3350172 :     if (!_PyArg_CheckPositional("format", nargs, 1, 2)) {
                   -  - ]
     177                 :          0 :         goto exit;
     178                 :            :     }
     179                 :    3350172 :     value = args[0];
     180         [ +  + ]:    3350172 :     if (nargs < 2) {
     181                 :        160 :         goto skip_optional;
     182                 :            :     }
     183         [ +  + ]:    3350012 :     if (!PyUnicode_Check(args[1])) {
     184                 :          2 :         _PyArg_BadArgument("format", "argument 2", "str", args[1]);
     185                 :          2 :         goto exit;
     186                 :            :     }
     187         [ -  + ]:    3350010 :     if (PyUnicode_READY(args[1]) == -1) {
     188                 :          0 :         goto exit;
     189                 :            :     }
     190                 :    3350010 :     format_spec = args[1];
     191                 :    3350170 : skip_optional:
     192                 :    3350170 :     return_value = builtin_format_impl(module, value, format_spec);
     193                 :            : 
     194                 :    3350172 : exit:
     195                 :    3350172 :     return return_value;
     196                 :            : }
     197                 :            : 
     198                 :            : PyDoc_STRVAR(builtin_chr__doc__,
     199                 :            : "chr($module, i, /)\n"
     200                 :            : "--\n"
     201                 :            : "\n"
     202                 :            : "Return a Unicode string of one character with ordinal i; 0 <= i <= 0x10ffff.");
     203                 :            : 
     204                 :            : #define BUILTIN_CHR_METHODDEF    \
     205                 :            :     {"chr", (PyCFunction)builtin_chr, METH_O, builtin_chr__doc__},
     206                 :            : 
     207                 :            : static PyObject *
     208                 :            : builtin_chr_impl(PyObject *module, int i);
     209                 :            : 
     210                 :            : static PyObject *
     211                 :   12080577 : builtin_chr(PyObject *module, PyObject *arg)
     212                 :            : {
     213                 :   12080577 :     PyObject *return_value = NULL;
     214                 :            :     int i;
     215                 :            : 
     216                 :   12080577 :     i = _PyLong_AsInt(arg);
     217   [ +  +  +  + ]:   12080577 :     if (i == -1 && PyErr_Occurred()) {
     218                 :          1 :         goto exit;
     219                 :            :     }
     220                 :   12080576 :     return_value = builtin_chr_impl(module, i);
     221                 :            : 
     222                 :   12080577 : exit:
     223                 :   12080577 :     return return_value;
     224                 :            : }
     225                 :            : 
     226                 :            : PyDoc_STRVAR(builtin_compile__doc__,
     227                 :            : "compile($module, /, source, filename, mode, flags=0,\n"
     228                 :            : "        dont_inherit=False, optimize=-1, *, _feature_version=-1)\n"
     229                 :            : "--\n"
     230                 :            : "\n"
     231                 :            : "Compile source into a code object that can be executed by exec() or eval().\n"
     232                 :            : "\n"
     233                 :            : "The source code may represent a Python module, statement or expression.\n"
     234                 :            : "The filename will be used for run-time error messages.\n"
     235                 :            : "The mode must be \'exec\' to compile a module, \'single\' to compile a\n"
     236                 :            : "single (interactive) statement, or \'eval\' to compile an expression.\n"
     237                 :            : "The flags argument, if present, controls which future statements influence\n"
     238                 :            : "the compilation of the code.\n"
     239                 :            : "The dont_inherit argument, if true, stops the compilation inheriting\n"
     240                 :            : "the effects of any future statements in effect in the code calling\n"
     241                 :            : "compile; if absent or false these statements do influence the compilation,\n"
     242                 :            : "in addition to any features explicitly specified.");
     243                 :            : 
     244                 :            : #define BUILTIN_COMPILE_METHODDEF    \
     245                 :            :     {"compile", _PyCFunction_CAST(builtin_compile), METH_FASTCALL|METH_KEYWORDS, builtin_compile__doc__},
     246                 :            : 
     247                 :            : static PyObject *
     248                 :            : builtin_compile_impl(PyObject *module, PyObject *source, PyObject *filename,
     249                 :            :                      const char *mode, int flags, int dont_inherit,
     250                 :            :                      int optimize, int feature_version);
     251                 :            : 
     252                 :            : static PyObject *
     253                 :      30305 : builtin_compile(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
     254                 :            : {
     255                 :      30305 :     PyObject *return_value = NULL;
     256                 :            :     static const char * const _keywords[] = {"source", "filename", "mode", "flags", "dont_inherit", "optimize", "_feature_version", NULL};
     257                 :            :     static _PyArg_Parser _parser = {NULL, _keywords, "compile", 0};
     258                 :            :     PyObject *argsbuf[7];
     259         [ +  + ]:      30305 :     Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 3;
     260                 :            :     PyObject *source;
     261                 :            :     PyObject *filename;
     262                 :            :     const char *mode;
     263                 :      30305 :     int flags = 0;
     264                 :      30305 :     int dont_inherit = 0;
     265                 :      30305 :     int optimize = -1;
     266                 :      30305 :     int feature_version = -1;
     267                 :            : 
     268   [ +  +  +  +  :      30305 :     args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 3, 6, 0, argsbuf);
             +  -  -  + ]
     269         [ +  + ]:      30305 :     if (!args) {
     270                 :          2 :         goto exit;
     271                 :            :     }
     272                 :      30303 :     source = args[0];
     273         [ +  + ]:      30303 :     if (!PyUnicode_FSDecoder(args[1], &filename)) {
     274                 :          1 :         goto exit;
     275                 :            :     }
     276         [ -  + ]:      30302 :     if (!PyUnicode_Check(args[2])) {
     277                 :          0 :         _PyArg_BadArgument("compile", "argument 'mode'", "str", args[2]);
     278                 :          0 :         goto exit;
     279                 :            :     }
     280                 :            :     Py_ssize_t mode_length;
     281                 :      30302 :     mode = PyUnicode_AsUTF8AndSize(args[2], &mode_length);
     282         [ -  + ]:      30302 :     if (mode == NULL) {
     283                 :          0 :         goto exit;
     284                 :            :     }
     285         [ -  + ]:      30302 :     if (strlen(mode) != (size_t)mode_length) {
     286                 :          0 :         PyErr_SetString(PyExc_ValueError, "embedded null character");
     287                 :          0 :         goto exit;
     288                 :            :     }
     289         [ +  + ]:      30302 :     if (!noptargs) {
     290                 :       3144 :         goto skip_optional_pos;
     291                 :            :     }
     292         [ +  + ]:      27158 :     if (args[3]) {
     293                 :      15561 :         flags = _PyLong_AsInt(args[3]);
     294   [ -  +  -  - ]:      15561 :         if (flags == -1 && PyErr_Occurred()) {
     295                 :          0 :             goto exit;
     296                 :            :         }
     297         [ +  + ]:      15561 :         if (!--noptargs) {
     298                 :        767 :             goto skip_optional_pos;
     299                 :            :         }
     300                 :            :     }
     301         [ +  + ]:      26391 :     if (args[4]) {
     302                 :      15774 :         dont_inherit = _PyLong_AsInt(args[4]);
     303   [ -  +  -  - ]:      15774 :         if (dont_inherit == -1 && PyErr_Occurred()) {
     304                 :          0 :             goto exit;
     305                 :            :         }
     306         [ +  + ]:      15774 :         if (!--noptargs) {
     307                 :       8147 :             goto skip_optional_pos;
     308                 :            :         }
     309                 :            :     }
     310         [ +  + ]:      18244 :     if (args[5]) {
     311                 :       7635 :         optimize = _PyLong_AsInt(args[5]);
     312   [ +  +  -  + ]:       7635 :         if (optimize == -1 && PyErr_Occurred()) {
     313                 :          0 :             goto exit;
     314                 :            :         }
     315         [ -  + ]:       7635 :         if (!--noptargs) {
     316                 :       7635 :             goto skip_optional_pos;
     317                 :            :         }
     318                 :            :     }
     319                 :      10609 : skip_optional_pos:
     320         [ +  + ]:      30302 :     if (!noptargs) {
     321                 :      19693 :         goto skip_optional_kwonly;
     322                 :            :     }
     323                 :      10609 :     feature_version = _PyLong_AsInt(args[6]);
     324   [ +  +  +  - ]:      10609 :     if (feature_version == -1 && PyErr_Occurred()) {
     325                 :          0 :         goto exit;
     326                 :            :     }
     327                 :      10609 : skip_optional_kwonly:
     328                 :      30302 :     return_value = builtin_compile_impl(module, source, filename, mode, flags, dont_inherit, optimize, feature_version);
     329                 :            : 
     330                 :      30305 : exit:
     331                 :      30305 :     return return_value;
     332                 :            : }
     333                 :            : 
     334                 :            : PyDoc_STRVAR(builtin_divmod__doc__,
     335                 :            : "divmod($module, x, y, /)\n"
     336                 :            : "--\n"
     337                 :            : "\n"
     338                 :            : "Return the tuple (x//y, x%y).  Invariant: div*y + mod == x.");
     339                 :            : 
     340                 :            : #define BUILTIN_DIVMOD_METHODDEF    \
     341                 :            :     {"divmod", _PyCFunction_CAST(builtin_divmod), METH_FASTCALL, builtin_divmod__doc__},
     342                 :            : 
     343                 :            : static PyObject *
     344                 :            : builtin_divmod_impl(PyObject *module, PyObject *x, PyObject *y);
     345                 :            : 
     346                 :            : static PyObject *
     347                 :    1378838 : builtin_divmod(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
     348                 :            : {
     349                 :    1378838 :     PyObject *return_value = NULL;
     350                 :            :     PyObject *x;
     351                 :            :     PyObject *y;
     352                 :            : 
     353   [ +  +  -  +  :    1378838 :     if (!_PyArg_CheckPositional("divmod", nargs, 2, 2)) {
                   +  - ]
     354                 :          1 :         goto exit;
     355                 :            :     }
     356                 :    1378837 :     x = args[0];
     357                 :    1378837 :     y = args[1];
     358                 :    1378837 :     return_value = builtin_divmod_impl(module, x, y);
     359                 :            : 
     360                 :    1378838 : exit:
     361                 :    1378838 :     return return_value;
     362                 :            : }
     363                 :            : 
     364                 :            : PyDoc_STRVAR(builtin_eval__doc__,
     365                 :            : "eval($module, source, globals=None, locals=None, /)\n"
     366                 :            : "--\n"
     367                 :            : "\n"
     368                 :            : "Evaluate the given source in the context of globals and locals.\n"
     369                 :            : "\n"
     370                 :            : "The source may be a string representing a Python expression\n"
     371                 :            : "or a code object as returned by compile().\n"
     372                 :            : "The globals must be a dictionary and locals can be any mapping,\n"
     373                 :            : "defaulting to the current globals and locals.\n"
     374                 :            : "If only globals is given, locals defaults to it.");
     375                 :            : 
     376                 :            : #define BUILTIN_EVAL_METHODDEF    \
     377                 :            :     {"eval", _PyCFunction_CAST(builtin_eval), METH_FASTCALL, builtin_eval__doc__},
     378                 :            : 
     379                 :            : static PyObject *
     380                 :            : builtin_eval_impl(PyObject *module, PyObject *source, PyObject *globals,
     381                 :            :                   PyObject *locals);
     382                 :            : 
     383                 :            : static PyObject *
     384                 :      70956 : builtin_eval(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
     385                 :            : {
     386                 :      70956 :     PyObject *return_value = NULL;
     387                 :            :     PyObject *source;
     388                 :      70956 :     PyObject *globals = Py_None;
     389                 :      70956 :     PyObject *locals = Py_None;
     390                 :            : 
     391   [ +  +  -  +  :      70956 :     if (!_PyArg_CheckPositional("eval", nargs, 1, 3)) {
                   +  - ]
     392                 :          1 :         goto exit;
     393                 :            :     }
     394                 :      70955 :     source = args[0];
     395         [ +  + ]:      70955 :     if (nargs < 2) {
     396                 :      17749 :         goto skip_optional;
     397                 :            :     }
     398                 :      53206 :     globals = args[1];
     399         [ +  + ]:      53206 :     if (nargs < 3) {
     400                 :      52353 :         goto skip_optional;
     401                 :            :     }
     402                 :        853 :     locals = args[2];
     403                 :      70955 : skip_optional:
     404                 :      70955 :     return_value = builtin_eval_impl(module, source, globals, locals);
     405                 :            : 
     406                 :      70956 : exit:
     407                 :      70956 :     return return_value;
     408                 :            : }
     409                 :            : 
     410                 :            : PyDoc_STRVAR(builtin_exec__doc__,
     411                 :            : "exec($module, source, globals=None, locals=None, /, *, closure=None)\n"
     412                 :            : "--\n"
     413                 :            : "\n"
     414                 :            : "Execute the given source in the context of globals and locals.\n"
     415                 :            : "\n"
     416                 :            : "The source may be a string representing one or more Python statements\n"
     417                 :            : "or a code object as returned by compile().\n"
     418                 :            : "The globals must be a dictionary and locals can be any mapping,\n"
     419                 :            : "defaulting to the current globals and locals.\n"
     420                 :            : "If only globals is given, locals defaults to it.\n"
     421                 :            : "The closure must be a tuple of cellvars, and can only be used\n"
     422                 :            : "when source is a code object requiring exactly that many cellvars.");
     423                 :            : 
     424                 :            : #define BUILTIN_EXEC_METHODDEF    \
     425                 :            :     {"exec", _PyCFunction_CAST(builtin_exec), METH_FASTCALL|METH_KEYWORDS, builtin_exec__doc__},
     426                 :            : 
     427                 :            : static PyObject *
     428                 :            : builtin_exec_impl(PyObject *module, PyObject *source, PyObject *globals,
     429                 :            :                   PyObject *locals, PyObject *closure);
     430                 :            : 
     431                 :            : static PyObject *
     432                 :     237603 : builtin_exec(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
     433                 :            : {
     434                 :     237603 :     PyObject *return_value = NULL;
     435                 :            :     static const char * const _keywords[] = {"", "", "", "closure", NULL};
     436                 :            :     static _PyArg_Parser _parser = {NULL, _keywords, "exec", 0};
     437                 :            :     PyObject *argsbuf[4];
     438         [ +  + ]:     237603 :     Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
     439                 :            :     PyObject *source;
     440                 :     237603 :     PyObject *globals = Py_None;
     441                 :     237603 :     PyObject *locals = Py_None;
     442                 :     237603 :     PyObject *closure = NULL;
     443                 :            : 
     444   [ +  +  +  -  :     237603 :     args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 3, 0, argsbuf);
             +  -  -  + ]
     445         [ -  + ]:     237603 :     if (!args) {
     446                 :          0 :         goto exit;
     447                 :            :     }
     448                 :     237603 :     source = args[0];
     449         [ +  + ]:     237603 :     if (nargs < 2) {
     450                 :        204 :         goto skip_optional_posonly;
     451                 :            :     }
     452                 :     237399 :     noptargs--;
     453                 :     237399 :     globals = args[1];
     454         [ +  + ]:     237399 :     if (nargs < 3) {
     455                 :     234306 :         goto skip_optional_posonly;
     456                 :            :     }
     457                 :       3093 :     noptargs--;
     458                 :       3093 :     locals = args[2];
     459                 :     237603 : skip_optional_posonly:
     460         [ +  + ]:     237603 :     if (!noptargs) {
     461                 :     237596 :         goto skip_optional_kwonly;
     462                 :            :     }
     463                 :          7 :     closure = args[3];
     464                 :     237603 : skip_optional_kwonly:
     465                 :     237603 :     return_value = builtin_exec_impl(module, source, globals, locals, closure);
     466                 :            : 
     467                 :     237603 : exit:
     468                 :     237603 :     return return_value;
     469                 :            : }
     470                 :            : 
     471                 :            : PyDoc_STRVAR(builtin_globals__doc__,
     472                 :            : "globals($module, /)\n"
     473                 :            : "--\n"
     474                 :            : "\n"
     475                 :            : "Return the dictionary containing the current scope\'s global variables.\n"
     476                 :            : "\n"
     477                 :            : "NOTE: Updates to this dictionary *will* affect name lookups in the current\n"
     478                 :            : "global scope and vice-versa.");
     479                 :            : 
     480                 :            : #define BUILTIN_GLOBALS_METHODDEF    \
     481                 :            :     {"globals", (PyCFunction)builtin_globals, METH_NOARGS, builtin_globals__doc__},
     482                 :            : 
     483                 :            : static PyObject *
     484                 :            : builtin_globals_impl(PyObject *module);
     485                 :            : 
     486                 :            : static PyObject *
     487                 :      60623 : builtin_globals(PyObject *module, PyObject *Py_UNUSED(ignored))
     488                 :            : {
     489                 :      60623 :     return builtin_globals_impl(module);
     490                 :            : }
     491                 :            : 
     492                 :            : PyDoc_STRVAR(builtin_hasattr__doc__,
     493                 :            : "hasattr($module, obj, name, /)\n"
     494                 :            : "--\n"
     495                 :            : "\n"
     496                 :            : "Return whether the object has an attribute with the given name.\n"
     497                 :            : "\n"
     498                 :            : "This is done by calling getattr(obj, name) and catching AttributeError.");
     499                 :            : 
     500                 :            : #define BUILTIN_HASATTR_METHODDEF    \
     501                 :            :     {"hasattr", _PyCFunction_CAST(builtin_hasattr), METH_FASTCALL, builtin_hasattr__doc__},
     502                 :            : 
     503                 :            : static PyObject *
     504                 :            : builtin_hasattr_impl(PyObject *module, PyObject *obj, PyObject *name);
     505                 :            : 
     506                 :            : static PyObject *
     507                 :    6090666 : builtin_hasattr(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
     508                 :            : {
     509                 :    6090666 :     PyObject *return_value = NULL;
     510                 :            :     PyObject *obj;
     511                 :            :     PyObject *name;
     512                 :            : 
     513   [ +  +  -  +  :    6090666 :     if (!_PyArg_CheckPositional("hasattr", nargs, 2, 2)) {
                   +  - ]
     514                 :          2 :         goto exit;
     515                 :            :     }
     516                 :    6090664 :     obj = args[0];
     517                 :    6090664 :     name = args[1];
     518                 :    6090664 :     return_value = builtin_hasattr_impl(module, obj, name);
     519                 :            : 
     520                 :    6090666 : exit:
     521                 :    6090666 :     return return_value;
     522                 :            : }
     523                 :            : 
     524                 :            : PyDoc_STRVAR(builtin_id__doc__,
     525                 :            : "id($module, obj, /)\n"
     526                 :            : "--\n"
     527                 :            : "\n"
     528                 :            : "Return the identity of an object.\n"
     529                 :            : "\n"
     530                 :            : "This is guaranteed to be unique among simultaneously existing objects.\n"
     531                 :            : "(CPython uses the object\'s memory address.)");
     532                 :            : 
     533                 :            : #define BUILTIN_ID_METHODDEF    \
     534                 :            :     {"id", (PyCFunction)builtin_id, METH_O, builtin_id__doc__},
     535                 :            : 
     536                 :            : PyDoc_STRVAR(builtin_setattr__doc__,
     537                 :            : "setattr($module, obj, name, value, /)\n"
     538                 :            : "--\n"
     539                 :            : "\n"
     540                 :            : "Sets the named attribute on the given object to the specified value.\n"
     541                 :            : "\n"
     542                 :            : "setattr(x, \'y\', v) is equivalent to ``x.y = v\'\'");
     543                 :            : 
     544                 :            : #define BUILTIN_SETATTR_METHODDEF    \
     545                 :            :     {"setattr", _PyCFunction_CAST(builtin_setattr), METH_FASTCALL, builtin_setattr__doc__},
     546                 :            : 
     547                 :            : static PyObject *
     548                 :            : builtin_setattr_impl(PyObject *module, PyObject *obj, PyObject *name,
     549                 :            :                      PyObject *value);
     550                 :            : 
     551                 :            : static PyObject *
     552                 :    1367240 : builtin_setattr(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
     553                 :            : {
     554                 :    1367240 :     PyObject *return_value = NULL;
     555                 :            :     PyObject *obj;
     556                 :            :     PyObject *name;
     557                 :            :     PyObject *value;
     558                 :            : 
     559   [ +  +  -  +  :    1367240 :     if (!_PyArg_CheckPositional("setattr", nargs, 3, 3)) {
                   +  - ]
     560                 :          5 :         goto exit;
     561                 :            :     }
     562                 :    1367235 :     obj = args[0];
     563                 :    1367235 :     name = args[1];
     564                 :    1367235 :     value = args[2];
     565                 :    1367235 :     return_value = builtin_setattr_impl(module, obj, name, value);
     566                 :            : 
     567                 :    1367240 : exit:
     568                 :    1367240 :     return return_value;
     569                 :            : }
     570                 :            : 
     571                 :            : PyDoc_STRVAR(builtin_delattr__doc__,
     572                 :            : "delattr($module, obj, name, /)\n"
     573                 :            : "--\n"
     574                 :            : "\n"
     575                 :            : "Deletes the named attribute from the given object.\n"
     576                 :            : "\n"
     577                 :            : "delattr(x, \'y\') is equivalent to ``del x.y\'\'");
     578                 :            : 
     579                 :            : #define BUILTIN_DELATTR_METHODDEF    \
     580                 :            :     {"delattr", _PyCFunction_CAST(builtin_delattr), METH_FASTCALL, builtin_delattr__doc__},
     581                 :            : 
     582                 :            : static PyObject *
     583                 :            : builtin_delattr_impl(PyObject *module, PyObject *obj, PyObject *name);
     584                 :            : 
     585                 :            : static PyObject *
     586                 :     215336 : builtin_delattr(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
     587                 :            : {
     588                 :     215336 :     PyObject *return_value = NULL;
     589                 :            :     PyObject *obj;
     590                 :            :     PyObject *name;
     591                 :            : 
     592   [ +  +  -  +  :     215336 :     if (!_PyArg_CheckPositional("delattr", nargs, 2, 2)) {
                   +  - ]
     593                 :          2 :         goto exit;
     594                 :            :     }
     595                 :     215334 :     obj = args[0];
     596                 :     215334 :     name = args[1];
     597                 :     215334 :     return_value = builtin_delattr_impl(module, obj, name);
     598                 :            : 
     599                 :     215336 : exit:
     600                 :     215336 :     return return_value;
     601                 :            : }
     602                 :            : 
     603                 :            : PyDoc_STRVAR(builtin_hash__doc__,
     604                 :            : "hash($module, obj, /)\n"
     605                 :            : "--\n"
     606                 :            : "\n"
     607                 :            : "Return the hash value for the given object.\n"
     608                 :            : "\n"
     609                 :            : "Two objects that compare equal must also have the same hash value, but the\n"
     610                 :            : "reverse is not necessarily true.");
     611                 :            : 
     612                 :            : #define BUILTIN_HASH_METHODDEF    \
     613                 :            :     {"hash", (PyCFunction)builtin_hash, METH_O, builtin_hash__doc__},
     614                 :            : 
     615                 :            : PyDoc_STRVAR(builtin_hex__doc__,
     616                 :            : "hex($module, number, /)\n"
     617                 :            : "--\n"
     618                 :            : "\n"
     619                 :            : "Return the hexadecimal representation of an integer.\n"
     620                 :            : "\n"
     621                 :            : "   >>> hex(12648430)\n"
     622                 :            : "   \'0xc0ffee\'");
     623                 :            : 
     624                 :            : #define BUILTIN_HEX_METHODDEF    \
     625                 :            :     {"hex", (PyCFunction)builtin_hex, METH_O, builtin_hex__doc__},
     626                 :            : 
     627                 :            : PyDoc_STRVAR(builtin_aiter__doc__,
     628                 :            : "aiter($module, async_iterable, /)\n"
     629                 :            : "--\n"
     630                 :            : "\n"
     631                 :            : "Return an AsyncIterator for an AsyncIterable object.");
     632                 :            : 
     633                 :            : #define BUILTIN_AITER_METHODDEF    \
     634                 :            :     {"aiter", (PyCFunction)builtin_aiter, METH_O, builtin_aiter__doc__},
     635                 :            : 
     636                 :            : PyDoc_STRVAR(builtin_anext__doc__,
     637                 :            : "anext($module, aiterator, default=<unrepresentable>, /)\n"
     638                 :            : "--\n"
     639                 :            : "\n"
     640                 :            : "async anext(aiterator[, default])\n"
     641                 :            : "\n"
     642                 :            : "Return the next item from the async iterator.  If default is given and the async\n"
     643                 :            : "iterator is exhausted, it is returned instead of raising StopAsyncIteration.");
     644                 :            : 
     645                 :            : #define BUILTIN_ANEXT_METHODDEF    \
     646                 :            :     {"anext", _PyCFunction_CAST(builtin_anext), METH_FASTCALL, builtin_anext__doc__},
     647                 :            : 
     648                 :            : static PyObject *
     649                 :            : builtin_anext_impl(PyObject *module, PyObject *aiterator,
     650                 :            :                    PyObject *default_value);
     651                 :            : 
     652                 :            : static PyObject *
     653                 :        116 : builtin_anext(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
     654                 :            : {
     655                 :        116 :     PyObject *return_value = NULL;
     656                 :            :     PyObject *aiterator;
     657                 :        116 :     PyObject *default_value = NULL;
     658                 :            : 
     659   [ +  +  +  +  :        116 :     if (!_PyArg_CheckPositional("anext", nargs, 1, 2)) {
                   +  - ]
     660                 :          2 :         goto exit;
     661                 :            :     }
     662                 :        114 :     aiterator = args[0];
     663         [ +  + ]:        114 :     if (nargs < 2) {
     664                 :         82 :         goto skip_optional;
     665                 :            :     }
     666                 :         32 :     default_value = args[1];
     667                 :        114 : skip_optional:
     668                 :        114 :     return_value = builtin_anext_impl(module, aiterator, default_value);
     669                 :            : 
     670                 :        116 : exit:
     671                 :        116 :     return return_value;
     672                 :            : }
     673                 :            : 
     674                 :            : PyDoc_STRVAR(builtin_len__doc__,
     675                 :            : "len($module, obj, /)\n"
     676                 :            : "--\n"
     677                 :            : "\n"
     678                 :            : "Return the number of items in a container.");
     679                 :            : 
     680                 :            : #define BUILTIN_LEN_METHODDEF    \
     681                 :            :     {"len", (PyCFunction)builtin_len, METH_O, builtin_len__doc__},
     682                 :            : 
     683                 :            : PyDoc_STRVAR(builtin_locals__doc__,
     684                 :            : "locals($module, /)\n"
     685                 :            : "--\n"
     686                 :            : "\n"
     687                 :            : "Return a dictionary containing the current scope\'s local variables.\n"
     688                 :            : "\n"
     689                 :            : "NOTE: Whether or not updates to this dictionary will affect name lookups in\n"
     690                 :            : "the local scope and vice-versa is *implementation dependent* and not\n"
     691                 :            : "covered by any backwards compatibility guarantees.");
     692                 :            : 
     693                 :            : #define BUILTIN_LOCALS_METHODDEF    \
     694                 :            :     {"locals", (PyCFunction)builtin_locals, METH_NOARGS, builtin_locals__doc__},
     695                 :            : 
     696                 :            : static PyObject *
     697                 :            : builtin_locals_impl(PyObject *module);
     698                 :            : 
     699                 :            : static PyObject *
     700                 :       1862 : builtin_locals(PyObject *module, PyObject *Py_UNUSED(ignored))
     701                 :            : {
     702                 :       1862 :     return builtin_locals_impl(module);
     703                 :            : }
     704                 :            : 
     705                 :            : PyDoc_STRVAR(builtin_oct__doc__,
     706                 :            : "oct($module, number, /)\n"
     707                 :            : "--\n"
     708                 :            : "\n"
     709                 :            : "Return the octal representation of an integer.\n"
     710                 :            : "\n"
     711                 :            : "   >>> oct(342391)\n"
     712                 :            : "   \'0o1234567\'");
     713                 :            : 
     714                 :            : #define BUILTIN_OCT_METHODDEF    \
     715                 :            :     {"oct", (PyCFunction)builtin_oct, METH_O, builtin_oct__doc__},
     716                 :            : 
     717                 :            : PyDoc_STRVAR(builtin_ord__doc__,
     718                 :            : "ord($module, c, /)\n"
     719                 :            : "--\n"
     720                 :            : "\n"
     721                 :            : "Return the Unicode code point for a one-character string.");
     722                 :            : 
     723                 :            : #define BUILTIN_ORD_METHODDEF    \
     724                 :            :     {"ord", (PyCFunction)builtin_ord, METH_O, builtin_ord__doc__},
     725                 :            : 
     726                 :            : PyDoc_STRVAR(builtin_pow__doc__,
     727                 :            : "pow($module, /, base, exp, mod=None)\n"
     728                 :            : "--\n"
     729                 :            : "\n"
     730                 :            : "Equivalent to base**exp with 2 arguments or base**exp % mod with 3 arguments\n"
     731                 :            : "\n"
     732                 :            : "Some types, such as ints, are able to use a more efficient algorithm when\n"
     733                 :            : "invoked using the three argument form.");
     734                 :            : 
     735                 :            : #define BUILTIN_POW_METHODDEF    \
     736                 :            :     {"pow", _PyCFunction_CAST(builtin_pow), METH_FASTCALL|METH_KEYWORDS, builtin_pow__doc__},
     737                 :            : 
     738                 :            : static PyObject *
     739                 :            : builtin_pow_impl(PyObject *module, PyObject *base, PyObject *exp,
     740                 :            :                  PyObject *mod);
     741                 :            : 
     742                 :            : static PyObject *
     743                 :     126930 : builtin_pow(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
     744                 :            : {
     745                 :     126930 :     PyObject *return_value = NULL;
     746                 :            :     static const char * const _keywords[] = {"base", "exp", "mod", NULL};
     747                 :            :     static _PyArg_Parser _parser = {NULL, _keywords, "pow", 0};
     748                 :            :     PyObject *argsbuf[3];
     749         [ +  + ]:     126930 :     Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 2;
     750                 :            :     PyObject *base;
     751                 :            :     PyObject *exp;
     752                 :     126930 :     PyObject *mod = Py_None;
     753                 :            : 
     754   [ +  +  +  +  :     126930 :     args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 2, 3, 0, argsbuf);
             +  -  -  + ]
     755         [ +  + ]:     126930 :     if (!args) {
     756                 :          1 :         goto exit;
     757                 :            :     }
     758                 :     126929 :     base = args[0];
     759                 :     126929 :     exp = args[1];
     760         [ +  + ]:     126929 :     if (!noptargs) {
     761                 :      18954 :         goto skip_optional_pos;
     762                 :            :     }
     763                 :     107975 :     mod = args[2];
     764                 :     126929 : skip_optional_pos:
     765                 :     126929 :     return_value = builtin_pow_impl(module, base, exp, mod);
     766                 :            : 
     767                 :     126930 : exit:
     768                 :     126930 :     return return_value;
     769                 :            : }
     770                 :            : 
     771                 :            : PyDoc_STRVAR(builtin_print__doc__,
     772                 :            : "print($module, /, *args, sep=\' \', end=\'\\n\', file=None, flush=False)\n"
     773                 :            : "--\n"
     774                 :            : "\n"
     775                 :            : "Prints the values to a stream, or to sys.stdout by default.\n"
     776                 :            : "\n"
     777                 :            : "  sep\n"
     778                 :            : "    string inserted between values, default a space.\n"
     779                 :            : "  end\n"
     780                 :            : "    string appended after the last value, default a newline.\n"
     781                 :            : "  file\n"
     782                 :            : "    a file-like object (stream); defaults to the current sys.stdout.\n"
     783                 :            : "  flush\n"
     784                 :            : "    whether to forcibly flush the stream.");
     785                 :            : 
     786                 :            : #define BUILTIN_PRINT_METHODDEF    \
     787                 :            :     {"print", _PyCFunction_CAST(builtin_print), METH_FASTCALL|METH_KEYWORDS, builtin_print__doc__},
     788                 :            : 
     789                 :            : static PyObject *
     790                 :            : builtin_print_impl(PyObject *module, PyObject *args, PyObject *sep,
     791                 :            :                    PyObject *end, PyObject *file, int flush);
     792                 :            : 
     793                 :            : static PyObject *
     794                 :      93435 : builtin_print(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
     795                 :            : {
     796                 :      93435 :     PyObject *return_value = NULL;
     797                 :            :     static const char * const _keywords[] = {"sep", "end", "file", "flush", NULL};
     798                 :            :     static _PyArg_Parser _parser = {NULL, _keywords, "print", 0};
     799                 :            :     PyObject *argsbuf[5];
     800         [ +  + ]:      93435 :     Py_ssize_t noptargs = 0 + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
     801                 :      93435 :     PyObject *__clinic_args = NULL;
     802                 :      93435 :     PyObject *sep = Py_None;
     803                 :      93435 :     PyObject *end = Py_None;
     804                 :      93435 :     PyObject *file = Py_None;
     805                 :      93435 :     int flush = 0;
     806                 :            : 
     807                 :      93435 :     args = _PyArg_UnpackKeywordsWithVararg(args, nargs, NULL, kwnames, &_parser, 0, 0, 0, 0, argsbuf);
     808         [ +  + ]:      93435 :     if (!args) {
     809                 :          1 :         goto exit;
     810                 :            :     }
     811                 :      93434 :     __clinic_args = args[0];
     812         [ +  + ]:      93434 :     if (!noptargs) {
     813                 :      29272 :         goto skip_optional_kwonly;
     814                 :            :     }
     815         [ +  + ]:      64162 :     if (args[1]) {
     816                 :         78 :         sep = args[1];
     817         [ +  + ]:         78 :         if (!--noptargs) {
     818                 :          7 :             goto skip_optional_kwonly;
     819                 :            :         }
     820                 :            :     }
     821         [ +  + ]:      64155 :     if (args[2]) {
     822                 :      21244 :         end = args[2];
     823         [ +  + ]:      21244 :         if (!--noptargs) {
     824                 :       4691 :             goto skip_optional_kwonly;
     825                 :            :         }
     826                 :            :     }
     827         [ +  + ]:      59464 :     if (args[3]) {
     828                 :      58351 :         file = args[3];
     829         [ +  + ]:      58351 :         if (!--noptargs) {
     830                 :      58335 :             goto skip_optional_kwonly;
     831                 :            :         }
     832                 :            :     }
     833                 :       1129 :     flush = PyObject_IsTrue(args[4]);
     834         [ -  + ]:       1129 :     if (flush < 0) {
     835                 :          0 :         goto exit;
     836                 :            :     }
     837                 :       1129 : skip_optional_kwonly:
     838                 :      93434 :     return_value = builtin_print_impl(module, __clinic_args, sep, end, file, flush);
     839                 :            : 
     840                 :      93435 : exit:
     841                 :      93435 :     Py_XDECREF(__clinic_args);
     842                 :      93435 :     return return_value;
     843                 :            : }
     844                 :            : 
     845                 :            : PyDoc_STRVAR(builtin_input__doc__,
     846                 :            : "input($module, prompt=None, /)\n"
     847                 :            : "--\n"
     848                 :            : "\n"
     849                 :            : "Read a string from standard input.  The trailing newline is stripped.\n"
     850                 :            : "\n"
     851                 :            : "The prompt string, if given, is printed to standard output without a\n"
     852                 :            : "trailing newline before reading input.\n"
     853                 :            : "\n"
     854                 :            : "If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError.\n"
     855                 :            : "On *nix systems, readline is used if available.");
     856                 :            : 
     857                 :            : #define BUILTIN_INPUT_METHODDEF    \
     858                 :            :     {"input", _PyCFunction_CAST(builtin_input), METH_FASTCALL, builtin_input__doc__},
     859                 :            : 
     860                 :            : static PyObject *
     861                 :            : builtin_input_impl(PyObject *module, PyObject *prompt);
     862                 :            : 
     863                 :            : static PyObject *
     864                 :        323 : builtin_input(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
     865                 :            : {
     866                 :        323 :     PyObject *return_value = NULL;
     867                 :        323 :     PyObject *prompt = NULL;
     868                 :            : 
     869   [ +  -  +  +  :        323 :     if (!_PyArg_CheckPositional("input", nargs, 0, 1)) {
                   +  - ]
     870                 :          2 :         goto exit;
     871                 :            :     }
     872         [ +  + ]:        321 :     if (nargs < 1) {
     873                 :         12 :         goto skip_optional;
     874                 :            :     }
     875                 :        309 :     prompt = args[0];
     876                 :        321 : skip_optional:
     877                 :        321 :     return_value = builtin_input_impl(module, prompt);
     878                 :            : 
     879                 :        323 : exit:
     880                 :        323 :     return return_value;
     881                 :            : }
     882                 :            : 
     883                 :            : PyDoc_STRVAR(builtin_repr__doc__,
     884                 :            : "repr($module, obj, /)\n"
     885                 :            : "--\n"
     886                 :            : "\n"
     887                 :            : "Return the canonical string representation of the object.\n"
     888                 :            : "\n"
     889                 :            : "For many object types, including most builtins, eval(repr(obj)) == obj.");
     890                 :            : 
     891                 :            : #define BUILTIN_REPR_METHODDEF    \
     892                 :            :     {"repr", (PyCFunction)builtin_repr, METH_O, builtin_repr__doc__},
     893                 :            : 
     894                 :            : PyDoc_STRVAR(builtin_round__doc__,
     895                 :            : "round($module, /, number, ndigits=None)\n"
     896                 :            : "--\n"
     897                 :            : "\n"
     898                 :            : "Round a number to a given precision in decimal digits.\n"
     899                 :            : "\n"
     900                 :            : "The return value is an integer if ndigits is omitted or None.  Otherwise\n"
     901                 :            : "the return value has the same type as the number.  ndigits may be negative.");
     902                 :            : 
     903                 :            : #define BUILTIN_ROUND_METHODDEF    \
     904                 :            :     {"round", _PyCFunction_CAST(builtin_round), METH_FASTCALL|METH_KEYWORDS, builtin_round__doc__},
     905                 :            : 
     906                 :            : static PyObject *
     907                 :            : builtin_round_impl(PyObject *module, PyObject *number, PyObject *ndigits);
     908                 :            : 
     909                 :            : static PyObject *
     910                 :    1303749 : builtin_round(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
     911                 :            : {
     912                 :    1303749 :     PyObject *return_value = NULL;
     913                 :            :     static const char * const _keywords[] = {"number", "ndigits", NULL};
     914                 :            :     static _PyArg_Parser _parser = {NULL, _keywords, "round", 0};
     915                 :            :     PyObject *argsbuf[2];
     916         [ +  + ]:    1303749 :     Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
     917                 :            :     PyObject *number;
     918                 :    1303749 :     PyObject *ndigits = Py_None;
     919                 :            : 
     920   [ +  +  +  +  :    1303749 :     args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 2, 0, argsbuf);
             +  +  -  + ]
     921         [ +  + ]:    1303749 :     if (!args) {
     922                 :          2 :         goto exit;
     923                 :            :     }
     924                 :    1303747 :     number = args[0];
     925         [ +  + ]:    1303747 :     if (!noptargs) {
     926                 :      84921 :         goto skip_optional_pos;
     927                 :            :     }
     928                 :    1218826 :     ndigits = args[1];
     929                 :    1303747 : skip_optional_pos:
     930                 :    1303747 :     return_value = builtin_round_impl(module, number, ndigits);
     931                 :            : 
     932                 :    1303749 : exit:
     933                 :    1303749 :     return return_value;
     934                 :            : }
     935                 :            : 
     936                 :            : PyDoc_STRVAR(builtin_sum__doc__,
     937                 :            : "sum($module, iterable, /, start=0)\n"
     938                 :            : "--\n"
     939                 :            : "\n"
     940                 :            : "Return the sum of a \'start\' value (default: 0) plus an iterable of numbers\n"
     941                 :            : "\n"
     942                 :            : "When the iterable is empty, return the start value.\n"
     943                 :            : "This function is intended specifically for use with numeric values and may\n"
     944                 :            : "reject non-numeric types.");
     945                 :            : 
     946                 :            : #define BUILTIN_SUM_METHODDEF    \
     947                 :            :     {"sum", _PyCFunction_CAST(builtin_sum), METH_FASTCALL|METH_KEYWORDS, builtin_sum__doc__},
     948                 :            : 
     949                 :            : static PyObject *
     950                 :            : builtin_sum_impl(PyObject *module, PyObject *iterable, PyObject *start);
     951                 :            : 
     952                 :            : static PyObject *
     953                 :     424459 : builtin_sum(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
     954                 :            : {
     955                 :     424459 :     PyObject *return_value = NULL;
     956                 :            :     static const char * const _keywords[] = {"", "start", NULL};
     957                 :            :     static _PyArg_Parser _parser = {NULL, _keywords, "sum", 0};
     958                 :            :     PyObject *argsbuf[2];
     959         [ +  + ]:     424459 :     Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
     960                 :            :     PyObject *iterable;
     961                 :     424459 :     PyObject *start = NULL;
     962                 :            : 
     963   [ +  +  +  +  :     424459 :     args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 2, 0, argsbuf);
             +  -  -  + ]
     964         [ +  + ]:     424459 :     if (!args) {
     965                 :          1 :         goto exit;
     966                 :            :     }
     967                 :     424458 :     iterable = args[0];
     968         [ +  + ]:     424458 :     if (!noptargs) {
     969                 :     366383 :         goto skip_optional_pos;
     970                 :            :     }
     971                 :      58075 :     start = args[1];
     972                 :     424458 : skip_optional_pos:
     973                 :     424458 :     return_value = builtin_sum_impl(module, iterable, start);
     974                 :            : 
     975                 :     424459 : exit:
     976                 :     424459 :     return return_value;
     977                 :            : }
     978                 :            : 
     979                 :            : PyDoc_STRVAR(builtin_isinstance__doc__,
     980                 :            : "isinstance($module, obj, class_or_tuple, /)\n"
     981                 :            : "--\n"
     982                 :            : "\n"
     983                 :            : "Return whether an object is an instance of a class or of a subclass thereof.\n"
     984                 :            : "\n"
     985                 :            : "A tuple, as in ``isinstance(x, (A, B, ...))``, may be given as the target to\n"
     986                 :            : "check against. This is equivalent to ``isinstance(x, A) or isinstance(x, B)\n"
     987                 :            : "or ...`` etc.");
     988                 :            : 
     989                 :            : #define BUILTIN_ISINSTANCE_METHODDEF    \
     990                 :            :     {"isinstance", _PyCFunction_CAST(builtin_isinstance), METH_FASTCALL, builtin_isinstance__doc__},
     991                 :            : 
     992                 :            : static PyObject *
     993                 :            : builtin_isinstance_impl(PyObject *module, PyObject *obj,
     994                 :            :                         PyObject *class_or_tuple);
     995                 :            : 
     996                 :            : static PyObject *
     997                 :     848719 : builtin_isinstance(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
     998                 :            : {
     999                 :     848719 :     PyObject *return_value = NULL;
    1000                 :            :     PyObject *obj;
    1001                 :            :     PyObject *class_or_tuple;
    1002                 :            : 
    1003   [ +  +  -  +  :     848719 :     if (!_PyArg_CheckPositional("isinstance", nargs, 2, 2)) {
                   +  - ]
    1004                 :          1 :         goto exit;
    1005                 :            :     }
    1006                 :     848718 :     obj = args[0];
    1007                 :     848718 :     class_or_tuple = args[1];
    1008                 :     848718 :     return_value = builtin_isinstance_impl(module, obj, class_or_tuple);
    1009                 :            : 
    1010                 :     848719 : exit:
    1011                 :     848719 :     return return_value;
    1012                 :            : }
    1013                 :            : 
    1014                 :            : PyDoc_STRVAR(builtin_issubclass__doc__,
    1015                 :            : "issubclass($module, cls, class_or_tuple, /)\n"
    1016                 :            : "--\n"
    1017                 :            : "\n"
    1018                 :            : "Return whether \'cls\' is derived from another class or is the same class.\n"
    1019                 :            : "\n"
    1020                 :            : "A tuple, as in ``issubclass(x, (A, B, ...))``, may be given as the target to\n"
    1021                 :            : "check against. This is equivalent to ``issubclass(x, A) or issubclass(x, B)\n"
    1022                 :            : "or ...``.");
    1023                 :            : 
    1024                 :            : #define BUILTIN_ISSUBCLASS_METHODDEF    \
    1025                 :            :     {"issubclass", _PyCFunction_CAST(builtin_issubclass), METH_FASTCALL, builtin_issubclass__doc__},
    1026                 :            : 
    1027                 :            : static PyObject *
    1028                 :            : builtin_issubclass_impl(PyObject *module, PyObject *cls,
    1029                 :            :                         PyObject *class_or_tuple);
    1030                 :            : 
    1031                 :            : static PyObject *
    1032                 :    1048803 : builtin_issubclass(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
    1033                 :            : {
    1034                 :    1048803 :     PyObject *return_value = NULL;
    1035                 :            :     PyObject *cls;
    1036                 :            :     PyObject *class_or_tuple;
    1037                 :            : 
    1038   [ +  +  -  +  :    1048803 :     if (!_PyArg_CheckPositional("issubclass", nargs, 2, 2)) {
                   +  - ]
    1039                 :          1 :         goto exit;
    1040                 :            :     }
    1041                 :    1048802 :     cls = args[0];
    1042                 :    1048802 :     class_or_tuple = args[1];
    1043                 :    1048802 :     return_value = builtin_issubclass_impl(module, cls, class_or_tuple);
    1044                 :            : 
    1045                 :    1048803 : exit:
    1046                 :    1048803 :     return return_value;
    1047                 :            : }
    1048                 :            : /*[clinic end generated code: output=a2c5c53e8aead7c3 input=a9049054013a1b77]*/

Generated by: LCOV version 1.14