summaryrefslogtreecommitdiffstats
path: root/Objects/clinic
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2023-08-07 20:34:53 (GMT)
committerGitHub <noreply@github.com>2023-08-07 20:34:53 (GMT)
commit0e6e32fb84b2f7cb668e0b9927637587081e38cd (patch)
tree8d4b794983453a913ac6d805016b352b84373bb8 /Objects/clinic
parentbea5f93196d213d6fbf4ba8984caf4c3cd1da882 (diff)
downloadcpython-0e6e32fb84b2f7cb668e0b9927637587081e38cd.zip
cpython-0e6e32fb84b2f7cb668e0b9927637587081e38cd.tar.gz
cpython-0e6e32fb84b2f7cb668e0b9927637587081e38cd.tar.bz2
gh-86457: Fix signature for code.replace() (GH-23199)
Also add support of @text_signature in Argument Clinic.
Diffstat (limited to 'Objects/clinic')
-rw-r--r--Objects/clinic/codeobject.c.h34
1 files changed, 14 insertions, 20 deletions
diff --git a/Objects/clinic/codeobject.c.h b/Objects/clinic/codeobject.c.h
index 1f2ab56..511a8e4 100644
--- a/Objects/clinic/codeobject.c.h
+++ b/Objects/clinic/codeobject.c.h
@@ -154,12 +154,7 @@ exit:
}
PyDoc_STRVAR(code_replace__doc__,
-"replace($self, /, *, co_argcount=-1, co_posonlyargcount=-1,\n"
-" co_kwonlyargcount=-1, co_nlocals=-1, co_stacksize=-1,\n"
-" co_flags=-1, co_firstlineno=-1, co_code=None, co_consts=None,\n"
-" co_names=None, co_varnames=None, co_freevars=None,\n"
-" co_cellvars=None, co_filename=None, co_name=None,\n"
-" co_qualname=None, co_linetable=None, co_exceptiontable=None)\n"
+"replace($self, /, **changes)\n"
"--\n"
"\n"
"Return a copy of the code object with new values for the specified fields.");
@@ -171,13 +166,12 @@ static PyObject *
code_replace_impl(PyCodeObject *self, int co_argcount,
int co_posonlyargcount, int co_kwonlyargcount,
int co_nlocals, int co_stacksize, int co_flags,
- int co_firstlineno, PyBytesObject *co_code,
- PyObject *co_consts, PyObject *co_names,
- PyObject *co_varnames, PyObject *co_freevars,
- PyObject *co_cellvars, PyObject *co_filename,
- PyObject *co_name, PyObject *co_qualname,
- PyBytesObject *co_linetable,
- PyBytesObject *co_exceptiontable);
+ int co_firstlineno, PyObject *co_code, PyObject *co_consts,
+ PyObject *co_names, PyObject *co_varnames,
+ PyObject *co_freevars, PyObject *co_cellvars,
+ PyObject *co_filename, PyObject *co_name,
+ PyObject *co_qualname, PyObject *co_linetable,
+ PyObject *co_exceptiontable);
static PyObject *
code_replace(PyCodeObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
@@ -217,7 +211,7 @@ code_replace(PyCodeObject *self, PyObject *const *args, Py_ssize_t nargs, PyObje
int co_stacksize = self->co_stacksize;
int co_flags = self->co_flags;
int co_firstlineno = self->co_firstlineno;
- PyBytesObject *co_code = NULL;
+ PyObject *co_code = NULL;
PyObject *co_consts = self->co_consts;
PyObject *co_names = self->co_names;
PyObject *co_varnames = NULL;
@@ -226,8 +220,8 @@ code_replace(PyCodeObject *self, PyObject *const *args, Py_ssize_t nargs, PyObje
PyObject *co_filename = self->co_filename;
PyObject *co_name = self->co_name;
PyObject *co_qualname = self->co_qualname;
- PyBytesObject *co_linetable = (PyBytesObject *)self->co_linetable;
- PyBytesObject *co_exceptiontable = (PyBytesObject *)self->co_exceptiontable;
+ PyObject *co_linetable = self->co_linetable;
+ PyObject *co_exceptiontable = self->co_exceptiontable;
args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 0, 0, argsbuf);
if (!args) {
@@ -304,7 +298,7 @@ code_replace(PyCodeObject *self, PyObject *const *args, Py_ssize_t nargs, PyObje
_PyArg_BadArgument("replace", "argument 'co_code'", "bytes", args[7]);
goto exit;
}
- co_code = (PyBytesObject *)args[7];
+ co_code = args[7];
if (!--noptargs) {
goto skip_optional_kwonly;
}
@@ -394,7 +388,7 @@ code_replace(PyCodeObject *self, PyObject *const *args, Py_ssize_t nargs, PyObje
_PyArg_BadArgument("replace", "argument 'co_linetable'", "bytes", args[16]);
goto exit;
}
- co_linetable = (PyBytesObject *)args[16];
+ co_linetable = args[16];
if (!--noptargs) {
goto skip_optional_kwonly;
}
@@ -403,7 +397,7 @@ code_replace(PyCodeObject *self, PyObject *const *args, Py_ssize_t nargs, PyObje
_PyArg_BadArgument("replace", "argument 'co_exceptiontable'", "bytes", args[17]);
goto exit;
}
- co_exceptiontable = (PyBytesObject *)args[17];
+ co_exceptiontable = args[17];
skip_optional_kwonly:
return_value = code_replace_impl(self, co_argcount, co_posonlyargcount, co_kwonlyargcount, co_nlocals, co_stacksize, co_flags, co_firstlineno, co_code, co_consts, co_names, co_varnames, co_freevars, co_cellvars, co_filename, co_name, co_qualname, co_linetable, co_exceptiontable);
@@ -470,4 +464,4 @@ code__varname_from_oparg(PyCodeObject *self, PyObject *const *args, Py_ssize_t n
exit:
return return_value;
}
-/*[clinic end generated code: output=4ca4c0c403dbfa71 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=16c95266bbc4bc03 input=a9049054013a1b77]*/