/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]*/ |