Skip to main content

UV Project Generator - Create Python monorepos with workspaces.

Project description

uvpg - UV Project Generator

PyPI version PyPI downloads PyPI total downloads License Release and Publish

A CLI tool to scaffold Python monorepo projects using uv workspaces.

Features

  • ๐Ÿš€ Creates monorepo structure with uv workspaces
  • ๐Ÿ“ฆ Adds internal packages with automatic dependency registration
  • ๐Ÿ Configurable Python version
  • ๐Ÿ‘ค Configurable author name and email
  • ๐Ÿ“„ MIT License auto-generated
  • ๐Ÿ”ง Pre-configured tools: Ruff, Ty, pytest, coverage
  • ๐Ÿ’ป VSCode settings with recommended extensions
  • ๐Ÿ–ฅ๏ธ Auto-detects OS for correct Python interpreter path
  • ๐Ÿณ Docker support with multi-stage build and compose
  • โšก FastAPI + Uvicorn basic example included

Installation

# Install from PyPI
pip install uvpg

# Or install from PyPI with uv
uv tool install uvpg

# Or clone the repository
git clone https://github.com/lucasmaziero/uvpg.git
cd uvpg

# Install with uv
uv sync
uv build
uv tool install dist/uvpg-*.whl

# Or install with pip
pip install dist/uvpg-*.whl

Uninstall

# Via uv
uv tool uninstall uvpg

# Via pip
pip uninstall uvpg

Upgrade

# Via pip
pip install --upgrade uvpg

# Via uv
uv tool upgrade uvpg

Usage

Create a new project

# Basic project
uvpg my-project

# With specific Python version
uvpg my-project --python 3.14

# With author information
uvpg my-project --author "John Doe" --email "john@example.com"

# With initial packages
uvpg my-project -p core -p utils -p api

# Combining options
uvpg my-project --python 3.14 --author "John Doe" --email "john@example.com" -p core

Add packages to existing project

cd my-project
uvpg . -p new-package

Show version

uvpg --version

Show help

uvpg --help

Generated Structure

my-project/
โ”œโ”€โ”€ .vscode/
โ”‚   โ”œโ”€โ”€ settings.json       # VSCode settings (Ruff, Ty, Action Buttons)
โ”‚   โ””โ”€โ”€ extensions.json     # Recommended extensions
โ”œโ”€โ”€ packages/
โ”‚   โ””โ”€โ”€ core/
โ”‚       โ”œโ”€โ”€ pyproject.toml
โ”‚       โ”œโ”€โ”€ src/
โ”‚       โ”‚   โ””โ”€โ”€ core/
โ”‚       โ”‚       โ”œโ”€โ”€ __init__.py
โ”‚       โ”‚       โ””โ”€โ”€ main.py
โ”‚       โ””โ”€โ”€ tests/
โ”œโ”€โ”€ src/
โ”‚   โ””โ”€โ”€ app/
โ”‚       โ”œโ”€โ”€ __init__.py
โ”‚       โ””โ”€โ”€ main.py         # FastAPI application
โ”œโ”€โ”€ tests/
โ”œโ”€โ”€ .dockerignore
โ”œโ”€โ”€ .gitignore
โ”œโ”€โ”€ .python-version
โ”œโ”€โ”€ compose.yaml            # Docker Compose config
โ”œโ”€โ”€ Dockerfile              # Multi-stage Docker build
โ”œโ”€โ”€ LICENSE                 # MIT License
โ”œโ”€โ”€ Makefile                # Build automation
โ”œโ”€โ”€ pyproject.toml          # Root config with workspace
โ”œโ”€โ”€ README.md
โ””โ”€โ”€ uv.lock

Configuration

The generated pyproject.toml includes:

  • FastAPI + Uvicorn - Web framework and ASGI server
  • Ruff - Linting with select = ["ALL"]
  • Ty - Type checking
  • pytest - Testing (commented, ready to enable)
  • coverage - Code coverage (commented, ready to enable)
  • uv workspaces - Monorepo package management
  • hatchling - Build system

Docker

Run with Docker Compose:

# Build and run
docker compose up --build

# Run with watch mode (auto-reload)
docker compose up --watch

Requirements

  • Python >= 3.12
  • uv package manager

Development

# Clone
git clone https://github.com/lucasmaziero/uvpg.git
cd uvpg

# Install dependencies
uv sync

# Run locally
uv run uvpg --help

# Build
uv build

License

MIT License - See LICENSE for details.

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

uvpg-1.1.0.tar.gz (17.0 kB view details)

Uploaded Source

Built Distribution

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

uvpg-1.1.0-py3-none-any.whl (13.3 kB view details)

Uploaded Python 3

File details

Details for the file uvpg-1.1.0.tar.gz.

File metadata

  • Download URL: uvpg-1.1.0.tar.gz
  • Upload date:
  • Size: 17.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for uvpg-1.1.0.tar.gz
Algorithm Hash digest
SHA256 87145dd05475d19e703325045ae0d8057dd89eb4cae20df6513208932973b4a1
MD5 9e169f1b8edfa60e674b49595fa60677
BLAKE2b-256 2c8fab380eb6f3333c2a7c76608c4b1db3c41934fda24312b9c9f3c90c3bc658

See more details on using hashes here.

Provenance

The following attestation bundles were made for uvpg-1.1.0.tar.gz:

Publisher: release.yml on lucasmaziero/uvpg

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file uvpg-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: uvpg-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 13.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for uvpg-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4d299eebec7d715b3507e0d36d5ca32f9acd325d7bb8ece1e960450b36e98ebe
MD5 377f9a8ec96698ea601bcce368e07dc5
BLAKE2b-256 e74e15f59d77ea3c44c0943b523b1701cbd617ab1ab7766d69fdf8d931b4438e

See more details on using hashes here.

Provenance

The following attestation bundles were made for uvpg-1.1.0-py3-none-any.whl:

Publisher: release.yml on lucasmaziero/uvpg

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