A changelog finder and parser.
A changelog finder and parser with command line interface for packages available on pypi, npm, rubygems and launchpad.net. Originally developed for pyup.io.
To install changelogs, run this command in your terminal:
$ pip install changelogs
To use changelogs in a Python project:
import changelogs logs = changelogs.get("flask") logs = changelogs.get("babel", vendor="npm") logs = changelogs.get("bundler", vendor="npm")
Or, from the command line:
changelogs flask changelogs babel npm changelogs bundler gem
If you are on macOS, you can chain the open command:
changelogs babel npm >> babel.log && open babel.log
When trying to get a changelog for a given package, there are a bunch of problems:
- There is no central place to store a changelog. If a project has a changelog, it’s most likely somewhere in the git repo at all kinds of different places. This makes it hard to find.
- The package index meta data often has no direct link to the git repo. This makes the repo hard to find.
- There is no changelog standard. Everyone uses a different approach. This makes it hard to parse.
This project is trying to solve this by:
- first querying the package vendor for package meta data like the homepage or docs URL.
- if the meta data doesn’t contain a valid URL to a repo, visit all available URLs and scrape them to find one.
- if there is a valid repo URL, visit the repo and look for possible changelogs like Changes.txt, NEWS.md or history.rst.
- fetch the content and somewhat try to parse it.
- Removed support for Python 2.7, 3.4 and 3.5
- Added support for Python 3.9
- Getting proper changelogs for beautifulsoup4 PyPi package again
- Getting proper changelogs for synapse PyPi package again
- Stopped using bumpversion
- Updated PyPi map.txt to reflect different packages changelogs location changes
- Fixed bug while processing domain-only URLs (#155)
- Added a pypi/map.txt file to add custom URLS more easily
- Added a bunch of custom URLS: - pytest-flake8 - cornice.ext.swagger - python-social-core - python-social-auth - cx-oracle - plotnine - django-hijack - pyinvoke - gitpython - python-memcached - appenlight-client
- Added a bunch of custom parser: - robozilla - websocket-client - pep8-naming - py-trello - synapse - django-haystack - libsass - lazy-object-proxy
- Added a bunch of custom parser: - flake8 - pyyaml - six - factory-boy - jinja2 - docutils - sphinx-rtd-theme - whitenoise - numpy - beautifulsoup4 - mccabe - django-braces - alabaster - cffi - django-coverage-plugin - newrelic - pandas - twine - pep8-naming - django-storages-redux - pbr
- The changelog finder now checks repo URLs if they contain the given project name. This should make it easier to identify false changelogs.
- Fixed a couple of internal errors on edge cases.
- Added custom parsers for: - graphene - beautifulsoup4
- Added support for GitHub release pages
- Added experimental support for git commit log parsing
- Fix issue with custom parsing of packages with different case.
- Catch errors from launchpad.
- Add support for changing project name when switching vendors.
- Add support for finding URLs in the project description.
- Add support for ex code.google.com projects, now moved to github.
- Add support for parsing sourceforge repos.
- Added custom parser: - alembic - genshi - imapclient - mako - pyinotify - python-ldap - redis - uwsgi - pyaudio
- added custom parser: - mysqlclient, thanks @alexkiro
- added custom launchpad backend, thanks to @alexkiro
- added custom parsers - cheroot - pyparsing - gunicorn - sqlalchemy - djangorestframework
- tweaked the get_head function
- added flake8 special parser
- tweaked the parser, included tests for openpyxl
- include docs-src as docs candidate
- add better support for NPM packages
- fix packagin error (hopefully)
- use modules for custom imports, for packaging
- the find_changelogs and get_urls functions now also return the repo URLs
- allow to swap in the find_changelogs function
- added support for rubygems
- added support for npm
- First release on PyPI.
Release history Release notifications | RSS feed
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Hashes for changelogs-0.15.0-py2.py3-none-any.whl