Information
Вопрос
При аннотации типа данных как np.ndarray, линтер mypy требует уточнения типа аргументов массива (ошибки типа generic type). Однако на данный момент все варианты, которые были применены, не подошли:
- NDArray[np.int64], NDArray[Any] — линтер пишет, что "Module 'numpy.typing' has no attribute 'NDArray'", несмотря на то, что я откатил версию numpy до 1.26.4 (нормальная стабильная версия).
- Если поднять версию numpy выше 1.26.4 и применять типизацию — ndarray[Any, np.dtype[np.int64]], ndarray[np.dtype[np.int64]], то к сожалению линтер mypy выбрасывает ошибку — "Explicit 'Any' is not allowed."
- Типизация np.ndarray[(int, ...), np.dtype[np.int64]] — не проходит, так как базовый np.ndarray не поддерживает такую параметризацию в типах.
- Применение типизации ArrayLike, DTypeLike — выдает ошибку типа: "Argument 1 to 'DataFrame' has incompatible type 'Union[bool, int, float, complex, _SupportsArray, Sequence[Any]]'".
Контекст
Используемая версия numpy — 1.26.4, с которой при типизации возникает ошибка: "Module 'numpy.typing' has no attribute 'NDArray'".
При попытке использовать типизацию с NDArray возникают проблемы с линтерами, а при попытке использовать старые аннотации np.ndarray линтер также жалуется на их несовместимость с используемой версией.
Я пробовал разные варианты, в том числе:
• Применение np.ndarray[(int, ...), np.dtype[np.int64]].
• Применение ArrayLike и DTypeLike для упрощения типизации.
Тем не менее, возникшие ошибки продолжают мешать корректной типизации и сборке проекта.
Цель
Я бы хотел получить помощь в разрешении проблемы с типизацией np.ndarray и предложений по корректной аннотации для работы с массивами в Python при использовании numpy версии 1.26.4. Также интересуют рекомендации по:
• Возможности использования NDArray (или альтернатив) в старых версиях numpy.
• Правильной типизации без ошибок линтеров.
• Возможных workaround'ах для описанных проблем с типизацией, особенно для np.ndarray и ArrayLike.
Information
Вопрос
При аннотации типа данных как np.ndarray, линтер mypy требует уточнения типа аргументов массива (ошибки типа generic type). Однако на данный момент все варианты, которые были применены, не подошли:
Контекст
Используемая версия numpy — 1.26.4, с которой при типизации возникает ошибка: "Module 'numpy.typing' has no attribute 'NDArray'".
При попытке использовать типизацию с NDArray возникают проблемы с линтерами, а при попытке использовать старые аннотации np.ndarray линтер также жалуется на их несовместимость с используемой версией.
Я пробовал разные варианты, в том числе:
• Применение np.ndarray[(int, ...), np.dtype[np.int64]].
• Применение ArrayLike и DTypeLike для упрощения типизации.
Тем не менее, возникшие ошибки продолжают мешать корректной типизации и сборке проекта.
Цель
Я бы хотел получить помощь в разрешении проблемы с типизацией np.ndarray и предложений по корректной аннотации для работы с массивами в Python при использовании numpy версии 1.26.4. Также интересуют рекомендации по:
• Возможности использования NDArray (или альтернатив) в старых версиях numpy.
• Правильной типизации без ошибок линтеров.
• Возможных workaround'ах для описанных проблем с типизацией, особенно для np.ndarray и ArrayLike.