Допустим, я хочу объявить тип ввода, происходящий из необязательной зависимости моей библиотеки. У меня есть возможность установить его как строку, по крайней мере, чтобы сделать Python счастливым (например, не жаловаться на отсутствующее имя). Но тогда Mypy, конечно, не будет знать, что делать с этим отсутствующим типом. Есть ли какое-либо решение, без необходимо установить дополнительную зависимость?
Например, моя библиотека необязательно зависит от Matplotlib. И какая-то функция принимает на вход объект Axes.
def some_plotting_func(data, ax: "matplotlib.axes.Axes" = None):
if ax is None:
from matplotlib.pylab import subplots
_, ax = subplots(1, 1)
Затем MyPy жалуется, что matplotlib не импортируется (и я не хочу загружать его поверх модуля, а только если требуется внутри тела функции some_plotting_func
.
Выход MyPy:
error: Name "matplotlib" is not defined [name-defined]
Вероятно, вам нужно установить matplotlib в cmd.
Сначала я подумал, что должен быть способ. Но нет :)
Я не думаю, что вы можете сделать это без установки
matplotlib
или использованияAny
дляax
. Вы можете запустить mypy в среде, где установленmatplotlib
(очевидно, не в производственной среде).