mirror of
https://github.com/davidhalter/django-stubs.git
synced 2026-01-09 13:02:22 +08:00
Fix return type for django.shortcuts.render (#1140)
The return type for calling `shorcuts.render` without providing a value for the `permanent` kwarg was `HttpResponsePermanentRedirect`, while it should be `HttpResponseRedirect`. The reason is that the first two overloads of the type stub overlap for the case of using the default argument. While `mypy` does issue an error for this, it was previously ignored with the `# type: ignore` comment. As the first overload annotates the function as having the return type `HttpResponsePermanentRedirect`, this would make mypy assume that the return type is that instead of `HttpResponseRedirect`. Since calling `django.shortcuts.redirect` without providing an argument for `permanent` is the same as calling it with a `Literal[False]`, as the default value is a `False`, we can improve the stub by only specifying the option to use the default argument (`= ...`) in the second overload. This also removes the overlap in stub definitions, meaning that the `# type: ignore` can now be removed. This commit fixes #1138.
This commit is contained in:
@@ -54,6 +54,7 @@
|
||||
from django.shortcuts import redirect
|
||||
reveal_type(redirect(to = '', permanent = True)) # N: Revealed type is "django.http.response.HttpResponsePermanentRedirect"
|
||||
reveal_type(redirect(to = '', permanent = False)) # N: Revealed type is "django.http.response.HttpResponseRedirect"
|
||||
reveal_type(redirect(to = '')) # N: Revealed type is "django.http.response.HttpResponseRedirect"
|
||||
|
||||
var = True
|
||||
reveal_type(redirect(to = '', permanent = var)) # N: Revealed type is "Union[django.http.response.HttpResponseRedirect, django.http.response.HttpResponsePermanentRedirect]"
|
||||
|
||||
Reference in New Issue
Block a user