mirror of
https://github.com/python/cpython.git
synced 2025-11-01 18:51:43 +00:00
bpo-35582: Argument Clinic: inline parsing code for positional parameters. (GH-11313)
This commit is contained in:
parent
5485085b32
commit
4fa9591025
60 changed files with 6194 additions and 778 deletions
|
|
@ -613,11 +613,21 @@ convertitem(PyObject *arg, const char **p_format, va_list *p_va, int flags,
|
|||
/* Format an error message generated by convertsimple(). */
|
||||
|
||||
void
|
||||
_PyArg_BadArgument(const char *fname, const char *expected, PyObject *arg)
|
||||
_PyArg_BadArgument(const char *fname, int iarg,
|
||||
const char *expected, PyObject *arg)
|
||||
{
|
||||
PyErr_Format(PyExc_TypeError, "%.200s() argument must be %.50s, not %.50s",
|
||||
fname, expected,
|
||||
arg == Py_None ? "None" : arg->ob_type->tp_name);
|
||||
if (iarg) {
|
||||
PyErr_Format(PyExc_TypeError,
|
||||
"%.200s() argument %d must be %.50s, not %.50s",
|
||||
fname, iarg, expected,
|
||||
arg == Py_None ? "None" : arg->ob_type->tp_name);
|
||||
}
|
||||
else {
|
||||
PyErr_Format(PyExc_TypeError,
|
||||
"%.200s() argument must be %.50s, not %.50s",
|
||||
fname, expected,
|
||||
arg == Py_None ? "None" : arg->ob_type->tp_name);
|
||||
}
|
||||
}
|
||||
|
||||
static const char *
|
||||
|
|
@ -2416,13 +2426,12 @@ err:
|
|||
}
|
||||
|
||||
|
||||
static int
|
||||
unpack_stack(PyObject *const *args, Py_ssize_t nargs, const char *name,
|
||||
Py_ssize_t min, Py_ssize_t max, va_list vargs)
|
||||
{
|
||||
Py_ssize_t i;
|
||||
PyObject **o;
|
||||
#undef _PyArg_CheckPositional
|
||||
|
||||
int
|
||||
_PyArg_CheckPositional(const char *name, Py_ssize_t nargs,
|
||||
Py_ssize_t min, Py_ssize_t max)
|
||||
{
|
||||
assert(min >= 0);
|
||||
assert(min <= max);
|
||||
|
||||
|
|
@ -2460,6 +2469,20 @@ unpack_stack(PyObject *const *args, Py_ssize_t nargs, const char *name,
|
|||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int
|
||||
unpack_stack(PyObject *const *args, Py_ssize_t nargs, const char *name,
|
||||
Py_ssize_t min, Py_ssize_t max, va_list vargs)
|
||||
{
|
||||
Py_ssize_t i;
|
||||
PyObject **o;
|
||||
|
||||
if (!_PyArg_CheckPositional(name, nargs, min, max)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
for (i = 0; i < nargs; i++) {
|
||||
o = va_arg(vargs, PyObject **);
|
||||
*o = args[i];
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue