8000 [3.12] gh-86457: Fix signature for code.replace() (GH-23199) (#107744) · python/cpython@9864f9a · GitHub
[go: up one dir, main page]

Skip to content

Commit 9864f9a

Browse files
[3.12] gh-86457: Fix signature for code.replace() (GH-23199) (#107744)
* [3.12] gh-86457: Fix signature for code.replace() (GH-23199) Also add support of @text_signature in Argument Clinic.. (cherry picked from commit 0e6e32f) Co-authored-by: Serhiy Storchaka <storchaka@gmail.com> * Update 2023-08-07-16-30-48.gh-issue-95065.-im4R5.rst
1 parent 2598a1a commit 9864f9a

File tree

4 files changed

+177
-172
lines changed

4 files changed

+177
-172
lines changed
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Argument Clinic now supports overriding automatically generated signature by
2+
using directive ``@text_signature``.

Objects/clinic/codeobject.c.h

Lines changed: 14 additions & 20 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Objects/codeobject.c

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1962,27 +1962,28 @@ code_linesiterator(PyCodeObject *code, PyObject *Py_UNUSED(args))
19621962
}
19631963

19641964
/*[clinic input]
1965+
@text_signature "($self, /, **changes)"
19651966
code.replace
19661967
19671968
*
1968-
co_argcount: int(c_default="self->co_argcount") = -1
1969-
co_posonlyargcount: int(c_default="self->co_posonlyargcount") = -1
1970-
co_kwonlyargcount: int(c_default="self->co_kwonlyargcount") = -1
1971-
co_nlocals: int(c_default="self->co_nlocals") = -1
1972-
co_stacksize: int(c_default="self->co_stacksize") = -1
1973-
co_flags: int(c_default="self->co_flags") = -1
1974-
co_firstlineno: int(c_default="self->co_firstlineno") = -1
1975-
co_code: PyBytesObject(c_default="NULL") = None
1976-
co_consts: object(subclass_of="&PyTuple_Type", c_default="self->co_consts") = None
1977-
co_names: object(subclass_of="&PyTuple_Type", c_default="self->co_names") = None
1978-
co_varnames: object(subclass_of="&PyTuple_Type", c_default="NULL") = None
1979-
co_freevars: object(subclass_of="&PyTuple_Type", c_default="NULL") = None
1980-
co_cellvars: object(subclass_of="&PyTuple_Type", c_default="NULL") = None
1981-
co_filename: unicode(c_default="self->co_filename") = None
1982-
co_name: unicode(c_default="self->co_name") = None
1983-
co_qualname: unicode(c_default="self->co_qualname") = None
1984-
co_linetable: PyBytesObject(c_default="(PyBytesObject *)self->co_linetable") = None
1985-
co_exceptiontable: PyBytesObject(c_default="(PyBytesObject *)self->co_exceptiontable") = None
1969+
co_argcount: int(c_default="self->co_argcount") = unchanged
1970+
co_posonlyargcount: int(c_default="self->co_posonlyargcount") = unchanged
1971+
co_kwonlyargcount: int(c_default="self->co_kwonlyargcount") = unchanged
1972+
co_nlocals: int(c_default="self->co_nlocals") = unchanged
1973+
co_stacksize: int(c_default="self->co_stacksize") = unchanged
1974+
co_flags: int(c_default="self->co_flags") = unchanged
1975+
co_firstlineno: int(c_default="self->co_firstlineno") = unchanged
1976+
co_code: object(subclass_of="&PyBytes_Type", c_default="NULL") = unchanged
1977+
co_consts: object(subclass_of="&PyTuple_Type", c_default="self->co_consts") = unchanged
1978+
co_names: object(subclass_of="&PyTuple_Type", c_default="self->co_names") = unchanged
1979+
co_varnames: object(subclass_of="&PyTuple_Type", c_default="NULL") = unchanged
1980+
co_freevars: object(subclass_of="&PyTuple_Type", c_default="NULL") = unchanged
1981+
co_cellvars: object(subclass_of="&PyTuple_Type", c_default="NULL") = unchanged
1982+
co_filename: unicode(c_default="self->co_filename") = unchanged
1983+
co_name: unicode(c_default="self->co_name") = unchanged
1984+
co_qualname: unicode(c_default="self->co_qualname") = unchanged
1985+
co_linetable: object(subclass_of="&PyBytes_Type", c_default="self->co_linetable") = unchanged
1986+
co_exceptiontable: object(subclass_of="&PyBytes_Type", c_default="self->co_exceptiontable") = unchanged
19861987
19871988
Return a copy of the code object with new values for the specified fields.
19881989
[clinic start generated code]*/
@@ -1991,14 +1992,13 @@ static PyObject *
19911992
code_replace_impl(PyCodeObject *self, int co_argcount,
19921993
int co_posonlyargcount, int co_kwonlyargcount,
19931994
int co_nlocals, int co_stacksize, int co_flags,
1994-
int co_firstlineno, PyBytesObject *co_code,
1995-
PyObject *co_consts, PyObject *co_names,
1996-
PyObject *co_varnames, PyObject *co_freevars,
1997-
PyObject *co_cellvars, PyObject *co_filename,
1998-
PyObject *co_name, PyObject *co_qualname,
1999-
PyBytesObject *co_linetable,
2000-
PyBytesObject *co_exceptiontable)
2001-
/*[clinic end generated code: output=b6cd9988391d5711 input=f6f68e03571f8d7c]*/
1995+
int co_firstlineno, PyObject *co_code, PyObject *co_consts,
1996+
PyObject *co_names, PyObject *co_varnames,
1997+
PyObject *co_freevars, PyObject *co_cellvars,
1998+
PyObject *co_filename, PyObject *co_name,
1999+
PyObject *co_qualname, PyObject *co_linetable,
2000+
PyObject *co_exceptiontable)
2001+
/*[clinic end generated code: output=e75c48a15def18b9 input=18e280e07846c122]*/
20022002
{
20032003
#define CHECK_INT_ARG(ARG) \
20042004
if (ARG < 0) { \
@@ -2023,7 +2023,7 @@ code_replace_impl(PyCodeObject *self, int co_argcount,
20232023
if (code == NULL) {
20242024
return NULL;
20252025
}
2026-
co_code = (PyBytesObject *)code;
2026+
co_code = code;
20272027
}
20282028

20292029
if (PySys_Audit("code.__new__", "OOOiiiiii",
@@ -2062,10 +2062,10 @@ code_replace_impl(PyCodeObject *self, int co_argcount,
20622062

20632063
co = PyCode_NewWithPosOnlyArgs(
20642064
co_argcount, co_posonlyargcount, co_kwonlyargcount, co_nlocals,
2065-
co_stacksize, co_flags, (PyObject*)co_code, co_consts, co_names,
2065+
co_stacksize, co_flags, co_code, co_consts, co_names,
20662066
co_varnames, co_freevars, co_cellvars, co_filename, co_name,
20672067
co_qualname, co_firstlineno,
2068-
(PyObject*)co_linetable, (PyObject*)co_exceptiontable);
2068+
co_linetable, co_exceptiontable);
20692069

20702070
error:
20712071
Py_XDECREF(code);

0 commit comments

Comments
 (0)
0