LCOV - code coverage report
Current view: top level - Python/clinic - _warnings.c.h (source / functions) Hit Total Coverage
Test: CPython 3.12 LCOV report [commit acb105a7c1f] Lines: 30 32 93.8 %
Date: 2022-07-20 13:12:14 Functions: 1 1 100.0 %
Branches: 20 28 71.4 %

           Branch data     Line data    Source code
       1                 :            : /*[clinic input]
       2                 :            : preserve
       3                 :            : [clinic start generated code]*/
       4                 :            : 
       5                 :            : PyDoc_STRVAR(warnings_warn__doc__,
       6                 :            : "warn($module, /, message, category=None, stacklevel=1, source=None)\n"
       7                 :            : "--\n"
       8                 :            : "\n"
       9                 :            : "Issue a warning, or maybe ignore it or raise an exception.");
      10                 :            : 
      11                 :            : #define WARNINGS_WARN_METHODDEF    \
      12                 :            :     {"warn", _PyCFunction_CAST(warnings_warn), METH_FASTCALL|METH_KEYWORDS, warnings_warn__doc__},
      13                 :            : 
      14                 :            : static PyObject *
      15                 :            : warnings_warn_impl(PyObject *module, PyObject *message, PyObject *category,
      16                 :            :                    Py_ssize_t stacklevel, PyObject *source);
      17                 :            : 
      18                 :            : static PyObject *
      19                 :       2236 : warnings_warn(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
      20                 :            : {
      21                 :       2236 :     PyObject *return_value = NULL;
      22                 :            :     static const char * const _keywords[] = {"message", "category", "stacklevel", "source", NULL};
      23                 :            :     static _PyArg_Parser _parser = {NULL, _keywords, "warn", 0};
      24                 :            :     PyObject *argsbuf[4];
      25         [ +  + ]:       2236 :     Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
      26                 :            :     PyObject *message;
      27                 :       2236 :     PyObject *category = Py_None;
      28                 :       2236 :     Py_ssize_t stacklevel = 1;
      29                 :       2236 :     PyObject *source = Py_None;
      30                 :            : 
      31   [ +  +  +  -  :       2236 :     args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 4, 0, argsbuf);
             +  -  -  + ]
      32         [ -  + ]:       2236 :     if (!args) {
      33                 :          0 :         goto exit;
      34                 :            :     }
      35                 :       2236 :     message = args[0];
      36         [ +  + ]:       2236 :     if (!noptargs) {
      37                 :        119 :         goto skip_optional_pos;
      38                 :            :     }
      39         [ +  + ]:       2117 :     if (args[1]) {
      40                 :       1273 :         category = args[1];
      41         [ +  + ]:       1273 :         if (!--noptargs) {
      42                 :        686 :             goto skip_optional_pos;
      43                 :            :         }
      44                 :            :     }
      45         [ +  + ]:       1431 :     if (args[2]) {
      46                 :            :         {
      47                 :       1412 :             Py_ssize_t ival = -1;
      48                 :       1412 :             PyObject *iobj = _PyNumber_Index(args[2]);
      49         [ +  - ]:       1412 :             if (iobj != NULL) {
      50                 :       1412 :                 ival = PyLong_AsSsize_t(iobj);
      51                 :       1412 :                 Py_DECREF(iobj);
      52                 :            :             }
      53   [ -  +  -  - ]:       1412 :             if (ival == -1 && PyErr_Occurred()) {
      54                 :          0 :                 goto exit;
      55                 :            :             }
      56                 :       1412 :             stacklevel = ival;
      57                 :            :         }
      58         [ +  + ]:       1412 :         if (!--noptargs) {
      59                 :       1357 :             goto skip_optional_pos;
      60                 :            :         }
      61                 :            :     }
      62                 :         74 :     source = args[3];
      63                 :       2236 : skip_optional_pos:
      64                 :       2236 :     return_value = warnings_warn_impl(module, message, category, stacklevel, source);
      65                 :            : 
      66                 :       2236 : exit:
      67                 :       2236 :     return return_value;
      68                 :            : }
      69                 :            : /*[clinic end generated code: output=0435c68611fa2fe9 input=a9049054013a1b77]*/

Generated by: LCOV version 1.14