Coverage Report

Created: 2026-10-31 06:21

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