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
This commit is contained in:
parent
f35c51d2ea
commit
9211e2fd81
|
@ -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()
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
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);
|
||||
|
|
Loading…
Reference in New Issue