Anton Travleev

Links to my projects

View My GitHub Profile

Оказывается, необходимое условие использования семантического формата номера версии – наличие публичного API.

Сейчас в различных пакетах формат номеров такой:

package Format Current version
numjuggler X.Y[a].Z 2.42a.29
twps X.Y.Z 2.0.1
pirs2 X.Y[a].Z 2.25a.12
mip X.Y[a].Z 0.0.0
tovtk X.Y.Z 1.4.2

Использование необязательной "a" во втором числе – для обозначения версий, в которых я не слежу за обратной совместимостью при добавлении функций. Я ввел такую систему, видимо, работая над pirs, так как там было некогда следить за обратной совместимостью со “старыми” подпакетами. Сейчас я склоняюсь к тому, что семантический формат номера, где первое число увеличивается каждый раз, когда вводятся обратно несовместимые изменения, подходит лучше, даже если нет четко сформулированного публичного API.

Для публикации пакетов на PyPi (я как раз сейчас с этим разбираюсь) необходимо использование некоторого формата нумерации версий. Пока я склоняюсь к тому, чтобы все пакеты перед публикацией на PyPi перевести на сематнический формат X.Y.Z

В семантическом формате роль флага "a" играет версия, начинающаяся с 0. По предложенному правилу, для такой версии публичный API не должен рассматриваться как стабильный.

Понятие публичного API неприменимо для инструментов командной строки numjuggler или tovtk, так как функции из этих пакетов не предполагаются для импорта из других программ. Однако для них есть спецификация параметров командной строки, которая и выполняет роль описания интерфейса между программой и пользователем. Для этих пакетов первый номер в версии следует изменять, когда изменяется формат параметров командной строки. Сюда-же следует отнести и twps.

Два других пакета, упомянутых в таблице выше, pirs2 и mip. Они как раз содержат объекты, которые предполагается использоать из других программ. Здесь понятие публичного API полностью применимо. Следует отметить, для pirs2 декларация публичного API, то есть описание классов и т.п. есть, но устаревшее. А для mip такого описания почти нет.