summaryrefslogtreecommitdiffstats
path: root/Objects/clinic
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2019-03-14 08:32:22 (GMT)
committerGitHub <noreply@github.com>2019-03-14 08:32:22 (GMT)
commit3191391515824fa7f3c573d807f1034c6a28fab3 (patch)
treeff8213b07b206de4df88dc352ee957ce68f0f2de /Objects/clinic
parent2c0d3f454705bb5ccf5f6189f3cf77bbae4f056b (diff)
downloadcpython-3191391515824fa7f3c573d807f1034c6a28fab3.zip
cpython-3191391515824fa7f3c573d807f1034c6a28fab3.tar.gz
cpython-3191391515824fa7f3c573d807f1034c6a28fab3.tar.bz2
bpo-36127: Argument Clinic: inline parsing code for keyword parameters. (GH-12058)
Diffstat (limited to 'Objects/clinic')
-rw-r--r--Objects/clinic/bytearrayobject.c.h150
-rw-r--r--Objects/clinic/bytesobject.c.h150
-rw-r--r--Objects/clinic/complexobject.c.h23
-rw-r--r--Objects/clinic/descrobject.c.h45
-rw-r--r--Objects/clinic/enumobject.c.h18
-rw-r--r--Objects/clinic/funcobject.c.h39
-rw-r--r--Objects/clinic/listobject.c.h29
-rw-r--r--Objects/clinic/longobject.c.h89
-rw-r--r--Objects/clinic/moduleobject.c.h25
-rw-r--r--Objects/clinic/odictobject.c.h63
-rw-r--r--Objects/clinic/structseq.c.h18
-rw-r--r--Objects/clinic/unicodeobject.c.h157
12 files changed, 704 insertions, 102 deletions
diff --git a/Objects/clinic/bytearrayobject.c.h b/Objects/clinic/bytearrayobject.c.h
index a4669f5..da1dc6a 100644
--- a/Objects/clinic/bytearrayobject.c.h
+++ b/Objects/clinic/bytearrayobject.c.h
@@ -62,14 +62,22 @@ bytearray_translate(PyByteArrayObject *self, PyObject *const *args, Py_ssize_t n
{
PyObject *return_value = NULL;
static const char * const _keywords[] = {"", "delete", NULL};
- static _PyArg_Parser _parser = {"O|O:translate", _keywords, 0};
+ static _PyArg_Parser _parser = {NULL, _keywords, "translate", 0};
+ PyObject *argsbuf[2];
+ Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
PyObject *table;
PyObject *deletechars = NULL;
- if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
- &table, &deletechars)) {
+ args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 2, 0, argsbuf);
+ if (!args) {
goto exit;
}
+ table = args[0];
+ if (!noptargs) {
+ goto skip_optional_pos;
+ }
+ deletechars = args[1];
+skip_optional_pos:
return_value = bytearray_translate_impl(self, table, deletechars);
exit:
@@ -239,14 +247,43 @@ bytearray_split(PyByteArrayObject *self, PyObject *const *args, Py_ssize_t nargs
{
PyObject *return_value = NULL;
static const char * const _keywords[] = {"sep", "maxsplit", NULL};
- static _PyArg_Parser _parser = {"|On:split", _keywords, 0};
+ static _PyArg_Parser _parser = {NULL, _keywords, "split", 0};
+ PyObject *argsbuf[2];
+ Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
PyObject *sep = Py_None;
Py_ssize_t maxsplit = -1;
- if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
- &sep, &maxsplit)) {
+ args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 2, 0, argsbuf);
+ if (!args) {
+ goto exit;
+ }
+ if (!noptargs) {
+ goto skip_optional_pos;
+ }
+ if (args[0]) {
+ sep = args[0];
+ if (!--noptargs) {
+ goto skip_optional_pos;
+ }
+ }
+ if (PyFloat_Check(args[1])) {
+ PyErr_SetString(PyExc_TypeError,
+ "integer argument expected, got float" );
goto exit;
}
+ {
+ Py_ssize_t ival = -1;
+ PyObject *iobj = PyNumber_Index(args[1]);
+ if (iobj != NULL) {
+ ival = PyLong_AsSsize_t(iobj);
+ Py_DECREF(iobj);
+ }
+ if (ival == -1 && PyErr_Occurred()) {
+ goto exit;
+ }
+ maxsplit = ival;
+ }
+skip_optional_pos:
return_value = bytearray_split_impl(self, sep, maxsplit);
exit:
@@ -314,14 +351,43 @@ bytearray_rsplit(PyByteArrayObject *self, PyObject *const *args, Py_ssize_t narg
{
PyObject *return_value = NULL;
static const char * const _keywords[] = {"sep", "maxsplit", NULL};
- static _PyArg_Parser _parser = {"|On:rsplit", _keywords, 0};
+ static _PyArg_Parser _parser = {NULL, _keywords, "rsplit", 0};
+ PyObject *argsbuf[2];
+ Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
PyObject *sep = Py_None;
Py_ssize_t maxsplit = -1;
- if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
- &sep, &maxsplit)) {
+ args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 2, 0, argsbuf);
+ if (!args) {
+ goto exit;
+ }
+ if (!noptargs) {
+ goto skip_optional_pos;
+ }
+ if (args[0]) {
+ sep = args[0];
+ if (!--noptargs) {
+ goto skip_optional_pos;
+ }
+ }
+ if (PyFloat_Check(args[1])) {
+ PyErr_SetString(PyExc_TypeError,
+ "integer argument expected, got float" );
goto exit;
}
+ {
+ Py_ssize_t ival = -1;
+ PyObject *iobj = PyNumber_Index(args[1]);
+ if (iobj != NULL) {
+ ival = PyLong_AsSsize_t(iobj);
+ Py_DECREF(iobj);
+ }
+ if (ival == -1 && PyErr_Occurred()) {
+ goto exit;
+ }
+ maxsplit = ival;
+ }
+skip_optional_pos:
return_value = bytearray_rsplit_impl(self, sep, maxsplit);
exit:
@@ -654,14 +720,51 @@ bytearray_decode(PyByteArrayObject *self, PyObject *const *args, Py_ssize_t narg
{
PyObject *return_value = NULL;
static const char * const _keywords[] = {"encoding", "errors", NULL};
- static _PyArg_Parser _parser = {"|ss:decode", _keywords, 0};
+ static _PyArg_Parser _parser = {NULL, _keywords, "decode", 0};
+ PyObject *argsbuf[2];
+ Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
const char *encoding = NULL;
const char *errors = NULL;
- if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
- &encoding, &errors)) {
+ args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 2, 0, argsbuf);
+ if (!args) {
goto exit;
}
+ if (!noptargs) {
+ goto skip_optional_pos;
+ }
+ if (args[0]) {
+ if (!PyUnicode_Check(args[0])) {
+ _PyArg_BadArgument("decode", 1, "str", args[0]);
+ goto exit;
+ }
+ Py_ssize_t encoding_length;
+ encoding = PyUnicode_AsUTF8AndSize(args[0], &encoding_length);
+ if (encoding == NULL) {
+ goto exit;
+ }
+ if (strlen(encoding) != (size_t)encoding_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
+ if (!--noptargs) {
+ goto skip_optional_pos;
+ }
+ }
+ if (!PyUnicode_Check(args[1])) {
+ _PyArg_BadArgument("decode", 2, "str", args[1]);
+ goto exit;
+ }
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
+ if (errors == NULL) {
+ goto exit;
+ }
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
+skip_optional_pos:
return_value = bytearray_decode_impl(self, encoding, errors);
exit:
@@ -701,13 +804,28 @@ bytearray_splitlines(PyByteArrayObject *self, PyObject *const *args, Py_ssize_t
{
PyObject *return_value = NULL;
static const char * const _keywords[] = {"keepends", NULL};
- static _PyArg_Parser _parser = {"|i:splitlines", _keywords, 0};
+ static _PyArg_Parser _parser = {NULL, _keywords, "splitlines", 0};
+ PyObject *argsbuf[1];
+ Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
int keepends = 0;
- if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
- &keepends)) {
+ args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 1, 0, argsbuf);
+ if (!args) {
+ goto exit;
+ }
+ if (!noptargs) {
+ goto skip_optional_pos;
+ }
+ if (PyFloat_Check(args[0])) {
+ PyErr_SetString(PyExc_TypeError,
+ "integer argument expected, got float" );
+ goto exit;
+ }
+ keepends = _PyLong_AsInt(args[0]);
+ if (keepends == -1 && PyErr_Occurred()) {
goto exit;
}
+skip_optional_pos:
return_value = bytearray_splitlines_impl(self, keepends);
exit:
@@ -824,4 +942,4 @@ bytearray_sizeof(PyByteArrayObject *self, PyObject *Py_UNUSED(ignored))
{
return bytearray_sizeof_impl(self);
}
-/*[clinic end generated code: output=f4353c27dcb4a13d input=a9049054013a1b77]*/
+/*[clinic end generated code: output=272fcb836b92da32 input=a9049054013a1b77]*/
diff --git a/Objects/clinic/bytesobject.c.h b/Objects/clinic/bytesobject.c.h
index d75bbf1..b030783 100644
--- a/Objects/clinic/bytesobject.c.h
+++ b/Objects/clinic/bytesobject.c.h
@@ -27,14 +27,43 @@ bytes_split(PyBytesObject *self, PyObject *const *args, Py_ssize_t nargs, PyObje
{
PyObject *return_value = NULL;
static const char * const _keywords[] = {"sep", "maxsplit", NULL};
- static _PyArg_Parser _parser = {"|On:split", _keywords, 0};
+ static _PyArg_Parser _parser = {NULL, _keywords, "split", 0};
+ PyObject *argsbuf[2];
+ Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
PyObject *sep = Py_None;
Py_ssize_t maxsplit = -1;
- if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
- &sep, &maxsplit)) {
+ args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 2, 0, argsbuf);
+ if (!args) {
goto exit;
}
+ if (!noptargs) {
+ goto skip_optional_pos;
+ }
+ if (args[0]) {
+ sep = args[0];
+ if (!--noptargs) {
+ goto skip_optional_pos;
+ }
+ }
+ if (PyFloat_Check(args[1])) {
+ PyErr_SetString(PyExc_TypeError,
+ "integer argument expected, got float" );
+ goto exit;
+ }
+ {
+ Py_ssize_t ival = -1;
+ PyObject *iobj = PyNumber_Index(args[1]);
+ if (iobj != NULL) {
+ ival = PyLong_AsSsize_t(iobj);
+ Py_DECREF(iobj);
+ }
+ if (ival == -1 && PyErr_Occurred()) {
+ goto exit;
+ }
+ maxsplit = ival;
+ }
+skip_optional_pos:
return_value = bytes_split_impl(self, sep, maxsplit);
exit:
@@ -154,14 +183,43 @@ bytes_rsplit(PyBytesObject *self, PyObject *const *args, Py_ssize_t nargs, PyObj
{
PyObject *return_value = NULL;
static const char * const _keywords[] = {"sep", "maxsplit", NULL};
- static _PyArg_Parser _parser = {"|On:rsplit", _keywords, 0};
+ static _PyArg_Parser _parser = {NULL, _keywords, "rsplit", 0};
+ PyObject *argsbuf[2];
+ Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
PyObject *sep = Py_None;
Py_ssize_t maxsplit = -1;
- if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
- &sep, &maxsplit)) {
+ args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 2, 0, argsbuf);
+ if (!args) {
+ goto exit;
+ }
+ if (!noptargs) {
+ goto skip_optional_pos;
+ }
+ if (args[0]) {
+ sep = args[0];
+ if (!--noptargs) {
+ goto skip_optional_pos;
+ }
+ }
+ if (PyFloat_Check(args[1])) {
+ PyErr_SetString(PyExc_TypeError,
+ "integer argument expected, got float" );
goto exit;
}
+ {
+ Py_ssize_t ival = -1;
+ PyObject *iobj = PyNumber_Index(args[1]);
+ if (iobj != NULL) {
+ ival = PyLong_AsSsize_t(iobj);
+ Py_DECREF(iobj);
+ }
+ if (ival == -1 && PyErr_Occurred()) {
+ goto exit;
+ }
+ maxsplit = ival;
+ }
+skip_optional_pos:
return_value = bytes_rsplit_impl(self, sep, maxsplit);
exit:
@@ -309,14 +367,22 @@ bytes_translate(PyBytesObject *self, PyObject *const *args, Py_ssize_t nargs, Py
{
PyObject *return_value = NULL;
static const char * const _keywords[] = {"", "delete", NULL};
- static _PyArg_Parser _parser = {"O|O:translate", _keywords, 0};
+ static _PyArg_Parser _parser = {NULL, _keywords, "translate", 0};
+ PyObject *argsbuf[2];
+ Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
PyObject *table;
PyObject *deletechars = NULL;
- if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
- &table, &deletechars)) {
+ args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 2, 0, argsbuf);
+ if (!args) {
goto exit;
}
+ table = args[0];
+ if (!noptargs) {
+ goto skip_optional_pos;
+ }
+ deletechars = args[1];
+skip_optional_pos:
return_value = bytes_translate_impl(self, table, deletechars);
exit:
@@ -487,14 +553,51 @@ bytes_decode(PyBytesObject *self, PyObject *const *args, Py_ssize_t nargs, PyObj
{
PyObject *return_value = NULL;
static const char * const _keywords[] = {"encoding", "errors", NULL};
- static _PyArg_Parser _parser = {"|ss:decode", _keywords, 0};
+ static _PyArg_Parser _parser = {NULL, _keywords, "decode", 0};
+ PyObject *argsbuf[2];
+ Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
const char *encoding = NULL;
const char *errors = NULL;
- if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
- &encoding, &errors)) {
+ args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 2, 0, argsbuf);
+ if (!args) {
+ goto exit;
+ }
+ if (!noptargs) {
+ goto skip_optional_pos;
+ }
+ if (args[0]) {
+ if (!PyUnicode_Check(args[0])) {
+ _PyArg_BadArgument("decode", 1, "str", args[0]);
+ goto exit;
+ }
+ Py_ssize_t encoding_length;
+ encoding = PyUnicode_AsUTF8AndSize(args[0], &encoding_length);
+ if (encoding == NULL) {
+ goto exit;
+ }
+ if (strlen(encoding) != (size_t)encoding_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
+ if (!--noptargs) {
+ goto skip_optional_pos;
+ }
+ }
+ if (!PyUnicode_Check(args[1])) {
+ _PyArg_BadArgument("decode", 2, "str", args[1]);
+ goto exit;
+ }
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
+ if (errors == NULL) {
+ goto exit;
+ }
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
goto exit;
}
+skip_optional_pos:
return_value = bytes_decode_impl(self, encoding, errors);
exit:
@@ -521,13 +624,28 @@ bytes_splitlines(PyBytesObject *self, PyObject *const *args, Py_ssize_t nargs, P
{
PyObject *return_value = NULL;
static const char * const _keywords[] = {"keepends", NULL};
- static _PyArg_Parser _parser = {"|i:splitlines", _keywords, 0};
+ static _PyArg_Parser _parser = {NULL, _keywords, "splitlines", 0};
+ PyObject *argsbuf[1];
+ Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
int keepends = 0;
- if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
- &keepends)) {
+ args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 1, 0, argsbuf);
+ if (!args) {
+ goto exit;
+ }
+ if (!noptargs) {
+ goto skip_optional_pos;
+ }
+ if (PyFloat_Check(args[0])) {
+ PyErr_SetString(PyExc_TypeError,
+ "integer argument expected, got float" );
+ goto exit;
+ }
+ keepends = _PyLong_AsInt(args[0]);
+ if (keepends == -1 && PyErr_Occurred()) {
goto exit;
}
+skip_optional_pos:
return_value = bytes_splitlines_impl(self, keepends);
exit:
@@ -568,4 +686,4 @@ bytes_fromhex(PyTypeObject *type, PyObject *arg)
exit:
return return_value;
}
-/*[clinic end generated code: output=c6621bda84e63e51 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=af9f51b9b185567d input=a9049054013a1b77]*/
diff --git a/Objects/clinic/complexobject.c.h b/Objects/clinic/complexobject.c.h
index 0cbfb79..8caa910 100644
--- a/Objects/clinic/complexobject.c.h
+++ b/Objects/clinic/complexobject.c.h
@@ -18,17 +18,32 @@ complex_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static const char * const _keywords[] = {"real", "imag", NULL};
- static _PyArg_Parser _parser = {"|OO:complex", _keywords, 0};
+ static _PyArg_Parser _parser = {NULL, _keywords, "complex", 0};
+ PyObject *argsbuf[2];
+ PyObject * const *fastargs;
+ Py_ssize_t nargs = PyTuple_GET_SIZE(args);
+ Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 0;
PyObject *r = _PyLong_Zero;
PyObject *i = NULL;
- if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
- &r, &i)) {
+ fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 0, 2, 0, argsbuf);
+ if (!fastargs) {
goto exit;
}
+ if (!noptargs) {
+ goto skip_optional_pos;
+ }
+ if (fastargs[0]) {
+ r = fastargs[0];
+ if (!--noptargs) {
+ goto skip_optional_pos;
+ }
+ }
+ i = fastargs[1];
+skip_optional_pos:
return_value = complex_new_impl(type, r, i);
exit:
return return_value;
}
-/*[clinic end generated code: output=5017b2458bdc4ecd input=a9049054013a1b77]*/
+/*[clinic end generated code: output=a0fe23fdbdc9b06b input=a9049054013a1b77]*/
diff --git a/Objects/clinic/descrobject.c.h b/Objects/clinic/descrobject.c.h
index 71b1966..d248b91 100644
--- a/Objects/clinic/descrobject.c.h
+++ b/Objects/clinic/descrobject.c.h
@@ -10,13 +10,17 @@ mappingproxy_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static const char * const _keywords[] = {"mapping", NULL};
- static _PyArg_Parser _parser = {"O:mappingproxy", _keywords, 0};
+ static _PyArg_Parser _parser = {NULL, _keywords, "mappingproxy", 0};
+ PyObject *argsbuf[1];
+ PyObject * const *fastargs;
+ Py_ssize_t nargs = PyTuple_GET_SIZE(args);
PyObject *mapping;
- if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
- &mapping)) {
+ fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 1, 1, 0, argsbuf);
+ if (!fastargs) {
goto exit;
}
+ mapping = fastargs[0];
return_value = mappingproxy_new_impl(type, mapping);
exit:
@@ -69,19 +73,46 @@ property_init(PyObject *self, PyObject *args, PyObject *kwargs)
{
int return_value = -1;
static const char * const _keywords[] = {"fget", "fset", "fdel", "doc", NULL};
- static _PyArg_Parser _parser = {"|OOOO:property", _keywords, 0};
+ static _PyArg_Parser _parser = {NULL, _keywords, "property", 0};
+ PyObject *argsbuf[4];
+ PyObject * const *fastargs;
+ Py_ssize_t nargs = PyTuple_GET_SIZE(args);
+ Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 0;
PyObject *fget = NULL;
PyObject *fset = NULL;
PyObject *fdel = NULL;
PyObject *doc = NULL;
- if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
- &fget, &fset, &fdel, &doc)) {
+ fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 0, 4, 0, argsbuf);
+ if (!fastargs) {
goto exit;
}
+ if (!noptargs) {
+ goto skip_optional_pos;
+ }
+ if (fastargs[0]) {
+ fget = fastargs[0];
+ if (!--noptargs) {
+ goto skip_optional_pos;
+ }
+ }
+ if (fastargs[1]) {
+ fset = fastargs[1];
+ if (!--noptargs) {
+ goto skip_optional_pos;
+ }
+ }
+ if (fastargs[2]) {
+ fdel = fastargs[2];
+ if (!--noptargs) {
+ goto skip_optional_pos;
+ }
+ }
+ doc = fastargs[3];
+skip_optional_pos:
return_value = property_init_impl((propertyobject *)self, fget, fset, fdel, doc);
exit:
return return_value;
}
-/*[clinic end generated code: output=729021fa9cdc46be input=a9049054013a1b77]*/
+/*[clinic end generated code: output=916624e717862abc input=a9049054013a1b77]*/
diff --git a/Objects/clinic/enumobject.c.h b/Objects/clinic/enumobject.c.h
index 27da294..09d4c87 100644
--- a/Objects/clinic/enumobject.c.h
+++ b/Objects/clinic/enumobject.c.h
@@ -25,14 +25,24 @@ enum_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static const char * const _keywords[] = {"iterable", "start", NULL};
- static _PyArg_Parser _parser = {"O|O:enumerate", _keywords, 0};
+ static _PyArg_Parser _parser = {NULL, _keywords, "enumerate", 0};
+ PyObject *argsbuf[2];
+ PyObject * const *fastargs;
+ Py_ssize_t nargs = PyTuple_GET_SIZE(args);
+ Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 1;
PyObject *iterable;
PyObject *start = 0;
- if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
- &iterable, &start)) {
+ fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 1, 2, 0, argsbuf);
+ if (!fastargs) {
goto exit;
}
+ iterable = fastargs[0];
+ if (!noptargs) {
+ goto skip_optional_pos;
+ }
+ start = fastargs[1];
+skip_optional_pos:
return_value = enum_new_impl(type, iterable, start);
exit:
@@ -67,4 +77,4 @@ reversed_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
exit:
return return_value;
}
-/*[clinic end generated code: output=831cec3db0e987c9 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=e18c3fefcf914ec7 input=a9049054013a1b77]*/
diff --git a/Objects/clinic/funcobject.c.h b/Objects/clinic/funcobject.c.h
index 4c54483..929797b 100644
--- a/Objects/clinic/funcobject.c.h
+++ b/Objects/clinic/funcobject.c.h
@@ -28,20 +28,51 @@ func_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static const char * const _keywords[] = {"code", "globals", "name", "argdefs", "closure", NULL};
- static _PyArg_Parser _parser = {"O!O!|OOO:function", _keywords, 0};
+ static _PyArg_Parser _parser = {NULL, _keywords, "function", 0};
+ PyObject *argsbuf[5];
+ PyObject * const *fastargs;
+ Py_ssize_t nargs = PyTuple_GET_SIZE(args);
+ Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 2;
PyCodeObject *code;
PyObject *globals;
PyObject *name = Py_None;
PyObject *defaults = Py_None;
PyObject *closure = Py_None;
- if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
- &PyCode_Type, &code, &PyDict_Type, &globals, &name, &defaults, &closure)) {
+ fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 2, 5, 0, argsbuf);
+ if (!fastargs) {
goto exit;
}
+ if (!PyObject_TypeCheck(fastargs[0], &PyCode_Type)) {
+ _PyArg_BadArgument("function", 1, (&PyCode_Type)->tp_name, fastargs[0]);
+ goto exit;
+ }
+ code = (PyCodeObject *)fastargs[0];
+ if (!PyDict_Check(fastargs[1])) {
+ _PyArg_BadArgument("function", 2, "dict", fastargs[1]);
+ goto exit;
+ }
+ globals = fastargs[1];
+ if (!noptargs) {
+ goto skip_optional_pos;
+ }
+ if (fastargs[2]) {
+ name = fastargs[2];
+ if (!--noptargs) {
+ goto skip_optional_pos;
+ }
+ }
+ if (fastargs[3]) {
+ defaults = fastargs[3];
+ if (!--noptargs) {
+ goto skip_optional_pos;
+ }
+ }
+ closure = fastargs[4];
+skip_optional_pos:
return_value = func_new_impl(type, code, globals, name, defaults, closure);
exit:
return return_value;
}
-/*[clinic end generated code: output=a6ab29e4dd33010a input=a9049054013a1b77]*/
+/*[clinic end generated code: output=1d01072cd5620d7e input=a9049054013a1b77]*/
diff --git a/Objects/clinic/listobject.c.h b/Objects/clinic/listobject.c.h
index 447cdef..7b8e2d9 100644
--- a/Objects/clinic/listobject.c.h
+++ b/Objects/clinic/listobject.c.h
@@ -169,14 +169,35 @@ list_sort(PyListObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject
{
PyObject *return_value = NULL;
static const char * const _keywords[] = {"key", "reverse", NULL};
- static _PyArg_Parser _parser = {"|$Oi:sort", _keywords, 0};
+ static _PyArg_Parser _parser = {NULL, _keywords, "sort", 0};
+ PyObject *argsbuf[2];
+ Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
PyObject *keyfunc = Py_None;
int reverse = 0;
- if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
- &keyfunc, &reverse)) {
+ args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 0, 0, argsbuf);
+ if (!args) {
goto exit;
}
+ if (!noptargs) {
+ goto skip_optional_kwonly;
+ }
+ if (args[0]) {
+ keyfunc = args[0];
+ if (!--noptargs) {
+ goto skip_optional_kwonly;
+ }
+ }
+ if (PyFloat_Check(args[1])) {
+ PyErr_SetString(PyExc_TypeError,
+ "integer argument expected, got float" );
+ goto exit;
+ }
+ reverse = _PyLong_AsInt(args[1]);
+ if (reverse == -1 && PyErr_Occurred()) {
+ goto exit;
+ }
+skip_optional_kwonly:
return_value = list_sort_impl(self, keyfunc, reverse);
exit:
@@ -338,4 +359,4 @@ list___reversed__(PyListObject *self, PyObject *Py_UNUSED(ignored))
{
return list___reversed___impl(self);
}
-/*[clinic end generated code: output=4a835f9880a72273 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=d1d5078edb7d3cf4 input=a9049054013a1b77]*/
diff --git a/Objects/clinic/longobject.c.h b/Objects/clinic/longobject.c.h
index 6770023..453edba 100644
--- a/Objects/clinic/longobject.c.h
+++ b/Objects/clinic/longobject.c.h
@@ -10,14 +10,29 @@ long_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static const char * const _keywords[] = {"", "base", NULL};
- static _PyArg_Parser _parser = {"|OO:int", _keywords, 0};
+ static _PyArg_Parser _parser = {NULL, _keywords, "int", 0};
+ PyObject *argsbuf[2];
+ PyObject * const *fastargs;
+ Py_ssize_t nargs = PyTuple_GET_SIZE(args);
+ Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 0;
PyObject *x = NULL;
PyObject *obase = NULL;
- if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
- &x, &obase)) {
+ fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 0, 2, 0, argsbuf);
+ if (!fastargs) {
goto exit;
}
+ if (nargs < 1) {
+ goto skip_optional_posonly;
+ }
+ noptargs--;
+ x = fastargs[0];
+skip_optional_posonly:
+ if (!noptargs) {
+ goto skip_optional_pos;
+ }
+ obase = fastargs[1];
+skip_optional_pos:
return_value = long_new_impl(type, x, obase);
exit:
@@ -183,15 +198,50 @@ int_to_bytes(PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *
{
PyObject *return_value = NULL;
static const char * const _keywords[] = {"length", "byteorder", "signed", NULL};
- static _PyArg_Parser _parser = {"nU|$p:to_bytes", _keywords, 0};
+ static _PyArg_Parser _parser = {NULL, _keywords, "to_bytes", 0};
+ PyObject *argsbuf[3];
+ Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 2;
Py_ssize_t length;
PyObject *byteorder;
int is_signed = 0;
- if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
- &length, &byteorder, &is_signed)) {
+ args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 2, 2, 0, argsbuf);
+ if (!args) {
+ goto exit;
+ }
+ if (PyFloat_Check(args[0])) {
+ PyErr_SetString(PyExc_TypeError,
+ "integer argument expected, got float" );
+ goto exit;
+ }
+ {
+ Py_ssize_t ival = -1;
+ PyObject *iobj = PyNumber_Index(args[0]);
+ if (iobj != NULL) {
+ ival = PyLong_AsSsize_t(iobj);
+ Py_DECREF(iobj);
+ }
+ if (ival == -1 && PyErr_Occurred()) {
+ goto exit;
+ }
+ length = ival;
+ }
+ if (!PyUnicode_Check(args[1])) {
+ _PyArg_BadArgument("to_bytes", 2, "str", args[1]);
goto exit;
}
+ if (PyUnicode_READY(args[1]) == -1) {
+ goto exit;
+ }
+ byteorder = args[1];
+ if (!noptargs) {
+ goto skip_optional_kwonly;
+ }
+ is_signed = PyObject_IsTrue(args[2]);
+ if (is_signed < 0) {
+ goto exit;
+ }
+skip_optional_kwonly:
return_value = int_to_bytes_impl(self, length, byteorder, is_signed);
exit:
@@ -230,18 +280,37 @@ int_from_bytes(PyTypeObject *type, PyObject *const *args, Py_ssize_t nargs, PyOb
{
PyObject *return_value = NULL;
static const char * const _keywords[] = {"bytes", "byteorder", "signed", NULL};
- static _PyArg_Parser _parser = {"OU|$p:from_bytes", _keywords, 0};
+ static _PyArg_Parser _parser = {NULL, _keywords, "from_bytes", 0};
+ PyObject *argsbuf[3];
+ Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 2;
PyObject *bytes_obj;
PyObject *byteorder;
int is_signed = 0;
- if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
- &bytes_obj, &byteorder, &is_signed)) {
+ args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 2, 2, 0, argsbuf);
+ if (!args) {
+ goto exit;
+ }
+ bytes_obj = args[0];
+ if (!PyUnicode_Check(args[1])) {
+ _PyArg_BadArgument("from_bytes", 2, "str", args[1]);
+ goto exit;
+ }
+ if (PyUnicode_READY(args[1]) == -1) {
+ goto exit;
+ }
+ byteorder = args[1];
+ if (!noptargs) {
+ goto skip_optional_kwonly;
+ }
+ is_signed = PyObject_IsTrue(args[2]);
+ if (is_signed < 0) {
goto exit;
}
+skip_optional_kwonly:
return_value = int_from_bytes_impl(type, bytes_obj, byteorder, is_signed);
exit:
return return_value;
}
-/*[clinic end generated code: output=3b91cda9d83abaa2 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=709503897c55bca1 input=a9049054013a1b77]*/
diff --git a/Objects/clinic/moduleobject.c.h b/Objects/clinic/moduleobject.c.h
index e841e76..512edee 100644
--- a/Objects/clinic/moduleobject.c.h
+++ b/Objects/clinic/moduleobject.c.h
@@ -18,17 +18,34 @@ module___init__(PyObject *self, PyObject *args, PyObject *kwargs)
{
int return_value = -1;
static const char * const _keywords[] = {"name", "doc", NULL};
- static _PyArg_Parser _parser = {"U|O:module", _keywords, 0};
+ static _PyArg_Parser _parser = {NULL, _keywords, "module", 0};
+ PyObject *argsbuf[2];
+ PyObject * const *fastargs;
+ Py_ssize_t nargs = PyTuple_GET_SIZE(args);
+ Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 1;
PyObject *name;
PyObject *doc = Py_None;
- if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
- &name, &doc)) {
+ fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 1, 2, 0, argsbuf);
+ if (!fastargs) {
goto exit;
}
+ if (!PyUnicode_Check(fastargs[0])) {
+ _PyArg_BadArgument("module", 1, "str", fastargs[0]);
+ goto exit;
+ }
+ if (PyUnicode_READY(fastargs[0]) == -1) {
+ goto exit;
+ }
+ name = fastargs[0];
+ if (!noptargs) {
+ goto skip_optional_pos;
+ }
+ doc = fastargs[1];
+skip_optional_pos:
return_value = module___init___impl((PyModuleObject *)self, name, doc);
exit:
return return_value;
}
-/*[clinic end generated code: output=7b1b324bf6a590d1 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=d7b7ca1237597b08 input=a9049054013a1b77]*/
diff --git a/Objects/clinic/odictobject.c.h b/Objects/clinic/odictobject.c.h
index 1aea36e..f43bc14 100644
--- a/Objects/clinic/odictobject.c.h
+++ b/Objects/clinic/odictobject.c.h
@@ -19,14 +19,22 @@ OrderedDict_fromkeys(PyTypeObject *type, PyObject *const *args, Py_ssize_t nargs
{
PyObject *return_value = NULL;
static const char * const _keywords[] = {"iterable", "value", NULL};
- static _PyArg_Parser _parser = {"O|O:fromkeys", _keywords, 0};
+ static _PyArg_Parser _parser = {NULL, _keywords, "fromkeys", 0};
+ PyObject *argsbuf[2];
+ Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
PyObject *seq;
PyObject *value = Py_None;
- if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
- &seq, &value)) {
+ args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 2, 0, argsbuf);
+ if (!args) {
goto exit;
}
+ seq = args[0];
+ if (!noptargs) {
+ goto skip_optional_pos;
+ }
+ value = args[1];
+skip_optional_pos:
return_value = OrderedDict_fromkeys_impl(type, seq, value);
exit:
@@ -53,14 +61,22 @@ OrderedDict_setdefault(PyODictObject *self, PyObject *const *args, Py_ssize_t na
{
PyObject *return_value = NULL;
static const char * const _keywords[] = {"key", "default", NULL};
- static _PyArg_Parser _parser = {"O|O:setdefault", _keywords, 0};
+ static _PyArg_Parser _parser = {NULL, _keywords, "setdefault", 0};
+ PyObject *argsbuf[2];
+ Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
PyObject *key;
PyObject *default_value = Py_None;
- if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
- &key, &default_value)) {
+ args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 2, 0, argsbuf);
+ if (!args) {
goto exit;
}
+ key = args[0];
+ if (!noptargs) {
+ goto skip_optional_pos;
+ }
+ default_value = args[1];
+skip_optional_pos:
return_value = OrderedDict_setdefault_impl(self, key, default_value);
exit:
@@ -86,13 +102,23 @@ OrderedDict_popitem(PyODictObject *self, PyObject *const *args, Py_ssize_t nargs
{
PyObject *return_value = NULL;
static const char * const _keywords[] = {"last", NULL};
- static _PyArg_Parser _parser = {"|p:popitem", _keywords, 0};
+ static _PyArg_Parser _parser = {NULL, _keywords, "popitem", 0};
+ PyObject *argsbuf[1];
+ Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
int last = 1;
- if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
- &last)) {
+ args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 1, 0, argsbuf);
+ if (!args) {
+ goto exit;
+ }
+ if (!noptargs) {
+ goto skip_optional_pos;
+ }
+ last = PyObject_IsTrue(args[0]);
+ if (last < 0) {
goto exit;
}
+skip_optional_pos:
return_value = OrderedDict_popitem_impl(self, last);
exit:
@@ -118,17 +144,28 @@ OrderedDict_move_to_end(PyODictObject *self, PyObject *const *args, Py_ssize_t n
{
PyObject *return_value = NULL;
static const char * const _keywords[] = {"key", "last", NULL};
- static _PyArg_Parser _parser = {"O|p:move_to_end", _keywords, 0};
+ static _PyArg_Parser _parser = {NULL, _keywords, "move_to_end", 0};
+ PyObject *argsbuf[2];
+ Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
PyObject *key;
int last = 1;
- if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
- &key, &last)) {
+ args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 2, 0, argsbuf);
+ if (!args) {
+ goto exit;
+ }
+ key = args[0];
+ if (!noptargs) {
+ goto skip_optional_pos;
+ }
+ last = PyObject_IsTrue(args[1]);
+ if (last < 0) {
goto exit;
}
+skip_optional_pos:
return_value = OrderedDict_move_to_end_impl(self, key, last);
exit:
return return_value;
}
-/*[clinic end generated code: output=f6f189e1fe032e0b input=a9049054013a1b77]*/
+/*[clinic end generated code: output=8eb1296df9142908 input=a9049054013a1b77]*/
diff --git a/Objects/clinic/structseq.c.h b/Objects/clinic/structseq.c.h
index ed6a564..b3b4836 100644
--- a/Objects/clinic/structseq.c.h
+++ b/Objects/clinic/structseq.c.h
@@ -10,17 +10,27 @@ structseq_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static const char * const _keywords[] = {"sequence", "dict", NULL};
- static _PyArg_Parser _parser = {"O|O:structseq", _keywords, 0};
+ static _PyArg_Parser _parser = {NULL, _keywords, "structseq", 0};
+ PyObject *argsbuf[2];
+ PyObject * const *fastargs;
+ Py_ssize_t nargs = PyTuple_GET_SIZE(args);
+ Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 1;
PyObject *arg;
PyObject *dict = NULL;
- if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
- &arg, &dict)) {
+ fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 1, 2, 0, argsbuf);
+ if (!fastargs) {
goto exit;
}
+ arg = fastargs[0];
+ if (!noptargs) {
+ goto skip_optional_pos;
+ }
+ dict = fastargs[1];
+skip_optional_pos:
return_value = structseq_new_impl(type, arg, dict);
exit:
return return_value;
}
-/*[clinic end generated code: output=cd643eb89b5d312a input=a9049054013a1b77]*/
+/*[clinic end generated code: output=ed3019acf49b656c input=a9049054013a1b77]*/
diff --git a/Objects/clinic/unicodeobject.c.h b/Objects/clinic/unicodeobject.c.h
index 3e40a62..647507d 100644
--- a/Objects/clinic/unicodeobject.c.h
+++ b/Objects/clinic/unicodeobject.c.h
@@ -142,14 +142,51 @@ unicode_encode(PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject
{
PyObject *return_value = NULL;
static const char * const _keywords[] = {"encoding", "errors", NULL};
- static _PyArg_Parser _parser = {"|ss:encode", _keywords, 0};
+ static _PyArg_Parser _parser = {NULL, _keywords, "encode", 0};
+ PyObject *argsbuf[2];
+ Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
const char *encoding = NULL;
const char *errors = NULL;
- if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
- &encoding, &errors)) {
+ args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 2, 0, argsbuf);
+ if (!args) {
goto exit;
}
+ if (!noptargs) {
+ goto skip_optional_pos;
+ }
+ if (args[0]) {
+ if (!PyUnicode_Check(args[0])) {
+ _PyArg_BadArgument("encode", 1, "str", args[0]);
+ goto exit;
+ }
+ Py_ssize_t encoding_length;
+ encoding = PyUnicode_AsUTF8AndSize(args[0], &encoding_length);
+ if (encoding == NULL) {
+ goto exit;
+ }
+ if (strlen(encoding) != (size_t)encoding_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
+ if (!--noptargs) {
+ goto skip_optional_pos;
+ }
+ }
+ if (!PyUnicode_Check(args[1])) {
+ _PyArg_BadArgument("encode", 2, "str", args[1]);
+ goto exit;
+ }
+ Py_ssize_t errors_length;
+ errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
+ if (errors == NULL) {
+ goto exit;
+ }
+ if (strlen(errors) != (size_t)errors_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
+skip_optional_pos:
return_value = unicode_encode_impl(self, encoding, errors);
exit:
@@ -175,13 +212,28 @@ unicode_expandtabs(PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyOb
{
PyObject *return_value = NULL;
static const char * const _keywords[] = {"tabsize", NULL};
- static _PyArg_Parser _parser = {"|i:expandtabs", _keywords, 0};
+ static _PyArg_Parser _parser = {NULL, _keywords, "expandtabs", 0};
+ PyObject *argsbuf[1];
+ Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
int tabsize = 8;
- if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
- &tabsize)) {
+ args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 1, 0, argsbuf);
+ if (!args) {
goto exit;
}
+ if (!noptargs) {
+ goto skip_optional_pos;
+ }
+ if (PyFloat_Check(args[0])) {
+ PyErr_SetString(PyExc_TypeError,
+ "integer argument expected, got float" );
+ goto exit;
+ }
+ tabsize = _PyLong_AsInt(args[0]);
+ if (tabsize == -1 && PyErr_Occurred()) {
+ goto exit;
+ }
+skip_optional_pos:
return_value = unicode_expandtabs_impl(self, tabsize);
exit:
@@ -781,14 +833,43 @@ unicode_split(PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject
{
PyObject *return_value = NULL;
static const char * const _keywords[] = {"sep", "maxsplit", NULL};
- static _PyArg_Parser _parser = {"|On:split", _keywords, 0};
+ static _PyArg_Parser _parser = {NULL, _keywords, "split", 0};
+ PyObject *argsbuf[2];
+ Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
PyObject *sep = Py_None;
Py_ssize_t maxsplit = -1;
- if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
- &sep, &maxsplit)) {
+ args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 2, 0, argsbuf);
+ if (!args) {
+ goto exit;
+ }
+ if (!noptargs) {
+ goto skip_optional_pos;
+ }
+ if (args[0]) {
+ sep = args[0];
+ if (!--noptargs) {
+ goto skip_optional_pos;
+ }
+ }
+ if (PyFloat_Check(args[1])) {
+ PyErr_SetString(PyExc_TypeError,
+ "integer argument expected, got float" );
goto exit;
}
+ {
+ Py_ssize_t ival = -1;
+ PyObject *iobj = PyNumber_Index(args[1]);
+ if (iobj != NULL) {
+ ival = PyLong_AsSsize_t(iobj);
+ Py_DECREF(iobj);
+ }
+ if (ival == -1 && PyErr_Occurred()) {
+ goto exit;
+ }
+ maxsplit = ival;
+ }
+skip_optional_pos:
return_value = unicode_split_impl(self, sep, maxsplit);
exit:
@@ -854,14 +935,43 @@ unicode_rsplit(PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject
{
PyObject *return_value = NULL;
static const char * const _keywords[] = {"sep", "maxsplit", NULL};
- static _PyArg_Parser _parser = {"|On:rsplit", _keywords, 0};
+ static _PyArg_Parser _parser = {NULL, _keywords, "rsplit", 0};
+ PyObject *argsbuf[2];
+ Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
PyObject *sep = Py_None;
Py_ssize_t maxsplit = -1;
- if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
- &sep, &maxsplit)) {
+ args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 2, 0, argsbuf);
+ if (!args) {
goto exit;
}
+ if (!noptargs) {
+ goto skip_optional_pos;
+ }
+ if (args[0]) {
+ sep = args[0];
+ if (!--noptargs) {
+ goto skip_optional_pos;
+ }
+ }
+ if (PyFloat_Check(args[1])) {
+ PyErr_SetString(PyExc_TypeError,
+ "integer argument expected, got float" );
+ goto exit;
+ }
+ {
+ Py_ssize_t ival = -1;
+ PyObject *iobj = PyNumber_Index(args[1]);
+ if (iobj != NULL) {
+ ival = PyLong_AsSsize_t(iobj);
+ Py_DECREF(iobj);
+ }
+ if (ival == -1 && PyErr_Occurred()) {
+ goto exit;
+ }
+ maxsplit = ival;
+ }
+skip_optional_pos:
return_value = unicode_rsplit_impl(self, sep, maxsplit);
exit:
@@ -888,13 +998,28 @@ unicode_splitlines(PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyOb
{
PyObject *return_value = NULL;
static const char * const _keywords[] = {"keepends", NULL};
- static _PyArg_Parser _parser = {"|i:splitlines", _keywords, 0};
+ static _PyArg_Parser _parser = {NULL, _keywords, "splitlines", 0};
+ PyObject *argsbuf[1];
+ Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
int keepends = 0;
- if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
- &keepends)) {
+ args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 1, 0, argsbuf);
+ if (!args) {
+ goto exit;
+ }
+ if (!noptargs) {
+ goto skip_optional_pos;
+ }
+ if (PyFloat_Check(args[0])) {
+ PyErr_SetString(PyExc_TypeError,
+ "integer argument expected, got float" );
+ goto exit;
+ }
+ keepends = _PyLong_AsInt(args[0]);
+ if (keepends == -1 && PyErr_Occurred()) {
goto exit;
}
+skip_optional_pos:
return_value = unicode_splitlines_impl(self, keepends);
exit:
@@ -1107,4 +1232,4 @@ unicode_sizeof(PyObject *self, PyObject *Py_UNUSED(ignored))
{
return unicode_sizeof_impl(self);
}
-/*[clinic end generated code: output=087ff163a10505ae input=a9049054013a1b77]*/
+/*[clinic end generated code: output=d1541724cb4a0070 input=a9049054013a1b77]*/