Run the tests and ensure they all pass
If dependencies have changed, make sure
debian/control
is up to dateMake sure all patches in
debian/patches
still apply cleanlyUpdate the debian changelog with the new version:
dch -v '1.0.0'
Update CHANGELOG.rst
Update the version in
cassandra/__init__.py
Commit the changelog and version changes
Tag the release. For example:
git tag -a 1.0.0 -m 'version 1.0.0'
Push the commit and tag:
git push --tags origin master
Upload the package to pypi:
python setup.py register python setup.py sdist upload
Update the docs (see below)
Append a 'post' string to the version tuple in
cassandra/__init__.py
so that it looks like(x, y, z, 'post')
Commit and push
Sphinx is required to build the docs. You probably want to install through apt, if possible:
sudo apt-get install python-sphinx
pip may also work:
sudo pip install -U Sphinx
To build the docs, run:
python setup.py doc
To upload the docs, checkout the gh-pages
branch (it's usually easier to
clone a second copy of this repo and leave it on that branch) and copy the entire
contents all of docs/_build/X.Y.Z/*
into the root of the gh-pages
branch
and then push that branch to github.
For example:
python setup.py doc cp -R docs/_build/1.0.0-beta1/* ~/python-driver-docs/ cd ~/python-driver-docs git add --all git commit -m 'Update docs' git push origin gh-pages
In order for the extensions to be built and used in the test, run:
python setup.py nosetests
You can run a specific test module or package like so:
python setup.py nosetests -w tests/unit/
You can run a specific test method like so:
python setup.py nosetests -w tests/unit/test_connection.py:ConnectionTest.test_bad_protocol_version
Sometimes it's useful to output logs for the tests as they run:
python setup.py nosetests -w tests/unit/ --nocapture --nologcapture
Use tee to capture logs and see them on your terminal:
python setup.py nosetests -w tests/unit/ --nocapture --nologcapture 2>&1 | tee test.log
You can specify a cassandra version with the CASSANDRA_VERSION
environment variable:
CASSANDRA_VERSION=2.0.9 python setup.py nosetests -w tests/integration/standard
You can also specify a cassandra directory (to test unreleased versions):
CASSANDRA_DIR=/home/thobbs/cassandra python setup.py nosetests -w tests/integration/standard
The protocol version defaults to 1 for cassandra 1.2 and 2 otherwise. You can explicitly set
it with the PROTOCOL_VERSION
environment variable:
PROTOCOL_VERSION=3 python setup.py nosetests -w tests/integration/standard
If you want to test all of python 2.6, 2.7, and pypy, use tox (this is what TravisCI runs):
tox
By default, tox only runs the unit tests because I haven't put in the effort to get the integration tests to run on TravicCI. However, the integration tests should work locally. To run them, edit the following line in tox.ini:
commands = {envpython} setup.py build_ext --inplace nosetests --verbosity=2 tests/unit/
and change tests/unit/
to tests/
.
To run the benchmarks, pick one of the files under the benchmarks/
dir and run it:
python benchmarks/future_batches.py
There are a few options. Use --help
to see them all:
python benchmarks/future_batches.py --help