From 38ec882e2b04e60b78560a0f8c298f3dd888be37 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Wed, 17 Mar 2021 23:00:54 +0100 Subject: [PATCH] bpo-43244: Remove the PyAST_Validate() function 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). Rename PyAST_Validate() function to _PyAST_Validate(), move it to the internal C API, and don't export it anymore (replace PyAPI_FUNC with extern). The function was added in bpo-12575 by the commit 832bfe2ebd5ecfa92031cd40c8b41835ba90487f. --- Doc/whatsnew/3.10.rst | 5 +++++ Include/ast.h | 2 -- Include/internal/pycore_ast.h | 2 ++ .../next/C API/2021-03-17-23-20-07.bpo-43244.diyn2C.rst | 3 +++ Parser/pegen.c | 3 ++- Python/ast.c | 2 +- Python/bltinmodule.c | 3 ++- 7 files changed, 15 insertions(+), 5 deletions(-) create mode 100644 Misc/NEWS.d/next/C API/2021-03-17-23-20-07.bpo-43244.diyn2C.rst 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