Fix Attrs method annotation evaluation#122
Open
iliyasone wants to merge 1 commit into
Open
Conversation
|
@iliyasone is attempting to deploy a commit to the Vercel Labs Team on Vercel. A member of the Team first needs to authorize it. |
Attrs should collect class attributes without resolving ordinary method annotations. Thread an include_methods flag into get_local_defns and disable method processing from the attrs_only path. Add a regression test covering a method annotation that references a TYPE_CHECKING-only name.
5b14848 to
cf768d1
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
As I understand,
Attrs[T]should inspect only class attributes, not methods. Previously, theAttrspath still calledget_local_defns()in a mode that processed methods, which could execute PEP 649__annotate__functions beforeAttrsfiltered anything out.The problem is that some methods may not have good runtime annotations. For example, something like this:
Attrs[Model]should evaluate onlyModel.nameand not raise an error, as evaluation of methods is not required for the Attribute types.The bigger problem is that the runtime can't run the insides of the
if TYPE_CHECKINGblock, and i guess there is nothing we can do about this