mypy: другое сообщение об ошибке для того же отсутствующего пакета

Matcher.find() попытается найти совпадение внутри строки. Вы должны попробовать Matcher.matches(), чтобы увидеть, подходит ли шаблон во всей строке.

Таким образом, вам нужен шаблон \d+

EDIT: Кажется, я неправильно понял вопрос. Один из способов найти, имеет ли String только одно целое число, используя тот же шаблон:

int matchCounter = 0;
while (Matcher.find() || matchCounter < 2){
   matchCounter++;
}
return matchCounter == 1
2
задан user208685 19 January 2019 в 10:32
поделиться

1 ответ

Два сообщения об ошибках означают одно и то же. Единственное отличие состоит в том, что вы получаете первое сообщение об ошибке, если импортируемый вами модуль считается «популярной» сторонней библиотекой, в частности, если это один из модулей в этом списке . В этом случае flask_sqlalchemy является членом этого списка, но flask_api нет.

Причина, по которой mypy в особых случаях использует эти модули, в основном для удобства использования: несколько странно получить сообщение об ошибке, например «Не удается найти модуль с именем« blah »», когда вы, казалось бы, установили его через pip. Таким образом, это специальные случаи сторонних библиотек, которые, вероятно, будут широко использоваться, так что это может, по крайней мере, улучшить пользовательский опыт там.

У вас может возникнуть следующий вопрос: «Почему mypy просто не смотрит на то, что установлено в pip, и не использует первое сообщение об ошибке всякий раз, когда вы пытаетесь импортировать что-нибудь , которое установлено в pip?»). В конце концов, mypy нужно сделать это в любом случае, чтобы попытаться найти PEP 561-совместимые пакеты - пакеты, которые объявляют, что они поставляются в комплекте с подсказками типов.

Что ж, mypy, вероятно, могли бы делать это, но этот раздел кодовой базы был добавлен до того, как PEP 561 был готов (до того, как mypy действительно нужно было сканировать пакеты, установленные с помощью pip), и я подозреваю, что никто долго не задумывался об этом углу кодовой базы.

0
ответ дан Michael0x2a 19 January 2019 в 10:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: