CLI tool to automate Python project setup with GitHub integration and VS Code configuration
Project description
UtkarshPy
UtkarshPy is a CLI tool that streamlines Python project setup by automating:
- Environment checks (Python version ≥ 3.8)
- GitHub authentication and repository creation
- Local Git initialization
- Virtual environment setup with
uv - VS Code workspace configuration
Demo
Watch the tool in action:
🎬 Click on the thumbnail above to watch the YouTube video! 🎬
Installation
Option 1: Install with pipx (Recommended)
python -m pip install --user pipx
python -m pipx ensurepath
pipx install uv
pipx install utkarshpy
Option 2: Install with pip
pip install utkarshpy
Usage
utkarshpy [--version] [--no-push]
--version
Show the tool version and exit.--no-push
Skip all GitHub-related operations: no authentication prompts, no remote creation or push.
Features
- Python Version Check: Verifies that Python 3.8 or higher is installed.
- GitHub Integration: Uses GitHub CLI (
gh) for authentication, repository creation, and push. - Skip GitHub Operations:
--no-pushflag performs local setup without creating or pushing to GitHub. - Local Git Setup: Initializes a new Git repository and generates
.gitignore,LICENSE, andREADME.md. - Virtual Environment: Creates a
.venvusinguv venvand manages dependencies withuv. - VS Code Configuration: Generates
.vscode/settings.jsonwith auto-save, formatting, and Jupyter settings. - Custom Templates: Automatically runs
template.pyif present to generate extra folders and files after dependencies are installed.
Step-by-Step Workflow
- Invoke the CLI
utkarshpy [--no-push]
- (Optional) Enter Repository Name & Visibility
- If
--no-pushis omitted, you'll be prompted:- Repository Name (only letters, numbers,
-, and_) - Visibility (
publicorprivate, default:public)
- Repository Name (only letters, numbers,
- If
- GitHub CLI Check & Authentication
- Verifies
ghinstallation or prompts to install. - Runs
gh auth loginif not already authenticated.
- Verifies
- Git Configuration
- Sets global
user.nameanduser.emailfrom your GitHub account or prompts for input.
- Sets global
- Local Initialization
- Installs
uvif not already installed. - Runs
uv init .to create project files and removes redundant.gitignore.
- Installs
- File Generation
- Downloads a Python-specific
.gitignorefrom GitHub. - Fetches an Apache 2.0
LICENSEfrom apache/.github repository. - Creates a basic
README.mdwith project name.
- Downloads a Python-specific
- Virtual Environment & Dependencies
- Ensures
pyproject.tomlexists or errors. - Creates
.venvviauv venv. - Installs
requirements.txt(if present) usinguv add -r requirements.txt. - Syncs dependencies with
uv syncto create/update lockfile. - Provides activation instructions for the virtual environment.
- Ensures
- VS Code Setup
- Writes
.vscode/settings.jsonwith recommended Python and Jupyter settings.
- Writes
- (GitHub Only) Repository Creation & Push
- If
--no-pushis not used:- Commits initial files and renames branch to
main. - Executes
gh repo createwith chosen visibility. - Pushes to
originand displays the repository URL.
- Commits initial files and renames branch to
- If
--no-pushis used:- Skips authentication, remote creation, and push entirely.
- If
Example Output
Standard Run (with GitHub push)
🚀 Python Project Automator - Utkarsh Gaikwad 🚀
Platform detected: Linux
Enter GitHub repository name: my-project
Visibility [public/private] (default: public): public
✓ GitHub authentication verified
⚙️ Checking Git configuration...
✓ Initialized uv folder
📂 Creating project structure...
✓ Downloaded .gitignore
✓ Created README.md
🔄 Creating virtual environment...
✓ Virtual environment created
📦 Installing dependencies...
✓ Dependencies installed
✓ uv synced to lockfile
🔌 Virtual environment activation:
source .venv/bin/activate
✓ VS Code settings configured with your new settings!
🔄 Creating public repository 'my-project'...
✓ Repository created and pushed: https://github.com/username/my-project
✅ Setup Complete! Repository: https://github.com/username/my-project
➤ Local path: /path/to/my-project
Local-Only Run (skip GitHub)
utkarshpy --no-push
🚀 Python Project Automator - Utkarsh Gaikwad 🚀
Platform detected: Linux
⚠️ --no-push mode: skipping all GitHub prompts and authentication
🔄 Initializing local uv git repository...
📂 Creating project structure...
🔄 Creating virtual environment...
✓ Virtual environment created
📦 No requirements.txt found
🔌 Virtual environment activation:
source .venv/bin/activate
✓ VS Code settings configured with your new settings!
✅ Setup Complete! (no GitHub repo created)
➤ Local path: /path/to/project
License
This project is licensed under the Apache License 2.0. See LICENSE for details.
This CLI tool saves time by automating tedious setup tasks, ensuring a consistent and streamlined workflow for Python projects!
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 utkarshpy-0.3.15.tar.gz.
File metadata
- Download URL: utkarshpy-0.3.15.tar.gz
- Upload date:
- Size: 21.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b864908c4bfe505ba0b663c2844d448589a11bbcc8d160c9946c91035ab47b9d
|
|
| MD5 |
982ca0881d584334798e899a04938b82
|
|
| BLAKE2b-256 |
177ced0f219cdd24c816f7413060ebb248f664703d168be7442340ef14d702e9
|
File details
Details for the file utkarshpy-0.3.15-py3-none-any.whl.
File metadata
- Download URL: utkarshpy-0.3.15-py3-none-any.whl
- Upload date:
- Size: 12.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
914831d38e17d33100740835a6ff521a8acac3c58b2ec78c9d521261cfd17867
|
|
| MD5 |
ca32bf6dd266724939361583484e8fdd
|
|
| BLAKE2b-256 |
b2bd71d268c30996649f15dfc38b1992b5267c0944eeee588c6fbb3511594574
|