Commit 9211e2fd authored by Pablo Galindo's avatar Pablo Galindo Committed by Miss Islington (bot)

bpo-37268: Add deprecation notice and a DeprecationWarning for the parser module (GH-15017)



Deprecate the parser module and add a deprecation warning triggered on import and a warning block in the documentation.





https://bugs.python.org/issue37268



Automerge-Triggered-By: @pablogsal
parent f35c51d2
......@@ -25,11 +25,11 @@ from this. This is better than trying to parse and modify an arbitrary Python
code fragment as a string because parsing is performed in a manner identical to
the code forming the application. It is also faster.
.. note::
.. warning::
From Python 2.5 onward, it's much more convenient to cut in at the Abstract
Syntax Tree (AST) generation and compilation stage, using the :mod:`ast`
module.
The parser module is deprecated and will be removed in future versions of
Python. For the majority of use cases you can leverage the Abstract Syntax
Tree (AST) generation and compilation stage, using the :mod:`ast` module.
There are a few things to note about this module which are important to making
use of the data structures created. This is not a tutorial on editing the parse
......
......@@ -142,6 +142,10 @@ Deprecated
Python versions it will raise a :exc:`TypeError` for all floats.
(Contributed by Serhiy Storchaka in :issue:`37315`.)
* The :mod:`parser` module is deprecated and will be removed in future versions
of Python. For the majority of use cases users can leverage the Abstract Syntax
Tree (AST) generation and compilation stage, using the :mod:`ast` module.
Removed
=======
......
......@@ -6,6 +6,7 @@ import operator
import struct
from test import support
from test.support.script_helper import assert_python_failure
from test.support.script_helper import assert_python_ok
#
# First, we test that we can generate trees from valid source fragments,
......@@ -987,5 +988,13 @@ class OtherParserCase(unittest.TestCase):
with self.assertRaises(TypeError):
parser.expr("a", "b")
class TestDeprecation(unittest.TestCase):
def test_deprecation_message(self):
code = "def f():\n import parser\n\nf()"
rc, out, err = assert_python_ok('-c', code)
self.assertIn(b'<string>:2: DeprecationWarning', err)
if __name__ == "__main__":
unittest.main()
The :mod:`parser` module is deprecated and will be removed in future
versions of Python.
......@@ -1158,6 +1158,12 @@ PyInit_parser(void)
{
PyObject *module, *copyreg;
if (PyErr_WarnEx(PyExc_DeprecationWarning,
"The parser module is deprecated and will be removed "
"in future versions of Python", 7) != 0) {
return NULL;
}
if (PyType_Ready(&PyST_Type) < 0)
return NULL;
module = PyModule_Create(&parsermodule);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment