#python #pip #continuous-integration #git-flow #twine
Вопрос:
Я разрабатываю библиотеку Python, используя принцип разработки Gitflow, и у меня есть этап CI для модульного тестирования и загрузки пакетов в (частный) ПыПИ. Я хочу использовать загруженный пакет для целей тестирования, прежде чем я объединю его обратно в ветку интеграции.
Другие менеджеры пакетов (и популярные инструменты) допускают идентификаторы версий, содержащие идентификаторы, специфичные для ветвей функций, например, 1.2.3-my-feature-alpha.1
в соответствии с SemVer. Однако PEP-440 запрещает использование таких схем управления версиями, а twine даже отклоняет такие загрузки.
Каков правильный (или выполнимый) подход к именованию версий пакетов Python, если вы хотите создавать такие предварительные версии (что потенциально может происходить параллельно с несколькими ветвями функций) без конфликтов идентификаторов версий в соответствии с PEP-440?
Ответ №1:
я слишком много думаю об этом.
Хотя это и не предназначено для такого использования, вы можете неправильно использовать идентификатор локальной версии, указанный в PEP-440, см.: https://www.python.org/dev/peps/pep-0440/#toc-entry-5
в вашем случае это было бы 1.2.3 my-feature.alpha.1
выпуски с идентификаторами локальных версий игнорируются при запросе выпусков с совместимым идентификатором общедоступной версии , например 1.2.3
, но все равно могут быть запрошены при прямом выборе выпуска с идентификатором локальной версии 1.2.3 my-feature-alpha.1
мой комментарий не является рекомендацией, он просто отражает мысли, которые у меня были по той же проблеме.
Комментарии:
1. Просто чтобы дополнить ваши мысли, я считаю, что было бы более точным использовать как предварительные, так и локальные идентификаторы вместе, т. Е.
1.2.3-dev0 my-feature-alpha.1
Это по-прежнему позволяет инструментам считать его предварительным выпуском, а локальный идентификатор помогает нам определить конкретную версию, которую мы хотели бы интегрировать. Было разочаровывающе обнаружить, что PEP-440 решил заблокировать предварительные выпуски до 4 различных значений, и я полностью согласен с тем, что использование локального идентификатора для этой семантики неправильно