Skip to main content

Produces rigorous advanced machine learning frameworks natively bypassing jinja

Project description

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

You can install spjaffolding globally to bootstrap ML projects anywhere on your filesystem 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 --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.3.tar.gz (37.8 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.3-py3-none-any.whl (13.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: spjaffolding-0.1.3.tar.gz
  • Upload date:
  • Size: 37.8 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.3.tar.gz
Algorithm Hash digest
SHA256 e24a0dc83274f4a65bebd7cffd22498f7921325b100bafe344536babbc39b12b
MD5 398ace3b4ea7f118b8c93f298d7ae4ee
BLAKE2b-256 cb3715da4d9dfed34a1d30d18b0b6b6caf9c3df4b7f5fd287d1148c53ded2405

See more details on using hashes here.

Provenance

The following attestation bundles were made for spjaffolding-0.1.3.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.3-py3-none-any.whl.

File metadata

  • Download URL: spjaffolding-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 13.1 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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 0c56b905b32f701000c6afca9a37f14de287329968ec705ede7e8d392e83c0a4
MD5 a4ca9b19b73372736c52e5d0ebb40a56
BLAKE2b-256 19f35d7303835656f18599d130ecad53f7ec143beef09d818f601e527403fb4c

See more details on using hashes here.

Provenance

The following attestation bundles were made for spjaffolding-0.1.3-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