mypy pop ошибка для объекта 'None' не повторяется - PullRequest
0 голосов
/ 05 марта 2020

Здесь у меня есть такая функция:

def func_A(delta: Optional[List[int]],
           margin: Optional[List[int]]
           mode: str = 'OUT') -> Tuple[int, 
                                       Optional[List[int]],
                                       Optional[List[int]]]:

    result = 1

    if mode == "OUT":
        return result, [1,2,3], [4,5,6]

    elif mode == "IN":
        delta_x, delta_y = delta
        margin_x, margin_y = margin
        return result, None, None

    else:
        raise ValueError('wrong key')

однако, когда я использую функцию, как показано ниже, mypy выдает ошибку:

result, delta_options, margin_options = func_A(delta=None,
                                               margin=None,
                                               mode="OUT")

выдает ошибку: «Нет» объект не повторяется

какая часть не подходит для моего кода? Заранее спасибо.

PS Моя конфигурация mypy ниже:

mypy --ignore-missing-imports --follow-imports=skip --strict-optional .

1 Ответ

0 голосов
/ 05 марта 2020

Проблема в L.10

delta_x, delta_y = delta

Тип дельты Optional[List[int]]. Таким образом, дельта может быть None. Если значение delta равно None, код не работает.

delta_x, delta_y = None

Поэтому перед кодом необходимо обрабатывать значение delta None.

Например,

if delta is not None:
    delta_x, delta_y = delta

или

delta_x, delta_y = delta if delta is not None else None, None

et c.

...