MyPy выдает ложную тревогу по `mutagen.id3.PictureType`Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 MyPy выдает ложную тревогу по `mutagen.id3.PictureType`

Сообщение Anonymous »

Я пишу код Python (для управления метаданными аудио), используя библиотеку мутагенов. В библиотеке нет подсказок типов, однако я добавил подсказки типов в свои подпрограммы. В частности, у меня есть функция со следующей сигнатурой:

Код: Выделить всё

from mutagen import id3

def fun(arg1: str, arg2: id3.PictureType = id3.PictureType.ARTIST):
# the body of the function
Но MyPy жалуется на назначение аргументов по умолчанию:

Код: Выделить всё

error: Incompatible default for argument "arg2" (default has type "int", argument has type "PictureType")
Я в замешательстве и не могу понять, почему это происходит. Я это проверил:

Код: Выделить всё

>>> isinstance(id3.PictureType.ARTIST, id3.PictureType)
True
>>> isinstance(id3.PictureType.ARTIST, int)
True
>>> issubclass(id3.PictureType.ARTIST.__class__, int)
True
>>> inspect.getmro(id3.PictureType.ARTIST.__class__)
(mutagen.id3._specs.PictureType, int, object)
Итак, похоже, иерархия типов правильная (

Код: Выделить всё

id3.PictureType.ARTIST
должен быть экземпляром id3.PictureType, который сам по себе является подклассом int). Тем не менее, MyPy предполагает, что id3.PictureType.ARTIST имеет тип int, почему?
Может ли это быть связано с «особым» способом реализации id3 автором мутагена .PictureType как перечисление (см. здесь и здесь)? И если да, то есть ли способ это исправить (без повторной реализации PictureType как правильного перечисления Python)?

Подробнее здесь: https://stackoverflow.com/questions/777 ... icturetype
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»