Уютный чат для профессионалов, занимающихся поиском питоньих мудростей. Как не получить бан: https://t.me/ru_python/1961404
Ну, такое проверит что типы в проекте соответствуют типам в либе. Но не что они соответствуют спецификации. Пока тайпхинты тривиальные, это не актуально, но они же распухают.
Читать полностью…Какой-нибудь декоратор, который вешается на тест-функцию и ее содержимое полностью переносит в файл, который находится во временной директории, натравливает директивно на файл mypy и в итоге тест либо прошел, либо нет, в зависимости от реакции mypy
Читать полностью…Т.е. тебе надо включить ее в "настоящий" проект, натравить туда mypy и убедиться, что все ок
Читать полностью…Может уже существует, по факту для этого нужно уметь внутри пайтеста натравливать mypy на изолированные кусочки кода
Читать полностью…Ну выводимы, и что? Я о том что вот мы получили простыню из связанных межлу собой дженериков и прочего. Как нам убедиться, что они описывают то, что мы для них планировали и не описывают лишнего? Для обычного кода мы юнит тестов понапишем и запустим, позитивных и негативных. А тут как?
Читать полностью…Полноту-то обеспечить недолго. Это не значит, что вме взаимосвязи волшебным образом начнут восприниматься.
Читать полностью…а наружу из такого модуля должны торчать нормальные питоновские типы
Читать полностью…В тайпскрипте, говорят, язык аннотаций тьюринг-полный. Рано или поздно любая система аннотаций типов, я думаю, к этому приходит
Читать полностью…Чтобы тайпчекер такое проверил, ему надо это всё как-то оценить. А с произвольными операциями - по сути выполнить код, чего анализ типов в общем-то не очень поедполагает.
Читать полностью…Смотря что понимать под словом разрешены. Есть правила питонов и есть отдельно "язык типизации"
Читать полностью…Для либы тоже нормально. Если у тебя даже дженерик классы и они имеют какие то констреинты то валидация все равно должна быть.
Читать полностью…вот такое первым нагуглилось: https://pypi.org/project/pytest-mypy-testing/
Читать полностью…Лично мне кажется, что плагин для пайтеста довольно тривиально написать
Читать полностью…Это все хорошо, когда у тебя, так скажем, проект последней мили. Когда у тебя либа, быть уверенным в корректности ее типизации - довольно нетривиальная задача
Читать полностью…Первый раз слышу чтобы кто то писал тесты на типы. Успешный проход тайпчекера это как в компилируемых языках успешная компиляция
Читать полностью…Я, кстати, в итоге так и не получил ответа: как с усложнением тайпхинтов их тестами на соответствие требованиям покрывать.
Читать полностью…код на ситайпсах это такая внутрянка которая пишется один раз и потом её 10 лет никто не трогает, не то что бы в ней прям нужны тайпхинты
Читать полностью…Тебе на уровне языка четко сказано, что имеешь право пихать в тайпхинты любое валидное python-выражение. В рантайме будет работать. Но условный mypy прожует тоьько то, что описано в спеке тайпинга или покрыто плагином
Читать полностью…Выражения на уровне типов вполне возможны, но я не уверен, возможны ли они конкретно внутри аннотаций.
Аннотации - это по сути отдельный язык внутри языка, который появился относительно недавно, и у которого все еще огромные проблемы в плане гибкости, выразительности и прочего, на уровне аннотаций даже логическое И нормально выразить нельзя.
Ответ простой: питоновскс система тайпхинтов - это набор костылей под частные случаи, что продумали - работает и ни шагу в сторону
Читать полностью…