Merge pull request #186 from spiral-project/tox

Tox support
This commit is contained in:
Alexis Metaireau 2017-03-29 00:03:25 +02:00 committed by GitHub
commit 1b94f6738a
12 changed files with 102 additions and 61 deletions

4
.gitignore vendored
View file

@ -1,7 +1,11 @@
budget/budget.db budget/budget.db
budget.db
budget/memory budget/memory
budget/settings.py budget/settings.py
*.pyc *.pyc
*.egg-info *.egg-info
dist dist
.venv .venv
docs/_build/
.tox
dist

View file

@ -1,8 +1,8 @@
language: python language: python
python: script: tox
- "2.7" install:
- "3.5" - pip install tox
# command to install dependencies env:
install: "pip install -r budget/requirements.txt" - TOXENV=py27
# command to run tests - TOXENV=py35
script: cd budget && python tests.py - TOXENV=docs

View file

@ -3,7 +3,7 @@ Changelog
This document describes changes between each past release. This document describes changes between each past release.
1.0.0 (unreleased) 1.0.0 (2017-03-21)
------------------ ------------------
- First release of the project. - First release of the project.

39
Makefile Normal file
View file

@ -0,0 +1,39 @@
VIRTUALENV = virtualenv --python=python3
SPHINX_BUILDDIR = docs/_build
VENV := $(shell echo $${VIRTUAL_ENV-.venv})
PYTHON = $(VENV)/bin/python3
DEV_STAMP = $(VENV)/.dev_env_installed.stamp
DOC_STAMP = $(VENV)/.doc_env_installed.stamp
INSTALL_STAMP = $(VENV)/.install.stamp
TEMPDIR := $(shell mktemp -d)
all: install
install: $(INSTALL_STAMP)
$(INSTALL_STAMP):
$(VENV)/bin/pip install -U pip
$(VENV)/bin/pip install -r requirements.txt
touch $(INSTALL_STAMP)
virtualenv: $(PYTHON)
$(PYTHON):
$(VIRTUALENV) $(VENV)
install-dev: $(INSTALL_STAMP) $(DEV_STAMP)
$(DEV_STAMP): $(PYTHON) dev-requirements.txt
$(VENV)/bin/pip install -Ur dev-requirements.txt
touch $(DEV_STAMP)
serve: $(INSTALL_STAMP)
cd budget; ../$(PYTHON) run.py
test: $(DEV_STAMP)
$(VENV)/bin/tox
release: $(DEV_STAMP)
$(VENV)/bin/fullrelease
build-requirements:
$(VIRTUALENV) $(TEMPDIR)
$(TEMPDIR)/bin/pip install -U pip
$(TEMPDIR)/bin/pip install -Ue "."
$(TEMPDIR)/bin/pip freeze | grep -v -- '-e' > requirements.txt

View file

@ -1 +0,0 @@
web: python budget/run.py

View file

