keepachangelog
Manipulate keep a changelog files
What it is and what it does
keepachangelog is a Python library and command-line tool for working with changelog files that follow the Keep a Changelog format. It parses markdown changelogs into structured Python dictionaries, allowing you to read, modify, and regenerate changelog content programmatically. The library can extract release information including version numbers, dates, semantic versioning metadata, and categorized change entries (Added, Changed, Fixed, Deprecated, Removed, Security).
The package is designed for two main workflows: reading existing changelogs to extract release data for automation (such as generating GitHub release bodies), and automating changelog maintenance during development—particularly creating new releases by moving unreleased entries into versioned sections and automatically incrementing version numbers based on change types. It includes both a Python API and a command-line interface, making it suitable for CI/CD pipelines and manual changelog management.
Use it for:
- Automate release workflows in CI/CD by parsing changelog entries and generating release notes for GitHub or GitLab
- Programmatically bump version numbers based on changelog content (breaking changes increment major, features increment minor, fixes increment patch)
- Convert changelog markdown into structured data for documentation sites or release management systems
- Validate that changelog entries follow Keep a Changelog format before merging pull requests
- Retrieve raw changelog content for a specific version to populate release body templates
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Parse, manipulate, and generate changelog files in Keep a Changelog format, converting between markdown and Python dictionaries, and automating semantic version releases.
Yes. The package has zero runtime dependencies, permissive MIT licensing, active maintenance, and fills a specific need for teams using Keep a Changelog format. Install it if you maintain a changelog and want to automate release workflows or programmatically access changelog data; skip it if you manage changelogs manually without automation.
Install
keepachangelog on PyPI
pip
pip install keepachangeloguv
uv add keepachangelogpoetry
poetry add keepachangelogInstalling keepachangelog
Before you install
Low friction install with no runtime dependencies. Active maintenance with recent commits; last release was over a year ago but the repository remains current.
License in practice
MIT license permits unrestricted use, modification, and distribution with minimal obligations—suitable for any project type.
Quickstart
import keepachangelog
# Parse changelog to dict
changes = keepachangelog.to_dict("CHANGELOG.md")
print(changes["1.0.0"]["metadata"]["version"])
# Create a new release
new_version = keepachangelog.release("CHANGELOG.md")
Requires Python 3.9 or later; changelog file must follow Keep a Changelog format with proper markdown structure.
Verify before relying
- Whether the REST API endpoint integrations (Starlette, Flask-RestX) are fully functional or still in development
- Performance characteristics when parsing very large changelog files
Package facts
| License | MIT License Copyright (c) 2024 Colin Bounouar Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to… (full text in the JSON record) (permissive) |
| Python support | supports the current Python release (>=3.9) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | none |
| Maintenance | actively maintained — 791 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 195,706/month — #9,806 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: keepachangelog-2.0.0-py3-none-any.whl
Keywords: changelog, CHANGELOG.md, markdown
Tags
More Build Tools packages
Provides reusable utilities for Python…
permissive · top 100 on PyPI
tqdmWraps any iterable to display a real-time…
copyleft · top 100 on PyPI
pippip is the standard installer for Python…
permissive · top 100 on PyPI
hatchlingHatchling is a standards-compliant Python build…
permissive · top 100 on PyPI
grpcio-toolsGenerates Python gRPC service stubs and message…
permissive · top 1,000 on PyPI
pre-commitpre-commit is a framework for installing and…
permissive · top 1,000 on PyPI
bump-my-versionAutomates version number management in projects…
permissive · top 5,000 on PyPI
semverParse, compare, and manipulate semantic version…
permissive · top 1,000 on PyPI
bump2versionA command-line tool that automates version…
permissive · top 5,000 on PyPI
bumpversionA command-line tool that automates version…
permissive · top 5,000 on PyPI
release-tagAutomatically creates and optionally pushes…
permissive · top 15,000 on PyPI
bumpAutomatically increments version numbers in…
permissive · top 15,000 on PyPI
tbumptbump automates version bumping in your project…
permissive · top 15,000 on PyPI
semantic-versionParses, validates, and compares semantic…
permissive · top 1,000 on PyPI
version-parserParses version strings in multiple formats…
permissive · top 15,000 on PyPI
hatch-regex-commitA Hatch plugin that automatically creates Git…
permissive · top 15,000 on PyPI