Installation and Notes for Developers

If the contents do not show below, read them in /../../README


usage/pipeline.svg

<a href=”http://mercury.bao.ac.cn:9006/mh/fdi/-/commits/master”><img alt=”pipeline status” src=”http://mercury.bao.ac.cn:9006/mh/fdi/badges/master/pipeline.svg” /></a>

Tip

It is a good idea to add --user at the end or to use a virtualenv to avoid disturbing your system Python setup.

For Users

If you need to use fdi, install from PyPI:

python3 -m pip install fdi

or from git repo:

python3 -m pip install http://mercury.bao.ac.cn:9006/mh/fdi/-/archive/master/fdi-master.tar.gz

If you want to install the develop dependencies:

python3 -m pip install fdi[DEV]

or

python3 -m pip install http://mercury.bao.ac.cn:9006/mh/fdi/-/archive/develop/fdi-develop.tar.gz#egg=fdi[DEV]

If you do not need to run tests, remove [DEV] to save time and disk space.

To uninstall:

python3 -m pip uninstall fdi

For Developers (or Those who are Not Sure which to Choose)

To install

FDIINSTDIR=/tmp   # change this to your installation dir
cd $FDIINSTDIR
git clone http://mercury.bao.ac.cn:9006/mh/fdi.git
cd fdi
git checkout develop
make install EXT="[DEV]"

If you want to install the master branch, remove the git checkout develop line above.

To test your installation

make test

Tip

To pass command-line arguments to pytest do, for example,

make test T='-k Bas'

to test BaseProduct.

To Generate Python Product Source Code

Re-generate baseproduct.py and product.py from YAML schema files in fdi/dataset/resources:

make py

Learn/Try the HTTP Pool Server APIs

The APIs are documented in fdi/httppool/schema/pools.yml with OpenAPI 3. Run this to see and try out with Swagger API Docs when the server is running:

http://127.0.0.1:5000/apidocs

Modify/Generate Documents

If you plan to compile documents in the docs directory, generate diagrams, API files, or HTML pages, run (in that order, respectively):

First run this once to install necessary packages:

python3 -m pip install -U -e .[PUB]

Then when you need to make new class diagrams, API docs, or HTML pages:

make docs_plots
make docs_api
make docs_html

The generated HTML page is at docs/html/index.html.

Note

https://readthedocs.io makes web pages from sources in docs/sphinx in the repository. Locally generated HTML pages are not on RTD or in the repository. The API files and plots, however, are in api and _static sub-directpries, respectively.

Run Servers and Quick Tests

If you plan to run the pns and/or the http pool server locally, first install the dependencies:

python3 -m pip install -e .[SERV]
make installpns

To test your pns servers installation, in one window, run:

make runserver

in another window run:

make testpns

To test your httppool servers installation, make sure to stop other server such as pnsserver above, then in one window, run:

make runpoolserver

in another window run:

make testhttp

Docker Containers

fdi

Get the fdi docker with running FDI environment:

docker pull mhastro/fdi

or build the image locally:

make build_docker

Launch and login

make launch_docker
make it

httppool

Also available is a HttpPool server made from Ubuntu and apache:

docker pull mhastro/httppool

To build the image locally:

make build_server

Launch and connect:

make launch_server
curl -i http://127.0.0.1:9884/v0.8/

Run the above in the package root directory of fdi. A file named .secret is needed by the build and launch commands. This is an example:

PNS_PORT=9884
PNS_USERNAME=...
PNS__PASSWORD=...
PNS_MQ_HOST=123.45.67.89
PNS_MQ_PORT=9876
PNS_MQ_USER=...
PNS_MQ_PASS=...

For More

For more examples see tests/test_*.py.

Read more on package introduction, description, quick start, and API documents on readthedocs.io.