Generates a github changelog, tags and uploads your python library
Project description
# changes
[![Build Status](https://secure.travis-ci.org/michaeljoseph/changes.png)](http://travis-ci.org/michaeljoseph/changes)
[![Stories in Ready](https://badge.waffle.io/michaeljoseph/changes.png?label=ready)](https://waffle.io/michaeljoseph/changes)
[![pypi version](https://badge.fury.io/py/changes.png)](http://badge.fury.io/py/changes)
[![# of downloads](https://pypip.in/d/changes/badge.png)](https://crate.io/packages/changes?version=latest)
[![code coverage](https://coveralls.io/repos/michaeljoseph/changes/badge.png?branch=master)](https://coveralls.io/r/michaeljoseph/changes?branch=master)
:musical_note: [Ch-ch-ch-ch-changes](http://www.youtube.com/watch?v=pl3vxEudif8) :musical_note:
![changes](https://github.com/michaeljoseph/changes/raw/master/resources/changes.png)
## Overview
Manages the release of a python library.
* cli that follows [semantic versioning][0] principles to increment the current version
* auto generates a changelog entry (using github's compare view)
* tags the github repo
* uploads to pypi
## Usage
An application wanting to use `changes` must meet these requirements:
* `setup.py`
* `CHANGELOG.md`
* `app_name/__init__.py` with `__version__` and `__url__`
Install `changes`:
pip install changes
Run the cli:
```
changes.
Usage:
changes [options] <app_name> release
changes [options] <app_name> version
changes [options] <app_name> changelog
changes [options] <app_name> tag
changes [options] <app_name> upload
changes -h | --help
Options:
--new-version=<ver> Specify version.
-p --patch Patch-level version increment.
-m --minor Minor-level version increment.
-M --major Minor-level version increment.
-h --help Show this screen.
--pypi=<pypi> Specify alternative pypi
--dry-run Prints the commands that would have been executed.
--commit-changelog Should the automatically generated changelog be
committed?
--debug Debug output.
```
The default workflow is to run the `changelog` command to autogenerate
a changelog entry based on your commit messages. You're probably going to
want to edit that a bit, so `changes` won't commit it, unless you
`--commit-changelog`.
The remaining tasks can be automated with the `release` command.
```python
(changes)➜ changes git:(master) changes -p changes changelog
What is the release version for "changes" [Default: 0.1.1]:
INFO:changes.cli:Added content to CHANGELOG.md
Everything up-to-date
INFO:changes.cli:Committed changelog update
<< changelog pruning >>
(changes)➜ changes git:(master) ✗ changes -p changes release --commit-changelog
What is the release version for "changes" [Default: 0.1.1]:
Counting objects: 7, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 400 bytes, done.
Total 4 (delta 2), reused 0 (delta 0)
To git@github.com:michaeljoseph/changes.git
5c6760d..bafce16 master -> master
Counting objects: 1, done.
Writing objects: 100% (1/1), 168 bytes, done.
Total 1 (delta 0), reused 0 (delta 0)
To git@github.com:michaeljoseph/changes.git
* [new tag] 0.1.1 -> 0.1.1
warning: sdist: standard file not found: should have one of README, README.rst, README.txt
```
## Documentation
[API Documentation][1]
## Testing ##
Install development requirements:
pip install -r requirements.txt
Tests can then be run by doing:
nosetests
Run the linting (pep8, pyflakes) with:
flake8 changes tests
## API documentation
To generate the documentation:
cd docs && PYTHONPATH=.. make singlehtml
To monitor changes to Python files and execute pep8, pyflakes, and nosetests
automatically, execute the following from the root project directory:
stir
[0]:http://semver.org
[1]:http://changes.rtfd.org
[![Build Status](https://secure.travis-ci.org/michaeljoseph/changes.png)](http://travis-ci.org/michaeljoseph/changes)
[![Stories in Ready](https://badge.waffle.io/michaeljoseph/changes.png?label=ready)](https://waffle.io/michaeljoseph/changes)
[![pypi version](https://badge.fury.io/py/changes.png)](http://badge.fury.io/py/changes)
[![# of downloads](https://pypip.in/d/changes/badge.png)](https://crate.io/packages/changes?version=latest)
[![code coverage](https://coveralls.io/repos/michaeljoseph/changes/badge.png?branch=master)](https://coveralls.io/r/michaeljoseph/changes?branch=master)
:musical_note: [Ch-ch-ch-ch-changes](http://www.youtube.com/watch?v=pl3vxEudif8) :musical_note:
![changes](https://github.com/michaeljoseph/changes/raw/master/resources/changes.png)
## Overview
Manages the release of a python library.
* cli that follows [semantic versioning][0] principles to increment the current version
* auto generates a changelog entry (using github's compare view)
* tags the github repo
* uploads to pypi
## Usage
An application wanting to use `changes` must meet these requirements:
* `setup.py`
* `CHANGELOG.md`
* `app_name/__init__.py` with `__version__` and `__url__`
Install `changes`:
pip install changes
Run the cli:
```
changes.
Usage:
changes [options] <app_name> release
changes [options] <app_name> version
changes [options] <app_name> changelog
changes [options] <app_name> tag
changes [options] <app_name> upload
changes -h | --help
Options:
--new-version=<ver> Specify version.
-p --patch Patch-level version increment.
-m --minor Minor-level version increment.
-M --major Minor-level version increment.
-h --help Show this screen.
--pypi=<pypi> Specify alternative pypi
--dry-run Prints the commands that would have been executed.
--commit-changelog Should the automatically generated changelog be
committed?
--debug Debug output.
```
The default workflow is to run the `changelog` command to autogenerate
a changelog entry based on your commit messages. You're probably going to
want to edit that a bit, so `changes` won't commit it, unless you
`--commit-changelog`.
The remaining tasks can be automated with the `release` command.
```python
(changes)➜ changes git:(master) changes -p changes changelog
What is the release version for "changes" [Default: 0.1.1]:
INFO:changes.cli:Added content to CHANGELOG.md
Everything up-to-date
INFO:changes.cli:Committed changelog update
<< changelog pruning >>
(changes)➜ changes git:(master) ✗ changes -p changes release --commit-changelog
What is the release version for "changes" [Default: 0.1.1]:
Counting objects: 7, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 400 bytes, done.
Total 4 (delta 2), reused 0 (delta 0)
To git@github.com:michaeljoseph/changes.git
5c6760d..bafce16 master -> master
Counting objects: 1, done.
Writing objects: 100% (1/1), 168 bytes, done.
Total 1 (delta 0), reused 0 (delta 0)
To git@github.com:michaeljoseph/changes.git
* [new tag] 0.1.1 -> 0.1.1
warning: sdist: standard file not found: should have one of README, README.rst, README.txt
```
## Documentation
[API Documentation][1]
## Testing ##
Install development requirements:
pip install -r requirements.txt
Tests can then be run by doing:
nosetests
Run the linting (pep8, pyflakes) with:
flake8 changes tests
## API documentation
To generate the documentation:
cd docs && PYTHONPATH=.. make singlehtml
To monitor changes to Python files and execute pep8, pyflakes, and nosetests
automatically, execute the following from the root project directory:
stir
[0]:http://semver.org
[1]:http://changes.rtfd.org
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
changes-0.1.2.tar.gz
(6.4 kB
view details)
File details
Details for the file changes-0.1.2.tar.gz
.
File metadata
- Download URL: changes-0.1.2.tar.gz
- Upload date:
- Size: 6.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fe6546f93193437e676b9faad3d5a6b5d0f4cea9fcaba4602f0f1dd17dcdb2cf |
|
MD5 | 94c7d40b4c6b7b9bdbdfdf417fb0e9d6 |
|
BLAKE2b-256 | 913b7d9ad4a30dfdc7417728687caf1221103652c15691f01a91cbf262549a5e |