Использование версий календаря для пакета Python - PullRequest
2 голосов
/ 29 марта 2019

Я предпочитаю схему управления версиями календаря (см. calver.org ), а не семантический подход.Но когда я использую управление версиями календаря в пакете Python, PyPI удаляет заполнение нулями в месяце.Например, в setup.py, если номер версии объявлен как version='19.03', тогда PyPI размещает пакет как 19.3 (без заполнения нулями).

Есть ли способ заставить PyPI подтвердить заполнение нулямимесяц или схема YYYY.0M не поддерживается для пакетов Python?

1 Ответ

3 голосов
/ 29 марта 2019

Да, это возможно. Проблема не в PyPI, а в том, как setuptools нормализует номер версии при создании дистрибутива.

Возьмем это простое setup.py, которое определяет минимальный пакет:

from setuptools import setup

setup(
    name='calver-test',
    version='2019.03.29',
    packages=[],
)

Если вы запустите python setup.py sdist, то получится файл calver-test-2019.3.29.tar.gz, имеющий следующую структуру:

calver-test-2019.3.29
├── PKG-INFO
├── calver_test.egg-info
│   ├── PKG-INFO
│   ├── SOURCES.txt
│   ├── dependency_links.txt
│   └── top_level.txt
├── setup.cfg
└── setup.py

Если вы вручную распакуете файл tar.gz, измените вхождения 2019.3.29 на 2019.03.29 в файлах PKG-INFO, перепакуйте его в файл с именем calver-test-2019.03.29.tar.gz и загрузите его в PyPI, он сохранит нулевое заполнение.

Пример здесь: https://pypi.org/project/calver-test/2019.03.29/

Очевидно, что этот процесс не идеален, если это ваше предполагаемое поведение, поэтому, возможно, имеет смысл открыть проблему на трекере проблем setuptools .

...