mirror of
https://github.com/davidhalter/django-stubs.git
synced 2025-12-11 06:21:58 +08:00
fix tests for mypy 0.900 (#641)
This commit is contained in:
@@ -20,7 +20,7 @@ def create_new_manager_class_from_from_queryset_method(ctx: DynamicClassDefConte
|
||||
|
||||
assert isinstance(base_manager_info, TypeInfo)
|
||||
new_manager_info = semanal_api.basic_new_typeinfo(
|
||||
ctx.name, basetype_or_fallback=Instance(base_manager_info, [AnyType(TypeOfAny.unannotated)])
|
||||
ctx.name, basetype_or_fallback=Instance(base_manager_info, [AnyType(TypeOfAny.unannotated)]), line=ctx.call.line
|
||||
)
|
||||
new_manager_info.line = ctx.call.line
|
||||
new_manager_info.defn.line = ctx.call.line
|
||||
|
||||
1
setup.py
1
setup.py
@@ -25,6 +25,7 @@ dependencies = [
|
||||
"typing-extensions",
|
||||
"django",
|
||||
"django-stubs-ext",
|
||||
"types-pytz",
|
||||
]
|
||||
|
||||
setup(
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
|
||||
class A(admin.ModelAdmin):
|
||||
fieldsets = [ # type: ignore
|
||||
(None, {}), # E: Missing key 'fields' for TypedDict "_FieldOpts"
|
||||
(None, {}), # E: Missing key "fields" for TypedDict "_FieldOpts"
|
||||
]
|
||||
- case: errors_on_invalid_radio_fields
|
||||
main: |
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
from django.contrib.auth.decorators import login_required
|
||||
@login_required
|
||||
def view_func(request): ...
|
||||
reveal_type(view_func) # N: Revealed type is 'def (request: Any) -> Any'
|
||||
reveal_type(view_func) # N: Revealed type is "def (request: Any) -> Any"
|
||||
- case: login_required_fancy
|
||||
main: |
|
||||
from django.contrib.auth.decorators import login_required
|
||||
@@ -11,14 +11,14 @@
|
||||
from django.http import HttpResponse
|
||||
@login_required(redirect_field_name='a', login_url='b')
|
||||
def view_func(request: WSGIRequest, arg: str) -> HttpResponse: ...
|
||||
reveal_type(view_func) # N: Revealed type is 'def (request: django.core.handlers.wsgi.WSGIRequest, arg: builtins.str) -> django.http.response.HttpResponse'
|
||||
reveal_type(view_func) # N: Revealed type is "def (request: django.core.handlers.wsgi.WSGIRequest, arg: builtins.str) -> django.http.response.HttpResponse"
|
||||
- case: login_required_weird
|
||||
main: |
|
||||
from django.contrib.auth.decorators import login_required
|
||||
# This is non-conventional usage, but covered in Django tests, so we allow it.
|
||||
def view_func(request): ...
|
||||
wrapped_view = login_required(view_func, redirect_field_name='a', login_url='b')
|
||||
reveal_type(wrapped_view) # N: Revealed type is 'def (request: Any) -> Any'
|
||||
reveal_type(wrapped_view) # N: Revealed type is "def (request: Any) -> Any"
|
||||
- case: login_required_incorrect_return
|
||||
main: |
|
||||
from django.contrib.auth.decorators import login_required
|
||||
@@ -29,7 +29,7 @@
|
||||
from django.contrib.auth.decorators import user_passes_test
|
||||
@user_passes_test(lambda u: u.username.startswith('super'))
|
||||
def view_func(request): ...
|
||||
reveal_type(view_func) # N: Revealed type is 'def (request: Any) -> Any'
|
||||
reveal_type(view_func) # N: Revealed type is "def (request: Any) -> Any"
|
||||
- case: user_passes_test_bare_is_error
|
||||
main: |
|
||||
from django.http.response import HttpResponse
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
main: |
|
||||
from django.db import connection
|
||||
with connection.cursor() as cursor:
|
||||
reveal_type(cursor) # N: Revealed type is 'django.db.backends.utils.CursorWrapper'
|
||||
reveal_type(cursor) # N: Revealed type is "django.db.backends.utils.CursorWrapper"
|
||||
cursor.execute("SELECT %s", [123])
|
||||
- case: raw_connections
|
||||
main: |
|
||||
from django.db import connections
|
||||
reveal_type(connections["test"]) # N: Revealed type is 'django.db.backends.base.base.BaseDatabaseWrapper'
|
||||
reveal_type(connections["test"]) # N: Revealed type is "django.db.backends.base.base.BaseDatabaseWrapper"
|
||||
for connection in connections.all():
|
||||
with connection.cursor() as cursor:
|
||||
reveal_type(cursor) # N: Revealed type is 'django.db.backends.utils.CursorWrapper'
|
||||
reveal_type(cursor) # N: Revealed type is "django.db.backends.utils.CursorWrapper"
|
||||
|
||||
@@ -3,19 +3,19 @@
|
||||
from django.db.transaction import atomic
|
||||
@atomic
|
||||
def func(x: int) -> list: ...
|
||||
reveal_type(func) # N: Revealed type is 'def (x: builtins.int) -> builtins.list[Any]'
|
||||
reveal_type(func) # N: Revealed type is "def (x: builtins.int) -> builtins.list[Any]"
|
||||
- case: atomic_args
|
||||
main: |
|
||||
from django.db.transaction import atomic
|
||||
@atomic(using='bla', savepoint=False)
|
||||
def func(x: int) -> list: ...
|
||||
reveal_type(func) # N: Revealed type is 'def (x: builtins.int) -> builtins.list[Any]'
|
||||
reveal_type(func) # N: Revealed type is "def (x: builtins.int) -> builtins.list[Any]"
|
||||
- case: non_atomic_requests_bare
|
||||
main: |
|
||||
from django.db.transaction import non_atomic_requests
|
||||
@non_atomic_requests
|
||||
def view_func(request): ...
|
||||
reveal_type(view_func) # N: Revealed type is 'def (request: Any) -> Any'
|
||||
reveal_type(view_func) # N: Revealed type is "def (request: Any) -> Any"
|
||||
|
||||
- case: non_atomic_requests_args
|
||||
main: |
|
||||
@@ -24,5 +24,5 @@
|
||||
from django.db.transaction import non_atomic_requests
|
||||
@non_atomic_requests
|
||||
def view_func(request: HttpRequest, arg: str) -> HttpResponse: ...
|
||||
reveal_type(view_func) # N: Revealed type is 'def (request: django.http.request.HttpRequest, arg: builtins.str) -> django.http.response.HttpResponse'
|
||||
reveal_type(view_func) # N: Revealed type is "def (request: django.http.request.HttpRequest, arg: builtins.str) -> django.http.response.HttpResponse"
|
||||
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
main: |
|
||||
from myapp.models import User
|
||||
user = User(small_int=1, name='user', slug='user', text='user')
|
||||
reveal_type(user.id) # N: Revealed type is 'builtins.int*'
|
||||
reveal_type(user.small_int) # N: Revealed type is 'builtins.int*'
|
||||
reveal_type(user.name) # N: Revealed type is 'builtins.str*'
|
||||
reveal_type(user.slug) # N: Revealed type is 'builtins.str*'
|
||||
reveal_type(user.text) # N: Revealed type is 'builtins.str*'
|
||||
reveal_type(user.id) # N: Revealed type is "builtins.int*"
|
||||
reveal_type(user.small_int) # N: Revealed type is "builtins.int*"
|
||||
reveal_type(user.name) # N: Revealed type is "builtins.str*"
|
||||
reveal_type(user.slug) # N: Revealed type is "builtins.str*"
|
||||
reveal_type(user.text) # N: Revealed type is "builtins.str*"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -25,9 +25,9 @@
|
||||
main: |
|
||||
from myapp.models import Booking
|
||||
booking = Booking()
|
||||
reveal_type(booking.id) # N: Revealed type is 'builtins.int*'
|
||||
reveal_type(booking.time_range) # N: Revealed type is 'Any'
|
||||
reveal_type(booking.some_decimal) # N: Revealed type is 'decimal.Decimal*'
|
||||
reveal_type(booking.id) # N: Revealed type is "builtins.int*"
|
||||
reveal_type(booking.time_range) # N: Revealed type is "Any"
|
||||
reveal_type(booking.some_decimal) # N: Revealed type is "decimal.Decimal*"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -47,7 +47,7 @@
|
||||
disable_cache: true
|
||||
main: |
|
||||
from myapp.models import User
|
||||
reveal_type(User().id) # N: Revealed type is 'builtins.int*'
|
||||
reveal_type(User().id) # N: Revealed type is "builtins.int*"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -62,10 +62,10 @@
|
||||
disable_cache: true
|
||||
main: |
|
||||
from myapp.models import User
|
||||
reveal_type(User().my_pk) # N: Revealed type is 'builtins.int*'
|
||||
reveal_type(User().my_pk) # N: Revealed type is "builtins.int*"
|
||||
reveal_type(User().id)
|
||||
out: |
|
||||
main:3: note: Revealed type is 'Any'
|
||||
main:3: note: Revealed type is "Any"
|
||||
main:3: error: "User" has no attribute "id"
|
||||
installed_apps:
|
||||
- myapp
|
||||
@@ -83,7 +83,7 @@
|
||||
MyModel(nulltext="")
|
||||
MyModel(nulltext=None)
|
||||
MyModel().nulltext=None
|
||||
reveal_type(MyModel().nulltext) # N: Revealed type is 'Union[builtins.str, None]'
|
||||
reveal_type(MyModel().nulltext) # N: Revealed type is "Union[builtins.str, None]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -100,7 +100,7 @@
|
||||
MyModel(notnulltext=None) # Should allow None in constructor
|
||||
MyModel(notnulltext="")
|
||||
MyModel().notnulltext = None # E: Incompatible types in assignment (expression has type "None", variable has type "Union[str, int, Combinable]")
|
||||
reveal_type(MyModel().notnulltext) # N: Revealed type is 'builtins.str*'
|
||||
reveal_type(MyModel().notnulltext) # N: Revealed type is "builtins.str*"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -114,7 +114,7 @@
|
||||
- case: if_field_called_on_class_return_field_itself
|
||||
main: |
|
||||
from myapp.models import MyUser
|
||||
reveal_type(MyUser.name) # N: Revealed type is 'django.db.models.fields.CharField[Union[builtins.str, builtins.int, django.db.models.expressions.Combinable], builtins.str]'
|
||||
reveal_type(MyUser.name) # N: Revealed type is "django.db.models.fields.CharField[Union[builtins.str, builtins.int, django.db.models.expressions.Combinable], builtins.str]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -130,13 +130,13 @@
|
||||
from django.db import models
|
||||
class MyClass:
|
||||
myfield: models.IntegerField[int, int]
|
||||
reveal_type(MyClass.myfield) # N: Revealed type is 'django.db.models.fields.IntegerField[builtins.int, builtins.int]'
|
||||
reveal_type(MyClass().myfield) # N: Revealed type is 'django.db.models.fields.IntegerField[builtins.int, builtins.int]'
|
||||
reveal_type(MyClass.myfield) # N: Revealed type is "django.db.models.fields.IntegerField[builtins.int, builtins.int]"
|
||||
reveal_type(MyClass().myfield) # N: Revealed type is "django.db.models.fields.IntegerField[builtins.int, builtins.int]"
|
||||
|
||||
- case: fields_inside_mixins_used_in_model_subclasses_resolved_as_primitives
|
||||
main: |
|
||||
from myapp.models import MyModel, AuthMixin
|
||||
reveal_type(MyModel().username) # N: Revealed type is 'builtins.str*'
|
||||
reveal_type(MyModel().username) # N: Revealed type is "builtins.str*"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -159,9 +159,9 @@
|
||||
class Book(models.Model):
|
||||
published = cast(models.Field[Year, Year], models.IntegerField())
|
||||
book = Book()
|
||||
reveal_type(book.published) # N: Revealed type is 'main.Year*'
|
||||
reveal_type(book.published) # N: Revealed type is "main.Year*"
|
||||
book.published = 2006 # E: Incompatible types in assignment (expression has type "int", variable has type "Year")
|
||||
book.published = Year(2006)
|
||||
reveal_type(book.published) # N: Revealed type is 'main.Year*'
|
||||
reveal_type(book.published) # N: Revealed type is "main.Year*"
|
||||
def accepts_int(arg: int) -> None: ...
|
||||
accepts_int(book.published)
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
Tag(content_object=myuser)
|
||||
Tag.objects.create(content_object=None)
|
||||
Tag.objects.create(content_object=myuser)
|
||||
reveal_type(Tag().content_object) # N: Revealed type is 'Union[Any, None]'
|
||||
reveal_type(Tag().content_object) # N: Revealed type is "Union[Any, None]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -27,7 +27,7 @@
|
||||
Tag(content_object=myuser)
|
||||
Tag.objects.create(content_object=None)
|
||||
Tag.objects.create(content_object=myuser)
|
||||
reveal_type(Tag().content_object) # N: Revealed type is 'Union[Any, None]'
|
||||
reveal_type(Tag().content_object) # N: Revealed type is "Union[Any, None]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
- case: nullable_field_with_strict_optional_true
|
||||
main: |
|
||||
from myapp.models import MyModel
|
||||
reveal_type(MyModel().text) # N: Revealed type is 'builtins.str*'
|
||||
reveal_type(MyModel().text_nullable) # N: Revealed type is 'Union[builtins.str, None]'
|
||||
reveal_type(MyModel().text) # N: Revealed type is "builtins.str*"
|
||||
reveal_type(MyModel().text_nullable) # N: Revealed type is "Union[builtins.str, None]"
|
||||
MyModel().text = None # E: Incompatible types in assignment (expression has type "None", variable has type "Union[str, int, Combinable]")
|
||||
MyModel().text_nullable = None
|
||||
installed_apps:
|
||||
@@ -19,7 +19,7 @@
|
||||
- case: nullable_array_field
|
||||
main: |
|
||||
from myapp.models import MyModel
|
||||
reveal_type(MyModel().lst) # N: Revealed type is 'Union[builtins.list[builtins.str], None]'
|
||||
reveal_type(MyModel().lst) # N: Revealed type is "Union[builtins.list[builtins.str], None]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -35,7 +35,7 @@
|
||||
- case: nullable_foreign_key
|
||||
main: |
|
||||
from myapp.models import Publisher, Book
|
||||
reveal_type(Book().publisher) # N: Revealed type is 'Union[myapp.models.Publisher, None]'
|
||||
reveal_type(Book().publisher) # N: Revealed type is "Union[myapp.models.Publisher, None]"
|
||||
Book().publisher = 11 # E: Incompatible types in assignment (expression has type "int", variable has type "Union[Publisher, Combinable, None]")
|
||||
installed_apps:
|
||||
- myapp
|
||||
@@ -55,8 +55,8 @@
|
||||
from myapp.models import Inventory
|
||||
parent = Inventory()
|
||||
core = Inventory(parent_id=parent.id)
|
||||
reveal_type(core.parent_id) # N: Revealed type is 'Union[builtins.int, None]'
|
||||
reveal_type(core.parent) # N: Revealed type is 'Union[myapp.models.Inventory, None]'
|
||||
reveal_type(core.parent_id) # N: Revealed type is "Union[builtins.int, None]"
|
||||
reveal_type(core.parent) # N: Revealed type is "Union[myapp.models.Inventory, None]"
|
||||
Inventory(parent=None)
|
||||
Inventory(parent_id=None)
|
||||
installed_apps:
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
main: |
|
||||
from myapp.models import User
|
||||
user = User(array=[])
|
||||
reveal_type(user.array) # N: Revealed type is 'builtins.list*[Any]'
|
||||
reveal_type(user.array) # N: Revealed type is "builtins.list*[Any]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -19,8 +19,8 @@
|
||||
main: |
|
||||
from myapp.models import User
|
||||
user = User()
|
||||
reveal_type(user.members) # N: Revealed type is 'builtins.list*[builtins.int]'
|
||||
reveal_type(user.members_as_text) # N: Revealed type is 'builtins.list*[builtins.str]'
|
||||
reveal_type(user.members) # N: Revealed type is "builtins.list*[builtins.int]"
|
||||
reveal_type(user.members_as_text) # N: Revealed type is "builtins.list*[builtins.str]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
main: |
|
||||
from myapp.models import Book, Publisher
|
||||
book = Book()
|
||||
reveal_type(book.publisher) # N: Revealed type is 'myapp.models.Publisher*'
|
||||
reveal_type(book.publisher) # N: Revealed type is "myapp.models.Publisher*"
|
||||
publisher = Publisher()
|
||||
reveal_type(publisher.books) # N: Revealed type is 'django.db.models.manager.RelatedManager[myapp.models.Book]'
|
||||
reveal_type(publisher.books) # N: Revealed type is "django.db.models.manager.RelatedManager[myapp.models.Book]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -22,8 +22,8 @@
|
||||
main: |
|
||||
from myapp.models import Book
|
||||
book = Book()
|
||||
reveal_type(book.publisher_id) # N: Revealed type is 'builtins.int*'
|
||||
reveal_type(book.owner_id) # N: Revealed type is 'builtins.int*'
|
||||
reveal_type(book.publisher_id) # N: Revealed type is "builtins.int*"
|
||||
reveal_type(book.owner_id) # N: Revealed type is "builtins.int*"
|
||||
installed_apps:
|
||||
- django.contrib.auth
|
||||
- myapp
|
||||
@@ -42,12 +42,12 @@
|
||||
main: |
|
||||
from myapp.models import Book, Publisher
|
||||
book = Book()
|
||||
reveal_type(book.publisher) # N: Revealed type is 'myapp.models.Publisher*'
|
||||
reveal_type(book.publisher2) # N: Revealed type is 'myapp.models.Publisher*'
|
||||
reveal_type(book.publisher) # N: Revealed type is "myapp.models.Publisher*"
|
||||
reveal_type(book.publisher2) # N: Revealed type is "myapp.models.Publisher*"
|
||||
|
||||
publisher = Publisher()
|
||||
reveal_type(publisher.books) # N: Revealed type is 'django.db.models.manager.RelatedManager[myapp.models.Book]'
|
||||
reveal_type(publisher.books2) # N: Revealed type is 'django.db.models.manager.RelatedManager[myapp.models.Book]'
|
||||
reveal_type(publisher.books) # N: Revealed type is "django.db.models.manager.RelatedManager[myapp.models.Book]"
|
||||
reveal_type(publisher.books2) # N: Revealed type is "django.db.models.manager.RelatedManager[myapp.models.Book]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -66,7 +66,7 @@
|
||||
main: |
|
||||
from myapp2.models import Book
|
||||
book = Book()
|
||||
reveal_type(book.publisher) # N: Revealed type is 'myapp.models.Publisher*'
|
||||
reveal_type(book.publisher) # N: Revealed type is "myapp.models.Publisher*"
|
||||
installed_apps:
|
||||
- myapp
|
||||
- myapp2
|
||||
@@ -87,8 +87,8 @@
|
||||
- case: one_to_one_field_no_related_name
|
||||
main: |
|
||||
from myapp.models import User, Profile
|
||||
reveal_type(User().profile) # N: Revealed type is 'myapp.models.Profile'
|
||||
reveal_type(Profile().user) # N: Revealed type is 'myapp.models.User*'
|
||||
reveal_type(User().profile) # N: Revealed type is "myapp.models.Profile"
|
||||
reveal_type(Profile().user) # N: Revealed type is "myapp.models.User*"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -113,10 +113,10 @@
|
||||
from django.db import models
|
||||
class App(models.Model):
|
||||
def method(self) -> None:
|
||||
reveal_type(self.views) # N: Revealed type is 'django.db.models.manager.RelatedManager[myapp.models.View]'
|
||||
reveal_type(self.members) # N: Revealed type is 'django.db.models.manager.RelatedManager[myapp.models.Member]'
|
||||
reveal_type(self.sheets) # N: Revealed type is 'django.db.models.manager.RelatedManager[myapp.models.Sheet]'
|
||||
reveal_type(self.profile) # N: Revealed type is 'myapp.models.Profile'
|
||||
reveal_type(self.views) # N: Revealed type is "django.db.models.manager.RelatedManager[myapp.models.View]"
|
||||
reveal_type(self.members) # N: Revealed type is "django.db.models.manager.RelatedManager[myapp.models.Member]"
|
||||
reveal_type(self.sheets) # N: Revealed type is "django.db.models.manager.RelatedManager[myapp.models.Sheet]"
|
||||
reveal_type(self.profile) # N: Revealed type is "myapp.models.Profile"
|
||||
class View(models.Model):
|
||||
app = models.ForeignKey(to=App, related_name='views', on_delete=models.CASCADE)
|
||||
class Member(models.Model):
|
||||
@@ -129,10 +129,10 @@
|
||||
- case: test_circular_dependency_in_imports_with_string_based
|
||||
main: |
|
||||
from myapp.models import View
|
||||
reveal_type(View().app.views) # N: Revealed type is 'django.db.models.manager.RelatedManager[myapp.models.View]'
|
||||
reveal_type(View().app.views) # N: Revealed type is "django.db.models.manager.RelatedManager[myapp.models.View]"
|
||||
reveal_type(View().app.unknown)
|
||||
out: |
|
||||
main:3: note: Revealed type is 'Any'
|
||||
main:3: note: Revealed type is "Any"
|
||||
main:3: error: "App" has no attribute "unknown"
|
||||
installed_apps:
|
||||
- myapp
|
||||
@@ -151,13 +151,13 @@
|
||||
from django.db import models
|
||||
class App(models.Model):
|
||||
def method(self) -> None:
|
||||
reveal_type(self.views) # N: Revealed type is 'django.db.models.manager.RelatedManager[myapp.models.View]'
|
||||
reveal_type(self.views) # N: Revealed type is "django.db.models.manager.RelatedManager[myapp.models.View]"
|
||||
|
||||
- case: models_related_managers_work_with_direct_model_inheritance_and_with_inheritance_from_other_model
|
||||
main: |
|
||||
from myapp.models import App
|
||||
reveal_type(App().views) # N: Revealed type is 'django.db.models.manager.RelatedManager[myapp.models.View]'
|
||||
reveal_type(App().views2) # N: Revealed type is 'django.db.models.manager.RelatedManager[myapp.models.View2]'
|
||||
reveal_type(App().views) # N: Revealed type is "django.db.models.manager.RelatedManager[myapp.models.View]"
|
||||
reveal_type(App().views2) # N: Revealed type is "django.db.models.manager.RelatedManager[myapp.models.View2]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -175,7 +175,7 @@
|
||||
- case: models_imported_inside_init_file_foreign_key
|
||||
main: |
|
||||
from myapp2.models import View
|
||||
reveal_type(View().app.views) # N: Revealed type is 'django.db.models.manager.RelatedManager[myapp2.models.View]'
|
||||
reveal_type(View().app.views) # N: Revealed type is "django.db.models.manager.RelatedManager[myapp2.models.View]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
- myapp2
|
||||
@@ -200,8 +200,8 @@
|
||||
- case: models_imported_inside_init_file_one_to_one_field
|
||||
main: |
|
||||
from myapp2.models import Profile
|
||||
reveal_type(Profile().user) # N: Revealed type is 'myapp.models.user.User*'
|
||||
reveal_type(Profile().user.profile) # N: Revealed type is 'myapp2.models.Profile'
|
||||
reveal_type(Profile().user) # N: Revealed type is "myapp.models.user.User*"
|
||||
reveal_type(Profile().user.profile) # N: Revealed type is "myapp2.models.Profile"
|
||||
installed_apps:
|
||||
- myapp
|
||||
- myapp2
|
||||
@@ -226,8 +226,8 @@
|
||||
- case: models_triple_circular_reference
|
||||
main: |
|
||||
from myapp.models import App
|
||||
reveal_type(App().owner) # N: Revealed type is 'myapp.models.user.User*'
|
||||
reveal_type(App().owner.profile) # N: Revealed type is 'myapp.models.profile.Profile'
|
||||
reveal_type(App().owner) # N: Revealed type is "myapp.models.user.User*"
|
||||
reveal_type(App().owner.profile) # N: Revealed type is "myapp.models.profile.Profile"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -256,8 +256,8 @@
|
||||
- case: many_to_many_field_converts_to_queryset_of_model_type
|
||||
main: |
|
||||
from myapp.models import App, Member
|
||||
reveal_type(Member().apps) # N: Revealed type is 'django.db.models.manager.RelatedManager*[myapp.models.App]'
|
||||
reveal_type(App().members) # N: Revealed type is 'django.db.models.manager.RelatedManager[myapp.models.Member]'
|
||||
reveal_type(Member().apps) # N: Revealed type is "django.db.models.manager.RelatedManager*[myapp.models.App]"
|
||||
reveal_type(App().members) # N: Revealed type is "django.db.models.manager.RelatedManager[myapp.models.Member]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -273,7 +273,7 @@
|
||||
- case: many_to_many_works_with_string_if_imported
|
||||
main: |
|
||||
from myapp.models import Member
|
||||
reveal_type(Member().apps) # N: Revealed type is 'django.db.models.manager.RelatedManager*[myapp2.models.App]'
|
||||
reveal_type(Member().apps) # N: Revealed type is "django.db.models.manager.RelatedManager*[myapp2.models.App]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
- myapp2
|
||||
@@ -294,7 +294,7 @@
|
||||
- case: foreign_key_with_self
|
||||
main: |
|
||||
from myapp.models import User
|
||||
reveal_type(User().parent) # N: Revealed type is 'myapp.models.User*'
|
||||
reveal_type(User().parent) # N: Revealed type is "myapp.models.User*"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -308,7 +308,7 @@
|
||||
- case: many_to_many_with_self
|
||||
main: |
|
||||
from myapp.models import User
|
||||
reveal_type(User().friends) # N: Revealed type is 'django.db.models.manager.RelatedManager*[myapp.models.User]'
|
||||
reveal_type(User().friends) # N: Revealed type is "django.db.models.manager.RelatedManager*[myapp.models.User]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -339,7 +339,7 @@
|
||||
- case: if_no_related_name_is_passed_create_default_related_managers
|
||||
main: |
|
||||
from myapp.models import Publisher
|
||||
reveal_type(Publisher().book_set) # N: Revealed type is 'django.db.models.manager.RelatedManager[myapp.models.Book]'
|
||||
reveal_type(Publisher().book_set) # N: Revealed type is "django.db.models.manager.RelatedManager[myapp.models.Book]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -357,14 +357,14 @@
|
||||
import datetime
|
||||
from myapp.models import Book, Book2
|
||||
|
||||
reveal_type(Book().publisher_id) # N: Revealed type is 'builtins.str*'
|
||||
reveal_type(Book().publisher_id) # N: Revealed type is "builtins.str*"
|
||||
Book(publisher_id=1)
|
||||
Book(publisher_id='hello')
|
||||
Book(publisher_id=datetime.datetime.now()) # E: Incompatible type for "publisher_id" of "Book" (got "datetime", expected "Union[str, int, Combinable, None]")
|
||||
Book.objects.create(publisher_id=1)
|
||||
Book.objects.create(publisher_id='hello')
|
||||
|
||||
reveal_type(Book2().publisher_id) # N: Revealed type is 'builtins.int*'
|
||||
reveal_type(Book2().publisher_id) # N: Revealed type is "builtins.int*"
|
||||
Book2(publisher_id=1)
|
||||
Book2(publisher_id=[]) # E: Incompatible type for "publisher_id" of "Book2" (got "List[Any]", expected "Union[float, int, str, Combinable, None]")
|
||||
Book2.objects.create(publisher_id=1)
|
||||
@@ -390,7 +390,7 @@
|
||||
- case: if_model_is_defined_as_name_of_the_class_look_for_it_in_the_same_app
|
||||
main: |
|
||||
from myapp.models import Book
|
||||
reveal_type(Book().publisher) # N: Revealed type is 'myapp.models.publisher.Publisher*'
|
||||
reveal_type(Book().publisher) # N: Revealed type is "myapp.models.publisher.Publisher*"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -437,14 +437,14 @@
|
||||
main: |
|
||||
from myapp.models import Book, Publisher
|
||||
book = Book()
|
||||
reveal_type(book.publisher) # N: Revealed type is 'myapp.models.Publisher*'
|
||||
reveal_type(book.publisher) # N: Revealed type is "myapp.models.Publisher*"
|
||||
|
||||
publisher = Publisher()
|
||||
reveal_type(publisher.books)
|
||||
reveal_type(publisher.books2) # N: Revealed type is 'django.db.models.manager.RelatedManager[myapp.models.Book]'
|
||||
reveal_type(publisher.books2) # N: Revealed type is "django.db.models.manager.RelatedManager[myapp.models.Book]"
|
||||
out: |
|
||||
main:6: error: "Publisher" has no attribute "books"; maybe "books2"?
|
||||
main:6: note: Revealed type is 'Any'
|
||||
main:6: note: Revealed type is "Any"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -464,7 +464,7 @@
|
||||
main: |
|
||||
from myapp.models import Book
|
||||
book = Book()
|
||||
reveal_type(book.publisher) # N: Revealed type is 'myapp.models.Publisher*'
|
||||
reveal_type(book.publisher) # N: Revealed type is "myapp.models.Publisher*"
|
||||
custom_settings: |
|
||||
INSTALLED_APPS = ('django.contrib.contenttypes', 'myapp')
|
||||
BOOK_RELATED_MODEL = 'myapp.Publisher'
|
||||
@@ -484,7 +484,7 @@
|
||||
- case: foreign_key_with_custom_app_name
|
||||
main: |
|
||||
from myapp.models import MyMain
|
||||
reveal_type(MyMain().user) # N: Revealed type is 'myapp2.models.MyUser*'
|
||||
reveal_type(MyMain().user) # N: Revealed type is "myapp2.models.MyUser*"
|
||||
installed_apps:
|
||||
- myapp
|
||||
- myapp2.apps.MyApp2Config
|
||||
@@ -512,7 +512,7 @@
|
||||
- case: related_field_to_extracted_from_function
|
||||
main: |
|
||||
from myapp.models import Profile
|
||||
reveal_type(Profile().user) # N: Revealed type is 'myapp.models.User*'
|
||||
reveal_type(Profile().user) # N: Revealed type is "myapp.models.User*"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -531,8 +531,8 @@
|
||||
- case: related_manager_name_defined_by_pattern
|
||||
main: |
|
||||
from myapp.models import Publisher
|
||||
reveal_type(Publisher().books) # N: Revealed type is 'django.db.models.manager.RelatedManager[myapp.models.Book]'
|
||||
reveal_type(Publisher().articles) # N: Revealed type is 'django.db.models.manager.RelatedManager[myapp.models.Article]'
|
||||
reveal_type(Publisher().books) # N: Revealed type is "django.db.models.manager.RelatedManager[myapp.models.Book]"
|
||||
reveal_type(Publisher().articles) # N: Revealed type is "django.db.models.manager.RelatedManager[myapp.models.Article]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -555,9 +555,9 @@
|
||||
- case: test_related_fields_returned_as_descriptors_from_model_class
|
||||
main: |
|
||||
from myapp.models import Author, Blog, Publisher, Profile
|
||||
reveal_type(Author.blogs) # N: Revealed type is 'django.db.models.fields.related_descriptors.ManyToManyDescriptor'
|
||||
reveal_type(Blog.publisher) # N: Revealed type is 'django.db.models.fields.related_descriptors.ForwardManyToOneDescriptor'
|
||||
reveal_type(Publisher.profile) # N: Revealed type is 'django.db.models.fields.related_descriptors.ForwardOneToOneDescriptor'
|
||||
reveal_type(Author.blogs) # N: Revealed type is "django.db.models.fields.related_descriptors.ManyToManyDescriptor"
|
||||
reveal_type(Blog.publisher) # N: Revealed type is "django.db.models.fields.related_descriptors.ForwardManyToOneDescriptor"
|
||||
reveal_type(Publisher.profile) # N: Revealed type is "django.db.models.fields.related_descriptors.ForwardOneToOneDescriptor"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -579,12 +579,12 @@
|
||||
- case: test_foreign_key_from_superclass_inherits_correctly
|
||||
main: |
|
||||
from myapp.models import MyUser, Book, Article, LibraryEntity
|
||||
reveal_type(Book().registered_by_user) # N: Revealed type is 'myapp.models.MyUser*'
|
||||
reveal_type(Article().registered_by_user) # N: Revealed type is 'myapp.models.MyUser*'
|
||||
reveal_type(Book().registered_by_user) # N: Revealed type is "myapp.models.MyUser*"
|
||||
reveal_type(Article().registered_by_user) # N: Revealed type is "myapp.models.MyUser*"
|
||||
|
||||
user = MyUser()
|
||||
reveal_type(user.book_set) # N: Revealed type is 'django.db.models.manager.RelatedManager[myapp.models.Book]'
|
||||
reveal_type(user.article_set) # N: Revealed type is 'django.db.models.manager.RelatedManager[myapp.models.Article]'
|
||||
reveal_type(user.book_set) # N: Revealed type is "django.db.models.manager.RelatedManager[myapp.models.Book]"
|
||||
reveal_type(user.article_set) # N: Revealed type is "django.db.models.manager.RelatedManager[myapp.models.Article]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -629,11 +629,11 @@
|
||||
- case: resolve_primary_keys_for_foreign_keys_with_abstract_self_model
|
||||
main: |
|
||||
from myapp.models import User
|
||||
reveal_type(User().parent) # N: Revealed type is 'myapp.models.User*'
|
||||
reveal_type(User().parent_id) # N: Revealed type is 'builtins.int*'
|
||||
reveal_type(User().parent) # N: Revealed type is "myapp.models.User*"
|
||||
reveal_type(User().parent_id) # N: Revealed type is "builtins.int*"
|
||||
|
||||
reveal_type(User().parent2) # N: Revealed type is 'Union[myapp.models.User, None]'
|
||||
reveal_type(User().parent2_id) # N: Revealed type is 'Union[builtins.int, None]'
|
||||
reveal_type(User().parent2) # N: Revealed type is "Union[myapp.models.User, None]"
|
||||
reveal_type(User().parent2_id) # N: Revealed type is "Union[builtins.int, None]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -653,12 +653,12 @@
|
||||
- case: related_manager_is_a_subclass_of_default_manager
|
||||
main: |
|
||||
from myapp.models import User, Order, Product
|
||||
reveal_type(User().orders) # N: Revealed type is 'myapp.models.User_Order_RelatedManager1'
|
||||
reveal_type(User().orders.get()) # N: Revealed type is 'myapp.models.Order*'
|
||||
reveal_type(User().orders.manager_method()) # N: Revealed type is 'builtins.int'
|
||||
reveal_type(Order().products) # N: Revealed type is 'myapp.models.Order_Product_RelatedManager1'
|
||||
reveal_type(Order().products.get()) # N: Revealed type is 'myapp.models.Product*'
|
||||
reveal_type(Order().products.queryset_method()) # N: Revealed type is 'builtins.int'
|
||||
reveal_type(User().orders) # N: Revealed type is "myapp.models.User_Order_RelatedManager1"
|
||||
reveal_type(User().orders.get()) # N: Revealed type is "myapp.models.Order*"
|
||||
reveal_type(User().orders.manager_method()) # N: Revealed type is "builtins.int"
|
||||
reveal_type(Order().products) # N: Revealed type is "myapp.models.Order_Product_RelatedManager1"
|
||||
reveal_type(Order().products.get()) # N: Revealed type is "myapp.models.Product*"
|
||||
reveal_type(Order().products.queryset_method()) # N: Revealed type is "builtins.int"
|
||||
# TODO: realted manager support to use the same type for all related managers
|
||||
if 1 == 2:
|
||||
manager = User().products
|
||||
|
||||
@@ -3,22 +3,22 @@
|
||||
from myapp.models import Blog
|
||||
|
||||
qs = Blog.objects.all()
|
||||
reveal_type(qs) # N: Revealed type is 'django.db.models.manager.Manager[myapp.models.Blog]'
|
||||
reveal_type(qs.get(id=1)) # N: Revealed type is 'myapp.models.Blog*'
|
||||
reveal_type(iter(qs)) # N: Revealed type is 'typing.Iterator[myapp.models.Blog*]'
|
||||
reveal_type(qs.iterator()) # N: Revealed type is 'typing.Iterator[myapp.models.Blog*]'
|
||||
reveal_type(qs.first()) # N: Revealed type is 'Union[myapp.models.Blog*, None]'
|
||||
reveal_type(qs.earliest()) # N: Revealed type is 'myapp.models.Blog*'
|
||||
reveal_type(qs[0]) # N: Revealed type is 'myapp.models.Blog*'
|
||||
reveal_type(qs[:9]) # N: Revealed type is 'django.db.models.manager.Manager[myapp.models.Blog]'
|
||||
reveal_type(qs.in_bulk()) # N: Revealed type is 'builtins.dict[Any, myapp.models.Blog*]'
|
||||
reveal_type(qs) # N: Revealed type is "django.db.models.manager.Manager[myapp.models.Blog]"
|
||||
reveal_type(qs.get(id=1)) # N: Revealed type is "myapp.models.Blog*"
|
||||
reveal_type(iter(qs)) # N: Revealed type is "typing.Iterator[myapp.models.Blog*]"
|
||||
reveal_type(qs.iterator()) # N: Revealed type is "typing.Iterator[myapp.models.Blog*]"
|
||||
reveal_type(qs.first()) # N: Revealed type is "Union[myapp.models.Blog*, None]"
|
||||
reveal_type(qs.earliest()) # N: Revealed type is "myapp.models.Blog*"
|
||||
reveal_type(qs[0]) # N: Revealed type is "myapp.models.Blog*"
|
||||
reveal_type(qs[:9]) # N: Revealed type is "django.db.models.manager.Manager[myapp.models.Blog]"
|
||||
reveal_type(qs.in_bulk()) # N: Revealed type is "builtins.dict[Any, myapp.models.Blog*]"
|
||||
|
||||
# .dates / .datetimes
|
||||
reveal_type(Blog.objects.dates("created_at", "day")) # N: Revealed type is 'django.db.models.query.ValuesQuerySet[myapp.models.Blog*, datetime.date]'
|
||||
reveal_type(Blog.objects.datetimes("created_at", "day")) # N: Revealed type is 'django.db.models.query.ValuesQuerySet[myapp.models.Blog*, datetime.datetime]'
|
||||
reveal_type(Blog.objects.dates("created_at", "day")) # N: Revealed type is "django.db.models.query.ValuesQuerySet[myapp.models.Blog*, datetime.date]"
|
||||
reveal_type(Blog.objects.datetimes("created_at", "day")) # N: Revealed type is "django.db.models.query.ValuesQuerySet[myapp.models.Blog*, datetime.datetime]"
|
||||
|
||||
# AND-ing QuerySets
|
||||
reveal_type(Blog.objects.all() & Blog.objects.all()) # N: Revealed type is 'django.db.models.manager.Manager[myapp.models.Blog]'
|
||||
reveal_type(Blog.objects.all() & Blog.objects.all()) # N: Revealed type is "django.db.models.manager.Manager[myapp.models.Blog]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -34,7 +34,7 @@
|
||||
- case: queryset_missing_method
|
||||
main: |
|
||||
from myapp.models import User
|
||||
reveal_type(User.objects) # N: Revealed type is 'django.db.models.manager.Manager[myapp.models.User]'
|
||||
reveal_type(User.objects) # N: Revealed type is "django.db.models.manager.Manager[myapp.models.User]"
|
||||
User.objects.not_existing_method() # E: "Manager[User]" has no attribute "not_existing_method"
|
||||
installed_apps:
|
||||
- myapp
|
||||
@@ -44,4 +44,4 @@
|
||||
content: |
|
||||
from django.db import models
|
||||
class User(models.Model):
|
||||
pass
|
||||
pass
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
- case: from_queryset_with_base_manager
|
||||
main: |
|
||||
from myapp.models import MyModel
|
||||
reveal_type(MyModel().objects) # N: Revealed type is 'myapp.models.MyModel_NewManager[myapp.models.MyModel]'
|
||||
reveal_type(MyModel().objects.get()) # N: Revealed type is 'myapp.models.MyModel*'
|
||||
reveal_type(MyModel().objects.queryset_method()) # N: Revealed type is 'builtins.str'
|
||||
reveal_type(MyModel().objects) # N: Revealed type is "myapp.models.MyModel_NewManager[myapp.models.MyModel]"
|
||||
reveal_type(MyModel().objects.get()) # N: Revealed type is "myapp.models.MyModel*"
|
||||
reveal_type(MyModel().objects.queryset_method()) # N: Revealed type is "builtins.str"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -23,9 +23,9 @@
|
||||
- case: from_queryset_with_manager
|
||||
main: |
|
||||
from myapp.models import MyModel
|
||||
reveal_type(MyModel().objects) # N: Revealed type is 'myapp.models.MyModel_NewManager[myapp.models.MyModel]'
|
||||
reveal_type(MyModel().objects.get()) # N: Revealed type is 'myapp.models.MyModel*'
|
||||
reveal_type(MyModel().objects.queryset_method()) # N: Revealed type is 'builtins.str'
|
||||
reveal_type(MyModel().objects) # N: Revealed type is "myapp.models.MyModel_NewManager[myapp.models.MyModel]"
|
||||
reveal_type(MyModel().objects.get()) # N: Revealed type is "myapp.models.MyModel*"
|
||||
reveal_type(MyModel().objects.queryset_method()) # N: Revealed type is "builtins.str"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -45,11 +45,11 @@
|
||||
- case: from_queryset_returns_intersection_of_manager_and_queryset
|
||||
main: |
|
||||
from myapp.models import MyModel, NewManager
|
||||
reveal_type(NewManager()) # N: Revealed type is 'myapp.models.NewManager'
|
||||
reveal_type(MyModel.objects) # N: Revealed type is 'myapp.models.MyModel_NewManager[myapp.models.MyModel]'
|
||||
reveal_type(MyModel.objects.get()) # N: Revealed type is 'Any'
|
||||
reveal_type(MyModel.objects.manager_only_method()) # N: Revealed type is 'builtins.int'
|
||||
reveal_type(MyModel.objects.manager_and_queryset_method()) # N: Revealed type is 'builtins.str'
|
||||
reveal_type(NewManager()) # N: Revealed type is "myapp.models.NewManager"
|
||||
reveal_type(MyModel.objects) # N: Revealed type is "myapp.models.MyModel_NewManager[myapp.models.MyModel]"
|
||||
reveal_type(MyModel.objects.get()) # N: Revealed type is "Any"
|
||||
reveal_type(MyModel.objects.manager_only_method()) # N: Revealed type is "builtins.int"
|
||||
reveal_type(MyModel.objects.manager_and_queryset_method()) # N: Revealed type is "builtins.str"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -71,11 +71,11 @@
|
||||
- case: from_queryset_with_class_name_provided
|
||||
main: |
|
||||
from myapp.models import MyModel, NewManager
|
||||
reveal_type(NewManager()) # N: Revealed type is 'myapp.models.NewManager'
|
||||
reveal_type(MyModel.objects) # N: Revealed type is 'myapp.models.MyModel_NewManager[myapp.models.MyModel]'
|
||||
reveal_type(MyModel.objects.get()) # N: Revealed type is 'Any'
|
||||
reveal_type(MyModel.objects.manager_only_method()) # N: Revealed type is 'builtins.int'
|
||||
reveal_type(MyModel.objects.manager_and_queryset_method()) # N: Revealed type is 'builtins.str'
|
||||
reveal_type(NewManager()) # N: Revealed type is "myapp.models.NewManager"
|
||||
reveal_type(MyModel.objects) # N: Revealed type is "myapp.models.MyModel_NewManager[myapp.models.MyModel]"
|
||||
reveal_type(MyModel.objects.get()) # N: Revealed type is "Any"
|
||||
reveal_type(MyModel.objects.manager_only_method()) # N: Revealed type is "builtins.int"
|
||||
reveal_type(MyModel.objects.manager_and_queryset_method()) # N: Revealed type is "builtins.str"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -97,9 +97,9 @@
|
||||
- case: from_queryset_with_class_inheritance
|
||||
main: |
|
||||
from myapp.models import MyModel
|
||||
reveal_type(MyModel().objects) # N: Revealed type is 'myapp.models.MyModel_NewManager[myapp.models.MyModel]'
|
||||
reveal_type(MyModel().objects.get()) # N: Revealed type is 'myapp.models.MyModel*'
|
||||
reveal_type(MyModel().objects.queryset_method()) # N: Revealed type is 'builtins.str'
|
||||
reveal_type(MyModel().objects) # N: Revealed type is "myapp.models.MyModel_NewManager[myapp.models.MyModel]"
|
||||
reveal_type(MyModel().objects.get()) # N: Revealed type is "myapp.models.MyModel*"
|
||||
reveal_type(MyModel().objects.queryset_method()) # N: Revealed type is "builtins.str"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -121,10 +121,10 @@
|
||||
- case: from_queryset_with_manager_in_another_directory_and_imports
|
||||
main: |
|
||||
from myapp.models import MyModel
|
||||
reveal_type(MyModel().objects) # N: Revealed type is 'myapp.models.MyModel_NewManager[myapp.models.MyModel]'
|
||||
reveal_type(MyModel().objects.get()) # N: Revealed type is 'myapp.models.MyModel*'
|
||||
reveal_type(MyModel().objects.queryset_method) # N: Revealed type is 'def (param: Union[builtins.str, None] =) -> Union[builtins.str, None]'
|
||||
reveal_type(MyModel().objects.queryset_method('str')) # N: Revealed type is 'Union[builtins.str, None]'
|
||||
reveal_type(MyModel().objects) # N: Revealed type is "myapp.models.MyModel_NewManager[myapp.models.MyModel]"
|
||||
reveal_type(MyModel().objects.get()) # N: Revealed type is "myapp.models.MyModel*"
|
||||
reveal_type(MyModel().objects.queryset_method) # N: Revealed type is "def (param: Union[builtins.str, None] =) -> Union[builtins.str, None]"
|
||||
reveal_type(MyModel().objects.queryset_method('str')) # N: Revealed type is "Union[builtins.str, None]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -151,10 +151,10 @@
|
||||
disable_cache: true
|
||||
main: |
|
||||
from myapp.models import MyModel
|
||||
reveal_type(MyModel().objects) # N: Revealed type is 'myapp.models.MyModel_NewManager[myapp.models.MyModel]'
|
||||
reveal_type(MyModel().objects.get()) # N: Revealed type is 'myapp.models.MyModel*'
|
||||
reveal_type(MyModel().objects.base_queryset_method) # N: Revealed type is 'def (param: Union[builtins.int, builtins.str]) -> <nothing>'
|
||||
reveal_type(MyModel().objects.base_queryset_method(2)) # N: Revealed type is '<nothing>'
|
||||
reveal_type(MyModel().objects) # N: Revealed type is "myapp.models.MyModel_NewManager[myapp.models.MyModel]"
|
||||
reveal_type(MyModel().objects.get()) # N: Revealed type is "myapp.models.MyModel*"
|
||||
reveal_type(MyModel().objects.base_queryset_method) # N: Revealed type is "def (param: Union[builtins.int, builtins.str]) -> <nothing>"
|
||||
reveal_type(MyModel().objects.base_queryset_method(2)) # N: Revealed type is "<nothing>"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -178,4 +178,4 @@
|
||||
from django.db import models
|
||||
class BaseQuerySet(models.QuerySet):
|
||||
def base_queryset_method(self, param: Union[int, str]) -> NoReturn:
|
||||
raise ValueError
|
||||
raise ValueError
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
main: |
|
||||
from myapp.models import Blog
|
||||
values = Blog.objects.values('num_posts', 'text').get()
|
||||
reveal_type(values) # N: Revealed type is 'TypedDict({'num_posts': builtins.int, 'text': builtins.str})'
|
||||
reveal_type(values["num_posts"]) # N: Revealed type is 'builtins.int'
|
||||
reveal_type(values["text"]) # N: Revealed type is 'builtins.str'
|
||||
reveal_type(values) # N: Revealed type is "TypedDict({'num_posts': builtins.int, 'text': builtins.str})"
|
||||
reveal_type(values["num_posts"]) # N: Revealed type is "builtins.int"
|
||||
reveal_type(values["text"]) # N: Revealed type is "builtins.str"
|
||||
|
||||
values_pk = Blog.objects.values('pk').get()
|
||||
reveal_type(values_pk) # N: Revealed type is 'TypedDict({'pk': builtins.int})'
|
||||
reveal_type(values_pk["pk"]) # N: Revealed type is 'builtins.int'
|
||||
reveal_type(values_pk) # N: Revealed type is "TypedDict({'pk': builtins.int})"
|
||||
reveal_type(values_pk["pk"]) # N: Revealed type is "builtins.int"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -24,10 +24,10 @@
|
||||
main: |
|
||||
from myapp.models import Blog
|
||||
all_values_dict = Blog.objects.values().get()
|
||||
reveal_type(all_values_dict) # N: Revealed type is 'TypedDict({'id': builtins.int, 'num_posts': builtins.int, 'text': builtins.str})'
|
||||
reveal_type(all_values_dict["id"]) # N: Revealed type is 'builtins.int'
|
||||
reveal_type(all_values_dict["num_posts"]) # N: Revealed type is 'builtins.int'
|
||||
reveal_type(all_values_dict["text"]) # N: Revealed type is 'builtins.str'
|
||||
reveal_type(all_values_dict) # N: Revealed type is "TypedDict({'id': builtins.int, 'num_posts': builtins.int, 'text': builtins.str})"
|
||||
reveal_type(all_values_dict["id"]) # N: Revealed type is "builtins.int"
|
||||
reveal_type(all_values_dict["num_posts"]) # N: Revealed type is "builtins.int"
|
||||
reveal_type(all_values_dict["text"]) # N: Revealed type is "builtins.str"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -45,16 +45,16 @@
|
||||
main: |
|
||||
from myapp.models import Blog
|
||||
values1 = Blog.objects.values('publisher').get()
|
||||
reveal_type(values1) # N: Revealed type is 'TypedDict({'publisher': builtins.int})'
|
||||
reveal_type(values1['publisher']) # N: Revealed type is 'builtins.int'
|
||||
reveal_type(values1) # N: Revealed type is "TypedDict({'publisher': builtins.int})"
|
||||
reveal_type(values1['publisher']) # N: Revealed type is "builtins.int"
|
||||
|
||||
values2 = Blog.objects.values('publisher_id').get()
|
||||
reveal_type(values2) # N: Revealed type is 'TypedDict({'publisher_id': builtins.int})'
|
||||
reveal_type(values2["publisher_id"]) # N: Revealed type is 'builtins.int'
|
||||
reveal_type(values2) # N: Revealed type is "TypedDict({'publisher_id': builtins.int})"
|
||||
reveal_type(values2["publisher_id"]) # N: Revealed type is "builtins.int"
|
||||
|
||||
# all values return _id version
|
||||
all_values = Blog.objects.values().get()
|
||||
reveal_type(all_values) # N: Revealed type is 'TypedDict({'id': builtins.int, 'publisher_id': builtins.int})'
|
||||
reveal_type(all_values) # N: Revealed type is "TypedDict({'id': builtins.int, 'publisher_id': builtins.int})"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -71,10 +71,10 @@
|
||||
main: |
|
||||
from myapp.models import Entry
|
||||
values = Entry.objects.values('blog__num_articles', 'blog__publisher__name').get()
|
||||
reveal_type(values) # N: Revealed type is 'TypedDict({'blog__num_articles': builtins.int, 'blog__publisher__name': builtins.str})'
|
||||
reveal_type(values) # N: Revealed type is "TypedDict({'blog__num_articles': builtins.int, 'blog__publisher__name': builtins.str})"
|
||||
|
||||
pk_values = Entry.objects.values('blog__pk', 'blog__publisher__pk').get()
|
||||
reveal_type(pk_values) # N: Revealed type is 'TypedDict({'blog__pk': builtins.int, 'blog__publisher__pk': builtins.int})'
|
||||
reveal_type(pk_values) # N: Revealed type is "TypedDict({'blog__pk': builtins.int, 'blog__publisher__pk': builtins.int})"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -94,7 +94,7 @@
|
||||
main: |
|
||||
from myapp.models import Publisher
|
||||
related_model_values = Publisher.objects.values('id', 'blog__name').get()
|
||||
reveal_type(related_model_values) # N: Revealed type is 'TypedDict({'id': builtins.int, 'blog__name': builtins.str})'
|
||||
reveal_type(related_model_values) # N: Revealed type is "TypedDict({'id': builtins.int, 'blog__name': builtins.str})"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -111,8 +111,8 @@
|
||||
- case: values_of_many_to_many_field
|
||||
main: |
|
||||
from myapp.models import Author, Book
|
||||
reveal_type(Book.objects.values('authors')) # N: Revealed type is 'django.db.models.query.ValuesQuerySet[myapp.models.Book, TypedDict({'authors': builtins.int})]'
|
||||
reveal_type(Author.objects.values('books')) # N: Revealed type is 'django.db.models.query.ValuesQuerySet[myapp.models.Author, TypedDict({'books': builtins.int})]'
|
||||
reveal_type(Book.objects.values('authors')) # N: Revealed type is "django.db.models.query.ValuesQuerySet[myapp.models.Book, TypedDict({'authors': builtins.int})]"
|
||||
reveal_type(Author.objects.values('books')) # N: Revealed type is "django.db.models.query.ValuesQuerySet[myapp.models.Author, TypedDict({'books': builtins.int})]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
- case: values_list_simple_field_returns_queryset_of_tuples
|
||||
main: |
|
||||
from myapp.models import MyUser
|
||||
reveal_type(MyUser.objects.values_list('name').get()) # N: Revealed type is 'Tuple[builtins.str]'
|
||||
reveal_type(MyUser.objects.values_list('id', 'name').get()) # N: Revealed type is 'Tuple[builtins.int, builtins.str]'
|
||||
reveal_type(MyUser.objects.values_list('name').get()) # N: Revealed type is "Tuple[builtins.str]"
|
||||
reveal_type(MyUser.objects.values_list('id', 'name').get()) # N: Revealed type is "Tuple[builtins.int, builtins.str]"
|
||||
|
||||
values_tuple = MyUser.objects.values_list('name', 'age').get()
|
||||
reveal_type(values_tuple[0]) # N: Revealed type is 'builtins.str'
|
||||
reveal_type(values_tuple[1]) # N: Revealed type is 'builtins.int'
|
||||
reveal_type(values_tuple[0]) # N: Revealed type is "builtins.str"
|
||||
reveal_type(values_tuple[1]) # N: Revealed type is "builtins.int"
|
||||
|
||||
# no fields specified return all fields
|
||||
all_values_tuple = MyUser.objects.values_list().get()
|
||||
reveal_type(all_values_tuple) # N: Revealed type is 'Tuple[builtins.int, builtins.str, builtins.int]'
|
||||
reveal_type(all_values_tuple) # N: Revealed type is "Tuple[builtins.int, builtins.str, builtins.int]"
|
||||
|
||||
# pk as field
|
||||
pk_values = MyUser.objects.values_list('pk').get()
|
||||
reveal_type(pk_values) # N: # N: Revealed type is 'Tuple[builtins.int]'
|
||||
reveal_type(pk_values) # N: # N: Revealed type is "Tuple[builtins.int]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -30,13 +30,13 @@
|
||||
main: |
|
||||
from myapp.models import Post, Blog
|
||||
values_tuple = Post.objects.values_list('blog', 'blog__num_posts', 'blog__publisher', 'blog__publisher__name').get()
|
||||
reveal_type(values_tuple[0]) # N: Revealed type is 'myapp.models.Blog'
|
||||
reveal_type(values_tuple[1]) # N: Revealed type is 'builtins.int'
|
||||
reveal_type(values_tuple[2]) # N: Revealed type is 'myapp.models.Publisher'
|
||||
reveal_type(values_tuple[3]) # N: Revealed type is 'builtins.str'
|
||||
reveal_type(values_tuple[0]) # N: Revealed type is "myapp.models.Blog"
|
||||
reveal_type(values_tuple[1]) # N: Revealed type is "builtins.int"
|
||||
reveal_type(values_tuple[2]) # N: Revealed type is "myapp.models.Publisher"
|
||||
reveal_type(values_tuple[3]) # N: Revealed type is "builtins.str"
|
||||
|
||||
reverse_fields_list = Blog.objects.values_list('post__text').get()
|
||||
reveal_type(reverse_fields_list) # N: Revealed type is 'Tuple[builtins.str]'
|
||||
reveal_type(reverse_fields_list) # N: Revealed type is "Tuple[builtins.str]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -56,15 +56,15 @@
|
||||
- case: values_list_flat_true_methods
|
||||
main: |
|
||||
from myapp.models import MyUser, MyUser2
|
||||
reveal_type(MyUser.objects.values_list('name', flat=True).get()) # N: Revealed type is 'builtins.str*'
|
||||
reveal_type(MyUser.objects.values_list('name', flat=True).get()) # N: Revealed type is "builtins.str*"
|
||||
reveal_type(MyUser.objects.values_list('name', 'age', flat=True).get())
|
||||
|
||||
# flat=True without specified fields returns primary key values
|
||||
reveal_type(MyUser.objects.values_list(flat=True)[0]) # N: Revealed type is 'builtins.int*'
|
||||
reveal_type(MyUser2.objects.values_list(flat=True)[0]) # N: Revealed type is 'builtins.str*'
|
||||
reveal_type(MyUser.objects.values_list(flat=True)[0]) # N: Revealed type is "builtins.int*"
|
||||
reveal_type(MyUser2.objects.values_list(flat=True)[0]) # N: Revealed type is "builtins.str*"
|
||||
out: |
|
||||
main:3: error: 'flat' is not valid when 'values_list' is called with more than one field
|
||||
main:3: note: Revealed type is 'Any'
|
||||
main:3: note: Revealed type is "Any"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -82,26 +82,26 @@
|
||||
main: |
|
||||
from myapp.models import MyUser
|
||||
values_named_tuple = MyUser.objects.values_list('name', 'age', named=True).get()
|
||||
reveal_type(values_named_tuple) # N: Revealed type is 'Tuple[builtins.str, builtins.int, fallback=main.Row]'
|
||||
reveal_type(values_named_tuple.name) # N: Revealed type is 'builtins.str'
|
||||
reveal_type(values_named_tuple.age) # N: Revealed type is 'builtins.int'
|
||||
reveal_type(values_named_tuple) # N: Revealed type is "Tuple[builtins.str, builtins.int, fallback=main.Row]"
|
||||
reveal_type(values_named_tuple.name) # N: Revealed type is "builtins.str"
|
||||
reveal_type(values_named_tuple.age) # N: Revealed type is "builtins.int"
|
||||
|
||||
# no fields specified, returns all fields namedtuple
|
||||
all_values_named_tuple = MyUser.objects.values_list(named=True).get()
|
||||
reveal_type(all_values_named_tuple.id) # N: Revealed type is 'builtins.int'
|
||||
reveal_type(all_values_named_tuple.name) # N: Revealed type is 'builtins.str'
|
||||
reveal_type(all_values_named_tuple.age) # N: Revealed type is 'builtins.int'
|
||||
reveal_type(all_values_named_tuple.is_admin) # N: Revealed type is 'builtins.bool'
|
||||
reveal_type(all_values_named_tuple.id) # N: Revealed type is "builtins.int"
|
||||
reveal_type(all_values_named_tuple.name) # N: Revealed type is "builtins.str"
|
||||
reveal_type(all_values_named_tuple.age) # N: Revealed type is "builtins.int"
|
||||
reveal_type(all_values_named_tuple.is_admin) # N: Revealed type is "builtins.bool"
|
||||
|
||||
# pk as field
|
||||
pk_values = MyUser.objects.values_list('pk', named=True).get()
|
||||
reveal_type(pk_values) # N: Revealed type is 'Tuple[builtins.int, fallback=main.Row2]'
|
||||
reveal_type(pk_values.pk) # N: # N: Revealed type is 'builtins.int'
|
||||
reveal_type(pk_values) # N: Revealed type is "Tuple[builtins.int, fallback=main.Row2]"
|
||||
reveal_type(pk_values.pk) # N: # N: Revealed type is "builtins.int"
|
||||
|
||||
# values_list(named=True) inside function
|
||||
def func() -> None:
|
||||
from myapp.models import MyUser
|
||||
reveal_type(MyUser.objects.values_list('name', named=True).get()) # N: Revealed type is 'Tuple[builtins.str, fallback=main.Row3]'
|
||||
reveal_type(MyUser.objects.values_list('name', named=True).get()) # N: Revealed type is "Tuple[builtins.str, fallback=main.Row3]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -120,7 +120,7 @@
|
||||
reveal_type(MyUser.objects.values_list('name', flat=True, named=True).get())
|
||||
out: |
|
||||
main:2: error: 'flat' and 'named' can't be used together
|
||||
main:2: note: Revealed type is 'Any'
|
||||
main:2: note: Revealed type is "Any"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -140,12 +140,12 @@
|
||||
reveal_type(Blog.objects.values_list('publisher__unknown').get())
|
||||
out: |
|
||||
main:2: error: Cannot resolve keyword 'unknown' into field. Choices are: id, publisher, publisher_id
|
||||
main:2: note: Revealed type is 'Any'
|
||||
main:2: note: Revealed type is "Any"
|
||||
main:3: error: Cannot resolve keyword 'unknown' into field. Choices are: id, publisher, publisher_id
|
||||
main:3: note: Revealed type is 'Any'
|
||||
main:3: note: Revealed type is "Any"
|
||||
main:4: error: Cannot resolve keyword 'unknown' into field. Choices are: id, publisher, publisher_id
|
||||
main:4: note: Revealed type is 'Any'
|
||||
main:5: note: Revealed type is 'Tuple[Any]'
|
||||
main:4: note: Revealed type is "Any"
|
||||
main:5: note: Revealed type is "Tuple[Any]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -162,16 +162,16 @@
|
||||
main: |
|
||||
from myapp.models import Entry, Blog
|
||||
values = Entry.objects.values_list('blog__num_articles', 'blog__publisher__name', named=True).get()
|
||||
reveal_type(values.blog__num_articles) # N: Revealed type is 'builtins.int'
|
||||
reveal_type(values.blog__publisher__name) # N: Revealed type is 'builtins.str'
|
||||
reveal_type(values.blog__num_articles) # N: Revealed type is "builtins.int"
|
||||
reveal_type(values.blog__publisher__name) # N: Revealed type is "builtins.str"
|
||||
|
||||
pk_values = Entry.objects.values_list('blog__pk', 'blog__publisher__pk', named=True).get()
|
||||
reveal_type(pk_values.blog__pk) # N: Revealed type is 'builtins.int'
|
||||
reveal_type(pk_values.blog__publisher__pk) # N: Revealed type is 'builtins.int'
|
||||
reveal_type(pk_values.blog__pk) # N: Revealed type is "builtins.int"
|
||||
reveal_type(pk_values.blog__publisher__pk) # N: Revealed type is "builtins.int"
|
||||
|
||||
# reverse relation
|
||||
reverse_values = Blog.objects.values_list('entry__text', named=True).get()
|
||||
reveal_type(reverse_values.entry__text) # N: Revealed type is 'builtins.str'
|
||||
reveal_type(reverse_values.entry__text) # N: Revealed type is "builtins.str"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -191,10 +191,10 @@
|
||||
- case: values_list_flat_true_with_ids
|
||||
main: |
|
||||
from myapp.models import Blog, Publisher
|
||||
reveal_type(Blog.objects.values_list('id', flat=True)) # N: Revealed type is 'django.db.models.query.ValuesQuerySet[myapp.models.Blog, builtins.int]'
|
||||
reveal_type(Blog.objects.values_list('publisher_id', flat=True)) # N: Revealed type is 'django.db.models.query.ValuesQuerySet[myapp.models.Blog, builtins.int]'
|
||||
reveal_type(Blog.objects.values_list('id', flat=True)) # N: Revealed type is "django.db.models.query.ValuesQuerySet[myapp.models.Blog, builtins.int]"
|
||||
reveal_type(Blog.objects.values_list('publisher_id', flat=True)) # N: Revealed type is "django.db.models.query.ValuesQuerySet[myapp.models.Blog, builtins.int]"
|
||||
# is Iterable[int]
|
||||
reveal_type(list(Blog.objects.values_list('id', flat=True))) # N: Revealed type is 'builtins.list[builtins.int*]'
|
||||
reveal_type(list(Blog.objects.values_list('id', flat=True))) # N: Revealed type is "builtins.list[builtins.int*]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -210,9 +210,9 @@
|
||||
- case: subclass_of_queryset_has_proper_typings_on_methods
|
||||
main: |
|
||||
from myapp.models import TransactionQuerySet
|
||||
reveal_type(TransactionQuerySet()) # N: Revealed type is 'myapp.models.TransactionQuerySet'
|
||||
reveal_type(TransactionQuerySet().values()) # N: Revealed type is 'django.db.models.query.ValuesQuerySet[myapp.models.Transaction, TypedDict({'id': builtins.int, 'total': builtins.int})]'
|
||||
reveal_type(TransactionQuerySet().values_list()) # N: Revealed type is 'django.db.models.query.ValuesQuerySet[myapp.models.Transaction, Tuple[builtins.int, builtins.int]]'
|
||||
reveal_type(TransactionQuerySet()) # N: Revealed type is "myapp.models.TransactionQuerySet"
|
||||
reveal_type(TransactionQuerySet().values()) # N: Revealed type is "django.db.models.query.ValuesQuerySet[myapp.models.Transaction, TypedDict({'id': builtins.int, 'total': builtins.int})]"
|
||||
reveal_type(TransactionQuerySet().values_list()) # N: Revealed type is "django.db.models.query.ValuesQuerySet[myapp.models.Transaction, Tuple[builtins.int, builtins.int]]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -228,8 +228,8 @@
|
||||
- case: values_list_of_many_to_many_field
|
||||
main: |
|
||||
from myapp.models import Author, Book
|
||||
reveal_type(Book.objects.values_list('authors')) # N: Revealed type is 'django.db.models.query.ValuesQuerySet[myapp.models.Book, Tuple[builtins.int]]'
|
||||
reveal_type(Author.objects.values_list('books')) # N: Revealed type is 'django.db.models.query.ValuesQuerySet[myapp.models.Author, Tuple[builtins.int]]'
|
||||
reveal_type(Book.objects.values_list('authors')) # N: Revealed type is "django.db.models.query.ValuesQuerySet[myapp.models.Book, Tuple[builtins.int]]"
|
||||
reveal_type(Author.objects.values_list('books')) # N: Revealed type is "django.db.models.query.ValuesQuerySet[myapp.models.Author, Tuple[builtins.int]]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -240,4 +240,4 @@
|
||||
class Author(models.Model):
|
||||
pass
|
||||
class Book(models.Model):
|
||||
authors = models.ManyToManyField(Author, related_name='books')
|
||||
authors = models.ManyToManyField(Author, related_name='books')
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
- case: test_every_model_has_objects_queryset_available
|
||||
main: |
|
||||
from myapp.models import User
|
||||
reveal_type(User.objects) # N: Revealed type is 'django.db.models.manager.Manager[myapp.models.User]'
|
||||
reveal_type(User.objects.get()) # N: Revealed type is 'myapp.models.User*'
|
||||
reveal_type(User.objects) # N: Revealed type is "django.db.models.manager.Manager[myapp.models.User]"
|
||||
reveal_type(User.objects.get()) # N: Revealed type is "myapp.models.User*"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -16,8 +16,8 @@
|
||||
- case: every_model_has_its_own_objects_queryset
|
||||
main: |
|
||||
from myapp.models import Parent, Child
|
||||
reveal_type(Parent.objects) # N: Revealed type is 'django.db.models.manager.Manager[myapp.models.Parent]'
|
||||
reveal_type(Child.objects) # N: Revealed type is 'django.db.models.manager.Manager[myapp.models.Child]'
|
||||
reveal_type(Parent.objects) # N: Revealed type is "django.db.models.manager.Manager[myapp.models.Parent]"
|
||||
reveal_type(Child.objects) # N: Revealed type is "django.db.models.manager.Manager[myapp.models.Child]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -34,7 +34,7 @@
|
||||
main: |
|
||||
from myapp.models import Base, MyModel
|
||||
base_instance = Base(MyModel)
|
||||
reveal_type(base_instance.model_cls._default_manager) # N: Revealed type is 'django.db.models.manager.Manager[myapp.models.MyModel]'
|
||||
reveal_type(base_instance.model_cls._default_manager) # N: Revealed type is "django.db.models.manager.Manager[myapp.models.MyModel]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -48,17 +48,17 @@
|
||||
class Base(Generic[_T]):
|
||||
def __init__(self, model_cls: Type[_T]):
|
||||
self.model_cls = model_cls
|
||||
reveal_type(self.model_cls._default_manager) # N: Revealed type is 'django.db.models.manager.BaseManager[django.db.models.base.Model]'
|
||||
reveal_type(self.model_cls._default_manager) # N: Revealed type is "django.db.models.manager.BaseManager[django.db.models.base.Model]"
|
||||
class MyModel(models.Model):
|
||||
pass
|
||||
class Child(Base[MyModel]):
|
||||
def method(self) -> None:
|
||||
reveal_type(self.model_cls._default_manager) # N: Revealed type is 'django.db.models.manager.Manager[myapp.models.MyModel]'
|
||||
reveal_type(self.model_cls._default_manager) # N: Revealed type is "django.db.models.manager.Manager[myapp.models.MyModel]"
|
||||
|
||||
- case: if_custom_manager_defined_it_is_set_to_default_manager
|
||||
main: |
|
||||
from myapp.models import MyModel
|
||||
reveal_type(MyModel._default_manager) # N: Revealed type is 'myapp.models.CustomManager[myapp.models.MyModel]'
|
||||
reveal_type(MyModel._default_manager) # N: Revealed type is "myapp.models.CustomManager[myapp.models.MyModel]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -76,7 +76,7 @@
|
||||
- case: if_default_manager_name_is_passed_set_default_manager_to_it
|
||||
main: |
|
||||
from myapp.models import MyModel
|
||||
reveal_type(MyModel._default_manager) # N: Revealed type is 'myapp.models.Manager2[myapp.models.MyModel]'
|
||||
reveal_type(MyModel._default_manager) # N: Revealed type is "myapp.models.Manager2[myapp.models.MyModel]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -100,9 +100,9 @@
|
||||
- case: test_leave_as_is_if_objects_is_set_and_fill_typevars_with_outer_class
|
||||
main: |
|
||||
from myapp.models import MyUser
|
||||
reveal_type(MyUser.objects) # N: Revealed type is 'myapp.models.UserManager[myapp.models.MyUser]'
|
||||
reveal_type(MyUser.objects.get()) # N: Revealed type is 'myapp.models.MyUser*'
|
||||
reveal_type(MyUser.objects.get_or_404()) # N: Revealed type is 'myapp.models.MyUser'
|
||||
reveal_type(MyUser.objects) # N: Revealed type is "myapp.models.UserManager[myapp.models.MyUser]"
|
||||
reveal_type(MyUser.objects.get()) # N: Revealed type is "myapp.models.MyUser*"
|
||||
reveal_type(MyUser.objects.get_or_404()) # N: Revealed type is "myapp.models.MyUser"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -121,8 +121,8 @@
|
||||
- case: model_imported_from_different_file
|
||||
main: |
|
||||
from myapp.models import Inventory, Band
|
||||
reveal_type(Inventory.objects) # N: Revealed type is 'django.db.models.manager.Manager[myapp.models.main.Inventory]'
|
||||
reveal_type(Band.objects) # N: Revealed type is 'django.db.models.manager.Manager[myapp.models.Band]'
|
||||
reveal_type(Inventory.objects) # N: Revealed type is "django.db.models.manager.Manager[myapp.models.main.Inventory]"
|
||||
reveal_type(Band.objects) # N: Revealed type is "django.db.models.manager.Manager[myapp.models.Band]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -142,10 +142,10 @@
|
||||
- case: managers_that_defined_on_other_models_do_not_influence
|
||||
main: |
|
||||
from myapp.models import AbstractPerson, Book
|
||||
reveal_type(AbstractPerson.abstract_persons) # N: Revealed type is 'django.db.models.manager.Manager[myapp.models.AbstractPerson]'
|
||||
reveal_type(Book.published_objects) # N: Revealed type is 'myapp.models.PublishedBookManager[myapp.models.Book]'
|
||||
reveal_type(AbstractPerson.abstract_persons) # N: Revealed type is "django.db.models.manager.Manager[myapp.models.AbstractPerson]"
|
||||
reveal_type(Book.published_objects) # N: Revealed type is "myapp.models.PublishedBookManager[myapp.models.Book]"
|
||||
Book.published_objects.create(title='hello')
|
||||
reveal_type(Book.annotated_objects) # N: Revealed type is 'myapp.models.AnnotatedBookManager[myapp.models.Book]'
|
||||
reveal_type(Book.annotated_objects) # N: Revealed type is "myapp.models.AnnotatedBookManager[myapp.models.Book]"
|
||||
Book.annotated_objects.create(title='hello')
|
||||
installed_apps:
|
||||
- myapp
|
||||
@@ -196,11 +196,11 @@
|
||||
- case: model_has_a_manager_of_the_same_type
|
||||
main: |
|
||||
from myapp.models import UnrelatedModel, MyModel
|
||||
reveal_type(UnrelatedModel.objects) # N: Revealed type is 'django.db.models.manager.Manager[myapp.models.UnrelatedModel]'
|
||||
reveal_type(UnrelatedModel.objects.first()) # N: Revealed type is 'Union[myapp.models.UnrelatedModel*, None]'
|
||||
reveal_type(UnrelatedModel.objects) # N: Revealed type is "django.db.models.manager.Manager[myapp.models.UnrelatedModel]"
|
||||
reveal_type(UnrelatedModel.objects.first()) # N: Revealed type is "Union[myapp.models.UnrelatedModel*, None]"
|
||||
|
||||
reveal_type(MyModel.objects) # N: Revealed type is 'django.db.models.manager.Manager[myapp.models.MyModel]'
|
||||
reveal_type(MyModel.objects.first()) # N: Revealed type is 'Union[myapp.models.MyModel*, None]'
|
||||
reveal_type(MyModel.objects) # N: Revealed type is "django.db.models.manager.Manager[myapp.models.MyModel]"
|
||||
reveal_type(MyModel.objects.first()) # N: Revealed type is "Union[myapp.models.MyModel*, None]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -217,11 +217,11 @@
|
||||
- case: manager_without_annotation_of_the_model_gets_it_from_outer_one
|
||||
main: |
|
||||
from myapp.models import UnrelatedModel2, MyModel2
|
||||
reveal_type(UnrelatedModel2.objects) # N: Revealed type is 'django.db.models.manager.Manager[myapp.models.UnrelatedModel2]'
|
||||
reveal_type(UnrelatedModel2.objects.first()) # N: Revealed type is 'Union[myapp.models.UnrelatedModel2*, None]'
|
||||
reveal_type(UnrelatedModel2.objects) # N: Revealed type is "django.db.models.manager.Manager[myapp.models.UnrelatedModel2]"
|
||||
reveal_type(UnrelatedModel2.objects.first()) # N: Revealed type is "Union[myapp.models.UnrelatedModel2*, None]"
|
||||
|
||||
reveal_type(MyModel2.objects) # N: Revealed type is 'django.db.models.manager.Manager[myapp.models.MyModel2]'
|
||||
reveal_type(MyModel2.objects.first()) # N: Revealed type is 'Union[myapp.models.MyModel2*, None]'
|
||||
reveal_type(MyModel2.objects) # N: Revealed type is "django.db.models.manager.Manager[myapp.models.MyModel2]"
|
||||
reveal_type(MyModel2.objects.first()) # N: Revealed type is "Union[myapp.models.MyModel2*, None]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -238,11 +238,11 @@
|
||||
- case: inherited_manager_has_the_proper_type_of_model
|
||||
main: |
|
||||
from myapp.models import ParentOfMyModel3, MyModel3
|
||||
reveal_type(ParentOfMyModel3.objects) # N: Revealed type is 'django.db.models.manager.Manager[myapp.models.ParentOfMyModel3]'
|
||||
reveal_type(ParentOfMyModel3.objects.first()) # N: Revealed type is 'Union[myapp.models.ParentOfMyModel3*, None]'
|
||||
reveal_type(ParentOfMyModel3.objects) # N: Revealed type is "django.db.models.manager.Manager[myapp.models.ParentOfMyModel3]"
|
||||
reveal_type(ParentOfMyModel3.objects.first()) # N: Revealed type is "Union[myapp.models.ParentOfMyModel3*, None]"
|
||||
|
||||
reveal_type(MyModel3.objects) # N: Revealed type is 'django.db.models.manager.Manager[myapp.models.MyModel3]'
|
||||
reveal_type(MyModel3.objects.first()) # N: Revealed type is 'Union[myapp.models.MyModel3*, None]'
|
||||
reveal_type(MyModel3.objects) # N: Revealed type is "django.db.models.manager.Manager[myapp.models.MyModel3]"
|
||||
reveal_type(MyModel3.objects.first()) # N: Revealed type is "Union[myapp.models.MyModel3*, None]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -259,11 +259,11 @@
|
||||
- case: inheritance_with_explicit_type_on_child_manager
|
||||
main: |
|
||||
from myapp.models import ParentOfMyModel4, MyModel4
|
||||
reveal_type(ParentOfMyModel4.objects) # N: Revealed type is 'django.db.models.manager.Manager[myapp.models.ParentOfMyModel4]'
|
||||
reveal_type(ParentOfMyModel4.objects.first()) # N: Revealed type is 'Union[myapp.models.ParentOfMyModel4*, None]'
|
||||
reveal_type(ParentOfMyModel4.objects) # N: Revealed type is "django.db.models.manager.Manager[myapp.models.ParentOfMyModel4]"
|
||||
reveal_type(ParentOfMyModel4.objects.first()) # N: Revealed type is "Union[myapp.models.ParentOfMyModel4*, None]"
|
||||
|
||||
reveal_type(MyModel4.objects) # N: Revealed type is 'django.db.models.manager.Manager[myapp.models.MyModel4]'
|
||||
reveal_type(MyModel4.objects.first()) # N: Revealed type is 'Union[myapp.models.MyModel4*, None]'
|
||||
reveal_type(MyModel4.objects) # N: Revealed type is "django.db.models.manager.Manager[myapp.models.MyModel4]"
|
||||
reveal_type(MyModel4.objects.first()) # N: Revealed type is "Union[myapp.models.MyModel4*, None]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -281,11 +281,11 @@
|
||||
#- case: inheritance_of_two_models_with_custom_objects_manager
|
||||
# main: |
|
||||
# from myapp.models import MyBaseUser, MyUser
|
||||
# reveal_type(MyBaseUser.objects) # N: Revealed type is 'myapp.models.MyBaseManager[myapp.models.MyBaseUser]'
|
||||
# reveal_type(MyBaseUser.objects.get()) # N: Revealed type is 'myapp.models.MyBaseUser'
|
||||
# reveal_type(MyBaseUser.objects) # N: Revealed type is "myapp.models.MyBaseManager[myapp.models.MyBaseUser]"
|
||||
# reveal_type(MyBaseUser.objects.get()) # N: Revealed type is "myapp.models.MyBaseUser"
|
||||
#
|
||||
# reveal_type(MyUser.objects) # N: Revealed type is 'myapp.models.MyManager[myapp.models.MyUser]'
|
||||
# reveal_type(MyUser.objects.get()) # N: Revealed type is 'myapp.models.MyUser'
|
||||
# reveal_type(MyUser.objects) # N: Revealed type is "myapp.models.MyManager[myapp.models.MyUser]"
|
||||
# reveal_type(MyUser.objects.get()) # N: Revealed type is "myapp.models.MyUser"
|
||||
# installed_apps:
|
||||
# - myapp
|
||||
# files:
|
||||
@@ -307,18 +307,18 @@
|
||||
- case: custom_manager_returns_proper_model_types
|
||||
main: |
|
||||
from myapp.models import User
|
||||
reveal_type(User.objects) # N: Revealed type is 'myapp.models.User_MyManager2[myapp.models.User]'
|
||||
reveal_type(User.objects.select_related()) # N: Revealed type is 'myapp.models.User_MyManager2[myapp.models.User]'
|
||||
reveal_type(User.objects.get()) # N: Revealed type is 'myapp.models.User*'
|
||||
reveal_type(User.objects.get_instance()) # N: Revealed type is 'builtins.int'
|
||||
reveal_type(User.objects.get_instance_untyped('hello')) # N: Revealed type is 'Any'
|
||||
reveal_type(User.objects) # N: Revealed type is "myapp.models.User_MyManager2[myapp.models.User]"
|
||||
reveal_type(User.objects.select_related()) # N: Revealed type is "myapp.models.User_MyManager2[myapp.models.User]"
|
||||
reveal_type(User.objects.get()) # N: Revealed type is "myapp.models.User*"
|
||||
reveal_type(User.objects.get_instance()) # N: Revealed type is "builtins.int"
|
||||
reveal_type(User.objects.get_instance_untyped('hello')) # N: Revealed type is "Any"
|
||||
|
||||
from myapp.models import ChildUser
|
||||
reveal_type(ChildUser.objects) # N: Revealed type is 'myapp.models.ChildUser_MyManager2[myapp.models.ChildUser]'
|
||||
reveal_type(ChildUser.objects.select_related()) # N: Revealed type is 'myapp.models.ChildUser_MyManager2[myapp.models.ChildUser]'
|
||||
reveal_type(ChildUser.objects.get()) # N: Revealed type is 'myapp.models.ChildUser*'
|
||||
reveal_type(ChildUser.objects.get_instance()) # N: Revealed type is 'builtins.int'
|
||||
reveal_type(ChildUser.objects.get_instance_untyped('hello')) # N: Revealed type is 'Any'
|
||||
reveal_type(ChildUser.objects) # N: Revealed type is "myapp.models.ChildUser_MyManager2[myapp.models.ChildUser]"
|
||||
reveal_type(ChildUser.objects.select_related()) # N: Revealed type is "myapp.models.ChildUser_MyManager2[myapp.models.ChildUser]"
|
||||
reveal_type(ChildUser.objects.get()) # N: Revealed type is "myapp.models.ChildUser*"
|
||||
reveal_type(ChildUser.objects.get_instance()) # N: Revealed type is "builtins.int"
|
||||
reveal_type(ChildUser.objects.get_instance_untyped('hello')) # N: Revealed type is "Any"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -339,8 +339,8 @@
|
||||
- case: custom_manager_annotate_method_before_type_declaration
|
||||
main: |
|
||||
from myapp.models import ModelA, ModelB, ManagerA
|
||||
reveal_type(ModelA.objects) # N: Revealed type is 'myapp.models.ModelA_ManagerA1[myapp.models.ModelA]'
|
||||
reveal_type(ModelA.objects.do_something) # N: Revealed type is 'def (other_obj: myapp.models.ModelB) -> builtins.str'
|
||||
reveal_type(ModelA.objects) # N: Revealed type is "myapp.models.ModelA_ManagerA1[myapp.models.ModelA]"
|
||||
reveal_type(ModelA.objects.do_something) # N: Revealed type is "def (other_obj: myapp.models.ModelB) -> builtins.str"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
|
||||
@@ -1,28 +1,28 @@
|
||||
- case: contrib_auth_model_fields
|
||||
main: |
|
||||
from django.contrib.auth.models import User
|
||||
reveal_type(User().username) # N: Revealed type is 'builtins.str*'
|
||||
reveal_type(User().password) # N: Revealed type is 'builtins.str*'
|
||||
reveal_type(User().first_name) # N: Revealed type is 'builtins.str*'
|
||||
reveal_type(User().last_name) # N: Revealed type is 'builtins.str*'
|
||||
reveal_type(User().email) # N: Revealed type is 'builtins.str*'
|
||||
reveal_type(User().is_staff) # N: Revealed type is 'builtins.bool'
|
||||
reveal_type(User().is_active) # N: Revealed type is 'builtins.bool'
|
||||
reveal_type(User().date_joined) # N: Revealed type is 'datetime.datetime*'
|
||||
reveal_type(User().last_login) # N: Revealed type is 'Union[datetime.datetime, None]'
|
||||
reveal_type(User().is_authenticated) # N: Revealed type is 'Literal[True]'
|
||||
reveal_type(User().is_anonymous) # N: Revealed type is 'Literal[False]'
|
||||
reveal_type(User().username) # N: Revealed type is "builtins.str*"
|
||||
reveal_type(User().password) # N: Revealed type is "builtins.str*"
|
||||
reveal_type(User().first_name) # N: Revealed type is "builtins.str*"
|
||||
reveal_type(User().last_name) # N: Revealed type is "builtins.str*"
|
||||
reveal_type(User().email) # N: Revealed type is "builtins.str*"
|
||||
reveal_type(User().is_staff) # N: Revealed type is "builtins.bool"
|
||||
reveal_type(User().is_active) # N: Revealed type is "builtins.bool"
|
||||
reveal_type(User().date_joined) # N: Revealed type is "datetime.datetime*"
|
||||
reveal_type(User().last_login) # N: Revealed type is "Union[datetime.datetime, None]"
|
||||
reveal_type(User().is_authenticated) # N: Revealed type is "Literal[True]"
|
||||
reveal_type(User().is_anonymous) # N: Revealed type is "Literal[False]"
|
||||
|
||||
from django.contrib.auth.models import AnonymousUser
|
||||
reveal_type(AnonymousUser().is_authenticated) # N: Revealed type is 'Literal[False]'
|
||||
reveal_type(AnonymousUser().is_anonymous) # N: Revealed type is 'Literal[True]'
|
||||
reveal_type(AnonymousUser().is_authenticated) # N: Revealed type is "Literal[False]"
|
||||
reveal_type(AnonymousUser().is_anonymous) # N: Revealed type is "Literal[True]"
|
||||
|
||||
from django.contrib.auth.models import Permission
|
||||
reveal_type(Permission().name) # N: Revealed type is 'builtins.str*'
|
||||
reveal_type(Permission().codename) # N: Revealed type is 'builtins.str*'
|
||||
reveal_type(Permission().name) # N: Revealed type is "builtins.str*"
|
||||
reveal_type(Permission().codename) # N: Revealed type is "builtins.str*"
|
||||
|
||||
from django.contrib.auth.models import PermissionsMixin
|
||||
reveal_type(PermissionsMixin().is_superuser) # N: Revealed type is 'builtins.bool'
|
||||
reveal_type(PermissionsMixin().is_superuser) # N: Revealed type is "builtins.bool"
|
||||
|
||||
from django.contrib.auth.models import Group
|
||||
reveal_type(Group().name) # N: Revealed type is 'builtins.str*'
|
||||
reveal_type(Group().name) # N: Revealed type is "builtins.str*"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
from myapp.models import MyUser
|
||||
user = MyUser(name='user', gender='M')
|
||||
user.get_name_display() # E: "MyUser" has no attribute "get_name_display"; maybe "get_gender_display"?
|
||||
reveal_type(user.get_gender_display()) # N: Revealed type is 'builtins.str'
|
||||
reveal_type(user.get_gender_display()) # N: Revealed type is "builtins.str"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -22,10 +22,10 @@
|
||||
- case: date_datetime_fields_have_get_next_by_get_previous_by
|
||||
main: |
|
||||
from myapp.models import MyUser
|
||||
reveal_type(MyUser().get_next_by_date()) # N: Revealed type is 'myapp.models.MyUser'
|
||||
reveal_type(MyUser().get_next_by_datetime()) # N: Revealed type is 'myapp.models.MyUser'
|
||||
reveal_type(MyUser().get_previous_by_date()) # N: Revealed type is 'myapp.models.MyUser'
|
||||
reveal_type(MyUser().get_previous_by_datetime()) # N: Revealed type is 'myapp.models.MyUser'
|
||||
reveal_type(MyUser().get_next_by_date()) # N: Revealed type is "myapp.models.MyUser"
|
||||
reveal_type(MyUser().get_next_by_datetime()) # N: Revealed type is "myapp.models.MyUser"
|
||||
reveal_type(MyUser().get_previous_by_date()) # N: Revealed type is "myapp.models.MyUser"
|
||||
reveal_type(MyUser().get_previous_by_datetime()) # N: Revealed type is "myapp.models.MyUser"
|
||||
|
||||
# accept arbitrary kwargs
|
||||
MyUser().get_next_by_date(arg1=1, arg2=2)
|
||||
|
||||
@@ -50,12 +50,12 @@
|
||||
main: |
|
||||
from myapp.models import B
|
||||
b_instance = B()
|
||||
reveal_type(b_instance.b_attr) # N: Revealed type is 'builtins.int'
|
||||
reveal_type(b_instance.b_attr) # N: Revealed type is "builtins.int"
|
||||
|
||||
reveal_type(b_instance.non_existent_attribute)
|
||||
b_instance.non_existent_attribute = 2
|
||||
out: |
|
||||
main:5: note: Revealed type is 'Any'
|
||||
main:5: note: Revealed type is "Any"
|
||||
main:5: error: "B" has no attribute "non_existent_attribute"
|
||||
main:6: error: "B" has no attribute "non_existent_attribute"
|
||||
installed_apps:
|
||||
@@ -73,7 +73,7 @@
|
||||
- case: fields_recognized_if_base_model_is_subclass_of_models_model
|
||||
main: |
|
||||
from myapp.models import User
|
||||
reveal_type(User().username) # N: Revealed type is 'builtins.str*'
|
||||
reveal_type(User().username) # N: Revealed type is "builtins.str*"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -94,8 +94,8 @@
|
||||
- case: django_contrib_gis_base_model_mixin_inheritance
|
||||
main: |
|
||||
from myapp.models import User
|
||||
reveal_type(User().name) # N: Revealed type is 'builtins.str*'
|
||||
reveal_type(User().updated_at) # N: Revealed type is 'datetime.datetime*'
|
||||
reveal_type(User().name) # N: Revealed type is "builtins.str*"
|
||||
reveal_type(User().updated_at) # N: Revealed type is "datetime.datetime*"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -112,4 +112,4 @@
|
||||
class Meta:
|
||||
abstract = True
|
||||
class User(Mixin1, Mixin2):
|
||||
name = models.TextField()
|
||||
name = models.TextField()
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
- case: meta_attribute_has_a_type_of_current_model
|
||||
main: |
|
||||
from myapp.models import MyUser
|
||||
reveal_type(MyUser._meta) # N: Revealed type is 'django.db.models.options.Options[myapp.models.MyUser]'
|
||||
reveal_type(MyUser._meta) # N: Revealed type is "django.db.models.options.Options[myapp.models.MyUser]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -15,13 +15,13 @@
|
||||
- case: get_field_returns_proper_field_type
|
||||
main: |
|
||||
from myapp.models import MyUser
|
||||
reveal_type(MyUser._meta.get_field('base_name')) # N: Revealed type is 'django.db.models.fields.CharField[Any, Any]'
|
||||
reveal_type(MyUser._meta.get_field('name')) # N: Revealed type is 'django.db.models.fields.CharField[Any, Any]'
|
||||
reveal_type(MyUser._meta.get_field('age')) # N: Revealed type is 'django.db.models.fields.IntegerField[Any, Any]'
|
||||
reveal_type(MyUser._meta.get_field('base_name')) # N: Revealed type is "django.db.models.fields.CharField[Any, Any]"
|
||||
reveal_type(MyUser._meta.get_field('name')) # N: Revealed type is "django.db.models.fields.CharField[Any, Any]"
|
||||
reveal_type(MyUser._meta.get_field('age')) # N: Revealed type is "django.db.models.fields.IntegerField[Any, Any]"
|
||||
reveal_type(MyUser._meta.get_field('unknown'))
|
||||
reveal_type(MyUser._meta.get_field('to_user')) # N: Revealed type is 'django.db.models.fields.related.ForeignKey[Any, Any]'
|
||||
reveal_type(MyUser._meta.get_field('to_user')) # N: Revealed type is "django.db.models.fields.related.ForeignKey[Any, Any]"
|
||||
out: |
|
||||
main:5: note: Revealed type is 'Any'
|
||||
main:5: note: Revealed type is "Any"
|
||||
main:5: error: MyUser has no field named 'unknown'
|
||||
installed_apps:
|
||||
- myapp
|
||||
@@ -42,7 +42,7 @@
|
||||
from myapp.models import AbstractModel
|
||||
class MyModel(AbstractModel):
|
||||
pass
|
||||
reveal_type(MyModel._meta.get_field('field')) # N: Revealed type is 'Any'
|
||||
reveal_type(MyModel._meta.get_field('field')) # N: Revealed type is "Any"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
Blog(publisher=Publisher())
|
||||
Blog.objects.create(publisher=Publisher())
|
||||
Blog().publisher = Publisher()
|
||||
reveal_type(Blog().publisher) # N: Revealed type is 'myapp.models.PublisherProxy*'
|
||||
reveal_type(Blog().publisher) # N: Revealed type is "myapp.models.PublisherProxy*"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
main: |
|
||||
from myapp.models import MyUser
|
||||
user = MyUser(pk=1)
|
||||
reveal_type(user._state) # N: Revealed type is 'django.db.models.base.ModelState'
|
||||
reveal_type(user._state) # N: Revealed type is "django.db.models.base.ModelState"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
def lower(value: str) -> str:
|
||||
return value.lower()
|
||||
|
||||
reveal_type(lower) # N: Revealed type is 'def (value: builtins.str) -> builtins.str'
|
||||
reveal_type(lower) # N: Revealed type is "def (value: builtins.str) -> builtins.str"
|
||||
|
||||
- case: register_filter_named
|
||||
main: |
|
||||
@@ -18,7 +18,7 @@
|
||||
def lower(value: str) -> str:
|
||||
return value.lower()
|
||||
|
||||
reveal_type(lower) # N: Revealed type is 'def (value: builtins.str) -> builtins.str'
|
||||
reveal_type(lower) # N: Revealed type is "def (value: builtins.str) -> builtins.str"
|
||||
|
||||
- case: register_simple_tag_no_args
|
||||
main: |
|
||||
@@ -30,7 +30,7 @@
|
||||
def current_time(format_string: str) -> str:
|
||||
return datetime.datetime.now().strftime(format_string)
|
||||
|
||||
reveal_type(current_time) # N: Revealed type is 'def (format_string: builtins.str) -> builtins.str'
|
||||
reveal_type(current_time) # N: Revealed type is "def (format_string: builtins.str) -> builtins.str"
|
||||
|
||||
- case: register_simple_tag_context
|
||||
main: |
|
||||
@@ -43,7 +43,7 @@
|
||||
timezone = context['timezone']
|
||||
return "test"
|
||||
|
||||
reveal_type(current_time) # N: Revealed type is 'def (context: builtins.dict[builtins.str, Any], format_string: builtins.str) -> builtins.str'
|
||||
reveal_type(current_time) # N: Revealed type is "def (context: builtins.dict[builtins.str, Any], format_string: builtins.str) -> builtins.str"
|
||||
|
||||
- case: register_simple_tag_named
|
||||
main: |
|
||||
@@ -55,7 +55,7 @@
|
||||
def some_function(value: int) -> int:
|
||||
return value - 2
|
||||
|
||||
reveal_type(some_function) # N: Revealed type is 'def (value: builtins.int) -> builtins.int'
|
||||
reveal_type(some_function) # N: Revealed type is "def (value: builtins.int) -> builtins.int"
|
||||
|
||||
- case: register_tag_no_args
|
||||
main: |
|
||||
@@ -68,7 +68,7 @@
|
||||
def cycle(parser: Parser, token: Token) -> CycleNode:
|
||||
return CycleNode([])
|
||||
|
||||
reveal_type(cycle) # N: Revealed type is 'def (parser: django.template.base.Parser, token: django.template.base.Token) -> django.template.defaulttags.CycleNode'
|
||||
reveal_type(cycle) # N: Revealed type is "def (parser: django.template.base.Parser, token: django.template.base.Token) -> django.template.defaulttags.CycleNode"
|
||||
|
||||
- case: register_tag_named
|
||||
main: |
|
||||
@@ -81,7 +81,7 @@
|
||||
def cycle_impl(parser: Parser, token: Token) -> CycleNode:
|
||||
return CycleNode([])
|
||||
|
||||
reveal_type(cycle_impl) # N: Revealed type is 'def (parser: django.template.base.Parser, token: django.template.base.Token) -> django.template.defaulttags.CycleNode'
|
||||
reveal_type(cycle_impl) # N: Revealed type is "def (parser: django.template.base.Parser, token: django.template.base.Token) -> django.template.defaulttags.CycleNode"
|
||||
|
||||
- case: register_inclusion_tag
|
||||
main: |
|
||||
@@ -93,4 +93,4 @@
|
||||
def format_results(results: List[str]) -> str:
|
||||
return ', '.join(results)
|
||||
|
||||
reveal_type(format_results) # N: Revealed type is 'def (results: builtins.list[builtins.str]) -> builtins.str'
|
||||
reveal_type(format_results) # N: Revealed type is "def (results: builtins.list[builtins.str]) -> builtins.str"
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
|
||||
class ExampleTestCase(TestCase):
|
||||
def test_method(self) -> None:
|
||||
reveal_type(self.client) # N: Revealed type is 'django.test.client.Client'
|
||||
reveal_type(self.client) # N: Revealed type is "django.test.client.Client"
|
||||
resp = self.client.post('/url', {'doit': 'srs'}, 'application/json', False, True, extra='value')
|
||||
reveal_type(resp.status_code) # N: Revealed type is 'builtins.int'
|
||||
reveal_type(resp.status_code) # N: Revealed type is "builtins.int"
|
||||
# Attributes monkey-patched by test Client class:
|
||||
resp.json()
|
||||
reveal_type(resp.wsgi_request) # N: Revealed type is 'django.core.handlers.wsgi.WSGIRequest'
|
||||
reveal_type(resp.wsgi_request) # N: Revealed type is "django.core.handlers.wsgi.WSGIRequest"
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
main: |
|
||||
from myapp.models import MyModel
|
||||
mymodel = MyModel(user_id=1)
|
||||
reveal_type(mymodel.id) # N: Revealed type is 'builtins.int*'
|
||||
reveal_type(mymodel.user) # N: Revealed type is 'django.contrib.auth.models.User*'
|
||||
reveal_type(mymodel.objects) # N: Revealed type is 'django.db.models.manager.Manager[myapp.models.MyModel]'
|
||||
reveal_type(mymodel.id) # N: Revealed type is "builtins.int*"
|
||||
reveal_type(mymodel.user) # N: Revealed type is "django.contrib.auth.models.User*"
|
||||
reveal_type(mymodel.objects) # N: Revealed type is "django.db.models.manager.Manager[myapp.models.MyModel]"
|
||||
mypy_config: |
|
||||
[mypy.plugins.django-stubs]
|
||||
django_settings_module = mysettings
|
||||
@@ -20,13 +20,13 @@
|
||||
class MyModel(models.Model):
|
||||
user = models.ForeignKey('auth.User', on_delete=models.CASCADE)
|
||||
if TYPE_CHECKING:
|
||||
reveal_type(MyModel().user) # N: Revealed type is 'django.contrib.auth.models.User*'
|
||||
reveal_type(MyModel().user) # N: Revealed type is "django.contrib.auth.models.User*"
|
||||
|
||||
- case: generate_pyproject_toml_and_settings_file_from_installed_apps_key
|
||||
main: |
|
||||
from myapp.models import MyModel
|
||||
mymodel = MyModel(user_id=1)
|
||||
reveal_type(mymodel.id) # N: Revealed type is 'builtins.int*'
|
||||
reveal_type(mymodel.id) # N: Revealed type is "builtins.int*"
|
||||
installed_apps:
|
||||
- django.contrib.auth
|
||||
- myapp
|
||||
|
||||
@@ -39,11 +39,11 @@
|
||||
form_class = MyForm
|
||||
def post(self, request, *args: Any, **kwds: Any):
|
||||
form_class = self.get_form_class()
|
||||
reveal_type(form_class) # N: Revealed type is 'Type[main.MyForm]'
|
||||
reveal_type(self.get_form(None)) # N: Revealed type is 'main.MyForm'
|
||||
reveal_type(self.get_form()) # N: Revealed type is 'main.MyForm'
|
||||
reveal_type(self.get_form(form_class)) # N: Revealed type is 'main.MyForm'
|
||||
reveal_type(self.get_form(MyForm2)) # N: Revealed type is 'main.MyForm2'
|
||||
reveal_type(form_class) # N: Revealed type is "Type[main.MyForm]"
|
||||
reveal_type(self.get_form(None)) # N: Revealed type is "main.MyForm"
|
||||
reveal_type(self.get_form()) # N: Revealed type is "main.MyForm"
|
||||
reveal_type(self.get_form(form_class)) # N: Revealed type is "main.MyForm"
|
||||
reveal_type(self.get_form(MyForm2)) # N: Revealed type is "main.MyForm2"
|
||||
|
||||
- case: updateview_form_valid_has_form_save
|
||||
main: |
|
||||
@@ -55,7 +55,7 @@
|
||||
class MyView(UpdateView):
|
||||
form_class = MyForm
|
||||
def form_valid(self, form: forms.BaseModelForm):
|
||||
reveal_type(form.save) # N: Revealed type is 'def (commit: builtins.bool =) -> Any'
|
||||
reveal_type(form.save) # N: Revealed type is "def (commit: builtins.bool =) -> Any"
|
||||
|
||||
- case: successmessagemixin_compatible_with_formmixin
|
||||
main: |
|
||||
|
||||
@@ -18,13 +18,13 @@
|
||||
def decorated_func(param1: str, param2: int) -> bool:
|
||||
pass
|
||||
# Ensure that the function's type is preserved
|
||||
reveal_type(decorated_func) # N: Revealed type is 'def (param1: builtins.str, param2: builtins.int) -> builtins.bool'
|
||||
reveal_type(decorated_func) # N: Revealed type is "def (param1: builtins.str, param2: builtins.int) -> builtins.bool"
|
||||
|
||||
@transaction.atomic(using="mydb")
|
||||
def decorated_func_using(param1: str, param2: int) -> bool:
|
||||
pass
|
||||
# Ensure that the function's type is preserved
|
||||
reveal_type(decorated_func_using) # N: Revealed type is 'def (param1: builtins.str, param2: builtins.int) -> builtins.bool'
|
||||
reveal_type(decorated_func_using) # N: Revealed type is "def (param1: builtins.str, param2: builtins.int) -> builtins.bool"
|
||||
|
||||
class ClassWithAtomicMethod:
|
||||
# Bare decorator
|
||||
@@ -39,26 +39,26 @@
|
||||
pass
|
||||
ClassWithAtomicMethod().atomic_method1("abc") # E: Argument 1 to "atomic_method1" of "ClassWithAtomicMethod" has incompatible type "str"; expected "int"
|
||||
# Ensure that the method's type is preserved
|
||||
reveal_type(ClassWithAtomicMethod().atomic_method1) # N: Revealed type is 'def (abc: builtins.int) -> builtins.str'
|
||||
reveal_type(ClassWithAtomicMethod().atomic_method1) # N: Revealed type is "def (abc: builtins.int) -> builtins.str"
|
||||
# Ensure that the method's type is preserved
|
||||
reveal_type(ClassWithAtomicMethod().atomic_method3) # N: Revealed type is 'def (myparam: builtins.str) -> builtins.int'
|
||||
reveal_type(ClassWithAtomicMethod().atomic_method3) # N: Revealed type is "def (myparam: builtins.str) -> builtins.int"
|
||||
|
||||
|
||||
- case: mark_safe_decorator_and_function
|
||||
main: |
|
||||
from django.utils.safestring import mark_safe
|
||||
s = 'hello'
|
||||
reveal_type(mark_safe(s)) # N: Revealed type is 'django.utils.safestring.SafeText'
|
||||
reveal_type(mark_safe(s) + mark_safe(s)) # N: Revealed type is 'django.utils.safestring.SafeText'
|
||||
reveal_type(s + mark_safe(s)) # N: Revealed type is 'builtins.str'
|
||||
reveal_type(mark_safe(s)) # N: Revealed type is "django.utils.safestring.SafeText"
|
||||
reveal_type(mark_safe(s) + mark_safe(s)) # N: Revealed type is "django.utils.safestring.SafeText"
|
||||
reveal_type(s + mark_safe(s)) # N: Revealed type is "builtins.str"
|
||||
|
||||
s += mark_safe(s)
|
||||
reveal_type(s) # N: Revealed type is 'builtins.str'
|
||||
reveal_type(s) # N: Revealed type is "builtins.str"
|
||||
ms = mark_safe(s)
|
||||
ms += mark_safe(s)
|
||||
reveal_type(ms) # N: Revealed type is 'django.utils.safestring.SafeText'
|
||||
reveal_type(ms) # N: Revealed type is "django.utils.safestring.SafeText"
|
||||
|
||||
@mark_safe
|
||||
def func(s: str) -> str:
|
||||
pass
|
||||
reveal_type(func) # N: Revealed type is 'def (s: builtins.str) -> builtins.str'
|
||||
reveal_type(func) # N: Revealed type is "def (s: builtins.str) -> builtins.str"
|
||||
|
||||
@@ -5,15 +5,15 @@
|
||||
from django.core.mail.message import EmailMessage
|
||||
|
||||
message = EmailMessage()
|
||||
reveal_type(message) # N: Revealed type is 'django.core.mail.message.EmailMessage'
|
||||
reveal_type(message) # N: Revealed type is "django.core.mail.message.EmailMessage"
|
||||
|
||||
message.attach("myfilename", "mycontent", "text/plain")
|
||||
|
||||
mime_text = MIMEText("mytext")
|
||||
reveal_type(mime_text) # N: Revealed type is 'email.mime.text.MIMEText'
|
||||
reveal_type(mime_text) # N: Revealed type is "email.mime.text.MIMEText"
|
||||
message.attach(mime_text)
|
||||
|
||||
mime_image = MIMEImage("mydata", "image/png")
|
||||
reveal_type(mime_image) # N: Revealed type is 'email.mime.image.MIMEImage'
|
||||
reveal_type(mime_image) # N: Revealed type is "email.mime.image.MIMEImage"
|
||||
message.attach(mime_image)
|
||||
reveal_type(message.attachments) # N: Revealed type is 'builtins.list[Any]'
|
||||
reveal_type(message.attachments) # N: Revealed type is "builtins.list[Any]"
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
disable_cache: true
|
||||
main: |
|
||||
from django.http.request import HttpRequest
|
||||
reveal_type(HttpRequest().user) # N: Revealed type is 'Union[myapp.models.MyUser, django.contrib.auth.models.AnonymousUser]'
|
||||
reveal_type(HttpRequest().user) # N: Revealed type is "Union[myapp.models.MyUser, django.contrib.auth.models.AnonymousUser]"
|
||||
# check that other fields work ok
|
||||
reveal_type(HttpRequest().method) # N: Revealed type is 'Union[builtins.str, None]'
|
||||
reveal_type(HttpRequest().method) # N: Revealed type is "Union[builtins.str, None]"
|
||||
custom_settings: |
|
||||
INSTALLED_APPS = ('django.contrib.contenttypes', 'django.contrib.auth', 'myapp')
|
||||
AUTH_USER_MODEL='myapp.MyUser'
|
||||
@@ -20,11 +20,11 @@
|
||||
main: |
|
||||
from django.http.request import HttpRequest
|
||||
request = HttpRequest()
|
||||
reveal_type(request.user) # N: Revealed type is 'Union[django.contrib.auth.models.User, django.contrib.auth.models.AnonymousUser]'
|
||||
reveal_type(request.user) # N: Revealed type is "Union[django.contrib.auth.models.User, django.contrib.auth.models.AnonymousUser]"
|
||||
if not request.user.is_anonymous:
|
||||
reveal_type(request.user) # N: Revealed type is 'django.contrib.auth.models.User'
|
||||
reveal_type(request.user) # N: Revealed type is "django.contrib.auth.models.User"
|
||||
if request.user.is_authenticated:
|
||||
reveal_type(request.user) # N: Revealed type is 'django.contrib.auth.models.User'
|
||||
reveal_type(request.user) # N: Revealed type is "django.contrib.auth.models.User"
|
||||
custom_settings: |
|
||||
INSTALLED_APPS = ('django.contrib.contenttypes', 'django.contrib.auth')
|
||||
- case: request_object_user_without_auth_and_contenttypes_apps
|
||||
@@ -32,17 +32,17 @@
|
||||
main: |
|
||||
from django.http.request import HttpRequest
|
||||
request = HttpRequest()
|
||||
reveal_type(request.user) # N: Revealed type is 'Union[django.contrib.auth.base_user.AbstractBaseUser, django.contrib.auth.models.AnonymousUser]'
|
||||
reveal_type(request.user) # N: Revealed type is "Union[django.contrib.auth.base_user.AbstractBaseUser, django.contrib.auth.models.AnonymousUser]"
|
||||
if request.user.is_authenticated:
|
||||
reveal_type(request.user) # N: Revealed type is 'django.contrib.auth.base_user.AbstractBaseUser'
|
||||
reveal_type(request.user) # N: Revealed type is "django.contrib.auth.base_user.AbstractBaseUser"
|
||||
- case: request_object_user_without_auth_but_with_contenttypes_apps
|
||||
disable_cache: true
|
||||
main: |
|
||||
from django.http.request import HttpRequest
|
||||
request = HttpRequest()
|
||||
reveal_type(request.user) # N: Revealed type is 'Union[django.contrib.auth.base_user.AbstractBaseUser, django.contrib.auth.models.AnonymousUser]'
|
||||
reveal_type(request.user) # N: Revealed type is "Union[django.contrib.auth.base_user.AbstractBaseUser, django.contrib.auth.models.AnonymousUser]"
|
||||
if request.user.is_authenticated:
|
||||
reveal_type(request.user) # N: Revealed type is 'django.contrib.auth.base_user.AbstractBaseUser'
|
||||
reveal_type(request.user) # N: Revealed type is "django.contrib.auth.base_user.AbstractBaseUser"
|
||||
custom_settings: |
|
||||
INSTALLED_APPS = ('django.contrib.contenttypes',)
|
||||
- case: subclass_request_not_changed_user_type
|
||||
@@ -53,7 +53,7 @@
|
||||
foo: int # Just do something
|
||||
|
||||
request = MyRequest()
|
||||
reveal_type(request.user) # N: Revealed type is 'Union[django.contrib.auth.models.User, django.contrib.auth.models.AnonymousUser]'
|
||||
reveal_type(request.user) # N: Revealed type is "Union[django.contrib.auth.models.User, django.contrib.auth.models.AnonymousUser]"
|
||||
custom_settings: |
|
||||
INSTALLED_APPS = ('django.contrib.contenttypes', 'django.contrib.auth')
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
user: User # Override the type of user
|
||||
|
||||
request = MyRequest()
|
||||
reveal_type(request.user) # N: Revealed type is 'django.contrib.auth.models.User'
|
||||
reveal_type(request.user) # N: Revealed type is "django.contrib.auth.models.User"
|
||||
custom_settings: |
|
||||
INSTALLED_APPS = ('django.contrib.contenttypes', 'django.contrib.auth')
|
||||
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
main: |
|
||||
from django.conf import settings
|
||||
# standard settings
|
||||
reveal_type(settings.AUTH_USER_MODEL) # N: Revealed type is 'builtins.str'
|
||||
reveal_type(settings.ROOT_DIR) # N: Revealed type is 'builtins.str'
|
||||
reveal_type(settings.APPS_DIR) # N: Revealed type is 'pathlib.Path*'
|
||||
reveal_type(settings.NUMBERS) # N: Revealed type is 'builtins.list[builtins.str*]'
|
||||
reveal_type(settings.DICT) # N: Revealed type is 'builtins.dict[Any, Any]'
|
||||
reveal_type(settings.AUTH_USER_MODEL) # N: Revealed type is "builtins.str"
|
||||
reveal_type(settings.ROOT_DIR) # N: Revealed type is "builtins.str"
|
||||
reveal_type(settings.APPS_DIR) # N: Revealed type is "pathlib.Path*"
|
||||
reveal_type(settings.NUMBERS) # N: Revealed type is "builtins.list[builtins.str*]"
|
||||
reveal_type(settings.DICT) # N: Revealed type is "builtins.dict[Any, Any]"
|
||||
custom_settings: |
|
||||
from base import *
|
||||
SECRET_KEY = 112233
|
||||
@@ -23,8 +23,8 @@
|
||||
- case: global_settings_are_always_loaded
|
||||
main: |
|
||||
from django.conf import settings
|
||||
reveal_type(settings.AUTH_USER_MODEL) # N: Revealed type is 'builtins.str'
|
||||
reveal_type(settings.AUTHENTICATION_BACKENDS) # N: Revealed type is 'typing.Sequence[builtins.str]'
|
||||
reveal_type(settings.AUTH_USER_MODEL) # N: Revealed type is "builtins.str"
|
||||
reveal_type(settings.AUTHENTICATION_BACKENDS) # N: Revealed type is "typing.Sequence[builtins.str]"
|
||||
installed_apps: []
|
||||
|
||||
- case: fail_if_there_is_no_setting
|
||||
@@ -32,7 +32,7 @@
|
||||
from django.conf import settings
|
||||
reveal_type(settings.NOT_EXISTING)
|
||||
out: |
|
||||
main:2: note: Revealed type is 'Any'
|
||||
main:2: note: Revealed type is "Any"
|
||||
main:2: error: 'Settings' object has no attribute 'NOT_EXISTING'
|
||||
|
||||
- case: override_default_setting_with_different_type_in_the_different_module
|
||||
@@ -40,8 +40,8 @@
|
||||
from settings.basic_settings import *
|
||||
main: |
|
||||
from django.conf import settings
|
||||
reveal_type(settings.MEDIA_ROOT) # N: Revealed type is 'pathlib.Path*'
|
||||
reveal_type(settings.MEDIA_ROOT / 'part') # N: Revealed type is 'pathlib.Path*'
|
||||
reveal_type(settings.MEDIA_ROOT) # N: Revealed type is "pathlib.Path*"
|
||||
reveal_type(settings.MEDIA_ROOT / 'part') # N: Revealed type is "pathlib.Path*"
|
||||
files:
|
||||
- path: settings/__init__.py
|
||||
- path: settings/basic_settings.py
|
||||
|
||||
@@ -3,13 +3,13 @@
|
||||
from django.shortcuts import get_object_or_404, get_list_or_404
|
||||
from myapp.models import MyModel
|
||||
|
||||
reveal_type(get_object_or_404(MyModel)) # N: Revealed type is 'myapp.models.MyModel*'
|
||||
reveal_type(get_object_or_404(MyModel.objects)) # N: Revealed type is 'myapp.models.MyModel*'
|
||||
reveal_type(get_object_or_404(MyModel.objects.get_queryset())) # N: Revealed type is 'myapp.models.MyModel*'
|
||||
reveal_type(get_object_or_404(MyModel)) # N: Revealed type is "myapp.models.MyModel*"
|
||||
reveal_type(get_object_or_404(MyModel.objects)) # N: Revealed type is "myapp.models.MyModel*"
|
||||
reveal_type(get_object_or_404(MyModel.objects.get_queryset())) # N: Revealed type is "myapp.models.MyModel*"
|
||||
|
||||
reveal_type(get_list_or_404(MyModel)) # N: Revealed type is 'builtins.list[myapp.models.MyModel*]'
|
||||
reveal_type(get_list_or_404(MyModel.objects)) # N: Revealed type is 'builtins.list[myapp.models.MyModel*]'
|
||||
reveal_type(get_list_or_404(MyModel.objects.get_queryset())) # N: Revealed type is 'builtins.list[myapp.models.MyModel*]'
|
||||
reveal_type(get_list_or_404(MyModel)) # N: Revealed type is "builtins.list[myapp.models.MyModel*]"
|
||||
reveal_type(get_list_or_404(MyModel.objects)) # N: Revealed type is "builtins.list[myapp.models.MyModel*]"
|
||||
reveal_type(get_list_or_404(MyModel.objects.get_queryset())) # N: Revealed type is "builtins.list[myapp.models.MyModel*]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -25,7 +25,7 @@
|
||||
main: |
|
||||
from django.contrib.auth import get_user_model
|
||||
UserModel = get_user_model()
|
||||
reveal_type(UserModel.objects) # N: Revealed type is 'django.db.models.manager.Manager[myapp.models.MyUser]'
|
||||
reveal_type(UserModel.objects) # N: Revealed type is "django.db.models.manager.Manager[myapp.models.MyUser]"
|
||||
custom_settings: |
|
||||
INSTALLED_APPS = ('django.contrib.contenttypes', 'myapp')
|
||||
AUTH_USER_MODEL = 'myapp.MyUser'
|
||||
@@ -46,14 +46,14 @@
|
||||
|
||||
TestContext = TypedDict("TestContext", {"user": Any})
|
||||
test_context: TestContext = {"user": "test"}
|
||||
reveal_type(test_context) # N: Revealed type is 'TypedDict('main.TestContext', {'user': Any})'
|
||||
reveal_type(render(HttpRequest(), '', test_context)) # N: Revealed type is 'django.http.response.HttpResponse'
|
||||
reveal_type(test_context) # N: Revealed type is "TypedDict('main.TestContext', {'user': Any})"
|
||||
reveal_type(render(HttpRequest(), '', test_context)) # N: Revealed type is "django.http.response.HttpResponse"
|
||||
|
||||
- case: check_redirect_return_annotation
|
||||
main: |
|
||||
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 = '', permanent = True)) # N: Revealed type is "django.http.response.HttpResponsePermanentRedirect"
|
||||
reveal_type(redirect(to = '', permanent = False)) # 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]'
|
||||
reveal_type(redirect(to = '', permanent = var)) # N: Revealed type is "Union[django.http.response.HttpResponseRedirect, django.http.response.HttpResponsePermanentRedirect]"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
from django.contrib.auth.decorators import login_required
|
||||
@method_decorator(login_required, name='dispatch')
|
||||
class TestView(View): ...
|
||||
reveal_type(TestView()) # N: Revealed type is 'main.TestView'
|
||||
reveal_type(TestView()) # N: Revealed type is "main.TestView"
|
||||
- case: method_decorator_function
|
||||
main: |
|
||||
from django.views.generic.base import View
|
||||
@@ -17,4 +17,4 @@
|
||||
@method_decorator(login_required)
|
||||
def dispatch(self, request: HttpRequest, *args, **kwargs) -> HttpResponseBase:
|
||||
return super().dispatch(request, *args, **kwargs)
|
||||
reveal_type(dispatch) # N: Revealed type is 'def (self: main.TestView, request: django.http.request.HttpRequest, *args: Any, **kwargs: Any) -> django.http.response.HttpResponseBase'
|
||||
reveal_type(dispatch) # N: Revealed type is "def (self: main.TestView, request: django.http.request.HttpRequest, *args: Any, **kwargs: Any) -> django.http.response.HttpResponseBase"
|
||||
|
||||
@@ -7,12 +7,12 @@
|
||||
@cached_property
|
||||
def attr(self) -> List[str]: ...
|
||||
|
||||
reveal_type(attr) # N: Revealed type is 'django.utils.functional.cached_property[builtins.list*[builtins.str]]'
|
||||
reveal_type(attr.name) # N: Revealed type is 'builtins.str'
|
||||
reveal_type(attr) # N: Revealed type is "django.utils.functional.cached_property[builtins.list*[builtins.str]]"
|
||||
reveal_type(attr.name) # N: Revealed type is "builtins.str"
|
||||
|
||||
reveal_type(Foo.attr) # N: Revealed type is 'django.utils.functional.cached_property[builtins.list*[builtins.str]]'
|
||||
reveal_type(Foo.attr.func) # N: Revealed type is 'def (*Any, **Any) -> builtins.list*[builtins.str]'
|
||||
reveal_type(Foo.attr) # N: Revealed type is "django.utils.functional.cached_property[builtins.list*[builtins.str]]"
|
||||
reveal_type(Foo.attr.func) # N: Revealed type is "def (*Any, **Any) -> builtins.list*[builtins.str]"
|
||||
|
||||
f = Foo()
|
||||
reveal_type(f.attr) # N: Revealed type is 'builtins.list*[builtins.str]'
|
||||
reveal_type(f.attr) # N: Revealed type is "builtins.list*[builtins.str]"
|
||||
f.attr.name # E: "List[str]" has no attribute "name"
|
||||
|
||||
Reference in New Issue
Block a user