Development¶
To install for development:
- Fork the python-package-skeleton repository on GitHub
- Create a new branch off of master in your fork.
$ virtualenv python-package-skeleton
$ cd python-package-skeleton && source bin/activate
$ pip install -e git+git@github.com:YOURNAME/python-package-skeleton.git@BRANCHNAME#egg=python-package-skeleton
$ cd src/python-package-skeleton
The git clone you’re now in will probably be checked out to a specific commit,
so you may want to git checkout BRANCHNAME
.
Guidelines¶
- pep8 compliant with some exceptions (see pytest.ini)
- 100% test coverage with pytest (with valid tests)
Testing¶
Testing is done via pytest, driven by tox.
- testing is as simple as:
pip install tox
tox
- If you want to pass additional arguments to pytest, add them to the tox command line after “–”. i.e., for verbose pytext output on py27 tests:
tox -e py27 -- -v
Alembic Database Migrations¶
This project uses Alembic for DB migrations:
- To generate migrations, run
alembic -c motion_pipeline/alembic/alembic.ini revision --autogenerate -m "message"
and examine/edit then commit the resulting file(s). This must be run before the model changes are applied to the DB. If adding new models, make sure to import the model class inmodels/__init__.py
. - To apply migrations, run
alembic -c motion_pipeline/alembic/alembic.ini upgrade head
. - To see the current DB version, run
alembic -c motion_pipeline/alembic/alembic.ini current
. - To see migration history, run
alembic -c motion_pipeline/alembic/alembic.ini history
.
Release Checklist¶
- Open an issue for the release; cut a branch off master for that issue.
- Confirm that there are CHANGES.rst entries for all major changes.
- Ensure that Travis tests passing in all environments.
- Ensure that test coverage is no less than the last release (ideally, 100%).
- Increment the version number in python-package-skeleton/version.py and add version and release date to CHANGES.rst, then push to GitHub.
- Confirm that README.rst renders correctly on GitHub.
- Upload package to testpypi:
- Make sure your ~/.pypirc file is correct (a repo called
test
for https://testpypi.python.org/pypi) rm -Rf dist
python setup.py register -r https://testpypi.python.org/pypi
python setup.py sdist bdist_wheel
twine upload -r test dist/*
- Check that the README renders at https://testpypi.python.org/pypi/python-package-skeleton
- Make sure your ~/.pypirc file is correct (a repo called
- Create a pull request for the release to be merged into master. Upon successful Travis build, merge it.
- Tag the release in Git, push tag to GitHub:
- tag the release. for now the message is quite simple:
git tag -s -a X.Y.Z -m 'X.Y.Z released YYYY-MM-DD'
- push the tag to GitHub:
git push origin X.Y.Z
- tag the release. for now the message is quite simple:
- Upload package to live pypi:
twine upload dist/*
- make sure any GH issues fixed in the release were closed.