tinysemver 2.0.1__tar.gz → 2.0.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {tinysemver-2.0.1/tinysemver.egg-info → tinysemver-2.0.3}/PKG-INFO +22 -68
- {tinysemver-2.0.1 → tinysemver-2.0.3}/README.md +21 -67
- {tinysemver-2.0.1 → tinysemver-2.0.3}/pyproject.toml +1 -1
- {tinysemver-2.0.1 → tinysemver-2.0.3/tinysemver.egg-info}/PKG-INFO +22 -68
- {tinysemver-2.0.1 → tinysemver-2.0.3}/LICENSE +0 -0
- {tinysemver-2.0.1 → tinysemver-2.0.3}/setup.cfg +0 -0
- {tinysemver-2.0.1 → tinysemver-2.0.3}/tinysemver.egg-info/SOURCES.txt +0 -0
- {tinysemver-2.0.1 → tinysemver-2.0.3}/tinysemver.egg-info/dependency_links.txt +0 -0
- {tinysemver-2.0.1 → tinysemver-2.0.3}/tinysemver.egg-info/entry_points.txt +0 -0
- {tinysemver-2.0.1 → tinysemver-2.0.3}/tinysemver.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: tinysemver
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.3
|
|
4
4
|
Summary: Tiny Semantic Versioning (SemVer) library, that doesn't depend on 300K lines of JavaScript
|
|
5
5
|
Author-email: Ash Vardanian <1983160+ashvardanian@users.noreply.github.com>, Guillaume de Rouville <31691250+grouville@users.noreply.github.com>
|
|
6
6
|
License: Apache License
|
|
@@ -224,9 +224,9 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
224
224
|
Description-Content-Type: text/markdown
|
|
225
225
|
License-File: LICENSE
|
|
226
226
|
|
|
227
|
-
|
|
227
|
+

