mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
Issue #20226: Major improvements to Argument Clinic.
* You may now specify an expression as the default value for a parameter! Example: "sys.maxsize - 1". This support is intentionally quite limited; you may only use values that can be represented as static C values. * Removed "doc_default", simplified support for "c_default" and "py_default". (I'm not sure we still even need "py_default", but I'm leaving it in for now in case a use presents itself.) * Parameter lines support a trailing '\\' as a line continuation character, allowing you to break up long lines. * The argument parsing code generated when supporting optional groups now uses PyTuple_GET_SIZE instead of PyTuple_GetSize, leading to a 850% speedup in parsing. (Just kidding, this is an unmeasurable difference.) * A bugfix for the recent regression where the generated prototype from pydoc for builtins would be littered with unreadable "=<object ...>"" default values for parameters that had no default value. * Converted some asserts into proper failure messages. * Many doc improvements and fixes.
This commit is contained in:
parent
e1f554490d
commit
2a727916c5
13 changed files with 470 additions and 185 deletions
|
@ -39,7 +39,7 @@ _opcode_stack_effect(PyModuleDef *module, PyObject *args)
|
|||
int oparg = 0;
|
||||
int _return_value;
|
||||
|
||||
switch (PyTuple_Size(args)) {
|
||||
switch (PyTuple_GET_SIZE(args)) {
|
||||
case 1:
|
||||
if (!PyArg_ParseTuple(args, "i:stack_effect", &opcode))
|
||||
return NULL;
|
||||
|
@ -64,7 +64,7 @@ exit:
|
|||
|
||||
static int
|
||||
_opcode_stack_effect_impl(PyModuleDef *module, int opcode, int group_right_1, int oparg)
|
||||
/*[clinic end generated code: checksum=e880e62dc7b0de73403026eaf4f8074aa106358b]*/
|
||||
/*[clinic end generated code: checksum=47e76ec27523da4ab192713642d32482cd743aa4]*/
|
||||
{
|
||||
int effect;
|
||||
if (HAS_ARG(opcode)) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue