• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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