pyhist icon indicating copy to clipboard operation
pyhist copied to clipboard

A Python utility to automagically update the package version from the git history and generate the Changelog

trafficstars


PyHist Logo

PyPi License

A Python utility to automagically update the package version from the git history and generate the Changelog

Overview

Pyhist is a Python utility to automagically update the package version from the git history and generate the Changelog. Inspired by the Conventional Commits specification, this tool inspects the commits history and calculates the new version.

First steps

  • Init: initializes the pyhist from the current git history and creates a .pyhist binary file and creates a versioning commit with the initialization of the utility.
pyhist --init
  • Update: triggers the version update (minor and/or patch). The command inspects the changes applied to the git history from the previous version update and performs the following changes:
    1. Updates the version in the setup.py
    2. Generates a Changelog.md with the content of the version updates (or appends the changes if previously created)
    3. Updates the .pyhist
    4. Adds a versioning commit with the changes (i.e. versioning: Set version to 1.3.7)
pyhist --update
  • Major: triggers the version update in the major version. This command performs the equivalent steps to the update command.
pyhist --major

Installation

Pyhist requires Python 3.7 or higher.

From PyPI

pip install pyhist

From the source code

git clone https://github.com/jgoodman8/pyhist.git
cd pyhist
pip install -e .

Tests

git clone https://github.com/jgoodman8/pyhist.git
cd pyhist
pip install -e .
pip install -e .[tests]

pytest pyhist/tests

Commits specification

This project is inspired by the Conventional Commits specification. Given this, we establish the following rules.

  • Major update:
    • Explicitly called using the pyhist --major command.
  • Minor update:
    • feat
  • Patch update:
    • fix
    • docs
    • test
    • chore
    • perf
    • refactor
    • style