[DRAFT] Tweak annotation population to better maintain field definition ordering #3561
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.
Description
This change explores tweaking field annotation population to better maintain field ordering.
As-is (without this change), this is the behavior:
Ideally
type_2
would be defined in the middle, matching the order of the field on the model.Exploring potential solutions, it seems like without adding a metaclass or doing AST traversal it's pretty hard to get the actual definition order. In this PR I've tried to approximate it a little better without a major change.
The proposed change here does not work for maintaining ordering of bare annotations defined in the middle of other fields (e.g.
another_type_1: str
above). However, for other field definition styles it appears to work correctly. So if ordering is important in the schema there's then a simple solution to add= strawberry.field()
to otherwise bare annotations.Types of Changes
Issues Fixed or Closed by This PR
None, question was asked on discord.
Checklist