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