Skip to content

Releases: jacksonpradolima/gsp-py

v3.0.1

16 Sep 19:03
e27c53d

Choose a tag to compare

What's Changed

Full Changelog: v3.0.0...v3.0.1

v3.0.0

14 Sep 23:34

Choose a tag to compare

🚀 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 uv for installs, linting, type-checking, and testing
    • Tox powered by tox-uv with auto-provisioned interpreters
  • 🧪 Clean test suite: all 38 tests pass, type checkers clean


📦 Packaging & Python Compatibility

  • 🎯 Python 3.10+ only (requires-python = ">=3.10")
  • 🗃️ pyproject.toml updated with optional GPU extras and backend metadata
  • 📄 uv.lock for 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 gpu

GPU Installation (Optional)

pip install "gsppy[gpu]"

⚠️ GPU backend currently supports only k=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 uv tooling
  • 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

✅ 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

👉 v2.3.0...v3.0.0


🙌 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

05 Jan 19:40
afd8186

Choose a tag to compare

What's Changed

Full Changelog: v2.2.0...v2.3.0

v2.2.0

28 Dec 03:41
03a9db5

Choose a tag to compare

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

26 Dec 03:15
46eca97

Choose a tag to compare

What's Changed

Full Changelog: v2.0.1...v2.1.0

v2.0.1

26 Dec 02:24
3fbefbc

Choose a tag to compare

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

Full Changelog: v2.0.0...v2.0.1

2.0.0

26 Dec 01:58
0fd16de

Choose a tag to compare

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 itertools for efficiency.
    • Streamlined logic for constructing k-sequences.
  • Benchmarked across various datasets to ensure scalability and efficiency.

Codebase Enhancements

  • Refactored Code:
    • Simplified generate_candidates_from_previous logic for better readability and maintainability.
    • Consolidated repetitive patterns and adopted modular functions.
    • Used modern Python features such as compress-for and optimized loops.
  • 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.

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 black and isort.
    • Ensured quality checks with flake8.

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

Full Changelog: 1.1...v2.0.0

1.1

03 May 18:35

Choose a tag to compare

1.1
removed from travis

1.0

13 Jul 00:24

Choose a tag to compare

1.0
change gsp to use multiprocessing