diff -r f44f44b14dfc Modules/clinic/symtablemodule.c.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Modules/clinic/symtablemodule.c.h Fri Jan 20 18:02:54 2017 +0200 @@ -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 -r f44f44b14dfc Modules/symtablemodule.c --- a/Modules/symtablemodule.c Fri Jan 20 08:35:18 2017 +0200 +++ b/Modules/symtablemodule.c Fri Jan 20 18:02:54 2017 +0200 @@ -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 @@ symtable_symtable(PyObject *self, PyObje } 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 */ };