Releases: jacksonpradolima/gsp-py
v3.0.1
What's Changed
- Bump hatch from 1.14.0 to 1.14.1 by @dependabot[bot] in #101
- Bump pylint from 3.2.7 to 3.3.8 by @dependabot[bot] in #100
- Bump pytest from 8.3.4 to 8.4.2 by @dependabot[bot] in #99
- Bump pytest-cov from 5.0.0 to 7.0.0 by @dependabot[bot] in #98
- Bump maturin from 1.6.0 to 1.9.4 by @dependabot[bot] in #97
Full Changelog: v3.0.0...v3.0.1
v3.0.0
🚀 gsppy v3.0.0 — Acceleration Backends, Modern Tooling, and Smarter CLI/API
We’re thrilled to announce gsppy 3.0.0, a major milestone that introduces GPU and Rust acceleration, a flexible backend selector, and a complete developer experience overhaul.
This release brings blazing performance improvements, especially for frequent support-counting workloads, while preserving the clean, intuitive API that users love. Whether you're mining sequential patterns on CPU or GPU, locally or in CI, gsppy now adapts seamlessly to your environment.
✨ Highlights
🔥 New Acceleration Backends
-
⚡ Rust Backend (via PyO3 + Rayon)
- Parallel subsequence search optimized for CPU.
- Default backend when available.
-
⚙️ GPU Backend (experimental, via CuPy)
- Accelerated singleton (k=1) support counting.
- Optional install:
pip install "gsppy[gpu]"
🎛️ Unified Backend Selector
Select execution backend via:
GSP.search(..., backend="auto" | "python" | "rust" | "gpu")- CLI:
--backend auto|python|rust|gpu - Env var:
GSPPY_BACKEND
Default behavior (auto) uses Rust if available, else falls back to Python.
🛠 Developer Experience Overhaul
-
🔄 Tooling migration from Rye →
uv -
🧰 Makefile with DX shortcuts:
make setup,make test,make lint, etc. -
✅ Pre-commit hooks (Ruff, Pyright, tests)
-
🪐 Devcontainer support for one-click onboarding (VS Code)
-
🚀 CI modernization:
- Uses
uvfor installs, linting, type-checking, and testing - Tox powered by
tox-uvwith auto-provisioned interpreters
- Uses
-
🧪 Clean test suite: all 38 tests pass, type checkers clean
📦 Packaging & Python Compatibility
- 🎯 Python 3.10+ only (
requires-python = ">=3.10") - 🗃️
pyproject.tomlupdated with optional GPU extras and backend metadata - 📄
uv.lockfor reproducible installs - 🔍 Cleaned up type hints and modernized all code formatting
🧪 How to Use
Python API
from gsppy.gsp import GSP
gsp = GSP(transactions, min_support=0.2)
results = gsp.search(max_k=5, backend="rust") # or "gpu", "python", "auto"CLI
gsppy --input path/to/data.json --min-support 0.2 --backend gpuGPU Installation (Optional)
pip install "gsppy[gpu]"
⚠️ GPU backend currently supports onlyk=1. Non-singleton workloads fall back automatically.
🔍 Performance Notes
- Rust Backend: Ideal for large non-singleton workloads on CPU; parallelized search.
- GPU Backend: Significantly faster singleton support-counting (k=1) on CUDA GPUs.
- Backend dispatch adapts automatically to your environment or explicit flags.
📚 Documentation
-
README updated with:
- GPU acceleration instructions
- CLI/API backend selection
- Python 3.10+ support and
uvtooling
-
CONTRIBUTING guide updated for new workflow
💥 Breaking Changes
-
🔚 Dropped Python 3.8/3.9 support
- Upgrade to Python 3.10+ to use
gsppy>=3.0.0
- Upgrade to Python 3.10+ to use
✅ Quality & Stability
- ✅ Type-checked (mypy, pyright)
- ✅ Fully tested (38 unit tests)
- ✅ Clean pre-commit hooks
- ✅ CI pipelines refactored and stable
- ✅ Fallbacks for missing Rust or GPU dependencies
📈 Full Changelog
🙌 Thank You
Huge thanks to all contributors, testers, and users who helped make gsppy a performant, extensible, and developer-friendly toolkit for sequential pattern mining.
If you like the project, consider starring ⭐️ the repo, submitting feedback, or contributing new ideas!
v2.3.0
What's Changed
- Bump ruff from 0.8.4 to 0.8.5 by @dependabot in #11
- Bump mypy from 1.14.0 to 1.14.1 by @dependabot in #10
- Enable parallel testing and update dev setup with Rye by @jacksonpradolima in #12
Full Changelog: v2.2.0...v2.3.0
v2.2.0
What's Changed
- Enhance Packaging, Testing, and Infrastructure with Modern Tools and Features by @jacksonpradolima in #9
Full Changelog: v2.1.0...v2.2.0
v2.1.0
What's Changed
- Update Citation by @jacksonpradolima in #7
- Enhance Python Version Compatibility and Testing Workflow by @jacksonpradolima in #8
Full Changelog: v2.0.1...v2.1.0
v2.0.1
What's Changed
- Bump actions/setup-python from 4 to 5 in /.github/workflows by @dependabot in #4
- Bump pylint from 3.2.6 to 3.3.3 by @dependabot in #5
- Enhancements to Documentation and Metadata: Version 2.0.1 Update by @jacksonpradolima in #6
New Contributors
- @dependabot made their first contribution in #4
Full Changelog: v2.0.0...v2.0.1
2.0.0
Important
This release marks a major upgrade for the GSP (Generalized Sequential Pattern) library, focusing on performance optimization, codebase refinement, and enhanced usability. The new version is up to 80x faster, significantly cleaner, and includes improved documentation and testing.
This overhaul sets the foundation for future features and scalability.
What's New in v2.0
Performance Improvements
- Execution time reduced by up to 80x in benchmark tests compared to the previous implementation.
- Optimized candidate generation:
- Leveraged
itertoolsfor efficiency. - Streamlined logic for constructing k-sequences.
- Leveraged
- Benchmarked across various datasets to ensure scalability and efficiency.
Codebase Enhancements
- Refactored Code:
- Simplified
generate_candidates_from_previouslogic for better readability and maintainability. - Consolidated repetitive patterns and adopted modular functions.
- Used modern Python features such as
compress-forand optimized loops.
- Simplified
- Testing Suite:
- Expanded test cases to cover edge cases in candidate generation and GSP workflow.
- Improved resilience and accuracy for rare and complex patterns.
- Documentation Overhaul:
- Updated
README.md:- Clearer installation instructions and examples.
- Added a quick start guide for ease of use.
- Docstrings enhanced across the codebase to improve developer experience.
- Updated
Dependency & Tooling Updates
- Static Analysis:
- Integrated SonarCloud to enforce code quality standards with detailed insights.
- Added pylint to detect code issues and ensure compliance with Python best practices.
- Code Coverage:
- Integrated Codecov to measure test coverage and highlight untested areas, achieving high coverage with minimal gaps.
- Code Formatting:
- Enforced consistent style using
blackandisort. - Ensured quality checks with
flake8.
- Enforced consistent style using
How Has This Been Tested?
- Unit Testing:
- Comprehensive tests for candidate generation, sequence validation, and edge cases.
- Validated using diverse transaction datasets to ensure robustness.
- Performance Benchmarks:
- Compared new and old implementations across various scenarios, demonstrating significant efficiency gains.
- Static Analysis:
- Automated quality checks using SonarCloud, pylint, and flake8.
- Test Configuration:
- Python Version: 3.11.4
We’re excited for you to explore the revamped GSP library. Please provide your feedback and suggestions for future improvements!
New Contributors
- @jacksonpradolima made their first contribution in #3
Full Changelog: 1.1...v2.0.0
1.1
removed from travis
1.0
change gsp to use multiprocessing