Merou is an application to allow users to create and manage memberships to their own groups. It requires Python 3 (only tested with Python 3.7 currently).
Note: We renamed the project to avoid a namespace conflict, but it isn't reflected in the codebase yet.
To get updates about Merou, join our mailing list.
Standard Python package installation instructions apply. You will need Python 3 and development headers for MySQL.
On Debian-based systems:
apt-get install libmysqlclient-dev libpython3-dev libcurl4-openssl-dev libssl-dev python3-pip
pip3 install -e git+https://github.com/dropbox/merou#egg=grouper
Next you need to configure grouper to find a SQL-style backing database
and stand up processes to serve the read-write web UI and read-only
programmatic API. There's an sample configuration file, suitable for
local development and testing, in config/dev.yaml
.
Grouper runs behind a reverse proxy that handles authentication and so expects a valid, authenticated, user account. I've included a test proxy for running on development instances.
Creating a development instance:
export PYTHONPATH=$(pwd)
export GROUPER_SETTINGS=$(pwd)/config/dev.yaml
# Setup the database.
bin/grouper-ctl sync_db
## You can either run all the various servers and the reverse-proxy
## via a helper script:
tools/run-dev --user $USER@example.com
## Or separately:
# Run the development reverse proxy
bin/grouper-ctl -vv user_proxy $USER@example.com
# Run the frontend server
bin/grouper-fe -vv
# Run the graph/api server
bin/grouper-api -vv
In order to bootstrap your new Grouper environment, you will want to
create a user for yourself and add it to the grouper-administrators
group.
export PYTHONPATH=$(pwd)
export GROUPER_SETTINGS=$(pwd)/config/dev.yaml
bin/grouper-ctl -vv\
user create $USER@example.com
# Give the user administrative access to the Grouper instance
bin/grouper-ctl -vv \
group add_member --owner grouper-administrators $USER@example.com
Some tests require a recent (>= 2.31) version of chromium-driver, which can be installed via apt or Homebrew:
apt install chromium-driver
(This may be called chromium-chromedriver in older versions.) Once chromium-driver is installed, the tests can be run using pytest:
pip install -r requirements.txt
pip install -r requirements-dev.txt
pytest
flake8
mypy .
If you see test failures and suspect incompatible library versions (e.g., an existing tornado install at a different major release than that in our requirements.txt), then you can try using a virtual environment.
$ virtualenv ~/merou-venv -p /usr/bin/python3
$ source ~/merou-venv/bin/activate
(merou-venv) $ pip install -r requirements.txt
(merou-venv) $ pip install -r requirements-dev.txt
(merou-venv) $ pytest
(merou-venv) $ deactivate
$
All Merou code is formatted with black, which is installed by the requirements-dev.txt requirements file for Python 3. After installation, you can reformat all source code with:
black .
All new code must be formatted with the version of black indicated in requirements-dev.txt in order to pass Travis CI tests.