|
2 | 2 |
|
3 | 3 | from typing import TYPE_CHECKING, Any, Literal, NamedTuple, TypedDict, cast |
4 | 4 |
|
5 | | -from django.db.models.fields.related import RelatedField |
6 | | -from django.db.models.fields.reverse_related import ForeignObjectRel |
7 | 5 | from mypy import checker |
8 | 6 | from mypy.checker import TypeChecker |
9 | 7 | from mypy.checkmember import analyze_member_access as _mypy_analyze_member_access |
|
69 | 67 | from collections.abc import Iterable, Iterator, Mapping |
70 | 68 |
|
71 | 69 | from django.db.models.base import Model |
72 | | - from django.db.models.fields import Field |
73 | 70 |
|
74 | 71 | from mypy_django_plugin.django.context import DjangoContext |
75 | 72 |
|
@@ -453,21 +450,6 @@ def get_field_type_args(field_type: Instance) -> FieldTypeArgs | None: |
453 | 450 | return FieldTypeArgs(set=get_proper_type(mapped.args[0]), get=get_proper_type(mapped.args[1])) |
454 | 451 |
|
455 | 452 |
|
456 | | -def get_field_lookup_exact_type(api: TypeChecker, field: Field[Any, Any]) -> MypyType: |
457 | | - if isinstance(field, RelatedField | ForeignObjectRel): |
458 | | - # Not using field.related_model because that may have str value "self" |
459 | | - lookup_type_class = field.remote_field.model |
460 | | - rel_model_info = lookup_class_typeinfo(api, lookup_type_class) |
461 | | - if rel_model_info is None: |
462 | | - return AnyType(TypeOfAny.from_error) |
463 | | - return make_optional_type(Instance(rel_model_info, [])) |
464 | | - |
465 | | - field_info = lookup_class_typeinfo(api, field.__class__) |
466 | | - if field_info is None: |
467 | | - return AnyType(TypeOfAny.explicit) |
468 | | - return get_private_descriptor_type(field_info, "_pyi_lookup_exact_type", is_nullable=field.null) |
469 | | - |
470 | | - |
471 | 453 | def get_nested_meta_node_for_current_class(info: TypeInfo) -> TypeInfo | None: |
472 | 454 | metaclass_sym = info.names.get("Meta") |
473 | 455 | if metaclass_sym is not None and isinstance(metaclass_sym.node, TypeInfo): |
|
0 commit comments