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

[3.10] gh-85267: Improvements to inspect.signature __text_signature__ handling (GH-98796)#100393

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

Merged

Conversation

hauntsaninja
Copy link
Contributor

This makes a couple related changes to inspect.signature's behaviour when parsing a signature from__text_signature__.

First,inspect.signature is documented as only raising ValueError or TypeError. However, in some cases, we could raise RuntimeError. This PR changes that, thereby fixingGH-83685.

(Note that the new ValueErrors in RewriteSymbolics are caught and then reraised with a message)

Second,inspect.signature could randomly drop parameters that it didn't understand (corresponding toreturn None in thep function). This is the core issue inGH-85267. I think this is very surprising behaviour and it seems better to fail outright.

Third, adding this new failure broke a couple tests. To fix them (and to e.g. allowinspect.signature(select.epoll.register) as inGH-85267), I add constant folding of a couple binary operations to RewriteSymbolics.

(There's some discussion of making signature expression evaluation arbitrary powerful inGH-68155. I think that's out of scope. The additional constant folding here is pretty straightforward, useful, and not much of a slippery slope)

Fourth, whileGH-85267 is incorrect about the cause of the issue, it turns out if you had consecutive newlines intext_signature, you'd gettokenize.TokenError.

Finally, theif name is invalid: code path was dead, sinceparse_name never returnedinvalid..
(cherry picked from commit79311cb)

Co-authored-by: Shantanu12621235+hauntsaninja@users.noreply.github.com

…ture__ handling (pythonGH-98796)This makes a couple related changes to inspect.signature's behaviourwhen parsing a signature from `__text_signature__`.First, `inspect.signature` is documented as only raising ValueError orTypeError. However, in some cases, we could raise RuntimeError.  This PRchanges that, thereby fixingpythonGH-83685.(Note that the new ValueErrors in RewriteSymbolics are caught and thenreraised with a message)Second, `inspect.signature` could randomly drop parameters that itdidn't understand (corresponding to `return None` in the `p` function).This is the core issue inpythonGH-85267. I think this is very surprisingbehaviour and it seems better to fail outright.Third, adding this new failure broke a couple tests. To fix them (and toe.g. allow `inspect.signature(select.epoll.register)` as inpythonGH-85267), Iadd constant folding of a couple binary operations to RewriteSymbolics.(There's some discussion of making signature expression evaluationarbitrary powerful inpythonGH-68155. I think that's out of scope. Theadditional constant folding here is pretty straightforward, useful, andnot much of a slippery slope)Fourth, whilepythonGH-85267 is incorrect about the cause of the issue, it turnsout if you had consecutive newlines in __text_signature__, you'd get`tokenize.TokenError`.Finally, the `if name is invalid:` code path was dead, since`parse_name` never returned `invalid`..(cherry picked from commit79311cb)Co-authored-by: Shantanu <12621235+hauntsaninja@users.noreply.github.com>
@JelleZijlstraJelleZijlstra merged commit919045c intopython:3.10Dec 21, 2022
@hauntsaninjahauntsaninja deleted the backport-79311cb-3.10 branchDecember 21, 2022 05:28
Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment
Reviewers

@JelleZijlstraJelleZijlstraJelleZijlstra approved these changes

Assignees
No one assigned
Labels
None yet
Projects
None yet
Milestone
No milestone
Development

Successfully merging this pull request may close these issues.

3 participants
@hauntsaninja@JelleZijlstra@bedevere-bot

[8]ページ先頭

©2009-2025 Movatter.jp