From 2ef7ff33091316d02f51950cbfccc12ba434afb8 Mon Sep 17 00:00:00 2001 From: Damian Zaremba Date: Fri, 29 Apr 2022 12:44:33 +0100 Subject: [PATCH] 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. --- requirements.txt | 2 +- setup.py | 2 +- tests/typecheck/db/test_connection.yml | 2 +- tests/typecheck/fields/test_base.yml | 28 ++++---- tests/typecheck/fields/test_nullable.yml | 2 +- .../typecheck/fields/test_postgres_fields.yml | 6 +- tests/typecheck/fields/test_related.yml | 68 +++++++++---------- .../managers/querysets/test_annotate.yml | 22 +++--- .../managers/querysets/test_basic_methods.yml | 28 ++++---- .../managers/querysets/test_from_queryset.yml | 54 +++++++-------- .../managers/querysets/test_values_list.yml | 10 +-- tests/typecheck/managers/test_managers.yml | 32 ++++----- .../typecheck/models/test_contrib_models.yml | 18 ++--- tests/typecheck/models/test_create.yml | 16 ++--- tests/typecheck/models/test_inheritance.yml | 6 +- tests/typecheck/models/test_init.yml | 8 +-- tests/typecheck/models/test_primary_key.yml | 24 +++---- tests/typecheck/models/test_proxy_models.yml | 2 +- tests/typecheck/test/test_client.yml | 4 +- tests/typecheck/test_config.yml | 8 +-- tests/typecheck/test_formsets.yml | 2 +- tests/typecheck/test_settings.yml | 8 +-- tests/typecheck/test_shortcuts.yml | 12 ++-- tests/typecheck/utils/test_datastructures.yml | 28 ++++---- tests/typecheck/utils/test_encoding.yml | 10 +-- tests/typecheck/utils/test_functional.yml | 8 +-- tests/typecheck/views/generic/test_edit.yml | 6 +- .../views/test_function_based_views.yml | 18 ++--- 28 files changed, 217 insertions(+), 217 deletions(-) diff --git a/requirements.txt b/requirements.txt index a96bbd4..ab27891 100644 --- a/requirements.txt +++ b/requirements.txt @@ -10,4 +10,4 @@ psycopg2-binary -e . # Overrides: -mypy==0.942 +mypy==0.950 diff --git a/setup.py b/setup.py index c4987d1..18098e2 100644 --- a/setup.py +++ b/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", diff --git a/tests/typecheck/db/test_connection.yml b/tests/typecheck/db/test_connection.yml index 4f31341..6b3f88b 100644 --- a/tests/typecheck/db/test_connection.yml +++ b/tests/typecheck/db/test_connection.yml @@ -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" diff --git a/tests/typecheck/fields/test_base.yml b/tests/typecheck/fields/test_base.yml index f9c671f..7149162 100644 --- a/tests/typecheck/fields/test_base.yml +++ b/tests/typecheck/fields/test_base.yml @@ -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" diff --git a/tests/typecheck/fields/test_nullable.yml b/tests/typecheck/fields/test_nullable.yml index f3ddaaa..16ccc33 100644 --- a/tests/typecheck/fields/test_nullable.yml +++ b/tests/typecheck/fields/test_nullable.yml @@ -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 diff --git a/tests/typecheck/fields/test_postgres_fields.yml b/tests/typecheck/fields/test_postgres_fields.yml index 7d94fc0..ebaf4e1 100644 --- a/tests/typecheck/fields/test_postgres_fields.yml +++ b/tests/typecheck/fields/test_postgres_fields.yml @@ -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: diff --git a/tests/typecheck/fields/test_related.yml b/tests/typecheck/fields/test_related.yml index 439820c..5f5cac6 100644 --- a/tests/typecheck/fields/test_related.yml +++ b/tests/typecheck/fields/test_related.yml @@ -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 diff --git a/tests/typecheck/managers/querysets/test_annotate.yml b/tests/typecheck/managers/querysets/test_annotate.yml index ccfecf6..adaafd9 100644 --- a/tests/typecheck/managers/querysets/test_annotate.yml +++ b/tests/typecheck/managers/querysets/test_annotate.yml @@ -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" diff --git a/tests/typecheck/managers/querysets/test_basic_methods.yml b/tests/typecheck/managers/querysets/test_basic_methods.yml index 301a07a..c008415 100644 --- a/tests/typecheck/managers/querysets/test_basic_methods.yml +++ b/tests/typecheck/managers/querysets/test_basic_methods.yml @@ -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 diff --git a/tests/typecheck/managers/querysets/test_from_queryset.yml b/tests/typecheck/managers/querysets/test_from_queryset.yml index 07f9215..caa8249 100644 --- a/tests/typecheck/managers/querysets/test_from_queryset.yml +++ b/tests/typecheck/managers/querysets/test_from_queryset.yml @@ -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]) -> " reveal_type(MyModel().objects.base_queryset_method(2)) # N: Revealed type is "" 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: diff --git a/tests/typecheck/managers/querysets/test_values_list.yml b/tests/typecheck/managers/querysets/test_values_list.yml index e954ab9..0ac6763 100644 --- a/tests/typecheck/managers/querysets/test_values_list.yml +++ b/tests/typecheck/managers/querysets/test_values_list.yml @@ -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: diff --git a/tests/typecheck/managers/test_managers.yml b/tests/typecheck/managers/test_managers.yml index 9ee3eb3..2323b28 100644 --- a/tests/typecheck/managers/test_managers.yml +++ b/tests/typecheck/managers/test_managers.yml @@ -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: diff --git a/tests/typecheck/models/test_contrib_models.yml b/tests/typecheck/models/test_contrib_models.yml index 94409e4..6a2838d 100644 --- a/tests/typecheck/models/test_contrib_models.yml +++ b/tests/typecheck/models/test_contrib_models.yml @@ -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" diff --git a/tests/typecheck/models/test_create.yml b/tests/typecheck/models/test_create.yml index 3376adf..2d6c1a2 100644 --- a/tests/typecheck/models/test_create.yml +++ b/tests/typecheck/models/test_create.yml @@ -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: diff --git a/tests/typecheck/models/test_inheritance.yml b/tests/typecheck/models/test_inheritance.yml index bc04f5d..55e7e33 100644 --- a/tests/typecheck/models/test_inheritance.yml +++ b/tests/typecheck/models/test_inheritance.yml @@ -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: diff --git a/tests/typecheck/models/test_init.yml b/tests/typecheck/models/test_init.yml index 2fcf84c..ebc1006 100644 --- a/tests/typecheck/models/test_init.yml +++ b/tests/typecheck/models/test_init.yml @@ -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]") diff --git a/tests/typecheck/models/test_primary_key.yml b/tests/typecheck/models/test_primary_key.yml index 1c989d6..a715b94 100644 --- a/tests/typecheck/models/test_primary_key.yml +++ b/tests/typecheck/models/test_primary_key.yml @@ -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" diff --git a/tests/typecheck/models/test_proxy_models.yml b/tests/typecheck/models/test_proxy_models.yml index 7648756..5e2eaa4 100644 --- a/tests/typecheck/models/test_proxy_models.yml +++ b/tests/typecheck/models/test_proxy_models.yml @@ -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: diff --git a/tests/typecheck/test/test_client.yml b/tests/typecheck/test/test_client.yml index 2129465..e7ce034 100644 --- a/tests/typecheck/test/test_client.yml +++ b/tests/typecheck/test/test_client.yml @@ -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" diff --git a/tests/typecheck/test_config.yml b/tests/typecheck/test_config.yml index 295dc20..9156906 100644 --- a/tests/typecheck/test_config.yml +++ b/tests/typecheck/test_config.yml @@ -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 diff --git a/tests/typecheck/test_formsets.yml b/tests/typecheck/test_formsets.yml index ed77314..073798a 100644 --- a/tests/typecheck/test_formsets.yml +++ b/tests/typecheck/test_formsets.yml @@ -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: diff --git a/tests/typecheck/test_settings.yml b/tests/typecheck/test_settings.yml index 4cdb263..70874fa 100644 --- a/tests/typecheck/test_settings.yml +++ b/tests/typecheck/test_settings.yml @@ -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 diff --git a/tests/typecheck/test_shortcuts.yml b/tests/typecheck/test_shortcuts.yml index 6659878..976656b 100644 --- a/tests/typecheck/test_shortcuts.yml +++ b/tests/typecheck/test_shortcuts.yml @@ -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: diff --git a/tests/typecheck/utils/test_datastructures.yml b/tests/typecheck/utils/test_datastructures.yml index b152545..13a48d8 100644 --- a/tests/typecheck/utils/test_datastructures.yml +++ b/tests/typecheck/utils/test_datastructures.yml @@ -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]]]" diff --git a/tests/typecheck/utils/test_encoding.yml b/tests/typecheck/utils/test_encoding.yml index 102d319..3816895 100644 --- a/tests/typecheck/utils/test_encoding.yml +++ b/tests/typecheck/utils/test_encoding.yml @@ -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" diff --git a/tests/typecheck/utils/test_functional.yml b/tests/typecheck/utils/test_functional.yml index e0c18ff..eb4417b 100644 --- a/tests/typecheck/utils/test_functional.yml +++ b/tests/typecheck/utils/test_functional.yml @@ -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" diff --git a/tests/typecheck/views/generic/test_edit.yml b/tests/typecheck/views/generic/test_edit.yml index 569a7e1..895e579 100644 --- a/tests/typecheck/views/generic/test_edit.yml +++ b/tests/typecheck/views/generic/test_edit.yml @@ -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: diff --git a/tests/typecheck/views/test_function_based_views.yml b/tests/typecheck/views/test_function_based_views.yml index 21ec800..97f99f2 100644 --- a/tests/typecheck/views/test_function_based_views.yml +++ b/tests/typecheck/views/test_function_based_views.yml @@ -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