Skip to main content

One-command Python package publishing: bump version, commit, tag, push to GitHub, build, and upload to PyPI

Project description

Publisherator

One-command Python package publishing: bump version, commit, tag, push to GitHub, build, and upload to PyPI.

Problem

Publishing Python packages requires multiple manual steps: updating version numbers in multiple files, committing changes, creating git tags, pushing to GitHub, building the package, and uploading to PyPI. This repetitive process is error-prone and time-consuming.

Solution

A lightweight CLI tool that automates the entire publishing workflow with a single command.

Installation

pip install publisherator

Usage

# Bump patch version (1.0.0 → 1.0.1)
publisherator patch

# Bump minor version (1.0.1 → 1.1.0)
publisherator minor

# Bump major version (1.1.0 → 2.0.0)
publisherator major

# Default is patch if no argument provided
publisherator

What It Does

  1. ✓ Checks git working directory is clean
  2. ✓ Checks git remote 'origin' is configured
  3. ✓ Bumps version in pyproject.toml and package/__init__.py
  4. ✓ Commits changes with message "Bump version to X.Y.Z"
  5. ✓ Creates git tag X.Y.Z
  6. ✓ Pushes commits and tags to GitHub
  7. ✓ Cleans old build artifacts
  8. ✓ Builds package with python -m build
  9. ✓ Uploads to PyPI with twine upload

Options

# Preview changes without executing
publisherator patch --dry-run

# Custom commit message
publisherator minor --message "Release new features"
publisherator minor -m "Release new features"

# Skip git operations (only publish to PyPI)
publisherator patch --skip-git

# Skip PyPI upload (only push to git)
publisherator patch --skip-pypi

First-Time Setup

Before using publisherator, ensure:

  1. Git repository initialized

    git init
    git add .
    git commit -m "Initial commit"
    
  2. Git remote configured

    git remote add origin https://github.com/username/package.git
    
  3. PyPI credentials configured

    • Set up ~/.pypirc or use environment variables
    • Or configure via twine directly

Requirements

Your package must have:

  • pyproject.toml with a version field
  • package/__init__.py with __version__ variable (optional but recommended)

Error Handling

Git push fails: Automatically rolls back commit and tag

PyPI upload fails: Provides recovery instructions:

  • Retry: twine upload dist/*
  • Rollback: git reset --hard HEAD~1 && git tag -d X.Y.Z && git push origin --delete X.Y.Z

Features

  • ✓ Semantic versioning (major.minor.patch)
  • ✓ Multi-file version sync
  • ✓ Real-time output streaming for git push, build, and upload
  • ✓ Build warning collection and summary
  • ✓ Git automation with automatic rollback on push failure
  • ✓ Works with any git remote (GitHub, GitLab, Bitbucket, etc.)
  • ✓ Supports first-time pushes with automatic upstream tracking
  • ✓ Zero configuration needed
  • ✓ Helpful error messages and recovery instructions
  • ✓ Final summary with GitHub and PyPI URLs

License

MIT

Author

Arved Klöhn

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

publisherator-0.1.7.tar.gz (8.7 kB view details)

Uploaded Source

Built Distribution

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

publisherator-0.1.7-py3-none-any.whl (7.6 kB view details)

Uploaded Python 3

File details

Details for the file publisherator-0.1.7.tar.gz.

File metadata

  • Download URL: publisherator-0.1.7.tar.gz
  • Upload date:
  • Size: 8.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for publisherator-0.1.7.tar.gz
Algorithm Hash digest
SHA256 a744f2ae372e12fc88aba233e3b7b59f628847fb1eaf1bece8f0c23d2695733c
MD5 464eefaefcdb03a156020c938e961c67
BLAKE2b-256 bdb94ae49c22f7037383265fd9face7820065b55d5d43e6a4d5810853c9e8bea

See more details on using hashes here.

File details

Details for the file publisherator-0.1.7-py3-none-any.whl.

File metadata

  • Download URL: publisherator-0.1.7-py3-none-any.whl
  • Upload date:
  • Size: 7.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for publisherator-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 4204c6a6feeb795676ee71beeac939c0f9b1a4e708f27ea21f62229e2a4ff484
MD5 b907b932592eddee9ad671fe83b4a6b1
BLAKE2b-256 72546fefa399d829f2e8c818be876f6dae576895fc0a0bdf429994c2da2972f5

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