Coverage Report

Created: 2025-07-04 06:49

/src/cpython/Objects/clinic/dictobject.c.h
Line
Count
Source (jump to first uncovered line)
1
/*[clinic input]
2
preserve
3
[clinic start generated code]*/
4
5
#include "pycore_critical_section.h"// Py_BEGIN_CRITICAL_SECTION()
6
#include "pycore_modsupport.h"    // _PyArg_CheckPositional()
7
8
PyDoc_STRVAR(dict_fromkeys__doc__,
9
"fromkeys($type, iterable, value=None, /)\n"
10
"--\n"
11
"\n"
12
"Create a new dictionary with keys from iterable and values set to value.");
13
14
#define DICT_FROMKEYS_METHODDEF    \
15
    {"fromkeys", _PyCFunction_CAST(dict_fromkeys), METH_FASTCALL|METH_CLASS, dict_fromkeys__doc__},
16
17
static PyObject *
18
dict_fromkeys_impl(PyTypeObject *type, PyObject *iterable, PyObject *value);
19
20
static PyObject *
21
dict_fromkeys(PyObject *type, PyObject *const *args, Py_ssize_t nargs)
22
285
{
23
285
    PyObject *return_value = NULL;
24
285
    PyObject *iterable;
25
285
    PyObject *value = Py_None;
26
27
285
    if (!_PyArg_CheckPositional("fromkeys", nargs, 1, 2)) {
28
0
        goto exit;
29
0
    }
30
285
    iterable = args[0];
31
285
    if (nargs < 2) {
32
285
        goto skip_optional;
33
285
    }
34
0
    value = args[1];
35
285
skip_optional:
36
285
    return_value = dict_fromkeys_impl((PyTypeObject *)type, iterable, value);
37
38
285
exit:
39
285
    return return_value;
40
285
}
41
42
PyDoc_STRVAR(dict_copy__doc__,
43
"copy($self, /)\n"
44
"--\n"
45
"\n"
46
"Return a shallow copy of the dict.");
47
48
#define DICT_COPY_METHODDEF    \
49
    {"copy", (PyCFunction)dict_copy, METH_NOARGS, dict_copy__doc__},
50
51
static PyObject *
52
dict_copy_impl(PyDictObject *self);
53
54
static PyObject *
55
dict_copy(PyObject *self, PyObject *Py_UNUSED(ignored))
56
0
{
57
0
    return dict_copy_impl((PyDictObject *)self);
58
0
}
59
60
PyDoc_STRVAR(dict___contains____doc__,
61
"__contains__($self, key, /)\n"
62
"--\n"
63
"\n"
64
"True if the dictionary has the specified key, else False.");
65
66
#define DICT___CONTAINS___METHODDEF    \
67
    {"__contains__", (PyCFunction)dict___contains__, METH_O|METH_COEXIST, dict___contains____doc__},
68
69
static PyObject *
70
dict___contains___impl(PyDictObject *self, PyObject *key);
71
72
static PyObject *
73
dict___contains__(PyObject *self, PyObject *key)
74
38.9M
{
75
38.9M
    PyObject *return_value = NULL;
76
77
38.9M
    return_value = dict___contains___impl((PyDictObject *)self, key);
78
79
38.9M
    return return_value;
80
38.9M
}
81
82
PyDoc_STRVAR(dict_get__doc__,
83
"get($self, key, default=None, /)\n"
84
"--\n"
85
"\n"
86
"Return the value for key if key is in the dictionary, else default.");
87
88
#define DICT_GET_METHODDEF    \
89
    {"get", _PyCFunction_CAST(dict_get), METH_FASTCALL, dict_get__doc__},
