Skip to main content

A generic REST API server backend for DataJoint pipelines.

Project description

👷‍♀️ Under Construction 👷 construction_fig

⚠️ 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 on 2021-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 to docker-compose.yaml. This file is untracked so feel free to modify as necessary.
  • Check the first comment which will provide best instruction on how to start the service.

⚠️ 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 with pip install -e ....
  • For production, use gunicorn --bind 0.0.0.0:${PHARUS_PORT} pharus.server:app.

Run Tests for Development w/ Docker

  • Create a .env as appropriate for your setup:
    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
    
  • Navigate to test-docker-compose.yaml and check first comment which will provide best instruction on how to start the service. Yes, the command is a bit long...

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 CRUD on schemas, tables, users)
    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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pharus-0.1.0a5.tar.gz (11.8 kB view hashes)

Uploaded Source

Built Distribution

pharus-0.1.0a5-py3-none-any.whl (11.5 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page