LCOV - code coverage report
Current view: top level - Objects/clinic - odictobject.c.h (source / functions) Hit Total Coverage
Test: CPython 3.12 LCOV report [commit acb105a7c1f] Lines: 71 78 91.0 %
Date: 2022-07-20 13:12:14 Functions: 5 5 100.0 %
Branches: 53 74 71.6 %

           Branch data     Line data    Source code
       1                 :            : /*[clinic input]
       2                 :            : preserve
       3                 :            : [clinic start generated code]*/
       4                 :            : 
       5                 :            : PyDoc_STRVAR(OrderedDict_fromkeys__doc__,
       6                 :            : "fromkeys($type, /, iterable, value=None)\n"
       7                 :            : "--\n"
       8                 :            : "\n"
       9                 :            : "Create a new ordered dictionary with keys from iterable and values set to value.");
      10                 :            : 
      11                 :            : #define ORDEREDDICT_FROMKEYS_METHODDEF    \
      12                 :            :     {"fromkeys", _PyCFunction_CAST(OrderedDict_fromkeys), METH_FASTCALL|METH_KEYWORDS|METH_CLASS, OrderedDict_fromkeys__doc__},
      13                 :            : 
      14                 :            : static PyObject *
      15                 :            : OrderedDict_fromkeys_impl(PyTypeObject *type, PyObject *seq, PyObject *value);
      16                 :            : 
      17                 :            : static PyObject *
      18                 :         50 : OrderedDict_fromkeys(PyTypeObject *type, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
      19                 :            : {
      20                 :         50 :     PyObject *return_value = NULL;
      21                 :            :     static const char * const _keywords[] = {"iterable", "value", NULL};
      22                 :            :     static _PyArg_Parser _parser = {NULL, _keywords, "fromkeys", 0};
      23                 :            :     PyObject *argsbuf[2];
      24         [ +  + ]:         50 :     Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
      25                 :            :     PyObject *seq;
      26                 :         50 :     PyObject *value = Py_None;
      27                 :            : 
      28   [ +  +  +  -  :         50 :     args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 2, 0, argsbuf);
             +  -  -  + ]
      29         [ -  + ]:         50 :     if (!args) {
      30                 :          0 :         goto exit;
      31                 :            :     }
      32                 :         50 :     seq = args[0];
      33         [ +  + ]:         50 :     if (!noptargs) {
      34                 :         46 :         goto skip_optional_pos;
      35                 :            :     }
      36                 :          4 :     value = args[1];
      37                 :         50 : skip_optional_pos:
      38                 :         50 :     return_value = OrderedDict_fromkeys_impl(type, seq, value);
      39                 :            : 
      40                 :         50 : exit:
      41                 :         50 :     return return_value;
      42                 :            : }
      43                 :            : 
      44                 :            : PyDoc_STRVAR(OrderedDict_setdefault__doc__,
      45                 :            : "setdefault($self, /, key, default=None)\n"
      46                 :            : "--\n"
      47                 :            : "\n"
      48                 :            : "Insert key with a value of default if key is not in the dictionary.\n"
      49                 :            : "\n"
      50                 :            : "Return the value for key if key is in the dictionary, else default.");
      51                 :            : 
      52                 :            : #define ORDEREDDICT_SETDEFAULT_METHODDEF    \
      53                 :            :     {"setdefault", _PyCFunction_CAST(OrderedDict_setdefault), METH_FASTCALL|METH_KEYWORDS, OrderedDict_setdefault__doc__},
      54                 :            : 
      55                 :            : static PyObject *
      56                 :            : OrderedDict_setdefault_impl(PyODictObject *self, PyObject *key,
      57                 :            :                             PyObject *default_value);
      58                 :            : 
      59                 :            : static PyObject *
      60                 :         14 : OrderedDict_setdefault(PyODictObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
      61                 :            : {
      62                 :         14 :     PyObject *return_value = NULL;
      63                 :            :     static const char * const _keywords[] = {"key", "default", NULL};
      64                 :            :     static _PyArg_Parser _parser = {NULL, _keywords, "setdefault", 0};
      65                 :            :     PyObject *argsbuf[2];
      66         [ +  + ]:         14 :     Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
      67                 :            :     PyObject *key;
      68                 :         14 :     PyObject *default_value = Py_None;
      69                 :            : 
      70   [ +  +  +  +  :         14 :     args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 2, 0, argsbuf);
             +  -  -  + ]
      71         [ +  + ]:         14 :     if (!args) {
      72                 :          2 :         goto exit;
      73                 :            :     }
      74                 :         12 :     key = args[0];
      75         [ -  + ]:         12 :     if (!noptargs) {
      76                 :          0 :         goto skip_optional_pos;
      77                 :            :     }
      78                 :         12 :     default_value = args[1];
      79                 :         12 : skip_optional_pos:
      80                 :         12 :     return_value = OrderedDict_setdefault_impl(self, key, default_value);
      81                 :            : 
      82                 :         14 : exit:
      83                 :         14 :     return return_value;
      84                 :            : }
      85                 :            : 
      86                 :            : PyDoc_STRVAR(OrderedDict_pop__doc__,
      87                 :            : "pop($self, /, key, default=<unrepresentable>)\n"
      88                 :            : "--\n"
      89                 :            : "\n"
      90                 :            : "od.pop(key[,default]) -> v, remove specified key and return the corresponding value.\n"
      91                 :            : "\n"
      92                 :            : "If the key is not found, return the default if given; otherwise,\n"
      93                 :            : "raise a KeyError.");
      94                 :            : 
      95                 :            : #define ORDEREDDICT_POP_METHODDEF    \
      96                 :            :     {"pop", _PyCFunction_CAST(OrderedDict_pop), METH_FASTCALL|METH_KEYWORDS, OrderedDict_pop__doc__},
      97                 :            : 
      98                 :            : static PyObject *
      99                 :            : OrderedDict_pop_impl(PyODictObject *self, PyObject *key,
     100                 :            :                      PyObject *default_value);
     101                 :            : 
     102                 :            : static PyObject *
     103                 :       1904 : OrderedDict_pop(PyODictObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
     104                 :            : {
     105                 :       1904 :     PyObject *return_value = NULL;
     106                 :            :     static const char * const _keywords[] = {"key", "default", NULL};
     107                 :            :     static _PyArg_Parser _parser = {NULL, _keywords, "pop", 0};
     108                 :            :     PyObject *argsbuf[2];
     109         [ +  + ]:       1904 :     Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
     110                 :            :     PyObject *key;
     111                 :       1904 :     PyObject *default_value = NULL;
     112                 :            : 
     113   [ +  +  +  -  :       1904 :     args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 2, 0, argsbuf);
             +  -  -  + ]
     114         [ -  + ]:       1904 :     if (!args) {
     115                 :          0 :         goto exit;
     116                 :            :     }
     117                 :       1904 :     key = args[0];
     118         [ +  + ]:       1904 :     if (!noptargs) {
     119                 :       1143 :         goto skip_optional_pos;
     120                 :            :     }
     121                 :        761 :     default_value = args[1];
     122                 :       1904 : skip_optional_pos:
     123                 :       1904 :     return_value = OrderedDict_pop_impl(self, key, default_value);
     124                 :            : 
     125                 :       1904 : exit:
     126                 :       1904 :     return return_value;
     127                 :            : }
     128                 :            : 
     129                 :            : PyDoc_STRVAR(OrderedDict_popitem__doc__,
     130                 :            : "popitem($self, /, last=True)\n"
     131                 :            : "--\n"
     132                 :            : "\n"
     133                 :            : "Remove and return a (key, value) pair from the dictionary.\n"
     134                 :            : "\n"
     135                 :            : "Pairs are returned in LIFO order if last is true or FIFO order if false.");
     136                 :            : 
     137                 :            : #define ORDEREDDICT_POPITEM_METHODDEF    \
     138                 :            :     {"popitem", _PyCFunction_CAST(OrderedDict_popitem), METH_FASTCALL|METH_KEYWORDS, OrderedDict_popitem__doc__},
     139                 :            : 
     140                 :            : static PyObject *
     141                 :            : OrderedDict_popitem_impl(PyODictObject *self, int last);
     142                 :            : 
     143                 :            : static PyObject *
     144                 :        589 : OrderedDict_popitem(PyODictObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
     145                 :            : {
     146                 :        589 :     PyObject *return_value = NULL;
     147                 :            :     static const char * const _keywords[] = {"last", NULL};
     148                 :            :     static _PyArg_Parser _parser = {NULL, _keywords, "popitem", 0};
     149                 :            :     PyObject *argsbuf[1];
     150         [ +  + ]:        589 :     Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
     151                 :        589 :     int last = 1;
     152                 :            : 
     153   [ +  +  +  -  :        589 :     args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 1, 0, argsbuf);
             +  -  -  + ]
     154         [ -  + ]:        589 :     if (!args) {
     155                 :          0 :         goto exit;
     156                 :            :     }
     157         [ +  + ]:        589 :     if (!noptargs) {
     158                 :         22 :         goto skip_optional_pos;
     159                 :            :     }
     160                 :        567 :     last = PyObject_IsTrue(args[0]);
     161         [ -  + ]:        567 :     if (last < 0) {
     162                 :          0 :         goto exit;
     163                 :            :     }
     164                 :        567 : skip_optional_pos:
     165                 :        589 :     return_value = OrderedDict_popitem_impl(self, last);
     166                 :            : 
     167                 :        589 : exit:
     168                 :        589 :     return return_value;
     169                 :            : }
     170                 :            : 
     171                 :            : PyDoc_STRVAR(OrderedDict_move_to_end__doc__,
     172                 :            : "move_to_end($self, /, key, last=True)\n"
     173                 :            : "--\n"
     174                 :            : "\n"
     175                 :            : "Move an existing element to the end (or beginning if last is false).\n"
     176                 :            : "\n"
     177                 :            : "Raise KeyError if the element does not exist.");
     178                 :            : 
     179                 :            : #define ORDEREDDICT_MOVE_TO_END_METHODDEF    \
     180                 :            :     {"move_to_end", _PyCFunction_CAST(OrderedDict_move_to_end), METH_FASTCALL|METH_KEYWORDS, OrderedDict_move_to_end__doc__},
     181                 :            : 
     182                 :            : static PyObject *
     183                 :            : OrderedDict_move_to_end_impl(PyODictObject *self, PyObject *key, int last);
     184                 :            : 
     185                 :            : static PyObject *
     186                 :         78 : OrderedDict_move_to_end(PyODictObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
     187                 :            : {
     188                 :         78 :     PyObject *return_value = NULL;
     189                 :            :     static const char * const _keywords[] = {"key", "last", NULL};
     190                 :            :     static _PyArg_Parser _parser = {NULL, _keywords, "move_to_end", 0};
     191                 :            :     PyObject *argsbuf[2];
     192         [ +  + ]:         78 :     Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
     193                 :            :     PyObject *key;
     194                 :         78 :     int last = 1;
     195                 :            : 
     196   [ +  +  +  -  :         78 :     args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 2, 0, argsbuf);
             +  -  -  + ]
     197         [ -  + ]:         78 :     if (!args) {
     198                 :          0 :         goto exit;
     199                 :            :     }
     200                 :         78 :     key = args[0];
     201         [ +  + ]:         78 :     if (!noptargs) {
     202                 :         66 :         goto skip_optional_pos;
     203                 :            :     }
     204                 :         12 :     last = PyObject_IsTrue(args[1]);
     205         [ -  + ]:         12 :     if (last < 0) {
     206                 :          0 :         goto exit;
     207                 :            :     }
     208                 :         12 : skip_optional_pos:
     209                 :         78 :     return_value = OrderedDict_move_to_end_impl(self, key, last);
     210                 :            : 
     211                 :         78 : exit:
     212                 :         78 :     return return_value;
     213                 :            : }
     214                 :            : /*[clinic end generated code: output=4182a5dab66963d0 input=a9049054013a1b77]*/

Generated by: LCOV version 1.14