90
91
static PyObject *
92
dict_get_impl(PyDictObject *self, PyObject *key, PyObject *default_value);
93
94
static PyObject *
95
dict_get(PyObject *self, PyObject *const *args, Py_ssize_t nargs)
96
357M
{
97
357M
    PyObject *return_value = NULL;
98
357M
    PyObject *key;
99
357M
    PyObject *default_value = Py_None;
100
101
357M
    if (!_PyArg_CheckPositional("get", nargs, 1, 2)) {
102
0
        goto exit;
103
0
    }
104
357M
    key = args[0];
105
357M
    if (nargs < 2) {
106
699k
        goto skip_optional;
107
699k
    }
108
356M
    default_value = args[1];
109
357M
skip_optional:
110
357M
    return_value = dict_get_impl((PyDictObject *)self, key, default_value);
111
112
357M
exit:
113
357M
    return return_value;
114
357M
}
115
116
PyDoc_STRVAR(dict_setdefault__doc__,
117
"setdefault($self, key, default=None, /)\n"
118
"--\n"
119
"\n"
120
"Insert key with a value of default if key is not in the dictionary.\n"
121
"\n"
122
"Return the value for key if key is in the dictionary, else default.");
123
124
#define DICT_SETDEFAULT_METHODDEF    \
125
    {"setdefault", _PyCFunction_CAST(dict_setdefault), METH_FASTCALL, dict_setdefault__doc__},
126
127
static PyObject *
128
dict_setdefault_impl(PyDictObject *self, PyObject *key,
129
                     PyObject *default_value);
130
131
static PyObject *
132
dict_setdefault(PyObject *self, PyObject *const *args, Py_ssize_t nargs)
133
87.0M
{
134
87.0M
    PyObject *return_value = NULL;
135
87.0M
    PyObject *key;
136
87.0M
    PyObject *default_value = Py_None;
137
138
87.0M
    if (!_PyArg_CheckPositional("setdefault", nargs, 1, 2)) {
139
0
        goto exit;
140
0
    }
141
87.0M
    key = args[0];
142
87.0M
    if (nargs < 2) {
143
0
        goto skip_optional;
144
0
    }
145
87.0M
    default_value = args[1];
146
87.0M
skip_optional:
147
87.0M
    Py_BEGIN_CRITICAL_SECTION(self);
148
87.0M
    return_value = dict_setdefault_impl((PyDictObject *)self, key, default_value);
149
87.0M
    Py_END_CRITICAL_SECTION();
150
151
87.0M
exit:
152
87.0M
    return return_value;
153
87.0M
}
154
155
PyDoc_STRVAR(dict_clear__doc__,
156
"clear($self, /)\n"
157
"--\n"
158
"\n"
159
"Remove all items from the dict.");
160
161
#define DICT_CLEAR_METHODDEF    \
162
    {"clear", (PyCFunction)dict_clear, METH_NOARGS, dict_clear__doc__},
163
164
static PyObject *
165
dict_clear_impl(PyDictObject *self);
166
167
static PyObject *
168
dict_clear(PyObject *self, PyObject *Py_UNUSED(ignored))
169
7.57k
{
170
7.57k
    return dict_clear_impl((PyDictObject *)self);
171
7.57k
}
172
173
PyDoc_STRVAR(dict_pop__doc__,
174
"pop($self, key, default=<unrepresentable>, /)\n"
175
"--\n"
176
"\n"
177
"D.pop(k[,d]) -> v, remove specified key and return the corresponding value.\n"
178
"\n"
179
"If the key is not found, return the default if given; otherwise,\n"
180
"raise a KeyError.");
181
182
#define DICT_POP_METHODDEF    \
183
    {"pop", _PyCFunction_CAST(dict_pop), METH_FASTCALL, dict_pop__doc__},
184
185
static PyObject *
186
dict_pop_impl(PyDictObject *self, PyObject *key, PyObject *default_value);
187
188
static PyObject *
189
dict_pop(PyObject *self, PyObject *const *args, Py_ssize_t nargs)
190
240k
{
191
240k
    PyObject *return_value = NULL;
192
240k
    PyObject *key;
193
240k
    PyObject *default_value = NULL;
194
195
240k
    if (!_PyArg_CheckPositional("pop", nargs, 1, 2)) {
196
0
        goto exit;
197
0
    }
198
240k
    key = args[0];
199
240k
    if (nargs < 2) {
200
240k
        goto skip_optional;
201
240k
    }
202
364
    default_value = args[1];
203
240k
skip_optional:
204
240k
    return_value = dict_pop_impl((PyDictObject *)self, key, default_value);
205
206
240k
exit:
207
240k
    return return_value;
208
240k
}
209
210
PyDoc_STRVAR(dict_popitem__doc__,
211
"popitem($self, /)\n"
212
"--\n"
213
"\n"
214
"Remove and return a (key, value) pair as a 2-tuple.\n"
215
"\n"
216
"Pairs are returned in LIFO (last-in, first-out) order.\n"
217
"Raises KeyError if the dict is empty.");
218
219
#define DICT_POPITEM_METHODDEF    \
220
    {"popitem", (PyCFunction)dict_popitem, METH_NOARGS, dict_popitem__doc__},
