Yet another python changelog parser.
- Loads data from a
CHANGELOG.md
file using code like:orimport changelog with open( "CHANGELOG.md", 'rb' ) as fp: changes = changelog.load( fp )
import changelog with open( "CHANGELOG.md", 'r' ) as fp: changes = changelog.loads( fp.read() )
- Returns it in the following schema (some types are Python objects and not valid JSON schema):
{ "$schema": "https://json-schema.org/draft-07/schema#", "title": "Loaded Changelog", "type": "array", "items": { "type": "object", "properties": { "version": { "oneOf": [ { "const": "Unreleased" }, { "type": "semver.Version", "description": "Python object from https://pypi.org/project/semver/" } ] }, "date": { "oneOf": [ { "const": null }, { "type": "datetime.date", "description": "Python object from https://docs.python.org/3/library/datetime.html#date-objects; parsed using \"fromisoformat\"" } ] }, "yanked": { "type": "boolean" }, "added": { "$ref": "#/$defs/change_list" }, "changed": { "$ref": "#/$defs/change_list" }, "depreciated": { "$ref": "#/$defs/change_list" }, "removed": { "$ref": "#/$defs/change_list" }, "fixed": { "$ref": "#/$defs/change_list" }, "security": { "$ref": "#/$defs/change_list" }, "compare_url": { "type": "string", "pattern": "^https?:\\/\\/.+" } }, "required": [ "version", "date", "yanked" ], "additionalProperties": false }, "$defs": { "change_list": { "type": "array", "items": { "type": "string" } } } }
- Dumps data, structured like that above, to a
CHANGELOG.md
file using code likeorimport changelog import semver from datetime import date with open( "CHANGELOG.md", 'rb' ) as fp: changes = changelog.load( fp ) changes.insert( 0, { "version": semver.Version( major = 0, minor = 0, patch = 6 ), "date": date.today(), "added": [ "`dump` and `dumps` examples" ] } ) with open( "CHANGELOG.md", 'wb' ) as fp: changelog.dump( changes, fp )
import changelog ... changelog_contents = changelog.dumps( changes ) with open( "CHANGELOG.md", 'w' ) as fp: fp.write( changelog_contents )