python mypy:根据可空键对列表进行排序 - 删除具有空字段的项目

问题描述 投票:0回答:0

我在一个项目中使用 mypy 1.2.0。我正在检查以下代码:

from datetime import date, timedelta

from pydantic import BaseModel


class ScheduleItem(BaseModel):
    start_date: Optional[date] = None


items = [
    ScheduleItem(start_date=None),
    ScheduleItem(start_date=date.today()),
    ScheduleItem(start_date=date.today() - timedelta(days=3)),
]


sorted_items = sorted(
    [item for item in items if item.start_date],
    key=lambda item: item.start_date,
)

我收到以下 lint 错误:

error: Argument "key" to "sorted" has incompatible type "Callable[[ScheduleItem], Optional[date]]"; expected "Callable[[ScheduleItem], Union[SupportsDunderLT[Any], SupportsDunderGT[Any]]]"  [arg-type]

error: Incompatible return value type (got "Optional[date]", expected "Union[SupportsDunderLT[Any], SupportsDunderGT[Any]]")  [return-value]

但是,我将一个列表传递给

sorted
,它强制执行排序的值不是
None
。我如何将其传达给 mypy?

python mypy
© www.soinside.com 2019 - 2024. All rights reserved.