This repo is used to understand the limitations of specifying the version of a Python package and version ordering as defined in the Version Specifiers in the Python Packaging User Guide.
The table below shows the order in which the package versions were created. It is different from how the packages will be ordered in the Test Python Package Index.
Written version | Normalized version | Commit | Notes |
---|---|---|---|
0.1.0 | 0.1.0 | cd74719 | |
0.2 | 0.2 | 6b79a04 | |
00.03.000.00000.0 | 0.3.0.0.0 | ca32933 | Extra zeros in numeric sub-segments are removed during version normalization. We can also use as many subsegments as we want, as we are not limited. |
v0.4.0 | 0.4.0 | 0f55d7e | The letter "v" is removed during version normalization. |
1_alpha0 | 1a0 | b1af02a | |
1-a1 | 1a1 | e1af9ea | |
1.b | 1b0 | c6be52e | |
1beta1 | 1b1 | 283a93d | |
1-preview | 1rc0 | 03bf6cd | |
1-pre1 | 1rc1 | f8a12f6 | |
1-pre1 | 1rc1 | f8a12f6 | |
1b2 | 1b2 | fa59417 | Posting a beta release after a release candidate does not make the beta release to be considered greater than the release candidate already created. |
1b3 | 1b3 | 15696a7 | Posting a beta release after a release candidate does not make the beta release to be considered greater than the release candidate already created. |
1.0_c2 | 1.0rc2 | 84ad55d | Adding a new subsegment with value 0 to the final release segment does not functionally affect the package. From the TestPyPI perspective this release is equivalent to 1rc2 or 1.0.0.0.0.rc2. For installation we can use any of the mentioned versions, because the final pip redirects us to the current version. |
1.0_b.5 | 1.0b5 | 7b842e1 | Posting a beta release after a candidate release does not make the beta release considered higher than the candidate release already created, even if a 0 subsegment has been added at the end of the release segment. |
1rc3 | 1rc3 | fabe2fb | |
1.0.0 | 1.0.0 | 3fa4ef1 | |
1.0.0.post0 | 1.0.0.post0 | 2fc8160 | |
1.0.0rev_1 | 1.0.0.post1 | 0b892cb | |
1.0.0-R-2 | 1.0.0.post2 | 30657f3 | All ascii letters are converted to lowercase. |
1.0.0-3 | 1.0.0.post3 | 8e99bdb | A post-release can also be created by omitting the “post”, if “-” is used together with a numeric value. |
1.0.1.a0r | 1.0.1a0.post0 | b71b8f1 | “Creating post-releases of pre-releases is strongly discouraged.” (Source) |
1.0.1.b--01 | 1.0.1b0.post1 | 8381610 | The first "-" is assigned pre-release segment, while the second one marks a post-release. |
1.0.1.rc-0000_rEv-00001 | 1.0.1rc0.post1 | cbd2839 | Extra zeros are also removed from the numeric sub-segments of the pre-release and post-release segments during version normalization. |
2.0.0 | 2.0.0 | 2702baf | |
2.0.1dev- | 2.0.1.dev0 | d900f68 | |
2.0.1-dev_1 | 2.0.1.dev1 | 05ea38f | |
2.0.1.a--dev- | 2.0.1a0.dev0 | 3c2fe66 | "While they may be useful for continuous integration purposes, publishing developmental releases of pre-releases to general purpose public index servers is strongly discouraged, as it makes the version identifier difficult to parse for human readers." (Source) |
2.0.1dev2 | 2.0.1.dev2 | c16c1d3 | Version ordering is done segment by segment, so that 2.0.1.dev2 < 2.0.1a0.dev0. |
2.0.1rc0 | 2.0.1rc0 | 3e4d562 | |
2.0.1rc0.dev0 | 2.0.1rc0.dev0 | 099f59f | The version that also has the development release segment is smaller than the version without it. |
2.0.1rc0.post0.dev0 | 2.0.1rc0.post0.dev0 | f9f2a38 | The version ordering is done segment by segment, so even though 2.0.1rc0.post0.dev0 is a development release, it is higher than version 2.0.1rc0 because it includes the post release segment. |
2.0.1rc0.post0 | 2.0.1rc0.post0 | 0b93da1 | |
2.0.1rc0.post0.dev1 | 2.0.1rc0.post0.dev1 | a305a38 | Development release of a post release is considered to be a smaller version than the post release version. |
2.1.0 | 2.1.0 | 4d49e60 | |
2.1.0+testlocal.001 | 2.1.0+testlocal.1 | 8477f89 | Publishing local versions is not allowed in TestPyPI. |
2.1.0+testlocal.002.ab0013 | 2.1.0+testlocal.2.ab0013 | d2712d2 | Publishing local versions is not allowed in TestPyPI. |
2024.8.3 | 2024.8.3 | ba0013f | |
2024.8.4 | 2024.8.4 | 86b9c70 | |
1!4.0.0.dev0 | 1!4.0.0.dev0 | 530a413 | |
1!4.0.0-rc | 1!4.0.0rc0 | 0653097 | |
1!4.0.0 | 1!4.0.0 | 1503f97 |