Professional Python Project Initializer with uv, ml/dl support, and embedded config.
Project description
🐍 ViperX
Professional Python Project Initializer The modern, snake-fast way to bootstrap Python projects.
ViperX is a CLI tool designed to generate production-ready Python projects instantly. It leverages uv for blazing fast dependency management and offers specialized templates for Machine Learning (ml) and Deep Learning (dl).
✨ Features
- Blazing Fast: Built on top of
uv. - Pre-configured:
pyproject.toml, propersrclayout,ruffready. - ML/DL First: Templates with
torch,tensorflow,kagglehuband Smart Caching. - Smart Caching: Auto-downloads and caches datasets to
~/.cache/viperx/data(or localdata/). - Strict Isolation: Environment variables (
.env) isolated insrc/<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 |
- |
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_testsfrom 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file viperx-1.3.3.tar.gz.
File metadata
- Download URL: viperx-1.3.3.tar.gz
- Upload date:
- Size: 50.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
796a24a6504cd7ec1cdec832b4b9f7c2082e70533c1c358924bfd6f2dd6fc2a7
|
|
| MD5 |
4c1297796fccdbd575114edfd6ff4f18
|
|
| BLAKE2b-256 |
c5f09cdbbfe08ae222b84420750742f7f253efc7e04e78f20ca90f883fe7e95d
|
File details
Details for the file viperx-1.3.3-py3-none-any.whl.
File metadata
- Download URL: viperx-1.3.3-py3-none-any.whl
- Upload date:
- Size: 69.0 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
413caa3c335b1ad2612b0fc592deafcc4a18c147962c089bb5ce90dc884e975c
|
|
| MD5 |
8df9501c447a75341c6faa380113b95b
|
|
| BLAKE2b-256 |
b1950bef9c8f9166db1744fccd39a0d6f02842fde157bd0f06491df30ce32c46
|