Skip to main content

gnuchangelog

A simple parser of GNU-format ChangeLog files

The GNU change log format is a long-standing convention for GNU packages and those using the autotools build system. But it has several downsides in modern use, particularly:

  • Frequent version-control conflicts from differing interweaving of change entries;
  • (Because) each change is recorded by its author and date of authorship, rather than grouped as release documentation, which is the real intent.
  • Lack of standard structure for indicating releases or categories of change.
  • The format cannot be easily formatted for e.g. HTML presentation (unsurprisingly, as it pre-dates Markdown and RST, and possibly even HTML.)

This package just parses the GNU ChangeLog format, to aid with either conversion to a more modern format without these defects (such as the Markdown-based KeepAChangelog (KAC) format) or for custom presentation or analysis.

Usage

The use is trivial: the gnuchangelog.load() function accepts a file object or filename argument (and see also loads(), from a string) and returns a list of CLEntry objects in the order found in the ChangeLog (i.e. usually newest to oldest).

These objects have three properties: .text, .author, and .date. The author property is a CLAuthor object with properties .name and .email; the date property is just a string, though conventionally should be in yyyy-mm-dd order and easily convertable to a Python datetime if needed.

A conversion script from GNU to KAC format is maintained in the project repository, but not installed as the heuristics for guessing change-entry categories

TODO's

  • split the .text parsing around the first colon, into the leading "affected files" part, and the descriptive text? For now, leave to the user as this is often not used.

Metadata

Release files for gnuchangelog 0.0.2

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

Source distribution (sdist)

Source distribution for gnuchangelog 0.0.2
File Size Uploaded
gnuchangelog-0.0.2.tar.gz 7.6 kB Details

Built distribution (wheel)

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

Total release size: 15.6 kB

Release files / gnuchangelog-0.0.2.tar.gz

Download URL gnuchangelog-0.0.2.tar.gz
Size 7.6 kB
Tags Source
SHA-256 checksum
How to use checksums
3a557b045cce7631312178e461a498da38172607f851171803374bb106d42956
BLAKE2b-256 checksum
How to use checksums
1b9e34fa8ad10bfa47a63cf038b9fbecdfdb00c5025fe2ddbc43bbf413c70b56
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / gnuchangelog-0.0.2-py3-none-any.whl

Download URL gnuchangelog-0.0.2-py3-none-any.whl
Size 8.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
72690beffe21e84f40a1b1a4ecfe609686b8575da770ceb0517c35ec5e20390f
BLAKE2b-256 checksum
How to use checksums
feef81afe9826a907868bf5cd4f60a3cd8a742d95a6d83191ec92968da2f12bf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release history Release notifications | RSS feed

This release

0.0.2 This release

2 release files

0.0.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