(Примечание: повтор вопроса, который был сочтен недостаточно конкретным, а затем автоматически удален, прежде чем я получил возможность его пересмотреть)
Справочная информация tl;dr
Я участвую в научном механизме рабочих процессов под названием Pydra, который использует аннотации ввода Python для обеспечения динамической проверки типов во время создания рабочего процесса. Он также использует эти аннотации, чтобы узнать, какие входные данные являются файлами/каталогами, чтобы их содержимое можно было включить в хэши, используемые во внутреннем кеше.
Решение некоторых проблем, с которыми мы сталкивались при копировании форматов файлов. с отдельными заголовками побудили меня написать пакет для проверки/обработки различных форматов файлов FileFormats. Это также позволило нам включить проверку формата как часть динамической проверки типов и зарегистрировать стандартные преобразователи между некоторыми типами форматов.
В этом пакете я начал использовать __class_getitem__ для указания дополнительная информация о содержимом файлов, например. Gzip[Png] — PNG-файл, сжатый с помощью gzip, без прочтения предупреждений о том, что его не рекомендуется использовать за пределами стандартной библиотеки. Однако оказалось, что он очень хорошо работает для динамической типизации, и я начал использовать его довольно широко, например. DicomSeries[Brain, T1Weighted] серия dicom, содержащая Т1-взвешенные МРТ-изображения головного мозга. __subclasshook__ реализован в классе примеси, который обрабатывает случаи, когда DicomSeries[Brain, T1Weighted] считается подклассом DicomSeries[Brain], DicomSeries[T1Weighted] и DicomSeries.
Так что я действительно очень доволен тем, как работает пакет, но... затем я попытался посмотреть, смогу ли я заставить его работать со статическим типом - проверив, в частности Mypy, и обнаружил, что я запутался в нерекомендуемых/поддерживаемых функциях при использовании __class_getitem__ для этой цели.
Мой вопрос >
Итак, я хочу знать, как написать плагин с get_type_analyze_hook, чтобы аннулировать предупреждения об использовании __class_getitem__ для недженериков и перепросмотреть правила в моем хуке подкласса. Я не получил многого от чтения документации по get_type_analyze_hook, для чего он предназначен? Нужно ли мне просто заставить его возвращать действительный тип, могу ли я использовать для этого логику своего кода?
Подробнее здесь: https://stackoverflow.com/questions/790 ... s-subtypes
Что возвращает get_type_analyze_hook в плагине MyPy, который обрабатывает подтипы, созданные __class_getitem__, и повтор ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как отправить сигнал "ctrl+c" / sigint, чтобы Gradle javaexec type type type jvm?
Anonymous » » в форуме JAVA - 0 Ответы
- 29 Просмотры
-
Последнее сообщение Anonymous
-