mirror of
https://github.com/davidhalter/django-stubs.git
synced 2025-12-15 00:07:09 +08:00
Bump mypy 0.950 (#939)
* Bump mypy to 0.95x * Remove the * for inferred types There was an upstream change (https://github.com/python/mypy/pull/12459) to remove * from inferred types in the reveal_type output. As we are asserting the * to exist, all the test cases are now failing on the 0.950 release. Removing the expected * to mirror the upstream behaviour change should resolve the test failures.
This commit is contained in:
@@ -10,4 +10,4 @@ psycopg2-binary
|
||||
-e .
|
||||
|
||||
# Overrides:
|
||||
mypy==0.942
|
||||
mypy==0.950
|
||||
|
||||
2
setup.py
2
setup.py
@@ -20,7 +20,7 @@ with open("README.md") as f:
|
||||
readme = f.read()
|
||||
|
||||
dependencies = [
|
||||
"mypy>=0.930,<0.950",
|
||||
"mypy>=0.930,<0.960",
|
||||
"django",
|
||||
"django-stubs-ext>=0.4.0",
|
||||
"tomli",
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
- 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"
|
||||
|
||||
@@ -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.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.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,7 +62,7 @@
|
||||
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"
|
||||
User().id # E: "User" has no attribute "id"
|
||||
installed_apps:
|
||||
- myapp
|
||||
@@ -97,7 +97,7 @@
|
||||
MyModel(notnulltext=None) # E: Incompatible type for "notnulltext" of "MyModel" (got "None", expected "Union[str, int, Combinable]")
|
||||
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:
|
||||
@@ -133,7 +133,7 @@
|
||||
- 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:
|
||||
@@ -156,10 +156,10 @@
|
||||
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)
|
||||
|
||||
@@ -179,4 +179,4 @@
|
||||
small = models.SmallAutoField(primary_key=True)
|
||||
obj = MyModel()
|
||||
|
||||
reveal_type(obj.small) # N: Revealed type is "builtins.int*"
|
||||
reveal_type(obj.small) # N: Revealed type is "builtins.int"
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
- 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) # 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
|
||||
|
||||
@@ -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,7 +2,7 @@
|
||||
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]"
|
||||
installed_apps:
|
||||
@@ -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,8 +42,8 @@
|
||||
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]"
|
||||
@@ -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
|
||||
@@ -88,7 +88,7 @@
|
||||
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(Profile().user) # N: Revealed type is "myapp.models.User"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -197,7 +197,7 @@
|
||||
- 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) # N: Revealed type is "myapp.models.user.User"
|
||||
reveal_type(Profile().user.profile) # N: Revealed type is "myapp2.models.Profile"
|
||||
installed_apps:
|
||||
- myapp
|
||||
@@ -223,7 +223,7 @@
|
||||
- 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) # N: Revealed type is "myapp.models.user.User"
|
||||
reveal_type(App().owner.profile) # N: Revealed type is "myapp.models.profile.Profile"
|
||||
installed_apps:
|
||||
- myapp
|
||||
@@ -253,7 +253,7 @@
|
||||
- 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(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
|
||||
@@ -270,7 +270,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
|
||||
@@ -291,7 +291,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:
|
||||
@@ -305,7 +305,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:
|
||||
@@ -354,14 +354,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]")
|
||||
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]")
|
||||
Book2.objects.create(publisher_id=1)
|
||||
@@ -387,7 +387,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:
|
||||
@@ -434,7 +434,7 @@
|
||||
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)
|
||||
@@ -461,7 +461,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'
|
||||
@@ -481,7 +481,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
|
||||
@@ -509,7 +509,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:
|
||||
@@ -576,8 +576,8 @@
|
||||
- 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]"
|
||||
@@ -604,16 +604,16 @@
|
||||
- case: test_foreign_key_from_superclass_inherits_correctly_when_also_inheriting_manager
|
||||
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 "myapp.models.Book_RelatedManager"
|
||||
reveal_type(user.article_set) # N: Revealed type is "myapp.models.Article_RelatedManager"
|
||||
reveal_type(user.book_set.add) # N: Revealed type is "def (*objs: Union[myapp.models.Book*, builtins.int], *, bulk: builtins.bool =)"
|
||||
reveal_type(user.article_set.add) # N: Revealed type is "def (*objs: Union[myapp.models.Article*, builtins.int], *, bulk: builtins.bool =)"
|
||||
reveal_type(user.book_set.filter) # N: Revealed type is "def (*args: Any, **kwargs: Any) -> myapp.models.LibraryEntityQuerySet[myapp.models.Book*]"
|
||||
reveal_type(user.article_set.filter) # N: Revealed type is "def (*args: Any, **kwargs: Any) -> myapp.models.LibraryEntityQuerySet[myapp.models.Article*]"
|
||||
reveal_type(user.book_set.add) # N: Revealed type is "def (*objs: Union[myapp.models.Book, builtins.int], *, bulk: builtins.bool =)"
|
||||
reveal_type(user.article_set.add) # N: Revealed type is "def (*objs: Union[myapp.models.Article, builtins.int], *, bulk: builtins.bool =)"
|
||||
reveal_type(user.book_set.filter) # N: Revealed type is "def (*args: Any, **kwargs: Any) -> myapp.models.LibraryEntityQuerySet[myapp.models.Book]"
|
||||
reveal_type(user.article_set.filter) # N: Revealed type is "def (*args: Any, **kwargs: Any) -> myapp.models.LibraryEntityQuerySet[myapp.models.Article]"
|
||||
reveal_type(user.book_set.queryset_method()) # N: Revealed type is "builtins.int"
|
||||
reveal_type(user.article_set.queryset_method()) # N: Revealed type is "builtins.int"
|
||||
installed_apps:
|
||||
@@ -665,8 +665,8 @@
|
||||
- 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]"
|
||||
@@ -690,11 +690,11 @@
|
||||
main: |
|
||||
from myapp.models import User, Order, Product
|
||||
reveal_type(User().orders) # N: Revealed type is "myapp.models.Order_RelatedManager"
|
||||
reveal_type(User().orders.get()) # N: Revealed type is "myapp.models.Order*"
|
||||
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(Product.objects.queryset_method()) # N: Revealed type is "builtins.int"
|
||||
reveal_type(Order().products) # N: Revealed type is "myapp.models.Product_RelatedManager"
|
||||
reveal_type(Order().products.get()) # N: Revealed type is "myapp.models.Product*"
|
||||
reveal_type(Order().products.get()) # N: Revealed type is "myapp.models.Product"
|
||||
reveal_type(Order().products.queryset_method()) # N: Revealed type is "builtins.int"
|
||||
if 1 == 2:
|
||||
manager = User().products
|
||||
@@ -731,11 +731,11 @@
|
||||
from myapp.models.user import User
|
||||
reveal_type(Store().purchases) # N: Revealed type is "myapp.models.purchase.Purchase_RelatedManager"
|
||||
reveal_type(Store().purchases.queryset_method()) # N: Revealed type is "myapp.models.querysets.PurchaseQuerySet"
|
||||
reveal_type(Store().purchases.filter()) # N: Revealed type is "myapp.models.querysets.PurchaseQuerySet[myapp.models.purchase.Purchase*]"
|
||||
reveal_type(Store().purchases.filter()) # N: Revealed type is "myapp.models.querysets.PurchaseQuerySet[myapp.models.purchase.Purchase]"
|
||||
reveal_type(Store().purchases.filter().queryset_method()) # N: Revealed type is "myapp.models.querysets.PurchaseQuerySet"
|
||||
reveal_type(User().purchases) # N: Revealed type is "myapp.models.purchase.Purchase_RelatedManager"
|
||||
reveal_type(User().purchases.queryset_method()) # N: Revealed type is "myapp.models.querysets.PurchaseQuerySet"
|
||||
reveal_type(User().purchases.filter()) # N: Revealed type is "myapp.models.querysets.PurchaseQuerySet[myapp.models.purchase.Purchase*]"
|
||||
reveal_type(User().purchases.filter()) # N: Revealed type is "myapp.models.querysets.PurchaseQuerySet[myapp.models.purchase.Purchase]"
|
||||
reveal_type(User().purchases.filter().queryset_method()) # N: Revealed type is "myapp.models.querysets.PurchaseQuerySet"
|
||||
installed_apps:
|
||||
- myapp
|
||||
|
||||
@@ -122,10 +122,10 @@
|
||||
reveal_type(qs) # N: Revealed type is "django.db.models.query._QuerySet[django_stubs_ext.WithAnnotations[myapp__models__User, TypedDict({'foo': Any})], django_stubs_ext.WithAnnotations[myapp__models__User, TypedDict({'foo': Any})]]"
|
||||
|
||||
annotated = qs.get()
|
||||
reveal_type(annotated) # N: Revealed type is "django_stubs_ext.WithAnnotations[myapp__models__User, TypedDict({'foo': Any})]*"
|
||||
reveal_type(annotated) # N: Revealed type is "django_stubs_ext.WithAnnotations[myapp__models__User, TypedDict({'foo': Any})]"
|
||||
reveal_type(annotated.foo) # N: Revealed type is "Any"
|
||||
print(annotated.bar) # E: "WithAnnotations[myapp__models__User, TypedDict({'foo': Any})]" has no attribute "bar"
|
||||
reveal_type(annotated.username) # N: Revealed type is "builtins.str*"
|
||||
reveal_type(annotated.username) # N: Revealed type is "builtins.str"
|
||||
|
||||
installed_apps:
|
||||
- myapp
|
||||
@@ -196,10 +196,10 @@
|
||||
qs = User.objects.annotate(foo=F('id'))
|
||||
qs = qs.annotate(bar=F('id'))
|
||||
annotated = qs.get()
|
||||
reveal_type(annotated) # N: Revealed type is "django_stubs_ext.WithAnnotations[myapp__models__User, TypedDict({'foo': Any, 'bar': Any})]*"
|
||||
reveal_type(annotated) # N: Revealed type is "django_stubs_ext.WithAnnotations[myapp__models__User, TypedDict({'foo': Any, 'bar': Any})]"
|
||||
reveal_type(annotated.foo) # N: Revealed type is "Any"
|
||||
reveal_type(annotated.bar) # N: Revealed type is "Any"
|
||||
reveal_type(annotated.username) # N: Revealed type is "builtins.str*"
|
||||
reveal_type(annotated.username) # N: Revealed type is "builtins.str"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -280,19 +280,19 @@
|
||||
|
||||
values_list_flat_known = Blog.objects.annotate(foo=F('id')).values_list('text', flat=True).get()
|
||||
# Even though it's annotated, we still know the lookup's type.
|
||||
reveal_type(values_list_flat_known) # N: Revealed type is "builtins.str*"
|
||||
reveal_type(values_list_flat_known) # N: Revealed type is "builtins.str"
|
||||
values_list_flat_unknown = Blog.objects.annotate(foo=F('id')).values_list('foo', flat=True).get()
|
||||
# We don't know the type of an unknown lookup
|
||||
reveal_type(values_list_flat_unknown) # N: Revealed type is "Any"
|
||||
|
||||
values_no_params = Blog.objects.annotate(foo=F('id')).values().get()
|
||||
reveal_type(values_no_params) # N: Revealed type is "builtins.dict*[builtins.str, Any]"
|
||||
reveal_type(values_no_params) # N: Revealed type is "builtins.dict[builtins.str, Any]"
|
||||
|
||||
values_list_no_params = Blog.objects.annotate(foo=F('id')).values_list().get()
|
||||
reveal_type(values_list_no_params) # N: Revealed type is "builtins.tuple*[Any, ...]"
|
||||
reveal_type(values_list_no_params) # N: Revealed type is "builtins.tuple[Any, ...]"
|
||||
|
||||
values_list_flat_no_params = Blog.objects.annotate(foo=F('id')).values_list(flat=True).get()
|
||||
reveal_type(values_list_flat_no_params) # N: Revealed type is "builtins.int*"
|
||||
reveal_type(values_list_flat_no_params) # N: Revealed type is "builtins.int"
|
||||
|
||||
values_list_named_no_params = Blog.objects.annotate(foo=F('id')).values_list(named=True).get()
|
||||
reveal_type(values_list_named_no_params.foo) # N: Revealed type is "Any"
|
||||
@@ -324,13 +324,13 @@
|
||||
|
||||
|
||||
before_values_no_params = Blog.objects.values().annotate(foo=F('id')).get()
|
||||
reveal_type(before_values_no_params) # N: Revealed type is "builtins.dict*[builtins.str, Any]"
|
||||
reveal_type(before_values_no_params) # N: Revealed type is "builtins.dict[builtins.str, Any]"
|
||||
|
||||
before_values_list_no_params = Blog.objects.values_list().annotate(foo=F('id')).get()
|
||||
reveal_type(before_values_list_no_params) # N: Revealed type is "builtins.tuple*[Any, ...]"
|
||||
reveal_type(before_values_list_no_params) # N: Revealed type is "builtins.tuple[Any, ...]"
|
||||
|
||||
before_values_list_flat_no_params = Blog.objects.values_list(flat=True).annotate(foo=F('id')).get()
|
||||
reveal_type(before_values_list_flat_no_params) # N: Revealed type is "builtins.int*"
|
||||
reveal_type(before_values_list_flat_no_params) # N: Revealed type is "builtins.int"
|
||||
|
||||
before_values_list_named_no_params = Blog.objects.values_list(named=True).annotate(foo=F('id')).get()
|
||||
reveal_type(before_values_list_named_no_params.foo) # N: Revealed type is "Any"
|
||||
|
||||
@@ -4,24 +4,24 @@
|
||||
from myapp.models import Blog
|
||||
|
||||
qs = Blog.objects.all()
|
||||
reveal_type(qs) # N: Revealed type is "django.db.models.query._QuerySet[myapp.models.Blog*, 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) # N: Revealed type is "django.db.models.query._QuerySet[myapp.models.Blog, 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.query._QuerySet[myapp.models.Blog, myapp.models.Blog]"
|
||||
reveal_type(qs.create()) # N: Revealed type is "myapp.models.Blog*"
|
||||
reveal_type(qs.get_or_create()) # N: Revealed type is "Tuple[myapp.models.Blog*, builtins.bool]"
|
||||
reveal_type(qs.create()) # N: Revealed type is "myapp.models.Blog"
|
||||
reveal_type(qs.get_or_create()) # N: Revealed type is "Tuple[myapp.models.Blog, builtins.bool]"
|
||||
reveal_type(qs.exists()) # N: Revealed type is "builtins.bool"
|
||||
reveal_type(qs.none()) # N: Revealed type is "django.db.models.query._QuerySet[myapp.models.Blog, myapp.models.Blog]"
|
||||
reveal_type(qs.update_or_create()) # N: Revealed type is "Tuple[myapp.models.Blog*, builtins.bool]"
|
||||
reveal_type(qs.update_or_create()) # N: Revealed type is "Tuple[myapp.models.Blog, builtins.bool]"
|
||||
reveal_type(qs.explain()) # N: Revealed type is "builtins.str"
|
||||
reveal_type(qs.raw(qs.explain())) # N: Revealed type is "django.db.models.query.RawQuerySet[Any]"
|
||||
# .dates / .datetimes
|
||||
reveal_type(Blog.objects.dates("created_at", "day")) # N: Revealed type is "django.db.models.query._QuerySet[myapp.models.Blog*, datetime.date]"
|
||||
reveal_type(Blog.objects.datetimes("created_at", "day")) # N: Revealed type is "django.db.models.query._QuerySet[myapp.models.Blog*, datetime.datetime]"
|
||||
reveal_type(Blog.objects.dates("created_at", "day")) # N: Revealed type is "django.db.models.query._QuerySet[myapp.models.Blog, datetime.date]"
|
||||
reveal_type(Blog.objects.datetimes("created_at", "day")) # N: Revealed type is "django.db.models.query._QuerySet[myapp.models.Blog, datetime.datetime]"
|
||||
|
||||
# AND-ing QuerySets
|
||||
reveal_type(Blog.objects.all() & Blog.objects.all()) # N: Revealed type is "django.db.models.query._QuerySet[myapp.models.Blog, myapp.models.Blog]"
|
||||
@@ -29,9 +29,9 @@
|
||||
# bulk methods
|
||||
reveal_type(qs.count()) # N: Revealed type is "builtins.int"
|
||||
reveal_type(qs.update(created_at=timezone.now())) # N: Revealed type is "builtins.int"
|
||||
reveal_type(qs.in_bulk()) # N: Revealed type is "builtins.dict[Any, myapp.models.Blog*]"
|
||||
reveal_type(qs.in_bulk()) # N: Revealed type is "builtins.dict[Any, myapp.models.Blog]"
|
||||
reveal_type(qs.bulk_update(list(qs), fields=["created_at"])) # N: Revealed type is "builtins.int"
|
||||
reveal_type(qs.bulk_create([])) # N: Revealed type is "builtins.list[myapp.models.Blog*]"
|
||||
reveal_type(qs.bulk_create([])) # N: Revealed type is "builtins.list[myapp.models.Blog]"
|
||||
reveal_type(qs.delete()) # N: Revealed type is "Tuple[builtins.int, builtins.dict[builtins.str, builtins.int]]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
main: |
|
||||
from myapp.models import MyModel
|
||||
reveal_type(MyModel().objects) # N: Revealed type is "myapp.models.NewManager[myapp.models.MyModel]"
|
||||
reveal_type(MyModel().objects.get()) # N: Revealed type is "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.filter(id=1).queryset_method()) # N: Revealed type is "builtins.str"
|
||||
reveal_type(MyModel.objects.filter(id=1)) # N: Revealed type is "myapp.models.ModelQuerySet[myapp.models.MyModel*]"
|
||||
reveal_type(MyModel.objects.filter(id=1)) # N: Revealed type is "myapp.models.ModelQuerySet[myapp.models.MyModel]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -27,13 +27,13 @@
|
||||
from myapp.models import MyModel
|
||||
reveal_type(MyModel.objects) # N: Revealed type is "myapp.models.NewManager[myapp.models.MyModel]"
|
||||
reveal_type(MyModel.objects) # N: Revealed type is "myapp.models.NewManager[myapp.models.MyModel]"
|
||||
reveal_type(MyModel.objects.get()) # N: Revealed type is "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 "myapp.querysets.ModelQuerySet"
|
||||
reveal_type(MyModel.objects.queryset_method_2()) # N: Revealed type is "typing.Iterable[myapp.querysets.Custom]"
|
||||
reveal_type(MyModel.objects.queryset_method_3()) # N: Revealed type is "builtins.str"
|
||||
reveal_type(MyModel.objects.queryset_method_4([])) # N: Revealed type is "None"
|
||||
reveal_type(MyModel.objects.filter(id=1).queryset_method()) # N: Revealed type is "myapp.querysets.ModelQuerySet"
|
||||
reveal_type(MyModel.objects.filter(id=1)) # N: Revealed type is "myapp.querysets.ModelQuerySet[myapp.models.MyModel*]"
|
||||
reveal_type(MyModel.objects.filter(id=1)) # N: Revealed type is "myapp.querysets.ModelQuerySet[myapp.models.MyModel]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -75,7 +75,7 @@
|
||||
main: |
|
||||
from myapp.models import MyModel
|
||||
reveal_type(MyModel().objects) # N: Revealed type is "myapp.models.NewManager[myapp.models.MyModel]"
|
||||
reveal_type(MyModel().objects.get()) # N: Revealed type is "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
|
||||
@@ -149,7 +149,7 @@
|
||||
main: |
|
||||
from myapp.models import MyModel
|
||||
reveal_type(MyModel().objects) # N: Revealed type is "myapp.models.NewManager[myapp.models.MyModel]"
|
||||
reveal_type(MyModel().objects.get()) # N: Revealed type is "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
|
||||
@@ -173,7 +173,7 @@
|
||||
main: |
|
||||
from myapp.models import MyModel
|
||||
reveal_type(MyModel().objects) # N: Revealed type is "myapp.managers.NewManager[myapp.models.MyModel]"
|
||||
reveal_type(MyModel().objects.get()) # N: Revealed type is "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:
|
||||
@@ -203,7 +203,7 @@
|
||||
main: |
|
||||
from myapp.models import MyModel
|
||||
reveal_type(MyModel().objects) # N: Revealed type is "myapp.managers.NewManager[myapp.models.MyModel]"
|
||||
reveal_type(MyModel().objects.get()) # N: Revealed type is "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:
|
||||
@@ -350,25 +350,25 @@
|
||||
- case: from_queryset_includes_methods_returning_queryset
|
||||
main: |
|
||||
from myapp.models import MyModel
|
||||
reveal_type(MyModel.objects.none) # N: Revealed type is "def () -> myapp.models.MyQuerySet[myapp.models.MyModel*]"
|
||||
reveal_type(MyModel.objects.all) # N: Revealed type is "def () -> myapp.models.MyQuerySet[myapp.models.MyModel*]"
|
||||
reveal_type(MyModel.objects.filter) # N: Revealed type is "def (*args: Any, **kwargs: Any) -> myapp.models.MyQuerySet[myapp.models.MyModel*]"
|
||||
reveal_type(MyModel.objects.exclude) # N: Revealed type is "def (*args: Any, **kwargs: Any) -> myapp.models.MyQuerySet[myapp.models.MyModel*]"
|
||||
reveal_type(MyModel.objects.complex_filter) # N: Revealed type is "def (filter_obj: Any) -> myapp.models.MyQuerySet[myapp.models.MyModel*]"
|
||||
reveal_type(MyModel.objects.union) # N: Revealed type is "def (*other_qs: Any, *, all: builtins.bool =) -> myapp.models.MyQuerySet[myapp.models.MyModel*]"
|
||||
reveal_type(MyModel.objects.intersection) # N: Revealed type is "def (*other_qs: Any) -> myapp.models.MyQuerySet[myapp.models.MyModel*]"
|
||||
reveal_type(MyModel.objects.difference) # N: Revealed type is "def (*other_qs: Any) -> myapp.models.MyQuerySet[myapp.models.MyModel*]"
|
||||
reveal_type(MyModel.objects.select_for_update) # N: Revealed type is "def (nowait: builtins.bool =, skip_locked: builtins.bool =, of: typing.Sequence[builtins.str] =, no_key: builtins.bool =) -> myapp.models.MyQuerySet[myapp.models.MyModel*]"
|
||||
reveal_type(MyModel.objects.select_related) # N: Revealed type is "def (*fields: Any) -> myapp.models.MyQuerySet[myapp.models.MyModel*]"
|
||||
reveal_type(MyModel.objects.prefetch_related) # N: Revealed type is "def (*lookups: Any) -> myapp.models.MyQuerySet[myapp.models.MyModel*]"
|
||||
reveal_type(MyModel.objects.annotate) # N: Revealed type is "def (*args: Any, **kwargs: Any) -> myapp.models.MyQuerySet[myapp.models.MyModel*]"
|
||||
reveal_type(MyModel.objects.alias) # N: Revealed type is "def (*args: Any, **kwargs: Any) -> myapp.models.MyQuerySet[myapp.models.MyModel*]"
|
||||
reveal_type(MyModel.objects.order_by) # N: Revealed type is "def (*field_names: Any) -> myapp.models.MyQuerySet[myapp.models.MyModel*]"
|
||||
reveal_type(MyModel.objects.distinct) # N: Revealed type is "def (*field_names: Any) -> myapp.models.MyQuerySet[myapp.models.MyModel*]"
|
||||
reveal_type(MyModel.objects.reverse) # N: Revealed type is "def () -> myapp.models.MyQuerySet[myapp.models.MyModel*]"
|
||||
reveal_type(MyModel.objects.defer) # N: Revealed type is "def (*fields: Any) -> myapp.models.MyQuerySet[myapp.models.MyModel*]"
|
||||
reveal_type(MyModel.objects.only) # N: Revealed type is "def (*fields: Any) -> myapp.models.MyQuerySet[myapp.models.MyModel*]"
|
||||
reveal_type(MyModel.objects.using) # N: Revealed type is "def (alias: Union[builtins.str, None]) -> myapp.models.MyQuerySet[myapp.models.MyModel*]"
|
||||
reveal_type(MyModel.objects.none) # N: Revealed type is "def () -> myapp.models.MyQuerySet[myapp.models.MyModel]"
|
||||
reveal_type(MyModel.objects.all) # N: Revealed type is "def () -> myapp.models.MyQuerySet[myapp.models.MyModel]"
|
||||
reveal_type(MyModel.objects.filter) # N: Revealed type is "def (*args: Any, **kwargs: Any) -> myapp.models.MyQuerySet[myapp.models.MyModel]"
|
||||
reveal_type(MyModel.objects.exclude) # N: Revealed type is "def (*args: Any, **kwargs: Any) -> myapp.models.MyQuerySet[myapp.models.MyModel]"
|
||||
reveal_type(MyModel.objects.complex_filter) # N: Revealed type is "def (filter_obj: Any) -> myapp.models.MyQuerySet[myapp.models.MyModel]"
|
||||
reveal_type(MyModel.objects.union) # N: Revealed type is "def (*other_qs: Any, *, all: builtins.bool =) -> myapp.models.MyQuerySet[myapp.models.MyModel]"
|
||||
reveal_type(MyModel.objects.intersection) # N: Revealed type is "def (*other_qs: Any) -> myapp.models.MyQuerySet[myapp.models.MyModel]"
|
||||
reveal_type(MyModel.objects.difference) # N: Revealed type is "def (*other_qs: Any) -> myapp.models.MyQuerySet[myapp.models.MyModel]"
|
||||
reveal_type(MyModel.objects.select_for_update) # N: Revealed type is "def (nowait: builtins.bool =, skip_locked: builtins.bool =, of: typing.Sequence[builtins.str] =, no_key: builtins.bool =) -> myapp.models.MyQuerySet[myapp.models.MyModel]"
|
||||
reveal_type(MyModel.objects.select_related) # N: Revealed type is "def (*fields: Any) -> myapp.models.MyQuerySet[myapp.models.MyModel]"
|
||||
reveal_type(MyModel.objects.prefetch_related) # N: Revealed type is "def (*lookups: Any) -> myapp.models.MyQuerySet[myapp.models.MyModel]"
|
||||
reveal_type(MyModel.objects.annotate) # N: Revealed type is "def (*args: Any, **kwargs: Any) -> myapp.models.MyQuerySet[myapp.models.MyModel]"
|
||||
reveal_type(MyModel.objects.alias) # N: Revealed type is "def (*args: Any, **kwargs: Any) -> myapp.models.MyQuerySet[myapp.models.MyModel]"
|
||||
reveal_type(MyModel.objects.order_by) # N: Revealed type is "def (*field_names: Any) -> myapp.models.MyQuerySet[myapp.models.MyModel]"
|
||||
reveal_type(MyModel.objects.distinct) # N: Revealed type is "def (*field_names: Any) -> myapp.models.MyQuerySet[myapp.models.MyModel]"
|
||||
reveal_type(MyModel.objects.reverse) # N: Revealed type is "def () -> myapp.models.MyQuerySet[myapp.models.MyModel]"
|
||||
reveal_type(MyModel.objects.defer) # N: Revealed type is "def (*fields: Any) -> myapp.models.MyQuerySet[myapp.models.MyModel]"
|
||||
reveal_type(MyModel.objects.only) # N: Revealed type is "def (*fields: Any) -> myapp.models.MyQuerySet[myapp.models.MyModel]"
|
||||
reveal_type(MyModel.objects.using) # N: Revealed type is "def (alias: Union[builtins.str, None]) -> myapp.models.MyQuerySet[myapp.models.MyModel]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
reveal_type(query.all().get()) # N: Revealed type is "Tuple[builtins.str]"
|
||||
reveal_type(query.filter(age__gt=16).get()) # N: Revealed type is "Tuple[builtins.str]"
|
||||
reveal_type(query.exclude(age__lte=16).get()) # N: Revealed type is "Tuple[builtins.str]"
|
||||
reveal_type(query.annotate(name_length=Length("name")).get()) # N: Revealed type is "builtins.tuple*[Any, ...]"
|
||||
reveal_type(query.annotate(name_length=Length("name")).get()) # N: Revealed type is "builtins.tuple[Any, ...]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -79,12 +79,12 @@
|
||||
- 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"
|
||||
@@ -217,7 +217,7 @@
|
||||
reveal_type(Blog.objects.values_list('id', flat=True)) # N: Revealed type is "django.db.models.query._QuerySet[myapp.models.Blog, builtins.int]"
|
||||
reveal_type(Blog.objects.values_list('publisher_id', flat=True)) # N: Revealed type is "django.db.models.query._QuerySet[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:
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
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.get()) # N: Revealed type is "myapp.models.User"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -59,7 +59,7 @@
|
||||
main: |
|
||||
from myapp.models import Base, MyModel
|
||||
base_instance = Base(MyModel)
|
||||
reveal_type(base_instance.model_cls._base_manager) # N: Revealed type is "django.db.models.manager.BaseManager[myapp.models.MyModel*]"
|
||||
reveal_type(base_instance.model_cls._base_manager) # N: Revealed type is "django.db.models.manager.BaseManager[myapp.models.MyModel]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -78,7 +78,7 @@
|
||||
pass
|
||||
class Child(Base[MyModel]):
|
||||
def method(self) -> None:
|
||||
reveal_type(self.model_cls._base_manager) # N: Revealed type is "django.db.models.manager.BaseManager[myapp.models.MyModel*]"
|
||||
reveal_type(self.model_cls._base_manager) # N: Revealed type is "django.db.models.manager.BaseManager[myapp.models.MyModel]"
|
||||
|
||||
- case: if_custom_manager_defined_it_is_set_to_default_manager
|
||||
main: |
|
||||
@@ -126,7 +126,7 @@
|
||||
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()) # N: Revealed type is "myapp.models.MyUser"
|
||||
reveal_type(MyUser.objects.get_or_404()) # N: Revealed type is "myapp.models.MyUser"
|
||||
installed_apps:
|
||||
- myapp
|
||||
@@ -222,10 +222,10 @@
|
||||
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.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.first()) # N: Revealed type is "Union[myapp.models.MyModel, None]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -243,10 +243,10 @@
|
||||
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.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.first()) # N: Revealed type is "Union[myapp.models.MyModel2, None]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -264,10 +264,10 @@
|
||||
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.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.first()) # N: Revealed type is "Union[myapp.models.MyModel3, None]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -285,10 +285,10 @@
|
||||
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.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.first()) # N: Revealed type is "Union[myapp.models.MyModel4, None]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -333,15 +333,15 @@
|
||||
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 "django.db.models.query._QuerySet[myapp.models.User*, myapp.models.User*]"
|
||||
reveal_type(User.objects.get()) # N: Revealed type is "myapp.models.User*"
|
||||
reveal_type(User.objects.select_related()) # N: Revealed type is "django.db.models.query._QuerySet[myapp.models.User, 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 "django.db.models.query._QuerySet[myapp.models.ChildUser*, myapp.models.ChildUser*]"
|
||||
reveal_type(ChildUser.objects.get()) # N: Revealed type is "myapp.models.ChildUser*"
|
||||
reveal_type(ChildUser.objects.select_related()) # N: Revealed type is "django.db.models.query._QuerySet[myapp.models.ChildUser, 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:
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
- 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().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().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]"
|
||||
@@ -18,11 +18,11 @@
|
||||
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"
|
||||
|
||||
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"
|
||||
|
||||
@@ -19,9 +19,9 @@
|
||||
main: |
|
||||
from myapp.models import Child
|
||||
c = Child.objects.create(name='Maxim', lastname='Maxim2')
|
||||
reveal_type(c.id) # N: Revealed type is "builtins.int*"
|
||||
reveal_type(c.name) # N: Revealed type is "builtins.str*"
|
||||
reveal_type(c.lastname) # N: Revealed type is "builtins.str*"
|
||||
reveal_type(c.id) # N: Revealed type is "builtins.int"
|
||||
reveal_type(c.name) # N: Revealed type is "builtins.str"
|
||||
reveal_type(c.lastname) # N: Revealed type is "builtins.str"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -96,19 +96,19 @@
|
||||
main: |
|
||||
from myapp.models import MyModel
|
||||
first = MyModel(id=None)
|
||||
reveal_type(first.id) # N: Revealed type is "builtins.int*"
|
||||
reveal_type(first.id) # N: Revealed type is "builtins.int"
|
||||
first = MyModel.objects.create(id=None)
|
||||
reveal_type(first.id) # N: Revealed type is "builtins.int*"
|
||||
reveal_type(first.id) # N: Revealed type is "builtins.int"
|
||||
first = MyModel()
|
||||
first.id = None
|
||||
reveal_type(first.id) # N: Revealed type is "builtins.int*"
|
||||
reveal_type(first.id) # N: Revealed type is "builtins.int"
|
||||
|
||||
from myapp.models import MyModel2
|
||||
MyModel2(id=None) # E: Incompatible type for "id" of "MyModel2" (got "None", expected "Union[float, int, str, Combinable]")
|
||||
MyModel2.objects.create(id=None) # E: Incompatible type for "id" of "MyModel2" (got "None", expected "Union[float, int, str, Combinable]")
|
||||
second = MyModel2()
|
||||
second.id = None # E: Incompatible types in assignment (expression has type "None", variable has type "Union[float, int, str, Combinable]")
|
||||
reveal_type(second.id) # N: Revealed type is "builtins.int*"
|
||||
reveal_type(second.id) # N: Revealed type is "builtins.int"
|
||||
|
||||
# default set but no primary key doesn't allow None
|
||||
from myapp.models import MyModel3
|
||||
@@ -116,7 +116,7 @@
|
||||
MyModel3.objects.create(default=None) # E: Incompatible type for "default" of "MyModel3" (got "None", expected "Union[float, int, str, Combinable]")
|
||||
third = MyModel3()
|
||||
third.default = None # E: Incompatible types in assignment (expression has type "None", variable has type "Union[float, int, str, Combinable]")
|
||||
reveal_type(third.default) # N: Revealed type is "builtins.int*"
|
||||
reveal_type(third.default) # N: Revealed type is "builtins.int"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
|
||||
@@ -69,7 +69,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:
|
||||
@@ -90,8 +90,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:
|
||||
|
||||
@@ -283,10 +283,10 @@
|
||||
unset_set_type=[],
|
||||
)
|
||||
out: |
|
||||
main:4: note: Revealed type is "builtins.int*"
|
||||
main:5: note: Revealed type is "builtins.int*"
|
||||
main:6: note: Revealed type is "builtins.list*[builtins.int]"
|
||||
main:7: note: Revealed type is "builtins.int*"
|
||||
main:4: note: Revealed type is "builtins.int"
|
||||
main:5: note: Revealed type is "builtins.int"
|
||||
main:6: note: Revealed type is "builtins.list[builtins.int]"
|
||||
main:7: note: Revealed type is "builtins.int"
|
||||
main:8: note: Revealed type is "Any"
|
||||
main:9: error: Incompatible types in assignment (expression has type "str", variable has type "int")
|
||||
main:10: error: Incompatible types in assignment (expression has type "str", variable has type "Union[int, float]")
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
main: |
|
||||
from myapp.models import MyModel
|
||||
x = MyModel.objects.get(id=1)
|
||||
reveal_type(x.id) # N: Revealed type is "builtins.int*"
|
||||
reveal_type(x.pk) # N: Revealed type is "builtins.int*"
|
||||
reveal_type(x.id) # N: Revealed type is "builtins.int"
|
||||
reveal_type(x.pk) # N: Revealed type is "builtins.int"
|
||||
|
||||
MyModel.objects.get(pk=1)
|
||||
installed_apps:
|
||||
@@ -15,16 +15,16 @@
|
||||
from django.db import models
|
||||
class MyModel(models.Model):
|
||||
def __str__(self):
|
||||
reveal_type(self.id) # N: Revealed type is "builtins.int*"
|
||||
reveal_type(self.pk) # N: Revealed type is "builtins.int*"
|
||||
reveal_type(self.id) # N: Revealed type is "builtins.int"
|
||||
reveal_type(self.pk) # N: Revealed type is "builtins.int"
|
||||
|
||||
|
||||
- case: test_access_to_id_field_through_self_if_primary_key_is_defined
|
||||
main: |
|
||||
from myapp.models import MyModel
|
||||
x = MyModel.objects.get(id='a')
|
||||
reveal_type(x.id) # N: Revealed type is "builtins.str*"
|
||||
reveal_type(x.pk) # N: Revealed type is "builtins.str*"
|
||||
reveal_type(x.id) # N: Revealed type is "builtins.str"
|
||||
reveal_type(x.pk) # N: Revealed type is "builtins.str"
|
||||
|
||||
MyModel.objects.get(pk='a')
|
||||
installed_apps:
|
||||
@@ -37,16 +37,16 @@
|
||||
class MyModel(models.Model):
|
||||
id = models.CharField(max_length=10, primary_key=True)
|
||||
def __str__(self):
|
||||
reveal_type(self.id) # N: Revealed type is "builtins.str*"
|
||||
reveal_type(self.pk) # N: Revealed type is "builtins.str*"
|
||||
reveal_type(self.id) # N: Revealed type is "builtins.str"
|
||||
reveal_type(self.pk) # N: Revealed type is "builtins.str"
|
||||
|
||||
|
||||
- case: test_access_to_id_field_through_self_if_primary_key_has_different_name
|
||||
main: |
|
||||
from myapp.models import MyModel
|
||||
x = MyModel.objects.get(primary='a')
|
||||
reveal_type(x.primary) # N: Revealed type is "builtins.str*"
|
||||
reveal_type(x.pk) # N: Revealed type is "builtins.str*"
|
||||
reveal_type(x.primary) # N: Revealed type is "builtins.str"
|
||||
reveal_type(x.pk) # N: Revealed type is "builtins.str"
|
||||
x.id # E: "MyModel" has no attribute "id"
|
||||
|
||||
MyModel.objects.get(pk='a')
|
||||
@@ -61,6 +61,6 @@
|
||||
class MyModel(models.Model):
|
||||
primary = models.CharField(max_length=10, primary_key=True)
|
||||
def __str__(self):
|
||||
reveal_type(self.primary) # N: Revealed type is "builtins.str*"
|
||||
reveal_type(self.pk) # N: Revealed type is "builtins.str*"
|
||||
reveal_type(self.primary) # N: Revealed type is "builtins.str"
|
||||
reveal_type(self.pk) # N: Revealed type is "builtins.str"
|
||||
self.id # E: "MyModel" has no attribute "id"
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -26,8 +26,8 @@
|
||||
from django.test.client import RequestFactory, AsyncRequestFactory
|
||||
factory = RequestFactory()
|
||||
request = factory.get('foo')
|
||||
reveal_type(request) # N: Revealed type is "django.core.handlers.wsgi.WSGIRequest*"
|
||||
reveal_type(request) # N: Revealed type is "django.core.handlers.wsgi.WSGIRequest"
|
||||
|
||||
async_factory = AsyncRequestFactory()
|
||||
async_request = async_factory.get('foo')
|
||||
reveal_type(async_request) # N: Revealed type is "django.core.handlers.asgi.ASGIRequest*"
|
||||
reveal_type(async_request) # N: Revealed type is "django.core.handlers.asgi.ASGIRequest"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
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.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]
|
||||
@@ -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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
ArticleFS: Type[forms.BaseInlineFormSet[Article, Category, Any]] = forms.inlineformset_factory(Category, Article)
|
||||
ArticleFS(instance=Article()) # E: Argument "instance" to "BaseInlineFormSet" has incompatible type "Article"; expected "Optional[Category]"
|
||||
fs = ArticleFS(instance=Category())
|
||||
reveal_type(fs.instance) # N: Revealed type is "myapp.models.Category*"
|
||||
reveal_type(fs.instance) # N: Revealed type is "myapp.models.Category"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
# 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.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 *
|
||||
@@ -37,8 +37,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:
|
||||
|
||||
@@ -10,39 +10,39 @@
|
||||
d3: Tuple[Tuple[str, List[Union[str, int]]], ...] = (('foo', ['Foo']), ('bar', [2, 3]))
|
||||
var3 = MultiValueDict(d3)
|
||||
reveal_type(var1) # N: Revealed type is "django.utils.datastructures.MultiValueDict[Any, Any]"
|
||||
reveal_type(var2) # N: Revealed type is "django.utils.datastructures.MultiValueDict[builtins.str*, Union[builtins.str, builtins.int]]"
|
||||
reveal_type(var3) # N: Revealed type is "django.utils.datastructures.MultiValueDict[builtins.str*, Union[builtins.str, builtins.int]]"
|
||||
reveal_type(var2) # N: Revealed type is "django.utils.datastructures.MultiValueDict[builtins.str, Union[builtins.str, builtins.int]]"
|
||||
reveal_type(var3) # N: Revealed type is "django.utils.datastructures.MultiValueDict[builtins.str, Union[builtins.str, builtins.int]]"
|
||||
|
||||
# __getitem__, get, getlist (with proofs)
|
||||
d = MultiValueDict({'foo': ['Foo']})
|
||||
d.setlist('bar', [])
|
||||
# actually 'Foo'
|
||||
reveal_type(d['foo']) # N: Revealed type is "Union[builtins.str*, builtins.list[builtins.object]]"
|
||||
reveal_type(d['foo']) # N: Revealed type is "Union[builtins.str, builtins.list[builtins.object]]"
|
||||
# actually []
|
||||
reveal_type(d['bar']) # N: Revealed type is "Union[builtins.str*, builtins.list[builtins.object]]"
|
||||
reveal_type(d['bar']) # N: Revealed type is "Union[builtins.str, builtins.list[builtins.object]]"
|
||||
# actually None
|
||||
reveal_type(d.get('bar')) # N: Revealed type is "Union[builtins.str*, None]"
|
||||
reveal_type(d.get('bar')) # N: Revealed type is "Union[builtins.str, None]"
|
||||
# actually 1
|
||||
reveal_type(d.get('bar', 1)) # N: Revealed type is "Union[builtins.str, builtins.int*]"
|
||||
reveal_type(d.get('bar', 1)) # N: Revealed type is "Union[builtins.str, builtins.int]"
|
||||
# actually []
|
||||
reveal_type(d.getlist('bar')) # N: Revealed type is "builtins.list[builtins.str]"
|
||||
# actually []
|
||||
reveal_type(d.getlist('bar', [1])) # N: Revealed type is "Union[builtins.list[builtins.str], builtins.list*[builtins.int*]]"
|
||||
reveal_type(d.getlist('bar', [1])) # N: Revealed type is "Union[builtins.list[builtins.str], builtins.list[builtins.int]]"
|
||||
# actually True (note that default can be not a list)
|
||||
reveal_type(d.getlist('baz', True)) # N: Revealed type is "Union[builtins.list[builtins.str], builtins.bool*]"
|
||||
reveal_type(d.getlist('baz', True)) # N: Revealed type is "Union[builtins.list[builtins.str], builtins.bool]"
|
||||
|
||||
# setters
|
||||
reveal_type(d.setlistdefault('baz')) # N: Revealed type is "builtins.list[builtins.str*]"
|
||||
reveal_type(d.setlistdefault('baz')) # N: Revealed type is "builtins.list[builtins.str]"
|
||||
d.setlistdefault('baz', [1]) # E: List item 0 has incompatible type "int"; expected "str"
|
||||
reveal_type(d.setlistdefault('baz', [])) # N: Revealed type is "builtins.list[builtins.str*]"
|
||||
reveal_type(d.setlistdefault('baz', [])) # N: Revealed type is "builtins.list[builtins.str]"
|
||||
d.appendlist('baz', 'Baz')
|
||||
d.appendlist('baz', 1) # E: Argument 2 to "appendlist" of "MultiValueDict" has incompatible type "int"; expected "str"
|
||||
|
||||
# iterators
|
||||
# actually [('foo', 'Foo'), ('bar', [])]
|
||||
reveal_type(list(d.items())) # N: Revealed type is "builtins.list[Tuple[builtins.str*, Union[builtins.str*, builtins.list[builtins.object]]]]"
|
||||
reveal_type(list(d.keys())) # N: Revealed type is "builtins.list[builtins.str*]"
|
||||
reveal_type(list(d.items())) # N: Revealed type is "builtins.list[Tuple[builtins.str, Union[builtins.str, builtins.list[builtins.object]]]]"
|
||||
reveal_type(list(d.keys())) # N: Revealed type is "builtins.list[builtins.str]"
|
||||
# actually ['Foo', []]
|
||||
reveal_type(list(d.values())) # N: Revealed type is "builtins.list[Union[builtins.str*, builtins.list[builtins.object]]]"
|
||||
reveal_type(list(d.values())) # N: Revealed type is "builtins.list[Union[builtins.str, builtins.list[builtins.object]]]"
|
||||
# actually {'foo': 'Foo', 'bar': []}
|
||||
reveal_type(d.dict()) # N: Revealed type is "builtins.dict[builtins.str*, Union[builtins.str*, builtins.list[builtins.object]]]"
|
||||
reveal_type(d.dict()) # N: Revealed type is "builtins.dict[builtins.str, Union[builtins.str, builtins.list[builtins.object]]]"
|
||||
|
||||
@@ -5,10 +5,10 @@
|
||||
pass
|
||||
|
||||
reveal_type(force_bytes(123)) # N: Revealed type is "builtins.bytes"
|
||||
reveal_type(force_bytes(123, strings_only=True)) # N: Revealed type is "builtins.int*"
|
||||
reveal_type(force_bytes(123, strings_only=True)) # N: Revealed type is "builtins.int"
|
||||
|
||||
reveal_type(force_str(123)) # N: Revealed type is "builtins.str"
|
||||
reveal_type(force_str(123, strings_only=True)) # N: Revealed type is "builtins.int*"
|
||||
reveal_type(force_str('foo')) # N: Revealed type is "builtins.str*"
|
||||
reveal_type(force_str('foo', strings_only=True)) # N: Revealed type is "builtins.str*"
|
||||
reveal_type(force_str(S('foo'), strings_only=True)) # N: Revealed type is "main.S*"
|
||||
reveal_type(force_str(123, strings_only=True)) # N: Revealed type is "builtins.int"
|
||||
reveal_type(force_str('foo')) # N: Revealed type is "builtins.str"
|
||||
reveal_type(force_str('foo', strings_only=True)) # N: Revealed type is "builtins.str"
|
||||
reveal_type(force_str(S('foo'), strings_only=True)) # N: Revealed type is "main.S"
|
||||
|
||||
@@ -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) # 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"
|
||||
|
||||
@@ -46,11 +46,11 @@
|
||||
|
||||
class MyCreateView(CreateView[Article, ArticleModelForm]):
|
||||
def some(self) -> None:
|
||||
reveal_type(self.get_form_class()) # N: Revealed type is "Type[main.ArticleModelForm*]"
|
||||
reveal_type(self.get_form_class()) # N: Revealed type is "Type[main.ArticleModelForm]"
|
||||
|
||||
class MyUpdateView(UpdateView[Article, ArticleModelForm]):
|
||||
def some(self) -> None:
|
||||
reveal_type(self.get_form_class()) # N: Revealed type is "Type[main.ArticleModelForm*]"
|
||||
reveal_type(self.get_form_class()) # N: Revealed type is "Type[main.ArticleModelForm]"
|
||||
installed_apps:
|
||||
- myapp
|
||||
files:
|
||||
@@ -79,7 +79,7 @@
|
||||
|
||||
class MyCreateView(CreateView[Article, ArticleModelForm]):
|
||||
def some(self) -> None:
|
||||
reveal_type(self.get_form()) # N: Revealed type is "main.ArticleModelForm*"
|
||||
reveal_type(self.get_form()) # N: Revealed type is "main.ArticleModelForm"
|
||||
reveal_type(self.get_form(SubArticleModelForm)) # N: Revealed type is "main.SubArticleModelForm"
|
||||
reveal_type(self.get_form(AnotherArticleModelForm)) # N: Revealed type is "main.AnotherArticleModelForm" # E: Argument 1 to "get_form" of "FormMixin" has incompatible type "Type[AnotherArticleModelForm]"; expected "Optional[Type[ArticleModelForm]]"
|
||||
installed_apps:
|
||||
|
||||
@@ -24,25 +24,25 @@
|
||||
|
||||
def empty_response(request: HttpRequest) -> HttpResponse:
|
||||
response = HttpResponse()
|
||||
reveal_type(response.content) # N: Revealed type is "builtins.bytes*"
|
||||
reveal_type(response.content) # N: Revealed type is "builtins.bytes"
|
||||
return response
|
||||
|
||||
def str_response(request: HttpRequest) -> HttpResponse:
|
||||
response = HttpResponse()
|
||||
response.content = 'It works!'
|
||||
reveal_type(response.content) # N: Revealed type is "builtins.bytes*"
|
||||
reveal_type(response.content) # N: Revealed type is "builtins.bytes"
|
||||
return response
|
||||
|
||||
def bytes_response(request: HttpRequest) -> HttpResponse:
|
||||
response = HttpResponse()
|
||||
response.content = b'It works!'
|
||||
reveal_type(response.content) # N: Revealed type is "builtins.bytes*"
|
||||
reveal_type(response.content) # N: Revealed type is "builtins.bytes"
|
||||
return response
|
||||
|
||||
def object_response(request: HttpRequest) -> HttpResponse:
|
||||
response = HttpResponse()
|
||||
response.content = _('It works!')
|
||||
reveal_type(response.content) # N: Revealed type is "builtins.bytes*"
|
||||
reveal_type(response.content) # N: Revealed type is "builtins.bytes"
|
||||
return response
|
||||
|
||||
- case: streaming_http_response
|
||||
@@ -74,29 +74,29 @@
|
||||
|
||||
def empty_response(request: HttpRequest) -> StreamingHttpResponse:
|
||||
response = StreamingHttpResponse()
|
||||
reveal_type(response.streaming_content) # N: Revealed type is "typing.Iterator*[builtins.bytes]"
|
||||
reveal_type(response.streaming_content) # N: Revealed type is "typing.Iterator[builtins.bytes]"
|
||||
return response
|
||||
|
||||
def str_response(request: HttpRequest) -> StreamingHttpResponse:
|
||||
response = StreamingHttpResponse()
|
||||
response.streaming_content = ['It works!']
|
||||
reveal_type(response.streaming_content) # N: Revealed type is "typing.Iterator*[builtins.bytes]"
|
||||
reveal_type(response.streaming_content) # N: Revealed type is "typing.Iterator[builtins.bytes]"
|
||||
return response
|
||||
|
||||
def bytes_response(request: HttpRequest) -> StreamingHttpResponse:
|
||||
response = StreamingHttpResponse()
|
||||
response.streaming_content = [b'It works!']
|
||||
reveal_type(response.streaming_content) # N: Revealed type is "typing.Iterator*[builtins.bytes]"
|
||||
reveal_type(response.streaming_content) # N: Revealed type is "typing.Iterator[builtins.bytes]"
|
||||
return response
|
||||
|
||||
def object_response(request: HttpRequest) -> StreamingHttpResponse:
|
||||
response = StreamingHttpResponse()
|
||||
response.streaming_content = [_('It works!')]
|
||||
reveal_type(response.streaming_content) # N: Revealed type is "typing.Iterator*[builtins.bytes]"
|
||||
reveal_type(response.streaming_content) # N: Revealed type is "typing.Iterator[builtins.bytes]"
|
||||
return response
|
||||
|
||||
def mixed_response(request: HttpRequest) -> StreamingHttpResponse:
|
||||
response = StreamingHttpResponse()
|
||||
response.streaming_content = [_('Yes'), '/', _('No')]
|
||||
reveal_type(response.streaming_content) # N: Revealed type is "typing.Iterator*[builtins.bytes]"
|
||||
reveal_type(response.streaming_content) # N: Revealed type is "typing.Iterator[builtins.bytes]"
|
||||
return response
|
||||
|
||||
Reference in New Issue
Block a user