v1a0 / sqllex

The most pythonic ORM (for SQLite and PostgreSQL). Seriously, try it out!
https://v1a0.github.io/sqllex
GNU General Public License v3.0
92 stars 8 forks source link

Discussion | Sqllex version identifiers #61

Open v1a0 opened 2 years ago

v1a0 commented 2 years ago

PEP 440 – Version Identification and Dependency Specification. Public version identifiers

The canonical public version identifiers MUST comply with the following scheme:

[N!]N(.N)*[{a|b|rc}N][.postN][.devN]

Public version identifiers MUST NOT include leading or trailing whitespace. Public version identifiers MUST be unique within a given distribution.

Installation tools SHOULD ignore any public versions which do not comply with this scheme but MUST also include the normalizations specified below. Installation tools MAY warn the user when non-compliant or ambiguous versions are detected.

See also Appendix B : Parsing version strings with regular expressions which provides a regular expression to check strict conformance with the canonical format, as well as a more permissive regular expression accepting inputs that may require subsequent normalization.

Public version identifiers are separated into up to five segments:

Epoch segment: N! Release segment: N(.N)* Pre-release segment: {a|b|rc}N Post-release segment: .postN Development release segment: .devN


Current versioning following scheme like:

major.minor.micro.fix

So I decided to switch sqllex semantic versioning to something like this "major.minor.micro" versioning with alpha, beta and candidate pre-releases. Next versions will following this scheme:

major.minor.micro*[{a|b|rc}N][.postN][.devN]

For example:

0.2.2
0.2.3a1
0.2.3a2
0.2.3b1
0.2.3rc1
0.2.3
0.2.4a1
...

Not sure is it necessary to use .postN and .devN but they will be used as needed.

The reason I decided to change semantic versioning is to make easy to understand meaning of program version.

In wiki you can find this kind of explanation

Stage | Semver | Num. Status | Num 90+ -- | -- | -- | -- Alpha | 1.2.0a1 | 1.2.0.1 | 1.1.90 Beta | 1.2.0b2 | 1.2.1.2 | 1.1.93 Release candidate | 1.2.0rc3 | 1.2.2.3 | 1.1.97 Release | 1.2.0 | 1.2.3.0 | 1.2.0 Post-release fixes | 1.2.0post1 | 1.2.3.5 | 1.2.5

So "Num. Status" seems familiar for current sqllex versioning but it does not the same.

0.2.1.0
0.2.1.1
0.2.1.2
0.2.1.3
0.2.1.4
0.2.2.0

What the hell is this mean? Umm... So, is every new version have new feature (?) or bugfix for main 0.2.1 version (?) or what?

So this scheme more clearly for understand

0.2.0
0.2.1a1
0.2.1a2
0.2.1a3
0.2.1b1
0.2.1
0.2.1.post1

Much better, right? Btw I'm open for discussion, feel free to leave your comment down below.