[Python-checkins] cpython: Issue #20186: Converted the symtable module to Argument Clinic.

serhiy.storchaka python-checkins at python.org
Sat Feb 4 05:13:43 EST 2017


https://hg.python.org/cpython/rev/7f8a3eb3459e
changeset:   106413:7f8a3eb3459e
user:        Serhiy Storchaka <storchaka at gmail.com>
date:        Sat Feb 04 12:13:20 2017 +0200
summary:
  Issue #20186: Converted the symtable module to Argument Clinic.
Original patch by Georg Brandl.

files:
  Modules/clinic/symtablemodule.c.h |  39 +++++++++++++++++++
  Modules/symtablemodule.c          |  33 ++++++++++-----
  2 files changed, 61 insertions(+), 11 deletions(-)


diff --git a/Modules/clinic/symtablemodule.c.h b/Modules/clinic/symtablemodule.c.h
new file mode 100644
--- /dev/null
+++ b/Modules/clinic/symtablemodule.c.h
@@ -0,0 +1,39 @@
+/*[clinic input]
+preserve
+[clinic start generated code]*/
+
+PyDoc_STRVAR(_symtable_symtable__doc__,
+"symtable($module, str, filename, startstr, /)\n"
+"--\n"
+"\n"
+"Return symbol and scope dictionaries used internally by compiler.");
+
+#define _SYMTABLE_SYMTABLE_METHODDEF    \
+    {"symtable", (PyCFunction)_symtable_symtable, METH_FASTCALL, _symtable_symtable__doc__},
+
+static PyObject *
+_symtable_symtable_impl(PyObject *module, const char *str,
+                        PyObject *filename, const char *startstr);
+
+static PyObject *
+_symtable_symtable(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
+{
+    PyObject *return_value = NULL;
+    const char *str;
+    PyObject *filename;
+    const char *startstr;
+
+    if (!_PyArg_ParseStack(args, nargs, "sO&s:symtable",
+        &str, PyUnicode_FSDecoder, &filename, &startstr)) {
+        goto exit;
+    }
+
+    if (!_PyArg_NoStackKeywords("symtable", kwnames)) {
+        goto exit;
+    }
+    return_value = _symtable_symtable_impl(module, str, filename, startstr);
+
+exit:
+    return return_value;
+}
+/*[clinic end generated code: output=071dee4d836e2cfd input=a9049054013a1b77]*/
diff --git a/Modules/symtablemodule.c b/Modules/symtablemodule.c
--- a/Modules/symtablemodule.c
+++ b/Modules/symtablemodule.c
@@ -4,20 +4,33 @@
 #include "Python-ast.h"
 #include "symtable.h"
 
+#include "clinic/symtablemodule.c.h"
+/*[clinic input]
+module _symtable
+[clinic start generated code]*/
+/*[clinic end generated code: output=da39a3ee5e6b4b0d input=f4685845a7100605]*/
+
+
+/*[clinic input]
+_symtable.symtable
+
+    str:       str
+    filename:  object(converter='PyUnicode_FSDecoder')
+    startstr:  str
+    /
+
+Return symbol and scope dictionaries used internally by compiler.
+[clinic start generated code]*/
+
 static PyObject *
-symtable_symtable(PyObject *self, PyObject *args)
+_symtable_symtable_impl(PyObject *module, const char *str,
+                        PyObject *filename, const char *startstr)
+/*[clinic end generated code: output=914b369c9b785956 input=6c615e84d5f408e3]*/
 {
     struct symtable *st;
     PyObject *t;
-
-    char *str;
-    PyObject *filename;
-    char *startstr;
     int start;
 
-    if (!PyArg_ParseTuple(args, "sO&s:symtable",
-                          &str, PyUnicode_FSDecoder, &filename, &startstr))
-        return NULL;
     if (strcmp(startstr, "exec") == 0)
         start = Py_file_input;
     else if (strcmp(startstr, "eval") == 0)
@@ -42,9 +55,7 @@
 }
 
 static PyMethodDef symtable_methods[] = {
-    {"symtable",        symtable_symtable,      METH_VARARGS,
-     PyDoc_STR("Return symbol and scope dictionaries"
-               " used internally by compiler.")},
+    _SYMTABLE_SYMTABLE_METHODDEF
     {NULL,              NULL}           /* sentinel */
 };
 

-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list