diff --git a/django-stubs/urls/conf.pyi b/django-stubs/urls/conf.pyi index 9f8f6e6..dddf139 100644 --- a/django-stubs/urls/conf.pyi +++ b/django-stubs/urls/conf.pyi @@ -1,8 +1,31 @@ -from typing import Any, List, Optional, Tuple +from typing import Any, List, Optional, Tuple, overload, Callable, Dict, Union -from .resolvers import URLResolver +from .resolvers import URLResolver, URLPattern +from ..conf.urls import IncludedURLConf +from ..http.response import HttpResponseBase def include(arg: Any, namespace: Optional[str] = ...) -> Tuple[List[URLResolver], Optional[str], Optional[str]]: ... -path: Any -re_path: Any +# path() +@overload +def path( + route: str, view: Callable[..., HttpResponseBase], kwargs: Dict[str, Any] = ..., name: str = ... +) -> URLPattern: ... +@overload +def path(route: str, view: IncludedURLConf, kwargs: Dict[str, Any] = ..., name: str = ...) -> URLResolver: ... +@overload +def path( + route: str, view: List[Union[URLResolver, str]], kwargs: Dict[str, Any] = ..., name: str = ... +) -> URLResolver: ... + +# re_path() +@overload +def re_path( + route: str, view: Callable[..., HttpResponseBase], kwargs: Dict[str, Any] = ..., name: str = ... +) -> URLPattern: ... +@overload +def re_path(route: str, view: IncludedURLConf, kwargs: Dict[str, Any] = ..., name: str = ...) -> URLResolver: ... +@overload +def re_path( + route: str, view: List[Union[URLResolver, str]], kwargs: Dict[str, Any] = ..., name: str = ... +) -> URLResolver: ... diff --git a/scripts/enabled_test_modules.py b/scripts/enabled_test_modules.py index 49e519e..31120be 100644 --- a/scripts/enabled_test_modules.py +++ b/scripts/enabled_test_modules.py @@ -451,9 +451,11 @@ IGNORED_ERRORS = { 'urlpatterns': [ '"object" not callable', '"None" not callable', + 'Argument 2 to "path" has incompatible type "Callable[[Any], None]"', + 'Incompatible return value type (got "None", expected "HttpResponseBase")', ], 'urlpatterns_reverse': [ - 'List or tuple expected as variable arguments', + 'No overload variant of "path" matches argument types "str", "None"', 'No overload variant of "zip" matches argument types "Any", "object"', 'Argument 1 to "get_callable" has incompatible type "int"' ],