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.db
budget/memory
budget/settings.py
*.pyc
*.egg-info
dist
.venv
docs/_build/
.tox
dist

View file

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

View file

@ -3,7 +3,7 @@ Changelog
This document describes changes between each past release.
1.0.0 (unreleased)
1.0.0 (2017-03-21)
------------------
- 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!
============
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
$ source venv/bin/activate
$ pip install -r budget/requirements.txt
$ cd budget
$ python run.py
$ make serve
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
@ -37,11 +33,7 @@ You can also set the `TESTING` flag to `True` so no mails are sent
Deploy it
=========
To deploy it, I'm using gunicorn and supervisord::
$ virtualenv venv
$ source venv/bin/activate
$ pip install -r requirements.txt
To deploy it, I'm using gunicorn and supervisord.
1. Add the lines in conf/supervisord.conf to your supervisord.conf file.
**adapt them to your paths!**
@ -58,9 +50,8 @@ e.g:
APPLICATION_ROOT='/budget'
How about the REST API?
=======================
The REST 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.
@ -68,22 +59,22 @@ documentation <https://ihatemoney.readthedocs.io/en/latest/api.html>`_ to know m
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,
a developer or just an user.
a developer or an user.
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
a pull request as it will help us to maintain the code clean and running.
To do so::
$ workon budget
(budget) $ python tests.py
before pushing anything to master :)
$ make tests
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
--------
You just wanted to have a look at the application and found a bug? Please tell
us and go fill a new issue:
https://github.com/spiral-project/ihatemoney/issues
You are using the application and found a bug? You have some ideas about how to
improve the project? Please tell us [by filling a new issue](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?
===============
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
<https://pypi.python.org/pypi/zest.releaser>`_.
Install `zest.releaser`:
.. code-block:: bash
$ pip install "zest.releaser"
- Merge remaining pull requests
- Update ``CHANGELOG.rst``
- Merge remaining pull requests;
- Update :file:`CHANGELOG.rst` with the last changes;
- Update :file:`CONTRIBUTORS`;
- Update known good versions of dependencies in ``requirements.txt`` with this command (from inside the venv):
.. code-block:: bash
$ 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
$ 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.path
import warnings
from flask import Flask, g, request, session
@ -11,6 +12,7 @@ from api import api
from utils import PrefixedWSGI
from utils import minimal_round
__HERE__ = os.path.dirname(os.path.abspath(__file__))
app = Flask(__name__)
@ -65,7 +67,7 @@ if pre_alembic_db():
# auto-execute migrations on runtime
with app.app_context():
upgrade()
upgrade(os.path.join(__HERE__, 'migrations'))
# mail
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