Пиланс неправильно набрал numpy.pi как «Модуль(«numpy.тестирование») | Тип[NoseTester]»

#python #python-3.x #numpy #pylance

Вопрос:

Я добавлял подсказки типа в вызов функции, когда заметил, что Pylance печатает numpy.pi как член numpy.testing или относится к типу NoseTester.

Несмотря на то, что я попадаю type(np.pi) == float в командную строку python, этот пример кода:

 import numpy as np

def foo(val: float):
    print(val)

foo(np.pi)
 

Выдает следующее сообщение об ошибке при foo(np.pi)

 pi: Module("numpy.testing") | Type[NoseTester]
Argument of type "Module("numpy.testing") | Type[NoseTester]" cannot be assigned to parameter "val" of type "float" in function "foo"
  Type "Module("numpy.testing") | Type[NoseTester]" cannot be assigned to type "float"
    Type "Module("numpy.testing")" cannot be assigned to type "float"
    "Type[type]" is incompatible with "Type[float]"PylancereportGeneralTypeIssues
 

Я получил то же самое сообщение об ошибке (для типов, отличных от float) для следующих вещей: numpy.pi , numpy.e , numpy.floor , numpy.ceil , numpy.sin , numpy.cos , numpy.tan , numpy.sqrt , numpy.exp .

Однако эти поплавки/функции не приводят к проблеме: numpy.Inf , numpy.Nan , numpy.round , numpy.real , numpy.imag , numpy.random.rand .

Я убегаю:

  • Numpy: 1.19.5
  • Пиланс: 2021.5.3

Кто-нибудь знает, почему это происходит и/или как устранить проблему?

Правка 1: Похоже, это может быть скорее проблема с Пилансом, поэтому я создал microsoft/pylance-релиз#1340

Комментарии:

1. Действительно странно. Я не могу воспроизвести с помощью обычного python, но, конечно, это VS, так что кто знает

Ответ №1:

Я чувствую себя очень глупо-мне просто нужно было обновить Numpy до версии 1.20. Как было указано на GitHub Джейком Бейли, Numpy не включал информацию о вводе текста до 1.20.