Contributing¶
Installing prerequisites¶
Make sure you have Python (2.7 or 3.4+) installed on your system. If you don’t have it yet, follow these instructions.
Resolwe requires PostgreSQL (9.4+). Many Linux distributions already include the required version of PostgreSQL (e.g. Fedora 22+, Debian 8+, Ubuntu 15.04+) and you can simply install it via distribution’s package manager. Otherwise, follow these instructions.
The pip tool will install all Resolwe’s dependencies from PyPI.
Installing the psycopg2
dependency will require having a C compiler
(e.g. GCC) as well as Python and PostgreSQL development files installed on
the system.
Note
The preferred way to install the C compiler and Python and PostgreSQL
development files is to use your distribution’s packages, if they exist.
For example, on a Fedora/RHEL-based system, that would mean installing
gcc
, python-devel
/python3-devel
and postgresql-devel
packages.
Preparing environment¶
Fork the main Resolwe’s git repository.
If you don’t have Git installed on your system, follow these instructions.
Clone your fork (replace <username>
with your GitHub account name) and
change directory:
git clone https://github.com/<username>/resolwe.git
cd resolwe
Prepare Resolwe for development:
pip install -e .[docs,package,test]
Note
We recommend using virtualenv (on Python 2.7) or pyvenv (on Python 3.4+) to create an isolated Python environment for Resolwe.
Preparing database¶
Create a resolwe
database:
# Remove database if exists
dropdb resolwe
# Create database
createdb resolwe
Set-up database:
cd tests
./manage.py migrate
./manage.py createsuperuser --username admin --email admin@genialis.com
Registering processes¶
cd tests
./manage.py process_register --path <path to packages>
Running tests¶
To run the tests, use:
cd tests
./manage.py test resolwe
To run the tests with Tox, use:
tox -r
Buildling documentation¶
python setup.py build_sphinx
Preparing release¶
Clean build
directory:
python setup.py clean -a
Remote previous distributions in dist
directory:
rm dist/*
Bump project’s version in resolwe/__about__.py
file and update the
changelog in docs/CHANGELOG.rst
.
Note
Use Semantic versioning.
Commit changes to git:
git commit -a -m "Prepare release <new-version>"
Tag the new version:
git tag <new-version>
Push changes to the main Resolwe’s git repository:
git push <resolwe-upstream-name> master <new-version>
Create source distribution:
python setup.py sdist
Build wheel:
python setup.py bdist_wheel
Upload distribution to PyPI:
twine upload dist/*