progressbar 2.x gets released under the name progressbar2 AND imported as
progressbar2
to match. This allows it to coexist with other major versions.
If backwards compatibility means something other than API (e.g. code formatter)
then tell a story about what it means to you.
We love semver, for languages that support its goals well. This addition adapts it for better Python compatibility in large-scale systems like monorepos.
Importable names need to be discoverable, so they MUST agree with the project name.
a. Having documentation that says “import conffoo as cf” is against the spirit of this even if you also own the project “cf”.
b. Forks (that are “published” e.g. on pypi) MUST also rename.
c. Integer suffixes MUST NOT be used except as in the following section. (Notably, this means forks MUST NOT just add a version)
Different major versions of a project MAY (from the beginning) and MUST (from 2.x) use the major version as a suffix to the project name (thus by the point above, also importable name).
a. For avoidance of doubt, this means 0.x and 1.x MAY use an unsuffixed name and this is intended to apply to “released versions” on some namespace e.g. pypi (not source control repo names, branches, or zips published under a rock).
b. If you have more than one importable name, you PROBABLY already have bigger problems, but the various names MUST be suffixed similarly.