diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index 00b0f985e33868..25f71c4253d84c 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -1353,3 +1353,8 @@ Removed Python already implicitly installs signal handlers: see :c:member:`PyConfig.install_signal_handlers`. (Contributed by Victor Stinner in :issue:`41713`.) + +* Remove the ``PyAST_Validate()`` function. It is no longer possible to build a + AST object (``mod_ty`` type) with the public C API. The function was already + excluded from the limited C API (:pep:`384`). + (Contributed by Victor Stinner in :issue:`43244`.) diff --git a/Include/ast.h b/Include/ast.h index 2f19b1a870dac1..82bfa4800cdd55 100644 --- a/Include/ast.h +++ b/Include/ast.h @@ -7,8 +7,6 @@ extern "C" { #include "Python-ast.h" /* mod_ty */ -PyAPI_FUNC(int) PyAST_Validate(mod_ty); - #ifdef __cplusplus } #endif diff --git a/Include/internal/pycore_ast.h b/Include/internal/pycore_ast.h index 38c9212b07ca00..6cc0b9b3b000fd 100644 --- a/Include/internal/pycore_ast.h +++ b/Include/internal/pycore_ast.h @@ -10,6 +10,8 @@ extern "C" { #include "Python-ast.h" // expr_ty +extern int _PyAST_Validate(mod_ty); + /* _PyAST_ExprAsUnicode is defined in ast_unparse.c */ extern PyObject* _PyAST_ExprAsUnicode(expr_ty); diff --git a/Misc/NEWS.d/next/C API/2021-03-17-23-20-07.bpo-43244.diyn2C.rst b/Misc/NEWS.d/next/C API/2021-03-17-23-20-07.bpo-43244.diyn2C.rst new file mode 100644 index 00000000000000..6632ace472289a --- /dev/null +++ b/Misc/NEWS.d/next/C API/2021-03-17-23-20-07.bpo-43244.diyn2C.rst @@ -0,0 +1,3 @@ +Remove the ``PyAST_Validate()`` function. It is no longer possible to build a +AST object (``mod_ty`` type) with the public C API. The function was already +excluded from the limited C API (:pep:`384`). Patch by Victor Stinner. diff --git a/Parser/pegen.c b/Parser/pegen.c index 84bdf8dd3f89e2..24aa3af336c347 100644 --- a/Parser/pegen.c +++ b/Parser/pegen.c @@ -1,4 +1,5 @@ #include +#include "pycore_ast.h" // _PyAST_Validate() #include #include "tokenizer.h" @@ -1271,7 +1272,7 @@ _PyPegen_run_parser(Parser *p) p->start_rule == Py_file_input || p->start_rule == Py_eval_input) { - if (!PyAST_Validate(res)) { + if (!_PyAST_Validate(res)) { return NULL; } } diff --git a/Python/ast.c b/Python/ast.c index c58b4a69b1e321..8ac2e60c92fde7 100644 --- a/Python/ast.c +++ b/Python/ast.c @@ -551,7 +551,7 @@ validate_exprs(asdl_expr_seq *exprs, expr_context_ty ctx, int null_ok) } int -PyAST_Validate(mod_ty mod) +_PyAST_Validate(mod_ty mod) { int res = 0; diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c index 52591c4a46f3db..4683103e09437e 100644 --- a/Python/bltinmodule.c +++ b/Python/bltinmodule.c @@ -4,6 +4,7 @@ #include #include "ast.h" #undef Yield /* undefine macro conflicting with */ +#include "pycore_ast.h" // _PyAST_Validate() #include "pycore_object.h" // _Py_AddToAllObjects() #include "pycore_pyerrors.h" // _PyErr_NoMemory() #include "pycore_pystate.h" // _PyThreadState_GET() @@ -835,7 +836,7 @@ builtin_compile_impl(PyObject *module, PyObject *source, PyObject *filename, PyArena_Free(arena); goto error; } - if (!PyAST_Validate(mod)) { + if (!_PyAST_Validate(mod)) { PyArena_Free(arena); goto error; } pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy