1 /*[clinic input]
2 preserve
3 [clinic start generated code]*/
4 
5 static PyObject *
6 mappingproxy_new_impl(PyTypeObject *type, PyObject *mapping);
7 
8 static PyObject *
mappingproxy_new(PyTypeObject * type,PyObject * args,PyObject * kwargs)9 mappingproxy_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
10 {
11     PyObject *return_value = NULL;
12     static const char * const _keywords[] = {"mapping", NULL};
13     static _PyArg_Parser _parser = {NULL, _keywords, "mappingproxy", 0};
14     PyObject *argsbuf[1];
15     PyObject * const *fastargs;
16     Py_ssize_t nargs = PyTuple_GET_SIZE(args);
17     PyObject *mapping;
18 
19     fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 1, 1, 0, argsbuf);
20     if (!fastargs) {
21         goto exit;
22     }
23     mapping = fastargs[0];
24     return_value = mappingproxy_new_impl(type, mapping);
25 
26 exit:
27     return return_value;
28 }
29 
30 PyDoc_STRVAR(property_init__doc__,
31 "property(fget=None, fset=None, fdel=None, doc=None)\n"
32 "--\n"
33 "\n"
34 "Property attribute.\n"
35 "\n"
36 "  fget\n"
37 "    function to be used for getting an attribute value\n"
38 "  fset\n"
39 "    function to be used for setting an attribute value\n"
40 "  fdel\n"
41 "    function to be used for del\'ing an attribute\n"
42 "  doc\n"
43 "    docstring\n"
44 "\n"
45 "Typical use is to define a managed attribute x:\n"
46 "\n"
47 "class C(object):\n"
48 "    def getx(self): return self._x\n"
49 "    def setx(self, value): self._x = value\n"
50 "    def delx(self): del self._x\n"
51 "    x = property(getx, setx, delx, \"I\'m the \'x\' property.\")\n"
52 "\n"
53 "Decorators make defining new properties or modifying existing ones easy:\n"
54 "\n"
55 "class C(object):\n"
56 "    @property\n"
57 "    def x(self):\n"
58 "        \"I am the \'x\' property.\"\n"
59 "        return self._x\n"
60 "    @x.setter\n"
61 "    def x(self, value):\n"
62 "        self._x = value\n"
63 "    @x.deleter\n"
64 "    def x(self):\n"
65 "        del self._x");
66 
67 static int
68 property_init_impl(propertyobject *self, PyObject *fget, PyObject *fset,
69                    PyObject *fdel, PyObject *doc);
70 
71 static int
property_init(PyObject * self,PyObject * args,PyObject * kwargs)72 property_init(PyObject *self, PyObject *args, PyObject *kwargs)
73 {
74     int return_value = -1;
75     static const char * const _keywords[] = {"fget", "fset", "fdel", "doc", NULL};
76     static _PyArg_Parser _parser = {NULL, _keywords, "property", 0};
77     PyObject *argsbuf[4];
78     PyObject * const *fastargs;
79     Py_ssize_t nargs = PyTuple_GET_SIZE(args);
80     Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 0;
81     PyObject *fget = NULL;
82     PyObject *fset = NULL;
83     PyObject *fdel = NULL;
84     PyObject *doc = NULL;
85 
86     fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 0, 4, 0, argsbuf);
87     if (!fastargs) {
88         goto exit;
89     }
90     if (!noptargs) {
91         goto skip_optional_pos;
92     }
93     if (fastargs[0]) {
94         fget = fastargs[0];
95         if (!--noptargs) {
96             goto skip_optional_pos;
97         }
98     }
99     if (fastargs[1]) {
100         fset = fastargs[1];
101         if (!--noptargs) {
102             goto skip_optional_pos;
103         }
104     }
105     if (fastargs[2]) {
106         fdel = fastargs[2];
107         if (!--noptargs) {
108             goto skip_optional_pos;
109         }
110     }
111     doc = fastargs[3];
112 skip_optional_pos:
113     return_value = property_init_impl((propertyobject *)self, fget, fset, fdel, doc);
114 
115 exit:
116     return return_value;
117 }
118 /*[clinic end generated code: output=916624e717862abc input=a9049054013a1b77]*/
119