Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

gh-90953: Emit deprecation warnings for deprecated ast features#31432

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Conversation

serhiy-storchaka
Copy link
Member

@serhiy-storchakaserhiy-storchaka commentedFeb 19, 2022
edited by bedevere-bot
Loading

I am not sure that it is worth to include it in 3.11. It may be better to wait for 3.12 or 3.13.

https://bugs.python.org/issue46797

@AlexWaygood
Copy link
Member

AlexWaygood commentedFeb 19, 2022
edited
Loading

Could we hold off doing this until 3.7 is EOL? It is quite hard to write version-compatible code otherwise, at least if you want to avoid deprecation warnings. (I'm speaking as a maintainer ofhttps://github.com/PyCQA/flake8-pyi, which makes heavy use of theast module.)

serhiy-storchaka reacted with thumbs up emoji

@serhiy-storchaka
Copy link
MemberAuthor

Yes, this is my intention.

AlexWaygood, isidentical, and jwiaduck reacted with thumbs up emoji

@serhiy-storchaka
Copy link
MemberAuthor

3.7 will be EOL at 2023-06, before the release of 3.12. I think this PR can already be merged in 3.12. Or wait for 3.13?

@AlexWaygood
Copy link
Member

AlexWaygood commentedJun 1, 2022
edited
Loading

3.7 will be EOL at 2023-06, before the release of 3.12. I think this PR can already be merged in 3.12. Or wait for 3.13?

ExtSlice was only deprecated in 3.9. Other than that one, however, I'm happy with this PR being merged in 3.12 :)

@netlify

This comment was marked as outdated.

@serhiy-storchaka
Copy link
MemberAuthor

Well, I am going to merge it.

Note, that it does not remove previously deprecated feature. It only adds runtime warnings for already long deprecated (3 or more releases ago) features. It is much much more smoother than standard practice of adding runtime warnings at the moment of deprecation.

@AlexWaygood
Copy link
Member

AlexWaygood commentedDec 7, 2022
edited
Loading

I support merging this before 3.12 is released, but I would still leave the deprecation warning forExtSlice to a future PR, personally. Unlike the other deprecated features, it was deprecated in 3.9, not 3.7.

@hugovk
Copy link
Member

hugovk commentedMay 4, 2023
edited
Loading

(Merge conflict resolved)

There's about a week until the 3.12 cutoff. I think it's okay to includeExtSlice here, it's replacementTuple has been around for a long time, andast.*ExtSlice shows up in 22 projects in the PyPI top 5k:

python3~/github/misc/cpython/search_pypi_top.py -q."ast.*ExtSlice"./pyre-check-nightly-0.0.101680433836.tar.gz: pyre-check-nightly-0.0.101680433836/typeshed/stubs/pyflakes/pyflakes/checker.pyi: def EXTSLICE(self, tree: ast.ExtSlice, omit: _OmitType = ...) -> None: ..../reportlab-3.6.12.tar.gz: reportlab-3.6.12/src/reportlab/lib/rl_safe_eval.py: elif isinstance(slice_, ast.ExtSlice):./typed_ast-1.5.4.tar.gz: typed_ast-1.5.4/ast27/Python/Python-ast.c: value = ast2obj_list(o->v.ExtSlice.dims, ast2obj_slice);./typed_ast-1.5.4.tar.gz: typed_ast-1.5.4/ast3/Python/Python-ast.c: value = ast2obj_list(o->v.ExtSlice.dims, ast2obj_slice);./mypy-1.1.1.tar.gz: mypy-1.1.1/mypy/fastparse.py: is_py38_or_earlier and isinstance(n.slice, ast3.ExtSlice)./mypy-1.1.1.tar.gz: mypy-1.1.1/mypy/fastparse.py: def visit_ExtSlice(self, n: ast3.ExtSlice) -> TupleExpr:./mypy-1.1.1.tar.gz: mypy-1.1.1/mypy/fastparse.py: assert isinstance(n.slice, ast3.ExtSlice)./pure_eval-0.2.2.tar.gz: pure_eval-0.2.2/pure_eval/core.py: elif isinstance(index, ast.ExtSlice):./gast-0.5.3.tar.gz: gast-0.5.3/gast/ast3.py: new_slice = ast.ExtSlice(./gast-0.5.3.tar.gz: gast-0.5.3/gast/ast2.py: new_slice = ast.ExtSlice([adjust_slice(self._visit(elt))./ipython-8.12.0.tar.gz: ipython-8.12.0/IPython/core/guarded_eval.py: if isinstance(node, ast.ExtSlice):./flake8_expression_complexity-0.0.11.tar.gz: flake8_expression_complexity-0.0.11/flake8_expression_complexity/utils/complexity.py: (ast.ExtSlice, 'ext_slice'),./astroid-2.15.1.tar.gz: astroid-2.15.1/astroid/nodes/node_classes.py: """Class representing an :class:`ast.ExtSlice` node../astroid-2.15.1.tar.gz: astroid-2.15.1/astroid/rebuilder.py: def visit(self, node: ast.ExtSlice, parent: nodes.Subscript) -> nodes.Tuple:./astroid-2.15.1.tar.gz: astroid-2.15.1/astroid/rebuilder.py: self, node: ast.ExtSlice, parent: nodes.Subscript./asttokens-2.2.1.tar.gz: asttokens-2.2.1/asttokens/asttokens.py: ast.Slice, ast.ExtSlice, ast.Index, ast.keyword,./asttokens-2.2.1.tar.gz: asttokens-2.2.1/asttokens/asttokens.py: - ``ast.ExtSlice``./griffe-0.25.5.tar.gz: griffe-0.25.5/src/griffe/agents/nodes.py: from ast import ExtSlice as NodeExtSlice./numba-0.56.4.tar.gz: numba-0.56.4/numba/tests/test_stencils.py: slice=ast.ExtSlice(./numba-0.56.4.tar.gz: numba-0.56.4/numba/tests/test_stencils.py: if isinstance(node.slice, ast.ExtSlice):./pytype-2023.3.31.tar.gz: pytype-2023.3.31/pytype/typeshed/stubs/pyflakes/pyflakes/checker.pyi: def EXTSLICE(self, tree: ast.ExtSlice, omit: _OmitType = ...) -> None: ..../RestrictedPython-6.0.tar.gz: RestrictedPython-6.0/src/RestrictedPython/transformer.py: elif isinstance(slice_, ast.ExtSlice):Time: 0:00:17.604108Found 22 matching lines in 14 projects

But I'm also okay to splitting it into another PR and merging it after the 3.13 branch in about a week and a few days.

In any case, let's add this to What's New.

@hugovk
Copy link
Member

hugovk commentedMay 4, 2023
edited
Loading

A suggested What's New entry:

* The following:mod:`ast` features have been deprecated in documentation since  Python 3.8 and now raise a proper:exc:`DeprecationWarning`::class:`!ast.Num`,:class:`!ast.Str`,:class:`!ast.Bytes`,:class:`!ast.NameConstant` and:class:`!ast.Ellipsis`; use:class:`ast.Constant`  instead.  Similarly since 3.9, instead of:class:`!ast.Index` use the index value  directly; and instead of:class:`!ast.ExtSlice` use:class:`ast.Tuple`.  (Contributed by Serhiy Storchaka in:gh:`90953`.)

Co-authored-by: Hugo van Kemenade <hugovk@users.noreply.github.com>
@AlexWaygood
Copy link
Member

AlexWaygood commentedMay 4, 2023
edited
Loading

Well, my position remains the same: I'd love to see this get into 3.12, but I'd really rather we excludedExtSlice andIndex from this PR for now. It's not so much a matter of finding areplacement for the class -- the issue is that it could really complicate life for people writing linters usingast.NodeVisitor subclasses to inspect Python source code, if you want to support Python 3.8-3.12, and you want to avoidDeprecationWarnings.

Life's already complicated enough as it is, with how frequently the Python AST changes from version to version :)

@AlexWaygoodAlexWaygood changed the titlebpo-46797: Emit deprecation warnings for deprecated ast featuresgh-90953: Emit deprecation warnings for deprecated ast featuresMay 4, 2023
@hugovk
Copy link
Member

Okay, would you like to create a new PR with just the 3.8 ones and we can merge that into 3.12 before the cutoff?

Then we can merge this with the 3.9 ones into 3.13 after the cutoff?

AlexWaygood reacted with thumbs up emoji

@AlexWaygood
Copy link
Member

Okay, would you like to create a new PR with just the 3.8 ones and we can merge that into 3.12 before the cutoff?

Sounds good. I'll list@serhiy-storchaka as a co-author.

hugovk reacted with thumbs up emoji

@AlexWaygoodAlexWaygoodforce-pushed theast-deprecation-warnings branch from8c949f3 tofdefe87CompareMay 5, 2023 13:12
@AlexWaygood
Copy link
Member

(Accidentally pushed to this PR instead of#104199. Force-pushed to undo that.)

hugovk reacted with thumbs up emoji

@furkanonder
Copy link
Contributor

cc:@isidentical

@hugovk
Copy link
Member

Python 3.12 beta is out, this can now be updated to be included in main/3.13.

AlexWaygood reacted with thumbs up emoji

@serhiy-storchaka
Copy link
MemberAuthor

Closed in favor of#104199.

@AlexWaygood, do you mind to create a new PR for ExtSlice and Index?

@AlexWaygood
Copy link
Member

Closed in favor of#104199.

@AlexWaygood, do you mind to create a new PR for ExtSlice and Index?

Sure, I'm working on it now

Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment
Reviewers

@hugovkhugovkhugovk left review comments

@isidenticalisidenticalAwaiting requested review from isidenticalisidentical is a code owner

Assignees
No one assigned
Labels
awaiting core reviewtype-featureA feature request or enhancement
Projects
None yet
Milestone
No milestone
Development

Successfully merging this pull request may close these issues.

8 participants
@serhiy-storchaka@AlexWaygood@hugovk@furkanonder@the-knights-who-say-ni@ezio-melotti@bedevere-bot@iritkatriel

[8]ページ先頭

©2009-2025 Movatter.jp