|
|
228
228
|
|
|
229
|
-
|
|
229
|
+
__TinySemVer__ is a minimalistic [Semantic Versioning](https://semver.org/) package for projects following [Conventional Commits](https://www.conventionalcommits.org/) in a single short Python file.
|
|
230
230
|
In plain English, if your commit messages look like `feat: add new feature` or `fix: bugfix`, this package will automate releasing new "GIT tags" based on the commit messages.
|
|
231
231
|
Here is how to integrate it into your project CI:
|
|
232
232
|
|
|
@@ -239,6 +239,9 @@ $ tinysemver --dry-run --verbose
|
|
|
239
239
|
|
|
240
240
|
The `--dry-run` flag will only print the next version without changing any files.
|
|
241
241
|
Great for pre-release CI pipelines.
|
|
242
|
+
|
|
243
|
+
## Usage Details for the Command Line Interface
|
|
244
|
+
|
|
242
245
|
If you need more control over the default specification, here are more options you can run against the files in this repository:
|
|
243
246
|
|
|
244
247
|
```sh
|
|
@@ -246,7 +249,7 @@ If you need more control over the default specification, here are more options y
|
|
|
246
249
|
$ tinysemver --verbose \
|
|
247
250
|
--major-verbs 'breaking,break,major' \
|
|
248
251
|
--minor-verbs 'feature,minor,add,new' \
|
|
249
|
-
--patch-verbs 'fix,patch,bug,improve,docs' \
|
|
252
|
+
--patch-verbs 'fix,patch,bug,improve,docs,make' \
|
|
250
253
|
--changelog-file 'CHANGELOG.md' \
|
|
251
254
|
--version-file 'VERSION' \
|
|
252
255
|
--update-version-in 'pyproject.toml' '^version = "(\d+\.\d+\.\d+)"' \
|
|
@@ -262,7 +265,7 @@ Here is an example of passing even more parameters for a project like `stringzil
|
|
|
262
265
|
$ tinysemver --verbose \
|
|
263
266
|
--major-verbs 'breaking,break,major' \
|
|
264
267
|
--minor-verbs 'feature,minor,add,new' \
|
|
265
|
-
--patch-verbs 'fix,patch,bug,improve,docs' \
|
|
268
|
+
--patch-verbs 'fix,patch,bug,improve,docs,make' \
|
|
266
269
|
--changelog-file 'CHANGELOG.md' \
|
|
267
270
|
--version-file 'VERSION' \
|
|
268
271
|
--update-version-in 'pyproject.toml' '^version = "(\d+\.\d+\.\d+)"' \
|
|
@@ -292,7 +295,7 @@ $ tinysemver --verbose \
|
|
|
292
295
|
> + version: 1.3.0 # Only in verbose mode
|
|
293
296
|
> Appending to changelog file: CHANGELOG.md
|
|
294
297
|
> = skipping 250 lines # Only in verbose mode
|
|
295
|
-
> +
|
|
298
|
+
> + adding 30 lines # Only in verbose mode
|
|
296
299
|
```
|
|
297
300
|
|
|
298
301
|
Alternatively, you can just ask for `--help`:
|
|
@@ -301,7 +304,7 @@ Alternatively, you can just ask for `--help`:
|
|
|
301
304
|
$ tinysemver --help
|
|
302
305
|
```
|
|
303
306
|
|
|
304
|
-
## GitHub CI Action
|
|
307
|
+
## Usage Details for the GitHub CI Action
|
|
305
308
|
|
|
306
309
|
TinySemVer can be easily integrated into your GitHub Actions CI pipeline.
|
|
307
310
|
Assuming the differences between YAML and shell notation, some arguments are passed in a different form, like `--update-version-in`.
|
|
@@ -328,7 +331,7 @@ jobs:
|
|
|
328
331
|
with:
|
|
329
332
|
major-verbs: 'breaking,break,major'
|
|
330
333
|
minor-verbs: 'feature,minor,add,new'
|
|
331
|
-
patch-verbs: 'fix,patch,bug,improve,docs'
|
|
334
|
+
patch-verbs: 'fix,patch,bug,improve,docs,make'
|
|
332
335
|
changelog-file: 'CHANGELOG.md'
|
|
333
336
|
version-file: 'VERSION'
|
|
334
337
|
update-version-in: 'pyproject.toml:version = "(.*)"' # Use colon instead of space
|
|
@@ -387,11 +390,11 @@ Also keep in mind:
|
|
|
387
390
|
|
|
388
391
|
For more information on CI configurations and pushing changes in GitHub Actions, see the [semantic-release GitHub Actions guide](https://github.com/semantic-release/semantic-release/blob/master/docs/recipes/ci-configurations/github-actions.md#pushing-packagejson-changes-to-a-master-branch).
|
|
389
392
|
|
|
390
|
-
## Why?
|
|
393
|
+
## Why Create Another SemVer Tool?
|
|
391
394
|
|
|
392
395
|
In the past I was using [semantic-release](https://github.com/semantic-release/semantic-release) for my 10+ projects.
|
|
393
396
|
At some point, a breaking change in the dependencies broke all my projects CI pipelines for a month, affecting dozens of tech companies using those libraries.
|
|
394
|
-
I felt miserable trying to trace the issue and reluctant to go through
|
|
397
|
+
I felt miserable trying to trace the issue and reluctant to go through __363K lines of low-quality JavaScript code__ to find the bug.
|
|
395
398
|
Yes, it's 363K lines of code:
|
|
396
399
|
|
|
397
400
|
```sh
|
|
@@ -406,26 +409,7 @@ Language files blank comment code
|
|
|
406
409
|
--------------------------------------------------------------------------------
|
|
407
410
|
JavaScript 4902 48080 81205 363424
|
|
408
411
|
TypeScript 732 7008 73034 79367
|
|
409
|
-
|
|
410
|
-
JSON 599 58 0 64808
|
|
411
|
-
HTML 86 1821 0 25365
|
|
412
|
-
Python 57 4985 9193 23704
|
|
413
|
-
CSS 97 1360 739 6346
|
|
414
|
-
YAML 73 79 51 1198
|
|
415
|
-
CoffeeScript 18 193 16 1122
|
|
416
|
-
EJS 1 67 0 521
|
|
417
|
-
Lua 22 95 29 434
|
|
418
|
-
Handlebars 11 30 0 188
|
|
419
|
-
C# 1 55 9 186
|
|
420
|
-
Bourne Shell 7 30 11 168
|
|
421
|
-
Bourne Again Shell 2 22 24 84
|
|
422
|
-
TOML 1 8 31 80
|
|
423
|
-
make 3 17 11 57
|
|
424
|
-
PowerShell 2 12 4 48
|
|
425
|
-
DOS Batch 5 9 0 42
|
|
426
|
-
Fish Shell 1 5 14 21
|
|
427
|
-
C++ 2 12 19 20
|
|
428
|
-
Nix 1 1 0 19
|
|
412
|
+
... ... ... ... ...
|
|
429
413
|
--------------------------------------------------------------------------------
|
|
430
414
|
SUM: 7256 90782 164390 634071
|
|
431
415
|
--------------------------------------------------------------------------------
|
|
@@ -435,20 +419,18 @@ Here is the `cloc` output for `tinysemver`:
|
|
|
435
419
|
|
|
436
420
|
```sh
|
|
437
421
|
$ tinysemver$ cloc .
|
|
438
|
-
|
|
439
|
-
|
|
422
|
+
17 text files.
|
|
423
|
+
13 unique files.
|
|
440
424
|
6 files ignored.
|
|
441
425
|
|
|
442
426
|
github.com/AlDanial/cloc v 1.96 T=0.01 s (660.7 files/s, 44267.6 lines/s)
|
|
443
427
|
-------------------------------------------------------------------------------
|
|
444
428
|
Language files blank comment code
|
|
445
429
|
-------------------------------------------------------------------------------
|
|
446
|
-
Python 1
|
|
447
|
-
|
|
448
|
-
TOML 1 6 2 33
|
|
449
|
-
Text 3 1 0 10
|
|
430
|
+
Python 1 79 93 493
|
|
431
|
+
... ... ... ... ...
|
|
450
432
|
-------------------------------------------------------------------------------
|
|
451
|
-
SUM:
|
|
433
|
+
SUM: 13 227 107 1124
|
|
452
434
|
-------------------------------------------------------------------------------
|
|
453
435
|
```
|
|
454
436
|
|
|
@@ -458,41 +440,13 @@ SUM: 6 65 29 308
|
|
|
458
440
|
- Pre-release versions, like `1.2.3-alpha.1`. Not needed for most projects.
|
|
459
441
|
- GenAI.
|
|
460
442
|
|
|
461
|
-
For reference, according to SemVer 2.0, all [following versions](https://regex101.com/r/Ly7O1x/3/) are valid:
|
|
462
|
-
|
|
463
|
-
```
|
|
464
|
-
1.1.2-prerelease+meta
|
|
465
|
-
1.1.2+meta
|
|
466
|
-
1.1.2+meta-valid
|
|
467
|
-
1.0.0-alpha
|
|
468
|
-
1.0.0-beta
|
|
469
|
-
1.0.0-alpha.beta.1
|
|
470
|
-
1.0.0-alpha.1
|
|
471
|
-
1.0.0-alpha0.valid
|
|
472
|
-
1.0.0-alpha.0valid
|
|
473
|
-
1.0.0-alpha-a.b-c-somethinglong+build.1-aef.1-its-okay
|
|
474
|
-
1.0.0-rc.1+build.1
|
|
475
|
-
2.0.0-rc.1+build.123
|
|
476
|
-
1.2.3-beta
|
|
477
|
-
10.2.3-DEV-SNAPSHOT
|
|
478
|
-
1.2.3-SNAPSHOT-123
|
|
479
|
-
2.0.0+build.1848
|
|
480
|
-
2.0.1-alpha.1227
|
|
481
|
-
1.0.0-alpha+beta
|
|
482
|
-
1.2.3----RC-SNAPSHOT.12.9.1--.12+788
|
|
483
|
-
1.2.3----R-S.12.9.1--.12+meta
|
|
484
|
-
1.2.3----RC-SNAPSHOT.12.9.1--.12
|
|
485
|
-
1.0.0+0.build.1-rc.10000aaa-kk-0.1
|
|
486
|
-
1.0.0-0A.is.legal
|
|
487
|
-
```
|
|
488
|
-
|
|
489
|
-
Probably very useful for 2-3 projects, I didn't need to support any of them yet.
|
|
443
|
+
> For reference, according to SemVer 2.0, all [following versions](https://regex101.com/r/Ly7O1x/3/) are valid: `1.1.2-prerelease+meta`, `1.1.2+meta`, `1.1.2+meta-valid`, `1.0.0-alpha`, `1.0.0-beta`, `1.0.0-alpha.beta.1`, `1.0.0-alpha.1`, `1.0.0-alpha0.valid`, `1.0.0-alpha.0valid`, `1.0.0-alpha-a.b-c-somethinglong+build.1-aef.1-its-okay`, `1.0.0-rc.1+build.1`, `2.0.0-rc.1+build.123`, `1.2.3-beta`, `10.2.3-DEV-SNAPSHOT`, `1.2.3-SNAPSHOT-123`, `2.0.0+build.1848`, `2.0.1-alpha.1227`, `1.0.0-alpha+beta`, `1.2.3----RC-SNAPSHOT.12.9.1--.12+788`, `1.2.3----R-S.12.9.1--.12+meta`, `1.2.3----RC-SNAPSHOT.12.9.1--.12`, `1.0.0+0.build.1-rc.10000aaa-kk-0.1`, `1.0.0-0A.is.legal`.
|
|
490
444
|
|
|
491
445
|
## Examples
|
|
492
446
|
|
|
493
447
|
Assembling RegEx queries can be hard.
|
|
494
448
|
Luckily, there aren't too many files to update in most projects.
|
|
495
|
-
Below is an example of a pipeline for the USearch project, that has bindings to 10 programming languages.
|
|
449
|
+
Below is an example of a pipeline for the [USearch](https://github.com/unum-cloud/usearch) project, that has bindings to 10 programming languages.
|
|
496
450
|
Feel free to add other sources and examples.
|
|
497
451
|
|
|
498
452
|
```sh
|
|
@@ -515,7 +469,7 @@ $ wget https://github.com/unum-cloud/usearch/raw/main/include/usearch/index.hpp
|
|
|
515
469
|
$ tinysemver --dry-run --verbose \
|
|
516
470
|
--major-verbs 'breaking,break,major' \
|
|
517
471
|
--minor-verbs 'feature,minor,add,new' \
|
|
518
|
-
--patch-verbs 'fix,patch,bug,improve,docs' \
|
|
472
|
+
--patch-verbs 'fix,patch,bug,improve,docs,make' \
|
|
519
473
|
--version-file 'example/VERSION' \
|
|
520
474
|
--changelog-file 'example/CHANGELOG.md' \
|
|
521
475
|
--update-version-in 'example/CITATION.cff' '^version: (\d+\.\d+\.\d+)' \
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+

|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
__TinySemVer__ is a minimalistic [Semantic Versioning](https://semver.org/) package for projects following [Conventional Commits](https://www.conventionalcommits.org/) in a single short Python file.
|
|
4
4
|
In plain English, if your commit messages look like `feat: add new feature` or `fix: bugfix`, this package will automate releasing new "GIT tags" based on the commit messages.
|
|
5
5
|
Here is how to integrate it into your project CI:
|
|
6
6
|
|
|
@@ -13,6 +13,9 @@ $ tinysemver --dry-run --verbose
|
|
|
13
13
|
|
|
14
14
|
The `--dry-run` flag will only print the next version without changing any files.
|
|
15
15
|
Great for pre-release CI pipelines.
|
|
16
|
+
|
|
17
|
+
## Usage Details for the Command Line Interface
|
|
18
|
+
|
|
16
19
|
If you need more control over the default specification, here are more options you can run against the files in this repository:
|
|
17
20
|
|
|
18
21
|
```sh
|
|
@@ -20,7 +23,7 @@ If you need more control over the default specification, here are more options y
|
|
|
20
23
|
$ tinysemver --verbose \
|
|
21
24
|
--major-verbs 'breaking,break,major' \
|
|
22
25
|
--minor-verbs 'feature,minor,add,new' \
|
|
23
|
-
--patch-verbs 'fix,patch,bug,improve,docs' \
|
|
26
|
+
--patch-verbs 'fix,patch,bug,improve,docs,make' \
|
|
24
27
|
--changelog-file 'CHANGELOG.md' \
|
|
25
28
|
--version-file 'VERSION' \
|
|
26
29
|
--update-version-in 'pyproject.toml' '^version = "(\d+\.\d+\.\d+)"' \
|
|
@@ -36,7 +39,7 @@ Here is an example of passing even more parameters for a project like `stringzil
|
|
|
36
39
|
$ tinysemver --verbose \
|
|
37
40
|
--major-verbs 'breaking,break,major' \
|
|
38
41
|
--minor-verbs 'feature,minor,add,new' \
|
|
39
|
-
--patch-verbs 'fix,patch,bug,improve,docs' \
|
|
42
|
+
--patch-verbs 'fix,patch,bug,improve,docs,make' \
|
|
40
43
|
--changelog-file 'CHANGELOG.md' \
|
|
41
44
|
--version-file 'VERSION' \
|
|
42
45
|
--update-version-in 'pyproject.toml' '^version = "(\d+\.\d+\.\d+)"' \
|
|
@@ -66,7 +69,7 @@ $ tinysemver --verbose \
|
|
|
66
69
|
> + version: 1.3.0 # Only in verbose mode
|
|
67
70
|
> Appending to changelog file: CHANGELOG.md
|
|
68
71
|
> = skipping 250 lines # Only in verbose mode
|
|
69
|
-
> +
|
|
72
|
+
> + adding 30 lines # Only in verbose mode
|
|
70
73
|
```
|
|
71
74
|
|
|
72
75
|
Alternatively, you can just ask for `--help`:
|
|
@@ -75,7 +78,7 @@ Alternatively, you can just ask for `--help`:
|
|
|
75
78
|
$ tinysemver --help
|
|
76
79
|
```
|
|
77
80
|
|
|
78
|
-
## GitHub CI Action
|
|
81
|
+
## Usage Details for the GitHub CI Action
|
|
79
82
|
|
|
80
83
|
TinySemVer can be easily integrated into your GitHub Actions CI pipeline.
|
|
81
84
|
Assuming the differences between YAML and shell notation, some arguments are passed in a different form, like `--update-version-in`.
|
|
@@ -102,7 +105,7 @@ jobs:
|
|
|
102
105
|
with:
|
|
103
106
|
major-verbs: 'breaking,break,major'
|
|
104
107
|
minor-verbs: 'feature,minor,add,new'
|
|
105
|
-
patch-verbs: 'fix,patch,bug,improve,docs'
|
|
108
|
+
patch-verbs: 'fix,patch,bug,improve,docs,make'
|
|
106
109
|
changelog-file: 'CHANGELOG.md'
|
|
107
110
|
version-file: 'VERSION'
|
|
108
111
|
update-version-in: 'pyproject.toml:version = "(.*)"' # Use colon instead of space
|
|
@@ -161,11 +164,11 @@ Also keep in mind:
|
|
|
161
164
|
|
|
162
165
|
For more information on CI configurations and pushing changes in GitHub Actions, see the [semantic-release GitHub Actions guide](https://github.com/semantic-release/semantic-release/blob/master/docs/recipes/ci-configurations/github-actions.md#pushing-packagejson-changes-to-a-master-branch).
|
|
163
166
|
|
|
164
|
-
## Why?
|
|
167
|
+
## Why Create Another SemVer Tool?
|
|
165
168
|
|
|
166
169
|
In the past I was using [semantic-release](https://github.com/semantic-release/semantic-release) for my 10+ projects.
|
|
167
170
|
At some point, a breaking change in the dependencies broke all my projects CI pipelines for a month, affecting dozens of tech companies using those libraries.
|
|
168
|
-
I felt miserable trying to trace the issue and reluctant to go through
|
|
171
|
+
I felt miserable trying to trace the issue and reluctant to go through __363K lines of low-quality JavaScript code__ to find the bug.
|
|
169
172
|
Yes, it's 363K lines of code:
|
|
170
173
|
|
|
171
174
|
```sh
|
|
@@ -180,26 +183,7 @@ Language files blank comment code
|
|
|
180
183
|
--------------------------------------------------------------------------------
|
|
181
184
|
JavaScript 4902 48080 81205 363424
|
|
182
185
|
TypeScript 732 7008 73034 79367
|
|
183
|
-
|
|
184
|
-
JSON 599 58 0 64808
|
|
185
|
-
HTML 86 1821 0 25365
|
|
186
|
-
Python 57 4985 9193 23704
|
|
187
|
-
CSS 97 1360 739 6346
|
|
188
|
-
YAML 73 79 51 1198
|
|
189
|
-
CoffeeScript 18 193 16 1122
|
|
190
|
-
EJS 1 67 0 521
|
|
191
|
-
Lua 22 95 29 434
|
|
192
|
-
Handlebars 11 30 0 188
|
|
193
|
-
C# 1 55 9 186
|
|
194
|
-
Bourne Shell 7 30 11 168
|
|
195
|
-
Bourne Again Shell 2 22 24 84
|
|
196
|
-
TOML 1 8 31 80
|
|
197
|
-
make 3 17 11 57
|
|
198
|
-
PowerShell 2 12 4 48
|
|
199
|
-
DOS Batch 5 9 0 42
|
|
200
|
-
Fish Shell 1 5 14 21
|
|
201
|
-
C++ 2 12 19 20
|
|
202
|
-
Nix 1 1 0 19
|
|
186
|
+
... ... ... ... ...
|
|
203
187
|
--------------------------------------------------------------------------------
|
|
204
188
|
SUM: 7256 90782 164390 634071
|
|
205
189
|
--------------------------------------------------------------------------------
|
|
@@ -209,20 +193,18 @@ Here is the `cloc` output for `tinysemver`:
|
|
|
209
193
|
|
|
210
194
|
```sh
|
|
211
195
|
$ tinysemver$ cloc .
|
|
212
|
-
|
|
213
|
-
|
|
196
|
+
17 text files.
|
|
197
|
+
13 unique files.
|
|
214
198
|
6 files ignored.
|
|
215
199
|
|
|
216
200
|
github.com/AlDanial/cloc v 1.96 T=0.01 s (660.7 files/s, 44267.6 lines/s)
|
|
217
201
|
-------------------------------------------------------------------------------
|
|
218
202
|
Language files blank comment code
|
|
219
203
|
-------------------------------------------------------------------------------
|
|
220
|
-
Python 1
|
|
221
|
-
|
|
222
|
-
TOML 1 6 2 33
|
|
223
|
-
Text 3 1 0 10
|
|
204
|
+
Python 1 79 93 493
|
|
205
|
+
... ... ... ... ...
|
|
224
206
|
-------------------------------------------------------------------------------
|
|
225
|
-
SUM:
|
|
207
|
+
SUM: 13 227 107 1124
|
|
226
208
|
-------------------------------------------------------------------------------
|
|
227
209
|
```
|
|
228
210
|
|
|
@@ -232,41 +214,13 @@ SUM: 6 65 29 308
|
|
|
232
214
|
- Pre-release versions, like `1.2.3-alpha.1`. Not needed for most projects.
|
|
233
215
|
- GenAI.
|
|
234
216
|
|
|
235
|
-
For reference, according to SemVer 2.0, all [following versions](https://regex101.com/r/Ly7O1x/3/) are valid:
|
|
236
|
-
|
|
237
|
-
```
|
|
238
|
-
1.1.2-prerelease+meta
|
|
239
|
-
1.1.2+meta
|
|
240
|
-
1.1.2+meta-valid
|
|
241
|
-
1.0.0-alpha
|
|
242
|
-
1.0.0-beta
|
|
243
|
-
1.0.0-alpha.beta.1
|
|
244
|
-
1.0.0-alpha.1
|
|
245
|
-
1.0.0-alpha0.valid
|
|
246
|
-
1.0.0-alpha.0valid
|
|
247
|
-
1.0.0-alpha-a.b-c-somethinglong+build.1-aef.1-its-okay
|
|
248
|
-
1.0.0-rc.1+build.1
|
|
249
|
-
2.0.0-rc.1+build.123
|
|
250
|
-
1.2.3-beta
|
|
251
|
-
10.2.3-DEV-SNAPSHOT
|
|
252
|
-
1.2.3-SNAPSHOT-123
|
|
253
|
-
2.0.0+build.1848
|
|
254
|
-
2.0.1-alpha.1227
|
|
255
|
-
1.0.0-alpha+beta
|
|
256
|
-
1.2.3----RC-SNAPSHOT.12.9.1--.12+788
|
|
257
|
-
1.2.3----R-S.12.9.1--.12+meta
|
|
258
|
-
1.2.3----RC-SNAPSHOT.12.9.1--.12
|
|
259
|
-
1.0.0+0.build.1-rc.10000aaa-kk-0.1
|
|
260
|
-
1.0.0-0A.is.legal
|
|
261
|
-
```
|
|
262
|
-
|
|
263
|
-
Probably very useful for 2-3 projects, I didn't need to support any of them yet.
|
|
217
|
+
> For reference, according to SemVer 2.0, all [following versions](https://regex101.com/r/Ly7O1x/3/) are valid: `1.1.2-prerelease+meta`, `1.1.2+meta`, `1.1.2+meta-valid`, `1.0.0-alpha`, `1.0.0-beta`, `1.0.0-alpha.beta.1`, `1.0.0-alpha.1`, `1.0.0-alpha0.valid`, `1.0.0-alpha.0valid`, `1.0.0-alpha-a.b-c-somethinglong+build.1-aef.1-its-okay`, `1.0.0-rc.1+build.1`, `2.0.0-rc.1+build.123`, `1.2.3-beta`, `10.2.3-DEV-SNAPSHOT`, `1.2.3-SNAPSHOT-123`, `2.0.0+build.1848`, `2.0.1-alpha.1227`, `1.0.0-alpha+beta`, `1.2.3----RC-SNAPSHOT.12.9.1--.12+788`, `1.2.3----R-S.12.9.1--.12+meta`, `1.2.3----RC-SNAPSHOT.12.9.1--.12`, `1.0.0+0.build.1-rc.10000aaa-kk-0.1`, `1.0.0-0A.is.legal`.
|
|
264
218
|
|
|
265
219
|
## Examples
|
|
266
220
|
|
|
267
221
|
Assembling RegEx queries can be hard.
|
|
268
222
|
Luckily, there aren't too many files to update in most projects.
|
|
269
|
-
Below is an example of a pipeline for the USearch project, that has bindings to 10 programming languages.
|
|
223
|
+
Below is an example of a pipeline for the [USearch](https://github.com/unum-cloud/usearch) project, that has bindings to 10 programming languages.
|
|
270
224
|
Feel free to add other sources and examples.
|
|
271
225
|
|
|
272
226
|
```sh
|
|
@@ -289,7 +243,7 @@ $ wget https://github.com/unum-cloud/usearch/raw/main/include/usearch/index.hpp
|
|
|
289
243
|
$ tinysemver --dry-run --verbose \
|
|
290
244
|
--major-verbs 'breaking,break,major' \
|
|
291
245
|
--minor-verbs 'feature,minor,add,new' \
|
|
292
|
-
--patch-verbs 'fix,patch,bug,improve,docs' \
|
|
246
|
+
--patch-verbs 'fix,patch,bug,improve,docs,make' \
|
|
293
247
|
--version-file 'example/VERSION' \
|
|
294
248
|
--changelog-file 'example/CHANGELOG.md' \
|
|
295
249
|
--update-version-in 'example/CITATION.cff' '^version: (\d+\.\d+\.\d+)' \
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "tinysemver"
|
|
7
|
-
version = "2.0.
|
|
7
|
+
version = "2.0.3"
|
|
8
8
|
description = "Tiny Semantic Versioning (SemVer) library, that doesn't depend on 300K lines of JavaScript"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = { file = "LICENSE" }
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: tinysemver
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.3
|
|
4
4
|
Summary: Tiny Semantic Versioning (SemVer) library, that doesn't depend on 300K lines of JavaScript
|
|
5
5
|
Author-email: Ash Vardanian <1983160+ashvardanian@users.noreply.github.com>, Guillaume de Rouville <31691250+grouville@users.noreply.github.com>
|
|
6
6
|
License: Apache License
|
|
@@ -224,9 +224,9 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
224
224
|
Description-Content-Type: text/markdown
|
|
225
225
|
License-File: LICENSE
|
|
226
226
|
|
|
227
|
-
|
|
227
|
+

|
|
228
228
|
|
|
229
|
-
|
|
229
|
+
__TinySemVer__ is a minimalistic [Semantic Versioning](https://semver.org/) package for projects following [Conventional Commits](https://www.conventionalcommits.org/) in a single short Python file.
|
|
230
230
|
In plain English, if your commit messages look like `feat: add new feature` or `fix: bugfix`, this package will automate releasing new "GIT tags" based on the commit messages.
|
|
231
231
|
Here is how to integrate it into your project CI:
|
|
232
232
|
|
|
@@ -239,6 +239,9 @@ $ tinysemver --dry-run --verbose
|
|
|
239
239
|
|
|
240
240
|
The `--dry-run` flag will only print the next version without changing any files.
|
|
241
241
|
Great for pre-release CI pipelines.
|
|
242
|
+
|
|
243
|
+
## Usage Details for the Command Line Interface
|
|
244
|
+
|
|
242
245
|
If you need more control over the default specification, here are more options you can run against the files in this repository:
|
|
243
246
|
|
|
244
247
|
```sh
|
|
@@ -246,7 +249,7 @@ If you need more control over the default specification, here are more options y
|
|
|
246
249
|
$ tinysemver --verbose \
|
|
247
250
|
--major-verbs 'breaking,break,major' \
|
|
248
251
|
--minor-verbs 'feature,minor,add,new' \
|
|
249
|
-
--patch-verbs 'fix,patch,bug,improve,docs' \
|
|
252
|
+
--patch-verbs 'fix,patch,bug,improve,docs,make' \
|
|
250
253
|
--changelog-file 'CHANGELOG.md' \
|
|
251
254
|
--version-file 'VERSION' \
|
|
252
255
|
--update-version-in 'pyproject.toml' '^version = "(\d+\.\d+\.\d+)"' \
|
|
@@ -262,7 +265,7 @@ Here is an example of passing even more parameters for a project like `stringzil
|
|
|
262
265
|
$ tinysemver --verbose \
|
|
263
266
|
--major-verbs 'breaking,break,major' \
|
|
264
267
|
--minor-verbs 'feature,minor,add,new' \
|
|
265
|
-
--patch-verbs 'fix,patch,bug,improve,docs' \
|
|
268
|
+
--patch-verbs 'fix,patch,bug,improve,docs,make' \
|
|
266
269
|
--changelog-file 'CHANGELOG.md' \
|
|
267
270
|
--version-file 'VERSION' \
|
|
268
271
|
--update-version-in 'pyproject.toml' '^version = "(\d+\.\d+\.\d+)"' \
|
|
@@ -292,7 +295,7 @@ $ tinysemver --verbose \
|
|
|
292
295
|
> + version: 1.3.0 # Only in verbose mode
|
|
293
296
|
> Appending to changelog file: CHANGELOG.md
|
|
294
297
|
> = skipping 250 lines # Only in verbose mode
|
|
295
|
-
> +
|
|
298
|
+
> + adding 30 lines # Only in verbose mode
|
|
296
299
|
```
|
|
297
300
|
|
|
298
301
|
Alternatively, you can just ask for `--help`:
|
|
@@ -301,7 +304,7 @@ Alternatively, you can just ask for `--help`:
|
|
|
301
304
|
$ tinysemver --help
|
|
302
305
|
```
|
|
303
306
|
|
|
304
|
-
## GitHub CI Action
|
|
307
|
+
## Usage Details for the GitHub CI Action
|
|
305
308
|
|
|
306
309
|
TinySemVer can be easily integrated into your GitHub Actions CI pipeline.
|
|
307
310
|
Assuming the differences between YAML and shell notation, some arguments are passed in a different form, like `--update-version-in`.
|
|
@@ -328,7 +331,7 @@ jobs:
|
|
|
328
331
|
with:
|
|
329
332
|
major-verbs: 'breaking,break,major'
|
|
330
333
|
minor-verbs: 'feature,minor,add,new'
|
|
331
|
-
patch-verbs: 'fix,patch,bug,improve,docs'
|
|
334
|
+
patch-verbs: 'fix,patch,bug,improve,docs,make'
|
|
332
335
|
changelog-file: 'CHANGELOG.md'
|
|
333
336
|
version-file: 'VERSION'
|
|
334
337
|
update-version-in: 'pyproject.toml:version = "(.*)"' # Use colon instead of space
|
|
@@ -387,11 +390,11 @@ Also keep in mind:
|
|
|
387
390
|
|
|
388
391
|
For more information on CI configurations and pushing changes in GitHub Actions, see the [semantic-release GitHub Actions guide](https://github.com/semantic-release/semantic-release/blob/master/docs/recipes/ci-configurations/github-actions.md#pushing-packagejson-changes-to-a-master-branch).
|
|
389
392
|
|
|
390
|
-
## Why?
|
|
393
|
+
## Why Create Another SemVer Tool?
|
|
391
394
|
|
|
392
395
|
In the past I was using [semantic-release](https://github.com/semantic-release/semantic-release) for my 10+ projects.
|
|
393
396
|
At some point, a breaking change in the dependencies broke all my projects CI pipelines for a month, affecting dozens of tech companies using those libraries.
|
|
394
|
-
I felt miserable trying to trace the issue and reluctant to go through
|
|
397
|
+
I felt miserable trying to trace the issue and reluctant to go through __363K lines of low-quality JavaScript code__ to find the bug.
|
|
395
398
|
Yes, it's 363K lines of code:
|
|
396
399
|
|
|
397
400
|
```sh
|
|
@@ -406,26 +409,7 @@ Language files blank comment code
|
|
|
406
409
|
--------------------------------------------------------------------------------
|
|
407
410
|
JavaScript 4902 48080 81205 363424
|
|
408
411
|
TypeScript 732 7008 73034 79367
|
|
409
|
-
|
|
410
|
-
JSON 599 58 0 64808
|
|
411
|
-
HTML 86 1821 0 25365
|
|
412
|
-
Python 57 4985 9193 23704
|
|
413
|
-
CSS 97 1360 739 6346
|
|
414
|
-
YAML 73 79 51 1198
|
|
415
|
-
CoffeeScript 18 193 16 1122
|
|
416
|
-
EJS 1 67 0 521
|
|
417
|
-
Lua 22 95 29 434
|
|
418
|
-
Handlebars 11 30 0 188
|
|
419
|
-
C# 1 55 9 186
|
|
420
|
-
Bourne Shell 7 30 11 168
|
|
421
|
-
Bourne Again Shell 2 22 24 84
|
|
422
|
-
TOML 1 8 31 80
|
|
423
|
-
make 3 17 11 57
|
|
424
|
-
PowerShell 2 12 4 48
|
|
425
|
-
DOS Batch 5 9 0 42
|
|
426
|
-
Fish Shell 1 5 14 21
|
|
427
|
-
C++ 2 12 19 20
|
|
428
|
-
Nix 1 1 0 19
|
|
412
|
+
... ... ... ... ...
|
|
429
413
|
--------------------------------------------------------------------------------
|
|
430
414
|
SUM: 7256 90782 164390 634071
|
|
431
415
|
--------------------------------------------------------------------------------
|
|
@@ -435,20 +419,18 @@ Here is the `cloc` output for `tinysemver`:
|
|
|
435
419
|
|
|
436
420
|
```sh
|
|
437
421
|
$ tinysemver$ cloc .
|
|
438
|
-
|
|
439
|
-
|
|
422
|
+
17 text files.
|
|
423
|
+
13 unique files.
|
|
440
424
|
6 files ignored.
|
|
441
425
|
|
|
442
426
|
github.com/AlDanial/cloc v 1.96 T=0.01 s (660.7 files/s, 44267.6 lines/s)
|
|
443
427
|
-------------------------------------------------------------------------------
|
|
444
428
|
Language files blank comment code
|
|
445
429
|
-------------------------------------------------------------------------------
|
|
446
|
-
Python 1
|
|
447
|
-
|
|
448
|
-
TOML 1 6 2 33
|
|
449
|
-
Text 3 1 0 10
|
|
430
|
+
Python 1 79 93 493
|
|
431
|
+
... ... ... ... ...
|
|
450
432
|
-------------------------------------------------------------------------------
|
|
451
|
-
SUM:
|
|
433
|
+
SUM: 13 227 107 1124
|
|
452
434
|
-------------------------------------------------------------------------------
|
|
453
435
|
```
|
|
454
436
|
|
|
@@ -458,41 +440,13 @@ SUM: 6 65 29 308
|
|
|
458
440
|
- Pre-release versions, like `1.2.3-alpha.1`. Not needed for most projects.
|
|
459
441
|
- GenAI.
|
|
460
442
|
|
|
461
|
-
For reference, according to SemVer 2.0, all [following versions](https://regex101.com/r/Ly7O1x/3/) are valid:
|
|
462
|
-
|
|
463
|
-
```
|
|
464
|
-
1.1.2-prerelease+meta
|
|
465
|
-
1.1.2+meta
|
|
466
|
-
1.1.2+meta-valid
|
|
467
|
-
1.0.0-alpha
|
|
468
|
-
1.0.0-beta
|
|
469
|
-
1.0.0-alpha.beta.1
|
|
470
|
-
1.0.0-alpha.1
|
|
471
|
-
1.0.0-alpha0.valid
|
|
472
|
-
1.0.0-alpha.0valid
|
|
473
|
-
1.0.0-alpha-a.b-c-somethinglong+build.1-aef.1-its-okay
|
|
474
|
-
1.0.0-rc.1+build.1
|
|
475
|
-
2.0.0-rc.1+build.123
|
|
476
|
-
1.2.3-beta
|
|
477
|
-
10.2.3-DEV-SNAPSHOT
|
|
478
|
-
1.2.3-SNAPSHOT-123
|
|
479
|
-
2.0.0+build.1848
|
|
480
|
-
2.0.1-alpha.1227
|
|
481
|
-
1.0.0-alpha+beta
|
|
482
|
-
1.2.3----RC-SNAPSHOT.12.9.1--.12+788
|
|
483
|
-
1.2.3----R-S.12.9.1--.12+meta
|
|
484
|
-
1.2.3----RC-SNAPSHOT.12.9.1--.12
|
|
485
|
-
1.0.0+0.build.1-rc.10000aaa-kk-0.1
|
|
486
|
-
1.0.0-0A.is.legal
|
|
487
|
-
```
|
|
488
|
-
|
|
489
|
-
Probably very useful for 2-3 projects, I didn't need to support any of them yet.
|
|
443
|
+
> For reference, according to SemVer 2.0, all [following versions](https://regex101.com/r/Ly7O1x/3/) are valid: `1.1.2-prerelease+meta`, `1.1.2+meta`, `1.1.2+meta-valid`, `1.0.0-alpha`, `1.0.0-beta`, `1.0.0-alpha.beta.1`, `1.0.0-alpha.1`, `1.0.0-alpha0.valid`, `1.0.0-alpha.0valid`, `1.0.0-alpha-a.b-c-somethinglong+build.1-aef.1-its-okay`, `1.0.0-rc.1+build.1`, `2.0.0-rc.1+build.123`, `1.2.3-beta`, `10.2.3-DEV-SNAPSHOT`, `1.2.3-SNAPSHOT-123`, `2.0.0+build.1848`, `2.0.1-alpha.1227`, `1.0.0-alpha+beta`, `1.2.3----RC-SNAPSHOT.12.9.1--.12+788`, `1.2.3----R-S.12.9.1--.12+meta`, `1.2.3----RC-SNAPSHOT.12.9.1--.12`, `1.0.0+0.build.1-rc.10000aaa-kk-0.1`, `1.0.0-0A.is.legal`.
|
|
490
444
|
|
|
491
445
|
## Examples
|
|
492
446
|
|
|
493
447
|
Assembling RegEx queries can be hard.
|
|
494
448
|
Luckily, there aren't too many files to update in most projects.
|
|
495
|
-
Below is an example of a pipeline for the USearch project, that has bindings to 10 programming languages.
|
|
449
|
+
Below is an example of a pipeline for the [USearch](https://github.com/unum-cloud/usearch) project, that has bindings to 10 programming languages.
|
|
496
450
|
Feel free to add other sources and examples.
|
|
497
451
|
|
|
498
452
|
```sh
|
|
@@ -515,7 +469,7 @@ $ wget https://github.com/unum-cloud/usearch/raw/main/include/usearch/index.hpp
|
|
|
515
469
|
$ tinysemver --dry-run --verbose \
|
|
516
470
|
--major-verbs 'breaking,break,major' \
|
|
517
471
|
--minor-verbs 'feature,minor,add,new' \
|
|
518
|
-
--patch-verbs 'fix,patch,bug,improve,docs' \
|
|
472
|
+
--patch-verbs 'fix,patch,bug,improve,docs,make' \
|
|
519
473
|
--version-file 'example/VERSION' \
|
|
520
474
|
--changelog-file 'example/CHANGELOG.md' \
|
|
521
475
|
--update-version-in 'example/CITATION.cff' '^version: (\d+\.\d+\.\d+)' \
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|