Этот метод класса UserProfile
выделяется моей проверенной типом (pyright
):
@classmethod
def service_users_out_of_sync(
cls, threshold_in_hours=OUT_OF_SYNC_THRESHOLD_HOURS
) -> QuerySetType["UserProfile"]:
our_timezone = pytz.timezone(conf_settings.TIME_ZONE)
now = datetime.datetime.now(tz=our_timezone)
x_hours_ago = datetime.timedelta(hours=threshold_in_hours)
offset = now - x_hours_ago
return cls.objects.filter(
Q(service_last_sync_at__isnull=True) | Q(service_last_sync_at__lte=offset),
wants_service_sync=True,
)
Ошибка, которую он показывает, такова:
Выражение тип 'QuerySet [Any, Any]' нельзя присвоить типу возврата 'QuerySetType [UserProfile]' *
«QuerySet [Any, Any]» несовместим с «QuerySetType [UserProfile]» *
Полагаю, это связано с тем, что моим оператором return может быть пустой QuerySet (?). Тем не менее, я озадачен тем, как решить эту проблему.
Вот как выглядит QuerySetType
:
class QuerySetType(Generic[DjangoModel], extra=Iterable):
"""
This type represents django.db.models.QuerySet interface.
Defined Types:
DjangoModel - model instance
QuerysetType[DjangoModel] - Queryset of DjangoModel instances
Iterator[DjangoModel] - Iterator of DjangoModel instances
"""
def __iter__(self) -> Iterator[DjangoModel]:
...
def all(self) -> "QuerySetType[DjangoModel]":
...
def order_by(self, *args: Any) -> "QuerySetType[DjangoModel]":
...
def count(self) -> int:
...
def filter(self, **kwargs: Any) -> "QuerySetType[DjangoModel, DjangoModel]":
...
def exclude(self, **kwargs: Any) -> "QuerySetType[DjangoModel]":
...
def get(self, **kwargs: Any) -> DjangoModel:
...
def annotate(self, **kwargs: Any) -> "QuerySetType[DjangoModel]":
...
def first(self) -> Optional[DjangoModel]:
...
def update(self, **kwargs: Any) -> DjangoModel:
...
def delete(self, **kwargs: Any) -> Tuple[int, Dict[str, int]]:
...
def last(self) -> Optional[DjangoModel]:
...
def exists(self) -> bool:
...
def values(self, *args: Any) -> "QuerySetType[DjangoModel]":
...
def values_list(self, *args: Any) -> "QuerySetType[DjangoModel]":
...
def __or__(self, other) -> Optional[DjangoModel]:
...
def __getitem__(self, index) -> Union[DjangoModel, "QuerySetType[DjangoModel]"]:
...
def __len__(self) -> int:
...