A generic REST API server backend for DataJoint pipelines.
Project description
⚠️ The Pharus project is still early in its life and the maintainers are currently actively developing with a priority of addressing first critical issues directly related to the deliveries of Alpha and Beta milestones. Please be advised that while working through our milestones, we may restructure/refactor the codebase without warning until we issue our Official Release currently planned as
0.1.0
on2021-03-31
.
Pharus
A generic REST API server backend for DataJoint pipelines built on top of flask
, datajoint
, and pyjwt
.
Usage and API documentation currently available within method docstrings. See Python's help(...)
utility.
Requirements for Preferred Setup
Run Locally w/ Docker
- Copy a
*-docker-compose.yaml
file corresponding to your usage todocker-compose.yaml
. This file is untracked so feel free to modify as necessary. Idea is to commit anything generic but system/setup dependent should go on 'your' version i.e. local UID/GID, etc. - Check the first comment which will provide the best instruction on how to start the service; yes, it is a bit long. Note: Any of the keyword arguments prepended to the
docker-compose
command can be safely moved into a dedicated.env
and read automatically if they are not evaluated i.e.$(...)
. Below is a brief description of the non-evaluated environment variables:
PY_VER=3.8 # Python version: 3.6|3.7|3.8
IMAGE=djtest # Image type: djbase|djtest|djlab|djlabhub
DISTRO=alpine # Distribution: alpine|debian
AS_SCRIPT= # If 'TRUE', will not keep container alive but run tests and exit
⚠️ Deployment options currently being considered are Docker Compose and Kubernetes.
Run Locally w/ Python
- Set environment variables for port assignment (
PHARUS_PORT
, defaults to 5000) and API route prefix (PHARUS_PREFIX
e.g./api
, defaults to empty string). - For development, use CLI command
pharus
. This method supports hot-reloading so probably best coupled withpip install -e ...
. - For production, use
gunicorn --bind 0.0.0.0:${PHARUS_PORT} pharus.server:app
.
Run Tests for Development w/ Pytest and Flake8
- Set
pharus
testing environment variables:PKG_DIR=/opt/conda/lib/python3.8/site-packages/pharus # path to pharus installation TEST_DB_SERVER=example.com:3306 # testing db server address TEST_DB_USER=root # testing db server user (needs DDL privilege) TEST_DB_PASS=unsecure # testing db server password
- For syntax tests, run
flake8 ${PKG_DIR} --count --select=E9,F63,F7,F82 --show-source --statistics
- For pytest integration tests, run
pytest -sv --cov-report term-missing --cov=${PKG_DIR} /main/tests
- For style tests, run
flake8 ${PKG_DIR} --count --max-complexity=20 --max-line-length=95 --statistics
References
- DataJoint LabBook (a companion frontend)
- Under construction image credits
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.