]> granicus.if.org Git - python/commitdiff
Stop using Argument Clinic for dict_pop (GH-13935)
authorInada Naoki <songofacandy@gmail.com>
Tue, 2 Jul 2019 11:32:43 +0000 (20:32 +0900)
committerŁukasz Langa <lukasz@langa.pl>
Tue, 2 Jul 2019 11:32:43 +0000 (13:32 +0200)
Objects/clinic/dictobject.c.h
Objects/dictobject.c

index b87244d87348b96384f070784b7050234ecd0c6d..8d5493330835e836408b47b96bad02849a809d32 100644 (file)
@@ -116,42 +116,6 @@ exit:
     return return_value;
 }
 
-PyDoc_STRVAR(dict_pop__doc__,
-"pop($self, key, default=None, /)\n"
-"--\n"
-"\n"
-"Remove specified key and return the corresponding value.\n"
-"\n"
-"If key is not found, default is returned if given, otherwise KeyError is raised");
-
-#define DICT_POP_METHODDEF    \
-    {"pop", (PyCFunction)(void(*)(void))dict_pop, METH_FASTCALL, dict_pop__doc__},
-
-static PyObject *
-dict_pop_impl(PyDictObject *self, PyObject *key, PyObject *default_value);
-
-static PyObject *
-dict_pop(PyDictObject *self, PyObject *const *args, Py_ssize_t nargs)
-{
-    PyObject *return_value = NULL;
-    PyObject *key;
-    PyObject *default_value = NULL;
-
-    if (!_PyArg_CheckPositional("pop", nargs, 1, 2)) {
-        goto exit;
-    }
-    key = args[0];
-    if (nargs < 2) {
-        goto skip_optional;
-    }
-    default_value = args[1];
-skip_optional:
-    return_value = dict_pop_impl(self, key, default_value);
-
-exit:
-    return return_value;
-}
-
 PyDoc_STRVAR(dict_popitem__doc__,
 "popitem($self, /)\n"
 "--\n"
@@ -190,4 +154,4 @@ dict___reversed__(PyDictObject *self, PyObject *Py_UNUSED(ignored))
 {
     return dict___reversed___impl(self);
 }
-/*[clinic end generated code: output=0fd5cafc61a51d3c input=a9049054013a1b77]*/
+/*[clinic end generated code: output=676532dcc941d399 input=a9049054013a1b77]*/
index 0cc144375006999f0329e15a399f52febc76fd94..e417cd2119c6df2299dfbe6fd7d42a37dc952990 100644 (file)
@@ -2987,23 +2987,37 @@ dict_clear(PyDictObject *mp, PyObject *Py_UNUSED(ignored))
     Py_RETURN_NONE;
 }
 
-/*[clinic input]
-dict.pop
-
-    key: object
-    default: object = NULL
-    /
+/*
+We don't use Argument Clinic for dict.pop because it doesn't support
+custom signature for now.
+*/
+PyDoc_STRVAR(dict_pop__doc__,
+"D.pop(k[,d]) -> v, remove specified key and return the corresponding value.\n\
+If key is not found, d is returned if given, otherwise KeyError is raised");
 
-Remove specified key and return the corresponding value.
-
-If key is not found, default is returned if given, otherwise KeyError is raised
-[clinic start generated code]*/
+#define DICT_POP_METHODDEF    \
+    {"pop", (PyCFunction)(void(*)(void))dict_pop, METH_FASTCALL, dict_pop__doc__},
 
 static PyObject *
-dict_pop_impl(PyDictObject *self, PyObject *key, PyObject *default_value)
-/*[clinic end generated code: output=3abb47b89f24c21c input=016f6a000e4e633b]*/
+dict_pop(PyDictObject *self, PyObject *const *args, Py_ssize_t nargs)
 {
-    return _PyDict_Pop((PyObject*)self, key, default_value);
+    PyObject *return_value = NULL;
+    PyObject *key;
+    PyObject *default_value = NULL;
+
+    if (!_PyArg_CheckPositional("pop", nargs, 1, 2)) {
+        goto exit;
+    }
+    key = args[0];
+    if (nargs < 2) {
+        goto skip_optional;
+    }
+    default_value = args[1];
+skip_optional:
+    return_value = _PyDict_Pop((PyObject*)self, key, default_value);
+
+exit:
+    return return_value;
 }
 
 /*[clinic input]