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.
๐ฆ Installation
Recommended (Global Tool)
pipx install viperx
Alternative (uv)
uv tool install viperx
๐ Usage
init
Initialize a new project (Classic, ML, or DL).
# Classic Lib (Standard Layout)
viperx init -n my-lib
# Machine Learning ( + Notebooks, Pandas, Scikit-learn, Smart Loader)
viperx init -n churn-pred -t ml
# Deep Learning ( + PyTorch/TensorFlow, CUDA checks)
viperx init -n deep-vision -t dl --framework pytorch
# Deep Learning ( + PyTorch/TensorFlow, CUDA checks)
viperx init -n deep-vision -t dl --framework pytorch
# โจ Declarative Config (Infrastructure as Code)
viperx config get # Generate template
viperx init -c viperx.yaml # Apply config
package
Manage workspace packages (Monorepo style).
# Add a new package to the current workspace
viperx package add -n my-api -t classic
# Remove a package
viperx package delete -n my-api
๐ Quick Start
Initialize a new project with a single command:
# Classic Package
viperx init -n my-lib -d "My awesome library"
# Deep Learning Project (PyTorch ready)
viperx init -n deep-vision -t dl --description "Vision Transformer implementation"
# Machine Learning Project (Scikit-learn ready)
viperx init -n churn-prediction -t ml
๐งฑ Structure
๐ Standard Layout
my-lib/
โโโ pyproject.toml # Managed by uv
โโโ README.md
โโโ README.md
โโโ .gitignore
โโโ src/
โโโ my_lib/
โโโ __init__.py
โโโ main.py # Entry point
โโโ config.yaml # Data URLs & Params
โโโ config.py # Loader
โโโ .env # Secrets (Isolated)
โโโ utils/
โโโ data_loader.py # Generic URL/CSV Loader
๐ง Machine Learning & Deep Learning
For type ml or dl, you get:
- Notebooks:
Base_Kaggle.ipynb: Loads data viakagglehub.Base_General.ipynb: Loads data viadata_loader.py(URL/Local).
- Data Loader:
src/<pkg>/data_loader.pyhandles caching downloads todata/. - Config: Pre-filled with "Hello World" datasets (Iris, Titanic).
โ๏ธ Configurationstalls dependencies (torch, pandas...).
deep-vision/
โโโ pyproject.toml
โโโ notebooks/
โ โโโ Base.ipynb # Pre-configured notebook (Colab/Kaggle ready)
โโโ src/
โโโ deep_vision/
โโโ ... # Same robust package structure
๐ป CLI Usage
init - Create a new project
viperx init [OPTIONS]
Options:
-n, --name TEXT: Project name (Required).-t, --type TEXT: Project type (classic,ml,dl). Default:classic.-d, --description TEXT: Project description.-a, --author TEXT: Author name (defaults to git user).-l, --license TEXT: License type (MIT,Apache-2.0,GPLv3). Default:MIT.-f, --framework TEXT: DL Framework (pytorch,tensorflow). Default:pytorch(only for-t dl).-v, --verbose: Enable verbose logging for transparent output.
Examples:
# Classic Library
viperx init -n my-lib
# Deep Learning (PyTorch Default)
viperx init -n vision-ai -t dl
# Deep Learning (TensorFlow)
viperx init -n tf-legacy -t dl -f tensorflow
# Deep Learning (TensorFlow)
viperx init -n tf-legacy -t dl -f tensorflow
# From Config File
viperx init -c viperx.yaml
config - Declarative Mode
Manage your project infrastructure using a YAML file.
viperx config get
Generates a viperx.yaml template in the current directory.
viperx init --config viperx.yaml
Applies the configuration. This is idempotent:
- Creates the project if it doesn't exist.
- Hydrates the directory if it exists but is empty (e.g., git init).
- Updates the workspace if the project exists (adds missing packages defined in YAML).
package - Manage Workspace
Manage packages in your workspace hierarchy (add, update, delete).
add
Add a new package to your project. Upgrades standalone projects to workspaces automatically.
```bash
viperx package add -n worker-node -t classic --no-readme
Options:
--readme / --no-readme: Generate a localREADME.mdfor the package. Default:True.--env / --no-env: Generate isolated.envand.env.exampleinsrc/<pkg>/.
delete
Remove a package from the workspace (deletes folder & updates pyproject.toml).
viperx package delete -n worker-node
update
Update a package's dependencies (runs uv lock --upgrade).
viperx package update -n worker-node
---## ๐ฆ "Magical" Configuration
Every project comes with a robust config.py using importlib.resources.
In your code / notebooks:
from my_package import SETTINGS, get_dataset_path
# Works everywhere: Local, Installed, Colab, Kaggle
print(SETTINGS['project_name'])
๐ค Contributing
This project is built 100% with uv.
- Clone the repo
- Sync dependencies:
uv sync - Run the CLI:
uv run viperx
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-0.9.23.tar.gz.
File metadata
- Download URL: viperx-0.9.23.tar.gz
- Upload date:
- Size: 25.2 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 |
13620294f32980971ab3779fffd523e4bd43e6adfc0d33fb8a30ac3df8a90448
|
|
| MD5 |
dfeae036c103d0f5b3a189dfea6ed05a
|
|
| BLAKE2b-256 |
5fb08a340c768cb5e04055234f7fc40784e76d4aa0e89ca5ae85f4fc4cfafe95
|
File details
Details for the file viperx-0.9.23-py3-none-any.whl.
File metadata
- Download URL: viperx-0.9.23-py3-none-any.whl
- Upload date:
- Size: 32.9 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 |
0129de4e5ffe3e09b499004489bcf45bf5fb3e9c16ed6c13a70c40b37cf4e156
|
|
| MD5 |
17e5d87df879541bf6207ac07739ce8b
|
|
| BLAKE2b-256 |
2876d4a858626c916df46b43cbf8e6ab157a6e48921114a31edd55a2776cf1fc
|