Как я могу использовать номинальную печать с mypy? - PullRequest
0 голосов
/ 22 июня 2019

Это не совсем мой вариант использования, но он похож. Предположим, я хочу определить две аннотации ввода:

Matrix = np.ndarray
Vector = np.ndarray

Теперь я хочу, чтобы потенциальная программа проверки типов жаловалась, когда я передаю Matrix функции, которая принимает Vector:

def f(x: Vector):
    ...

m: Matrix = ...
f(m)  # Bad!

Как пометить эти типы как несовместимые?

1 Ответ

1 голос
/ 22 июня 2019

Похоже, что я могу использовать typing.NewType для создания различных типов:

from typing import NewType


A = NewType('A', int)
B = NewType('B', int)

def f(a: A):
    pass

b: B
f(b)

дает

a.py:11: error: Argument 1 to "f" has incompatible type "B"; expected "A"

К сожалению, он не работает с np.ndarray, пока либо numpy не реализует подсказку типа, либо NewType не поддерживает базовый тип Any.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...