221
222
static PyObject *
223
dict_popitem_impl(PyDictObject *self);
224
225
static PyObject *
226
dict_popitem(PyObject *self, PyObject *Py_UNUSED(ignored))
227
0
{
228
0
    PyObject *return_value = NULL;
229
230
0
    Py_BEGIN_CRITICAL_SECTION(self);
231
0
    return_value = dict_popitem_impl((PyDictObject *)self);
232
0
    Py_END_CRITICAL_SECTION();
233
234
0
    return return_value;
235
0
}
236
237
PyDoc_STRVAR(dict___sizeof____doc__,
238
"__sizeof__($self, /)\n"
239
"--\n"
240
"\n"
241
"Return the size of the dict in memory, in bytes.");
242
243
#define DICT___SIZEOF___METHODDEF    \
244
    {"__sizeof__", (PyCFunction)dict___sizeof__, METH_NOARGS, dict___sizeof____doc__},
245
246
static PyObject *
247
dict___sizeof___impl(PyDictObject *self);
248
249
static PyObject *
250
dict___sizeof__(PyObject *self, PyObject *Py_UNUSED(ignored))
251
0
{
252
0
    return dict___sizeof___impl((PyDictObject *)self);
253
0
}
254
255
PyDoc_STRVAR(dict___reversed____doc__,
256
"__reversed__($self, /)\n"
257
"--\n"
258
"\n"
259
"Return a reverse iterator over the dict keys.");
260
261
#define DICT___REVERSED___METHODDEF    \
262
    {"__reversed__", (PyCFunction)dict___reversed__, METH_NOARGS, dict___reversed____doc__},
263
264
static PyObject *
265
dict___reversed___impl(PyDictObject *self);
266
267
static PyObject *
268
dict___reversed__(PyObject *self, PyObject *Py_UNUSED(ignored))
269
0
{
270
0
    return dict___reversed___impl((PyDictObject *)self);
271
0
}
272
273
PyDoc_STRVAR(dict_keys__doc__,
274
"keys($self, /)\n"
275
"--\n"
276
"\n"
277
"Return a set-like object providing a view on the dict\'s keys.");
278
279
#define DICT_KEYS_METHODDEF    \
280
    {"keys", (PyCFunction)dict_keys, METH_NOARGS, dict_keys__doc__},
281
282
static PyObject *
283
dict_keys_impl(PyDictObject *self);
284
285
static PyObject *
286
dict_keys(PyObject *self, PyObject *Py_UNUSED(ignored))
287
290k
{
288
290k
    return dict_keys_impl((PyDictObject *)self);
289
290k
}
290
291
PyDoc_STRVAR(dict_items__doc__,
292
"items($self, /)\n"
293
"--\n"
294
"\n"
295
"Return a set-like object providing a view on the dict\'s items.");
296
297
#define DICT_ITEMS_METHODDEF    \
298
    {"items", (PyCFunction)dict_items, METH_NOARGS, dict_items__doc__},
299
300
static PyObject *
301
dict_items_impl(PyDictObject *self);
302
303
static PyObject *
304
dict_items(PyObject *self, PyObject *Py_UNUSED(ignored))
305
443k
{
306
443k
    return dict_items_impl((PyDictObject *)self);
307
443k
}
308
309
PyDoc_STRVAR(dict_values__doc__,
310
"values($self, /)\n"
311
"--\n"
312
"\n"
313
"Return an object providing a view on the dict\'s values.");
314
315
#define DICT_VALUES_METHODDEF    \
316
    {"values", (PyCFunction)dict_values, METH_NOARGS, dict_values__doc__},
317
318
static PyObject *
319
dict_values_impl(PyDictObject *self);
320
321
static PyObject *
322
dict_values(PyObject *self, PyObject *Py_UNUSED(ignored))
323
36
{
324
36
    return dict_values_impl((PyDictObject *)self);
325
36
}
326
/*[clinic end generated code: output=9007b74432217017 input=a9049054013a1b77]*/