[Python-checkins] cpython: Issue #20152: Port the pwd module to Argument Clinic.

brett.cannon python-checkins at python.org
Fri Aug 22 20:03:59 CEST 2014


http://hg.python.org/cpython/rev/c48980af7df2
changeset:   92192:c48980af7df2
user:        Brett Cannon <brett at python.org>
date:        Fri Aug 22 14:03:51 2014 -0400
summary:
  Issue #20152: Port the pwd module to Argument Clinic.

files:
  Modules/pwdmodule.c |  72 +++++++++++++++++++++-----------
  1 files changed, 46 insertions(+), 26 deletions(-)


diff --git a/Modules/pwdmodule.c b/Modules/pwdmodule.c
--- a/Modules/pwdmodule.c
+++ b/Modules/pwdmodule.c
@@ -6,6 +6,13 @@
 
 #include <pwd.h>
 
+#include "clinic/pwdmodule.c.h"
+/*[clinic input]
+output preset file
+module pwd
+[clinic start generated code]*/
+/*[clinic end generated code: output=da39a3ee5e6b4b0d input=bbcf68b1f549f917]*/
+
 static PyStructSequence_Field struct_pwd_type_fields[] = {
     {"pw_name", "user name"},
     {"pw_passwd", "password"},
@@ -87,18 +94,25 @@
     return v;
 }
 
-PyDoc_STRVAR(pwd_getpwuid__doc__,
-"getpwuid(uid) -> (pw_name,pw_passwd,pw_uid,\n\
-                  pw_gid,pw_gecos,pw_dir,pw_shell)\n\
-Return the password database entry for the given numeric user ID.\n\
-See help(pwd) for more on password database entries.");
+/*[clinic input]
+pwd.getpwuid
+
+    uidobj: object
+    /
+
+Return the password database entry for the given numeric user ID.
+
+See `help(pwd)` for more on password database entries.
+[clinic start generated code]*/
 
 static PyObject *
-pwd_getpwuid(PyObject *self, PyObject *args)
+pwd_getpwuid(PyModuleDef *module, PyObject *uidobj)
+/*[clinic end generated code: output=cba29ae4c2bcb8e1 input=ae64d507a1c6d3e8]*/
 {
     uid_t uid;
     struct passwd *p;
-    if (!PyArg_ParseTuple(args, "O&:getpwuid", _Py_Uid_Converter, &uid)) {
+
+    if (!_Py_Uid_Converter(uidobj, &uid)) {
         if (PyErr_ExceptionMatches(PyExc_OverflowError))
             PyErr_Format(PyExc_KeyError,
                          "getpwuid(): uid not found");
@@ -116,21 +130,25 @@
     return mkpwent(p);
 }
 
-PyDoc_STRVAR(pwd_getpwnam__doc__,
-"getpwnam(name) -> (pw_name,pw_passwd,pw_uid,\n\
-                    pw_gid,pw_gecos,pw_dir,pw_shell)\n\
-Return the password database entry for the given user name.\n\
-See help(pwd) for more on password database entries.");
+/*[clinic input]
+pwd.getpwnam
+
+    arg: unicode
+    /
+
+Return the password database entry for the given user name.
+
+See `help(pwd)` for more on password database entries.
+[clinic start generated code]*/
 
 static PyObject *
-pwd_getpwnam(PyObject *self, PyObject *args)
+pwd_getpwnam_impl(PyModuleDef *module, PyObject *arg)
+/*[clinic end generated code: output=66848d42d386fca3 input=d5f7e700919b02d3]*/
 {
     char *name;
     struct passwd *p;
-    PyObject *arg, *bytes, *retval = NULL;
+    PyObject *bytes, *retval = NULL;
 
-    if (!PyArg_ParseTuple(args, "U:getpwnam", &arg))
-        return NULL;
     if ((bytes = PyUnicode_EncodeFSDefault(arg)) == NULL)
         return NULL;
     if (PyBytes_AsStringAndSize(bytes, &name, NULL) == -1)
@@ -147,14 +165,17 @@
 }
 
 #ifdef HAVE_GETPWENT
-PyDoc_STRVAR(pwd_getpwall__doc__,
-"getpwall() -> list_of_entries\n\
-Return a list of all available password database entries, \
-in arbitrary order.\n\
-See help(pwd) for more on password database entries.");
+/*[clinic input]
+pwd.getpwall
+
+Return a list of all available password database entries, in arbitrary order.
+
+See help(pwd) for more on password database entries.
+[clinic start generated code]*/
 
 static PyObject *
-pwd_getpwall(PyObject *self)
+pwd_getpwall_impl(PyModuleDef *module)
+/*[clinic end generated code: output=ab30e37bf26d431d input=d7ecebfd90219b85]*/
 {
     PyObject *d;
     struct passwd *p;
@@ -177,11 +198,10 @@
 #endif
 
 static PyMethodDef pwd_methods[] = {
-    {"getpwuid",        pwd_getpwuid, METH_VARARGS, pwd_getpwuid__doc__},
-    {"getpwnam",        pwd_getpwnam, METH_VARARGS, pwd_getpwnam__doc__},
+    PWD_GETPWUID_METHODDEF
+    PWD_GETPWNAM_METHODDEF
 #ifdef HAVE_GETPWENT
-    {"getpwall",        (PyCFunction)pwd_getpwall,
-        METH_NOARGS,  pwd_getpwall__doc__},
+    PWD_GETPWALL_METHODDEF
 #endif
     {NULL,              NULL}           /* sentinel */
 };

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


More information about the Python-checkins mailing list