Skip to main content

Packer

A Python automation tool that streamlines Python release workflows: creating archives, uploading them to GoFile, updating Git repositories, publishing GitHub releases with AI-generated notes, and building, uploading wheels to PyPI.

Contents

Requirements

  • python >=3.10 (unless you use one of the executables)
  • git, For lots of things
  • GitHub account, For creating a GitHub release
  • GoFile account [optional] For uploading to your profile tied folder.
  • ollama [optional] For AI generated version description, name and git diff summarization in the change module.
  • PyPI account [optional] For uploading to PyPI

Installation

Available via multiple methods — choose whichever fits your workflow:

From GitHub Releases

Prebuilt artifacts are published on the Releases page:

  • PyInstaller executables: standalone binaries — packer for Linux systems and packer.exe for Windows.
  • Wheel file: a Python .whl built with the build package for easy installation on any platform.
  • Source archives: tar.gz / zip source distributions for local builds.

Example install for a downloaded wheel:

pip install packer-x.y.z-py3-none-any.whl

From PyPI

A release is also published to PyPI under the name packer-release:

pip install packer-release

From source (GitHub clone)

Install from source in a virtual environment after cloning the repository:

git clone https://github.com/EMILIO888real/Packer.git
cd Packer
python -m venv .venv
source .venv/bin/activate
pip install .

Note: There are 2 branches master (somewhat stable, default) and development (latest changes, updates every 1-3 days)

Or let pip clone and build directly from the GitHub repository (no manual clone required):

pip install git+https://github.com/EMILIO888real/Packer.git

From a source archive (GoFile)

If you prefer to install from a downloaded source archive, download the archive from the GoFile archive and install it with pip:

pip install /path/to/packer-x.y.z.tar.gz

After installing, continue following instructions in this README.

Usage

After installing the project, you can run it from the command line using the command packer.

Basic example

TUI

packer

GUI

packer -g

CLI

packer run -p packer -v m

Packer is also usable as a library: you can import parts of it into your own Python projects and call its functions or classes programmatically. Example:

from packer import Packer # <- this works because the object is public. full path: packer.core.Packer
# or import specific helpers
from packer.actions import run # <- Isn't public, so full import path is needed.
from packer.config import Project

instance = Packer(**kwargs)

try:
	instance.run()
except KeyboardInterrupt:
	print('User canceled, reverting changes...')
	instance.revert_changes()

run(Project(**kwargs))

Explore more about how to use it as a library by checking out the top __init__.py for available public python objects and doctype for those objects on use case.

Note: You can't import Packer if you installed one of the executables

Interfaces

  • CLI: Primary command-line interface; run packer with any command or flag.
  • GUI (pygame): A graphical UI is available via a pygame-based frontend for interactive use; run packer --gui
  • TUI (Textual): A terminal UI (TUI) built with Textual is included for rich, keyboard-driven workflows; just run packer

Demos

Configuration

Settings

See docs/SETTINGS.md for global Packer settings and docs/PROJECT.md for project-specific settings. For CLI options, see docs/CLI.md.

Setup

When you create a new project profile, Packer will guide you through a short setup flow. It is not just a folder creation step; it also creates a saved project entry so later releases can be run without re-entering all credentials.

Typical profile setup asks for:

  • Program name: must be a valid Python-style identifier (letters, numbers, underscores, no spaces, no leading numbers)
  • Project directory: where the project should live; defaults to a folder under your Documents directory using the program name
  • GitHub access: either a GitHub personal access token or a repository URL in username/repo form
  • Author name: used for project metadata
  • Optional extras: GoFile code, license type, whether to use GitHub PAT authentication, and whether to include PyInstaller build support

After the initial project scaffold is created, Packer will also prompt for the sensitive release credentials it needs to actually publish or update your project:

  • GoFile user token and optional folder ID
  • GitHub repo token
  • PyPI API token
  • Optional project settings such as compile command, before/after commands, and the Ollama model name for AI-generated release text

The profile is saved to your local config directory (typically under your OS user config folder, such as ~/.config/packer/projects.json) unless you choose to encrypt it. If you encrypt the file, you will be asked to create a password.

A minimal project should look like this:

my-project/
├── src/
│   └── my_project/
|		└── assets/
│   		├── version.json
│   		├── integrity.json
│   		└── RELEASE.md   # optional template used at runtime; not a normal project file you should keep in source control
├── CHANGELOG.md
├── README.md
└── pyproject.toml

Note: RELEASE.md is not a regular project artifact that should be committed to your repo. It is a template with placeholders that Packer fills in at runtime when preparing GitHub release notes. The important project files are usually the source tree, assets/version.json, assets/integrity.json, and your changelog.

Tip: if the project is already a git repo and you want to release a version, make sure the repository is clean enough for Packer to detect the changelog and build steps correctly.

Warning

  • Possible problems might arise in that case, please back up your project before running for the first time and even if packer messed up, it won't destroy or corrupt your project so GL fixing it! Here is also a guide for manually reverting a release in case it fails catastrophically: docs/MANUAL_REVERT.md.
  • Note that automatic error reporting is enabled by default. You can disable it in the settings

Features

  • Archive Creation: Packages your program with customizable exclusion rules. Uses .gitignore
  • Cloud Upload: Uploads archives to GoFile with optional folder management.
  • Git Integration: Handles repository updates and tagging.
  • GitHub Releases: Publishes releases with AI-generated titles and descriptions.
  • Optional Compilation: Supports Nuitka for compiled distributions.
  • Error Handling: Automatic rollback to previous version if a step fails.
  • AI-Powered: Uses Ollama (when available) to generate release notes.
  • PyPI integration: builds python wheels and uploads them to PyPI.

Feedback and Suggestions

Please open issues or pull requests on the project's GitHub repository, or email [emilspro888@gmail.com] to suggest improvements or report bugs.

Changelog

See the full history in CHANGELOG.md.

In future updates

See planned features and roadmap in docs/ROADMAP.md.

Metadata

Release files for packer-release 0.26.0

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

Source distribution (sdist)

Source distribution for packer-release 0.26.0
File Size Uploaded
packer_release-0.26.0.tar.gz 539.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for packer-release 0.26.0
File Interpreter ABI Platform
packer_release-0.26.0-py3-none-any.whl Python 3 none any Details

Total release size: 1.1 MB

Release files / packer_release-0.26.0.tar.gz

Download URL packer_release-0.26.0.tar.gz
Size 539.2 kB
Tags Source
SHA-256 checksum
How to use checksums
2544edeb33fd9dd28c580a82fb3b876cd8b464ff559796857eab1455343dae6a
BLAKE2b-256 checksum
How to use checksums
02476c7deee9e005bb0d8a6a6eb9605b844706376bc1cf27d2250381988756ae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 29, 2026.

Transparency log

Release files / packer_release-0.26.0-py3-none-any.whl

Download URL packer_release-0.26.0-py3-none-any.whl
Size 538.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f32dcc28c28cc5f31eb21625b7b92c2028cb2d7ba621c474ad10ff72a13f0998
BLAKE2b-256 checksum
How to use checksums
0010a21ca79e74310bf479222f020857865a35bb91f7a1ca7483d0d941cdc6f9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 29, 2026.

Transparency log

Release history Release notifications | RSS feed

0.27.0

2 release files

This release

0.26.0 This release

2 release files

0.25.0

2 release files

0.24.0

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