Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Avoid triggering @property methods on plugins when looking for hookimpls during registration #536
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 our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Avoid triggering @property methods on plugins when looking for hookimpls during registration #536
Changes from all commits
24895d0
aae3799
90d9f80
61a9a86
2536c62
c0789a6
bfe9f91
16a2344
4cab5d1
File filter
Filter by extension
Conversations
Jump to
There are no files selected for viewing
Check warning on line 59 in src/pluggy/_manager.py
src/pluggy/_manager.py#L59
Check warning on line 195 in src/pluggy/_manager.py
src/pluggy/_manager.py#L195
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If you're able to cook a test for this case that would be nice.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
see comment here: #536 (comment)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
did you mean to remove the line with the exception in the suggestion? imo that's crucial to be able to grep through the codebase to find the error / understand why all this logic is here
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The reason I suggest to remove it is that the logic handles any AttributeError which may happen for other reasons. The
__signature__
thing is one case. It's not very clear what it means. I think if you can make this error happen in a test it will be better.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I did here but it was removed from the PR for being too pydantic-specific: https://gist.github.com/pirate/01ca7a6b41595af9a480
Afaik this case is not triggered in any typical code unless you try to use a few specific weird objects w/ descriptors (like Django/Pydantic models) as plugin namespaces. I don't necessarily want to pull in those big libraries to test this escape hatch that just avoids crashing on them, but interaction with those libraries is really the only case where this code path would come up.
Check warning on line 314 in src/pluggy/_manager.py
src/pluggy/_manager.py#L314
Check warning on line 316 in src/pluggy/_manager.py
src/pluggy/_manager.py#L316
Check warning on line 320 in src/pluggy/_manager.py
src/pluggy/_manager.py#L320
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.