Following PEP 440 for versioning

PEP 440 provides a specification for version identification.

We already comply with it, but we could take advantage of it. For instance:

  • After X.Y.Z is released, we could bump to X.Y.[Z+1].dev0 in develop. This way, it is easier to know in which version a commit belongs.
  • Anyone should be able to make a pre-release by bumping N in X.Y.ZaN (or X.Y.ZbN or X.Y.ZrcN). This makes it easier to package an intermediate version with a particular bug fix.
  • We could update the release module to support these syntaxes and provide the full version to setuptools.setup.

In our case, I would consider the following patterns:

  • Development: X.Y.Z.devN (N could be omitted here, but it's part of the normalization)
  • Alpha pre-release: X.Y.ZaN
  • Beta pre-release: X.Y.ZbN
  • Release candidate: X.Y.ZrcN
  • Final release: X.Y.Z

What do you think?