0

When / Why does setuptools-scm append .devXXX to its generated version?

In a couple repos I maintain setuptools-scm starts producing versions with .devXXX appended to the version number. This causes issues because this tag is invalid for upload to PyPi.

I created a workaround the first time this happened, and I assumed that it was because I had done something improper in git. This just happened in a really simple project though, and it's really frustrating.

The workaround that I used before is to hijack the versioning via use_scm_version. This is less than ideal, and I'd like to understand the root cause.

Thanks in advance for any help you might be able to offer!

Documentation is here: https://github.com/pypa/setuptools_scm/#importing-in-setuppy

# setup.py

def _clean_version():
    """
    This function was required because scm was generating developer versions on
    GitHub Action.
    """
    def get_version(version):
        return str(version.tag)
    def empty(version):
        return ''

    return {'local_scheme': get_version, 'version_scheme': empty}


setuptools.setup(
    ...
    use_scm_version=_clean_version,
    ...
)
Nick Gimbal
  • 122
  • 9

1 Answers1

0

It's doing so because commits not tagged have their version value computed like this:

X.Y.(Z+1)-devN-gSHA

where:

X.Y.Z is the most recent previous tagged commit on top of/above which you are actually.

N is the number of commits you are after that previous X.Y.Z

and SHA is the SHA of your current commit.

-dev* version are considered beta/pre version of what they follow.

so X.Y.(Z+1)-devN-gSHA is considered beta/pre version of X.Y.(Z+1).

gst
  • 431
  • 1
  • 4
  • 16