gsppy 3.3.0__tar.gz → 3.5.0__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.
@@ -0,0 +1,551 @@
1
+ # CHANGELOG
2
+
3
+
4
+ ## v3.5.0 (2026-01-26)
5
+
6
+ ### Bug Fixes
7
+
8
+ - Address code review feedback
9
+ ([`1e7cf86`](https://github.com/jacksonpradolima/gsp-py/commit/1e7cf8681b3cd0432e6d1608187b7d518c27fcc0))
10
+
11
+ - Remove root logger modifications to prevent global side effects - Fix redundant logger
12
+ configuration in CLI - Remove redundant subprocess imports in tests - Revert unrelated formatting
13
+ changes in temporal constraints tests - Replace future dates with YYYY-MM-DD placeholders in
14
+ documentation - Add explanation for not using Loguru in logging documentation
15
+
16
+ All changes address feedback from code review while maintaining backward compatibility and test
17
+ coverage.
18
+
19
+ Co-authored-by: jacksonpradolima <7774063+jacksonpradolima@users.noreply.github.com>
20
+
21
+ - Specify logger name in caplog for verbose tests
22
+ ([`cb477b0`](https://github.com/jacksonpradolima/gsp-py/commit/cb477b0f040ce38b60b6e3d485536e79d6d3ea19))
23
+
24
+ Update test_verbose_initialization, test_non_verbose_initialization, and
25
+ test_verbose_override_in_search to use caplog.at_level(logging.DEBUG, logger='gsppy.gsp') instead
26
+ of just caplog.at_level(logging.DEBUG). This ensures tests only capture logs from the gsppy.gsp
27
+ logger, preventing interference from other loggers and making tests more reliable.
28
+
29
+ Co-authored-by: jacksonpradolima <7774063+jacksonpradolima@users.noreply.github.com>
30
+
31
+ - Update test_setup_logging_verbose to match refactored logging
32
+ ([`ab78c33`](https://github.com/jacksonpradolima/gsp-py/commit/ab78c33ee1c09964773b1af835c9bb133a778824))
33
+
34
+ Update test to verify logging.basicConfig is called with DEBUG level instead of checking the removed
35
+ explicit logger.setLevel call. This aligns with the refactored logging configuration that removed
36
+ redundant logger level setting.
37
+
38
+ Co-authored-by: jacksonpradolima <7774063+jacksonpradolima@users.noreply.github.com>
39
+
40
+ ### Chores
41
+
42
+ - Update uv.lock for version 3.4.3
43
+ ([`6a78997`](https://github.com/jacksonpradolima/gsp-py/commit/6a789979fd6a7422c063dbe5b2ff46cd0d2141c6))
44
+
45
+ ### Features
46
+
47
+ - Add explicit verbosity control and structured logging
48
+ ([`44f56d9`](https://github.com/jacksonpradolima/gsp-py/commit/44f56d947978ddad1b7f2a2cca00f59def0ce4e4))
49
+
50
+ feat: add explicit verbosity control and structured logging
51
+
52
+ ### Refactoring
53
+
54
+ - Gsp initialization in tests to handle constraints explicitly and improve verbosity handling
55
+ ([`ced0243`](https://github.com/jacksonpradolima/gsp-py/commit/ced0243e58ff444988e37f5ae472f58d4478498e))
56
+
57
+ - Gsp initialization in tests to handle constraints explicitly and improve verbosity handling
58
+ ([`479f305`](https://github.com/jacksonpradolima/gsp-py/commit/479f305aae02217ce7b75fede5e0fb249fd1b477))
59
+
60
+
61
+ ## v3.4.3 (2026-01-25)
62
+
63
+ ### Bug Fixes
64
+
65
+ - **publish**: Update PyPI publish action version
66
+ ([`0f23d45`](https://github.com/jacksonpradolima/gsp-py/commit/0f23d45c8b23d8f2a811934349cb7e020f2e4695))
67
+
68
+ Signed-off-by: Jackson Antonio do Prado Lima <jacksonpradolima@users.noreply.github.com>
69
+
70
+
71
+ ## v3.4.2 (2026-01-25)
72
+
73
+ ### Bug Fixes
74
+
75
+ - Update PyPI publish action version
76
+ ([`eeebf53`](https://github.com/jacksonpradolima/gsp-py/commit/eeebf53fdfd319292d739946f9725dec37a1b6ed))
77
+
78
+ Signed-off-by: Jackson Antonio do Prado Lima <jacksonpradolima@users.noreply.github.com>
79
+
80
+ ### Chores
81
+
82
+ - Update uv.lock for version 3.4.1
83
+ ([`aac8fc1`](https://github.com/jacksonpradolima/gsp-py/commit/aac8fc118aca8ed2c58f4bf265d2fa45d9fb1f41))
84
+
85
+
86
+ ## v3.4.1 (2026-01-25)
87
+
88
+ ### Bug Fixes
89
+
90
+ - Update checkout action to use specific tag reference
91
+ ([`3a33cb6`](https://github.com/jacksonpradolima/gsp-py/commit/3a33cb6243ae7e9dc46fc4f883662b3c7371ea97))
92
+
93
+ Added ref input to checkout action for specific tag reference.
94
+
95
+ Signed-off-by: Jackson Antonio do Prado Lima <jacksonpradolima@users.noreply.github.com>
96
+
97
+
98
+ ## v3.4.0 (2026-01-25)
99
+
100
+ ### Bug Fixes
101
+
102
+ - Configure semantic release workflow for branch protection
103
+ ([`a01912c`](https://github.com/jacksonpradolima/gsp-py/commit/a01912c9ad63ab0d28eeeb6f21278e76e45d0456))
104
+
105
+ Co-authored-by: jacksonpradolima <7774063+jacksonpradolima@users.noreply.github.com>
106
+
107
+ - Correct GPG secret condition check in workflow
108
+ ([`5f949fe`](https://github.com/jacksonpradolima/gsp-py/commit/5f949fe28bc791b7ac7aa360f7394054f545cfe2))
109
+
110
+ Co-authored-by: jacksonpradolima <7774063+jacksonpradolima@users.noreply.github.com>
111
+
112
+ - Prevent duplicate asset uploads between workflows
113
+ ([`eb80fc5`](https://github.com/jacksonpradolima/gsp-py/commit/eb80fc518e8c58a84adbac594eb3309fcd98d6d6))
114
+
115
+ - Disable semantic-release asset uploads (upload_to_vcs_release = false) - Remove
116
+ [tool.semantic_release.publish] section from pyproject.toml - Update release.yml to only run
117
+ semantic-release version (no publish step) - Update documentation to clarify workflow separation:
118
+ * release.yml: Creates releases with tags (no assets) * publish.yml: Builds and uploads assets to
119
+ releases - This prevents duplicate asset upload failures
120
+
121
+ Addresses feedback from code review about duplicate uploads.
122
+
123
+ Co-authored-by: jacksonpradolima <7774063+jacksonpradolima@users.noreply.github.com>
124
+
125
+ - Remove duplicate keywords from blocked/on-hold detection
126
+ ([`1d1dfa9`](https://github.com/jacksonpradolima/gsp-py/commit/1d1dfa996bdb21a9723976038f3cf44e04c21c9d))
127
+
128
+ Co-authored-by: jacksonpradolima <7774063+jacksonpradolima@users.noreply.github.com>
129
+
130
+ - Revert to original workflow and update docs with branch protection config
131
+ ([`64e092f`](https://github.com/jacksonpradolima/gsp-py/commit/64e092f73bc60c39e5bd87c083233076e91cb8aa))
132
+
133
+ Co-authored-by: jacksonpradolima <7774063+jacksonpradolima@users.noreply.github.com>
134
+
135
+ - Update action SHAs for pr-size-labeler and merge-conflict labeler
136
+ ([`72df80a`](https://github.com/jacksonpradolima/gsp-py/commit/72df80a1480d9f5231d06d542bfdd775017f26a3))
137
+
138
+ Co-authored-by: jacksonpradolima <7774063+jacksonpradolima@users.noreply.github.com>
139
+
140
+ - Update labeler action SHA, permissions, and improve keyword/review detection
141
+ ([`c684c19`](https://github.com/jacksonpradolima/gsp-py/commit/c684c1998facd23243835e34f8b7e57f4d6bb3ec))
142
+
143
+ Co-authored-by: jacksonpradolima <7774063+jacksonpradolima@users.noreply.github.com>
144
+
145
+ - Update semantic release branch config to master
146
+ ([`7558959`](https://github.com/jacksonpradolima/gsp-py/commit/7558959d8aa40410003293e298e0da78b96e9e9c))
147
+
148
+ Co-authored-by: jacksonpradolima <7774063+jacksonpradolima@users.noreply.github.com>
149
+
150
+ - Update semantic-release config to fix deprecation warning
151
+ ([`e9a8d82`](https://github.com/jacksonpradolima/gsp-py/commit/e9a8d8242b8c94a8aae69033c0bda610546faf1c))
152
+
153
+ Move changelog_file configuration to the new location as required by semantic-release v10
154
+ compatibility.
155
+
156
+ Co-authored-by: jacksonpradolima <7774063+jacksonpradolima@users.noreply.github.com>
157
+
158
+ - Use full commit SHA for action-semantic-pull-request
159
+ ([`6c8964f`](https://github.com/jacksonpradolima/gsp-py/commit/6c8964f8748ed40871cc0ee31b581d142b2107eb))
160
+
161
+ Update amannn/action-semantic-pull-request from tag reference v5.5.4 (which doesn't exist) to v6.1.1
162
+ with full commit SHA hash (48f256284bd46cdaab1048c3721360e808335d50) for better security and
163
+ consistency with other workflows.
164
+
165
+ Co-authored-by: jacksonpradolima <7774063+jacksonpradolima@users.noreply.github.com>
166
+
167
+ - Use proper expression syntax for GPG secret check
168
+ ([`81e1fe9`](https://github.com/jacksonpradolima/gsp-py/commit/81e1fe9f0da9761da653b1409dec1478cc896a31))
169
+
170
+ Co-authored-by: jacksonpradolima <7774063+jacksonpradolima@users.noreply.github.com>
171
+
172
+ ### Code Style
173
+
174
+ - Remove trailing whitespace from workflow file
175
+ ([`4a7a86d`](https://github.com/jacksonpradolima/gsp-py/commit/4a7a86db4adc375218d1ea050278e853ed19cbf9))
176
+
177
+ Co-authored-by: jacksonpradolima <7774063+jacksonpradolima@users.noreply.github.com>
178
+
179
+ ### Documentation
180
+
181
+ - Add comprehensive implementation summary
182
+ ([`f318343`](https://github.com/jacksonpradolima/gsp-py/commit/f3183432cedbf22a84cbcd9c60971f0d31ef7fbe))
183
+
184
+ Add detailed documentation of the automated release management implementation, including: - Overview
185
+ of all components - How the system works - Testing instructions - Migration notes - Examples and
186
+ best practices
187
+
188
+ Co-authored-by: jacksonpradolima <7774063+jacksonpradolima@users.noreply.github.com>
189
+
190
+ - Fix secret name and permissions in RELEASE_MANAGEMENT.md
191
+ ([`a633221`](https://github.com/jacksonpradolima/gsp-py/commit/a633221f9c13442fffeb9ce52441706491493771))
192
+
193
+ Co-authored-by: jacksonpradolima <7774063+jacksonpradolima@users.noreply.github.com>
194
+
195
+ ### Features
196
+
197
+ - Add automated release management with semantic-release
198
+ ([`a5b3a05`](https://github.com/jacksonpradolima/gsp-py/commit/a5b3a059b4bf51cef6d431b73d39f8ef499eb7e6))
199
+
200
+ - Add Python Semantic Release configuration in pyproject.toml - Create automated release workflow
201
+ (.github/workflows/release.yml) - Add conventional commit validation to pre-commit hooks - Add
202
+ comprehensive Release Management Guide (docs/RELEASE_MANAGEMENT.md) - Update CONTRIBUTING.md with
203
+ conventional commit requirements - Update README.md with release management section
204
+
205
+ This enables automatic version bumps, changelog updates, Git tags, and GitHub releases based on
206
+ conventional commits.
207
+
208
+ Co-authored-by: jacksonpradolima <7774063+jacksonpradolima@users.noreply.github.com>
209
+
210
+ - Add comprehensive automated PR labeling workflow
211
+ ([`eed5910`](https://github.com/jacksonpradolima/gsp-py/commit/eed59101544013199e102e47a60635569b6315dd))
212
+
213
+ Co-authored-by: jacksonpradolima <7774063+jacksonpradolima@users.noreply.github.com>
214
+
215
+ - Use ORG_RELEASE_TOKEN with fallback to GITHUB_TOKEN
216
+ ([`911defc`](https://github.com/jacksonpradolima/gsp-py/commit/911defce1c276f51727abbc514e8fab1e0ac6928))
217
+
218
+ Co-authored-by: jacksonpradolima <7774063+jacksonpradolima@users.noreply.github.com>
219
+
220
+ ### Performance Improvements
221
+
222
+ - Remove redundant toLowerCase() calls in keyword matching
223
+ ([`d4ad61d`](https://github.com/jacksonpradolima/gsp-py/commit/d4ad61d36e7f411b1a798c201fe6b651d9e6d413))
224
+
225
+ Co-authored-by: jacksonpradolima <7774063+jacksonpradolima@users.noreply.github.com>
226
+
227
+ ### Refactoring
228
+
229
+ - Add pagination for comments and improve code clarity
230
+ ([`2c2b10b`](https://github.com/jacksonpradolima/gsp-py/commit/2c2b10b49860b5d4de244c683b6745d998bbf0cd))
231
+
232
+ Co-authored-by: jacksonpradolima <7774063+jacksonpradolima@users.noreply.github.com>
233
+
234
+ - Improve test script security and readability
235
+ ([`a03427c`](https://github.com/jacksonpradolima/gsp-py/commit/a03427c56572d3edd0e93270dcdc524e3b8f86f6))
236
+
237
+ - Replace shell=True with list-based subprocess calls for better security - Use regex for version
238
+ parsing instead of shell commands - Improve code readability by using explicit newline characters
239
+
240
+ Addresses code review feedback.
241
+
242
+ Co-authored-by: jacksonpradolima <7774063+jacksonpradolima@users.noreply.github.com>
243
+
244
+ - Optimize on-hold keyword detection to avoid redundancy
245
+ ([`da6b5ac`](https://github.com/jacksonpradolima/gsp-py/commit/da6b5accd24edf198c8752579a4aeb8b740a45b9))
246
+
247
+ Co-authored-by: jacksonpradolima <7774063+jacksonpradolima@users.noreply.github.com>
248
+
249
+ - Remove unnecessary files and clarify release triggers
250
+ ([`ac69207`](https://github.com/jacksonpradolima/gsp-py/commit/ac69207829c207df16e2198b14502e418bf442f0))
251
+
252
+ - Remove test_release_config.py (validation script not needed as proper test) - Remove
253
+ IMPLEMENTATION_SUMMARY.md (redundant with docs/RELEASE_MANAGEMENT.md) - Update README to clearly
254
+ specify which commit types trigger releases - Clarify that docs, refactor, style, test, build, ci,
255
+ chore do NOT trigger releases
256
+
257
+ Co-authored-by: jacksonpradolima <7774063+jacksonpradolima@users.noreply.github.com>
258
+
259
+ - Scope permissions to job level and remove documentation file
260
+ ([`2d69faa`](https://github.com/jacksonpradolima/gsp-py/commit/2d69faa26dfdcf84b7e991532c399b35ffead0ad))
261
+
262
+ Co-authored-by: jacksonpradolima <7774063+jacksonpradolima@users.noreply.github.com>
263
+
264
+ ### Testing
265
+
266
+ - Add release configuration validation script and PR title check
267
+ ([`b33335c`](https://github.com/jacksonpradolima/gsp-py/commit/b33335c522731dd02921605b24a2ba7194fcbffa))
268
+
269
+ - Add test script to validate semantic-release configuration - Add GitHub Actions workflow to
270
+ validate PR titles follow conventional commits - Ensures all PRs have properly formatted titles
271
+ for automated releases
272
+
273
+ Co-authored-by: jacksonpradolima <7774063+jacksonpradolima@users.noreply.github.com>
274
+
275
+
276
+ ## v3.3.1 (2026-01-18)
277
+
278
+ ### Continuous Integration
279
+
280
+ - Add pip ecosystem back to Dependabot alongside uv for complete dependency updates
281
+ ([`76e9b42`](https://github.com/jacksonpradolima/gsp-py/commit/76e9b429e1879cdc3544ae1fda216d9c2021f041))
282
+
283
+ - Configure Dependabot uv ecosystem and optimize lock check to run on Python 3.12 only
284
+ ([`e2e31d1`](https://github.com/jacksonpradolima/gsp-py/commit/e2e31d1a1b8c7b9b37d41dd1c4cfedcaf8783566))
285
+
286
+
287
+ ## v3.3.0 (2026-01-01)
288
+
289
+ ### Bug Fixes
290
+
291
+ - Add explicit contents:read permission to build job
292
+ ([`7e30362`](https://github.com/jacksonpradolima/gsp-py/commit/7e303623b4f4279072eb6f98c84c02a4c89b43e5))
293
+
294
+ Add explicit permissions to the build job for clarity and security best practices. The build job
295
+ needs contents:read to check out the repository.
296
+
297
+ Co-authored-by: jacksonpradolima <7774063+jacksonpradolima@users.noreply.github.com>
298
+
299
+ - Make file pattern explicit and add error handling in hash generation
300
+ ([`23cd1a3`](https://github.com/jacksonpradolima/gsp-py/commit/23cd1a3e4f92d8348ce6930079e7200f5ebcedbe))
301
+
302
+ - Use find with explicit patterns (*.whl, *.tar.gz) instead of wildcard - Add check to ensure Python
303
+ package artifacts exist before hashing - Exit with error if no artifacts found in dist directory -
304
+ Sort files for consistent ordering
305
+
306
+ Co-authored-by: jacksonpradolima <7774063+jacksonpradolima@users.noreply.github.com>
307
+
308
+ - Remove ./ prefix from filenames in hash output
309
+ ([`e604e2c`](https://github.com/jacksonpradolima/gsp-py/commit/e604e2c9c75bf55d74ec3c25f6e6845bd4815f65))
310
+
311
+ Use sed to strip the ./ prefix from find command output to ensure clean filenames in sha256sum
312
+ output, matching the format expected by SLSA provenance.
313
+
314
+ Co-authored-by: jacksonpradolima <7774063+jacksonpradolima@users.noreply.github.com>
315
+
316
+ - Replace build-command with base64-subjects in SLSA provenance workflow
317
+ ([`03255b3`](https://github.com/jacksonpradolima/gsp-py/commit/03255b32f8de775dec90f746ae7cdb02f13a85fd))
318
+
319
+ - Restructure workflow to have separate build and provenance jobs - Build job creates Python
320
+ packages and generates SHA256 hashes - Provenance job uses base64-subjects input with generated
321
+ hashes - Remove invalid build-command parameter that doesn't exist in
322
+ generator_generic_slsa3.yml@v1.10.0
323
+
324
+ Co-authored-by: jacksonpradolima <7774063+jacksonpradolima@users.noreply.github.com>
325
+
326
+ - Update SLSA generator to v2.1.0 to fix deprecated actions
327
+ ([`56b04b6`](https://github.com/jacksonpradolima/gsp-py/commit/56b04b65e560e26c81272e457d00ce851ff25199))
328
+
329
+ Update slsa-framework/slsa-github-generator from v1.10.0 to v2.1.0 to resolve the issue with
330
+ deprecated actions/upload-artifact@v3. The v2.1.0 version uses the latest actions and is
331
+ recommended by the SLSA framework documentation.
332
+
333
+ Co-authored-by: jacksonpradolima <7774063+jacksonpradolima@users.noreply.github.com>
334
+
335
+ ### Refactoring
336
+
337
+ - Use -printf '%f\n' for cleaner filename extraction
338
+ ([`d02c4be`](https://github.com/jacksonpradolima/gsp-py/commit/d02c4bebea18ab3b710a175f7bac2398f42f9798))
339
+
340
+ Replace sed-based ./ prefix removal with find's -printf option for more robust and direct filename
341
+ extraction without path prefixes.
342
+
343
+ Co-authored-by: jacksonpradolima <7774063+jacksonpradolima@users.noreply.github.com>
344
+
345
+
346
+ ## v3.2.8 (2026-01-01)
347
+
348
+ ### Chores
349
+
350
+ - Updatte uv.lock
351
+ ([`4c03dd0`](https://github.com/jacksonpradolima/gsp-py/commit/4c03dd06e8519e618fef28c9fc2a7f2bfe688f9e))
352
+
353
+
354
+ ## v3.2.7 (2026-01-01)
355
+
356
+
357
+ ## v3.2.6 (2026-01-01)
358
+
359
+
360
+ ## v3.2.5 (2026-01-01)
361
+
362
+
363
+ ## v3.2.4 (2026-01-01)
364
+
365
+
366
+ ## v3.2.2 (2026-01-01)
367
+
368
+
369
+ ## v3.2.1 (2026-01-01)
370
+
371
+
372
+ ## v3.2.0 (2026-01-01)
373
+
374
+ ### Bug Fixes
375
+
376
+ - Correct syntax errors in benchmarks.yml workflow
377
+ ([`a30022d`](https://github.com/jacksonpradolima/gsp-py/commit/a30022d84c6bd8b793a9a315be297ebad1bebac1))
378
+
379
+ Co-authored-by: jacksonpradolima <7774063+jacksonpradolima@users.noreply.github.com>
380
+
381
+
382
+ ## v3.1.1 (2025-12-21)
383
+
384
+
385
+ ## v3.0.1 (2025-09-16)
386
+
387
+
388
+ ## v3.0.0 (2025-09-14)
389
+
390
+ ### Build System
391
+
392
+ - Migrate to uv, require Python 3.10+, add pre-commit/Makefile
393
+ ([`16a2549`](https://github.com/jacksonpradolima/gsp-py/commit/16a2549d68ef4777ebb1ddf59817cd4b9da5ef98))
394
+
395
+ Replace Rye with uv for dependency management and execution to speed installs and simplify tooling
396
+ across CI and local dev Update GitHub Actions to install/use uv and run ruff/pyright/pytest via
397
+ uv; set Python 3.13 in CI and streamline virtualenv creation Raise minimum supported Python to
398
+ 3.10; update pyproject requires-python, classifiers, linter/type checker targets, and README
399
+ badges/docs Add pre-commit configuration (ruff + hygiene hooks) and a Makefile with common tasks
400
+ (setup, install, test, lint, format, typecheck, tox, coverage, pre-commit) Remove Rye-specific
401
+ config and lockfiles; adjust dev dependency pins (e.g., pytest-cov 5.x, pylint 3.2.x) for
402
+ compatibility with the new toolchain Apply minor code style and typing cleanups
403
+ (quotes/formatting, type hints) and align tests; no functional behavior changes
404
+
405
+ BREAKING CHANGE: Drop support for Python 3.8 and 3.9
406
+
407
+ ### Documentation
408
+
409
+ - Add committer prompt for conventional commit messages
410
+ ([`84e7e63`](https://github.com/jacksonpradolima/gsp-py/commit/84e7e63d226acba629e70896506bc7d7277bbe12))
411
+
412
+ Introduce committer.prompt.md for agent-generated messages Provide clear steps, examples, and a
413
+ shell command template Standardize commit message quality and consistency across the repo
414
+
415
+ ### Features
416
+
417
+ - Add optional GPU backend and CLI/API backend selector
418
+ ([`972609a`](https://github.com/jacksonpradolima/gsp-py/commit/972609adefbcb2d5900adb88239ed3fac21d6605))
419
+
420
+ Introduce experimental GPU backend using CuPy to accelerate singleton (k=1) support counting;
421
+ non-singleton candidates fall back to Rust (if available) or Python Expose backend selection
422
+ across layers: accelerate.support_counts now accepts backend: Optional[str] (overrides
423
+ GSPPY_BACKEND env when provided) GSP._support and GSP.search accept a backend parameter and
424
+ forward it to the acceleration layer Add --backend option to CLI (choices: auto, python, rust,
425
+ gpu); when non-auto, it sets GSPPY_BACKEND for the run Update README with a new GPU acceleration
426
+ section, installation via optional extra, runtime selection instructions, and revised CLI examples
427
+ including --backend Add gpu extra in pyproject.toml (cupy>=11,<14) to keep GPU dependencies
428
+ optional Maintain default CPU behavior (auto: try Rust, then Python) for backward compatibility
429
+
430
+ - Add optional Rust acceleration, benchmarks, and CI integration
431
+ ([`2d98162`](https://github.com/jacksonpradolima/gsp-py/commit/2d981622526b7e2f4dd0572a93826f2472032066))
432
+
433
+ Introduce acceleration layer (gsppy/accelerate.py) that uses a PyO3 Rust extension for support
434
+ counting and gracefully falls back to pure Python; runtime backend selection via GSPPY_BACKEND
435
+ (rust/python/auto). Add bench_support.py (Click CLI) to compare Python vs Rust backends with
436
+ options like --max_k and --warmup for reproducible micro-benchmarks. Extend Makefile with Rust
437
+ helpers: rust-setup, rust-build (idempotent skip when up-to-date by checking the installed .so vs
438
+ Rust sources), bench-small, and bench-big; update help output with a Rust acceleration section.
439
+ Update README.md and CONTRIBUTING.md with instructions to build the Rust extension, choose a
440
+ backend at runtime, and run benchmarks of various sizes. CI: update codecov workflow to optionally
441
+ install Rust and build the extension in tests, and add a dedicated test-rust job that builds the
442
+ extension, runs tests with GSPPY_BACKEND=rust, and uploads coverage/test results flagged as
443
+ "rust".
444
+
445
+ Motivation: improve performance of hot support-counting loops while preserving a zero-dependency
446
+ Python fallback; provide tooling and CI coverage to ensure stability and reproducibility.
447
+
448
+ - **cli**: Migrate to Click-based CLI and improve docs
449
+ ([`f9939e6`](https://github.com/jacksonpradolima/gsp-py/commit/f9939e628f0dd0fcf0a61f8f516ad9c9f23f8703))
450
+
451
+ Replaced argparse CLI with Click for better usability and error handling Updated CLI options and
452
+ error handling to use Click conventions Enhanced README with detailed CLI usage instructions,
453
+ examples, and error handling Added Click as a dependency in pyproject.toml Refactored tests to
454
+ handle Click's SystemExit and updated assertions for new CLI behavior Improved logging and exit
455
+ codes for invalid input and errors
456
+
457
+ ### BREAKING CHANGES
458
+
459
+ - Drop support for Python 3.8 and 3.9
460
+
461
+
462
+ ## v2.3.0 (2025-01-05)
463
+
464
+
465
+ ## v2.2.0 (2024-12-28)
466
+
467
+
468
+ ## v2.1.0 (2024-12-26)
469
+
470
+
471
+ ## v2.0.1 (2024-12-25)
472
+
473
+
474
+ ## v2.0.0 (2024-12-25)
475
+
476
+ ### Chores
477
+
478
+ - **project**: Update dependencies, setup configuration, and documentation
479
+ ([`9f49f41`](https://github.com/jacksonpradolima/gsp-py/commit/9f49f41249ef6173c6bacba91a85799529b4b593))
480
+
481
+ - **Dependency Updates**: - Updated `requirements.txt` to include necessary package versions for
482
+ compatibility and performance improvements. - Removed unused dependencies to streamline the
483
+ project environment.
484
+
485
+ - **Setup Configuration**: - Enhanced `setup.py` for better packaging and distribution. - Updated
486
+ metadata fields such as author information, project URL, and long description handling using the
487
+ README file. - Improved classifiers for better PyPI categorization.
488
+
489
+ - **Documentation Enhancements**: - Revised `README.md` to reflect the latest project features and
490
+ usage instructions. - Added examples for common use cases and clarified installation steps. -
491
+ Fixed typos and restructured sections for better readability.
492
+
493
+ - **Files Modified**: - `requirements.txt`: Dependency updates and cleanup. - `setup.py`:
494
+ Configuration and metadata improvements. - `README.md`: Documentation updates for features,
495
+ installation, and usage.
496
+
497
+ ### Continuous Integration
498
+
499
+ - **config**: Update linting, GitHub workflows, and editor configuration
500
+ ([`4fca581`](https://github.com/jacksonpradolima/gsp-py/commit/4fca5811724729c755cd917724e63310b1d7c1ba))
501
+
502
+ - Updated `.pylintrc` for stricter linting rules to enforce consistency. - Modified `.editorconfig`
503
+ for uniform whitespace and indentation. - Adjusted GitHub Actions in `.github` to streamline CI/CD
504
+ pipeline execution.
505
+
506
+ ### Documentation
507
+
508
+ - **project**: Update project documentation and guidelines
509
+ ([`fbb89dc`](https://github.com/jacksonpradolima/gsp-py/commit/fbb89dccfe08c14da8e5235febdde9c8ee4cc8a8))
510
+
511
+ - Updated `LICENSE` to clarify usage and copyright terms. - Improved `CONTRIBUTING` guidelines to
512
+ provide clear instructions for contributors.
513
+
514
+ ### Features
515
+
516
+ - **cli**: Enhance CLI functionality and expand test coverage
517
+ ([`fbce510`](https://github.com/jacksonpradolima/gsp-py/commit/fbce5103cb6155da4123fd08fa22fcf233f06160))
518
+
519
+ - **CLI Improvements**: - Refactored the CLI command structure for better usability and
520
+ maintainability. - Improved error handling and added user-friendly messages for invalid inputs. -
521
+ Enhanced logging output for better traceability during execution.
522
+
523
+ - **Test Enhancements**: - Added comprehensive test cases in `test_cli` to ensure full coverage of
524
+ CLI commands. - Validated edge cases, including incorrect parameters and missing configurations. -
525
+ Benchmarked CLI execution to identify and optimize bottlenecks.
526
+
527
+ - **Files Modified**: - `cli`: Improved command parsing and added user-friendly error messages. -
528
+ `test_cli`: Expanded test coverage and introduced new edge case validations.
529
+
530
+ - **core**: Optimize GSP algorithm and enhance test coverage
531
+ ([`7865f8c`](https://github.com/jacksonpradolima/gsp-py/commit/7865f8c377e9d3aa8017ad2453a81ca9089ed343))
532
+
533
+ - **Performance Improvements**: - Refactored the GSP algorithm to significantly improve candidate
534
+ generation. - Replaced nested loops with optimized `itertools` usage, reducing computational
535
+ overhead. - Enhanced `generate_candidates_from_previous` to be more efficient and maintainable by
536
+ removing redundant checks. - Performance benchmarks: - Old implementation: ~2,874 ms. - New
537
+ implementation: ~47 ms. - Overall improvement: ~61x (~98.37%).
538
+
539
+ - **Test Enhancements**: - Updated `test_generate_candidates_from_previous` to cover edge cases such
540
+ as disjoint patterns and single-element sequences. - Adjusted test cases in `test_gsp` and
541
+ `test_utils` to validate the new implementation. - Verified backward compatibility to ensure
542
+ correctness with the old GSP logic. - Added benchmarks for comparative analysis of old vs. new
543
+ utility functions.
544
+
545
+ - **Code Refactor**: - Improved the readability and maintainability of core utility functions in
546
+ `utils`. - Simplified the logic for candidate generation using a compressed for-loop approach.
547
+
548
+ - **Files Modified**: - `gsp`: Core GSP algorithm optimization. - `test_gsp`: Adjustments for GSP
549
+ test validation. - `utils`: Refactored candidate generation utilities. - `tests/test_gsp`:
550
+ Enhanced test cases for edge cases and performance benchmarks. - `tests/test_utils`: Improved unit
551
+ tests for utility functions.
@@ -77,9 +77,15 @@ To maintain consistency and code quality, please follow these coding guidelines:
77
77
  ```
78
78
 
79
79
  2. **Commit Messages**:
80
- - Write clear and concise commit messages.
81
- - Begin your commit message with an action verb, such as "Add," "Fix," "Improve," "Update," etc.
82
- - For example: `Fix candidate pruning for short sequences`.
80
+ - Follow the [Conventional Commits](https://www.conventionalcommits.org/) specification.
81
+ - Use the format: `<type>(<scope>): <description>`
82
+ - Common types: `feat`, `fix`, `docs`, `style`, `refactor`, `perf`, `test`, `build`, `ci`, `chore`
83
+ - Examples:
84
+ - `feat(cli): add export format option`
85
+ - `fix: correct off-by-one error in pattern matching`
86
+ - `docs: update installation instructions`
87
+ - For breaking changes, add `!` after type/scope or include `BREAKING CHANGE:` in the footer
88
+ - See [Release Management Guide](docs/RELEASE_MANAGEMENT.md) for details
83
89
 
84
90
  3. **Tests**:
85
91
  - Write tests for new features or bug fixes.