Python установочные инструменты нормализуют имя версии на основе общего соглашения об именах - PullRequest
1 голос
/ 20 февраля 2020

Ошибка

/root/.local/lib/python3.7/site-packages/setuptools/dist.py:476: UserWarning: Normalizing '2.1.0c1' to '2.1.0rc1'
  normalized_version,
[Pipeline] sh
+ python3 -m twine upload --config-file .pypirc -r nesus dist/forecasting_model-2.1.0c1.tar.gz
InvalidDistribution: Cannot find file (or expand pattern): 'dist/forecasting_model-2.1.0c1.tar.gz'

Мой код для соглашения об именах

 model_version_trunc = re.split("a|b|c", current_version)[0] if len(re.split("a|b|c", current_version)) > 0 else current_version
    sub_version = int(re.split("a|b|c", current_version)[1]) if len(re.split("a|b|c", current_version)) > 1 else 1
    VERSION = current_version

    if BRANCH == 'workbench':
        letter = 'a'
    elif BRANCH == 'development':
        letter = 'b'
    elif BRANCH == 'master':
        sub_version = ''
        letter = ''
    else:
        letter = 'c'

    VERSION = f'{model_version_trunc}{letter}{sub_version}'

    # Check Version
    session = HTMLSession()
    r = session.get(MODEL_LIBRARY)
    versions_so_far = r.html.links
    version_already_exists = list(set([f'{VERSION}/']).intersection(versions_so_far))
    logger.info(f'Updated Version: {VERSION}')
    logger.info(f'Version Exists: {version_already_exists}')

    if len(version_already_exists) > 0:
        for x in version_already_exists:
            ''' 
                Fallback if versions are similar:

                If a version is an alpha/beta/branch release, update the release number
                If a version is just the standard version then udpate the minor version.
            '''

Я проверил ссылку здесь -

https://packaging.python.org/guides/distributing-packages-using-setuptools/#choosing -a-versioning- схема

для популярного соглашения об именах.

Есть ли способ исправить такого рода чувства!

1 Ответ

2 голосов
/ 21 февраля 2020

Схема вашей версии несовместима с PEP 440 . Ссылка, которую вы упомянули в вопросе, прямо гласит:

Различные Python проекты могут использовать разные схемы управления версиями в зависимости от потребностей данного конкретного проекта, но все они должны соответствовать Гибкая схема версии publi c, указанная в PEP 440 , для поддержки в таких инструментах и ​​библиотеках, как pip и setuptools.

PEP 440 допускает только пять суффиксов: a, b, rc, post и dev.

Также обратите внимание, что суффиксы a и b идентифицируют альфа- и бета-версии, поэтому проверьте, отражает ли ваша схема управления версиями, что (действительно ли ветка workbench содержит альфа-релиз?).

Если вам нужно сохранить дополнительную информацию в версии, вы можете использовать локальный идентификатор версии для разделения части версии , Примеры:

1.2.3+spam
1.0.0.dev999+eggs123.bacon456

Однако повторный запуск PEP 440 еще раз:

Локальные идентификаторы версий НЕ СЛЕДУЕТ использовать при публикации исходных проектов на индексном сервере publi c, но МОЖЕТ использоваться для идентификации частных сборок, созданных непосредственно из источника проекта. [...] Поскольку Python Package Index предназначен исключительно для индексации и размещения вышестоящих проектов, он НЕ ДОЛЖЕН разрешать использование локальных идентификаторов версий.

...