Skip to main content

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

Metadata

Release files for publisherator 0.1.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for publisherator 0.1.7
File Size Uploaded
publisherator-0.1.7.tar.gz 8.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for publisherator 0.1.7
File Interpreter ABI Platform
publisherator-0.1.7-py3-none-any.whl Python 3 none any Details

Total release size: 16.3 kB

Release files / publisherator-0.1.7.tar.gz

Download URL publisherator-0.1.7.tar.gz
Size 8.7 kB
Tags Source
SHA-256 checksum
How to use checksums
a744f2ae372e12fc88aba233e3b7b59f628847fb1eaf1bece8f0c23d2695733c
BLAKE2b-256 checksum
How to use checksums
bdb94ae49c22f7037383265fd9face7820065b55d5d43e6a4d5810853c9e8bea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.12

Release files / publisherator-0.1.7-py3-none-any.whl

Download URL publisherator-0.1.7-py3-none-any.whl
Size 7.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4204c6a6feeb795676ee71beeac939c0f9b1a4e708f27ea21f62229e2a4ff484
BLAKE2b-256 checksum
How to use checksums
72546fefa399d829f2e8c818be876f6dae576895fc0a0bdf429994c2da2972f5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.12

Release history Release notifications | RSS feed

This release

0.1.7 This release

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page