подходы используются в коммерческой разработке?
2. Если используется semver, то как проверяют мажорность изменений - прогоняют тесты от предыдущей версии?
- релизим? - похеру, релизим - а если упадет? - исправим Конечно же шутка
1. Семвер 2. Заебало, давайте нормально перепишем
2. Если ты поменял что-то в публичном API, из-за чего его нельзя больше вызывать по старому (добавил обязательный аргумент, удалили аргумент, удалил функцию или ещё что-то). Тогда надо делать новую мажорку. С питоном правда есть когнитивная сложность с пониманием того, что есть "публичное API", т.к. импортировать могут что-угодно. Но обычно такое решается заклинанием "сам себе злобный буратино".
По моменту с изменениями. Вроде как всё переписывается если мажорный апдейт есть и делается новые тесты Если не ошибаюсь, Мажорное обновление подразумевает несовместимость с прошлыми версиями (если не какой то там Ява)
Что такое "всё" и зачем оно переписывается? Semver предполагает, что в мажорном апдейте есть несовместимые изменения. Их может быть очень немного. Для них, разумеется, нужны новые тесты и т. п.
Ну всё - всё, где есть нестыковки
Ну если у вас есть тесты для API библиотеки, то очевидно они должны сломаться, если внести "мажорные" изменения. А раз тесты сломались - надо их исправлять. Но сам факт того, что тесты сломались, не говорит про то что были какие-то мажорные изменения. Надо отдельно анализировать ситуацию. Обратное тоже справедливо - если тесты работают, то это ещё не означает, что нет мажорных изменений.
Исходя из этого, значит если тесты допустим охватывают 100% кода, то по прогону теста можно решить о наличии мажорных изменений?
так это корректно для мажорки - 0 ?
0 в мажорной версии обычно значит «недоделанное»
https://0ver.org/
В питоне - нет, нельзя ничего 100% решить. Если тест не упал, это не значит что нет мажорного изменения. Зависит от того как тест написан. Например тест может передавать все аргументы в функцию с указанием имени аргументов. А кто-то взял и поменял в функции порядок аргументов. Тест от этого не сломается, а клиентский код, который передаёт аргументы без указания их имени - сломается. Поэтому надо просто смотреть дифы изменений и особое внимание уделять изменениям в публичном API.
Именно поэтому есть kwargs-only, positional-only
Ну, если в документации заявлено, что порядок аргументов фиксирован и можно передавать позиционно, а в тестах проверяется только по имени — это косяк тестов. Другой вопрос что тесты в реальности никогда не покроют 100% кода, и это не специфично для питона, почти во всех языках так.
Обсуждают сегодня