mirror of
https://github.com/davidhalter/django-stubs.git
synced 2025-12-07 20:54:29 +08:00
remove some asserts that could be validly triggered
This commit is contained in:
@@ -2,7 +2,7 @@ from typing import Optional, Tuple, cast
|
||||
|
||||
from django.db.models.fields import Field
|
||||
from django.db.models.fields.related import RelatedField
|
||||
from mypy.nodes import AssignmentStmt, TypeInfo, NameExpr
|
||||
from mypy.nodes import AssignmentStmt, NameExpr, TypeInfo
|
||||
from mypy.plugin import FunctionContext
|
||||
from mypy.types import AnyType, Instance
|
||||
from mypy.types import Type as MypyType
|
||||
@@ -22,7 +22,8 @@ def _get_current_field_from_assignment(ctx: FunctionContext, django_context: Dja
|
||||
for stmt in outer_model_info.defn.defs.body:
|
||||
if isinstance(stmt, AssignmentStmt):
|
||||
if stmt.rvalue == ctx.context:
|
||||
assert isinstance(stmt.lvalues[0], NameExpr)
|
||||
if not isinstance(stmt.lvalues[0], NameExpr):
|
||||
return None
|
||||
field_name = stmt.lvalues[0].name
|
||||
break
|
||||
if field_name is None:
|
||||
@@ -50,16 +51,24 @@ def fill_descriptor_types_for_related_field(ctx: FunctionContext, django_context
|
||||
typechecker_api = helpers.get_typechecker_api(ctx)
|
||||
|
||||
related_model_info = helpers.lookup_class_typeinfo(typechecker_api, related_model)
|
||||
assert isinstance(related_model_info, TypeInfo)
|
||||
if related_model_info is None:
|
||||
# maybe no type stub
|
||||
related_model_type = AnyType(TypeOfAny.unannotated)
|
||||
else:
|
||||
related_model_type = Instance(related_model_info, []) # type: ignore
|
||||
|
||||
related_model_to_set_info = helpers.lookup_class_typeinfo(typechecker_api, related_model_to_set)
|
||||
assert isinstance(related_model_to_set_info, TypeInfo)
|
||||
if related_model_to_set_info is None:
|
||||
# maybe no type stub
|
||||
related_model_to_set_type = AnyType(TypeOfAny.unannotated)
|
||||
else:
|
||||
related_model_to_set_type = Instance(related_model_to_set_info, []) # type: ignore
|
||||
|
||||
default_related_field_type = set_descriptor_types_for_field(ctx)
|
||||
# replace Any with referred_to_type
|
||||
args = [
|
||||
helpers.convert_any_to_type(default_related_field_type.args[0], Instance(related_model_to_set_info, [])),
|
||||
helpers.convert_any_to_type(default_related_field_type.args[1], Instance(related_model_info, [])),
|
||||
helpers.convert_any_to_type(default_related_field_type.args[0], related_model_to_set_type),
|
||||
helpers.convert_any_to_type(default_related_field_type.args[1], related_model_type),
|
||||
]
|
||||
return helpers.reparametrize_instance(default_related_field_type, new_args=args)
|
||||
|
||||
|
||||
@@ -2,7 +2,8 @@ from typing import List, Tuple, Type, Union
|
||||
|
||||
from django.db.models.base import Model
|
||||
from mypy.plugin import FunctionContext, MethodContext
|
||||
from mypy.types import Instance, Type as MypyType
|
||||
from mypy.types import Instance
|
||||
from mypy.types import Type as MypyType
|
||||
|
||||
from mypy_django_plugin.django.context import DjangoContext
|
||||
from mypy_django_plugin.lib import helpers
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
from django.core.exceptions import FieldDoesNotExist
|
||||
from mypy.nodes import TypeInfo
|
||||
from mypy.plugin import MethodContext
|
||||
from mypy.types import AnyType, Instance
|
||||
from mypy.types import Type as MypyType
|
||||
@@ -12,7 +11,8 @@ from mypy_django_plugin.lib import fullnames, helpers
|
||||
def _get_field_instance(ctx: MethodContext, field_fullname: str) -> MypyType:
|
||||
field_info = helpers.lookup_fully_qualified_typeinfo(helpers.get_typechecker_api(ctx),
|
||||
field_fullname)
|
||||
assert isinstance(field_info, TypeInfo)
|
||||
if field_info is None:
|
||||
return AnyType(TypeOfAny.unannotated)
|
||||
return Instance(field_info, [AnyType(TypeOfAny.explicit), AnyType(TypeOfAny.explicit)])
|
||||
|
||||
|
||||
|
||||
@@ -5,8 +5,10 @@ from django.core.exceptions import FieldError
|
||||
from django.db.models.base import Model
|
||||
from mypy.newsemanal.typeanal import TypeAnalyser
|
||||
from mypy.nodes import Expression, NameExpr, TypeInfo
|
||||
from mypy.plugin import FunctionContext, MethodContext, AnalyzeTypeContext
|
||||
from mypy.types import AnyType, Instance, Type as MypyType, TypeOfAny
|
||||
from mypy.plugin import AnalyzeTypeContext, FunctionContext, MethodContext
|
||||
from mypy.types import AnyType, Instance
|
||||
from mypy.types import Type as MypyType
|
||||
from mypy.types import TypeOfAny
|
||||
|
||||
from mypy_django_plugin.django.context import DjangoContext
|
||||
from mypy_django_plugin.lib import fullnames, helpers
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
from mypy.nodes import MemberExpr, TypeInfo
|
||||
from mypy.nodes import MemberExpr
|
||||
from mypy.plugin import AttributeContext, FunctionContext
|
||||
from mypy.types import Instance, Type as MypyType, TypeType
|
||||
from mypy.types import AnyType, Instance
|
||||
from mypy.types import Type as MypyType
|
||||
from mypy.types import TypeOfAny, TypeType
|
||||
|
||||
from mypy_django_plugin.django.context import DjangoContext
|
||||
from mypy_django_plugin.lib import helpers
|
||||
@@ -11,9 +13,10 @@ def get_user_model_hook(ctx: FunctionContext, django_context: DjangoContext) ->
|
||||
model_cls = django_context.apps_registry.get_model(auth_user_model)
|
||||
model_cls_fullname = helpers.get_class_fullname(model_cls)
|
||||
|
||||
model_info = helpers.lookup_fully_qualified_generic(model_cls_fullname,
|
||||
helpers.get_typechecker_api(ctx).modules)
|
||||
assert isinstance(model_info, TypeInfo)
|
||||
model_info = helpers.lookup_fully_qualified_typeinfo(helpers.get_typechecker_api(ctx),
|
||||
model_cls_fullname)
|
||||
if model_info is None:
|
||||
return AnyType(TypeOfAny.unannotated)
|
||||
|
||||
return TypeType(Instance(model_info, []))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user