Skip to main content

getchanges is a utility for retrieving changelogs

Project description

getchanges aims to be a CLI tool for finding and retrieving changelogs for any package. That means:

  • system packages (apt, zypper, pacman, brew, …)

  • language packages (pip, gem, cargo, …)

  • ad-hoc scripts (curl > /bin/foobar, …)

This project is a Work In-Progress! Expect very little for now and avoid the disappointment.

If you’re looking to contribute – that’s fantastic, I’m always open to getting some helping hands! Feel free to dive right in.


The rough end goal is to have:

$ changes [-sSOURCE] [--from FROM_VERSION] [--to TO_VERSION] NAME


  <NAME>                   Sets the name (of package / command) to search.
  -s, --source <SOURCE>    Provides a source language restriction/hint.
  -f, --from <FROM>        Outputs the Changelog beginning with this version.
  -t, --to <FROM>          Outputs the Changelog ending with this version.


My plan is to start by requiring source hints, which will let me build up a library of package-source-parsers:

$ changes -spy coveralls  # parses
                          # finds
$ changes -sbrew ripgrep  # parses
                          # finds
                          # locates

I’ll also want to expand this to cover packages whose names do not match their cli commands, eg. so utilities can be looked up directly:

$ changes -sbrew rg  # determines rg -> ripgrep
                     # parses
                     # finds
                     # locates

Once that has some coverage, I’ll expand the “Changelog locator” chunk:

$ changes -spy coverage  # parses
                         # finds
                         # links to
                         # locates
$ changes -sgem mailchimp-api  # parses
                               # finds
                               # locates

By now, it will probably be obvious that some projects will simply refuse to be easy to work with, so I’ll probably try to come up with a decently straightforward way to drop-in overrides. Hopefully, I’ll have been keeping the various pieces separate enough to avoid letting this step turn into too much of a headache.

At that point, I can work on changelog parsers – I realize there are infinite possible options here, but a bit of best-effort parsing of .md, .rst, NEWS, GitHub releases, and commit logs should be a decent 80% – especially if I focus on various “standards” such as conventional changelogs.

This will allow me to add version range flags with a reasonable chance of working:

$ changes -srust clap --from v2.31.2  # parses

And, finally, a more general search function can get played with until I end up with my rough end goal:

$ changes hub --from 2.4.0 --to 2.5.1  # parses


  1. bump

  2. clog -C -F –setversion=x.y.z

  3. git add

  4. git commit -m ‘chore(release): bump version’

  5. git tag -a x.y.z –cleanup=whitespace

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

getchanges-0.1.0.tar.gz (7.5 kB view hashes)

Uploaded source

Built Distribution

getchanges-0.1.0-py2.py3-none-any.whl (10.5 kB view hashes)

Uploaded py2 py3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page