非整数切片和类型检查

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

我正在处理时间序列,想按日期/时间检索和切片。理想情况下,我会利用现有的 [:] 语法。

例如(见最后一行):

from datetime import datetime
from typing import Union


class T:
    def __getitem__(self, key: datetime | slice) -> Union['T', float]:
        if isinstance(key, slice):
            return T()
        if isinstance(key, datetime):
            return 42
        raise ValueError()


t = T()
v = t[datetime(2020, 1, 1)]                        # OK
t2 = t[datetime(2020, 1, 1):datetime(2021, 1, 1)]  # Not OK

这运行正常,但是当通过 mypy 运行它时,它在最后一行产生这个错误:

error: Slice index must be an integer, SupportsIndex or None  [misc]
Found 1 error in 1 file (checked 1 source file)

除了完全禁用此错误之外,是否有一种方法可以使此代码通过 mypy?

或者我正在做我不应该做的事情?

python-3.x slice mypy typeguards
© www.soinside.com 2019 - 2024. All rights reserved.