Skip to main content

Produces rigorous advanced machine learning frameworks natively bypassing jinja

Project description

DOI

GitHub Release-date Release-version GitHub repo size License GitHub forks

Tests Code style: ruff uv

spjaffolding

A fast, strictly-typed Python CLI application that scaffolds advanced, highly modular Machine Learning frameworks. Designed for Principal Software Engineers and Research teams who demand robust architecture without the pollution of traditional templating engines (like Jinja).

By leveraging Python's Typer, rich, questionary and dynamic programmatic string injection coupled with the Rust-backed speed of uv, spjaffolding ensures deterministic environment resolution and clean, readable codebases.

Key Features

  • Jinja-Free Static Generation: Avoids external templating engines by utilizing localized textwrap.dedent blocks, keeping the scaffolding tool lintable (ruff) and type-checked (mypy).
  • Interactive Multi-Select CLI: Uses a beautiful macOS-native-looking, rich-styled checkbox interface (via questionary) to let users dynamically toggle specifically the modules they need.
  • Dynamic Feature Architecture: Additive folder structures and pyproject.toml dependencies based on your selections:
    • gpu, viz, data_prep, model_training, scraping, vector_db, llm_orchestration.
  • Reusable Presets: Easily load preconfigured bundles like --preset numerical_ml or --preset llm_scraping. Save your own custom selections to ~/.config/spjaffolding/presets.json for future runs, and view them anytime using --list-presets.
  • Mode-Driven CLI Controller: Generates a boilerplate script integrating an argparse/Typer Finite State Machine (FSM), natively supporting sequential chained execution (e.g., -m prepare_train_evaluate).
  • uv Environment Orchestration: Subprocess execution of uv init and uv sync locally bypasses pip dependency hell with uncompromised lockfile reproducibility. Injecting strict dependency clusters like gpu, viz, and test based on PEP 621/735.

Installation

Install spjaffolding globally to bootstrap ML projects anywhere on your filesystem using pip or uv:

Note: If you don't have uv installed, you can quickly install it:

curl -LsSf https://astral.sh/uv/install.sh | sh
pip install spjaffolding

Or

uv tool install spjaffolding

Install from source

If you want to install from source or develop the tool:

  1. Clone the repository:
git clone https://github.com/PRAkTIKal24/spjaffolding.git
cd spjaffolding
  1. Install using uv tool:
uv tool install . --force

Quick Start

To view all available predefined and custom presets, formatted beautifully in your terminal:

spjaffold --list-presets

Invoke the scaffolding wizard to use the interactive checkbox menu:

spjaffold

Or, if you already know the name of your project and its description, use:

spjaffold --tool-name "phaze" --description "High Energy Physics anomaly detector"

Or run rapidly via a built-in or custom saved preset:

spjaffold --tool-name "phaze" --description "HEP anomaly detector" --preset "numerical_ml"

This generates the complete structural footprint based on your toggled features (e.g., numerical_ml preset):

phaze/
├── README.md
├── pyproject.toml
├── src/
│   └── phaze/
│       ├── __init__.py
│       ├── cli.py       <-- Automatically bound to the selected domain FSM!
│       ├── data_prep/
│       ├── models/
│       └── training/
└── workspaces/

Within the scaffolded framework, execute your modes sequentially:

uv run phaze -m "prepare_train" -p default_workspace default_project

Developer Guide

spjaffolding itself maintains high structural integrity. Check its code standard via:

uv sync --all-extras
uv run ruff check src
uv run mypy src
uv run pytest tests

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

spjaffolding-0.1.5.tar.gz (38.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

spjaffolding-0.1.5-py3-none-any.whl (13.5 kB view details)

Uploaded Python 3

File details

Details for the file spjaffolding-0.1.5.tar.gz.

File metadata

  • Download URL: spjaffolding-0.1.5.tar.gz
  • Upload date:
  • Size: 38.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for spjaffolding-0.1.5.tar.gz
Algorithm Hash digest
SHA256 f7c89b86e1a7a3fe21d8765f720e6615eb11d05d9d96bb985eb30a7feb6001ad
MD5 75c6978cc56a7f6314956a78c4a4c590
BLAKE2b-256 5f8ae6872f4c07b5394a358cc02ae159cecbd22548ad5a320b1bc69e1c394389

See more details on using hashes here.

Provenance

The following attestation bundles were made for spjaffolding-0.1.5.tar.gz:

Publisher: publish.yml on PRAkTIKal24/spjaffolding

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file spjaffolding-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: spjaffolding-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 13.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for spjaffolding-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 804ec80cfa857eafd2b7a87048371a37969b66621c1997dcd4f99382047d5b96
MD5 4c915d3e28e2a0193ea83676d33986fa
BLAKE2b-256 3939d1b8235c1f64d945cefea4049375f90463e3f61676e4a986a3eb73008cee

See more details on using hashes here.

Provenance

The following attestation bundles were made for spjaffolding-0.1.5-py3-none-any.whl:

Publisher: publish.yml on PRAkTIKal24/spjaffolding

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page