@ -16,13 +16,9 @@ LICENSE for more details).
Make it run! Make it run!
============ ============
To make it run, you just have to do something like:: To make it run, you just have to do use the serve command::
$ virtualenv venv $ make serve
$ source venv/bin/activate
$ pip install -r budget/requirements.txt
$ cd budget
$ python run.py
It is also better to actually turn the debugging mode on when you're It is also better to actually turn the debugging mode on when you're
developing. You can create a `settings.py` file in the `budget` directory, with developing. You can create a `settings.py` file in the `budget` directory, with
@ -37,11 +33,7 @@ You can also set the `TESTING` flag to `True` so no mails are sent
Deploy it Deploy it
========= =========
To deploy it, I'm using gunicorn and supervisord:: To deploy it, I'm using gunicorn and supervisord.
$ virtualenv venv
$ source venv/bin/activate
$ pip install -r requirements.txt
1. Add the lines in conf/supervisord.conf to your supervisord.conf file. 1. Add the lines in conf/supervisord.conf to your supervisord.conf file.
**adapt them to your paths!** **adapt them to your paths!**
@ -58,9 +50,8 @@ e.g:
APPLICATION_ROOT='/budget' APPLICATION_ROOT='/budget'
The REST API?
How about the REST API? =============
=======================
Yep, you're right, there is a REST API with this. Head to the `api Yep, you're right, there is a REST API with this. Head to the `api
documentation <https://ihatemoney.readthedocs.io/en/latest/api.html>`_ to know more. documentation <https://ihatemoney.readthedocs.io/en/latest/api.html>`_ to know more.
@ -68,22 +59,22 @@ documentation <https://ihatemoney.readthedocs.io/en/latest/api.html>`_ to know m
How to contribute How to contribute
================= =================
You would like to contribute? First, thanks a bunch! This project is a small
project with just a few people behind it, so any help is appreciated!
There are different ways to help us, regarding if you are a designer, There are different ways to help us, regarding if you are a designer,
a developer or just an user. a developer or an user.
As a developer As a developer
-------------- --------------
The best way to contribute code is to write it and to make a pull request on If you want to contribute code, you can write it and then issue a pull request on
github. Please, think about updating and running the tests before asking for github. Please, think about updating and running the tests before asking for
a pull request as it will help us to maintain the code clean and running. a pull request as it will help us to maintain the code clean and running.
To do so:: To do so::
$ workon budget $ make tests
(budget) $ python tests.py
before pushing anything to master :)
As a designer / Front-end developer As a designer / Front-end developer
----------------------------------- -----------------------------------
@ -95,36 +86,31 @@ know how to implement them, feel free to fork and make a pull request.
End-user End-user
-------- --------
You just wanted to have a look at the application and found a bug? Please tell You are using the application and found a bug? You have some ideas about how to
us and go fill a new issue: improve the project? Please tell us [by filling a new issue](https://github.com/spiral-project/ihatemoney/issues).
https://github.com/spiral-project/ihatemoney/issues Or, if you prefer, you can send me an email to `alexis@notmyidea.org` and I will
update the issue tracker with your feedback.
Thanks again!
How to release? How to release?
=============== ===============
In order to prepare a new release, we are following the following steps. In order to prepare a new release, we are following the following steps:
The `fullrelease` command comes from `zest.releaser - Merge remaining pull requests;
<https://pypi.python.org/pypi/zest.releaser>`_. - Update :file:`CHANGELOG.rst` with the last changes;
- Update :file:`CONTRIBUTORS`;
Install `zest.releaser`:
.. code-block:: bash
$ pip install "zest.releaser"
- Merge remaining pull requests
- Update ``CHANGELOG.rst``
- Update known good versions of dependencies in ``requirements.txt`` with this command (from inside the venv): - Update known good versions of dependencies in ``requirements.txt`` with this command (from inside the venv):
.. code-block:: bash .. code-block:: bash
$ pip freeze | grep -v -- '-e' > requirements.txt $ pip freeze | grep -v -- '-e' > requirements.txt
Once this is done, use the "fullrelease" command: Once this is done, use the "release" instruction:
.. code-block:: bash .. code-block:: bash
$ fullrelease $ make release
That's all folks! And the new version should be published on PyPI.

View file

@ -1,4 +1,5 @@
import os import os
import os.path
import warnings import warnings
from flask import Flask, g, request, session from flask import Flask, g, request, session
@ -11,6 +12,7 @@ from api import api
from utils import PrefixedWSGI from utils import PrefixedWSGI
from utils import minimal_round from utils import minimal_round
__HERE__ = os.path.dirname(os.path.abspath(__file__))
app = Flask(__name__) app = Flask(__name__)
@ -65,7 +67,7 @@ if pre_alembic_db():
# auto-execute migrations on runtime # auto-execute migrations on runtime
with app.app_context(): with app.app_context():
upgrade() upgrade(os.path.join(__HERE__, 'migrations'))
# mail # mail
mail.init_app(app) mail.init_app(app)

2
dev-requirements.txt Normal file
View file

@ -0,0 +1,2 @@
zest.releaser
tox

3
docs/requirements.txt Normal file
View file

@ -0,0 +1,3 @@
docutils<0.13
Sphinx
sphinx_rtd_theme

13
fabfile.py vendored
View file

@ -1,13 +0,0 @@
from fabric.api import env, cd, sudo, run
env.hosts = ['sites.lolnet.lan']
def deploy():
with cd('/home//www/ihatemoney.org/code'):
sudo('git pull', user="www-data")
sudo('supervisorctl restart ihatemoney.org')
def whoami():
run('/usr/bin/whoami')

19
tox.ini Normal file
View file

@ -0,0 +1,19 @@
[tox]
envlist = py35,py27,docs
skip_missing_interpreters = True
[testenv]
commands =
python --version
python budget/tests.py
deps =
-rdev-requirements.txt
-rrequirements.txt
install_command = pip install --pre {opts} {packages}
[testenv:docs]
commands = sphinx-build -a -n -b html -d docs/_build/doctrees docs docs/_build/html
deps =
-rdocs/requirements.txt