gh-90953: Emit deprecation warnings for ast features deprecated in Python 3.8#104199
gh-90953: Emit deprecation warnings for ast features deprecated in Python 3.8#104199AlexWaygood merged 29 commits intopython:mainfrom
ast features deprecated in Python 3.8#104199Conversation
Co-authored-by: Hugo van Kemenade <hugovk@users.noreply.github.com>
Misc/NEWS.d/next/Library/2022-02-19-14-19-34.bpo-46797.6BXZX4.rst
Outdated
Show resolved
Hide resolved
Co-authored-by: Hugo van Kemenade <hugovk@users.noreply.github.com>
…good/cpython into ast-deprecation-warnings
| self.assertIsInstance(n, N) | ||
| self.assertIsinstance(n, ast.Num) | ||
| self.assertNotIsInstance(n, N2) | ||
| self.assertNotIsInstance(ast.Num(42), N) |
There was a problem hiding this comment.
Nice :)
By the way, https://github.com/isidentical/teyit / https://pypi.org/project/teyit/ is a nice tool that can upgrade some of these automatically.
barneygale
left a comment
There was a problem hiding this comment.
Is it necessary to emit deprecation warnings when the names are accessed on the ast module? Would it not be sufficient to emit warnings when these classes are instantiated (+ isinstance etc)?
I guess I lean towards keeping them just to ensure maximum visibility. There are edge cases where you might not be "using" the class or calling @hugovk, do you have any thoughts on this? |
|
If there are two common ways of accessing something, I'd also lean towards more visibility for both. Speaking from a position of having dealt with the fallout of removing something without a |
|
Thanks very much, both of you! |
…ed in Python 3.8 (python#104199) `ast.Num`, `ast.Str`, `ast.Bytes`, `ast.Ellipsis` and `ast.NameConstant` now all emit deprecation warnings on import, access, instantation or `isinstance()` checks. Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
|
@AlexWaygood Is it time to make the PR to remove them now? |
yes |
See #119563 |
This is a continuation of @serhiy-storchaka's PR #31432, but removes the deprecation warnings for
ast.ExtSliceandast.Index, which were only deprecated in Python 3.9 (rationale for excluding them: #31432 (comment)).📚 Documentation preview 📚: https://cpython-previews--104199.org.readthedocs.build/