Fix PageNumberPagination.paginate_queryset() return type #165
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.
It looks like the return type for
PageNumberPagination.paginate_queryset()
was incorrectly set toOptional[List[Page]]
, when it should really be an optional list of the QuerySet's underlying model type. The actual implementation in DRF shows that it returnslist(self.page)
, which transforms the page to a list, not wrapping it with a list, sincePage
is itself a sequence of model objects. I have confirmed this by running actual code on djangorestframework 3.12 and Django 3.2 and confirming that I'm getting a list of model instances, not a list of pages of model instances.The type stubs for the other two Pagination classes here look like they have the correct return type, which provide a parameter
_MT
for theQuerySet
argument and uses that parameter in the return type, so this change really just brings PageNumberPagination up to date with the other two.I also added a type checking test for this, although I'm not sure how useful it is, since it's pretty trivial. Let me know if you'd prefer that the test be removed.