Skip to main content

The Mentor-Based Python Project Initializer. Learn best practices while building.

Project description

🐍 ViperX

The Mentor-Based Project Initializer Stop memorizing boilerplate. Start learning best practices.

ViperX is more than a CLI—it's an automated mentor. It generates production-ready Python projects (Classic, ML, DL) using uv, but crucially, it creates ultra-commented code that teaches you why the structure is built that way.

🦅 Philosophy: "Freedom & Grip"

  1. Grip (Mentorship): We hold your hand at the start with strict, educational defaults.
  2. Freedom (No Lock-in): Use viperx eject to remove the tool entirely. Your code remains standard Python.
  3. Conscious Mastery: We aim to make you autonomous, not dependent.

✨ Features

  • Education First: Generated files are learning materials. viperx --explain tells you the "why".
  • Blazing Fast: Built on top of uv for sub-second setup.
  • Pre-configured: pyproject.toml, proper src layout, ruff ready.
  • ML/DL First: Templates with torch, tensorflow, kagglehub and Smart Caching.
  • Smart Caching: Auto-downloads and caches datasets to ~/.cache/viperx/data (or local data/).
  • Strict Isolation: Environment variables (.env) isolated in src/<pkg>/ for better security.
  • Config-in-Package: Solves the "Colab/Kaggle doesn't see my config" problem.
  • Platform Agnostic: Works on Local, VSCode, Colab, and Kaggle.
  • Safe Mode: Never overwrites or deletes files automatically—reports changes for manual action.

📦 Installation

Recommended (Global Tool)

pipx install viperx

Alternative (uv)

uv tool install viperx

🚀 Quick Start

# Classic Package
viperx config -n my-lib

# Machine Learning Project
viperx config -n churn-prediction -t ml --env

# Deep Learning Project (PyTorch)
viperx config -n deep-vision -t dl -f pytorch

# Declarative Config (Infrastructure as Code)
viperx config get                   # Generate template
viperx config -c viperx.yaml        # Apply config

🧱 Project Structure

Standard Layout

my-lib/
├── pyproject.toml      # Managed by uv
├── README.md
├── .gitignore
├── viperx.yaml         # Config file
└── src/
    └── my_lib/
        ├── __init__.py
        ├── main.py         # Entry point
        ├── config.yaml     # Data URLs & Params
        ├── config.py       # Loader
        ├── .env            # Secrets (ISOLATED)
        └── tests/
            └── test_core.py

ML/DL Layout

deep-vision/
├── pyproject.toml
├── notebooks/
│   ├── Base_Kaggle.ipynb
│   └── Base_General.ipynb
├── data/               # Cached datasets
└── src/
    └── deep_vision/
        ├── main.py
        ├── config.py       # <--- ISOLATED
        ├── .env            # <--- ISOLATED
        ├── data_loader.py  # Smart caching
        └── tests/

💻 CLI Reference

config - Main Command

viperx config [OPTIONS]

Options:

Flag Description Default
-n, --name Project name (Required) -
-t, --type classic, ml, dl classic
-d, --description Project description -
-a, --author Author name git user
-l, --license MIT, Apache-2.0, GPLv3 MIT
-b, --builder uv, hatch uv
-f, --framework pytorch, tensorflow (DL only) pytorch
--env / --no-env Generate .env file --no-env
-c, --config Path to viperx.yaml -

learn - Educational Hub

viperx learn         # List topics
viperx learn uv      # Learn about uv

Global Options

  • --explain: Enable detailed architectural explanations during execution.
  • --version: Show version.

config get - Generate Template

viperx config get

Creates a viperx.yaml template in current directory.

config update - Rebuild from Codebase

viperx config update

Scans the existing project and updates viperx.yaml to match reality:

  • Detects packages in src/
  • Detects use_config, use_env, use_tests from actual files
  • Adds annotations for any mismatches

package - Workspace Management

# Add package
viperx package add -n worker-api -t classic

# Delete package
viperx package delete -n worker-api

# Update dependencies
viperx package update -n worker-api

📝 Declarative Config (viperx.yaml)

project:
  name: "my-project"
  description: "A cool project"
  author: "Your Name"
  license: "MIT"
  builder: "uv"

settings:
  type: "classic"          # classic | ml | dl
  use_env: false
  use_config: true
  use_tests: true

workspace:
  packages:
    - name: "api"
      type: "classic"
    - name: "ml-core"
      type: "ml"
      use_env: true

🔒 Safe Mode Philosophy

ViperX follows a non-destructive approach:

Action Behavior
Add ✅ Creates new files/packages
Update ⚠️ Reports changes, user decides
Delete ❌ Never deletes—warns user
Overwrite ❌ Never overwrites existing files

🧪 Test Coverage

uv run pytest src/viperx/tests
# 46 tests | 76% coverage

Test Structure:

  • unit/ - Validation (5 tests)
  • functional/ - CLI, licenses, project types, updates (18 tests)
  • scenarios/ - Classic, workspace, type blocking, config scanner (18 tests)
  • integration/ - E2E lifecycle (5 tests)

🤝 Contributing

git clone https://github.com/KpihX/viperx.git
cd viperx
uv sync
uv run viperx --help

Built with ❤️ by KpihX

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

viperx-1.6.2.tar.gz (57.4 kB view details)

Uploaded Source

Built Distribution

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

viperx-1.6.2-py3-none-any.whl (77.1 kB view details)

Uploaded Python 3

File details

Details for the file viperx-1.6.2.tar.gz.

File metadata

  • Download URL: viperx-1.6.2.tar.gz
  • Upload date:
  • Size: 57.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"25.10","id":"questing","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for viperx-1.6.2.tar.gz
Algorithm Hash digest
SHA256 0c4770a1ba50f3306271879cc3bd05c953eb98ac340963c105abae38303afa8f
MD5 83811b2bdca617fd4556edb47f116ab0
BLAKE2b-256 f6bc22302437d851f7e04e59e604a2ddf459d3a77847ce8cf824d1a73af058b0

See more details on using hashes here.

File details

Details for the file viperx-1.6.2-py3-none-any.whl.

File metadata

  • Download URL: viperx-1.6.2-py3-none-any.whl
  • Upload date:
  • Size: 77.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"25.10","id":"questing","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for viperx-1.6.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d0e8a63b770767bfa2c2f1bf045c35cc6903329c8131f7639a737fc44f3b86ff
MD5 9cb9eaffe0a0fabb60660868c5a50600
BLAKE2b-256 93b9bb1d311f5aef65e194602473c9f880f102dfb936f7b9f001851ce598ff91

See more details on using hashes here.

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